WordPress.org

Plugin Directory

Changeset 1760781


Ignore:
Timestamp:
11/08/17 13:35:09 (6 weeks ago)
Author:
podpirate
Message:

Version 1.0.2

Location:
the-paste
Files:
2 deleted
12 edited
12 copied

Legend:

Unmodified
Added
Removed
  • the-paste/tags/1.0.2/css/admin/mce/the-paste-editor.css

    r1729167 r1760781  
    1 .thepaste-image-placeholder{display:inline-block;max-width:100%;position:relative}.thepaste-image-placeholder:before{content:'';position:absolute;left:0;top:0;bottom:0;right:0;background:rgba(0,0,0,0.8)}.thepaste-image-placeholder:after{content:attr(data-progress) "%";position:absolute;left:0;top:50%;bottom:0;right:0;color:#fff;font-size:30px;line-height:0;text-align:center}.thepaste-image-placeholder>*{max-width:100%} 
     1.thepaste-image-placeholder{display:inline-block;max-width:100%;position:relative}.thepaste-image-placeholder:before{content:'';position:absolute;left:0;top:0;bottom:0;right:0;background:rgba(0,0,0,0.8)}.thepaste-image-placeholder:after{content:attr(data-progress) "%";position:absolute;left:0;top:50%;bottom:0;right:0;color:#fff;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;font-size:30px;font-weight:700;line-height:0;text-align:center}.thepaste-image-placeholder>*{max-width:100%} 
    22 
    3 /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlLXBhc3RlLWVkaXRvci5jc3MiLCJzb3VyY2VzIjpbInRoZS1wYXN0ZS1lZGl0b3Iuc2NzcyIsIi4uLy4uL3ZhcmlhYmxlcy9fdmFyaWFibGVzLnNjc3MiLCIuLi8uLi92YXJpYWJsZXMvX2Rhc2hpY29ucy5zY3NzIiwiLi4vLi4vbWl4aW5zL19taXhpbnMuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbkBpbXBvcnQgJy4uLy4uL3ZhcmlhYmxlcy92YXJpYWJsZXMnO1xuXG5AaW1wb3J0ICcuLi8uLi9taXhpbnMvbWl4aW5zJztcblxuLnRoZXBhc3RlLWltYWdlLXBsYWNlaG9sZGVyIHtcblx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG5cdG1heC13aWR0aDoxMDAlO1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0JjpiZWZvcmUge1xuXHRcdGNvbnRlbnQ6Jyc7XG5cdFx0cG9zaXRpb246YWJzb2x1dGU7XG5cdFx0bGVmdDowO1xuXHRcdHRvcDowO1xuXHRcdGJvdHRvbTowO1xuXHRcdHJpZ2h0OjA7XG5cdFx0YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuOCk7XG5cdH1cblx0JjphZnRlciB7XG5cdFx0Y29udGVudDphdHRyKGRhdGEtcHJvZ3Jlc3MpICclJztcblx0XHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0XHRsZWZ0OjA7XG5cdFx0dG9wOjUwJTtcblx0XHRib3R0b206MDtcblx0XHRyaWdodDowO1xuXHRcdGNvbG9yOiNmZmY7XG5cdFx0Zm9udC1zaXplOjMwcHg7XG5cdFx0bGluZS1oZWlnaHQ6MDtcblx0XHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0fVxuXHQmID4gKiB7XG5cdFx0bWF4LXdpZHRoOjEwMCU7XG5cdH1cbn1cblxuIiwiQGltcG9ydCAnZGFzaGljb25zJzsiLCJcbiRkYXNoaWNvbi1tZW51OiBcIlxcZjMzM1wiO1xuXG4kZGFzaGljb24tYWRtaW4tc2l0ZTogXCJcXGYzMTlcIjtcblxuJGRhc2hpY29uLWRhc2hib2FyZDogXCJcXGYyMjZcIjtcblxuJGRhc2hpY29uLWFkbWluLW1lZGlhOiBcIlxcZjEwNFwiO1xuXG4kZGFzaGljb24tYWRtaW4tcGFnZTogXCJcXGYxMDVcIjtcblxuJGRhc2hpY29uLWFkbWluLWNvbW1lbnRzOiBcIlxcZjEwMVwiO1xuXG4kZGFzaGljb24tYWRtaW4tYXBwZWFyYW5jZTogXCJcXGYxMDBcIjtcblxuJGRhc2hpY29uLWFkbWluLXBsdWdpbnM6IFwiXFxmMTA2XCI7XG5cbiRkYXNoaWNvbi1hZG1pbi11c2VyczogXCJcXGYxMTBcIjtcblxuJGRhc2hpY29uLWFkbWluLXRvb2xzOiBcIlxcZjEwN1wiO1xuXG4kZGFzaGljb24tYWRtaW4tc2V0dGluZ3M6IFwiXFxmMTA4XCI7XG5cbiRkYXNoaWNvbi1hZG1pbi1uZXR3b3JrOiBcIlxcZjExMlwiO1xuXG4kZGFzaGljb24tYWRtaW4tZ2VuZXJpYzogXCJcXGYxMTFcIjtcblxuJGRhc2hpY29uLWFkbWluLWhvbWU6IFwiXFxmMTAyXCI7XG5cbiRkYXNoaWNvbi1hZG1pbi1jb2xsYXBzZTogXCJcXGYxNDhcIjtcblxuJGRhc2hpY29uLWZpbHRlcjogXCJcXGY1MzZcIjtcblxuJGRhc2hpY29uLWFkbWluLWN1c3RvbWl6ZXI6IFwiXFxmNTQwXCI7XG5cbiRkYXNoaWNvbi1hZG1pbi1tdWx0aXNpdGU6IFwiXFxmNTQxXCI7XG5cblxuLyogQm90aCBBZG1pbiBNZW51IGFuZCBQb3N0IEZvcm1hdHMgKi9cblxuJGRhc2hpY29uLWFkbWluLWxpbmtzOiBcIlxcZjEwM1wiO1xuJGRhc2hpY29uLWZvcm1hdC1saW5rczogXCJcXGYxMDNcIjtcblxuJGRhc2hpY29uLWFkbWluLXBvc3Q6IFwiXFxmMTA5XCI7XG4kZGFzaGljb24tZm9ybWF0LXN0YW5kYXJkOiBcIlxcZjEwOVwiO1xuXG5cbi8qIFBvc3QgRm9ybWF0IEljb25zICovXG5cbiRkYXNoaWNvbi1mb3JtYXQtaW1hZ2U6IFwiXFxmMTI4XCI7XG5cbiRkYXNoaWNvbi1mb3JtYXQtZ2FsbGVyeTogXCJcXGYxNjFcIjtcblxuJGRhc2hpY29uLWZvcm1hdC1hdWRpbzogXCJcXGYxMjdcIjtcblxuJGRhc2hpY29uLWZvcm1hdC12aWRlbzogXCJcXGYxMjZcIjtcblxuJGRhc2hpY29uLWZvcm1hdC1jaGF0OiBcIlxcZjEyNVwiO1xuXG4kZGFzaGljb24tZm9ybWF0LXN0YXR1czogXCJcXGYxMzBcIjtcblxuJGRhc2hpY29uLWZvcm1hdC1hc2lkZTogXCJcXGYxMjNcIjtcblxuJGRhc2hpY29uLWZvcm1hdC1xdW90ZTogXCJcXGYxMjJcIjtcblxuXG4vKiBXZWxjb21lIFNjcmVlbiBJY29ucyAqL1xuXG4kZGFzaGljb24td2VsY29tZS13cml0ZS1ibG9nOiBcIlxcZjExOVwiO1xuJGRhc2hpY29uLXdlbGNvbWUtZWRpdC1wYWdlOiBcIlxcZjExOVwiO1xuXG4kZGFzaGljb24td2VsY29tZS1hZGQtcGFnZTogXCJcXGYxMzNcIjtcblxuJGRhc2hpY29uLXdlbGNvbWUtdmlldy1zaXRlOiBcIlxcZjExNVwiO1xuXG4kZGFzaGljb24td2VsY29tZS13aWRnZXRzLW1lbnVzOiBcIlxcZjExNlwiO1xuXG4kZGFzaGljb24td2VsY29tZS1jb21tZW50czogXCJcXGYxMTdcIjtcblxuJGRhc2hpY29uLXdlbGNvbWUtbGVhcm4tbW9yZTogXCJcXGYxMThcIjtcblxuXG4vKiBJbWFnZSBFZGl0aW5nIEljb25zICovXG5cbiRkYXNoaWNvbi1pbWFnZS1jcm9wOiBcIlxcZjE2NVwiO1xuXG4kZGFzaGljb24taW1hZ2Utcm90YXRlOiBcIlxcZjUzMVwiO1xuXG5cbiRkYXNoaWNvbi1pbWFnZS1yb3RhdGUtbGVmdDogXCJcXGYxNjZcIjtcblxuJGRhc2hpY29uLWltYWdlLXJvdGF0ZS1yaWdodDogXCJcXGYxNjdcIjtcblxuJGRhc2hpY29uLWltYWdlLWZsaXAtdmVydGljYWw6IFwiXFxmMTY4XCI7XG5cbiRkYXNoaWNvbi1pbWFnZS1mbGlwLWhvcml6b250YWw6IFwiXFxmMTY5XCI7XG5cbiRkYXNoaWNvbi1pbWFnZS1maWx0ZXI6IFwiXFxmNTMzXCI7XG5cblxuLyogQm90aCBJbWFnZSBFZGl0aW5nIGFuZCBUaW55TUNFICovXG5cbiRkYXNoaWNvbi11bmRvOiBcIlxcZjE3MVwiO1xuXG4kZGFzaGljb24tcmVkbzogXCJcXGYxNzJcIjtcblxuLyogVGlueU1DRSBJY29ucyAqL1xuXG4kZGFzaGljb24tZWRpdG9yLWJvbGQ6IFwiXFxmMjAwXCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItaXRhbGljOiBcIlxcZjIwMVwiO1xuXG4kZGFzaGljb24tZWRpdG9yLXVsOiBcIlxcZjIwM1wiO1xuXG4kZGFzaGljb24tZWRpdG9yLW9sOiBcIlxcZjIwNFwiO1xuXG4kZGFzaGljb24tZWRpdG9yLXF1b3RlOiBcIlxcZjIwNVwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWFsaWdubGVmdDogXCJcXGYyMDZcIjtcblxuJGRhc2hpY29uLWVkaXRvci1hbGlnbmNlbnRlcjogXCJcXGYyMDdcIjtcblxuJGRhc2hpY29uLWVkaXRvci1hbGlnbnJpZ2h0OiBcIlxcZjIwOFwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWluc2VydG1vcmU6IFwiXFxmMjA5XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3Itc3BlbGxjaGVjazogXCJcXGYyMTBcIjtcblxuJGRhc2hpY29uLWVkaXRvci1kaXN0cmFjdGlvbmZyZWU6IFwiXFxmMjExXCI7XG4kZGFzaGljb24tZWRpdG9yLWV4cGFuZDogXCJcXGYyMTFcIjtcblxuJGRhc2hpY29uLWVkaXRvci1jb250cmFjdDogXCJcXGY1MDZcIjtcblxuJGRhc2hpY29uLWVkaXRvci1raXRjaGVuc2luazogXCJcXGYyMTJcIjtcblxuJGRhc2hpY29uLWVkaXRvci11bmRlcmxpbmU6IFwiXFxmMjEzXCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItanVzdGlmeTogXCJcXGYyMTRcIjtcblxuJGRhc2hpY29uLWVkaXRvci10ZXh0Y29sb3I6IFwiXFxmMjE1XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItcGFzdGUtd29yZDogXCJcXGYyMTZcIjtcblxuJGRhc2hpY29uLWVkaXRvci1wYXN0ZS10ZXh0OiBcIlxcZjIxN1wiO1xuXG4kZGFzaGljb24tZWRpdG9yLXJlbW92ZWZvcm1hdHRpbmc6IFwiXFxmMjE4XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItdmlkZW86IFwiXFxmMjE5XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItY3VzdG9tY2hhcjogXCJcXGYyMjBcIjtcblxuJGRhc2hpY29uLWVkaXRvci1vdXRkZW50OiBcIlxcZjIyMVwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWluZGVudDogXCJcXGYyMjJcIjtcblxuJGRhc2hpY29uLWVkaXRvci1oZWxwOiBcIlxcZjIyM1wiO1xuXG4kZGFzaGljb24tZWRpdG9yLXN0cmlrZXRocm91Z2g6IFwiXFxmMjI0XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItdW5saW5rOiBcIlxcZjIyNVwiO1xuXG4kZGFzaGljb24tZWRpdG9yLXJ0bDogXCJcXGYzMjBcIjtcblxuJGRhc2hpY29uLWVkaXRvci1icmVhazogXCJcXGY0NzRcIjtcblxuJGRhc2hpY29uLWVkaXRvci1jb2RlOiBcIlxcZjQ3NVwiO1xuXG4kZGFzaGljb24tZWRpdG9yLXBhcmFncmFwaDogXCJcXGY0NzZcIjtcblxuJGRhc2hpY29uLWVkaXRvci10YWJsZTogXCJcXGY1MzVcIjtcblxuLyogUG9zdCBJY29ucyAqL1xuXG4kZGFzaGljb24tYWxpZ24tbGVmdDogXCJcXGYxMzVcIjtcblxuJGRhc2hpY29uLWFsaWduLXJpZ2h0OiBcIlxcZjEzNlwiO1xuXG4kZGFzaGljb24tYWxpZ24tY2VudGVyOiBcIlxcZjEzNFwiO1xuXG4kZGFzaGljb24tYWxpZ24tbm9uZTogXCJcXGYxMzhcIjtcblxuJGRhc2hpY29uLWxvY2s6IFwiXFxmMTYwXCI7XG5cbiRkYXNoaWNvbi11bmxvY2s6IFwiXFxmNTI4XCI7XG5cbiRkYXNoaWNvbi1jYWxlbmRhcjogXCJcXGYxNDVcIjtcblxuJGRhc2hpY29uLWNhbGVuZGFyLWFsdDogXCJcXGY1MDhcIjtcblxuJGRhc2hpY29uLXZpc2liaWxpdHk6IFwiXFxmMTc3XCI7XG5cbiRkYXNoaWNvbi1oaWRkZW46IFwiXFxmNTMwXCI7XG5cbiRkYXNoaWNvbi1wb3N0LXN0YXR1czogXCJcXGYxNzNcIjtcblxuJGRhc2hpY29uLWVkaXQ6IFwiXFxmNDY0XCI7XG5cbiRkYXNoaWNvbi1wb3N0LXRyYXNoOiBcIlxcZjE4MlwiO1xuJGRhc2hpY29uLXRyYXNoOiBcIlxcZjE4MlwiO1xuXG4kZGFzaGljb24tc3RpY2t5OiBcIlxcZjUzN1wiO1xuXG5cbi8qIFNvcnRpbmcgKi9cblxuJGRhc2hpY29uLWV4dGVybmFsOiBcIlxcZjUwNFwiO1xuXG4kZGFzaGljb24tYXJyb3ctdXA6IFwiXFxmMTQyXCI7XG5cbiRkYXNoaWNvbi1hcnJvdy1kb3duOiBcIlxcZjE0MFwiO1xuXG4kZGFzaGljb24tYXJyb3ctbGVmdDogXCJcXGYxNDFcIjtcblxuJGRhc2hpY29uLWFycm93LXJpZ2h0OiBcIlxcZjEzOVwiO1xuXG4kZGFzaGljb24tYXJyb3ctdXAtYWx0OiBcIlxcZjM0MlwiO1xuXG4kZGFzaGljb24tYXJyb3ctZG93bi1hbHQ6IFwiXFxmMzQ2XCI7XG5cbiRkYXNoaWNvbi1hcnJvdy1sZWZ0LWFsdDogXCJcXGYzNDBcIjtcblxuJGRhc2hpY29uLWFycm93LXJpZ2h0LWFsdDogXCJcXGYzNDRcIjtcblxuJGRhc2hpY29uLWFycm93LXVwLWFsdDI6IFwiXFxmMzQzXCI7XG5cbiRkYXNoaWNvbi1hcnJvdy1kb3duLWFsdDI6IFwiXFxmMzQ3XCI7XG5cbiRkYXNoaWNvbi1hcnJvdy1sZWZ0LWFsdDI6IFwiXFxmMzQxXCI7XG5cbiRkYXNoaWNvbi1hcnJvdy1yaWdodC1hbHQyOiBcIlxcZjM0NVwiO1xuXG4kZGFzaGljb24tbGVmdHJpZ2h0OiBcIlxcZjIyOVwiO1xuXG4kZGFzaGljb24tc29ydDogXCJcXGYxNTZcIjtcblxuJGRhc2hpY29uLXJhbmRvbWl6ZTogXCJcXGY1MDNcIjtcblxuJGRhc2hpY29uLWxpc3QtdmlldzogXCJcXGYxNjNcIjtcblxuJGRhc2hpY29uLWV4Y2VycHQtdmlldzogXCJcXGYxNjRcIjtcblxuJGRhc2hpY29uLWdyaWQtdmlldzogXCJcXGY1MDlcIjtcblxuJGRhc2hpY29uLW1vdmU6IFwiXFxmNTQ1XCI7XG5cblxuLyogV1Bvcmcgc3BlY2lmaWMgaWNvbnM6IEpvYnMsIFByb2ZpbGVzLCBXb3JkQ2FtcHMgKi9cblxuJGRhc2hpY29uLWhhbW1lcjogXCJcXGYzMDhcIjtcblxuJGRhc2hpY29uLWFydDogXCJcXGYzMDlcIjtcblxuJGRhc2hpY29uLW1pZ3JhdGU6IFwiXFxmMzEwXCI7XG5cbiRkYXNoaWNvbi1wZXJmb3JtYW5jZTogXCJcXGYzMTFcIjtcblxuJGRhc2hpY29uLXVuaXZlcnNhbC1hY2Nlc3M6IFwiXFxmNDgzXCI7XG5cbiRkYXNoaWNvbi11bml2ZXJzYWwtYWNjZXNzLWFsdDogXCJcXGY1MDdcIjtcblxuJGRhc2hpY29uLXRpY2tldHM6IFwiXFxmNDg2XCI7XG5cbiRkYXNoaWNvbi1uYW1ldGFnOiBcIlxcZjQ4NFwiO1xuXG4kZGFzaGljb24tY2xpcGJvYXJkOiBcIlxcZjQ4MVwiO1xuXG4kZGFzaGljb24taGVhcnQ6IFwiXFxmNDg3XCI7XG5cbiRkYXNoaWNvbi1tZWdhcGhvbmU6IFwiXFxmNDg4XCI7XG5cbiRkYXNoaWNvbi1zY2hlZHVsZTogXCJcXGY0ODlcIjtcblxuXG4vKiBJbnRlcm5hbC9Qcm9kdWN0cyAqL1xuXG4kZGFzaGljb24td29yZHByZXNzOiBcIlxcZjEyMFwiO1xuXG4kZGFzaGljb24td29yZHByZXNzLWFsdDogXCJcXGYzMjRcIjtcblxuJGRhc2hpY29uLXByZXNzdGhpczogXCJcXGYxNTdcIjtcblxuJGRhc2hpY29uLXVwZGF0ZTogXCJcXGY0NjNcIjtcblxuJGRhc2hpY29uLXNjcmVlbm9wdGlvbnM6IFwiXFxmMTgwXCI7XG5cbiRkYXNoaWNvbi1jYXJ0OiBcIlxcZjE3NFwiO1xuXG4kZGFzaGljb24tZmVlZGJhY2s6IFwiXFxmMTc1XCI7XG5cbiRkYXNoaWNvbi1jbG91ZDogXCJcXGYxNzZcIjtcblxuJGRhc2hpY29uLXRyYW5zbGF0aW9uOiBcIlxcZjMyNlwiO1xuXG5cbi8qIFRheG9ub21pZXMgKi9cblxuJGRhc2hpY29uLXRhZzogXCJcXGYzMjNcIjtcblxuJGRhc2hpY29uLWNhdGVnb3J5OiBcIlxcZjMxOFwiO1xuXG5cbi8qIFdpZGdldCBpY29ucyAqL1xuXG4kZGFzaGljb24tYXJjaGl2ZTogXCJcXGY0ODBcIjtcblxuJGRhc2hpY29uLXRhZ2Nsb3VkOiBcIlxcZjQ3OVwiO1xuXG4kZGFzaGljb24tdGV4dDogXCJcXGY0NzhcIjtcblxuXG4vKiBNZWRpYSBpY29ucyAqL1xuXG4kZGFzaGljb24tbWVkaWEtYXJjaGl2ZTogXCJcXGY1MDFcIjtcblxuJGRhc2hpY29uLW1lZGlhLWF1ZGlvOiBcIlxcZjUwMFwiO1xuXG4kZGFzaGljb24tbWVkaWEtY29kZTogXCJcXGY0OTlcIjtcblxuJGRhc2hpY29uLW1lZGlhLWRlZmF1bHQ6IFwiXFxmNDk4XCI7XG5cbiRkYXNoaWNvbi1tZWRpYS1kb2N1bWVudDogXCJcXGY0OTdcIjtcblxuJGRhc2hpY29uLW1lZGlhLWludGVyYWN0aXZlOiBcIlxcZjQ5NlwiO1xuXG4kZGFzaGljb24tbWVkaWEtc3ByZWFkc2hlZXQ6IFwiXFxmNDk1XCI7XG5cbiRkYXNoaWNvbi1tZWRpYS10ZXh0OiBcIlxcZjQ5MVwiO1xuXG4kZGFzaGljb24tbWVkaWEtdmlkZW86IFwiXFxmNDkwXCI7XG5cbiRkYXNoaWNvbi1wbGF5bGlzdC1hdWRpbzogXCJcXGY0OTJcIjtcblxuJGRhc2hpY29uLXBsYXlsaXN0LXZpZGVvOiBcIlxcZjQ5M1wiO1xuXG4kZGFzaGljb24tY29udHJvbHMtcGxheTogXCJcXGY1MjJcIjtcblxuJGRhc2hpY29uLWNvbnRyb2xzLXBhdXNlOiBcIlxcZjUyM1wiO1xuXG4kZGFzaGljb24tY29udHJvbHMtZm9yd2FyZDogXCJcXGY1MTlcIjtcblxuJGRhc2hpY29uLWNvbnRyb2xzLXNraXBmb3J3YXJkOiBcIlxcZjUxN1wiO1xuXG4kZGFzaGljb24tY29udHJvbHMtYmFjazogXCJcXGY1MThcIjtcblxuJGRhc2hpY29uLWNvbnRyb2xzLXNraXBiYWNrOiBcIlxcZjUxNlwiO1xuXG4kZGFzaGljb24tY29udHJvbHMtcmVwZWF0OiBcIlxcZjUxNVwiO1xuXG4kZGFzaGljb24tY29udHJvbHMtdm9sdW1lb246IFwiXFxmNTIxXCI7XG5cbiRkYXNoaWNvbi1jb250cm9scy12b2x1bWVvZmY6IFwiXFxmNTIwXCI7XG5cblxuLyogQWxlcnRzL05vdGlmaWNhdGlvbnMvRmxhZ3MgKi9cblxuJGRhc2hpY29uLXllczogXCJcXGYxNDdcIjtcblxuJGRhc2hpY29uLW5vOiBcIlxcZjE1OFwiO1xuXG4kZGFzaGljb24tbm8tYWx0OiBcIlxcZjMzNVwiO1xuXG4kZGFzaGljb24tcGx1czogXCJcXGYxMzJcIjtcblxuJGRhc2hpY29uLXBsdXMtYWx0OiBcIlxcZjUwMlwiO1xuXG4kZGFzaGljb24tcGx1cy1hbHQyOiBcIlxcZjU0M1wiO1xuXG4kZGFzaGljb24tbWludXM6IFwiXFxmNDYwXCI7XG5cbiRkYXNoaWNvbi1kaXNtaXNzOiBcIlxcZjE1M1wiO1xuXG4kZGFzaGljb24tbWFya2VyOiBcIlxcZjE1OVwiO1xuXG4kZGFzaGljb24tc3Rhci1maWxsZWQ6IFwiXFxmMTU1XCI7XG5cbiRkYXNoaWNvbi1zdGFyLWhhbGY6IFwiXFxmNDU5XCI7XG5cbiRkYXNoaWNvbi1zdGFyLWVtcHR5OiBcIlxcZjE1NFwiO1xuXG4kZGFzaGljb24tZmxhZzogXCJcXGYyMjdcIjtcblxuJGRhc2hpY29uLWluZm86IFwiXFxmMzQ4XCI7XG5cbiRkYXNoaWNvbi13YXJuaW5nOiBcIlxcZjUzNFwiO1xuXG5cbi8qIFNvY2lhbCBJY29ucyAqL1xuXG4kZGFzaGljb24tc2hhcmU6IFwiXFxmMjM3XCI7XG5cbiRkYXNoaWNvbi1zaGFyZTE6IFwiXFxmMjM3XCI7XG5cbiRkYXNoaWNvbi1zaGFyZS1hbHQ6IFwiXFxmMjQwXCI7XG5cbiRkYXNoaWNvbi1zaGFyZS1hbHQyOiBcIlxcZjI0MlwiO1xuXG4kZGFzaGljb24tdHdpdHRlcjogXCJcXGYzMDFcIjtcblxuJGRhc2hpY29uLXJzczogXCJcXGYzMDNcIjtcblxuJGRhc2hpY29uLWVtYWlsOiBcIlxcZjQ2NVwiO1xuXG4kZGFzaGljb24tZW1haWwtYWx0OiBcIlxcZjQ2NlwiO1xuXG4kZGFzaGljb24tZmFjZWJvb2s6IFwiXFxmMzA0XCI7XG5cbiRkYXNoaWNvbi1mYWNlYm9vay1hbHQ6IFwiXFxmMzA1XCI7XG5cbiRkYXNoaWNvbi1uZXR3b3JraW5nOiBcIlxcZjMyNVwiO1xuXG4kZGFzaGljb24tZ29vZ2xlcGx1czogXCJcXGY0NjJcIjtcblxuXG4vKiBNaXNjL0NQVCAqL1xuXG4kZGFzaGljb24tbG9jYXRpb246IFwiXFxmMjMwXCI7XG5cbiRkYXNoaWNvbi1sb2NhdGlvbi1hbHQ6IFwiXFxmMjMxXCI7XG5cbiRkYXNoaWNvbi1jYW1lcmE6IFwiXFxmMzA2XCI7XG5cbiRkYXNoaWNvbi1pbWFnZXMtYWx0OiBcIlxcZjIzMlwiO1xuXG4kZGFzaGljb24taW1hZ2VzLWFsdDI6IFwiXFxmMjMzXCI7XG5cbiRkYXNoaWNvbi12aWRlby1hbHQ6IFwiXFxmMjM0XCI7XG5cbiRkYXNoaWNvbi12aWRlby1hbHQyOiBcIlxcZjIzNVwiO1xuXG4kZGFzaGljb24tdmlkZW8tYWx0MzogXCJcXGYyMzZcIjtcblxuJGRhc2hpY29uLXZhdWx0OiBcIlxcZjE3OFwiO1xuXG4kZGFzaGljb24tc2hpZWxkOiBcIlxcZjMzMlwiO1xuXG4kZGFzaGljb24tc2hpZWxkLWFsdDogXCJcXGYzMzRcIjtcblxuJGRhc2hpY29uLXNvczogXCJcXGY0NjhcIjtcblxuJGRhc2hpY29uLXNlYXJjaDogXCJcXGYxNzlcIjtcblxuJGRhc2hpY29uLXNsaWRlczogXCJcXGYxODFcIjtcblxuJGRhc2hpY29uLWFuYWx5dGljczogXCJcXGYxODNcIjtcblxuJGRhc2hpY29uLWNoYXJ0LXBpZTogXCJcXGYxODRcIjtcblxuJGRhc2hpY29uLWNoYXJ0LWJhcjogXCJcXGYxODVcIjtcblxuJGRhc2hpY29uLWNoYXJ0LWxpbmU6IFwiXFxmMjM4XCI7XG5cbiRkYXNoaWNvbi1jaGFydC1hcmVhOiBcIlxcZjIzOVwiO1xuXG4kZGFzaGljb24tZ3JvdXBzOiBcIlxcZjMwN1wiO1xuXG4kZGFzaGljb24tYnVzaW5lc3NtYW46IFwiXFxmMzM4XCI7XG5cbiRkYXNoaWNvbi1pZDogXCJcXGYzMzZcIjtcblxuJGRhc2hpY29uLWlkLWFsdDogXCJcXGYzMzdcIjtcblxuJGRhc2hpY29uLXByb2R1Y3RzOiBcIlxcZjMxMlwiO1xuXG4kZGFzaGljb24tYXdhcmRzOiBcIlxcZjMxM1wiO1xuXG4kZGFzaGljb24tZm9ybXM6IFwiXFxmMzE0XCI7XG5cbiRkYXNoaWNvbi10ZXN0aW1vbmlhbDogXCJcXGY0NzNcIjtcblxuJGRhc2hpY29uLXBvcnRmb2xpbzogXCJcXGYzMjJcIjtcblxuJGRhc2hpY29uLWJvb2s6IFwiXFxmMzMwXCI7XG5cbiRkYXNoaWNvbi1ib29rLWFsdDogXCJcXGYzMzFcIjtcblxuJGRhc2hpY29uLWRvd25sb2FkOiBcIlxcZjMxNlwiO1xuXG4kZGFzaGljb24tdXBsb2FkOiBcIlxcZjMxN1wiO1xuXG4kZGFzaGljb24tYmFja3VwOiBcIlxcZjMyMVwiO1xuXG4kZGFzaGljb24tY2xvY2s6IFwiXFxmNDY5XCI7XG5cbiRkYXNoaWNvbi1saWdodGJ1bGI6IFwiXFxmMzM5XCI7XG5cbiRkYXNoaWNvbi1taWNyb3Bob25lOiBcIlxcZjQ4MlwiO1xuXG4kZGFzaGljb24tZGVza3RvcDogXCJcXGY0NzJcIjtcblxuJGRhc2hpY29uLWxhcHRvcDogXCJcXGY1NDdcIjtcblxuJGRhc2hpY29uLXRhYmxldDogXCJcXGY0NzFcIjtcblxuJGRhc2hpY29uLXNtYXJ0cGhvbmU6IFwiXFxmNDcwXCI7XG5cbiRkYXNoaWNvbi1waG9uZTogXCJcXGY1MjVcIjtcblxuJGRhc2hpY29uLXNtaWxleTogXCJcXGYzMjhcIjtcblxuJGRhc2hpY29uLWluZGV4LWNhcmQ6IFwiXFxmNTEwXCI7XG5cbiRkYXNoaWNvbi1jYXJyb3Q6IFwiXFxmNTExXCI7XG5cbiRkYXNoaWNvbi1idWlsZGluZzogXCJcXGY1MTJcIjtcblxuJGRhc2hpY29uLXN0b3JlOiBcIlxcZjUxM1wiO1xuXG4kZGFzaGljb24tYWxidW06IFwiXFxmNTE0XCI7XG5cbiRkYXNoaWNvbi1wYWxtdHJlZTogXCJcXGY1MjdcIjtcblxuJGRhc2hpY29uLXRpY2tldHMtYWx0OiBcIlxcZjUyNFwiO1xuXG4kZGFzaGljb24tbW9uZXk6IFwiXFxmNTI2XCI7XG5cbiRkYXNoaWNvbi10aHVtYnMtdXA6IFwiXFxmNTI5XCI7XG5cbiRkYXNoaWNvbi10aHVtYnMtZG93bjogXCJcXGY1NDJcIjtcblxuJGRhc2hpY29uLWxheW91dDogXCJcXGY1MzhcIjtcblxuJGRhc2hpY29uLXBhcGVyY2xpcDogXCJcXGY1NDZcIjtcbiIsIiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxBQUFBLDJCQUEyQixBQUFDLENBQzNCLE9BQU8sQ0FBQyxZQUFZLENBQ3BCLFNBQVMsQ0FBQyxJQUFJLENBQ2QsUUFBUSxDQUFDLFFBQVEsQ0F5QmpCLEFBNUJELEFBSUMsMkJBSjBCLEFBSTFCLE9BQVEsQUFBQyxDQUNSLE9BQU8sQ0FBQyxFQUFFLENBQ1YsUUFBUSxDQUFDLFFBQVEsQ0FDakIsSUFBSSxDQUFDLENBQUMsQ0FDTixHQUFHLENBQUMsQ0FBQyxDQUNMLE1BQU0sQ0FBQyxDQUFDLENBQ1IsS0FBSyxDQUFDLENBQUMsQ0FDUCxVQUFVLENBQUMsZUFBZSxDQUMxQixBQVpGLEFBYUMsMkJBYjBCLEFBYTFCLE1BQU8sQUFBQyxDQUNQLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQy9CLFFBQVEsQ0FBQyxRQUFRLENBQ2pCLElBQUksQ0FBQyxDQUFDLENBQ04sR0FBRyxDQUFDLEdBQUcsQ0FDUCxNQUFNLENBQUMsQ0FBQyxDQUNSLEtBQUssQ0FBQyxDQUFDLENBQ1AsS0FBSyxDQUFDLElBQUksQ0FDVixTQUFTLENBQUMsSUFBSSxDQUNkLFdBQVcsQ0FBQyxDQUFDLENBQ2IsVUFBVSxDQUFDLE1BQU0sQ0FDakIsQUF4QkYsQUF5QkssMkJBekJzQixDQXlCdEIsQ0FBQyxBQUFDLENBQ0wsU0FBUyxDQUFDLElBQUksQ0FDZCJ9 */ 
     3/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlLXBhc3RlLWVkaXRvci5jc3MiLCJzb3VyY2VzIjpbInRoZS1wYXN0ZS1lZGl0b3Iuc2NzcyIsIi4uLy4uL3ZhcmlhYmxlcy9fdmFyaWFibGVzLnNjc3MiLCIuLi8uLi92YXJpYWJsZXMvX2Rhc2hpY29ucy5zY3NzIiwiLi4vLi4vbWl4aW5zL19taXhpbnMuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbkBpbXBvcnQgJy4uLy4uL3ZhcmlhYmxlcy92YXJpYWJsZXMnO1xuXG5AaW1wb3J0ICcuLi8uLi9taXhpbnMvbWl4aW5zJztcblxuLnRoZXBhc3RlLWltYWdlLXBsYWNlaG9sZGVyIHtcblx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG5cdG1heC13aWR0aDoxMDAlO1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0JjpiZWZvcmUge1xuXHRcdGNvbnRlbnQ6Jyc7XG5cdFx0cG9zaXRpb246YWJzb2x1dGU7XG5cdFx0bGVmdDowO1xuXHRcdHRvcDowO1xuXHRcdGJvdHRvbTowO1xuXHRcdHJpZ2h0OjA7XG5cdFx0YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuOCk7XG5cdH1cblx0JjphZnRlciB7XG5cdFx0Y29udGVudDphdHRyKGRhdGEtcHJvZ3Jlc3MpICclJztcblx0XHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0XHRsZWZ0OjA7XG5cdFx0dG9wOjUwJTtcblx0XHRib3R0b206MDtcblx0XHRyaWdodDowO1xuXHRcdGNvbG9yOiNmZmY7XG5cdFx0Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFJvYm90bywgT3h5Z2VuLVNhbnMsIFVidW50dSwgQ2FudGFyZWxsLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG5cdFx0Zm9udC1zaXplOjMwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6NzAwO1xuXHRcdGxpbmUtaGVpZ2h0OjA7XG5cdFx0dGV4dC1hbGlnbjpjZW50ZXI7XG5cdH1cblx0JiA+ICoge1xuXHRcdG1heC13aWR0aDoxMDAlO1xuXHR9XG59XG4iLCJAaW1wb3J0ICdkYXNoaWNvbnMnOyIsIlxuJGRhc2hpY29uLW1lbnU6IFwiXFxmMzMzXCI7XG5cbiRkYXNoaWNvbi1hZG1pbi1zaXRlOiBcIlxcZjMxOVwiO1xuXG4kZGFzaGljb24tZGFzaGJvYXJkOiBcIlxcZjIyNlwiO1xuXG4kZGFzaGljb24tYWRtaW4tbWVkaWE6IFwiXFxmMTA0XCI7XG5cbiRkYXNoaWNvbi1hZG1pbi1wYWdlOiBcIlxcZjEwNVwiO1xuXG4kZGFzaGljb24tYWRtaW4tY29tbWVudHM6IFwiXFxmMTAxXCI7XG5cbiRkYXNoaWNvbi1hZG1pbi1hcHBlYXJhbmNlOiBcIlxcZjEwMFwiO1xuXG4kZGFzaGljb24tYWRtaW4tcGx1Z2luczogXCJcXGYxMDZcIjtcblxuJGRhc2hpY29uLWFkbWluLXVzZXJzOiBcIlxcZjExMFwiO1xuXG4kZGFzaGljb24tYWRtaW4tdG9vbHM6IFwiXFxmMTA3XCI7XG5cbiRkYXNoaWNvbi1hZG1pbi1zZXR0aW5nczogXCJcXGYxMDhcIjtcblxuJGRhc2hpY29uLWFkbWluLW5ldHdvcms6IFwiXFxmMTEyXCI7XG5cbiRkYXNoaWNvbi1hZG1pbi1nZW5lcmljOiBcIlxcZjExMVwiO1xuXG4kZGFzaGljb24tYWRtaW4taG9tZTogXCJcXGYxMDJcIjtcblxuJGRhc2hpY29uLWFkbWluLWNvbGxhcHNlOiBcIlxcZjE0OFwiO1xuXG4kZGFzaGljb24tZmlsdGVyOiBcIlxcZjUzNlwiO1xuXG4kZGFzaGljb24tYWRtaW4tY3VzdG9taXplcjogXCJcXGY1NDBcIjtcblxuJGRhc2hpY29uLWFkbWluLW11bHRpc2l0ZTogXCJcXGY1NDFcIjtcblxuXG4vKiBCb3RoIEFkbWluIE1lbnUgYW5kIFBvc3QgRm9ybWF0cyAqL1xuXG4kZGFzaGljb24tYWRtaW4tbGlua3M6IFwiXFxmMTAzXCI7XG4kZGFzaGljb24tZm9ybWF0LWxpbmtzOiBcIlxcZjEwM1wiO1xuXG4kZGFzaGljb24tYWRtaW4tcG9zdDogXCJcXGYxMDlcIjtcbiRkYXNoaWNvbi1mb3JtYXQtc3RhbmRhcmQ6IFwiXFxmMTA5XCI7XG5cblxuLyogUG9zdCBGb3JtYXQgSWNvbnMgKi9cblxuJGRhc2hpY29uLWZvcm1hdC1pbWFnZTogXCJcXGYxMjhcIjtcblxuJGRhc2hpY29uLWZvcm1hdC1nYWxsZXJ5OiBcIlxcZjE2MVwiO1xuXG4kZGFzaGljb24tZm9ybWF0LWF1ZGlvOiBcIlxcZjEyN1wiO1xuXG4kZGFzaGljb24tZm9ybWF0LXZpZGVvOiBcIlxcZjEyNlwiO1xuXG4kZGFzaGljb24tZm9ybWF0LWNoYXQ6IFwiXFxmMTI1XCI7XG5cbiRkYXNoaWNvbi1mb3JtYXQtc3RhdHVzOiBcIlxcZjEzMFwiO1xuXG4kZGFzaGljb24tZm9ybWF0LWFzaWRlOiBcIlxcZjEyM1wiO1xuXG4kZGFzaGljb24tZm9ybWF0LXF1b3RlOiBcIlxcZjEyMlwiO1xuXG5cbi8qIFdlbGNvbWUgU2NyZWVuIEljb25zICovXG5cbiRkYXNoaWNvbi13ZWxjb21lLXdyaXRlLWJsb2c6IFwiXFxmMTE5XCI7XG4kZGFzaGljb24td2VsY29tZS1lZGl0LXBhZ2U6IFwiXFxmMTE5XCI7XG5cbiRkYXNoaWNvbi13ZWxjb21lLWFkZC1wYWdlOiBcIlxcZjEzM1wiO1xuXG4kZGFzaGljb24td2VsY29tZS12aWV3LXNpdGU6IFwiXFxmMTE1XCI7XG5cbiRkYXNoaWNvbi13ZWxjb21lLXdpZGdldHMtbWVudXM6IFwiXFxmMTE2XCI7XG5cbiRkYXNoaWNvbi13ZWxjb21lLWNvbW1lbnRzOiBcIlxcZjExN1wiO1xuXG4kZGFzaGljb24td2VsY29tZS1sZWFybi1tb3JlOiBcIlxcZjExOFwiO1xuXG5cbi8qIEltYWdlIEVkaXRpbmcgSWNvbnMgKi9cblxuJGRhc2hpY29uLWltYWdlLWNyb3A6IFwiXFxmMTY1XCI7XG5cbiRkYXNoaWNvbi1pbWFnZS1yb3RhdGU6IFwiXFxmNTMxXCI7XG5cblxuJGRhc2hpY29uLWltYWdlLXJvdGF0ZS1sZWZ0OiBcIlxcZjE2NlwiO1xuXG4kZGFzaGljb24taW1hZ2Utcm90YXRlLXJpZ2h0OiBcIlxcZjE2N1wiO1xuXG4kZGFzaGljb24taW1hZ2UtZmxpcC12ZXJ0aWNhbDogXCJcXGYxNjhcIjtcblxuJGRhc2hpY29uLWltYWdlLWZsaXAtaG9yaXpvbnRhbDogXCJcXGYxNjlcIjtcblxuJGRhc2hpY29uLWltYWdlLWZpbHRlcjogXCJcXGY1MzNcIjtcblxuXG4vKiBCb3RoIEltYWdlIEVkaXRpbmcgYW5kIFRpbnlNQ0UgKi9cblxuJGRhc2hpY29uLXVuZG86IFwiXFxmMTcxXCI7XG5cbiRkYXNoaWNvbi1yZWRvOiBcIlxcZjE3MlwiO1xuXG4vKiBUaW55TUNFIEljb25zICovXG5cbiRkYXNoaWNvbi1lZGl0b3ItYm9sZDogXCJcXGYyMDBcIjtcblxuJGRhc2hpY29uLWVkaXRvci1pdGFsaWM6IFwiXFxmMjAxXCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItdWw6IFwiXFxmMjAzXCI7XG5cbiRkYXNoaWNvbi1lZGl0b3Itb2w6IFwiXFxmMjA0XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItcXVvdGU6IFwiXFxmMjA1XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItYWxpZ25sZWZ0OiBcIlxcZjIwNlwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWFsaWduY2VudGVyOiBcIlxcZjIwN1wiO1xuXG4kZGFzaGljb24tZWRpdG9yLWFsaWducmlnaHQ6IFwiXFxmMjA4XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItaW5zZXJ0bW9yZTogXCJcXGYyMDlcIjtcblxuJGRhc2hpY29uLWVkaXRvci1zcGVsbGNoZWNrOiBcIlxcZjIxMFwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWRpc3RyYWN0aW9uZnJlZTogXCJcXGYyMTFcIjtcbiRkYXNoaWNvbi1lZGl0b3ItZXhwYW5kOiBcIlxcZjIxMVwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWNvbnRyYWN0OiBcIlxcZjUwNlwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWtpdGNoZW5zaW5rOiBcIlxcZjIxMlwiO1xuXG4kZGFzaGljb24tZWRpdG9yLXVuZGVybGluZTogXCJcXGYyMTNcIjtcblxuJGRhc2hpY29uLWVkaXRvci1qdXN0aWZ5OiBcIlxcZjIxNFwiO1xuXG4kZGFzaGljb24tZWRpdG9yLXRleHRjb2xvcjogXCJcXGYyMTVcIjtcblxuJGRhc2hpY29uLWVkaXRvci1wYXN0ZS13b3JkOiBcIlxcZjIxNlwiO1xuXG4kZGFzaGljb24tZWRpdG9yLXBhc3RlLXRleHQ6IFwiXFxmMjE3XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItcmVtb3ZlZm9ybWF0dGluZzogXCJcXGYyMThcIjtcblxuJGRhc2hpY29uLWVkaXRvci12aWRlbzogXCJcXGYyMTlcIjtcblxuJGRhc2hpY29uLWVkaXRvci1jdXN0b21jaGFyOiBcIlxcZjIyMFwiO1xuXG4kZGFzaGljb24tZWRpdG9yLW91dGRlbnQ6IFwiXFxmMjIxXCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItaW5kZW50OiBcIlxcZjIyMlwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWhlbHA6IFwiXFxmMjIzXCI7XG5cbiRkYXNoaWNvbi1lZGl0b3Itc3RyaWtldGhyb3VnaDogXCJcXGYyMjRcIjtcblxuJGRhc2hpY29uLWVkaXRvci11bmxpbms6IFwiXFxmMjI1XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItcnRsOiBcIlxcZjMyMFwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWJyZWFrOiBcIlxcZjQ3NFwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWNvZGU6IFwiXFxmNDc1XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItcGFyYWdyYXBoOiBcIlxcZjQ3NlwiO1xuXG4kZGFzaGljb24tZWRpdG9yLXRhYmxlOiBcIlxcZjUzNVwiO1xuXG4vKiBQb3N0IEljb25zICovXG5cbiRkYXNoaWNvbi1hbGlnbi1sZWZ0OiBcIlxcZjEzNVwiO1xuXG4kZGFzaGljb24tYWxpZ24tcmlnaHQ6IFwiXFxmMTM2XCI7XG5cbiRkYXNoaWNvbi1hbGlnbi1jZW50ZXI6IFwiXFxmMTM0XCI7XG5cbiRkYXNoaWNvbi1hbGlnbi1ub25lOiBcIlxcZjEzOFwiO1xuXG4kZGFzaGljb24tbG9jazogXCJcXGYxNjBcIjtcblxuJGRhc2hpY29uLXVubG9jazogXCJcXGY1MjhcIjtcblxuJGRhc2hpY29uLWNhbGVuZGFyOiBcIlxcZjE0NVwiO1xuXG4kZGFzaGljb24tY2FsZW5kYXItYWx0OiBcIlxcZjUwOFwiO1xuXG4kZGFzaGljb24tdmlzaWJpbGl0eTogXCJcXGYxNzdcIjtcblxuJGRhc2hpY29uLWhpZGRlbjogXCJcXGY1MzBcIjtcblxuJGRhc2hpY29uLXBvc3Qtc3RhdHVzOiBcIlxcZjE3M1wiO1xuXG4kZGFzaGljb24tZWRpdDogXCJcXGY0NjRcIjtcblxuJGRhc2hpY29uLXBvc3QtdHJhc2g6IFwiXFxmMTgyXCI7XG4kZGFzaGljb24tdHJhc2g6IFwiXFxmMTgyXCI7XG5cbiRkYXNoaWNvbi1zdGlja3k6IFwiXFxmNTM3XCI7XG5cblxuLyogU29ydGluZyAqL1xuXG4kZGFzaGljb24tZXh0ZXJuYWw6IFwiXFxmNTA0XCI7XG5cbiRkYXNoaWNvbi1hcnJvdy11cDogXCJcXGYxNDJcIjtcblxuJGRhc2hpY29uLWFycm93LWRvd246IFwiXFxmMTQwXCI7XG5cbiRkYXNoaWNvbi1hcnJvdy1sZWZ0OiBcIlxcZjE0MVwiO1xuXG4kZGFzaGljb24tYXJyb3ctcmlnaHQ6IFwiXFxmMTM5XCI7XG5cbiRkYXNoaWNvbi1hcnJvdy11cC1hbHQ6IFwiXFxmMzQyXCI7XG5cbiRkYXNoaWNvbi1hcnJvdy1kb3duLWFsdDogXCJcXGYzNDZcIjtcblxuJGRhc2hpY29uLWFycm93LWxlZnQtYWx0OiBcIlxcZjM0MFwiO1xuXG4kZGFzaGljb24tYXJyb3ctcmlnaHQtYWx0OiBcIlxcZjM0NFwiO1xuXG4kZGFzaGljb24tYXJyb3ctdXAtYWx0MjogXCJcXGYzNDNcIjtcblxuJGRhc2hpY29uLWFycm93LWRvd24tYWx0MjogXCJcXGYzNDdcIjtcblxuJGRhc2hpY29uLWFycm93LWxlZnQtYWx0MjogXCJcXGYzNDFcIjtcblxuJGRhc2hpY29uLWFycm93LXJpZ2h0LWFsdDI6IFwiXFxmMzQ1XCI7XG5cbiRkYXNoaWNvbi1sZWZ0cmlnaHQ6IFwiXFxmMjI5XCI7XG5cbiRkYXNoaWNvbi1zb3J0OiBcIlxcZjE1NlwiO1xuXG4kZGFzaGljb24tcmFuZG9taXplOiBcIlxcZjUwM1wiO1xuXG4kZGFzaGljb24tbGlzdC12aWV3OiBcIlxcZjE2M1wiO1xuXG4kZGFzaGljb24tZXhjZXJwdC12aWV3OiBcIlxcZjE2NFwiO1xuXG4kZGFzaGljb24tZ3JpZC12aWV3OiBcIlxcZjUwOVwiO1xuXG4kZGFzaGljb24tbW92ZTogXCJcXGY1NDVcIjtcblxuXG4vKiBXUG9yZyBzcGVjaWZpYyBpY29uczogSm9icywgUHJvZmlsZXMsIFdvcmRDYW1wcyAqL1xuXG4kZGFzaGljb24taGFtbWVyOiBcIlxcZjMwOFwiO1xuXG4kZGFzaGljb24tYXJ0OiBcIlxcZjMwOVwiO1xuXG4kZGFzaGljb24tbWlncmF0ZTogXCJcXGYzMTBcIjtcblxuJGRhc2hpY29uLXBlcmZvcm1hbmNlOiBcIlxcZjMxMVwiO1xuXG4kZGFzaGljb24tdW5pdmVyc2FsLWFjY2VzczogXCJcXGY0ODNcIjtcblxuJGRhc2hpY29uLXVuaXZlcnNhbC1hY2Nlc3MtYWx0OiBcIlxcZjUwN1wiO1xuXG4kZGFzaGljb24tdGlja2V0czogXCJcXGY0ODZcIjtcblxuJGRhc2hpY29uLW5hbWV0YWc6IFwiXFxmNDg0XCI7XG5cbiRkYXNoaWNvbi1jbGlwYm9hcmQ6IFwiXFxmNDgxXCI7XG5cbiRkYXNoaWNvbi1oZWFydDogXCJcXGY0ODdcIjtcblxuJGRhc2hpY29uLW1lZ2FwaG9uZTogXCJcXGY0ODhcIjtcblxuJGRhc2hpY29uLXNjaGVkdWxlOiBcIlxcZjQ4OVwiO1xuXG5cbi8qIEludGVybmFsL1Byb2R1Y3RzICovXG5cbiRkYXNoaWNvbi13b3JkcHJlc3M6IFwiXFxmMTIwXCI7XG5cbiRkYXNoaWNvbi13b3JkcHJlc3MtYWx0OiBcIlxcZjMyNFwiO1xuXG4kZGFzaGljb24tcHJlc3N0aGlzOiBcIlxcZjE1N1wiO1xuXG4kZGFzaGljb24tdXBkYXRlOiBcIlxcZjQ2M1wiO1xuXG4kZGFzaGljb24tc2NyZWVub3B0aW9uczogXCJcXGYxODBcIjtcblxuJGRhc2hpY29uLWNhcnQ6IFwiXFxmMTc0XCI7XG5cbiRkYXNoaWNvbi1mZWVkYmFjazogXCJcXGYxNzVcIjtcblxuJGRhc2hpY29uLWNsb3VkOiBcIlxcZjE3NlwiO1xuXG4kZGFzaGljb24tdHJhbnNsYXRpb246IFwiXFxmMzI2XCI7XG5cblxuLyogVGF4b25vbWllcyAqL1xuXG4kZGFzaGljb24tdGFnOiBcIlxcZjMyM1wiO1xuXG4kZGFzaGljb24tY2F0ZWdvcnk6IFwiXFxmMzE4XCI7XG5cblxuLyogV2lkZ2V0IGljb25zICovXG5cbiRkYXNoaWNvbi1hcmNoaXZlOiBcIlxcZjQ4MFwiO1xuXG4kZGFzaGljb24tdGFnY2xvdWQ6IFwiXFxmNDc5XCI7XG5cbiRkYXNoaWNvbi10ZXh0OiBcIlxcZjQ3OFwiO1xuXG5cbi8qIE1lZGlhIGljb25zICovXG5cbiRkYXNoaWNvbi1tZWRpYS1hcmNoaXZlOiBcIlxcZjUwMVwiO1xuXG4kZGFzaGljb24tbWVkaWEtYXVkaW86IFwiXFxmNTAwXCI7XG5cbiRkYXNoaWNvbi1tZWRpYS1jb2RlOiBcIlxcZjQ5OVwiO1xuXG4kZGFzaGljb24tbWVkaWEtZGVmYXVsdDogXCJcXGY0OThcIjtcblxuJGRhc2hpY29uLW1lZGlhLWRvY3VtZW50OiBcIlxcZjQ5N1wiO1xuXG4kZGFzaGljb24tbWVkaWEtaW50ZXJhY3RpdmU6IFwiXFxmNDk2XCI7XG5cbiRkYXNoaWNvbi1tZWRpYS1zcHJlYWRzaGVldDogXCJcXGY0OTVcIjtcblxuJGRhc2hpY29uLW1lZGlhLXRleHQ6IFwiXFxmNDkxXCI7XG5cbiRkYXNoaWNvbi1tZWRpYS12aWRlbzogXCJcXGY0OTBcIjtcblxuJGRhc2hpY29uLXBsYXlsaXN0LWF1ZGlvOiBcIlxcZjQ5MlwiO1xuXG4kZGFzaGljb24tcGxheWxpc3QtdmlkZW86IFwiXFxmNDkzXCI7XG5cbiRkYXNoaWNvbi1jb250cm9scy1wbGF5OiBcIlxcZjUyMlwiO1xuXG4kZGFzaGljb24tY29udHJvbHMtcGF1c2U6IFwiXFxmNTIzXCI7XG5cbiRkYXNoaWNvbi1jb250cm9scy1mb3J3YXJkOiBcIlxcZjUxOVwiO1xuXG4kZGFzaGljb24tY29udHJvbHMtc2tpcGZvcndhcmQ6IFwiXFxmNTE3XCI7XG5cbiRkYXNoaWNvbi1jb250cm9scy1iYWNrOiBcIlxcZjUxOFwiO1xuXG4kZGFzaGljb24tY29udHJvbHMtc2tpcGJhY2s6IFwiXFxmNTE2XCI7XG5cbiRkYXNoaWNvbi1jb250cm9scy1yZXBlYXQ6IFwiXFxmNTE1XCI7XG5cbiRkYXNoaWNvbi1jb250cm9scy12b2x1bWVvbjogXCJcXGY1MjFcIjtcblxuJGRhc2hpY29uLWNvbnRyb2xzLXZvbHVtZW9mZjogXCJcXGY1MjBcIjtcblxuXG4vKiBBbGVydHMvTm90aWZpY2F0aW9ucy9GbGFncyAqL1xuXG4kZGFzaGljb24teWVzOiBcIlxcZjE0N1wiO1xuXG4kZGFzaGljb24tbm86IFwiXFxmMTU4XCI7XG5cbiRkYXNoaWNvbi1uby1hbHQ6IFwiXFxmMzM1XCI7XG5cbiRkYXNoaWNvbi1wbHVzOiBcIlxcZjEzMlwiO1xuXG4kZGFzaGljb24tcGx1cy1hbHQ6IFwiXFxmNTAyXCI7XG5cbiRkYXNoaWNvbi1wbHVzLWFsdDI6IFwiXFxmNTQzXCI7XG5cbiRkYXNoaWNvbi1taW51czogXCJcXGY0NjBcIjtcblxuJGRhc2hpY29uLWRpc21pc3M6IFwiXFxmMTUzXCI7XG5cbiRkYXNoaWNvbi1tYXJrZXI6IFwiXFxmMTU5XCI7XG5cbiRkYXNoaWNvbi1zdGFyLWZpbGxlZDogXCJcXGYxNTVcIjtcblxuJGRhc2hpY29uLXN0YXItaGFsZjogXCJcXGY0NTlcIjtcblxuJGRhc2hpY29uLXN0YXItZW1wdHk6IFwiXFxmMTU0XCI7XG5cbiRkYXNoaWNvbi1mbGFnOiBcIlxcZjIyN1wiO1xuXG4kZGFzaGljb24taW5mbzogXCJcXGYzNDhcIjtcblxuJGRhc2hpY29uLXdhcm5pbmc6IFwiXFxmNTM0XCI7XG5cblxuLyogU29jaWFsIEljb25zICovXG5cbiRkYXNoaWNvbi1zaGFyZTogXCJcXGYyMzdcIjtcblxuJGRhc2hpY29uLXNoYXJlMTogXCJcXGYyMzdcIjtcblxuJGRhc2hpY29uLXNoYXJlLWFsdDogXCJcXGYyNDBcIjtcblxuJGRhc2hpY29uLXNoYXJlLWFsdDI6IFwiXFxmMjQyXCI7XG5cbiRkYXNoaWNvbi10d2l0dGVyOiBcIlxcZjMwMVwiO1xuXG4kZGFzaGljb24tcnNzOiBcIlxcZjMwM1wiO1xuXG4kZGFzaGljb24tZW1haWw6IFwiXFxmNDY1XCI7XG5cbiRkYXNoaWNvbi1lbWFpbC1hbHQ6IFwiXFxmNDY2XCI7XG5cbiRkYXNoaWNvbi1mYWNlYm9vazogXCJcXGYzMDRcIjtcblxuJGRhc2hpY29uLWZhY2Vib29rLWFsdDogXCJcXGYzMDVcIjtcblxuJGRhc2hpY29uLW5ldHdvcmtpbmc6IFwiXFxmMzI1XCI7XG5cbiRkYXNoaWNvbi1nb29nbGVwbHVzOiBcIlxcZjQ2MlwiO1xuXG5cbi8qIE1pc2MvQ1BUICovXG5cbiRkYXNoaWNvbi1sb2NhdGlvbjogXCJcXGYyMzBcIjtcblxuJGRhc2hpY29uLWxvY2F0aW9uLWFsdDogXCJcXGYyMzFcIjtcblxuJGRhc2hpY29uLWNhbWVyYTogXCJcXGYzMDZcIjtcblxuJGRhc2hpY29uLWltYWdlcy1hbHQ6IFwiXFxmMjMyXCI7XG5cbiRkYXNoaWNvbi1pbWFnZXMtYWx0MjogXCJcXGYyMzNcIjtcblxuJGRhc2hpY29uLXZpZGVvLWFsdDogXCJcXGYyMzRcIjtcblxuJGRhc2hpY29uLXZpZGVvLWFsdDI6IFwiXFxmMjM1XCI7XG5cbiRkYXNoaWNvbi12aWRlby1hbHQzOiBcIlxcZjIzNlwiO1xuXG4kZGFzaGljb24tdmF1bHQ6IFwiXFxmMTc4XCI7XG5cbiRkYXNoaWNvbi1zaGllbGQ6IFwiXFxmMzMyXCI7XG5cbiRkYXNoaWNvbi1zaGllbGQtYWx0OiBcIlxcZjMzNFwiO1xuXG4kZGFzaGljb24tc29zOiBcIlxcZjQ2OFwiO1xuXG4kZGFzaGljb24tc2VhcmNoOiBcIlxcZjE3OVwiO1xuXG4kZGFzaGljb24tc2xpZGVzOiBcIlxcZjE4MVwiO1xuXG4kZGFzaGljb24tYW5hbHl0aWNzOiBcIlxcZjE4M1wiO1xuXG4kZGFzaGljb24tY2hhcnQtcGllOiBcIlxcZjE4NFwiO1xuXG4kZGFzaGljb24tY2hhcnQtYmFyOiBcIlxcZjE4NVwiO1xuXG4kZGFzaGljb24tY2hhcnQtbGluZTogXCJcXGYyMzhcIjtcblxuJGRhc2hpY29uLWNoYXJ0LWFyZWE6IFwiXFxmMjM5XCI7XG5cbiRkYXNoaWNvbi1ncm91cHM6IFwiXFxmMzA3XCI7XG5cbiRkYXNoaWNvbi1idXNpbmVzc21hbjogXCJcXGYzMzhcIjtcblxuJGRhc2hpY29uLWlkOiBcIlxcZjMzNlwiO1xuXG4kZGFzaGljb24taWQtYWx0OiBcIlxcZjMzN1wiO1xuXG4kZGFzaGljb24tcHJvZHVjdHM6IFwiXFxmMzEyXCI7XG5cbiRkYXNoaWNvbi1hd2FyZHM6IFwiXFxmMzEzXCI7XG5cbiRkYXNoaWNvbi1mb3JtczogXCJcXGYzMTRcIjtcblxuJGRhc2hpY29uLXRlc3RpbW9uaWFsOiBcIlxcZjQ3M1wiO1xuXG4kZGFzaGljb24tcG9ydGZvbGlvOiBcIlxcZjMyMlwiO1xuXG4kZGFzaGljb24tYm9vazogXCJcXGYzMzBcIjtcblxuJGRhc2hpY29uLWJvb2stYWx0OiBcIlxcZjMzMVwiO1xuXG4kZGFzaGljb24tZG93bmxvYWQ6IFwiXFxmMzE2XCI7XG5cbiRkYXNoaWNvbi11cGxvYWQ6IFwiXFxmMzE3XCI7XG5cbiRkYXNoaWNvbi1iYWNrdXA6IFwiXFxmMzIxXCI7XG5cbiRkYXNoaWNvbi1jbG9jazogXCJcXGY0NjlcIjtcblxuJGRhc2hpY29uLWxpZ2h0YnVsYjogXCJcXGYzMzlcIjtcblxuJGRhc2hpY29uLW1pY3JvcGhvbmU6IFwiXFxmNDgyXCI7XG5cbiRkYXNoaWNvbi1kZXNrdG9wOiBcIlxcZjQ3MlwiO1xuXG4kZGFzaGljb24tbGFwdG9wOiBcIlxcZjU0N1wiO1xuXG4kZGFzaGljb24tdGFibGV0OiBcIlxcZjQ3MVwiO1xuXG4kZGFzaGljb24tc21hcnRwaG9uZTogXCJcXGY0NzBcIjtcblxuJGRhc2hpY29uLXBob25lOiBcIlxcZjUyNVwiO1xuXG4kZGFzaGljb24tc21pbGV5OiBcIlxcZjMyOFwiO1xuXG4kZGFzaGljb24taW5kZXgtY2FyZDogXCJcXGY1MTBcIjtcblxuJGRhc2hpY29uLWNhcnJvdDogXCJcXGY1MTFcIjtcblxuJGRhc2hpY29uLWJ1aWxkaW5nOiBcIlxcZjUxMlwiO1xuXG4kZGFzaGljb24tc3RvcmU6IFwiXFxmNTEzXCI7XG5cbiRkYXNoaWNvbi1hbGJ1bTogXCJcXGY1MTRcIjtcblxuJGRhc2hpY29uLXBhbG10cmVlOiBcIlxcZjUyN1wiO1xuXG4kZGFzaGljb24tdGlja2V0cy1hbHQ6IFwiXFxmNTI0XCI7XG5cbiRkYXNoaWNvbi1tb25leTogXCJcXGY1MjZcIjtcblxuJGRhc2hpY29uLXRodW1icy11cDogXCJcXGY1MjlcIjtcblxuJGRhc2hpY29uLXRodW1icy1kb3duOiBcIlxcZjU0MlwiO1xuXG4kZGFzaGljb24tbGF5b3V0OiBcIlxcZjUzOFwiO1xuXG4kZGFzaGljb24tcGFwZXJjbGlwOiBcIlxcZjU0NlwiO1xuIiwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLEFBQUEsMkJBQTJCLEFBQUMsQ0FDM0IsT0FBTyxDQUFDLFlBQVksQ0FDcEIsU0FBUyxDQUFDLElBQUksQ0FDZCxRQUFRLENBQUMsUUFBUSxDQTJCakIsQUE5QkQsQUFJQywyQkFKMEIsQUFJMUIsT0FBUSxBQUFDLENBQ1IsT0FBTyxDQUFDLEVBQUUsQ0FDVixRQUFRLENBQUMsUUFBUSxDQUNqQixJQUFJLENBQUMsQ0FBQyxDQUNOLEdBQUcsQ0FBQyxDQUFDLENBQ0wsTUFBTSxDQUFDLENBQUMsQ0FDUixLQUFLLENBQUMsQ0FBQyxDQUNQLFVBQVUsQ0FBQyxlQUFlLENBQzFCLEFBWkYsQUFhQywyQkFiMEIsQUFhMUIsTUFBTyxBQUFDLENBQ1AsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FDL0IsUUFBUSxDQUFDLFFBQVEsQ0FDakIsSUFBSSxDQUFDLENBQUMsQ0FDTixHQUFHLENBQUMsR0FBRyxDQUNQLE1BQU0sQ0FBQyxDQUFDLENBQ1IsS0FBSyxDQUFDLENBQUMsQ0FDUCxLQUFLLENBQUMsSUFBSSxDQUNWLFdBQVcsQ0FBQyxtSEFBbUgsQ0FDL0gsU0FBUyxDQUFDLElBQUksQ0FDZCxXQUFXLENBQUMsR0FBRyxDQUNmLFdBQVcsQ0FBQyxDQUFDLENBQ2IsVUFBVSxDQUFDLE1BQU0sQ0FDakIsQUExQkYsQUEyQkssMkJBM0JzQixDQTJCdEIsQ0FBQyxBQUFDLENBQ0wsU0FBUyxDQUFDLElBQUksQ0FDZCJ9 */ 
  • the-paste/tags/1.0.2/include/ThePaste/Admin/TinyMce/TinyMceThePaste.php

    r1729167 r1760781  
    2323        $this->plugin_params = array(); 
    2424        $this->mce_settings =  array( 
    25             'extended_valid_elements' => 'canvas', 
    26             'custom_elements' => 'canvas', 
     25            'extended_valid_elements'   => 'canvas', 
     26            'custom_elements'           => 'canvas', 
     27            'paste_data_images'         => true, 
    2728        ); 
    2829        parent::__construct(); 
  • the-paste/tags/1.0.2/index.php

    r1730916 r1760781  
    2727 
    2828    Admin\Admin::instance(); 
    29     Settings\SettingsMedia::instance(); 
    3029 
    3130} 
  • the-paste/tags/1.0.2/js/admin/mce/the-paste-plugin.js

    r1729167 r1760781  
    410410            preventImagePaste = false, 
    411411            thepaste = wp.media.thepaste, 
    412             toolbar; 
    413  
     412            toolbar, 
     413            pasted_image_tmp_prefix = '__pasted_image_tmp_', 
     414            pasted_image_tmp_class = ''; 
     415 
     416        // default on 
    414417        thepaste.options.editor.auto_upload = localStorage.getItem( 'thepaste.auto_upload' ) !== 'false'; 
    415         // default on 
    416  
    417         function domAdd() { 
    418             var result = origDomAdd.apply(this,arguments); 
    419             if ( 'mcepastebin' === $(result).attr('id') ) { 
    420                 $(result) 
    421                     .pastableContenteditable() 
    422                     .on('paste',function(e){ 
    423                     }) 
    424                     .on('pasteImage',function( e, data ) { 
    425                         var image; 
    426                         if ( preventImagePaste ) { 
    427                             e.preventDefault(); 
    428                             return false; 
    429                         } 
    430                         image = thepaste.insertImage( data.dataURL, data.blob.type, editor ); 
    431                         if ( thepaste.options.editor.auto_upload ) { 
    432                             thepaste.uploadImage( image, editor ); 
    433                         } 
    434                     }); 
    435             } 
    436             return result; 
    437         } 
    438  
    439         function setupEditorDom() { 
    440  
    441             origDomAdd = editor.dom.add; 
    442  
    443             editor.dom.add = domAdd; 
    444  
    445             $(editor.dom.doc).on( 'paste', function(e){ 
    446                 currentClipboardEvent = e.originalEvent; 
    447                 console.log(currentClipboardEvent.clipboardData.types); 
    448                 clipboardHasImage = thepaste.clipboardHasImage(e.originalEvent.clipboardData); 
    449                 preventImagePaste = false; 
    450             } ); 
    451         } 
     418 
    452419        editor.addCommand( 'cmd_thepaste', function() { 
    453420            thepaste.options.editor.auto_upload = ! thepaste.options.editor.auto_upload; 
    454421            localStorage.setItem( 'thepaste.auto_upload', thepaste.options.editor.auto_upload.toString() ); 
    455422            pasteBtn.active( thepaste.options.editor.auto_upload ); 
     423 
    456424        }); 
    457425 
     
    474442                var image; 
    475443                image = editor.selection.getNode(); 
    476 //console.log(image); 
     444 
    477445                thepaste.uploadImage( image, editor ); 
    478             }            
     446            } 
    479447        }); 
    480448 
     
    494462 
    495463        editor.on( 'wptoolbar', function( event ) { 
    496             var canUpload = false, 
    497                 uploadBtn; 
     464            var uploadBtn; 
    498465            if ( event.element.nodeName === 'IMG' && ! editor.wp.isPlaceholder( event.element ) ) { 
    499466                event.toolbar = toolbar; 
    500                 canUpload = !! event.element.src.match( /^(blob|data):/ ); 
    501467                uploadBtn = toolbar.$el.find('.thepaste-upload').closest('.mce-btn'); 
    502468 
    503                 if ( canUpload ) { 
     469                if ( canUpload( event.element ) ) { 
    504470                    uploadBtn.show(); 
    505471                } else { 
     
    509475        } ); 
    510476 
     477        function canUpload( img ) { 
     478            var sub = img.src.substring(0,5); 
     479            return sub === 'blob:' || sub === 'data:'; 
     480        } 
     481 
     482        function execCommandUploadPastedImage(a){ 
     483            if ( thepaste.options.editor.auto_upload && 
     484                a.command == 'mceInsertContent' && 
     485                !! a.value && !! a.value.content && 
     486                "<img" === a.value.content.substring(0,4).toLowerCase() 
     487            ) { 
     488                $img = $(editor.getBody()).find('.'+pasted_image_tmp_class); 
     489                if ( canUpload( $img.get(0) ) ) { 
     490                    thepaste.uploadImage( $img.get(0), editor ); 
     491                    $img.removeClass(pasted_image_tmp_class); 
     492                } 
     493            } 
     494        } 
    511495        editor 
    512             .on( 'init', setupEditorDom ) 
     496//          .on( 'init', setupEditorDom ) 
     497            .on( 'PastePostProcess', function(e){ 
     498                var $firstChild; 
     499                if ( thepaste.options.editor.auto_upload ) { 
     500                    $firstChild = $(e.node).children().first(); 
     501                    if ( $firstChild.is('img') && canUpload( $firstChild.get(0) ) ) { 
     502                        pasted_image_tmp_class = pasted_image_tmp_prefix + Date.now(); 
     503                        $firstChild.addClass( pasted_image_tmp_class ); 
     504                        editor.once( 'ExecCommand', execCommandUploadPastedImage ); 
     505                    } 
     506                } 
     507            }) 
    513508            .on( 'BeforePastePreProcess', function(e){ 
     509                // remove svg data from illustrator 
    514510                if (  e.content.match( /&lt;svg[\s\S.]*&lt;\/svg&gt;/i ) ) { 
    515511                    e.preventDefault(); 
    516512                    e.content = ''; 
    517513                } 
    518                 if ( clipboardHasImage ) { 
    519                     e.preventDefault(); 
    520                     e.content = ''; 
    521                 } 
    522514                return e; 
    523515 
    524             } ); 
     516            } ) 
     517            ; 
    525518 
    526519    }; 
     
    529522 
    530523} )(jQuery); 
    531  
  • the-paste/tags/1.0.2/js/admin/mce/the-paste-plugin.min.js

    r1729167 r1760781  
    1 (function(){var t,e,n,a,o;t=window.jQuery,t.paste=function(t){var n;return"undefined"!=typeof console&&null!==console&&console.log("DEPRECATED: This method is deprecated. Please use $.fn.pastableNonInputable() instead."),n=e.mountNonInputable(t),n._container},t.fn.pastableNonInputable=function(){var n,a,o,r;for(r=this,a=0,o=r.length;a<o;a++)n=r[a],n._pastable||t(n).is("textarea, input:text, [contenteditable]")||(e.mountNonInputable(n),n._pastable=!0);return this},t.fn.pastableTextarea=function(){var n,a,o,r;for(r=this,a=0,o=r.length;a<o;a++)n=r[a],n._pastable||t(n).is(":not(textarea, input:text)")||(e.mountTextarea(n),n._pastable=!0);return this},t.fn.pastableContenteditable=function(){var n,a,o,r;for(r=this,a=0,o=r.length;a<o;a++)n=r[a],n._pastable||t(n).is(":not([contenteditable])")||(e.mountContenteditable(n),n._pastable=!0);return this},a=function(t,e){var n,a,o,r,i,u,l,s,c,p,d;if(null==e&&(e=512),!(s=t.match(/^data\:([^\;]+)\;base64\,(.+)$/)))return null;for(p=s,s=p[0],u=p[1],n=p[2],r=atob(n),o=[],c=0;c<r.length;){for(d=r.slice(c,c+e),i=new Array(d.length),l=0;l<d.length;)i[l]=d.charCodeAt(l),l++;a=new Uint8Array(i),o.push(a),c+=e}return new Blob(o,{type:u})},n=function(){return t(document.createElement("div")).attr("contenteditable",!0).attr("aria-hidden",!0).attr("tabindex",-1).css({width:1,height:1,position:"fixed",left:-100,overflow:"hidden"})},o=function(e,n){var a,o,r,i,u,l;return i=void 0,u=void 0,r=void 0,o=void 0,a=void 0,"area"===(l=e.nodeName.toLowerCase())?(i=e.parentNode,u=i.name,!(!e.href||!u||"map"!==i.nodeName.toLowerCase())&&(r=t("img[usemap='#"+u+"']"),r.length>0&&r.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(l)?(o=!e.disabled)&&(a=t(e).closest("fieldset")[0])&&(o=!a.disabled):o="a"===l?e.href||n:n,(o=o||t(e).is("[contenteditable]"))&&t(e).is(":visible"))},e=function(){function e(e,n){this._container=e,this._target=n,this._container=t(this._container),this._target=t(this._target).addClass("pastable"),this._container.on("paste",function(t){return function(e){var n,a,o,r,i,u,l,s,c,p,d,f,g;if(e.currentTarget!==e.target)return e.preventDefault();if(t._paste_event_fired=!0,null!=(null!=(c=e.originalEvent)?c.clipboardData:void 0))if(n=e.originalEvent.clipboardData,n.items)for(p=n.items,r=0,u=p.length;r<u;r++){if(o=p[r],o.type.match(/^image\//)){s=new FileReader,s.onload=function(e){return t._handleImage(e.target.result)};try{s.readAsDataURL(o.getAsFile())}catch(t){}e.preventDefault();break}"text/plain"===o.type&&o.getAsString(function(e){return t._target.trigger("pasteText",{text:e})})}else-1!==Array.prototype.indexOf.call(n.types,"text/plain")&&(g=n.getData("Text"),setTimeout(function(){return t._target.trigger("pasteText",{text:g})},1)),t._checkImagesInContainer(function(e){return t._handleImage(e)});if(n=window.clipboardData)if(null!=(d=g=n.getData("Text"))?d.length:void 0)setTimeout(function(){return t._target.trigger("pasteText",{text:g}),t._target.trigger("_pasteCheckContainerDone")},1);else{for(f=n.files,i=0,l=f.length;i<l;i++)a=f[i],t._handleImage(URL.createObjectURL(a));t._checkImagesInContainer(function(t){})}return null}}(this))}return e.prototype._target=null,e.prototype._container=null,e.mountNonInputable=function(a){var r;return r=new e(n().appendTo(a),a),t(a).on("click",function(t){return function(t){if(!o(t.target,!1))return r._container.focus()}}()),r._container.on("focus",function(e){return function(){return t(a).addClass("pastable-focus")}}()),r._container.on("blur",function(e){return function(){return t(a).removeClass("pastable-focus")}}())},e.mountTextarea=function(a){var o,r,i,u;return("undefined"!=typeof DataTransfer&&null!==DataTransfer?DataTransfer.prototype:void 0)&&(null!=(i=Object.getOwnPropertyDescriptor)&&null!=(u=i.call(Object,DataTransfer.prototype,"items"))?u.get:void 0)?this.mountContenteditable(a):(r=new e(n().insertBefore(a),a),o=!1,t(a).on("keyup",function(t){var e;return 17!==(e=t.keyCode)&&224!==e||(o=!1),null}),t(a).on("keydown",function(e){var n;return 17!==(n=e.keyCode)&&224!==n||(o=!0),null!=e.ctrlKey&&null!=e.metaKey&&(o=e.ctrlKey||e.metaKey),o&&86===e.keyCode&&(r._textarea_focus_stolen=!0,r._container.focus(),r._paste_event_fired=!1,setTimeout(function(e){return function(){if(!r._paste_event_fired)return t(a).focus(),r._textarea_focus_stolen=!1}}(),1)),null}),t(a).on("paste",function(t){return function(){}}()),t(a).on("focus",function(e){return function(){if(!r._textarea_focus_stolen)return t(a).addClass("pastable-focus")}}()),t(a).on("blur",function(e){return function(){if(!r._textarea_focus_stolen)return t(a).removeClass("pastable-focus")}}()),t(r._target).on("_pasteCheckContainerDone",function(e){return function(){return t(a).focus(),r._textarea_focus_stolen=!1}}()),t(r._target).on("pasteText",function(e){return function(e,n){var o,r,i;return i=t(a).prop("selectionStart"),r=t(a).prop("selectionEnd"),o=t(a).val(),t(a).val(""+o.slice(0,i)+n.text+o.slice(r)),t(a)[0].setSelectionRange(i+n.text.length,i+n.text.length),t(a).trigger("change")}}()))},e.mountContenteditable=function(n){return new e(n,n),t(n).on("focus",function(e){return function(){return t(n).addClass("pastable-focus")}}()),t(n).on("blur",function(e){return function(){return t(n).removeClass("pastable-focus")}}())},e.prototype._handleImage=function(t){var e;return t.match(/^webkit\-fake\-url\:\/\//)?this._target.trigger("pasteImageError",{message:"You are trying to paste an image in Safari, however we are unable to retieve its data."}):(this._target.trigger("pasteImageStart"),e=new Image,e.crossOrigin="anonymous",e.onload=function(t){return function(){var n,o,r,i;o=document.createElement("canvas"),o.width=e.width,o.height=e.height,r=o.getContext("2d"),r.drawImage(e,0,0,o.width,o.height),i=null;try{i=o.toDataURL("image/png"),n=a(i)}catch(t){}return i&&t._target.trigger("pasteImage",{blob:n,dataURL:i,width:e.width,height:e.height}),t._target.trigger("pasteImageEnd")}}(this),e.onerror=function(e){return function(){return e._target.trigger("pasteImageError",{message:"Failed to get image from: "+t,url:t}),e._target.trigger("pasteImageEnd")}}(this),e.src=t)},e.prototype._checkImagesInContainer=function(e){var n,a,o,r,i;for(i=Math.floor(1e3*Math.random()),r=this._container.find("img"),a=0,o=r.length;a<o;a++)n=r[a],n["_paste_marked_"+i]=!0;return setTimeout(function(a){return function(){var o,r,u;for(u=a._container.find("img"),o=0,r=u.length;o<r;o++)n=u[o],n["_paste_marked_"+i]||(e(n.src),t(n).remove());return a._target.trigger("_pasteCheckContainerDone")}}(this),1)},e}()}).call(this);var thepastePluginCallback;!function(t){thepastePluginCallback=function(e){function n(){var n=r.apply(this,arguments);return"mcepastebin"===t(n).attr("id")&&t(n).pastableContenteditable().on("paste",function(t){}).on("pasteImage",function(t,n){var a;if(s)return t.preventDefault(),!1;a=c.insertImage(n.dataURL,n.blob.type,e),c.options.editor.auto_upload&&c.uploadImage(a,e)}),n}function a(){r=e.dom.add,e.dom.add=n,t(e.dom.doc).on("paste",function(t){l=t.originalEvent,console.log(l.clipboardData.types),u=c.clipboardHasImage(t.originalEvent.clipboardData),s=!1})}var o,r,i,u=!1,l=null,s=!1,c=wp.media.thepaste;c.options.editor.auto_upload="false"!==localStorage.getItem("thepaste.auto_upload"),e.addCommand("cmd_thepaste",function(){c.options.editor.auto_upload=!c.options.editor.auto_upload,localStorage.setItem("thepaste.auto_upload",c.options.editor.auto_upload.toString()),o.active(c.options.editor.auto_upload)}),e.addButton("thepaste",{icon:"thepaste",tooltip:c.l10n.upload_pasted_images,cmd:"cmd_thepaste",onPostRender:function(){o=this},active:c.options.editor.auto_upload}),e.addButton("wp_img_thepaste_upload",{icon:"dashicon dashicons dashicons-upload thepaste-upload",tooltip:c.l10n.upload_image,onclick:function(){var t;t=e.selection.getNode(),c.uploadImage(t,e)}}),e.once("preinit",function(){e.wp&&e.wp._createToolbar&&(i=e.wp._createToolbar(["wp_img_alignleft","wp_img_aligncenter","wp_img_alignright","wp_img_alignnone","wp_img_thepaste_upload","wp_img_edit","wp_img_remove"]))}),e.on("wptoolbar",function(t){var n,a=!1;"IMG"!==t.element.nodeName||e.wp.isPlaceholder(t.element)||(t.toolbar=i,a=!!t.element.src.match(/^(blob|data):/),n=i.$el.find(".thepaste-upload").closest(".mce-btn"),a?n.show():n.hide())}),e.on("init",a).on("BeforePastePreProcess",function(t){return t.content.match(/&lt;svg[\s\S.]*&lt;\/svg&gt;/i)&&(t.preventDefault(),t.content=""),u&&(t.preventDefault(),t.content=""),t})},tinymce.PluginManager.add("thepaste",thepastePluginCallback)}(jQuery); 
    2 //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRoZS1wYXN0ZS1wbHVnaW4uanMiXSwibmFtZXMiOlsiJCIsIlBhc3RlIiwiY3JlYXRlSGlkZGVuRWRpdGFibGUiLCJkYXRhVVJMdG9CbG9iIiwiaXNGb2N1c2FibGUiLCJ3aW5kb3ciLCJqUXVlcnkiLCJwYXN0ZSIsInBhc3RlQ29udGFpbmVyIiwicG0iLCJjb25zb2xlIiwibG9nIiwibW91bnROb25JbnB1dGFibGUiLCJfY29udGFpbmVyIiwiZm4iLCJwYXN0YWJsZU5vbklucHV0YWJsZSIsImVsIiwiaiIsImxlbiIsInJlZiIsInRoaXMiLCJsZW5ndGgiLCJfcGFzdGFibGUiLCJpcyIsInBhc3RhYmxlVGV4dGFyZWEiLCJtb3VudFRleHRhcmVhIiwicGFzdGFibGVDb250ZW50ZWRpdGFibGUiLCJtb3VudENvbnRlbnRlZGl0YWJsZSIsImRhdGFVUkwiLCJzbGljZVNpemUiLCJiNjREYXRhIiwiYnl0ZUFycmF5IiwiYnl0ZUFycmF5cyIsImJ5dGVDaGFyYWN0ZXJzIiwiYnl0ZU51bWJlcnMiLCJjb250ZW50VHlwZSIsImkiLCJtIiwib2Zmc2V0Iiwic2xpY2UiLCJtYXRjaCIsImF0b2IiLCJBcnJheSIsImNoYXJDb2RlQXQiLCJVaW50OEFycmF5IiwicHVzaCIsIkJsb2IiLCJ0eXBlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiYXR0ciIsImNzcyIsIndpZHRoIiwiaGVpZ2h0IiwicG9zaXRpb24iLCJsZWZ0Iiwib3ZlcmZsb3ciLCJlbGVtZW50IiwiaGFzVGFiaW5kZXgiLCJmaWVsZHNldCIsImZvY3VzYWJsZUlmVmlzaWJsZSIsImltZyIsIm1hcCIsIm1hcE5hbWUiLCJub2RlTmFtZSIsInRvTG93ZXJDYXNlIiwicGFyZW50Tm9kZSIsIm5hbWUiLCJocmVmIiwidGVzdCIsImRpc2FibGVkIiwiY2xvc2VzdCIsIl90YXJnZXQiLCJhZGRDbGFzcyIsIm9uIiwiX3RoaXMiLCJldiIsImNsaXBib2FyZERhdGEiLCJmaWxlIiwiaXRlbSIsImsiLCJsZW4xIiwicmVhZGVyIiwicmVmMSIsInJlZjIiLCJyZWYzIiwidGV4dCIsImN1cnJlbnRUYXJnZXQiLCJ0YXJnZXQiLCJwcmV2ZW50RGVmYXVsdCIsIl9wYXN0ZV9ldmVudF9maXJlZCIsIm9yaWdpbmFsRXZlbnQiLCJpdGVtcyIsIkZpbGVSZWFkZXIiLCJvbmxvYWQiLCJldmVudCIsIl9oYW5kbGVJbWFnZSIsInJlc3VsdCIsInJlYWRBc0RhdGFVUkwiLCJnZXRBc0ZpbGUiLCJlcnJvciIsImdldEFzU3RyaW5nIiwic3RyaW5nIiwidHJpZ2dlciIsInByb3RvdHlwZSIsImluZGV4T2YiLCJjYWxsIiwidHlwZXMiLCJnZXREYXRhIiwic2V0VGltZW91dCIsIl9jaGVja0ltYWdlc0luQ29udGFpbmVyIiwic3JjIiwiZmlsZXMiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJub25JbnB1dGFibGUiLCJhcHBlbmRUbyIsImZvY3VzIiwicmVtb3ZlQ2xhc3MiLCJ0ZXh0YXJlYSIsImN0bERvd24iLCJEYXRhVHJhbnNmZXIiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXQiLCJpbnNlcnRCZWZvcmUiLCJrZXlDb2RlIiwiY3RybEtleSIsIm1ldGFLZXkiLCJfdGV4dGFyZWFfZm9jdXNfc3RvbGVuIiwiZGF0YSIsImNvbnRlbnQiLCJjdXJFbmQiLCJjdXJTdGFydCIsInByb3AiLCJ2YWwiLCJzZXRTZWxlY3Rpb25SYW5nZSIsImNvbnRlbnRlZGl0YWJsZSIsImxvYWRlciIsIm1lc3NhZ2UiLCJJbWFnZSIsImNyb3NzT3JpZ2luIiwiYmxvYiIsImNhbnZhcyIsImN0eCIsImdldENvbnRleHQiLCJkcmF3SW1hZ2UiLCJ0b0RhdGFVUkwiLCJvbmVycm9yIiwidXJsIiwiY2IiLCJ0aW1lc3BhbiIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImZpbmQiLCJyZW1vdmUiLCJ0aGVwYXN0ZVBsdWdpbkNhbGxiYWNrIiwiZWRpdG9yIiwiZG9tQWRkIiwib3JpZ0RvbUFkZCIsImFwcGx5IiwiYXJndW1lbnRzIiwiZSIsImltYWdlIiwicHJldmVudEltYWdlUGFzdGUiLCJ0aGVwYXN0ZSIsImluc2VydEltYWdlIiwib3B0aW9ucyIsImF1dG9fdXBsb2FkIiwidXBsb2FkSW1hZ2UiLCJzZXR1cEVkaXRvckRvbSIsImRvbSIsImFkZCIsImRvYyIsImN1cnJlbnRDbGlwYm9hcmRFdmVudCIsImNsaXBib2FyZEhhc0ltYWdlIiwicGFzdGVCdG4iLCJ0b29sYmFyIiwid3AiLCJtZWRpYSIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJhZGRDb21tYW5kIiwic2V0SXRlbSIsInRvU3RyaW5nIiwiYWN0aXZlIiwiYWRkQnV0dG9uIiwiaWNvbiIsInRvb2x0aXAiLCJsMTBuIiwidXBsb2FkX3Bhc3RlZF9pbWFnZXMiLCJjbWQiLCJvblBvc3RSZW5kZXIiLCJ1cGxvYWRfaW1hZ2UiLCJvbmNsaWNrIiwic2VsZWN0aW9uIiwiZ2V0Tm9kZSIsIm9uY2UiLCJfY3JlYXRlVG9vbGJhciIsInVwbG9hZEJ0biIsImNhblVwbG9hZCIsImlzUGxhY2Vob2xkZXIiLCIkZWwiLCJzaG93IiwiaGlkZSIsInRpbnltY2UiLCJQbHVnaW5NYW5hZ2VyIl0sIm1hcHBpbmdzIjoiQ0FRQSxXQUNFLEdBQUlBLEdBQUdDLEVBQU9DLEVBQXNCQyxFQUFlQyxDQUVuREosR0FBSUssT0FBT0MsT0FFWE4sRUFBRU8sTUFBUSxTQUFTQyxHQUNqQixHQUFJQyxFQUtKLE9BSnVCLG1CQUFaQyxVQUF1QyxPQUFaQSxTQUNwQ0EsUUFBUUMsSUFBSSwwRkFFZEYsRUFBS1IsRUFBTVcsa0JBQWtCSixHQUN0QkMsRUFBR0ksWUFHWmIsRUFBRWMsR0FBR0MscUJBQXVCLFdBQzFCLEdBQUlDLEdBQUlDLEVBQUdDLEVBQUtDLENBRWhCLEtBREFBLEVBQU1DLEtBQ0RILEVBQUksRUFBR0MsRUFBTUMsRUFBSUUsT0FBUUosRUFBSUMsRUFBS0QsSUFDckNELEVBQUtHLEVBQUlGLEdBQ0xELEVBQUdNLFdBQWF0QixFQUFFZ0IsR0FBSU8sR0FBRyw2Q0FHN0J0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QUFReUIsSUFBSWhELEtBQUssb0JBQW9CcEYsUUFBUSxZQUVwRGtJLEVBQ0pELEVBQVVJLE9BRVZKLEVBQVVLLFVBS2IvQyxFQUNFcEYsR0FBSSxPQUFRaUcsR0FDWmpHLEdBQUksd0JBQXlCLFNBQVN5RixHQVN0QyxNQVJNQSxHQUFFaEMsUUFBUTNGLE1BQU8sbUNBQ3RCMkgsRUFBRTFFLGlCQUNGMEUsRUFBRWhDLFFBQVUsSUFFUjZDLElBQ0piLEVBQUUxRSxpQkFDRjBFLEVBQUVoQyxRQUFVLElBRU5nQyxLQU1WMkMsUUFBUUMsY0FBY2xDLElBQUssV0FBWWhCLHlCQUVwQ3ZKIiwiZmlsZSI6InRoZS1wYXN0ZS1wbHVnaW4ubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjEyLjdcblxuLypcbnBhc3RlLmpzIGlzIGFuIGludGVyZmFjZSB0byByZWFkIGRhdGEgKCB0ZXh0IC8gaW1hZ2UgKSBmcm9tIGNsaXBib2FyZCBpbiBkaWZmZXJlbnQgYnJvd3NlcnMuIEl0IGFsc28gY29udGFpbnMgc2V2ZXJhbCBoYWNrcy5cblxuaHR0cHM6Ly9naXRodWIuY29tL2xheWVyc3Nzcy9wYXN0ZS5qc1xuICovXG5cbihmdW5jdGlvbigpIHtcbiAgdmFyICQsIFBhc3RlLCBjcmVhdGVIaWRkZW5FZGl0YWJsZSwgZGF0YVVSTHRvQmxvYiwgaXNGb2N1c2FibGU7XG5cbiAgJCA9IHdpbmRvdy5qUXVlcnk7XG5cbiAgJC5wYXN0ZSA9IGZ1bmN0aW9uKHBhc3RlQ29udGFpbmVyKSB7XG4gICAgdmFyIHBtO1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb25zb2xlICE9PSBudWxsKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkRFUFJFQ0FURUQ6IFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgJC5mbi5wYXN0YWJsZU5vbklucHV0YWJsZSgpIGluc3RlYWQuXCIpO1xuICAgIH1cbiAgICBwbSA9IFBhc3RlLm1vdW50Tm9uSW5wdXRhYmxlKHBhc3RlQ29udGFpbmVyKTtcbiAgICByZXR1cm4gcG0uX2NvbnRhaW5lcjtcbiAgfTtcblxuICAkLmZuLnBhc3RhYmxlTm9uSW5wdXRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGVsLCBqLCBsZW4sIHJlZjtcbiAgICByZWYgPSB0aGlzO1xuICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgZWwgPSByZWZbal07XG4gICAgICBpZiAoZWwuX3Bhc3RhYmxlIHx8ICQoZWwpLmlzKCd0ZXh0YXJlYSwgaW5wdXQ6dGV4dCwgW2NvbnRlbnRlZGl0YWJsZV0nKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIFBhc3RlLm1vdW50Tm9uSW5wdXRhYmxlKGVsKTtcbiAgICAgIGVsLl9wYXN0YWJsZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gICQuZm4ucGFzdGFibGVUZXh0YXJlYSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBlbCwgaiwgbGVuLCByZWY7XG4gICAgcmVmID0gdGhpcztcbiAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGVsID0gcmVmW2pdO1xuICAgICAgaWYgKGVsLl9wYXN0YWJsZSB8fCAkKGVsKS5pcygnOm5vdCh0ZXh0YXJlYSwgaW5wdXQ6dGV4dCknKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIFBhc3RlLm1vdW50VGV4dGFyZWEoZWwpO1xuICAgICAgZWwuX3Bhc3RhYmxlID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgJC5mbi5wYXN0YWJsZUNvbnRlbnRlZGl0YWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBlbCwgaiwgbGVuLCByZWY7XG4gICAgcmVmID0gdGhpcztcbiAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGVsID0gcmVmW2pdO1xuICAgICAgaWYgKGVsLl9wYXN0YWJsZSB8fCAkKGVsKS5pcygnOm5vdChbY29udGVudGVkaXRhYmxlXSknKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIFBhc3RlLm1vdW50Q29udGVudGVkaXRhYmxlKGVsKTtcbiAgICAgIGVsLl9wYXN0YWJsZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIGRhdGFVUkx0b0Jsb2IgPSBmdW5jdGlvbihkYXRhVVJMLCBzbGljZVNpemUpIHtcbiAgICB2YXIgYjY0RGF0YSwgYnl0ZUFycmF5LCBieXRlQXJyYXlzLCBieXRlQ2hhcmFjdGVycywgYnl0ZU51bWJlcnMsIGNvbnRlbnRUeXBlLCBpLCBtLCBvZmZzZXQsIHJlZiwgc2xpY2U7XG4gICAgaWYgKHNsaWNlU2l6ZSA9PSBudWxsKSB7XG4gICAgICBzbGljZVNpemUgPSA1MTI7XG4gICAgfVxuICAgIGlmICghKG0gPSBkYXRhVVJMLm1hdGNoKC9eZGF0YVxcOihbXlxcO10rKVxcO2Jhc2U2NFxcLCguKykkLykpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmVmID0gbSwgbSA9IHJlZlswXSwgY29udGVudFR5cGUgPSByZWZbMV0sIGI2NERhdGEgPSByZWZbMl07XG4gICAgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGI2NERhdGEpO1xuICAgIGJ5dGVBcnJheXMgPSBbXTtcbiAgICBvZmZzZXQgPSAwO1xuICAgIHdoaWxlIChvZmZzZXQgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGgpIHtcbiAgICAgIHNsaWNlID0gYnl0ZUNoYXJhY3RlcnMuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBzbGljZVNpemUpO1xuICAgICAgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoc2xpY2UubGVuZ3RoKTtcbiAgICAgIGkgPSAwO1xuICAgICAgd2hpbGUgKGkgPCBzbGljZS5sZW5ndGgpIHtcbiAgICAgICAgYnl0ZU51bWJlcnNbaV0gPSBzbGljZS5jaGFyQ29kZUF0KGkpO1xuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgICBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG4gICAgICBieXRlQXJyYXlzLnB1c2goYnl0ZUFycmF5KTtcbiAgICAgIG9mZnNldCArPSBzbGljZVNpemU7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQmxvYihieXRlQXJyYXlzLCB7XG4gICAgICB0eXBlOiBjb250ZW50VHlwZVxuICAgIH0pO1xuICB9O1xuXG4gIGNyZWF0ZUhpZGRlbkVkaXRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpLmF0dHIoJ2NvbnRlbnRlZGl0YWJsZScsIHRydWUpLmF0dHIoJ2FyaWEtaGlkZGVuJywgdHJ1ZSkuYXR0cigndGFiaW5kZXgnLCAtMSkuY3NzKHtcbiAgICAgIHdpZHRoOiAxLFxuICAgICAgaGVpZ2h0OiAxLFxuICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICBsZWZ0OiAtMTAwLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nXG4gICAgfSk7XG4gIH07XG5cbiAgaXNGb2N1c2FibGUgPSBmdW5jdGlvbihlbGVtZW50LCBoYXNUYWJpbmRleCkge1xuICAgIHZhciBmaWVsZHNldCwgZm9jdXNhYmxlSWZWaXNpYmxlLCBpbWcsIG1hcCwgbWFwTmFtZSwgbm9kZU5hbWU7XG4gICAgbWFwID0gdm9pZCAwO1xuICAgIG1hcE5hbWUgPSB2b2lkIDA7XG4gICAgaW1nID0gdm9pZCAwO1xuICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9IHZvaWQgMDtcbiAgICBmaWVsZHNldCA9IHZvaWQgMDtcbiAgICBub2RlTmFtZSA9IGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoJ2FyZWEnID09PSBub2RlTmFtZSkge1xuICAgICAgbWFwID0gZWxlbWVudC5wYXJlbnROb2RlO1xuICAgICAgbWFwTmFtZSA9IG1hcC5uYW1lO1xuICAgICAgaWYgKCFlbGVtZW50LmhyZWYgfHwgIW1hcE5hbWUgfHwgbWFwLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdtYXAnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGltZyA9ICQoJ2ltZ1t1c2VtYXA9XFwnIycgKyBtYXBOYW1lICsgJ1xcJ10nKTtcbiAgICAgIHJldHVybiBpbWcubGVuZ3RoID4gMCAmJiBpbWcuaXMoJzp2aXNpYmxlJyk7XG4gICAgfVxuICAgIGlmICgvXihpbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9ufG9iamVjdCkkLy50ZXN0KG5vZGVOYW1lKSkge1xuICAgICAgZm9jdXNhYmxlSWZWaXNpYmxlID0gIWVsZW1lbnQuZGlzYWJsZWQ7XG4gICAgICBpZiAoZm9jdXNhYmxlSWZWaXNpYmxlKSB7XG4gICAgICAgIGZpZWxkc2V0ID0gJChlbGVtZW50KS5jbG9zZXN0KCdmaWVsZHNldCcpWzBdO1xuICAgICAgICBpZiAoZmllbGRzZXQpIHtcbiAgICAgICAgICBmb2N1c2FibGVJZlZpc2libGUgPSAhZmllbGRzZXQuZGlzYWJsZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCdhJyA9PT0gbm9kZU5hbWUpIHtcbiAgICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9IGVsZW1lbnQuaHJlZiB8fCBoYXNUYWJpbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9jdXNhYmxlSWZWaXNpYmxlID0gaGFzVGFiaW5kZXg7XG4gICAgfVxuICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9IGZvY3VzYWJsZUlmVmlzaWJsZSB8fCAkKGVsZW1lbnQpLmlzKCdbY29udGVudGVkaXRhYmxlXScpO1xuICAgIHJldHVybiBmb2N1c2FibGVJZlZpc2libGUgJiYgJChlbGVtZW50KS5pcygnOnZpc2libGUnKTtcbiAgfTtcblxuICBQYXN0ZSA9IChmdW5jdGlvbigpIHtcbiAgICBQYXN0ZS5wcm90b3R5cGUuX3RhcmdldCA9IG51bGw7XG5cbiAgICBQYXN0ZS5wcm90b3R5cGUuX2NvbnRhaW5lciA9IG51bGw7XG5cbiAgICBQYXN0ZS5tb3VudE5vbklucHV0YWJsZSA9IGZ1bmN0aW9uKG5vbklucHV0YWJsZSkge1xuICAgICAgdmFyIHBhc3RlO1xuICAgICAgcGFzdGUgPSBuZXcgUGFzdGUoY3JlYXRlSGlkZGVuRWRpdGFibGUoKS5hcHBlbmRUbyhub25JbnB1dGFibGUpLCBub25JbnB1dGFibGUpO1xuICAgICAgJChub25JbnB1dGFibGUpLm9uKCdjbGljaycsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXYpIHtcbiAgICAgICAgICBpZiAoIWlzRm9jdXNhYmxlKGV2LnRhcmdldCwgZmFsc2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFzdGUuX2NvbnRhaW5lci5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHBhc3RlLl9jb250YWluZXIub24oJ2ZvY3VzJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gJChub25JbnB1dGFibGUpLmFkZENsYXNzKCdwYXN0YWJsZS1mb2N1cycpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgcmV0dXJuIHBhc3RlLl9jb250YWluZXIub24oJ2JsdXInLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiAkKG5vbklucHV0YWJsZSkucmVtb3ZlQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgfTtcblxuICAgIFBhc3RlLm1vdW50VGV4dGFyZWEgPSBmdW5jdGlvbih0ZXh0YXJlYSkge1xuICAgICAgdmFyIGN0bERvd24sIHBhc3RlLCByZWYsIHJlZjE7XG4gICAgICBpZiAoKHR5cGVvZiBEYXRhVHJhbnNmZXIgIT09IFwidW5kZWZpbmVkXCIgJiYgRGF0YVRyYW5zZmVyICE9PSBudWxsID8gRGF0YVRyYW5zZmVyLnByb3RvdHlwZSA6IHZvaWQgMCkgJiYgKChyZWYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKSAhPSBudWxsID8gKHJlZjEgPSByZWYuY2FsbChPYmplY3QsIERhdGFUcmFuc2Zlci5wcm90b3R5cGUsICdpdGVtcycpKSAhPSBudWxsID8gcmVmMS5nZXQgOiB2b2lkIDAgOiB2b2lkIDApKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vdW50Q29udGVudGVkaXRhYmxlKHRleHRhcmVhKTtcbiAgICAgIH1cbiAgICAgIHBhc3RlID0gbmV3IFBhc3RlKGNyZWF0ZUhpZGRlbkVkaXRhYmxlKCkuaW5zZXJ0QmVmb3JlKHRleHRhcmVhKSwgdGV4dGFyZWEpO1xuICAgICAgY3RsRG93biA9IGZhbHNlO1xuICAgICAgJCh0ZXh0YXJlYSkub24oJ2tleXVwJywgZnVuY3Rpb24oZXYpIHtcbiAgICAgICAgdmFyIHJlZjI7XG4gICAgICAgIGlmICgocmVmMiA9IGV2LmtleUNvZGUpID09PSAxNyB8fCByZWYyID09PSAyMjQpIHtcbiAgICAgICAgICBjdGxEb3duID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcbiAgICAgICQodGV4dGFyZWEpLm9uKCdrZXlkb3duJywgZnVuY3Rpb24oZXYpIHtcbiAgICAgICAgdmFyIHJlZjI7XG4gICAgICAgIGlmICgocmVmMiA9IGV2LmtleUNvZGUpID09PSAxNyB8fCByZWYyID09PSAyMjQpIHtcbiAgICAgICAgICBjdGxEb3duID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGV2LmN0cmxLZXkgIT0gbnVsbCkgJiYgKGV2Lm1ldGFLZXkgIT0gbnVsbCkpIHtcbiAgICAgICAgICBjdGxEb3duID0gZXYuY3RybEtleSB8fCBldi5tZXRhS2V5O1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdGxEb3duICYmIGV2LmtleUNvZGUgPT09IDg2KSB7XG4gICAgICAgICAgcGFzdGUuX3RleHRhcmVhX2ZvY3VzX3N0b2xlbiA9IHRydWU7XG4gICAgICAgICAgcGFzdGUuX2NvbnRhaW5lci5mb2N1cygpO1xuICAgICAgICAgIHBhc3RlLl9wYXN0ZV9ldmVudF9maXJlZCA9IGZhbHNlO1xuICAgICAgICAgIHNldFRpbWVvdXQoKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIGlmICghcGFzdGUuX3Bhc3RlX2V2ZW50X2ZpcmVkKSB7XG4gICAgICAgICAgICAgICAgJCh0ZXh0YXJlYSkuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFzdGUuX3RleHRhcmVhX2ZvY3VzX3N0b2xlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pKHRoaXMpLCAxKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pO1xuICAgICAgJCh0ZXh0YXJlYSkub24oJ3Bhc3RlJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHt9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgJCh0ZXh0YXJlYSkub24oJ2ZvY3VzJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBpZiAoIXBhc3RlLl90ZXh0YXJlYV9mb2N1c19zdG9sZW4pIHtcbiAgICAgICAgICAgIHJldHVybiAkKHRleHRhcmVhKS5hZGRDbGFzcygncGFzdGFibGUtZm9jdXMnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICAkKHRleHRhcmVhKS5vbignYmx1cicsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKCFwYXN0ZS5fdGV4dGFyZWFfZm9jdXNfc3RvbGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gJCh0ZXh0YXJlYSkucmVtb3ZlQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgJChwYXN0ZS5fdGFyZ2V0KS5vbignX3Bhc3RlQ2hlY2tDb250YWluZXJEb25lJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAkKHRleHRhcmVhKS5mb2N1cygpO1xuICAgICAgICAgIHJldHVybiBwYXN0ZS5fdGV4dGFyZWFfZm9jdXNfc3RvbGVuID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICByZXR1cm4gJChwYXN0ZS5fdGFyZ2V0KS5vbigncGFzdGVUZXh0JywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihldiwgZGF0YSkge1xuICAgICAgICAgIHZhciBjb250ZW50LCBjdXJFbmQsIGN1clN0YXJ0O1xuICAgICAgICAgIGN1clN0YXJ0ID0gJCh0ZXh0YXJlYSkucHJvcCgnc2VsZWN0aW9uU3RhcnQnKTtcbiAgICAgICAgICBjdXJFbmQgPSAkKHRleHRhcmVhKS5wcm9wKCdzZWxlY3Rpb25FbmQnKTtcbiAgICAgICAgICBjb250ZW50ID0gJCh0ZXh0YXJlYSkudmFsKCk7XG4gICAgICAgICAgJCh0ZXh0YXJlYSkudmFsKFwiXCIgKyBjb250ZW50LnNsaWNlKDAsIGN1clN0YXJ0KSArIGRhdGEudGV4dCArIGNvbnRlbnQuc2xpY2UoY3VyRW5kKSk7XG4gICAgICAgICAgJCh0ZXh0YXJlYSlbMF0uc2V0U2VsZWN0aW9uUmFuZ2UoY3VyU3RhcnQgKyBkYXRhLnRleHQubGVuZ3RoLCBjdXJTdGFydCArIGRhdGEudGV4dC5sZW5ndGgpO1xuICAgICAgICAgIHJldHVybiAkKHRleHRhcmVhKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICB9O1xuXG4gICAgUGFzdGUubW91bnRDb250ZW50ZWRpdGFibGUgPSBmdW5jdGlvbihjb250ZW50ZWRpdGFibGUpIHtcbiAgICAgIHZhciBwYXN0ZTtcbiAgICAgIHBhc3RlID0gbmV3IFBhc3RlKGNvbnRlbnRlZGl0YWJsZSwgY29udGVudGVkaXRhYmxlKTtcbiAgICAgICQoY29udGVudGVkaXRhYmxlKS5vbignZm9jdXMnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiAkKGNvbnRlbnRlZGl0YWJsZSkuYWRkQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICByZXR1cm4gJChjb250ZW50ZWRpdGFibGUpLm9uKCdibHVyJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gJChjb250ZW50ZWRpdGFibGUpLnJlbW92ZUNsYXNzKCdwYXN0YWJsZS1mb2N1cycpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBQYXN0ZShfY29udGFpbmVyLCBfdGFyZ2V0KSB7XG4gICAgICB0aGlzLl9jb250YWluZXIgPSBfY29udGFpbmVyO1xuICAgICAgdGhpcy5fdGFyZ2V0ID0gX3RhcmdldDtcbiAgICAgIHRoaXMuX2NvbnRhaW5lciA9ICQodGhpcy5fY29udGFpbmVyKTtcbiAgICAgIHRoaXMuX3RhcmdldCA9ICQodGhpcy5fdGFyZ2V0KS5hZGRDbGFzcygncGFzdGFibGUnKTtcbiAgICAgIHRoaXMuX2NvbnRhaW5lci5vbigncGFzdGUnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2KSB7XG4gICAgICAgICAgdmFyIGNsaXBib2FyZERhdGEsIGZpbGUsIGl0ZW0sIGosIGssIGxlbiwgbGVuMSwgcmVhZGVyLCByZWYsIHJlZjEsIHJlZjIsIHJlZjMsIHRleHQ7XG4gICAgICAgICAgaWYgKGV2LmN1cnJlbnRUYXJnZXQgIT09IGV2LnRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIF90aGlzLl9wYXN0ZV9ldmVudF9maXJlZCA9IHRydWU7XG4gICAgICAgICAgaWYgKCgocmVmID0gZXYub3JpZ2luYWxFdmVudCkgIT0gbnVsbCA/IHJlZi5jbGlwYm9hcmREYXRhIDogdm9pZCAwKSAhPSBudWxsKSB7XG4gICAgICAgICAgICBjbGlwYm9hcmREYXRhID0gZXYub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhO1xuICAgICAgICAgICAgaWYgKGNsaXBib2FyZERhdGEuaXRlbXMpIHtcbiAgICAgICAgICAgICAgcmVmMSA9IGNsaXBib2FyZERhdGEuaXRlbXM7XG4gICAgICAgICAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZjEubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpdGVtID0gcmVmMVtqXTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlLm1hdGNoKC9eaW1hZ2VcXC8vKSkge1xuICAgICAgICAgICAgICAgICAgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuX2hhbmRsZUltYWdlKGV2ZW50LnRhcmdldC5yZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGl0ZW0uZ2V0QXNGaWxlKCkpO1xuICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICd0ZXh0L3BsYWluJykge1xuICAgICAgICAgICAgICAgICAgaXRlbS5nZXRBc1N0cmluZyhmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVUZXh0Jywge1xuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHN0cmluZ1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKC0xICE9PSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGNsaXBib2FyZERhdGEudHlwZXMsICd0ZXh0L3BsYWluJykpIHtcbiAgICAgICAgICAgICAgICB0ZXh0ID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCdUZXh0Jyk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlVGV4dCcsIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgMSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgX3RoaXMuX2NoZWNrSW1hZ2VzSW5Db250YWluZXIoZnVuY3Rpb24oc3JjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLl9oYW5kbGVJbWFnZShzcmMpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNsaXBib2FyZERhdGEgPSB3aW5kb3cuY2xpcGJvYXJkRGF0YSkge1xuICAgICAgICAgICAgaWYgKChyZWYyID0gKHRleHQgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoJ1RleHQnKSkpICE9IG51bGwgPyByZWYyLmxlbmd0aCA6IHZvaWQgMCkge1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVUZXh0Jywge1xuICAgICAgICAgICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ19wYXN0ZUNoZWNrQ29udGFpbmVyRG9uZScpO1xuICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlZjMgPSBjbGlwYm9hcmREYXRhLmZpbGVzO1xuICAgICAgICAgICAgICBmb3IgKGsgPSAwLCBsZW4xID0gcmVmMy5sZW5ndGg7IGsgPCBsZW4xOyBrKyspIHtcbiAgICAgICAgICAgICAgICBmaWxlID0gcmVmM1trXTtcbiAgICAgICAgICAgICAgICBfdGhpcy5faGFuZGxlSW1hZ2UoVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgX3RoaXMuX2NoZWNrSW1hZ2VzSW5Db250YWluZXIoZnVuY3Rpb24oc3JjKSB7fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgIH1cblxuICAgIFBhc3RlLnByb3RvdHlwZS5faGFuZGxlSW1hZ2UgPSBmdW5jdGlvbihzcmMpIHtcbiAgICAgIHZhciBsb2FkZXI7XG4gICAgICBpZiAoc3JjLm1hdGNoKC9ed2Via2l0XFwtZmFrZVxcLXVybFxcOlxcL1xcLy8pKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVJbWFnZUVycm9yJywge1xuICAgICAgICAgIG1lc3NhZ2U6IFwiWW91IGFyZSB0cnlpbmcgdG8gcGFzdGUgYW4gaW1hZ2UgaW4gU2FmYXJpLCBob3dldmVyIHdlIGFyZSB1bmFibGUgdG8gcmV0aWV2ZSBpdHMgZGF0YS5cIlxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZUltYWdlU3RhcnQnKTtcbiAgICAgIGxvYWRlciA9IG5ldyBJbWFnZSgpO1xuICAgICAgbG9hZGVyLmNyb3NzT3JpZ2luID0gXCJhbm9ueW1vdXNcIjtcbiAgICAgIGxvYWRlci5vbmxvYWQgPSAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBibG9iLCBjYW52YXMsIGN0eCwgZGF0YVVSTDtcbiAgICAgICAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgICBjYW52YXMud2lkdGggPSBsb2FkZXIud2lkdGg7XG4gICAgICAgICAgY2FudmFzLmhlaWdodCA9IGxvYWRlci5oZWlnaHQ7XG4gICAgICAgICAgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShsb2FkZXIsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG4gICAgICAgICAgZGF0YVVSTCA9IG51bGw7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGRhdGFVUkwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICAgICAgICAgIGJsb2IgPSBkYXRhVVJMdG9CbG9iKGRhdGFVUkwpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgICAgIGlmIChkYXRhVVJMKSB7XG4gICAgICAgICAgICBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlSW1hZ2UnLCB7XG4gICAgICAgICAgICAgIGJsb2I6IGJsb2IsXG4gICAgICAgICAgICAgIGRhdGFVUkw6IGRhdGFVUkwsXG4gICAgICAgICAgICAgIHdpZHRoOiBsb2FkZXIud2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodDogbG9hZGVyLmhlaWdodFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlSW1hZ2VFbmQnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpO1xuICAgICAgbG9hZGVyLm9uZXJyb3IgPSAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVJbWFnZUVycm9yJywge1xuICAgICAgICAgICAgbWVzc2FnZTogXCJGYWlsZWQgdG8gZ2V0IGltYWdlIGZyb206IFwiICsgc3JjLFxuICAgICAgICAgICAgdXJsOiBzcmNcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZUltYWdlRW5kJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKTtcbiAgICAgIHJldHVybiBsb2FkZXIuc3JjID0gc3JjO1xuICAgIH07XG5cbiAgICBQYXN0ZS5wcm90b3R5cGUuX2NoZWNrSW1hZ2VzSW5Db250YWluZXIgPSBmdW5jdGlvbihjYikge1xuICAgICAgdmFyIGltZywgaiwgbGVuLCByZWYsIHRpbWVzcGFuO1xuICAgICAgdGltZXNwYW4gPSBNYXRoLmZsb29yKDEwMDAgKiBNYXRoLnJhbmRvbSgpKTtcbiAgICAgIHJlZiA9IHRoaXMuX2NvbnRhaW5lci5maW5kKCdpbWcnKTtcbiAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgICBpbWcgPSByZWZbal07XG4gICAgICAgIGltZ1tcIl9wYXN0ZV9tYXJrZWRfXCIgKyB0aW1lc3Bhbl0gPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgaywgbGVuMSwgcmVmMTtcbiAgICAgICAgICByZWYxID0gX3RoaXMuX2NvbnRhaW5lci5maW5kKCdpbWcnKTtcbiAgICAgICAgICBmb3IgKGsgPSAwLCBsZW4xID0gcmVmMS5sZW5ndGg7IGsgPCBsZW4xOyBrKyspIHtcbiAgICAgICAgICAgIGltZyA9IHJlZjFba107XG4gICAgICAgICAgICBpZiAoIWltZ1tcIl9wYXN0ZV9tYXJrZWRfXCIgKyB0aW1lc3Bhbl0pIHtcbiAgICAgICAgICAgICAgY2IoaW1nLnNyYyk7XG4gICAgICAgICAgICAgICQoaW1nKS5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIF90aGlzLl90YXJnZXQudHJpZ2dlcignX3Bhc3RlQ2hlY2tDb250YWluZXJEb25lJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSwgMSk7XG4gICAgfTtcblxuICAgIHJldHVybiBQYXN0ZTtcblxuICB9KSgpO1xuXG59KS5jYWxsKHRoaXMpO1xuXG52YXIgdGhlcGFzdGVQbHVnaW5DYWxsYmFjaztcblxuKGZ1bmN0aW9uKCQpe1xuXHR0aGVwYXN0ZVBsdWdpbkNhbGxiYWNrID0gZnVuY3Rpb24oIGVkaXRvciApIHtcblx0XHR2YXIgcGFzdGVCdG4sXG5cdFx0XHRvcmlnRG9tQWRkLFxuXHRcdFx0Y2xpcGJvYXJkSGFzSW1hZ2UgPSBmYWxzZSxcblx0XHRcdGN1cnJlbnRDbGlwYm9hcmRFdmVudCA9IG51bGwsXG5cdFx0XHRwcmV2ZW50SW1hZ2VQYXN0ZSA9IGZhbHNlLFxuXHRcdFx0dGhlcGFzdGUgPSB3cC5tZWRpYS50aGVwYXN0ZSxcblx0XHRcdHRvb2xiYXI7XG5cblx0XHR0aGVwYXN0ZS5vcHRpb25zLmVkaXRvci5hdXRvX3VwbG9hZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCAndGhlcGFzdGUuYXV0b191cGxvYWQnICkgIT09ICdmYWxzZSc7XG5cdFx0Ly8gZGVmYXVsdCBvblxuXG5cdFx0ZnVuY3Rpb24gZG9tQWRkKCkge1xuXHRcdFx0dmFyIHJlc3VsdCA9IG9yaWdEb21BZGQuYXBwbHkodGhpcyxhcmd1bWVudHMpO1xuXHRcdFx0aWYgKCAnbWNlcGFzdGViaW4nID09PSAkKHJlc3VsdCkuYXR0cignaWQnKSApIHtcblx0XHRcdFx0JChyZXN1bHQpXG5cdFx0XHRcdFx0LnBhc3RhYmxlQ29udGVudGVkaXRhYmxlKClcblx0XHRcdFx0XHQub24oJ3Bhc3RlJyxmdW5jdGlvbihlKXtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5vbigncGFzdGVJbWFnZScsZnVuY3Rpb24oIGUsIGRhdGEgKSB7XG5cdFx0XHRcdFx0XHR2YXIgaW1hZ2U7XG5cdFx0XHRcdFx0XHRpZiAoIHByZXZlbnRJbWFnZVBhc3RlICkge1xuXHRcdFx0XHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGltYWdlID0gdGhlcGFzdGUuaW5zZXJ0SW1hZ2UoIGRhdGEuZGF0YVVSTCwgZGF0YS5ibG9iLnR5cGUsIGVkaXRvciApO1xuXHRcdFx0XHRcdFx0aWYgKCB0aGVwYXN0ZS5vcHRpb25zLmVkaXRvci5hdXRvX3VwbG9hZCApIHtcblx0XHRcdFx0XHRcdFx0dGhlcGFzdGUudXBsb2FkSW1hZ2UoIGltYWdlLCBlZGl0b3IgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gc2V0dXBFZGl0b3JEb20oKSB7XG5cblx0XHRcdG9yaWdEb21BZGQgPSBlZGl0b3IuZG9tLmFkZDtcblxuXHRcdFx0ZWRpdG9yLmRvbS5hZGQgPSBkb21BZGQ7XG5cblx0XHRcdCQoZWRpdG9yLmRvbS5kb2MpLm9uKCAncGFzdGUnLCBmdW5jdGlvbihlKXtcblx0XHRcdFx0Y3VycmVudENsaXBib2FyZEV2ZW50ID0gZS5vcmlnaW5hbEV2ZW50O1xuXHRcdFx0XHRjb25zb2xlLmxvZyhjdXJyZW50Q2xpcGJvYXJkRXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcyk7XG5cdFx0XHRcdGNsaXBib2FyZEhhc0ltYWdlID0gdGhlcGFzdGUuY2xpcGJvYXJkSGFzSW1hZ2UoZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEpO1xuXHRcdFx0XHRwcmV2ZW50SW1hZ2VQYXN0ZSA9IGZhbHNlO1xuXHRcdFx0fSApO1xuXHRcdH1cblx0XHRlZGl0b3IuYWRkQ29tbWFuZCggJ2NtZF90aGVwYXN0ZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0dGhlcGFzdGUub3B0aW9ucy5lZGl0b3IuYXV0b191cGxvYWQgPSAhIHRoZXBhc3RlLm9wdGlvbnMuZWRpdG9yLmF1dG9fdXBsb2FkO1xuXHRcdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oICd0aGVwYXN0ZS5hdXRvX3VwbG9hZCcsIHRoZXBhc3RlLm9wdGlvbnMuZWRpdG9yLmF1dG9fdXBsb2FkLnRvU3RyaW5nKCkgKTtcblx0XHRcdHBhc3RlQnRuLmFjdGl2ZSggdGhlcGFzdGUub3B0aW9ucy5lZGl0b3IuYXV0b191cGxvYWQgKTtcblx0XHR9KTtcblxuXG5cdFx0ZWRpdG9yLmFkZEJ1dHRvbigndGhlcGFzdGUnLCB7XG5cdFx0XHRpY29uOiAndGhlcGFzdGUnLFxuXHRcdFx0dG9vbHRpcDogdGhlcGFzdGUubDEwbi51cGxvYWRfcGFzdGVkX2ltYWdlcyxcblx0XHRcdGNtZCA6ICdjbWRfdGhlcGFzdGUnLFxuXHRcdFx0b25Qb3N0UmVuZGVyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cGFzdGVCdG4gPSB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdGFjdGl2ZTp0aGVwYXN0ZS5vcHRpb25zLmVkaXRvci5hdXRvX3VwbG9hZFxuXHRcdH0pO1xuXG5cdFx0ZWRpdG9yLmFkZEJ1dHRvbignd3BfaW1nX3RoZXBhc3RlX3VwbG9hZCcsIHtcblx0XHRcdGljb246ICdkYXNoaWNvbiBkYXNoaWNvbnMgZGFzaGljb25zLXVwbG9hZCB0aGVwYXN0ZS11cGxvYWQnLFxuXHRcdFx0dG9vbHRpcDogdGhlcGFzdGUubDEwbi51cGxvYWRfaW1hZ2UsXG5cdFx0XHRvbmNsaWNrOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0Ly8gd3JhcCBpbWcsIHVwbG9hZFxuXHRcdFx0XHR2YXIgaW1hZ2U7XG5cdFx0XHRcdGltYWdlID0gZWRpdG9yLnNlbGVjdGlvbi5nZXROb2RlKCk7XG4vL2NvbnNvbGUubG9nKGltYWdlKTtcblx0XHRcdFx0dGhlcGFzdGUudXBsb2FkSW1hZ2UoIGltYWdlLCBlZGl0b3IgKTtcblx0XHRcdH1cdFx0XHRcblx0XHR9KTtcblxuXHRcdGVkaXRvci5vbmNlKCAncHJlaW5pdCcsIGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCBlZGl0b3Iud3AgJiYgZWRpdG9yLndwLl9jcmVhdGVUb29sYmFyICkge1xuXHRcdFx0XHR0b29sYmFyID0gZWRpdG9yLndwLl9jcmVhdGVUb29sYmFyKCBbXG5cdFx0XHRcdFx0J3dwX2ltZ19hbGlnbmxlZnQnLFxuXHRcdFx0XHRcdCd3cF9pbWdfYWxpZ25jZW50ZXInLFxuXHRcdFx0XHRcdCd3cF9pbWdfYWxpZ25yaWdodCcsXG5cdFx0XHRcdFx0J3dwX2ltZ19hbGlnbm5vbmUnLFxuXHRcdFx0XHRcdCd3cF9pbWdfdGhlcGFzdGVfdXBsb2FkJyxcblx0XHRcdFx0XHQnd3BfaW1nX2VkaXQnLFxuXHRcdFx0XHRcdCd3cF9pbWdfcmVtb3ZlJyxcblx0XHRcdFx0XSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdGVkaXRvci5vbiggJ3dwdG9vbGJhcicsIGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciBjYW5VcGxvYWQgPSBmYWxzZSxcblx0XHRcdFx0dXBsb2FkQnRuO1xuXHRcdFx0aWYgKCBldmVudC5lbGVtZW50Lm5vZGVOYW1lID09PSAnSU1HJyAmJiAhIGVkaXRvci53cC5pc1BsYWNlaG9sZGVyKCBldmVudC5lbGVtZW50ICkgKSB7XG5cdFx0XHRcdGV2ZW50LnRvb2xiYXIgPSB0b29sYmFyO1xuXHRcdFx0XHRjYW5VcGxvYWQgPSAhISBldmVudC5lbGVtZW50LnNyYy5tYXRjaCggL14oYmxvYnxkYXRhKTovICk7XG5cdFx0XHRcdHVwbG9hZEJ0biA9IHRvb2xiYXIuJGVsLmZpbmQoJy50aGVwYXN0ZS11cGxvYWQnKS5jbG9zZXN0KCcubWNlLWJ0bicpO1xuXG5cdFx0XHRcdGlmICggY2FuVXBsb2FkICkge1xuXHRcdFx0XHRcdHVwbG9hZEJ0bi5zaG93KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dXBsb2FkQnRuLmhpZGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdGVkaXRvclxuXHRcdFx0Lm9uKCAnaW5pdCcsIHNldHVwRWRpdG9yRG9tIClcblx0XHRcdC5vbiggJ0JlZm9yZVBhc3RlUHJlUHJvY2VzcycsIGZ1bmN0aW9uKGUpe1xuXHRcdFx0XHRpZiAoICBlLmNvbnRlbnQubWF0Y2goIC8mbHQ7c3ZnW1xcc1xcUy5dKiZsdDtcXC9zdmcmZ3Q7L2kgKSApIHtcblx0XHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0ZS5jb250ZW50ID0gJyc7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBjbGlwYm9hcmRIYXNJbWFnZSApIHtcblx0XHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0ZS5jb250ZW50ID0gJyc7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGU7XG5cblx0XHRcdH0gKTtcblxuXHR9O1xuXG5cdHRpbnltY2UuUGx1Z2luTWFuYWdlci5hZGQoICd0aGVwYXN0ZScsIHRoZXBhc3RlUGx1Z2luQ2FsbGJhY2sgKTtcblxufSApKGpRdWVyeSk7XG5cbiJdfQ== 
     1(function(){var t,e,n,a,o;t=window.jQuery,t.paste=function(t){var n;return"undefined"!=typeof console&&null!==console&&console.log("DEPRECATED: This method is deprecated. Please use $.fn.pastableNonInputable() instead."),n=e.mountNonInputable(t),n._container},t.fn.pastableNonInputable=function(){var n,a,o,r;for(r=this,a=0,o=r.length;a<o;a++)n=r[a],n._pastable||t(n).is("textarea, input:text, [contenteditable]")||(e.mountNonInputable(n),n._pastable=!0);return this},t.fn.pastableTextarea=function(){var n,a,o,r;for(r=this,a=0,o=r.length;a<o;a++)n=r[a],n._pastable||t(n).is(":not(textarea, input:text)")||(e.mountTextarea(n),n._pastable=!0);return this},t.fn.pastableContenteditable=function(){var n,a,o,r;for(r=this,a=0,o=r.length;a<o;a++)n=r[a],n._pastable||t(n).is(":not([contenteditable])")||(e.mountContenteditable(n),n._pastable=!0);return this},a=function(t,e){var n,a,o,r,i,u,s,l,c,d,p;if(null==e&&(e=512),!(l=t.match(/^data\:([^\;]+)\;base64\,(.+)$/)))return null;for(d=l,l=d[0],u=d[1],n=d[2],r=atob(n),o=[],c=0;c<r.length;){for(p=r.slice(c,c+e),i=new Array(p.length),s=0;s<p.length;)i[s]=p.charCodeAt(s),s++;a=new Uint8Array(i),o.push(a),c+=e}return new Blob(o,{type:u})},n=function(){return t(document.createElement("div")).attr("contenteditable",!0).attr("aria-hidden",!0).attr("tabindex",-1).css({width:1,height:1,position:"fixed",left:-100,overflow:"hidden"})},o=function(e,n){var a,o,r,i,u,s;return i=void 0,u=void 0,r=void 0,o=void 0,a=void 0,"area"===(s=e.nodeName.toLowerCase())?(i=e.parentNode,u=i.name,!(!e.href||!u||"map"!==i.nodeName.toLowerCase())&&(r=t("img[usemap='#"+u+"']"),r.length>0&&r.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(s)?(o=!e.disabled)&&(a=t(e).closest("fieldset")[0])&&(o=!a.disabled):o="a"===s?e.href||n:n,(o=o||t(e).is("[contenteditable]"))&&t(e).is(":visible"))},e=function(){function e(e,n){this._container=e,this._target=n,this._container=t(this._container),this._target=t(this._target).addClass("pastable"),this._container.on("paste",function(t){return function(e){var n,a,o,r,i,u,s,l,c,d,p,g,f;if(e.currentTarget!==e.target)return e.preventDefault();if(t._paste_event_fired=!0,null!=(null!=(c=e.originalEvent)?c.clipboardData:void 0))if(n=e.originalEvent.clipboardData,n.items)for(d=n.items,r=0,u=d.length;r<u;r++){if(o=d[r],o.type.match(/^image\//)){l=new FileReader,l.onload=function(e){return t._handleImage(e.target.result)};try{l.readAsDataURL(o.getAsFile())}catch(t){}e.preventDefault();break}"text/plain"===o.type&&o.getAsString(function(e){return t._target.trigger("pasteText",{text:e})})}else-1!==Array.prototype.indexOf.call(n.types,"text/plain")&&(f=n.getData("Text"),setTimeout(function(){return t._target.trigger("pasteText",{text:f})},1)),t._checkImagesInContainer(function(e){return t._handleImage(e)});if(n=window.clipboardData)if(null!=(p=f=n.getData("Text"))?p.length:void 0)setTimeout(function(){return t._target.trigger("pasteText",{text:f}),t._target.trigger("_pasteCheckContainerDone")},1);else{for(g=n.files,i=0,s=g.length;i<s;i++)a=g[i],t._handleImage(URL.createObjectURL(a));t._checkImagesInContainer(function(t){})}return null}}(this))}return e.prototype._target=null,e.prototype._container=null,e.mountNonInputable=function(a){var r;return r=new e(n().appendTo(a),a),t(a).on("click",function(t){return function(t){if(!o(t.target,!1))return r._container.focus()}}()),r._container.on("focus",function(e){return function(){return t(a).addClass("pastable-focus")}}()),r._container.on("blur",function(e){return function(){return t(a).removeClass("pastable-focus")}}())},e.mountTextarea=function(a){var o,r,i,u;return("undefined"!=typeof DataTransfer&&null!==DataTransfer?DataTransfer.prototype:void 0)&&(null!=(i=Object.getOwnPropertyDescriptor)&&null!=(u=i.call(Object,DataTransfer.prototype,"items"))?u.get:void 0)?this.mountContenteditable(a):(r=new e(n().insertBefore(a),a),o=!1,t(a).on("keyup",function(t){var e;return 17!==(e=t.keyCode)&&224!==e||(o=!1),null}),t(a).on("keydown",function(e){var n;return 17!==(n=e.keyCode)&&224!==n||(o=!0),null!=e.ctrlKey&&null!=e.metaKey&&(o=e.ctrlKey||e.metaKey),o&&86===e.keyCode&&(r._textarea_focus_stolen=!0,r._container.focus(),r._paste_event_fired=!1,setTimeout(function(e){return function(){if(!r._paste_event_fired)return t(a).focus(),r._textarea_focus_stolen=!1}}(),1)),null}),t(a).on("paste",function(t){return function(){}}()),t(a).on("focus",function(e){return function(){if(!r._textarea_focus_stolen)return t(a).addClass("pastable-focus")}}()),t(a).on("blur",function(e){return function(){if(!r._textarea_focus_stolen)return t(a).removeClass("pastable-focus")}}()),t(r._target).on("_pasteCheckContainerDone",function(e){return function(){return t(a).focus(),r._textarea_focus_stolen=!1}}()),t(r._target).on("pasteText",function(e){return function(e,n){var o,r,i;return i=t(a).prop("selectionStart"),r=t(a).prop("selectionEnd"),o=t(a).val(),t(a).val(""+o.slice(0,i)+n.text+o.slice(r)),t(a)[0].setSelectionRange(i+n.text.length,i+n.text.length),t(a).trigger("change")}}()))},e.mountContenteditable=function(n){return new e(n,n),t(n).on("focus",function(e){return function(){return t(n).addClass("pastable-focus")}}()),t(n).on("blur",function(e){return function(){return t(n).removeClass("pastable-focus")}}())},e.prototype._handleImage=function(t){var e;return t.match(/^webkit\-fake\-url\:\/\//)?this._target.trigger("pasteImageError",{message:"You are trying to paste an image in Safari, however we are unable to retieve its data."}):(this._target.trigger("pasteImageStart"),e=new Image,e.crossOrigin="anonymous",e.onload=function(t){return function(){var n,o,r,i;o=document.createElement("canvas"),o.width=e.width,o.height=e.height,r=o.getContext("2d"),r.drawImage(e,0,0,o.width,o.height),i=null;try{i=o.toDataURL("image/png"),n=a(i)}catch(t){}return i&&t._target.trigger("pasteImage",{blob:n,dataURL:i,width:e.width,height:e.height}),t._target.trigger("pasteImageEnd")}}(this),e.onerror=function(e){return function(){return e._target.trigger("pasteImageError",{message:"Failed to get image from: "+t,url:t}),e._target.trigger("pasteImageEnd")}}(this),e.src=t)},e.prototype._checkImagesInContainer=function(e){var n,a,o,r,i;for(i=Math.floor(1e3*Math.random()),r=this._container.find("img"),a=0,o=r.length;a<o;a++)n=r[a],n["_paste_marked_"+i]=!0;return setTimeout(function(a){return function(){var o,r,u;for(u=a._container.find("img"),o=0,r=u.length;o<r;o++)n=u[o],n["_paste_marked_"+i]||(e(n.src),t(n).remove());return a._target.trigger("_pasteCheckContainerDone")}}(this),1)},e}()}).call(this);var thepastePluginCallback;!function(t){thepastePluginCallback=function(e){function n(t){var e=t.src.substring(0,5);return"blob:"===e||"data:"===e}function a(a){i.options.editor.auto_upload&&"mceInsertContent"==a.command&&a.value&&a.value.content&&"<img"===a.value.content.substring(0,4).toLowerCase()&&($img=t(e.getBody()).find("."+u),n($img.get(0))&&(i.uploadImage($img.get(0),e),$img.removeClass(u)))}var o,r,i=wp.media.thepaste,u="";i.options.editor.auto_upload="false"!==localStorage.getItem("thepaste.auto_upload"),e.addCommand("cmd_thepaste",function(){i.options.editor.auto_upload=!i.options.editor.auto_upload,localStorage.setItem("thepaste.auto_upload",i.options.editor.auto_upload.toString()),o.active(i.options.editor.auto_upload)}),e.addButton("thepaste",{icon:"thepaste",tooltip:i.l10n.upload_pasted_images,cmd:"cmd_thepaste",onPostRender:function(){o=this},active:i.options.editor.auto_upload}),e.addButton("wp_img_thepaste_upload",{icon:"dashicon dashicons dashicons-upload thepaste-upload",tooltip:i.l10n.upload_image,onclick:function(){var t;t=e.selection.getNode(),i.uploadImage(t,e)}}),e.once("preinit",function(){e.wp&&e.wp._createToolbar&&(r=e.wp._createToolbar(["wp_img_alignleft","wp_img_aligncenter","wp_img_alignright","wp_img_alignnone","wp_img_thepaste_upload","wp_img_edit","wp_img_remove"]))}),e.on("wptoolbar",function(t){var a;"IMG"!==t.element.nodeName||e.wp.isPlaceholder(t.element)||(t.toolbar=r,a=r.$el.find(".thepaste-upload").closest(".mce-btn"),n(t.element)?a.show():a.hide())}),e.on("PastePostProcess",function(o){var r;i.options.editor.auto_upload&&(r=t(o.node).children().first(),r.is("img")&&n(r.get(0))&&(u="__pasted_image_tmp_"+Date.now(),r.addClass(u),e.once("ExecCommand",a)))}).on("BeforePastePreProcess",function(t){return t.content.match(/&lt;svg[\s\S.]*&lt;\/svg&gt;/i)&&(t.preventDefault(),t.content=""),t})},tinymce.PluginManager.add("thepaste",thepastePluginCallback)}(jQuery); 
     2//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRoZS1wYXN0ZS1wbHVnaW4uanMiXSwibmFtZXMiOlsiJCIsIlBhc3RlIiwiY3JlYXRlSGlkZGVuRWRpdGFibGUiLCJkYXRhVVJMdG9CbG9iIiwiaXNGb2N1c2FibGUiLCJ3aW5kb3ciLCJqUXVlcnkiLCJwYXN0ZSIsInBhc3RlQ29udGFpbmVyIiwicG0iLCJjb25zb2xlIiwibG9nIiwibW91bnROb25JbnB1dGFibGUiLCJfY29udGFpbmVyIiwiZm4iLCJwYXN0YWJsZU5vbklucHV0YWJsZSIsImVsIiwiaiIsImxlbiIsInJlZiIsInRoaXMiLCJsZW5ndGgiLCJfcGFzdGFibGUiLCJpcyIsInBhc3RhYmxlVGV4dGFyZWEiLCJtb3VudFRleHRhcmVhIiwicGFzdGFibGVDb250ZW50ZWRpdGFibGUiLCJtb3VudENvbnRlbnRlZGl0YWJsZSIsImRhdGFVUkwiLCJzbGljZVNpemUiLCJiNjREYXRhIiwiYnl0ZUFycmF5IiwiYnl0ZUFycmF5cyIsImJ5dGVDaGFyYWN0ZXJzIiwiYnl0ZU51bWJlcnMiLCJjb250ZW50VHlwZSIsImkiLCJtIiwib2Zmc2V0Iiwic2xpY2UiLCJtYXRjaCIsImF0b2IiLCJBcnJheSIsImNoYXJDb2RlQXQiLCJVaW50OEFycmF5IiwicHVzaCIsIkJsb2IiLCJ0eXBlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiYXR0ciIsImNzcyIsIndpZHRoIiwiaGVpZ2h0IiwicG9zaXRpb24iLCJsZWZ0Iiwib3ZlcmZsb3ciLCJlbGVtZW50IiwiaGFzVGFiaW5kZXgiLCJmaWVsZHNldCIsImZvY3VzYWJsZUlmVmlzaWJsZSIsImltZyIsIm1hcCIsIm1hcE5hbWUiLCJub2RlTmFtZSIsInRvTG93ZXJDYXNlIiwicGFyZW50Tm9kZSIsIm5hbWUiLCJocmVmIiwidGVzdCIsImRpc2FibGVkIiwiY2xvc2VzdCIsIl90YXJnZXQiLCJhZGRDbGFzcyIsIm9uIiwiX3RoaXMiLCJldiIsImNsaXBib2FyZERhdGEiLCJmaWxlIiwiaXRlbSIsImsiLCJsZW4xIiwicmVhZGVyIiwicmVmMSIsInJlZjIiLCJyZWYzIiwidGV4dCIsImN1cnJlbnRUYXJnZXQiLCJ0YXJnZXQiLCJwcmV2ZW50RGVmYXVsdCIsIl9wYXN0ZV9ldmVudF9maXJlZCIsIm9yaWdpbmFsRXZlbnQiLCJpdGVtcyIsIkZpbGVSZWFkZXIiLCJvbmxvYWQiLCJldmVudCIsIl9oYW5kbGVJbWFnZSIsInJlc3VsdCIsInJlYWRBc0RhdGFVUkwiLCJnZXRBc0ZpbGUiLCJlcnJvciIsImdldEFzU3RyaW5nIiwic3RyaW5nIiwidHJpZ2dlciIsInByb3RvdHlwZSIsImluZGV4T2YiLCJjYWxsIiwidHlwZXMiLCJnZXREYXRhIiwic2V0VGltZW91dCIsIl9jaGVja0ltYWdlc0luQ29udGFpbmVyIiwic3JjIiwiZmlsZXMiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJub25JbnB1dGFibGUiLCJhcHBlbmRUbyIsImZvY3VzIiwicmVtb3ZlQ2xhc3MiLCJ0ZXh0YXJlYSIsImN0bERvd24iLCJEYXRhVHJhbnNmZXIiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXQiLCJpbnNlcnRCZWZvcmUiLCJrZXlDb2RlIiwiY3RybEtleSIsIm1ldGFLZXkiLCJfdGV4dGFyZWFfZm9jdXNfc3RvbGVuIiwiZGF0YSIsImNvbnRlbnQiLCJjdXJFbmQiLCJjdXJTdGFydCIsInByb3AiLCJ2YWwiLCJzZXRTZWxlY3Rpb25SYW5nZSIsImNvbnRlbnRlZGl0YWJsZSIsImxvYWRlciIsIm1lc3NhZ2UiLCJJbWFnZSIsImNyb3NzT3JpZ2luIiwiYmxvYiIsImNhbnZhcyIsImN0eCIsImdldENvbnRleHQiLCJkcmF3SW1hZ2UiLCJ0b0RhdGFVUkwiLCJvbmVycm9yIiwidXJsIiwiY2IiLCJ0aW1lc3BhbiIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImZpbmQiLCJyZW1vdmUiLCJ0aGVwYXN0ZVBsdWdpbkNhbGxiYWNrIiwiZWRpdG9yIiwiY2FuVXBsb2FkIiwic3ViIiwic3Vic3RyaW5nIiwiZXhlY0NvbW1hbmRVcGxvYWRQYXN0ZWRJbWFnZSIsImEiLCJ0aGVwYXN0ZSIsIm9wdGlvbnMiLCJhdXRvX3VwbG9hZCIsImNvbW1hbmQiLCJ2YWx1ZSIsIiRpbWciLCJnZXRCb2R5IiwicGFzdGVkX2ltYWdlX3RtcF9jbGFzcyIsInVwbG9hZEltYWdlIiwicGFzdGVCdG4iLCJ0b29sYmFyIiwid3AiLCJtZWRpYSIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJhZGRDb21tYW5kIiwic2V0SXRlbSIsInRvU3RyaW5nIiwiYWN0aXZlIiwiYWRkQnV0dG9uIiwiaWNvbiIsInRvb2x0aXAiLCJsMTBuIiwidXBsb2FkX3Bhc3RlZF9pbWFnZXMiLCJjbWQiLCJvblBvc3RSZW5kZXIiLCJ1cGxvYWRfaW1hZ2UiLCJvbmNsaWNrIiwiaW1hZ2UiLCJzZWxlY3Rpb24iLCJnZXROb2RlIiwib25jZSIsIl9jcmVhdGVUb29sYmFyIiwidXBsb2FkQnRuIiwiaXNQbGFjZWhvbGRlciIsIiRlbCIsInNob3ciLCJoaWRlIiwiZSIsIiRmaXJzdENoaWxkIiwibm9kZSIsImNoaWxkcmVuIiwiZmlyc3QiLCJEYXRlIiwibm93IiwidGlueW1jZSIsIlBsdWdpbk1hbmFnZXIiLCJhZGQiXSwibWFwcGluZ3MiOiJDQVFBLFdBQ0UsR0FBSUEsR0FBR0MsRUFBT0MsRUFBc0JDLEVBQWVDLENBRW5ESixHQUFJSyxPQUFPQyxPQUVYTixFQUFFTyxNQUFRLFNBQVNDLEdBQ2pCLEdBQUlDLEVBS0osT0FKdUIsbUJBQVpDLFVBQXVDLE9BQVpBLFNBQ3BDQSxRQUFRQyxJQUFJLDBGQUVkRixFQUFLUixFQUFNVyxrQkFBa0JKLEdBQ3RCQyxFQUFHSSxZQUdaYixFQUFFYyxHQUFHQyxxQkFBdUIsV0FDMUIsR0FBSUMsR0FBSUMsRUFBR0MsRUFBS0MsQ0FFaEIsS0FEQUEsRUFBTUMsS0FDREgsRUFBSSxFQUFHQyxFQUFNQyxFQUFJRSxPQUFRSixFQUFJQyxFQUFLRCxJQUNyQ0QsRUFBS0csRUFBSUYsR0FDTEQsRUFBR00sV0FBYXRCLEVBQUVnQixH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QyxNQUN4REwsRUFBWWxJLFNBQVVrRyxHQUN0QmIsRUFBT3FDLEtBQU0sY0FBZWpDLE9BSTlCeEYsR0FBSSx3QkFBeUIsU0FBU2dJLEdBTXRDLE1BSk1BLEdBQUV2RSxRQUFRM0YsTUFBTyxtQ0FDdEJrSyxFQUFFakgsaUJBQ0ZpSCxFQUFFdkUsUUFBVSxJQUVOdUUsS0FPVk8sUUFBUUMsY0FBY0MsSUFBSyxXQUFZdEQseUJBRXBDdkoiLCJmaWxlIjoidGhlLXBhc3RlLXBsdWdpbi5taW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuN1xuXG4vKlxucGFzdGUuanMgaXMgYW4gaW50ZXJmYWNlIHRvIHJlYWQgZGF0YSAoIHRleHQgLyBpbWFnZSApIGZyb20gY2xpcGJvYXJkIGluIGRpZmZlcmVudCBicm93c2Vycy4gSXQgYWxzbyBjb250YWlucyBzZXZlcmFsIGhhY2tzLlxuXG5odHRwczovL2dpdGh1Yi5jb20vbGF5ZXJzc3NzL3Bhc3RlLmpzXG4gKi9cblxuKGZ1bmN0aW9uKCkge1xuICB2YXIgJCwgUGFzdGUsIGNyZWF0ZUhpZGRlbkVkaXRhYmxlLCBkYXRhVVJMdG9CbG9iLCBpc0ZvY3VzYWJsZTtcblxuICAkID0gd2luZG93LmpRdWVyeTtcblxuICAkLnBhc3RlID0gZnVuY3Rpb24ocGFzdGVDb250YWluZXIpIHtcbiAgICB2YXIgcG07XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiREVQUkVDQVRFRDogVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSAkLmZuLnBhc3RhYmxlTm9uSW5wdXRhYmxlKCkgaW5zdGVhZC5cIik7XG4gICAgfVxuICAgIHBtID0gUGFzdGUubW91bnROb25JbnB1dGFibGUocGFzdGVDb250YWluZXIpO1xuICAgIHJldHVybiBwbS5fY29udGFpbmVyO1xuICB9O1xuXG4gICQuZm4ucGFzdGFibGVOb25JbnB1dGFibGUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgZWwsIGosIGxlbiwgcmVmO1xuICAgIHJlZiA9IHRoaXM7XG4gICAgZm9yIChqID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBlbCA9IHJlZltqXTtcbiAgICAgIGlmIChlbC5fcGFzdGFibGUgfHwgJChlbCkuaXMoJ3RleHRhcmVhLCBpbnB1dDp0ZXh0LCBbY29udGVudGVkaXRhYmxlXScpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgUGFzdGUubW91bnROb25JbnB1dGFibGUoZWwpO1xuICAgICAgZWwuX3Bhc3RhYmxlID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgJC5mbi5wYXN0YWJsZVRleHRhcmVhID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGVsLCBqLCBsZW4sIHJlZjtcbiAgICByZWYgPSB0aGlzO1xuICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgZWwgPSByZWZbal07XG4gICAgICBpZiAoZWwuX3Bhc3RhYmxlIHx8ICQoZWwpLmlzKCc6bm90KHRleHRhcmVhLCBpbnB1dDp0ZXh0KScpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgUGFzdGUubW91bnRUZXh0YXJlYShlbCk7XG4gICAgICBlbC5fcGFzdGFibGUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAkLmZuLnBhc3RhYmxlQ29udGVudGVkaXRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGVsLCBqLCBsZW4sIHJlZjtcbiAgICByZWYgPSB0aGlzO1xuICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgZWwgPSByZWZbal07XG4gICAgICBpZiAoZWwuX3Bhc3RhYmxlIHx8ICQoZWwpLmlzKCc6bm90KFtjb250ZW50ZWRpdGFibGVdKScpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgUGFzdGUubW91bnRDb250ZW50ZWRpdGFibGUoZWwpO1xuICAgICAgZWwuX3Bhc3RhYmxlID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgZGF0YVVSTHRvQmxvYiA9IGZ1bmN0aW9uKGRhdGFVUkwsIHNsaWNlU2l6ZSkge1xuICAgIHZhciBiNjREYXRhLCBieXRlQXJyYXksIGJ5dGVBcnJheXMsIGJ5dGVDaGFyYWN0ZXJzLCBieXRlTnVtYmVycywgY29udGVudFR5cGUsIGksIG0sIG9mZnNldCwgcmVmLCBzbGljZTtcbiAgICBpZiAoc2xpY2VTaXplID09IG51bGwpIHtcbiAgICAgIHNsaWNlU2l6ZSA9IDUxMjtcbiAgICB9XG4gICAgaWYgKCEobSA9IGRhdGFVUkwubWF0Y2goL15kYXRhXFw6KFteXFw7XSspXFw7YmFzZTY0XFwsKC4rKSQvKSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZWYgPSBtLCBtID0gcmVmWzBdLCBjb250ZW50VHlwZSA9IHJlZlsxXSwgYjY0RGF0YSA9IHJlZlsyXTtcbiAgICBieXRlQ2hhcmFjdGVycyA9IGF0b2IoYjY0RGF0YSk7XG4gICAgYnl0ZUFycmF5cyA9IFtdO1xuICAgIG9mZnNldCA9IDA7XG4gICAgd2hpbGUgKG9mZnNldCA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCkge1xuICAgICAgc2xpY2UgPSBieXRlQ2hhcmFjdGVycy5zbGljZShvZmZzZXQsIG9mZnNldCArIHNsaWNlU2l6ZSk7XG4gICAgICBieXRlTnVtYmVycyA9IG5ldyBBcnJheShzbGljZS5sZW5ndGgpO1xuICAgICAgaSA9IDA7XG4gICAgICB3aGlsZSAoaSA8IHNsaWNlLmxlbmd0aCkge1xuICAgICAgICBieXRlTnVtYmVyc1tpXSA9IHNsaWNlLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICAgIGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcbiAgICAgIGJ5dGVBcnJheXMucHVzaChieXRlQXJyYXkpO1xuICAgICAgb2Zmc2V0ICs9IHNsaWNlU2l6ZTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBCbG9iKGJ5dGVBcnJheXMsIHtcbiAgICAgIHR5cGU6IGNvbnRlbnRUeXBlXG4gICAgfSk7XG4gIH07XG5cbiAgY3JlYXRlSGlkZGVuRWRpdGFibGUgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSkuYXR0cignY29udGVudGVkaXRhYmxlJywgdHJ1ZSkuYXR0cignYXJpYS1oaWRkZW4nLCB0cnVlKS5hdHRyKCd0YWJpbmRleCcsIC0xKS5jc3Moe1xuICAgICAgd2lkdGg6IDEsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIGxlZnQ6IC0xMDAsXG4gICAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgICB9KTtcbiAgfTtcblxuICBpc0ZvY3VzYWJsZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIGhhc1RhYmluZGV4KSB7XG4gICAgdmFyIGZpZWxkc2V0LCBmb2N1c2FibGVJZlZpc2libGUsIGltZywgbWFwLCBtYXBOYW1lLCBub2RlTmFtZTtcbiAgICBtYXAgPSB2b2lkIDA7XG4gICAgbWFwTmFtZSA9IHZvaWQgMDtcbiAgICBpbWcgPSB2b2lkIDA7XG4gICAgZm9jdXNhYmxlSWZWaXNpYmxlID0gdm9pZCAwO1xuICAgIGZpZWxkc2V0ID0gdm9pZCAwO1xuICAgIG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICgnYXJlYScgPT09IG5vZGVOYW1lKSB7XG4gICAgICBtYXAgPSBlbGVtZW50LnBhcmVudE5vZGU7XG4gICAgICBtYXBOYW1lID0gbWFwLm5hbWU7XG4gICAgICBpZiAoIWVsZW1lbnQuaHJlZiB8fCAhbWFwTmFtZSB8fCBtYXAubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ21hcCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaW1nID0gJCgnaW1nW3VzZW1hcD1cXCcjJyArIG1hcE5hbWUgKyAnXFwnXScpO1xuICAgICAgcmV0dXJuIGltZy5sZW5ndGggPiAwICYmIGltZy5pcygnOnZpc2libGUnKTtcbiAgICB9XG4gICAgaWYgKC9eKGlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvLnRlc3Qobm9kZU5hbWUpKSB7XG4gICAgICBmb2N1c2FibGVJZlZpc2libGUgPSAhZWxlbWVudC5kaXNhYmxlZDtcbiAgICAgIGlmIChmb2N1c2FibGVJZlZpc2libGUpIHtcbiAgICAgICAgZmllbGRzZXQgPSAkKGVsZW1lbnQpLmNsb3Nlc3QoJ2ZpZWxkc2V0JylbMF07XG4gICAgICAgIGlmIChmaWVsZHNldCkge1xuICAgICAgICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9ICFmaWVsZHNldC5kaXNhYmxlZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoJ2EnID09PSBub2RlTmFtZSkge1xuICAgICAgZm9jdXNhYmxlSWZWaXNpYmxlID0gZWxlbWVudC5ocmVmIHx8IGhhc1RhYmluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICBmb2N1c2FibGVJZlZpc2libGUgPSBoYXNUYWJpbmRleDtcbiAgICB9XG4gICAgZm9jdXNhYmxlSWZWaXNpYmxlID0gZm9jdXNhYmxlSWZWaXNpYmxlIHx8ICQoZWxlbWVudCkuaXMoJ1tjb250ZW50ZWRpdGFibGVdJyk7XG4gICAgcmV0dXJuIGZvY3VzYWJsZUlmVmlzaWJsZSAmJiAkKGVsZW1lbnQpLmlzKCc6dmlzaWJsZScpO1xuICB9O1xuXG4gIFBhc3RlID0gKGZ1bmN0aW9uKCkge1xuICAgIFBhc3RlLnByb3RvdHlwZS5fdGFyZ2V0ID0gbnVsbDtcblxuICAgIFBhc3RlLnByb3RvdHlwZS5fY29udGFpbmVyID0gbnVsbDtcblxuICAgIFBhc3RlLm1vdW50Tm9uSW5wdXRhYmxlID0gZnVuY3Rpb24obm9uSW5wdXRhYmxlKSB7XG4gICAgICB2YXIgcGFzdGU7XG4gICAgICBwYXN0ZSA9IG5ldyBQYXN0ZShjcmVhdGVIaWRkZW5FZGl0YWJsZSgpLmFwcGVuZFRvKG5vbklucHV0YWJsZSksIG5vbklucHV0YWJsZSk7XG4gICAgICAkKG5vbklucHV0YWJsZSkub24oJ2NsaWNrJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihldikge1xuICAgICAgICAgIGlmICghaXNGb2N1c2FibGUoZXYudGFyZ2V0LCBmYWxzZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXN0ZS5fY29udGFpbmVyLmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgcGFzdGUuX2NvbnRhaW5lci5vbignZm9jdXMnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiAkKG5vbklucHV0YWJsZSkuYWRkQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICByZXR1cm4gcGFzdGUuX2NvbnRhaW5lci5vbignYmx1cicsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuICQobm9uSW5wdXRhYmxlKS5yZW1vdmVDbGFzcygncGFzdGFibGUtZm9jdXMnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICB9O1xuXG4gICAgUGFzdGUubW91bnRUZXh0YXJlYSA9IGZ1bmN0aW9uKHRleHRhcmVhKSB7XG4gICAgICB2YXIgY3RsRG93biwgcGFzdGUsIHJlZiwgcmVmMTtcbiAgICAgIGlmICgodHlwZW9mIERhdGFUcmFuc2ZlciAhPT0gXCJ1bmRlZmluZWRcIiAmJiBEYXRhVHJhbnNmZXIgIT09IG51bGwgPyBEYXRhVHJhbnNmZXIucHJvdG90eXBlIDogdm9pZCAwKSAmJiAoKHJlZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpICE9IG51bGwgPyAocmVmMSA9IHJlZi5jYWxsKE9iamVjdCwgRGF0YVRyYW5zZmVyLnByb3RvdHlwZSwgJ2l0ZW1zJykpICE9IG51bGwgPyByZWYxLmdldCA6IHZvaWQgMCA6IHZvaWQgMCkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW91bnRDb250ZW50ZWRpdGFibGUodGV4dGFyZWEpO1xuICAgICAgfVxuICAgICAgcGFzdGUgPSBuZXcgUGFzdGUoY3JlYXRlSGlkZGVuRWRpdGFibGUoKS5pbnNlcnRCZWZvcmUodGV4dGFyZWEpLCB0ZXh0YXJlYSk7XG4gICAgICBjdGxEb3duID0gZmFsc2U7XG4gICAgICAkKHRleHRhcmVhKS5vbigna2V5dXAnLCBmdW5jdGlvbihldikge1xuICAgICAgICB2YXIgcmVmMjtcbiAgICAgICAgaWYgKChyZWYyID0gZXYua2V5Q29kZSkgPT09IDE3IHx8IHJlZjIgPT09IDIyNCkge1xuICAgICAgICAgIGN0bERvd24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pO1xuICAgICAgJCh0ZXh0YXJlYSkub24oJ2tleWRvd24nLCBmdW5jdGlvbihldikge1xuICAgICAgICB2YXIgcmVmMjtcbiAgICAgICAgaWYgKChyZWYyID0gZXYua2V5Q29kZSkgPT09IDE3IHx8IHJlZjIgPT09IDIyNCkge1xuICAgICAgICAgIGN0bERvd24gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoZXYuY3RybEtleSAhPSBudWxsKSAmJiAoZXYubWV0YUtleSAhPSBudWxsKSkge1xuICAgICAgICAgIGN0bERvd24gPSBldi5jdHJsS2V5IHx8IGV2Lm1ldGFLZXk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN0bERvd24gJiYgZXYua2V5Q29kZSA9PT0gODYpIHtcbiAgICAgICAgICBwYXN0ZS5fdGV4dGFyZWFfZm9jdXNfc3RvbGVuID0gdHJ1ZTtcbiAgICAgICAgICBwYXN0ZS5fY29udGFpbmVyLmZvY3VzKCk7XG4gICAgICAgICAgcGFzdGUuX3Bhc3RlX2V2ZW50X2ZpcmVkID0gZmFsc2U7XG4gICAgICAgICAgc2V0VGltZW91dCgoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgaWYgKCFwYXN0ZS5fcGFzdGVfZXZlbnRfZmlyZWQpIHtcbiAgICAgICAgICAgICAgICAkKHRleHRhcmVhKS5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXN0ZS5fdGV4dGFyZWFfZm9jdXNfc3RvbGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSkodGhpcyksIDEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSk7XG4gICAgICAkKHRleHRhcmVhKS5vbigncGFzdGUnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge307XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICAkKHRleHRhcmVhKS5vbignZm9jdXMnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmICghcGFzdGUuX3RleHRhcmVhX2ZvY3VzX3N0b2xlbikge1xuICAgICAgICAgICAgcmV0dXJuICQodGV4dGFyZWEpLmFkZENsYXNzKCdwYXN0YWJsZS1mb2N1cycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgICQodGV4dGFyZWEpLm9uKCdibHVyJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBpZiAoIXBhc3RlLl90ZXh0YXJlYV9mb2N1c19zdG9sZW4pIHtcbiAgICAgICAgICAgIHJldHVybiAkKHRleHRhcmVhKS5yZW1vdmVDbGFzcygncGFzdGFibGUtZm9jdXMnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICAkKHBhc3RlLl90YXJnZXQpLm9uKCdfcGFzdGVDaGVja0NvbnRhaW5lckRvbmUnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICQodGV4dGFyZWEpLmZvY3VzKCk7XG4gICAgICAgICAgcmV0dXJuIHBhc3RlLl90ZXh0YXJlYV9mb2N1c19zdG9sZW4gPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHJldHVybiAkKHBhc3RlLl90YXJnZXQpLm9uKCdwYXN0ZVRleHQnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2LCBkYXRhKSB7XG4gICAgICAgICAgdmFyIGNvbnRlbnQsIGN1ckVuZCwgY3VyU3RhcnQ7XG4gICAgICAgICAgY3VyU3RhcnQgPSAkKHRleHRhcmVhKS5wcm9wKCdzZWxlY3Rpb25TdGFydCcpO1xuICAgICAgICAgIGN1ckVuZCA9ICQodGV4dGFyZWEpLnByb3AoJ3NlbGVjdGlvbkVuZCcpO1xuICAgICAgICAgIGNvbnRlbnQgPSAkKHRleHRhcmVhKS52YWwoKTtcbiAgICAgICAgICAkKHRleHRhcmVhKS52YWwoXCJcIiArIGNvbnRlbnQuc2xpY2UoMCwgY3VyU3RhcnQpICsgZGF0YS50ZXh0ICsgY29udGVudC5zbGljZShjdXJFbmQpKTtcbiAgICAgICAgICAkKHRleHRhcmVhKVswXS5zZXRTZWxlY3Rpb25SYW5nZShjdXJTdGFydCArIGRhdGEudGV4dC5sZW5ndGgsIGN1clN0YXJ0ICsgZGF0YS50ZXh0Lmxlbmd0aCk7XG4gICAgICAgICAgcmV0dXJuICQodGV4dGFyZWEpLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgIH07XG5cbiAgICBQYXN0ZS5tb3VudENvbnRlbnRlZGl0YWJsZSA9IGZ1bmN0aW9uKGNvbnRlbnRlZGl0YWJsZSkge1xuICAgICAgdmFyIHBhc3RlO1xuICAgICAgcGFzdGUgPSBuZXcgUGFzdGUoY29udGVudGVkaXRhYmxlLCBjb250ZW50ZWRpdGFibGUpO1xuICAgICAgJChjb250ZW50ZWRpdGFibGUpLm9uKCdmb2N1cycsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuICQoY29udGVudGVkaXRhYmxlKS5hZGRDbGFzcygncGFzdGFibGUtZm9jdXMnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHJldHVybiAkKGNvbnRlbnRlZGl0YWJsZSkub24oJ2JsdXInLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiAkKGNvbnRlbnRlZGl0YWJsZSkucmVtb3ZlQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIFBhc3RlKF9jb250YWluZXIsIF90YXJnZXQpIHtcbiAgICAgIHRoaXMuX2NvbnRhaW5lciA9IF9jb250YWluZXI7XG4gICAgICB0aGlzLl90YXJnZXQgPSBfdGFyZ2V0O1xuICAgICAgdGhpcy5fY29udGFpbmVyID0gJCh0aGlzLl9jb250YWluZXIpO1xuICAgICAgdGhpcy5fdGFyZ2V0ID0gJCh0aGlzLl90YXJnZXQpLmFkZENsYXNzKCdwYXN0YWJsZScpO1xuICAgICAgdGhpcy5fY29udGFpbmVyLm9uKCdwYXN0ZScsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXYpIHtcbiAgICAgICAgICB2YXIgY2xpcGJvYXJkRGF0YSwgZmlsZSwgaXRlbSwgaiwgaywgbGVuLCBsZW4xLCByZWFkZXIsIHJlZiwgcmVmMSwgcmVmMiwgcmVmMywgdGV4dDtcbiAgICAgICAgICBpZiAoZXYuY3VycmVudFRhcmdldCAhPT0gZXYudGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgX3RoaXMuX3Bhc3RlX2V2ZW50X2ZpcmVkID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoKChyZWYgPSBldi5vcmlnaW5hbEV2ZW50KSAhPSBudWxsID8gcmVmLmNsaXBib2FyZERhdGEgOiB2b2lkIDApICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNsaXBib2FyZERhdGEgPSBldi5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGE7XG4gICAgICAgICAgICBpZiAoY2xpcGJvYXJkRGF0YS5pdGVtcykge1xuICAgICAgICAgICAgICByZWYxID0gY2xpcGJvYXJkRGF0YS5pdGVtcztcbiAgICAgICAgICAgICAgZm9yIChqID0gMCwgbGVuID0gcmVmMS5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgICAgICAgICAgIGl0ZW0gPSByZWYxW2pdO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUubWF0Y2goL15pbWFnZVxcLy8pKSB7XG4gICAgICAgICAgICAgICAgICByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5faGFuZGxlSW1hZ2UoZXZlbnQudGFyZ2V0LnJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoaXRlbS5nZXRBc0ZpbGUoKSk7XG4gICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICAgICAgICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ3RleHQvcGxhaW4nKSB7XG4gICAgICAgICAgICAgICAgICBpdGVtLmdldEFzU3RyaW5nKGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZVRleHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAoLTEgIT09IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoY2xpcGJvYXJkRGF0YS50eXBlcywgJ3RleHQvcGxhaW4nKSkge1xuICAgICAgICAgICAgICAgIHRleHQgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoJ1RleHQnKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVUZXh0Jywge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0ZXh0XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBfdGhpcy5fY2hlY2tJbWFnZXNJbkNvbnRhaW5lcihmdW5jdGlvbihzcmMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuX2hhbmRsZUltYWdlKHNyYyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2xpcGJvYXJkRGF0YSA9IHdpbmRvdy5jbGlwYm9hcmREYXRhKSB7XG4gICAgICAgICAgICBpZiAoKHJlZjIgPSAodGV4dCA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YSgnVGV4dCcpKSkgIT0gbnVsbCA/IHJlZjIubGVuZ3RoIDogdm9pZCAwKSB7XG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZVRleHQnLCB7XG4gICAgICAgICAgICAgICAgICB0ZXh0OiB0ZXh0XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLl90YXJnZXQudHJpZ2dlcignX3Bhc3RlQ2hlY2tDb250YWluZXJEb25lJyk7XG4gICAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVmMyA9IGNsaXBib2FyZERhdGEuZmlsZXM7XG4gICAgICAgICAgICAgIGZvciAoayA9IDAsIGxlbjEgPSByZWYzLmxlbmd0aDsgayA8IGxlbjE7IGsrKykge1xuICAgICAgICAgICAgICAgIGZpbGUgPSByZWYzW2tdO1xuICAgICAgICAgICAgICAgIF90aGlzLl9oYW5kbGVJbWFnZShVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBfdGhpcy5fY2hlY2tJbWFnZXNJbkNvbnRhaW5lcihmdW5jdGlvbihzcmMpIHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgfVxuXG4gICAgUGFzdGUucHJvdG90eXBlLl9oYW5kbGVJbWFnZSA9IGZ1bmN0aW9uKHNyYykge1xuICAgICAgdmFyIGxvYWRlcjtcbiAgICAgIGlmIChzcmMubWF0Y2goL153ZWJraXRcXC1mYWtlXFwtdXJsXFw6XFwvXFwvLykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZUltYWdlRXJyb3InLCB7XG4gICAgICAgICAgbWVzc2FnZTogXCJZb3UgYXJlIHRyeWluZyB0byBwYXN0ZSBhbiBpbWFnZSBpbiBTYWZhcmksIGhvd2V2ZXIgd2UgYXJlIHVuYWJsZSB0byByZXRpZXZlIGl0cyBkYXRhLlwiXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlSW1hZ2VTdGFydCcpO1xuICAgICAgbG9hZGVyID0gbmV3IEltYWdlKCk7XG4gICAgICBsb2FkZXIuY3Jvc3NPcmlnaW4gPSBcImFub255bW91c1wiO1xuICAgICAgbG9hZGVyLm9ubG9hZCA9IChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGJsb2IsIGNhbnZhcywgY3R4LCBkYXRhVVJMO1xuICAgICAgICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgIGNhbnZhcy53aWR0aCA9IGxvYWRlci53aWR0aDtcbiAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gbG9hZGVyLmhlaWdodDtcbiAgICAgICAgICBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICBjdHguZHJhd0ltYWdlKGxvYWRlciwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgICBkYXRhVVJMID0gbnVsbDtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZGF0YVVSTCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuICAgICAgICAgICAgYmxvYiA9IGRhdGFVUkx0b0Jsb2IoZGF0YVVSTCk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgICAgICAgaWYgKGRhdGFVUkwpIHtcbiAgICAgICAgICAgIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVJbWFnZScsIHtcbiAgICAgICAgICAgICAgYmxvYjogYmxvYixcbiAgICAgICAgICAgICAgZGF0YVVSTDogZGF0YVVSTCxcbiAgICAgICAgICAgICAgd2lkdGg6IGxvYWRlci53aWR0aCxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBsb2FkZXIuaGVpZ2h0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVJbWFnZUVuZCcpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcyk7XG4gICAgICBsb2FkZXIub25lcnJvciA9IChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZUltYWdlRXJyb3InLCB7XG4gICAgICAgICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byBnZXQgaW1hZ2UgZnJvbTogXCIgKyBzcmMsXG4gICAgICAgICAgICB1cmw6IHNyY1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlSW1hZ2VFbmQnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpO1xuICAgICAgcmV0dXJuIGxvYWRlci5zcmMgPSBzcmM7XG4gICAgfTtcblxuICAgIFBhc3RlLnByb3RvdHlwZS5fY2hlY2tJbWFnZXNJbkNvbnRhaW5lciA9IGZ1bmN0aW9uKGNiKSB7XG4gICAgICB2YXIgaW1nLCBqLCBsZW4sIHJlZiwgdGltZXNwYW47XG4gICAgICB0aW1lc3BhbiA9IE1hdGguZmxvb3IoMTAwMCAqIE1hdGgucmFuZG9tKCkpO1xuICAgICAgcmVmID0gdGhpcy5fY29udGFpbmVyLmZpbmQoJ2ltZycpO1xuICAgICAgZm9yIChqID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICAgIGltZyA9IHJlZltqXTtcbiAgICAgICAgaW1nW1wiX3Bhc3RlX21hcmtlZF9cIiArIHRpbWVzcGFuXSA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2V0VGltZW91dCgoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBrLCBsZW4xLCByZWYxO1xuICAgICAgICAgIHJlZjEgPSBfdGhpcy5fY29udGFpbmVyLmZpbmQoJ2ltZycpO1xuICAgICAgICAgIGZvciAoayA9IDAsIGxlbjEgPSByZWYxLmxlbmd0aDsgayA8IGxlbjE7IGsrKykge1xuICAgICAgICAgICAgaW1nID0gcmVmMVtrXTtcbiAgICAgICAgICAgIGlmICghaW1nW1wiX3Bhc3RlX21hcmtlZF9cIiArIHRpbWVzcGFuXSkge1xuICAgICAgICAgICAgICBjYihpbWcuc3JjKTtcbiAgICAgICAgICAgICAgJChpbWcpLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdfcGFzdGVDaGVja0NvbnRhaW5lckRvbmUnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpLCAxKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIFBhc3RlO1xuXG4gIH0pKCk7XG5cbn0pLmNhbGwodGhpcyk7XG5cbnZhciB0aGVwYXN0ZVBsdWdpbkNhbGxiYWNrO1xuXG4oZnVuY3Rpb24oJCl7XG5cdHRoZXBhc3RlUGx1Z2luQ2FsbGJhY2sgPSBmdW5jdGlvbiggZWRpdG9yICkge1xuXHRcdHZhciBwYXN0ZUJ0bixcblx0XHRcdG9yaWdEb21BZGQsXG5cdFx0XHRjbGlwYm9hcmRIYXNJbWFnZSA9IGZhbHNlLFxuXHRcdFx0Y3VycmVudENsaXBib2FyZEV2ZW50ID0gbnVsbCxcblx0XHRcdHByZXZlbnRJbWFnZVBhc3RlID0gZmFsc2UsXG5cdFx0XHR0aGVwYXN0ZSA9IHdwLm1lZGlhLnRoZXBhc3RlLFxuXHRcdFx0dG9vbGJhcixcblx0XHRcdHBhc3RlZF9pbWFnZV90bXBfcHJlZml4ID0gJ19fcGFzdGVkX2ltYWdlX3RtcF8nLFxuXHRcdFx0cGFzdGVkX2ltYWdlX3RtcF9jbGFzcyA9ICcnO1xuXG5cdFx0Ly8gZGVmYXVsdCBvblxuXHRcdHRoZXBhc3RlLm9wdGlvbnMuZWRpdG9yLmF1dG9fdXBsb2FkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oICd0aGVwYXN0ZS5hdXRvX3VwbG9hZCcgKSAhPT0gJ2ZhbHNlJztcblxuXHRcdGVkaXRvci5hZGRDb21tYW5kKCAnY21kX3RoZXBhc3RlJywgZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGVwYXN0ZS5vcHRpb25zLmVkaXRvci5hdXRvX3VwbG9hZCA9ICEgdGhlcGFzdGUub3B0aW9ucy5lZGl0b3IuYXV0b191cGxvYWQ7XG5cdFx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbSggJ3RoZXBhc3RlLmF1dG9fdXBsb2FkJywgdGhlcGFzdGUub3B0aW9ucy5lZGl0b3IuYXV0b191cGxvYWQudG9TdHJpbmcoKSApO1xuXHRcdFx0cGFzdGVCdG4uYWN0aXZlKCB0aGVwYXN0ZS5vcHRpb25zLmVkaXRvci5hdXRvX3VwbG9hZCApO1xuXG5cdFx0fSk7XG5cblxuXHRcdGVkaXRvci5hZGRCdXR0b24oJ3RoZXBhc3RlJywge1xuXHRcdFx0aWNvbjogJ3RoZXBhc3RlJyxcblx0XHRcdHRvb2x0aXA6IHRoZXBhc3RlLmwxMG4udXBsb2FkX3Bhc3RlZF9pbWFnZXMsXG5cdFx0XHRjbWQgOiAnY21kX3RoZXBhc3RlJyxcblx0XHRcdG9uUG9zdFJlbmRlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHBhc3RlQnRuID0gdGhpcztcblx0XHRcdH0sXG5cdFx0XHRhY3RpdmU6dGhlcGFzdGUub3B0aW9ucy5lZGl0b3IuYXV0b191cGxvYWRcblx0XHR9KTtcblxuXHRcdGVkaXRvci5hZGRCdXR0b24oJ3dwX2ltZ190aGVwYXN0ZV91cGxvYWQnLCB7XG5cdFx0XHRpY29uOiAnZGFzaGljb24gZGFzaGljb25zIGRhc2hpY29ucy11cGxvYWQgdGhlcGFzdGUtdXBsb2FkJyxcblx0XHRcdHRvb2x0aXA6IHRoZXBhc3RlLmwxMG4udXBsb2FkX2ltYWdlLFxuXHRcdFx0b25jbGljazogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdC8vIHdyYXAgaW1nLCB1cGxvYWRcblx0XHRcdFx0dmFyIGltYWdlO1xuXHRcdFx0XHRpbWFnZSA9IGVkaXRvci5zZWxlY3Rpb24uZ2V0Tm9kZSgpO1xuXG5cdFx0XHRcdHRoZXBhc3RlLnVwbG9hZEltYWdlKCBpbWFnZSwgZWRpdG9yICk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRlZGl0b3Iub25jZSggJ3ByZWluaXQnLCBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggZWRpdG9yLndwICYmIGVkaXRvci53cC5fY3JlYXRlVG9vbGJhciApIHtcblx0XHRcdFx0dG9vbGJhciA9IGVkaXRvci53cC5fY3JlYXRlVG9vbGJhciggW1xuXHRcdFx0XHRcdCd3cF9pbWdfYWxpZ25sZWZ0Jyxcblx0XHRcdFx0XHQnd3BfaW1nX2FsaWduY2VudGVyJyxcblx0XHRcdFx0XHQnd3BfaW1nX2FsaWducmlnaHQnLFxuXHRcdFx0XHRcdCd3cF9pbWdfYWxpZ25ub25lJyxcblx0XHRcdFx0XHQnd3BfaW1nX3RoZXBhc3RlX3VwbG9hZCcsXG5cdFx0XHRcdFx0J3dwX2ltZ19lZGl0Jyxcblx0XHRcdFx0XHQnd3BfaW1nX3JlbW92ZScsXG5cdFx0XHRcdF0gKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRlZGl0b3Iub24oICd3cHRvb2xiYXInLCBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHR2YXIgdXBsb2FkQnRuO1xuXHRcdFx0aWYgKCBldmVudC5lbGVtZW50Lm5vZGVOYW1lID09PSAnSU1HJyAmJiAhIGVkaXRvci53cC5pc1BsYWNlaG9sZGVyKCBldmVudC5lbGVtZW50ICkgKSB7XG5cdFx0XHRcdGV2ZW50LnRvb2xiYXIgPSB0b29sYmFyO1xuXHRcdFx0XHR1cGxvYWRCdG4gPSB0b29sYmFyLiRlbC5maW5kKCcudGhlcGFzdGUtdXBsb2FkJykuY2xvc2VzdCgnLm1jZS1idG4nKTtcblxuXHRcdFx0XHRpZiAoIGNhblVwbG9hZCggZXZlbnQuZWxlbWVudCApICkge1xuXHRcdFx0XHRcdHVwbG9hZEJ0bi5zaG93KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dXBsb2FkQnRuLmhpZGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdGZ1bmN0aW9uIGNhblVwbG9hZCggaW1nICkge1xuXHRcdFx0dmFyIHN1YiA9IGltZy5zcmMuc3Vic3RyaW5nKDAsNSk7XG5cdFx0XHRyZXR1cm4gc3ViID09PSAnYmxvYjonIHx8IHN1YiA9PT0gJ2RhdGE6Jztcblx0XHR9XG5cblx0XHRmdW5jdGlvbiBleGVjQ29tbWFuZFVwbG9hZFBhc3RlZEltYWdlKGEpe1xuXHRcdFx0aWYgKCB0aGVwYXN0ZS5vcHRpb25zLmVkaXRvci5hdXRvX3VwbG9hZCAmJlxuXHRcdFx0XHRhLmNvbW1hbmQgPT0gJ21jZUluc2VydENvbnRlbnQnICYmXG5cdFx0XHRcdCEhIGEudmFsdWUgJiYgISEgYS52YWx1ZS5jb250ZW50ICYmXG5cdFx0XHRcdFwiPGltZ1wiID09PSBhLnZhbHVlLmNvbnRlbnQuc3Vic3RyaW5nKDAsNCkudG9Mb3dlckNhc2UoKVxuXHRcdFx0KSB7XG5cdFx0XHRcdCRpbWcgPSAkKGVkaXRvci5nZXRCb2R5KCkpLmZpbmQoJy4nK3Bhc3RlZF9pbWFnZV90bXBfY2xhc3MpO1xuXHRcdFx0XHRpZiAoIGNhblVwbG9hZCggJGltZy5nZXQoMCkgKSApIHtcblx0XHRcdFx0XHR0aGVwYXN0ZS51cGxvYWRJbWFnZSggJGltZy5nZXQoMCksIGVkaXRvciApO1xuXHRcdFx0XHRcdCRpbWcucmVtb3ZlQ2xhc3MocGFzdGVkX2ltYWdlX3RtcF9jbGFzcyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0ZWRpdG9yXG4vL1x0XHRcdC5vbiggJ2luaXQnLCBzZXR1cEVkaXRvckRvbSApXG5cdFx0XHQub24oICdQYXN0ZVBvc3RQcm9jZXNzJywgZnVuY3Rpb24oZSl7XG5cdFx0XHRcdHZhciAkZmlyc3RDaGlsZDtcblx0XHRcdFx0aWYgKCB0aGVwYXN0ZS5vcHRpb25zLmVkaXRvci5hdXRvX3VwbG9hZCApIHtcblx0XHRcdFx0XHQkZmlyc3RDaGlsZCA9ICQoZS5ub2RlKS5jaGlsZHJlbigpLmZpcnN0KCk7XG5cdFx0XHRcdFx0aWYgKCAkZmlyc3RDaGlsZC5pcygnaW1nJykgJiYgY2FuVXBsb2FkKCAkZmlyc3RDaGlsZC5nZXQoMCkgKSApIHtcblx0XHRcdFx0XHRcdHBhc3RlZF9pbWFnZV90bXBfY2xhc3MgPSBwYXN0ZWRfaW1hZ2VfdG1wX3ByZWZpeCArIERhdGUubm93KCk7XG5cdFx0XHRcdFx0XHQkZmlyc3RDaGlsZC5hZGRDbGFzcyggcGFzdGVkX2ltYWdlX3RtcF9jbGFzcyApO1xuXHRcdFx0XHRcdFx0ZWRpdG9yLm9uY2UoICdFeGVjQ29tbWFuZCcsIGV4ZWNDb21tYW5kVXBsb2FkUGFzdGVkSW1hZ2UgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQub24oICdCZWZvcmVQYXN0ZVByZVByb2Nlc3MnLCBmdW5jdGlvbihlKXtcblx0XHRcdFx0Ly8gcmVtb3ZlIHN2ZyBkYXRhIGZyb20gaWxsdXN0cmF0b3Jcblx0XHRcdFx0aWYgKCAgZS5jb250ZW50Lm1hdGNoKCAvJmx0O3N2Z1tcXHNcXFMuXSombHQ7XFwvc3ZnJmd0Oy9pICkgKSB7XG5cdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdGUuY29udGVudCA9ICcnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBlO1xuXG5cdFx0XHR9IClcblx0XHRcdDtcblxuXHR9O1xuXG5cdHRpbnltY2UuUGx1Z2luTWFuYWdlci5hZGQoICd0aGVwYXN0ZScsIHRoZXBhc3RlUGx1Z2luQ2FsbGJhY2sgKTtcblxufSApKGpRdWVyeSk7XG4iXX0= 
  • the-paste/tags/1.0.2/js/admin/the-paste.js

    r1730916 r1760781  
    405405        counter = 0, 
    406406        workflow; 
    407          
     407 
    408408    thepaste = exports.thepaste = $.extend( { 
    409409        supports : { 
     
    411411        }, 
    412412        view:{}, 
    413          
     413 
    414414        insertImage:function( dataURL, type, editor ) { 
    415415            var id = '__thepaste_img_'+(counter++), 
     
    419419 
    420420            editor.insertContent( imageHtml ); 
    421              
     421 
    422422            return editor.$('#'+id)[0]; 
    423423        }, 
     
    426426 
    427427            var xhr, 
    428                 workflow,  
     428                workflow, 
    429429                $container, 
    430430                src = image.src, 
     
    434434                        file = new o.Blob( null, { data: dataURL } ) 
    435435                        suffix = thepaste.options.mime_types.convert[ type ]; 
    436  
     436                    if ( 'undefined' === typeof suffix ) { 
     437                        console.trace( 'bad type: ' + type ); 
     438                    } 
    437439                    $(image).wrap('<div id="'+id+'" data-progress="0" class="thepaste-image-placeholder" contenteditable="false"></div>'); 
    438440                    $container = editor.$('#'+id); 
     
    489491                        reader = new FileReader(); 
    490492                        reader.onload = function() { 
    491  
    492493                            upload( reader.result ); 
    493  
    494494                        } 
    495                         reader.readAsDataURL( xhr.response ); 
     495                        reader.readAsDataURL( new Blob( [ xhr.response ], { type: 'image/png' } ) ); 
    496496                    } 
    497497                } 
     
    500500 
    501501            } else if ( src.substr(0,5) === 'data:' ) { 
    502  
    503502                upload( src ); 
    504  
    505             }  
    506              
     503            } 
     504 
    507505        }, 
    508506 
     
    538536 
    539537})( jQuery, wp.media ); 
    540  
    541538 
    542539(function($,exports){ 
  • the-paste/tags/1.0.2/js/admin/the-paste.min.js

    r1730916 r1760781  
    1 (function(){var e,t,a,i,n;e=window.jQuery,e.paste=function(e){var a;return"undefined"!=typeof console&&null!==console&&console.log("DEPRECATED: This method is deprecated. Please use $.fn.pastableNonInputable() instead."),a=t.mountNonInputable(e),a._container},e.fn.pastableNonInputable=function(){var a,i,n,r;for(r=this,i=0,n=r.length;i<n;i++)a=r[i],a._pastable||e(a).is("textarea, input:text, [contenteditable]")||(t.mountNonInputable(a),a._pastable=!0);return this},e.fn.pastableTextarea=function(){var a,i,n,r;for(r=this,i=0,n=r.length;i<n;i++)a=r[i],a._pastable||e(a).is(":not(textarea, input:text)")||(t.mountTextarea(a),a._pastable=!0);return this},e.fn.pastableContenteditable=function(){var a,i,n,r;for(r=this,i=0,n=r.length;i<n;i++)a=r[i],a._pastable||e(a).is(":not([contenteditable])")||(t.mountContenteditable(a),a._pastable=!0);return this},i=function(e,t){var a,i,n,r,o,s,l,p,d,u,h;if(null==t&&(t=512),!(p=e.match(/^data\:([^\;]+)\;base64\,(.+)$/)))return null;for(u=p,p=u[0],s=u[1],a=u[2],r=atob(a),n=[],d=0;d<r.length;){for(h=r.slice(d,d+t),o=new Array(h.length),l=0;l<h.length;)o[l]=h.charCodeAt(l),l++;i=new Uint8Array(o),n.push(i),d+=t}return new Blob(n,{type:s})},a=function(){return e(document.createElement("div")).attr("contenteditable",!0).attr("aria-hidden",!0).attr("tabindex",-1).css({width:1,height:1,position:"fixed",left:-100,overflow:"hidden"})},n=function(t,a){var i,n,r,o,s,l;return o=void 0,s=void 0,r=void 0,n=void 0,i=void 0,"area"===(l=t.nodeName.toLowerCase())?(o=t.parentNode,s=o.name,!(!t.href||!s||"map"!==o.nodeName.toLowerCase())&&(r=e("img[usemap='#"+s+"']"),r.length>0&&r.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(l)?(n=!t.disabled)&&(i=e(t).closest("fieldset")[0])&&(n=!i.disabled):n="a"===l?t.href||a:a,(n=n||e(t).is("[contenteditable]"))&&e(t).is(":visible"))},t=function(){function t(t,a){this._container=t,this._target=a,this._container=e(this._container),this._target=e(this._target).addClass("pastable"),this._container.on("paste",function(e){return function(t){var a,i,n,r,o,s,l,p,d,u,h,c,g;if(t.currentTarget!==t.target)return t.preventDefault();if(e._paste_event_fired=!0,null!=(null!=(d=t.originalEvent)?d.clipboardData:void 0))if(a=t.originalEvent.clipboardData,a.items)for(u=a.items,r=0,s=u.length;r<s;r++){if(n=u[r],n.type.match(/^image\//)){p=new FileReader,p.onload=function(t){return e._handleImage(t.target.result)};try{p.readAsDataURL(n.getAsFile())}catch(e){}t.preventDefault();break}"text/plain"===n.type&&n.getAsString(function(t){return e._target.trigger("pasteText",{text:t})})}else-1!==Array.prototype.indexOf.call(a.types,"text/plain")&&(g=a.getData("Text"),setTimeout(function(){return e._target.trigger("pasteText",{text:g})},1)),e._checkImagesInContainer(function(t){return e._handleImage(t)});if(a=window.clipboardData)if(null!=(h=g=a.getData("Text"))?h.length:void 0)setTimeout(function(){return e._target.trigger("pasteText",{text:g}),e._target.trigger("_pasteCheckContainerDone")},1);else{for(c=a.files,o=0,l=c.length;o<l;o++)i=c[o],e._handleImage(URL.createObjectURL(i));e._checkImagesInContainer(function(e){})}return null}}(this))}return t.prototype._target=null,t.prototype._container=null,t.mountNonInputable=function(i){var r;return r=new t(a().appendTo(i),i),e(i).on("click",function(e){return function(e){if(!n(e.target,!1))return r._container.focus()}}()),r._container.on("focus",function(t){return function(){return e(i).addClass("pastable-focus")}}()),r._container.on("blur",function(t){return function(){return e(i).removeClass("pastable-focus")}}())},t.mountTextarea=function(i){var n,r,o,s;return("undefined"!=typeof DataTransfer&&null!==DataTransfer?DataTransfer.prototype:void 0)&&(null!=(o=Object.getOwnPropertyDescriptor)&&null!=(s=o.call(Object,DataTransfer.prototype,"items"))?s.get:void 0)?this.mountContenteditable(i):(r=new t(a().insertBefore(i),i),n=!1,e(i).on("keyup",function(e){var t;return 17!==(t=e.keyCode)&&224!==t||(n=!1),null}),e(i).on("keydown",function(t){var a;return 17!==(a=t.keyCode)&&224!==a||(n=!0),null!=t.ctrlKey&&null!=t.metaKey&&(n=t.ctrlKey||t.metaKey),n&&86===t.keyCode&&(r._textarea_focus_stolen=!0,r._container.focus(),r._paste_event_fired=!1,setTimeout(function(t){return function(){if(!r._paste_event_fired)return e(i).focus(),r._textarea_focus_stolen=!1}}(),1)),null}),e(i).on("paste",function(e){return function(){}}()),e(i).on("focus",function(t){return function(){if(!r._textarea_focus_stolen)return e(i).addClass("pastable-focus")}}()),e(i).on("blur",function(t){return function(){if(!r._textarea_focus_stolen)return e(i).removeClass("pastable-focus")}}()),e(r._target).on("_pasteCheckContainerDone",function(t){return function(){return e(i).focus(),r._textarea_focus_stolen=!1}}()),e(r._target).on("pasteText",function(t){return function(t,a){var n,r,o;return o=e(i).prop("selectionStart"),r=e(i).prop("selectionEnd"),n=e(i).val(),e(i).val(""+n.slice(0,o)+a.text+n.slice(r)),e(i)[0].setSelectionRange(o+a.text.length,o+a.text.length),e(i).trigger("change")}}()))},t.mountContenteditable=function(a){return new t(a,a),e(a).on("focus",function(t){return function(){return e(a).addClass("pastable-focus")}}()),e(a).on("blur",function(t){return function(){return e(a).removeClass("pastable-focus")}}())},t.prototype._handleImage=function(e){var t;return e.match(/^webkit\-fake\-url\:\/\//)?this._target.trigger("pasteImageError",{message:"You are trying to paste an image in Safari, however we are unable to retieve its data."}):(this._target.trigger("pasteImageStart"),t=new Image,t.crossOrigin="anonymous",t.onload=function(e){return function(){var a,n,r,o;n=document.createElement("canvas"),n.width=t.width,n.height=t.height,r=n.getContext("2d"),r.drawImage(t,0,0,n.width,n.height),o=null;try{o=n.toDataURL("image/png"),a=i(o)}catch(e){}return o&&e._target.trigger("pasteImage",{blob:a,dataURL:o,width:t.width,height:t.height}),e._target.trigger("pasteImageEnd")}}(this),t.onerror=function(t){return function(){return t._target.trigger("pasteImageError",{message:"Failed to get image from: "+e,url:e}),t._target.trigger("pasteImageEnd")}}(this),t.src=e)},t.prototype._checkImagesInContainer=function(t){var a,i,n,r,o;for(o=Math.floor(1e3*Math.random()),r=this._container.find("img"),i=0,n=r.length;i<n;i++)a=r[i],a["_paste_marked_"+o]=!0;return setTimeout(function(i){return function(){var n,r,s;for(s=i._container.find("img"),n=0,r=s.length;n<r;n++)a=s[n],a["_paste_marked_"+o]||(t(a.src),e(a).remove());return i._target.trigger("_pasteCheckContainerDone")}}(this),1)},t}()}).call(this),function(e,t){var a=(navigator.userAgent.indexOf("Chrome"),0);thepaste=t.thepaste=e.extend({supports:{paste:"paste"in document||"onpaste"in document||"object"==typeof window.onpaste||"onpaste"in document.createElement("DIV")},view:{},insertImage:function(e,t,i){var n="__thepaste_img_"+a++,r='<img id="'+n+'" class="alignnone size-full" src="'+e+'" />';return i.insertContent(r),i.$("#"+n)[0]},uploadImage:function(t,i){var n,r,s,l=t.src,p=function(n){var p="__thepaste_box_"+a++,d=n.match(/^data\:([^\;]+)\;/)[1];file=new o.Blob(null,{data:n}),suffix=thepaste.options.mime_types.convert[d],e(t).wrap('<div id="'+p+'" data-progress="0" class="thepaste-image-placeholder" contenteditable="false"></div>'),s=i.$("#"+p),file.name=thepaste.l10n.pasted+"."+suffix,file.type=d;var u=function(){r.uploader.uploader.uploader.addFile(file)};r?(r.state().reset(),u()):(r=wp.media.editor.open(window.wpActiveEditor,{frame:"post",state:"insert",title:thepaste.l10n.copy_paste,multiple:!1}),r.close(),r.uploader.uploader&&r.uploader.uploader.ready?u():r.on("uploader:ready",u)),r.uploader.uploader.uploader.bind("UploadProgress",function(e){s.attr("data-progress",e.total.percent)}),r.uploader.uploader.uploader.bind("FileUploaded",function(t,a){var n='<img class="alignnone wp-image-'+a.attachment.id+' size-full" src="'+a.attachment.changed.url+'" />';s.replaceWith(n),i.$('img[src="'+l+'"]').each(function(){e(this).replaceWith(n)})}),r.uploader.uploader.uploader.bind("Error",function(e,t){console.log(e,t)})};"blob:"===l.substr(0,5)?(n=new XMLHttpRequest,n.responseType="blob",n.onreadystatechange=function(){var e;4==n.readyState&&(e=new FileReader,e.onload=function(){p(e.result)},e.readAsDataURL(n.response))},n.open("GET",l),n.send(null)):"data:"===l.substr(0,5)&&p(l)},clipboardHasImage:function(t){var a=!1;return t.items?(e.each(t.items,function(e,t){if(t.type in thepaste.options.mime_types.paste)return a=!0,!1}),a):t.types?(e.each(thepaste.options.mime_types.paste,function(e,i){if(t.types.indexOf(e)>-1)return a=!0,!1}),a):null}},thepaste)}(jQuery,wp.media),function(e,t){var a=wp.media.thepaste.l10n;e.extend(wp.Uploader.prototype,{success:function(e){}}),_.extend(wp.media.view.MediaFrame.Select.prototype,{_parentInitialize:wp.media.view.MediaFrame.Select.prototype.initialize,initialize:function(){this._parentInitialize.apply(this,arguments),this.bindPasteHandlers()},_parentBrowseRouter:wp.media.view.MediaFrame.Select.prototype.browseRouter,browseRouter:function(e){this._parentBrowseRouter.apply(this,arguments),wp.media.thepaste.supports.paste&&e.set({pasteboard:{text:a.copy_paste,priority:35}})},bindPasteHandlers:function(){var e=!1;this.on("content:render close",function(t){e&&"function"==typeof e.dismiss&&e.dismiss(),void 0!==t&&(e=t)},this),this.on("content:create:pasteboard",this.contentCreatePasteboard,this),this.on("content:render:pasteboard",this.contentRenderGrabber,this),frame=this},contentCreatePasteboard:function(e){this.state();this.currentPasteView=e.view=new wp.media.thepaste.view.DataSourceImageGrabber({controller:this,grabber:wp.media.thepaste.view.Pasteboard}),this.listenTo(this.currentPasteView.uploader,"action:uploaded:dataimage",this.uploadedDataImage)},contentRenderGrabber:function(e){e.startGrabbing()},uploadedDataImage:function(e){this.stopListening(this.currentPasteView.uploader,"action:uploaded:dataimage");var t={view:null};this.browseContent(t),this.content.set(t.view),this.router.get().select("browse")}}),_.extend(wp.media.view.AttachmentsBrowser.prototype,{_parentInitialize:wp.media.view.AttachmentsBrowser.prototype.initialize,initialize:function(){var e,t=this;this._parentInitialize.apply(this,arguments),this.thepaste={paste:{grabber:!1,modal:!1,mode:"paste"},current:!1},this.controller instanceof wp.media.view.MediaFrame.Select||wp.media.thepaste.supports.paste&&(e=new wp.media.view.Button({text:a.copy_paste,className:"grabber-button",priority:-64,click:function(){t.thepaste.active=t.thepaste.paste,t.thepasteOpen(a.copy_paste)}}),this.thepaste.paste.grabber=new wp.media.thepaste.view.DataSourceImageGrabber({controller:this.controller,grabber:wp.media.thepaste.view.Pasteboard,wpuploader:this.controller.uploader.uploader.uploader}),this.toolbar.set("pasteModeButton",e.render()))},thepasteUploaded:function(e){this.thepaste.active.grabber.dismiss(),this.thepaste.modal.close(),this.thepasteClose()},thepasteError:function(e){console.log("error",e)},thepasteOpen:function(e){var t=this;this.thepaste.modal=new wp.media.view.Modal({controller:this,title:e}),this.thepaste.modal.content(this.thepaste.active.grabber),this.thepaste.modal.open(),this.thepaste.modal.on("close",function(){t.thepasteClose.apply(t),t.thepaste.active.grabber.stopGrabbing()}),this.thepaste.active.grabber.startGrabbing(),this.listenTo(this.thepaste.active.grabber.uploader,"action:uploaded:dataimage",this.thepasteUploaded),this.listenTo(this.thepaste.active.grabber.uploader,"error:uploaded:dataimage",this.thepasteError)},thepasteClose:function(){this.controller.deactivateMode(this.thepaste.active.mode).activateMode("edit"),this.stopListening(this.thepaste.active.grabber.uploader,"action:uploaded:dataimage"),this.stopListening(this.thepaste.active.grabber.uploader,"error:uploaded:dataimage")}})}(jQuery,window),function(e,t,a){var i=wp.media.thepaste,n=(wp.media.view.Button,wp.media.view.Modal,i.l10n);wp.media.thepaste.view.DataSourceImageUploader=wp.media.View.extend({template:wp.template("thepaste-uploader"),className:"thepaste-uploader",controller:null,image:null,$discardBtn:null,$uploadBtn:null,uploader:null,events:{'click [data-action="upload"]':"uploadImage",'click [data-action="discard"]':"discardImage"},initialize:function(){wp.media.View.prototype.initialize.apply(this,arguments),_.defaults(this.options,{defaultFileName:n.image});new wp.media.View({tagName:"div",className:"instruments",controller:this.controller});this.uploader=this.options.uploder},setImageData:function(e){var t=this.$imageContainer.html("").get(0),n=this,r=e.match(/data:(image\/(\w+));/)[1];return i.options.mime_types.convert[r]||(r=this.options.defaultFileFormat),this.image&&this.image.destroy(),this.image=new a.Image,this.image.onload=function(){var e=n.getUploader().getOption("resize"),a=Math.max(e.width/this.width,e.height/this.height);!!e&&a<1&&this.downsize(this.width*a,this.height*a),this.embed(t)},this.image.load(e),this.$imageContainer&&this.$imageContainer.append(this.image),this.$('[data-setting="format"] input[value="'+r+'"]').prop("checked",!0),this.disabled(!1),this},render:function(){return wp.media.View.prototype.render.apply(this,arguments),this.$imageContainer=this.$(".image-container"),this.$discardBtn=this.$('[data-action="discard"]'),this.$uploadBtn=this.$('[data-action="upload"]'),this.$('[data-setting="title"]').val(this.options.defaultFileName),this},discardImage:function(){this.trigger("action:discard:dataimage",this),this.unbindUploaderEvents()},uploadImage:function(){var e=this.$('[data-setting="format"] :checked').val(),t=i.options.mime_types.convert[e],a=this.$('input[data-setting="title"]').val()+"."+t,n=this.image.getAsBlob(e,i.options.jpeg_quality);this.bindUploaderEvents(),n.detach(n.getSource()),n.name=a,n.type=e,this.getUploader().addFile(n,a),this.disabled(!0),this.trigger("action:upload:dataimage",this)},show:function(){return this.$el.show(),this},hide:function(){return this.$el.hide(),this},disabled:function(e){this.$discardBtn.prop("disabled",e),this.$uploadBtn.prop("disabled",e)},_uploadSuccessHandler:function(){this.trigger("action:uploaded:dataimage"),this.disabled(!1),this.unbindUploaderEvents()},_uploadErrorHandler:function(){this.trigger("error:uploaded:dataimage"),this.disabled(!1),this.unbindUploaderEvents()},bindUploaderEvents:function(){this.getUploader().bind("FileUploaded",this._uploadSuccessHandler,this),this.getUploader().bind("Error",this._uploadErrorHandler,this)},unbindUploaderEvents:function(){this.getUploader().unbind("FileUploaded",this._uploadSuccessHandler,this),this.getUploader().unbind("Error",this._uploadErrorHandler,this)},getUploader:function(){return this.controller.uploader.uploader.uploader}}),wp.media.thepaste.view.Pasteboard=wp.media.View.extend({template:wp.template("thepaste-pasteboard"),className:"thepaste-pasteboard",controller:null,action:"paste",$pasteboard:null,render:function(){var e=this;return wp.media.View.prototype.render.apply(this,arguments),this.$pasteboard=this.$(".injector").pastableContenteditable(),this.$message=this.$(".message"),this.$pasteboard.on("click",function(){e.show_message("")}),this},start:function(){var t,a=this;return this.imagePasted=!1,this.$pasteboard.on("paste",function(e){t=wp.media.thepaste.clipboardHasImage(e.originalEvent.clipboardData)}).on("pasteText",function(i,r){t||a.imagePasted||(a.show_message(n.paste_error_no_image),e(this).html(""))}).on("pasteImage",function(e,t){a.imagePasted||(a.trigger("action:create:dataimage",this,t.dataURL),a.imagePasted=!0)}).on("pasteImageError",function(t,i){a.show_message(n.paste_error),e(this).html("")}),setTimeout(function(){a.$pasteboard.get(0).focus()},1),this},stop:function(){return this.$pasteboard.off("pasteImage").off("pasteImageError").off("pasteText"),this},show:function(){return this.$el.show(),this},hide:function(){return this.$el.hide(),this},show_message:function(e){this.$message.text(e)}}),wp.media.thepaste.view.DataSourceImageGrabber=wp.media.View.extend({template:wp.template("thepaste-grabber"),className:"thepaste-grabber",grabber:null,uploader:null,initialize:function(){var e=wp.media.View.prototype.initialize.apply(this,arguments);return _.defaults(this.options,{wpuploader:null,defaultFileName:n.pasted,defaultFileFormat:"image/png",title:n.copy_paste}),this.grabber=new this.options.grabber({controller:this.controller}),this.uploader=new wp.media.thepaste.view.DataSourceImageUploader({controller:this.controller,uploder:this.options.wpuploader,defaultFileName:this.options.defaultFileName,defaultFileFormat:this.options.defaultFileFormat}),this.render(),this.listenTo(this.grabber,"action:create:dataimage",this.imageCreated),this.listenTo(this.uploader,"action:discard:dataimage",this.startGrabbing),e},render:function(){return wp.media.View.prototype.render.apply(this,arguments),this.$(".content").append(this.grabber.render().$el).append(this.uploader.render().$el),this},imageCreated:function(e,t){this.grabber.stop().hide(),this.uploader.show().setImageData(t)},startGrabbing:function(){return this.uploader.hide(),this.grabber.show().start(),this},stopGrabbing:function(){return this.grabber.stop(),this},getAction:function(){return this.grabber.action},dismiss:function(){return this.grabber.stop(),this}})}(jQuery,window,mOxie); 
    2 //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRoZS1wYXN0ZS5qcyJdLCJuYW1lcyI6WyIkIiwiUGFzdGUiLCJjcmVhdGVIaWRkZW5FZGl0YWJsZSIsImRhdGFVUkx0b0Jsb2IiLCJpc0ZvY3VzYWJsZSIsIndpbmRvdyIsImpRdWVyeSIsInBhc3RlIiwicGFzdGVDb250YWluZXIiLCJwbSIsImNvbnNvbGUiLCJsb2ciLCJtb3VudE5vbklucHV0YWJsZSIsIl9jb250YWluZXIiLCJmbiIsInBhc3RhYmxlTm9uSW5wdXRhYmxlIiwiZWwiLCJqIiwibGVuIiwicmVmIiwidGhpcyIsImxlbmd0aCIsIl9wYXN0YWJsZSIsImlzIiwicGFzdGFibGVUZXh0YXJlYSIsIm1vdW50VGV4dGFyZWEiLCJwYXN0YWJsZUNvbnRlbnRlZGl0YWJsZSIsIm1vdW50Q29udGVudGVkaXRhYmxlIiwiZGF0YVVSTCIsInNsaWNlU2l6ZSIsImI2NERhdGEiLCJieXRlQXJyYXkiLCJieXRlQXJyYXlzIiwiYnl0ZUNoYXJhY3RlcnMiLCJieXRlTnVtYmVycyIsImNvbnRlbnRUeXBlIiwiaSIsIm0iLCJvZmZzZXQiLCJzbGljZSIsIm1hdGNoIiwiYXRvYiIsIkFycmF5IiwiY2hhckNvZGVBdCIsIlVpbnQ4QXJyYXkiLCJwdXNoIiwiQmxvYiIsInR5cGUiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJhdHRyIiwiY3NzIiwid2lkdGgiLCJoZWlnaHQiLCJwb3NpdGlvbiIsImxlZnQiLCJvdmVyZmxvdyIsImVsZW1lbnQiLCJoYXNUYWJpbmRleCIsImZpZWxkc2V0IiwiZm9jdXNhYmxlSWZWaXNpYmxlIiwiaW1nIiwibWFwIiwibWFwTmFtZSIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJwYXJlbnROb2RlIiwibmFtZSIsImhyZWYiLCJ0ZXN0IiwiZGlzYWJsZWQiLCJjbG9zZXN0IiwiX3RhcmdldCIsImFkZENsYXNzIiwib24iLCJfdGhpcyIsImV2IiwiY2xpcGJvYXJkRGF0YSIsImZpbGUiLCJpdGVtIiwiayIsImxlbjEiLCJyZWFkZXIiLCJyZWYxIiwicmVmMiIsInJlZjMiLCJ0ZXh0IiwiY3VycmVudFRhcmdldCIsInRhcmdldCIsInByZXZlbnREZWZhdWx0IiwiX3Bhc3RlX2V2ZW50X2ZpcmVkIiwib3JpZ2luYWxFdmVudCIsIml0ZW1zIiwiRmlsZVJlYWRlciIsIm9ubG9hZCIsImV2ZW50IiwiX2hhbmRsZUltYWdlIiwicmVzdWx0IiwicmVhZEFzRGF0YVVSTCIsImdldEFzRmlsZSIsImVycm9yIiwiZ2V0QXNTdHJpbmciLCJzdHJpbmciLCJ0cmlnZ2VyIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImNhbGwiLCJ0eXBlcyIsImdldERhdGEiLCJzZXRUaW1lb3V0IiwiX2NoZWNrSW1hZ2VzSW5Db250YWluZXIiLCJzcmMiLCJmaWxlcyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIm5vbklucHV0YWJsZSIsImFwcGVuZFRvIiwiZm9jdXMiLCJyZW1vdmVDbGFzcyIsInRleHRhcmVhIiwiY3RsRG93biIsIkRhdGFUcmFuc2ZlciIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldCIsImluc2VydEJlZm9yZSIsImtleUNvZGUiLCJjdHJsS2V5IiwibWV0YUtleSIsIl90ZXh0YXJlYV9mb2N1c19zdG9sZW4iLCJkYXRhIiwiY29udGVudCIsImN1ckVuZCIsImN1clN0YXJ0IiwicHJvcCIsInZhbCIsInNldFNlbGVjdGlvblJhbmdlIiwiY29udGVudGVkaXRhYmxlIiwibG9hZGVyIiwibWVzc2FnZSIsIkltYWdlIiwiY3Jvc3NPcmlnaW4iLCJibG9iIiwiY2FudmFzIiwiY3R4IiwiZ2V0Q29udGV4dCIsImRyYXdJbWFnZSIsInRvRGF0YVVSTCIsIm9uZXJyb3IiLCJ1cmwiLCJjYiIsInRpbWVzcGFuIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwiZmluZCIsInJlbW92ZSIsImV4cG9ydHMiLCJjb3VudGVyIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwidGhlcGFzdGUiLCJleHRlbmQiLCJzdXBwb3J0cyIsInZpZXciLCJpbnNlcnRJbWFnZSIsImVkaXRvciIsImlkIiwiaW1hZ2VIdG1sIiwiaW5zZXJ0Q29udGVudCIsInVwbG9hZEltYWdlIiwiaW1hZ2UiLCJ4aHIiLCJ3b3JrZmxvdyIsIiRjb250YWluZXIiLCJ1cGxvYWQiLCJvIiwic3VmZml4Iiwib3B0aW9ucyIsIm1pbWVfdHlwZXMiLCJjb252ZXJ0Iiwid3JhcCIsImwxMG4iLCJwYXN0ZWQiLCJhZGRGaWxlIiwidXBsb2FkZXIiLCJzdGF0ZSIsInJlc2V0Iiwid3AiLCJtZWRpYSIsIm9wZW4iLCJ3cEFjdGl2ZUVkaXRvciIsImZyYW1lIiwidGl0bGUiLCJjb3B5X3Bhc3RlIiwibXVsdGlwbGUiLCJjbG9zZSIsInJlYWR5IiwiYmluZCIsImUiLCJ0b3RhbCIsInBlcmNlbnQiLCJ1cCIsImFyZ3MiLCJpbWdIVE1MIiwiYXR0YWNobWVudCIsImNoYW5nZWQiLCJyZXBsYWNlV2l0aCIsImVhY2giLCJzdWJzdHIiLCJYTUxIdHRwUmVxdWVzdCIsInJlc3BvbnNlVHlwZSIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJyZXNwb25zZSIsInNlbmQiLCJjbGlwYm9hcmRIYXNJbWFnZSIsImhhc0ltYWdlIiwiZXh0IiwiVXBsb2FkZXIiLCJzdWNjZXNzIiwiZmlsZV9hdHRhY2htZW50IiwiXyIsIk1lZGlhRnJhbWUiLCJTZWxlY3QiLCJfcGFyZW50SW5pdGlhbGl6ZSIsImluaXRpYWxpemUiLCJhcHBseSIsImFyZ3VtZW50cyIsImJpbmRQYXN0ZUhhbmRsZXJzIiwiX3BhcmVudEJyb3dzZVJvdXRlciIsImJyb3dzZVJvdXRlciIsInNldCIsInBhc3RlYm9hcmQiLCJwcmlvcml0eSIsInByZXZpb3VzQ29udGVudCIsImRpc21pc3MiLCJjb250ZW50Q3JlYXRlUGFzdGVib2FyZCIsImNvbnRlbnRSZW5kZXJHcmFiYmVyIiwiY3VycmVudFBhc3RlVmlldyIsIkRhdGFTb3VyY2VJbWFnZUdyYWJiZXIiLCJjb250cm9sbGVyIiwiZ3JhYmJlciIsIlBhc3RlYm9hcmQiLCJsaXN0ZW5UbyIsInVwbG9hZGVkRGF0YUltYWdlIiwic3RhcnRHcmFiYmluZyIsInN0b3BMaXN0ZW5pbmciLCJvYmoiLCJicm93c2VDb250ZW50Iiwicm91dGVyIiwic2VsZWN0IiwiQXR0YWNobWVudHNCcm93c2VyIiwicGFzdGVCdG4iLCJzZWxmIiwibW9kYWwiLCJtb2RlIiwiY3VycmVudCIsIkJ1dHRvbiIsImNsYXNzTmFtZSIsImNsaWNrIiwiYWN0aXZlIiwidGhlcGFzdGVPcGVuIiwid3B1cGxvYWRlciIsInRvb2xiYXIiLCJyZW5kZXIiLCJ0aGVwYXN0ZVVwbG9hZGVkIiwidGhlcGFzdGVDbG9zZSIsInRoZXBhc3RlRXJyb3IiLCJNb2RhbCIsInN0b3BHcmFiYmluZyIsImRlYWN0aXZhdGVNb2RlIiwiYWN0aXZhdGVNb2RlIiwiRGF0YVNvdXJjZUltYWdlVXBsb2FkZXIiLCJWaWV3IiwidGVtcGxhdGUiLCIkZGlzY2FyZEJ0biIsIiR1cGxvYWRCdG4iLCJldmVudHMiLCJjbGljayBbZGF0YS1hY3Rpb249XCJ1cGxvYWRcIl0iLCJjbGljayBbZGF0YS1hY3Rpb249XCJkaXNjYXJkXCJdIiwiZGVmYXVsdHMiLCJkZWZhdWx0RmlsZU5hbWUiLCJ0YWdOYW1lIiwidXBsb2RlciIsInNldEltYWdlRGF0YSIsImNvbnRhaW5lciIsIiRpbWFnZUNvbnRhaW5lciIsImh0bWwiLCJmb3JtYXQiLCJkZWZhdWx0RmlsZUZvcm1hdCIsImRlc3Ryb3kiLCJvcHRzIiwiZ2V0VXBsb2FkZXIiLCJnZXRPcHRpb24iLCJzY2FsZSIsIm1heCIsImRvd25zaXplIiwiZW1iZWQiLCJsb2FkIiwiYXBwZW5kIiwiZGlzY2FyZEltYWdlIiwidW5iaW5kVXBsb2FkZXJFdmVudHMiLCJnZXRBc0Jsb2IiLCJqcGVnX3F1YWxpdHkiLCJiaW5kVXBsb2FkZXJFdmVudHMiLCJkZXRhY2giLCJnZXRTb3VyY2UiLCJzaG93IiwiJGVsIiwiaGlkZSIsIl91cGxvYWRTdWNjZXNzSGFuZGxlciIsIl91cGxvYWRFcnJvckhhbmRsZXIiLCJ1bmJpbmQiLCJhY3Rpb24iLCIkcGFzdGVib2FyZCIsIiRtZXNzYWdlIiwic2hvd19tZXNzYWdlIiwic3RhcnQiLCJpbWFnZVBhc3RlZCIsInBhc3RlX2Vycm9yX25vX2ltYWdlIiwicGFzdGVfZXJyb3IiLCJzdG9wIiwib2ZmIiwibXNnIiwicmV0IiwiaW1hZ2VDcmVhdGVkIiwiaW1hZ2VEYXRhIiwiZ2V0QWN0aW9uIiwibU94aWUiXSwibWFwcGluZ3MiOiJDQVFBLFdBQ0UsR0FBSUEsR0FBR0MsRUFBT0MsRUFBc0JDLEVBQWVDLENBRW5ESixHQUFJSyxPQUFPQyxPQUVYTixFQUFFTyxNQUFRLFNBQVNDLEdBQ2pCLEdBQUlDLEVBS0osT0FKdUIsbUJBQVpDLFVBQXVDLE9BQVpBLFNBQ3BDQSxRQUFRQyxJQUFJLDBGQUVkRixFQUFLUixFQUFNVyxrQkFBa0JKLEdBQ3RCQyxFQUFHSSxZQUdaYixFQUFFYyxHQUFHQyxxQkFBdUIsV0FDMUIsR0FBSUMsR0FBSUMsRUFBR0MsRUFBS0MsQ0FFaEIsS0FEQUEsRUFBTUMsS0FDREgsRUFBSSxFQUFHQyxFQUFNQyxFQUFJRSxPQUFRSixFQUFJQyxFQUFLRCxJQUNyQ0QsRUFBS0csRUFBSUYsR0FDTEQsRUFBR00sV0FBYXRCLEVBQUVnQixHQUFJTyxHQUFHLDZDQUc3QnRCLEVBQU1XLGtCQUFrQkksR0FDeEJBLEVBQUdNLFdBQVksRUFFakIsT0FBT0YsT0FHVHBCLEVBQUVjLEdBQUdVLGlCQUFtQixXQUN0QixHQUFJUixHQUFJQyxFQUFHQyxFQUFLQyxDQUVoQixLQURBQSxFQUFNQyxLQUNESCxFQUFJLEVBQUdDLEVBQU1DLEVBQUlFLE9BQVFKLEVBQUlDLEVBQUtELElBQ3JDRCxFQUFLRyxFQUFJRixHQUNMRCxFQUFHTSxXQUFhdEIsRUFBRWdCLEdBQUlPLEdBQUcsZ0NBRzdCdEIsRUFBTXdCLGNBQWNULEdBQ3BCQSxFQUFHTSxXQUFZLEVBRWpCLE9BQU9GLE9BR1RwQixFQUFFYyxHQUFHWSx3QkFBMEIsV0FDN0IsR0FBSVYsR0FBSUMsRUFB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RTVDaE4sS0FBS3BCLEVBQUUsWUFDTDRTLE9BQVF4UixLQUFLOE4sUUFBUXVCLFNBQVM0QyxLQUM5QlQsT0FBUXhSLEtBQUtxSyxTQUFTZ0YsU0FBUzRDLEtBRTFCalMsTUFFUmtULGFBQWUsU0FBVXBGLEVBQVVxRixHQUNsQ25ULEtBQUs4TixRQUFRZ0YsT0FBT1osT0FDcEJsUyxLQUFLcUssU0FBUzJILE9BQU92QixhQUFjMEMsSUFFcENqRixjQUFjLFdBR2IsTUFGQWxPLE1BQUtxSyxTQUFTNkgsT0FDZGxTLEtBQUs4TixRQUFRa0UsT0FBT1UsUUFDYjFTLE1BRVIwUCxhQUFhLFdBRVosTUFEQTFQLE1BQUs4TixRQUFRZ0YsT0FDTjlTLE1BRVJvVCxVQUFZLFdBQ1gsTUFBT3BULE1BQUs4TixRQUFRd0UsUUFFckI5RSxRQUFRLFdBRVAsTUFEQXhOLE1BQUs4TixRQUFRZ0YsT0FDTjlTLFNBSVBkLE9BQU9ELE9BQU9vVSIsImZpbGUiOiJ0aGUtcGFzdGUubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjEyLjdcblxuLypcbnBhc3RlLmpzIGlzIGFuIGludGVyZmFjZSB0byByZWFkIGRhdGEgKCB0ZXh0IC8gaW1hZ2UgKSBmcm9tIGNsaXBib2FyZCBpbiBkaWZmZXJlbnQgYnJvd3NlcnMuIEl0IGFsc28gY29udGFpbnMgc2V2ZXJhbCBoYWNrcy5cblxuaHR0cHM6Ly9naXRodWIuY29tL2xheWVyc3Nzcy9wYXN0ZS5qc1xuICovXG5cbihmdW5jdGlvbigpIHtcbiAgdmFyICQsIFBhc3RlLCBjcmVhdGVIaWRkZW5FZGl0YWJsZSwgZGF0YVVSTHRvQmxvYiwgaXNGb2N1c2FibGU7XG5cbiAgJCA9IHdpbmRvdy5qUXVlcnk7XG5cbiAgJC5wYXN0ZSA9IGZ1bmN0aW9uKHBhc3RlQ29udGFpbmVyKSB7XG4gICAgdmFyIHBtO1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb25zb2xlICE9PSBudWxsKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkRFUFJFQ0FURUQ6IFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgJC5mbi5wYXN0YWJsZU5vbklucHV0YWJsZSgpIGluc3RlYWQuXCIpO1xuICAgIH1cbiAgICBwbSA9IFBhc3RlLm1vdW50Tm9uSW5wdXRhYmxlKHBhc3RlQ29udGFpbmVyKTtcbiAgICByZXR1cm4gcG0uX2NvbnRhaW5lcjtcbiAgfTtcblxuICAkLmZuLnBhc3RhYmxlTm9uSW5wdXRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGVsLCBqLCBsZW4sIHJlZjtcbiAgICByZWYgPSB0aGlzO1xuICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgZWwgPSByZWZbal07XG4gICAgICBpZiAoZWwuX3Bhc3RhYmxlIHx8ICQoZWwpLmlzKCd0ZXh0YXJlYSwgaW5wdXQ6dGV4dCwgW2NvbnRlbnRlZGl0YWJsZV0nKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIFBhc3RlLm1vdW50Tm9uSW5wdXRhYmxlKGVsKTtcbiAgICAgIGVsLl9wYXN0YWJsZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gICQuZm4ucGFzdGFibGVUZXh0YXJlYSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBlbCwgaiwgbGVuLCByZWY7XG4gICAgcmVmID0gdGhpcztcbiAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGVsID0gcmVmW2pdO1xuICAgICAgaWYgKGVsLl9wYXN0YWJsZSB8fCAkKGVsKS5pcygnOm5vdCh0ZXh0YXJlYSwgaW5wdXQ6dGV4dCknKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIFBhc3RlLm1vdW50VGV4dGFyZWEoZWwpO1xuICAgICAgZWwuX3Bhc3RhYmxlID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgJC5mbi5wYXN0YWJsZUNvbnRlbnRlZGl0YWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBlbCwgaiwgbGVuLCByZWY7XG4gICAgcmVmID0gdGhpcztcbiAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGVsID0gcmVmW2pdO1xuICAgICAgaWYgKGVsLl9wYXN0YWJsZSB8fCAkKGVsKS5pcygnOm5vdChbY29udGVudGVkaXRhYmxlXSknKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIFBhc3RlLm1vdW50Q29udGVudGVkaXRhYmxlKGVsKTtcbiAgICAgIGVsLl9wYXN0YWJsZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIGRhdGFVUkx0b0Jsb2IgPSBmdW5jdGlvbihkYXRhVVJMLCBzbGljZVNpemUpIHtcbiAgICB2YXIgYjY0RGF0YSwgYnl0ZUFycmF5LCBieXRlQXJyYXlzLCBieXRlQ2hhcmFjdGVycywgYnl0ZU51bWJlcnMsIGNvbnRlbnRUeXBlLCBpLCBtLCBvZmZzZXQsIHJlZiwgc2xpY2U7XG4gICAgaWYgKHNsaWNlU2l6ZSA9PSBudWxsKSB7XG4gICAgICBzbGljZVNpemUgPSA1MTI7XG4gICAgfVxuICAgIGlmICghKG0gPSBkYXRhVVJMLm1hdGNoKC9eZGF0YVxcOihbXlxcO10rKVxcO2Jhc2U2NFxcLCguKykkLykpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmVmID0gbSwgbSA9IHJlZlswXSwgY29udGVudFR5cGUgPSByZWZbMV0sIGI2NERhdGEgPSByZWZbMl07XG4gICAgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGI2NERhdGEpO1xuICAgIGJ5dGVBcnJheXMgPSBbXTtcbiAgICBvZmZzZXQgPSAwO1xuICAgIHdoaWxlIChvZmZzZXQgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGgpIHtcbiAgICAgIHNsaWNlID0gYnl0ZUNoYXJhY3RlcnMuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBzbGljZVNpemUpO1xuICAgICAgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoc2xpY2UubGVuZ3RoKTtcbiAgICAgIGkgPSAwO1xuICAgICAgd2hpbGUgKGkgPCBzbGljZS5sZW5ndGgpIHtcbiAgICAgICAgYnl0ZU51bWJlcnNbaV0gPSBzbGljZS5jaGFyQ29kZUF0KGkpO1xuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgICBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG4gICAgICBieXRlQXJyYXlzLnB1c2goYnl0ZUFycmF5KTtcbiAgICAgIG9mZnNldCArPSBzbGljZVNpemU7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQmxvYihieXRlQXJyYXlzLCB7XG4gICAgICB0eXBlOiBjb250ZW50VHlwZVxuICAgIH0pO1xuICB9O1xuXG4gIGNyZWF0ZUhpZGRlbkVkaXRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpLmF0dHIoJ2NvbnRlbnRlZGl0YWJsZScsIHRydWUpLmF0dHIoJ2FyaWEtaGlkZGVuJywgdHJ1ZSkuYXR0cigndGFiaW5kZXgnLCAtMSkuY3NzKHtcbiAgICAgIHdpZHRoOiAxLFxuICAgICAgaGVpZ2h0OiAxLFxuICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICBsZWZ0OiAtMTAwLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nXG4gICAgfSk7XG4gIH07XG5cbiAgaXNGb2N1c2FibGUgPSBmdW5jdGlvbihlbGVtZW50LCBoYXNUYWJpbmRleCkge1xuICAgIHZhciBmaWVsZHNldCwgZm9jdXNhYmxlSWZWaXNpYmxlLCBpbWcsIG1hcCwgbWFwTmFtZSwgbm9kZU5hbWU7XG4gICAgbWFwID0gdm9pZCAwO1xuICAgIG1hcE5hbWUgPSB2b2lkIDA7XG4gICAgaW1nID0gdm9pZCAwO1xuICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9IHZvaWQgMDtcbiAgICBmaWVsZHNldCA9IHZvaWQgMDtcbiAgICBub2RlTmFtZSA9IGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoJ2FyZWEnID09PSBub2RlTmFtZSkge1xuICAgICAgbWFwID0gZWxlbWVudC5wYXJlbnROb2RlO1xuICAgICAgbWFwTmFtZSA9IG1hcC5uYW1lO1xuICAgICAgaWYgKCFlbGVtZW50LmhyZWYgfHwgIW1hcE5hbWUgfHwgbWFwLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdtYXAnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGltZyA9ICQoJ2ltZ1t1c2VtYXA9XFwnIycgKyBtYXBOYW1lICsgJ1xcJ10nKTtcbiAgICAgIHJldHVybiBpbWcubGVuZ3RoID4gMCAmJiBpbWcuaXMoJzp2aXNpYmxlJyk7XG4gICAgfVxuICAgIGlmICgvXihpbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9ufG9iamVjdCkkLy50ZXN0KG5vZGVOYW1lKSkge1xuICAgICAgZm9jdXNhYmxlSWZWaXNpYmxlID0gIWVsZW1lbnQuZGlzYWJsZWQ7XG4gICAgICBpZiAoZm9jdXNhYmxlSWZWaXNpYmxlKSB7XG4gICAgICAgIGZpZWxkc2V0ID0gJChlbGVtZW50KS5jbG9zZXN0KCdmaWVsZHNldCcpWzBdO1xuICAgICAgICBpZiAoZmllbGRzZXQpIHtcbiAgICAgICAgICBmb2N1c2FibGVJZlZpc2libGUgPSAhZmllbGRzZXQuZGlzYWJsZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCdhJyA9PT0gbm9kZU5hbWUpIHtcbiAgICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9IGVsZW1lbnQuaHJlZiB8fCBoYXNUYWJpbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9jdXNhYmxlSWZWaXNpYmxlID0gaGFzVGFiaW5kZXg7XG4gICAgfVxuICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9IGZvY3VzYWJsZUlmVmlzaWJsZSB8fCAkKGVsZW1lbnQpLmlzKCdbY29udGVudGVkaXRhYmxlXScpO1xuICAgIHJldHVybiBmb2N1c2FibGVJZlZpc2libGUgJiYgJChlbGVtZW50KS5pcygnOnZpc2libGUnKTtcbiAgfTtcblxuICBQYXN0ZSA9IChmdW5jdGlvbigpIHtcbiAgICBQYXN0ZS5wcm90b3R5cGUuX3RhcmdldCA9IG51bGw7XG5cbiAgICBQYXN0ZS5wcm90b3R5cGUuX2NvbnRhaW5lciA9IG51bGw7XG5cbiAgICBQYXN0ZS5tb3VudE5vbklucHV0YWJsZSA9IGZ1bmN0aW9uKG5vbklucHV0YWJsZSkge1xuICAgICAgdmFyIHBhc3RlO1xuICAgICAgcGFzdGUgPSBuZXcgUGFzdGUoY3JlYXRlSGlkZGVuRWRpdGFibGUoKS5hcHBlbmRUbyhub25JbnB1dGFibGUpLCBub25JbnB1dGFibGUpO1xuICAgICAgJChub25JbnB1dGFibGUpLm9uKCdjbGljaycsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXYpIHtcbiAgICAgICAgICBpZiAoIWlzRm9jdXNhYmxlKGV2LnRhcmdldCwgZmFsc2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFzdGUuX2NvbnRhaW5lci5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHBhc3RlLl9jb250YWluZXIub24oJ2ZvY3VzJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gJChub25JbnB1dGFibGUpLmFkZENsYXNzKCdwYXN0YWJsZS1mb2N1cycpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgcmV0dXJuIHBhc3RlLl9jb250YWluZXIub24oJ2JsdXInLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiAkKG5vbklucHV0YWJsZSkucmVtb3ZlQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgfTtcblxuICAgIFBhc3RlLm1vdW50VGV4dGFyZWEgPSBmdW5jdGlvbih0ZXh0YXJlYSkge1xuICAgICAgdmFyIGN0bERvd24sIHBhc3RlLCByZWYsIHJlZjE7XG4gICAgICBpZiAoKHR5cGVvZiBEYXRhVHJhbnNmZXIgIT09IFwidW5kZWZpbmVkXCIgJiYgRGF0YVRyYW5zZmVyICE9PSBudWxsID8gRGF0YVRyYW5zZmVyLnByb3RvdHlwZSA6IHZvaWQgMCkgJiYgKChyZWYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKSAhPSBudWxsID8gKHJlZjEgPSByZWYuY2FsbChPYmplY3QsIERhdGFUcmFuc2Zlci5wcm90b3R5cGUsICdpdGVtcycpKSAhPSBudWxsID8gcmVmMS5nZXQgOiB2b2lkIDAgOiB2b2lkIDApKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vdW50Q29udGVudGVkaXRhYmxlKHRleHRhcmVhKTtcbiAgICAgIH1cbiAgICAgIHBhc3RlID0gbmV3IFBhc3RlKGNyZWF0ZUhpZGRlbkVkaXRhYmxlKCkuaW5zZXJ0QmVmb3JlKHRleHRhcmVhKSwgdGV4dGFyZWEpO1xuICAgICAgY3RsRG93biA9IGZhbHNlO1xuICAgICAgJCh0ZXh0YXJlYSkub24oJ2tleXVwJywgZnVuY3Rpb24oZXYpIHtcbiAgICAgICAgdmFyIHJlZjI7XG4gICAgICAgIGlmICgocmVmMiA9IGV2LmtleUNvZGUpID09PSAxNyB8fCByZWYyID09PSAyMjQpIHtcbiAgICAgICAgICBjdGxEb3duID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcbiAgICAgICQodGV4dGFyZWEpLm9uKCdrZXlkb3duJywgZnVuY3Rpb24oZXYpIHtcbiAgICAgICAgdmFyIHJlZjI7XG4gICAgICAgIGlmICgocmVmMiA9IGV2LmtleUNvZGUpID09PSAxNyB8fCByZWYyID09PSAyMjQpIHtcbiAgICAgICAgICBjdGxEb3duID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGV2LmN0cmxLZXkgIT0gbnVsbCkgJiYgKGV2Lm1ldGFLZXkgIT0gbnVsbCkpIHtcbiAgICAgICAgICBjdGxEb3duID0gZXYuY3RybEtleSB8fCBldi5tZXRhS2V5O1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdGxEb3duICYmIGV2LmtleUNvZGUgPT09IDg2KSB7XG4gICAgICAgICAgcGFzdGUuX3RleHRhcmVhX2ZvY3VzX3N0b2xlbiA9IHRydWU7XG4gICAgICAgICAgcGFzdGUuX2NvbnRhaW5lci5mb2N1cygpO1xuICAgICAgICAgIHBhc3RlLl9wYXN0ZV9ldmVudF9maXJlZCA9IGZhbHNlO1xuICAgICAgICAgIHNldFRpbWVvdXQoKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIGlmICghcGFzdGUuX3Bhc3RlX2V2ZW50X2ZpcmVkKSB7XG4gICAgICAgICAgICAgICAgJCh0ZXh0YXJlYSkuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFzdGUuX3RleHRhcmVhX2ZvY3VzX3N0b2xlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pKHRoaXMpLCAxKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pO1xuICAgICAgJCh0ZXh0YXJlYSkub24oJ3Bhc3RlJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHt9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgJCh0ZXh0YXJlYSkub24oJ2ZvY3VzJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBpZiAoIXBhc3RlLl90ZXh0YXJlYV9mb2N1c19zdG9sZW4pIHtcbiAgICAgICAgICAgIHJldHVybiAkKHRleHRhcmVhKS5hZGRDbGFzcygncGFzdGFibGUtZm9jdXMnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICAkKHRleHRhcmVhKS5vbignYmx1cicsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKCFwYXN0ZS5fdGV4dGFyZWFfZm9jdXNfc3RvbGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gJCh0ZXh0YXJlYSkucmVtb3ZlQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgJChwYXN0ZS5fdGFyZ2V0KS5vbignX3Bhc3RlQ2hlY2tDb250YWluZXJEb25lJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAkKHRleHRhcmVhKS5mb2N1cygpO1xuICAgICAgICAgIHJldHVybiBwYXN0ZS5fdGV4dGFyZWFfZm9jdXNfc3RvbGVuID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICByZXR1cm4gJChwYXN0ZS5fdGFyZ2V0KS5vbigncGFzdGVUZXh0JywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihldiwgZGF0YSkge1xuICAgICAgICAgIHZhciBjb250ZW50LCBjdXJFbmQsIGN1clN0YXJ0O1xuICAgICAgICAgIGN1clN0YXJ0ID0gJCh0ZXh0YXJlYSkucHJvcCgnc2VsZWN0aW9uU3RhcnQnKTtcbiAgICAgICAgICBjdXJFbmQgPSAkKHRleHRhcmVhKS5wcm9wKCdzZWxlY3Rpb25FbmQnKTtcbiAgICAgICAgICBjb250ZW50ID0gJCh0ZXh0YXJlYSkudmFsKCk7XG4gICAgICAgICAgJCh0ZXh0YXJlYSkudmFsKFwiXCIgKyBjb250ZW50LnNsaWNlKDAsIGN1clN0YXJ0KSArIGRhdGEudGV4dCArIGNvbnRlbnQuc2xpY2UoY3VyRW5kKSk7XG4gICAgICAgICAgJCh0ZXh0YXJlYSlbMF0uc2V0U2VsZWN0aW9uUmFuZ2UoY3VyU3RhcnQgKyBkYXRhLnRleHQubGVuZ3RoLCBjdXJTdGFydCArIGRhdGEudGV4dC5sZW5ndGgpO1xuICAgICAgICAgIHJldHVybiAkKHRleHRhcmVhKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICB9O1xuXG4gICAgUGFzdGUubW91bnRDb250ZW50ZWRpdGFibGUgPSBmdW5jdGlvbihjb250ZW50ZWRpdGFibGUpIHtcbiAgICAgIHZhciBwYXN0ZTtcbiAgICAgIHBhc3RlID0gbmV3IFBhc3RlKGNvbnRlbnRlZGl0YWJsZSwgY29udGVudGVkaXRhYmxlKTtcbiAgICAgICQoY29udGVudGVkaXRhYmxlKS5vbignZm9jdXMnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiAkKGNvbnRlbnRlZGl0YWJsZSkuYWRkQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICByZXR1cm4gJChjb250ZW50ZWRpdGFibGUpLm9uKCdibHVyJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gJChjb250ZW50ZWRpdGFibGUpLnJlbW92ZUNsYXNzKCdwYXN0YWJsZS1mb2N1cycpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBQYXN0ZShfY29udGFpbmVyLCBfdGFyZ2V0KSB7XG4gICAgICB0aGlzLl9jb250YWluZXIgPSBfY29udGFpbmVyO1xuICAgICAgdGhpcy5fdGFyZ2V0ID0gX3RhcmdldDtcbiAgICAgIHRoaXMuX2NvbnRhaW5lciA9ICQodGhpcy5fY29udGFpbmVyKTtcbiAgICAgIHRoaXMuX3RhcmdldCA9ICQodGhpcy5fdGFyZ2V0KS5hZGRDbGFzcygncGFzdGFibGUnKTtcbiAgICAgIHRoaXMuX2NvbnRhaW5lci5vbigncGFzdGUnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2KSB7XG4gICAgICAgICAgdmFyIGNsaXBib2FyZERhdGEsIGZpbGUsIGl0ZW0sIGosIGssIGxlbiwgbGVuMSwgcmVhZGVyLCByZWYsIHJlZjEsIHJlZjIsIHJlZjMsIHRleHQ7XG4gICAgICAgICAgaWYgKGV2LmN1cnJlbnRUYXJnZXQgIT09IGV2LnRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIF90aGlzLl9wYXN0ZV9ldmVudF9maXJlZCA9IHRydWU7XG4gICAgICAgICAgaWYgKCgocmVmID0gZXYub3JpZ2luYWxFdmVudCkgIT0gbnVsbCA/IHJlZi5jbGlwYm9hcmREYXRhIDogdm9pZCAwKSAhPSBudWxsKSB7XG4gICAgICAgICAgICBjbGlwYm9hcmREYXRhID0gZXYub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhO1xuICAgICAgICAgICAgaWYgKGNsaXBib2FyZERhdGEuaXRlbXMpIHtcbiAgICAgICAgICAgICAgcmVmMSA9IGNsaXBib2FyZERhdGEuaXRlbXM7XG4gICAgICAgICAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZjEubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpdGVtID0gcmVmMVtqXTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlLm1hdGNoKC9eaW1hZ2VcXC8vKSkge1xuICAgICAgICAgICAgICAgICAgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuX2hhbmRsZUltYWdlKGV2ZW50LnRhcmdldC5yZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGl0ZW0uZ2V0QXNGaWxlKCkpO1xuICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICd0ZXh0L3BsYWluJykge1xuICAgICAgICAgICAgICAgICAgaXRlbS5nZXRBc1N0cmluZyhmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVUZXh0Jywge1xuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHN0cmluZ1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKC0xICE9PSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGNsaXBib2FyZERhdGEudHlwZXMsICd0ZXh0L3BsYWluJykpIHtcbiAgICAgICAgICAgICAgICB0ZXh0ID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCdUZXh0Jyk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlVGV4dCcsIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgMSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgX3RoaXMuX2NoZWNrSW1hZ2VzSW5Db250YWluZXIoZnVuY3Rpb24oc3JjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLl9oYW5kbGVJbWFnZShzcmMpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNsaXBib2FyZERhdGEgPSB3aW5kb3cuY2xpcGJvYXJkRGF0YSkge1xuICAgICAgICAgICAgaWYgKChyZWYyID0gKHRleHQgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoJ1RleHQnKSkpICE9IG51bGwgPyByZWYyLmxlbmd0aCA6IHZvaWQgMCkge1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVUZXh0Jywge1xuICAgICAgICAgICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ19wYXN0ZUNoZWNrQ29udGFpbmVyRG9uZScpO1xuICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlZjMgPSBjbGlwYm9hcmREYXRhLmZpbGVzO1xuICAgICAgICAgICAgICBmb3IgKGsgPSAwLCBsZW4xID0gcmVmMy5sZW5ndGg7IGsgPCBsZW4xOyBrKyspIHtcbiAgICAgICAgICAgICAgICBmaWxlID0gcmVmM1trXTtcbiAgICAgICAgICAgICAgICBfdGhpcy5faGFuZGxlSW1hZ2UoVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgX3RoaXMuX2NoZWNrSW1hZ2VzSW5Db250YWluZXIoZnVuY3Rpb24oc3JjKSB7fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgIH1cblxuICAgIFBhc3RlLnByb3RvdHlwZS5faGFuZGxlSW1hZ2UgPSBmdW5jdGlvbihzcmMpIHtcbiAgICAgIHZhciBsb2FkZXI7XG4gICAgICBpZiAoc3JjLm1hdGNoKC9ed2Via2l0XFwtZmFrZVxcLXVybFxcOlxcL1xcLy8pKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVJbWFnZUVycm9yJywge1xuICAgICAgICAgIG1lc3NhZ2U6IFwiWW91IGFyZSB0cnlpbmcgdG8gcGFzdGUgYW4gaW1hZ2UgaW4gU2FmYXJpLCBob3dldmVyIHdlIGFyZSB1bmFibGUgdG8gcmV0aWV2ZSBpdHMgZGF0YS5cIlxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZUltYWdlU3RhcnQnKTtcbiAgICAgIGxvYWRlciA9IG5ldyBJbWFnZSgpO1xuICAgICAgbG9hZGVyLmNyb3NzT3JpZ2luID0gXCJhbm9ueW1vdXNcIjtcbiAgICAgIGxvYWRlci5vbmxvYWQgPSAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBibG9iLCBjYW52YXMsIGN0eCwgZGF0YVVSTDtcbiAgICAgICAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgICBjYW52YXMud2lkdGggPSBsb2FkZXIud2lkdGg7XG4gICAgICAgICAgY2FudmFzLmhlaWdodCA9IGxvYWRlci5oZWlnaHQ7XG4gICAgICAgICAgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShsb2FkZXIsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG4gICAgICAgICAgZGF0YVVSTCA9IG51bGw7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGRhdGFVUkwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICAgICAgICAgIGJsb2IgPSBkYXRhVVJMdG9CbG9iKGRhdGFVUkwpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgICAgIGlmIChkYXRhVVJMKSB7XG4gICAgICAgICAgICBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlSW1hZ2UnLCB7XG4gICAgICAgICAgICAgIGJsb2I6IGJsb2IsXG4gICAgICAgICAgICAgIGRhdGFVUkw6IGRhdGFVUkwsXG4gICAgICAgICAgICAgIHdpZHRoOiBsb2FkZXIud2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodDogbG9hZGVyLmhlaWdodFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlSW1hZ2VFbmQnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpO1xuICAgICAgbG9hZGVyLm9uZXJyb3IgPSAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVJbWFnZUVycm9yJywge1xuICAgICAgICAgICAgbWVzc2FnZTogXCJGYWlsZWQgdG8gZ2V0IGltYWdlIGZyb206IFwiICsgc3JjLFxuICAgICAgICAgICAgdXJsOiBzcmNcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZUltYWdlRW5kJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKTtcbiAgICAgIHJldHVybiBsb2FkZXIuc3JjID0gc3JjO1xuICAgIH07XG5cbiAgICBQYXN0ZS5wcm90b3R5cGUuX2NoZWNrSW1hZ2VzSW5Db250YWluZXIgPSBmdW5jdGlvbihjYikge1xuICAgICAgdmFyIGltZywgaiwgbGVuLCByZWYsIHRpbWVzcGFuO1xuICAgICAgdGltZXNwYW4gPSBNYXRoLmZsb29yKDEwMDAgKiBNYXRoLnJhbmRvbSgpKTtcbiAgICAgIHJlZiA9IHRoaXMuX2NvbnRhaW5lci5maW5kKCdpbWcnKTtcbiAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgICBpbWcgPSByZWZbal07XG4gICAgICAgIGltZ1tcIl9wYXN0ZV9tYXJrZWRfXCIgKyB0aW1lc3Bhbl0gPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgaywgbGVuMSwgcmVmMTtcbiAgICAgICAgICByZWYxID0gX3RoaXMuX2NvbnRhaW5lci5maW5kKCdpbWcnKTtcbiAgICAgICAgICBmb3IgKGsgPSAwLCBsZW4xID0gcmVmMS5sZW5ndGg7IGsgPCBsZW4xOyBrKyspIHtcbiAgICAgICAgICAgIGltZyA9IHJlZjFba107XG4gICAgICAgICAgICBpZiAoIWltZ1tcIl9wYXN0ZV9tYXJrZWRfXCIgKyB0aW1lc3Bhbl0pIHtcbiAgICAgICAgICAgICAgY2IoaW1nLnNyYyk7XG4gICAgICAgICAgICAgICQoaW1nKS5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIF90aGlzLl90YXJnZXQudHJpZ2dlcignX3Bhc3RlQ2hlY2tDb250YWluZXJEb25lJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSwgMSk7XG4gICAgfTtcblxuICAgIHJldHVybiBQYXN0ZTtcblxuICB9KSgpO1xuXG59KS5jYWxsKHRoaXMpO1xuXG4oZnVuY3Rpb24oJCxleHBvcnRzKXtcblxuXHR2YXIgaXNfY2hyb21lXHQ9IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignQ2hyb21lJykgPiAtMSxcblx0XHRjb3VudGVyID0gMCxcblx0XHR3b3JrZmxvdztcblx0XHRcblx0dGhlcGFzdGUgPSBleHBvcnRzLnRoZXBhc3RlID0gJC5leHRlbmQoIHtcblx0XHRzdXBwb3J0cyA6IHtcblx0XHRcdHBhc3RlOiAoICgncGFzdGUnIGluIGRvY3VtZW50KSB8fCAoJ29ucGFzdGUnIGluIGRvY3VtZW50KSB8fCB0eXBlb2Yod2luZG93Lm9ucGFzdGUpID09PSAnb2JqZWN0JyB8fCAoICdvbnBhc3RlJyBpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKSApICksIC8vIGJyb3dzZXJcblx0XHR9LFxuXHRcdHZpZXc6e30sXG5cdFx0XG5cdFx0aW5zZXJ0SW1hZ2U6ZnVuY3Rpb24oIGRhdGFVUkwsIHR5cGUsIGVkaXRvciApIHtcblx0XHRcdHZhciBpZCA9ICdfX3RoZXBhc3RlX2ltZ18nKyhjb3VudGVyKyspLFxuXHRcdFx0XHRpbWFnZUh0bWwgPSAnPGltZyBpZD1cIicraWQrJ1wiIGNsYXNzPVwiYWxpZ25ub25lIHNpemUtZnVsbFwiIHNyYz1cIicrZGF0YVVSTCsnXCIgLz4nLFxuXHRcdFx0XHQkY29udGFpbmVyO1xuXG5cblx0XHRcdGVkaXRvci5pbnNlcnRDb250ZW50KCBpbWFnZUh0bWwgKTtcblx0XHRcdFxuXHRcdFx0cmV0dXJuIGVkaXRvci4kKCcjJytpZClbMF07XG5cdFx0fSxcblxuXHRcdHVwbG9hZEltYWdlOiBmdW5jdGlvbiggaW1hZ2UsIGVkaXRvciApIHtcblxuXHRcdFx0dmFyIHhocixcblx0XHRcdFx0d29ya2Zsb3csIFxuXHRcdFx0XHQkY29udGFpbmVyLFxuXHRcdFx0XHRzcmMgPSBpbWFnZS5zcmMsXG5cdFx0XHRcdHVwbG9hZCA9IGZ1bmN0aW9uKCBkYXRhVVJMICl7XG5cdFx0XHRcdFx0dmFyIGlkID0gJ19fdGhlcGFzdGVfYm94XycrKGNvdW50ZXIrKyksXG5cdFx0XHRcdFx0XHR0eXBlID0gZGF0YVVSTC5tYXRjaCgvXmRhdGFcXDooW15cXDtdKylcXDsvKVsxXVxuXHRcdFx0XHRcdFx0ZmlsZSA9IG5ldyBvLkJsb2IoIG51bGwsIHsgZGF0YTogZGF0YVVSTCB9IClcblx0XHRcdFx0XHRcdHN1ZmZpeCA9IHRoZXBhc3RlLm9wdGlvbnMubWltZV90eXBlcy5jb252ZXJ0WyB0eXBlIF07XG5cblx0XHRcdFx0XHQkKGltYWdlKS53cmFwKCc8ZGl2IGlkPVwiJytpZCsnXCIgZGF0YS1wcm9ncmVzcz1cIjBcIiBjbGFzcz1cInRoZXBhc3RlLWltYWdlLXBsYWNlaG9sZGVyXCIgY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIj48L2Rpdj4nKTtcblx0XHRcdFx0XHQkY29udGFpbmVyID0gZWRpdG9yLiQoJyMnK2lkKTtcblxuXHRcdFx0XHRcdGZpbGUubmFtZSA9IHRoZXBhc3RlLmwxMG4ucGFzdGVkICsgJy4nICsgc3VmZml4O1xuXHRcdFx0XHRcdGZpbGUudHlwZSA9IHR5cGU7XG5cblx0XHRcdFx0XHR2YXIgYWRkRmlsZSA9IGZ1bmN0aW9uKCl7XG5cdFx0XHRcdFx0XHR3b3JrZmxvdy51cGxvYWRlci51cGxvYWRlci51cGxvYWRlci5hZGRGaWxlKCBmaWxlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggISB3b3JrZmxvdyApIHtcblx0XHRcdFx0XHRcdHdvcmtmbG93ID0gd3AubWVkaWEuZWRpdG9yLm9wZW4oIHdpbmRvdy53cEFjdGl2ZUVkaXRvciwge1xuXHRcdFx0XHRcdFx0XHRmcmFtZTpcdFx0J3Bvc3QnLFxuXHRcdFx0XHRcdFx0XHRzdGF0ZTpcdFx0J2luc2VydCcsXG5cdFx0XHRcdFx0XHRcdHRpdGxlOlx0XHR0aGVwYXN0ZS5sMTBuLmNvcHlfcGFzdGUsXG5cdFx0XHRcdFx0XHRcdG11bHRpcGxlOlx0ZmFsc2Vcblx0XHRcdFx0XHRcdH0gKTtcblxuXHRcdFx0XHRcdFx0d29ya2Zsb3cuY2xvc2UoKTtcblxuXHRcdFx0XHRcdFx0aWYgKCB3b3JrZmxvdy51cGxvYWRlci51cGxvYWRlciAmJiB3b3JrZmxvdy51cGxvYWRlci51cGxvYWRlci5yZWFkeSApIHtcblx0XHRcdFx0XHRcdFx0YWRkRmlsZSgpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0d29ya2Zsb3cub24oICd1cGxvYWRlcjpyZWFkeScsIGFkZEZpbGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0d29ya2Zsb3cuc3RhdGUoKS5yZXNldCgpO1xuXHRcdFx0XHRcdFx0YWRkRmlsZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR3b3JrZmxvdy51cGxvYWRlci51cGxvYWRlci51cGxvYWRlci5iaW5kKCdVcGxvYWRQcm9ncmVzcycsZnVuY3Rpb24oIGUgKXtcblx0XHRcdFx0XHRcdCRjb250YWluZXIuYXR0cignZGF0YS1wcm9ncmVzcycsZS50b3RhbC5wZXJjZW50KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR3b3JrZmxvdy51cGxvYWRlci51cGxvYWRlci51cGxvYWRlci5iaW5kKCdGaWxlVXBsb2FkZWQnLGZ1bmN0aW9uKCB1cCwgYXJncyApe1xuXHRcdFx0XHRcdFx0dmFyIGltZ0hUTUwgPSAnPGltZyBjbGFzcz1cImFsaWdubm9uZSB3cC1pbWFnZS0nK2FyZ3MuYXR0YWNobWVudC5pZCsnIHNpemUtZnVsbFwiIHNyYz1cIicrYXJncy5hdHRhY2htZW50LmNoYW5nZWQudXJsKydcIiAvPic7XG5cdFx0XHRcdFx0XHQvLyByZXBsYWNlIGltYWdlXG5cdFx0XHRcdFx0XHQkY29udGFpbmVyLnJlcGxhY2VXaXRoKCBpbWdIVE1MICk7XG5cdFx0XHRcdFx0XHQvLyByZXBsYWNlIG90aGVyIGluc3RhbmNlc1xuXHRcdFx0XHRcdFx0ZWRpdG9yLiQoJ2ltZ1tzcmM9XCInK3NyYysnXCJdJykuZWFjaChmdW5jdGlvbigpe1xuXHRcdFx0XHRcdFx0XHQkKHRoaXMpLnJlcGxhY2VXaXRoKCBpbWdIVE1MICk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR3b3JrZmxvdy51cGxvYWRlci51cGxvYWRlci51cGxvYWRlci5iaW5kKCdFcnJvcicsZnVuY3Rpb24oIHVwLCBhcmdzICl7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyh1cCxhcmdzKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fTtcblxuXHRcdFx0aWYgKCBzcmMuc3Vic3RyKDAsNSkgPT09ICdibG9iOicgKSB7XG5cblx0XHRcdFx0eGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG5cdFx0XHRcdHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYic7XG5cdFx0XHRcdHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpe1xuXHRcdFx0XHRcdHZhciByZWFkZXI7XG5cdFx0XHRcdFx0aWYgKCB4aHIucmVhZHlTdGF0ZSA9PSA0ICkge1xuXHRcdFx0XHRcdFx0cmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblx0XHRcdFx0XHRcdHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHRcdFx0XHR1cGxvYWQoIHJlYWRlci5yZXN1bHQgKTtcblxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmVhZGVyLnJlYWRBc0RhdGFVUkwoIHhoci5yZXNwb25zZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHR4aHIub3BlbiggJ0dFVCcsIHNyYyApO1xuXHRcdFx0XHR4aHIuc2VuZCggbnVsbCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBzcmMuc3Vic3RyKDAsNSkgPT09ICdkYXRhOicgKSB7XG5cblx0XHRcdFx0dXBsb2FkKCBzcmMgKTtcblxuXHRcdFx0fSBcblx0XHRcdFxuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKlx0QHJldHVybjogbnVsbHx0cnVlfGZhbHNlXG5cdFx0ICovXG5cdFx0Y2xpcGJvYXJkSGFzSW1hZ2U6ZnVuY3Rpb24oIGNsaXBib2FyZERhdGEgKSB7XG5cdFx0XHR2YXIgaGFzSW1hZ2UgPSBmYWxzZTtcblx0XHRcdGlmICggY2xpcGJvYXJkRGF0YS5pdGVtcyApIHtcblx0XHRcdFx0JC5lYWNoKCBjbGlwYm9hcmREYXRhLml0ZW1zLCBmdW5jdGlvbihpLGl0ZW0pe1xuXHRcdFx0XHRcdGlmICggaXRlbS50eXBlIGluIHRoZXBhc3RlLm9wdGlvbnMubWltZV90eXBlcy5wYXN0ZSApIHtcblx0XHRcdFx0XHRcdGhhc0ltYWdlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHRcdFx0cmV0dXJuIGhhc0ltYWdlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGNsaXBib2FyZERhdGEudHlwZXMgKSB7XG5cdFx0XHRcdCQuZWFjaCggdGhlcGFzdGUub3B0aW9ucy5taW1lX3R5cGVzLnBhc3RlLCBmdW5jdGlvbih0eXBlLGV4dCl7XG5cdFx0XHRcdFx0aWYgKCBjbGlwYm9hcmREYXRhLnR5cGVzLmluZGV4T2YodHlwZSkgPiAtMSApIHtcblx0XHRcdFx0XHRcdGhhc0ltYWdlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHRcdFx0cmV0dXJuIGhhc0ltYWdlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXG5cblx0fSwgdGhlcGFzdGUgKTtcblxufSkoIGpRdWVyeSwgd3AubWVkaWEgKTtcblxuXG4oZnVuY3Rpb24oJCxleHBvcnRzKXtcblxuXHR2YXIgY291bnRlciAgICAgID0gMCxcblx0XHRsMTBuID0gd3AubWVkaWEudGhlcGFzdGUubDEwbjtcblxuXHQkLmV4dGVuZCggd3AuVXBsb2FkZXIucHJvdG90eXBlLCB7XG5cdFx0c3VjY2VzcyA6IGZ1bmN0aW9uKCBmaWxlX2F0dGFjaG1lbnQgKXtcblx0XHR9XG5cdH0pO1xuXG5cblx0LyoqXG5cdCAqXHRJbnRlZ3JhdGUgaW50byBtZWRpYSBsaWJyYXJ5IG1vZGFsXG5cdCAqL1xuXHQvLyBhZGQgc3RhdGVzIHRvIGJyb3dzZSByb3V0ZXJcblx0Xy5leHRlbmQoIHdwLm1lZGlhLnZpZXcuTWVkaWFGcmFtZS5TZWxlY3QucHJvdG90eXBlLCB7XG5cdFx0X3BhcmVudEluaXRpYWxpemU6IHdwLm1lZGlhLnZpZXcuTWVkaWFGcmFtZS5TZWxlY3QucHJvdG90eXBlLmluaXRpYWxpemUsXG5cdFx0aW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLl9wYXJlbnRJbml0aWFsaXplLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdHRoaXMuYmluZFBhc3RlSGFuZGxlcnMoKTtcblx0XHR9LFxuXHRcdF9wYXJlbnRCcm93c2VSb3V0ZXI6IHdwLm1lZGlhLnZpZXcuTWVkaWFGcmFtZS5TZWxlY3QucHJvdG90eXBlLmJyb3dzZVJvdXRlcixcblx0XHRicm93c2VSb3V0ZXIgOiBmdW5jdGlvbiggdmlldyApIHtcblx0XHRcdHRoaXMuX3BhcmVudEJyb3dzZVJvdXRlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7XG5cblx0XHRcdGlmICggd3AubWVkaWEudGhlcGFzdGUuc3VwcG9ydHMucGFzdGUgKSB7XG5cdFx0XHRcdHZpZXcuc2V0KHtwYXN0ZWJvYXJkOntcblx0XHRcdFx0XHR0ZXh0OiAgICAgbDEwbi5jb3B5X3Bhc3RlLFxuXHRcdFx0XHRcdHByaW9yaXR5OiAzNVxuXHRcdFx0XHR9fSk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdGJpbmRQYXN0ZUhhbmRsZXJzOiBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBwcmV2aW91c0NvbnRlbnQgPSBmYWxzZTtcblx0XHRcblx0XHRcdC8vIGRpc21pc3MgY29udGVudCBvbiBjbG9zZVxuXHRcdFx0dGhpcy5vbiggJ2NvbnRlbnQ6cmVuZGVyIGNsb3NlJyAsIGZ1bmN0aW9uKGNvbnRlbnQpe1xuXHRcdFx0XHRpZiAoIHByZXZpb3VzQ29udGVudCAmJiAnZnVuY3Rpb24nID09PSB0eXBlb2YgcHJldmlvdXNDb250ZW50LmRpc21pc3MgKSB7XG5cdFx0XHRcdFx0cHJldmlvdXNDb250ZW50LmRpc21pc3MoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YgY29udGVudCApXG5cdFx0XHRcdFx0cHJldmlvdXNDb250ZW50ID0gY29udGVudDtcblx0XHRcdH0gLCB0aGlzICk7XG5cdFx0XG5cdFx0XHR0aGlzLm9uKCAnY29udGVudDpjcmVhdGU6cGFzdGVib2FyZCcsIHRoaXMuY29udGVudENyZWF0ZVBhc3RlYm9hcmQsIHRoaXMgKTtcblx0XHRcdHRoaXMub24oICdjb250ZW50OnJlbmRlcjpwYXN0ZWJvYXJkJywgdGhpcy5jb250ZW50UmVuZGVyR3JhYmJlciwgdGhpcyApO1xuXG5cdFx0XHRmcmFtZSA9IHRoaXM7XG5cdFx0fSxcblx0XHQvLyBhZGQgaGFuZGxlcnNcblx0XHRjb250ZW50Q3JlYXRlUGFzdGVib2FyZDogZnVuY3Rpb24oIGNvbnRlbnQgKSB7XG5cdFx0XHR2YXIgc3RhdGUgPSB0aGlzLnN0YXRlKCk7XG5cblx0XHRcdHRoaXMuY3VycmVudFBhc3RlVmlldyA9IGNvbnRlbnQudmlldyA9IG5ldyB3cC5tZWRpYS50aGVwYXN0ZS52aWV3LkRhdGFTb3VyY2VJbWFnZUdyYWJiZXIoIHsgXG5cdFx0XHRcdGNvbnRyb2xsZXJcdDogdGhpcywgXG5cdFx0XHRcdGdyYWJiZXJcdFx0OiB3cC5tZWRpYS50aGVwYXN0ZS52aWV3LlBhc3RlYm9hcmRcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5saXN0ZW5UbyggdGhpcy5jdXJyZW50UGFzdGVWaWV3LnVwbG9hZGVyLCAnYWN0aW9uOnVwbG9hZGVkOmRhdGFpbWFnZScsIHRoaXMudXBsb2FkZWREYXRhSW1hZ2UgKTtcblx0XHR9LFxuXHRcdGNvbnRlbnRSZW5kZXJHcmFiYmVyOiBmdW5jdGlvbiggY29udGVudCApIHtcblx0XHRcdGNvbnRlbnQuc3RhcnRHcmFiYmluZygpO1xuXHRcdH0sXG5cdFx0dXBsb2FkZWREYXRhSW1hZ2U6IGZ1bmN0aW9uKCBjb250ZW50ICkge1xuXHRcdFx0dGhpcy5zdG9wTGlzdGVuaW5nKCB0aGlzLmN1cnJlbnRQYXN0ZVZpZXcudXBsb2FkZXIsICdhY3Rpb246dXBsb2FkZWQ6ZGF0YWltYWdlJyApO1xuXHRcdFx0dmFyIG9iaiA9IHsgdmlldzogbnVsbCB9O1xuXHRcdFx0dGhpcy5icm93c2VDb250ZW50KG9iaik7XG5cdFx0XHR0aGlzLmNvbnRlbnQuc2V0KCBvYmoudmlldyApO1xuXHRcdFx0dGhpcy5yb3V0ZXIuZ2V0KCkuc2VsZWN0KCdicm93c2UnKVxuXHRcdH1cblx0fSk7XG5cdFxuXG5cblx0LyoqXG5cdCAqXHRBZGQgcGFzdGUgYnV0dG9uIHRvIHRvb2xiYXIgb24gdXBsb2FkLnBocFxuXHQgKi9cblx0Xy5leHRlbmQoIHdwLm1lZGlhLnZpZXcuQXR0YWNobWVudHNCcm93c2VyLnByb3RvdHlwZSwge1xuXHRcdF9wYXJlbnRJbml0aWFsaXplOlx0d3AubWVkaWEudmlldy5BdHRhY2htZW50c0Jyb3dzZXIucHJvdG90eXBlLmluaXRpYWxpemUsXG5cdFx0aW5pdGlhbGl6ZTpcdGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHNlbGYgPSB0aGlzLFxuXHRcdFx0XHRwYXN0ZUJ0bjtcblxuXHRcdFx0dGhpcy5fcGFyZW50SW5pdGlhbGl6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7XG5cdFx0XHRcblx0XHRcdHRoaXMudGhlcGFzdGUgPSB7XG5cdFx0XHRcdHBhc3RlXHQ6IHtcbi8vXHRcdFx0XHRcdGJ1dHRvblx0OiBmYWxzZSxcblx0XHRcdFx0XHRncmFiYmVyXHQ6IGZhbHNlLFxuXHRcdFx0XHRcdG1vZGFsXHQ6IGZhbHNlLFxuXHRcdFx0XHRcdG1vZGVcdDogJ3Bhc3RlJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Y3VycmVudFx0XHQ6IGZhbHNlXG5cdFx0XHR9XG5cblx0XHRcdGlmICggISAoIHRoaXMuY29udHJvbGxlciBpbnN0YW5jZW9mIHdwLm1lZGlhLnZpZXcuTWVkaWFGcmFtZS5TZWxlY3QgKSApIHtcblxuXHRcdFx0XHRpZiAoIHdwLm1lZGlhLnRoZXBhc3RlLnN1cHBvcnRzLnBhc3RlICkge1xuXG5cdFx0XHRcdFx0cGFzdGVCdG4gPSBuZXcgd3AubWVkaWEudmlldy5CdXR0b24oIHtcblx0XHRcdFx0XHRcdHRleHRcdFx0OiBsMTBuLmNvcHlfcGFzdGUsXG5cdFx0XHRcdFx0XHRjbGFzc05hbWU6ICAnZ3JhYmJlci1idXR0b24nLFxuXHRcdFx0XHRcdFx0cHJpb3JpdHlcdDogLTY0LFxuXHRcdFx0XHRcdFx0Y2xpY2s6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRzZWxmLnRoZXBhc3RlLmFjdGl2ZSA9IHNlbGYudGhlcGFzdGUucGFzdGU7XG5cdFx0XHRcdFx0XHRcdHNlbGYudGhlcGFzdGVPcGVuKCBsMTBuLmNvcHlfcGFzdGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0dGhpcy50aGVwYXN0ZS5wYXN0ZS5ncmFiYmVyID0gbmV3IHdwLm1lZGlhLnRoZXBhc3RlLnZpZXcuRGF0YVNvdXJjZUltYWdlR3JhYmJlcigge1xuXHRcdFx0XHRcdFx0Y29udHJvbGxlclx0OiB0aGlzLmNvbnRyb2xsZXIsXG5cdFx0XHRcdFx0XHRncmFiYmVyXHRcdDogd3AubWVkaWEudGhlcGFzdGUudmlldy5QYXN0ZWJvYXJkLFxuXHRcdFx0XHRcdFx0d3B1cGxvYWRlclx0OiB0aGlzLmNvbnRyb2xsZXIudXBsb2FkZXIudXBsb2FkZXIudXBsb2FkZXJcblx0XHRcdFx0XHR9ICk7XG5cblx0XHRcdFx0XHR0aGlzLnRvb2xiYXIuc2V0KCAncGFzdGVNb2RlQnV0dG9uJywgcGFzdGVCdG4ucmVuZGVyKCkgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0dGhlcGFzdGVVcGxvYWRlZDogZnVuY3Rpb24oIGUgKSB7XG5cdFx0XHR0aGlzLnRoZXBhc3RlLmFjdGl2ZS5ncmFiYmVyLmRpc21pc3MoKTtcblx0XHRcdHRoaXMudGhlcGFzdGUubW9kYWwuY2xvc2UoKTtcblx0XHRcdHRoaXMudGhlcGFzdGVDbG9zZSgpO1xuXHRcdH0sXG5cdFx0dGhlcGFzdGVFcnJvcjogZnVuY3Rpb24oIGUgKSB7XG5cdFx0XHRjb25zb2xlLmxvZyggJ2Vycm9yJywgZSApO1xuXHRcdH0sXG5cdFx0dGhlcGFzdGVPcGVuOiBmdW5jdGlvbiggdGl0bGUgKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cblx0XHRcdHRoaXMudGhlcGFzdGUubW9kYWwgID0gIG5ldyB3cC5tZWRpYS52aWV3Lk1vZGFsKCB7XG5cdFx0XHRcdGNvbnRyb2xsZXIgOiB0aGlzLFxuXHRcdFx0XHR0aXRsZSAgICAgIDogdGl0bGVcblx0XHRcdH0gKTtcblx0XHRcdHRoaXMudGhlcGFzdGUubW9kYWwuY29udGVudCggdGhpcy50aGVwYXN0ZS5hY3RpdmUuZ3JhYmJlciApO1xuXHRcdFx0dGhpcy50aGVwYXN0ZS5tb2RhbC5vcGVuKCk7XG5cblx0XHRcdHRoaXMudGhlcGFzdGUubW9kYWwub24oICdjbG9zZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRzZWxmLnRoZXBhc3RlQ2xvc2UuYXBwbHkoc2VsZik7XG5cdFx0XHRcdHNlbGYudGhlcGFzdGUuYWN0aXZlLmdyYWJiZXIuc3RvcEdyYWJiaW5nKCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy50aGVwYXN0ZS5hY3RpdmUuZ3JhYmJlci5zdGFydEdyYWJiaW5nKCk7XG5cblx0XHRcdHRoaXMubGlzdGVuVG8oIHRoaXMudGhlcGFzdGUuYWN0aXZlLmdyYWJiZXIudXBsb2FkZXIsICdhY3Rpb246dXBsb2FkZWQ6ZGF0YWltYWdlJywgdGhpcy50aGVwYXN0ZVVwbG9hZGVkICk7XG5cdFx0XHR0aGlzLmxpc3RlblRvKCB0aGlzLnRoZXBhc3RlLmFjdGl2ZS5ncmFiYmVyLnVwbG9hZGVyLCAnZXJyb3I6dXBsb2FkZWQ6ZGF0YWltYWdlJywgdGhpcy50aGVwYXN0ZUVycm9yICk7XG5cdFx0fSxcblx0XHR0aGVwYXN0ZUNsb3NlOiBmdW5jdGlvbigpIHtcblxuXHRcdFx0dGhpcy5jb250cm9sbGVyLmRlYWN0aXZhdGVNb2RlKCB0aGlzLnRoZXBhc3RlLmFjdGl2ZS5tb2RlICkuYWN0aXZhdGVNb2RlKCAnZWRpdCcgKTtcblxuXHRcdFx0dGhpcy5zdG9wTGlzdGVuaW5nKCB0aGlzLnRoZXBhc3RlLmFjdGl2ZS5ncmFiYmVyLnVwbG9hZGVyLCAnYWN0aW9uOnVwbG9hZGVkOmRhdGFpbWFnZScgKTtcblx0XHRcdHRoaXMuc3RvcExpc3RlbmluZyggdGhpcy50aGVwYXN0ZS5hY3RpdmUuZ3JhYmJlci51cGxvYWRlciwgJ2Vycm9yOnVwbG9hZGVkOmRhdGFpbWFnZScgKTtcblx0XHR9XG5cdH0pO1xuXHRcbn0pKGpRdWVyeSx3aW5kb3cpO1xuXG4oZnVuY3Rpb24oJCx3aW5kb3csbyl7XG5cdHZhciB0aGVwYXN0ZSA9IHdwLm1lZGlhLnRoZXBhc3RlLFxuXHRcdEJ1dHRvbiA9IHdwLm1lZGlhLnZpZXcuQnV0dG9uLFxuXHRcdE1vZGFsICA9IHdwLm1lZGlhLnZpZXcuTW9kYWwsXG5cdFx0bDEwbiAgID0gdGhlcGFzdGUubDEwbjtcblxuXG5cdHdwLm1lZGlhLnRoZXBhc3RlLnZpZXcuRGF0YVNvdXJjZUltYWdlVXBsb2FkZXIgPSB3cC5tZWRpYS5WaWV3LmV4dGVuZCh7XG5cdFx0dGVtcGxhdGU6IHdwLnRlbXBsYXRlKCd0aGVwYXN0ZS11cGxvYWRlcicpLFxuXHRcdGNsYXNzTmFtZTogJ3RoZXBhc3RlLXVwbG9hZGVyJyxcblx0XHRjb250cm9sbGVyOm51bGwsXG5cdFx0aW1hZ2UgOiBudWxsLFxuXHRcdCRkaXNjYXJkQnRuIDogbnVsbCxcblx0XHQkdXBsb2FkQnRuIDogbnVsbCxcblx0XHRcblx0XHR1cGxvYWRlciA6IG51bGwsXG5cdFx0XG5cdFx0ZXZlbnRzIDoge1xuXHRcdFx0J2NsaWNrIFtkYXRhLWFjdGlvbj1cInVwbG9hZFwiXSdcdDogJ3VwbG9hZEltYWdlJyxcblx0XHRcdCdjbGljayBbZGF0YS1hY3Rpb249XCJkaXNjYXJkXCJdJ1x0OiAnZGlzY2FyZEltYWdlJyxcblx0XHR9LFxuXHRcdGluaXRpYWxpemUgOiBmdW5jdGlvbigpIHtcblxuXHRcdFx0d3AubWVkaWEuVmlldy5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cblx0XHRcdF8uZGVmYXVsdHMoIHRoaXMub3B0aW9ucywge1xuXHRcdFx0XHRkZWZhdWx0RmlsZU5hbWUgOiBsMTBuLmltYWdlXG5cdFx0XHR9KTtcblx0XHRcdHZhciBzZWxmID0gdGhpcyxcblx0XHRcdFx0aW5zdHIgPSBuZXcgd3AubWVkaWEuVmlldyh7XG5cdFx0XHRcdHRhZ05hbWUgICAgOiAnZGl2Jyxcblx0XHRcdFx0Y2xhc3NOYW1lICA6ICdpbnN0cnVtZW50cycsXG5cdFx0XHRcdGNvbnRyb2xsZXIgOiB0aGlzLmNvbnRyb2xsZXJcblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLnVwbG9hZGVyID0gdGhpcy5vcHRpb25zLnVwbG9kZXI7XG5cdFx0fSxcblx0XHRzZXRJbWFnZURhdGEgOiBmdW5jdGlvbiggZGF0YSApIHtcblx0XHRcdHZhciBjb250YWluZXIgPSB0aGlzLiRpbWFnZUNvbnRhaW5lci5odG1sKCcnKS5nZXQoMCksXG5cdFx0XHRcdHNlbGYgPSB0aGlzLFxuXHRcdFx0XHRmb3JtYXQgPSBkYXRhLm1hdGNoKC9kYXRhOihpbWFnZVxcLyhcXHcrKSk7LylbMV07XG5cblx0XHRcdGlmICggISB0aGVwYXN0ZS5vcHRpb25zLm1pbWVfdHlwZXMuY29udmVydFtmb3JtYXRdICkge1xuXHRcdFx0XHRmb3JtYXQgPSB0aGlzLm9wdGlvbnMuZGVmYXVsdEZpbGVGb3JtYXQ7XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdGlmICggdGhpcy5pbWFnZSApIHtcblx0XHRcdFx0dGhpcy5pbWFnZS5kZXN0cm95KCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuaW1hZ2UgPSBuZXcgby5JbWFnZSgpO1xuXHRcdFx0dGhpcy5pbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIG9wdHMgPSBzZWxmLmdldFVwbG9hZGVyKCkuZ2V0T3B0aW9uKCdyZXNpemUnKSxcblx0XHRcdFx0XHRzY2FsZSA9IE1hdGgubWF4KCBvcHRzLndpZHRoIC8gdGhpcy53aWR0aCwgb3B0cy5oZWlnaHQgLyB0aGlzLmhlaWdodCApO1xuXG5cdFx0XHRcdCEhb3B0cyAmJiAoc2NhbGUgPCAxKSAmJiB0aGlzLmRvd25zaXplKCB0aGlzLndpZHRoKnNjYWxlLCB0aGlzLmhlaWdodCpzY2FsZSApO1xuXG5cdFx0XHRcdHRoaXMuZW1iZWQoIGNvbnRhaW5lciApO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmltYWdlLmxvYWQoIGRhdGEgKTtcblx0XHRcdGlmICggdGhpcy4kaW1hZ2VDb250YWluZXIgKSB7XG5cdFx0XHRcdHRoaXMuJGltYWdlQ29udGFpbmVyLmFwcGVuZCh0aGlzLmltYWdlKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuJCgnW2RhdGEtc2V0dGluZz1cImZvcm1hdFwiXSBpbnB1dFt2YWx1ZT1cIicrZm9ybWF0KydcIl0nKS5wcm9wKCAnY2hlY2tlZCcsIHRydWUgKTtcblxuXG5cdFx0XHR0aGlzLmRpc2FibGVkKGZhbHNlKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0cmVuZGVyIDogZnVuY3Rpb24oKSB7XG5cdFx0XHR3cC5tZWRpYS5WaWV3LnByb3RvdHlwZS5yZW5kZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO1xuXHRcdFx0dGhpcy4kaW1hZ2VDb250YWluZXIgPSB0aGlzLiQoJy5pbWFnZS1jb250YWluZXInKTtcblx0XHRcdHRoaXMuJGRpc2NhcmRCdG4gPSB0aGlzLiQoJ1tkYXRhLWFjdGlvbj1cImRpc2NhcmRcIl0nKTtcblx0XHRcdHRoaXMuJHVwbG9hZEJ0biA9IHRoaXMuJCgnW2RhdGEtYWN0aW9uPVwidXBsb2FkXCJdJyk7XG5cdFx0XHR0aGlzLiQoJ1tkYXRhLXNldHRpbmc9XCJ0aXRsZVwiXScpLnZhbCggdGhpcy5vcHRpb25zLmRlZmF1bHRGaWxlTmFtZSApO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHRkaXNjYXJkSW1hZ2UgOiBmdW5jdGlvbigpe1xuXHRcdFx0dGhpcy50cmlnZ2VyKCAnYWN0aW9uOmRpc2NhcmQ6ZGF0YWltYWdlJyAsIHRoaXMgKTtcblx0XHRcdHRoaXMudW5iaW5kVXBsb2FkZXJFdmVudHMoKTtcblx0XHR9LFxuXHRcdHVwbG9hZEltYWdlIDogZnVuY3Rpb24oKSB7XG5cblx0XHRcdHZhciB0eXBlID0gdGhpcy4kKCdbZGF0YS1zZXR0aW5nPVwiZm9ybWF0XCJdIDpjaGVja2VkJykudmFsKCksXG5cdFx0XHRcdHN1ZmZpeCA9IHRoZXBhc3RlLm9wdGlvbnMubWltZV90eXBlcy5jb252ZXJ0WyB0eXBlIF0sXG5cdFx0XHRcdG5hbWUgPSB0aGlzLiQoJ2lucHV0W2RhdGEtc2V0dGluZz1cInRpdGxlXCJdJykudmFsKCkgKyAnLicgKyBzdWZmaXgsXG5cdFx0XHRcdGJsb2IgPSB0aGlzLmltYWdlLmdldEFzQmxvYiggdHlwZSwgdGhlcGFzdGUub3B0aW9ucy5qcGVnX3F1YWxpdHkgKTtcblxuXHRcdFx0dGhpcy5iaW5kVXBsb2FkZXJFdmVudHMoKTtcblxuXHRcdFx0YmxvYi5kZXRhY2goIGJsb2IuZ2V0U291cmNlKCkgKTtcblx0XHRcdGJsb2IubmFtZSA9IG5hbWU7XG5cdFx0XHRibG9iLnR5cGUgPSB0eXBlO1xuXHRcdFx0dGhpcy5nZXRVcGxvYWRlcigpLmFkZEZpbGUoIGJsb2IgLCBuYW1lICk7XG5cblx0XHRcdHRoaXMuZGlzYWJsZWQoIHRydWUgKTtcblxuXHRcdFx0dGhpcy50cmlnZ2VyKCAnYWN0aW9uOnVwbG9hZDpkYXRhaW1hZ2UnICwgdGhpcyApO1xuXHRcdH0sXG5cdFx0c2hvdzpmdW5jdGlvbigpe1xuXHRcdFx0dGhpcy4kZWwuc2hvdygpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHRoaWRlOmZ1bmN0aW9uKCl7XG5cdFx0XHR0aGlzLiRlbC5oaWRlKCk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdGRpc2FibGVkIDogZnVuY3Rpb24oIGRpc2FibGVkICkge1xuXHRcdFx0dGhpcy4kZGlzY2FyZEJ0bi5wcm9wKCAnZGlzYWJsZWQnLCBkaXNhYmxlZCApO1xuXHRcdFx0dGhpcy4kdXBsb2FkQnRuLnByb3AoICdkaXNhYmxlZCcsIGRpc2FibGVkICk7XG5cdFx0fSxcblx0XHRfdXBsb2FkU3VjY2Vzc0hhbmRsZXIgOiBmdW5jdGlvbigpIHtcblx0XHRcdHRoaXMudHJpZ2dlciggJ2FjdGlvbjp1cGxvYWRlZDpkYXRhaW1hZ2UnICk7XG5cdFx0XHR0aGlzLmRpc2FibGVkKGZhbHNlKTtcblx0XHRcdHRoaXMudW5iaW5kVXBsb2FkZXJFdmVudHMoKTtcblx0XHR9LFxuXHRcdF91cGxvYWRFcnJvckhhbmRsZXIgOiBmdW5jdGlvbigpIHtcblx0XHRcdHRoaXMudHJpZ2dlciggJ2Vycm9yOnVwbG9hZGVkOmRhdGFpbWFnZScgKTtcblx0XHRcdHRoaXMuZGlzYWJsZWQoZmFsc2UpO1xuXHRcdFx0dGhpcy51bmJpbmRVcGxvYWRlckV2ZW50cygpO1xuXHRcdH0sXG5cdFx0YmluZFVwbG9hZGVyRXZlbnRzIDogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLmdldFVwbG9hZGVyKCkuYmluZCggJ0ZpbGVVcGxvYWRlZCcsXHR0aGlzLl91cGxvYWRTdWNjZXNzSGFuZGxlcixcdHRoaXMgKTtcblx0XHRcdHRoaXMuZ2V0VXBsb2FkZXIoKS5iaW5kKCAnRXJyb3InLFx0XHRcdHRoaXMuX3VwbG9hZEVycm9ySGFuZGxlcixcdHRoaXMgKTtcblx0XHR9LFxuXHRcdHVuYmluZFVwbG9hZGVyRXZlbnRzIDogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLmdldFVwbG9hZGVyKCkudW5iaW5kKCAnRmlsZVVwbG9hZGVkJyxcdHRoaXMuX3VwbG9hZFN1Y2Nlc3NIYW5kbGVyLFx0dGhpcyApO1xuXHRcdFx0dGhpcy5nZXRVcGxvYWRlcigpLnVuYmluZCggJ0Vycm9yJyxcdFx0XHR0aGlzLl91cGxvYWRFcnJvckhhbmRsZXIsXHR0aGlzICk7XG5cdFx0fSxcblx0XHRnZXRVcGxvYWRlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb250cm9sbGVyLnVwbG9hZGVyLnVwbG9hZGVyLnVwbG9hZGVyO1xuXHRcdH1cblx0fSk7XG5cblxuXHR3cC5tZWRpYS50aGVwYXN0ZS52aWV3LlBhc3RlYm9hcmQgPSB3cC5tZWRpYS5WaWV3LmV4dGVuZCh7XG5cdFx0dGVtcGxhdGU6IHdwLnRlbXBsYXRlKCd0aGVwYXN0ZS1wYXN0ZWJvYXJkJyksXG5cdFx0Y2xhc3NOYW1lOiAndGhlcGFzdGUtcGFzdGVib2FyZCcsXG5cdFx0Y29udHJvbGxlcjpudWxsLFxuXHRcdGFjdGlvbjoncGFzdGUnLFxuXHRcdCRwYXN0ZWJvYXJkIDogbnVsbCxcblxuXHRcdHJlbmRlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cdFx0XHR3cC5tZWRpYS5WaWV3LnByb3RvdHlwZS5yZW5kZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO1xuXHRcdFx0dGhpcy4kcGFzdGVib2FyZCA9IHRoaXMuJCggJy5pbmplY3RvcicgKS5wYXN0YWJsZUNvbnRlbnRlZGl0YWJsZSgpO1xuXHRcdFx0dGhpcy4kbWVzc2FnZSA9IHRoaXMuJCggJy5tZXNzYWdlJyApO1xuXHRcdFx0dGhpcy4kcGFzdGVib2FyZC5vbignY2xpY2snLCBmdW5jdGlvbigpe1xuXHRcdFx0XHRzZWxmLnNob3dfbWVzc2FnZSgnJyk7XG5cdFx0XHR9ICk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdHN0YXJ0IDogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXMsXG5cdFx0XHRcdGNsaXBib2FyZEhhc0ltYWdlO1xuXG5cdFx0XHR0aGlzLmltYWdlUGFzdGVkID0gZmFsc2U7XG5cblx0XHRcdHRoaXMuJHBhc3RlYm9hcmRcblx0XHRcdFx0Lm9uKCdwYXN0ZScsZnVuY3Rpb24oZSl7XG5cdFx0XHRcdFx0Y2xpcGJvYXJkSGFzSW1hZ2UgPSB3cC5tZWRpYS50aGVwYXN0ZS5jbGlwYm9hcmRIYXNJbWFnZShlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5vbigncGFzdGVUZXh0JyAsIGZ1bmN0aW9uKCBlLCBkYXRhICkge1xuXG5cdFx0XHRcdFx0aWYgKCBjbGlwYm9hcmRIYXNJbWFnZSB8fCBzZWxmLmltYWdlUGFzdGVkICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzZWxmLnNob3dfbWVzc2FnZSggbDEwbi5wYXN0ZV9lcnJvcl9ub19pbWFnZSApO1xuXHRcdFx0XHRcdCQoIHRoaXMgKS5odG1sKCcnKTtcblx0XHRcdFx0fSApXG5cdFx0XHRcdC5vbigncGFzdGVJbWFnZScgLCBmdW5jdGlvbiggZSwgZGF0YSApIHtcblx0XHRcdFx0XHRpZiAoIHNlbGYuaW1hZ2VQYXN0ZWQgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNlbGYudHJpZ2dlciggJ2FjdGlvbjpjcmVhdGU6ZGF0YWltYWdlJywgdGhpcyAsIGRhdGEuZGF0YVVSTCApO1xuXHRcdFx0XHRcdHNlbGYuaW1hZ2VQYXN0ZWQgPSB0cnVlO1xuXHRcdFx0XHR9IClcblx0XHRcdFx0Lm9uKCdwYXN0ZUltYWdlRXJyb3InICwgZnVuY3Rpb24oIGUsIGRhdGEgKSB7XG5cdFx0XHRcdFx0c2VsZi5zaG93X21lc3NhZ2UoIGwxMG4ucGFzdGVfZXJyb3IgKTtcblx0XHRcdFx0XHQkKCB0aGlzICkuaHRtbCgnJyk7XG5cdFx0XHRcdH0gKVxuXHRcdFx0XHQ7XG5cblx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcblx0XHRcdFx0c2VsZi4kcGFzdGVib2FyZC5nZXQoMCkuZm9jdXMoKTtcblx0XHRcdH0sMSk7XG5cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0c3RvcCA6IGZ1bmN0aW9uKCkge1xuXHRcdFx0dGhpcy4kcGFzdGVib2FyZFxuXHRcdFx0XHQub2ZmKCdwYXN0ZUltYWdlJylcblx0XHRcdFx0Lm9mZigncGFzdGVJbWFnZUVycm9yJylcblx0XHRcdFx0Lm9mZigncGFzdGVUZXh0Jyk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdHNob3c6ZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLiRlbC5zaG93KCk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdGhpZGU6ZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLiRlbC5oaWRlKCk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdHNob3dfbWVzc2FnZTpmdW5jdGlvbiggbXNnICkge1xuXHRcdFx0dGhpcy4kbWVzc2FnZS50ZXh0KCBtc2cgKTtcblx0XHR9XG5cdH0pO1xuXG5cdHdwLm1lZGlhLnRoZXBhc3RlLnZpZXcuRGF0YVNvdXJjZUltYWdlR3JhYmJlciA9IHdwLm1lZGlhLlZpZXcuZXh0ZW5kKHtcbi8vXHRcdHRhZ05hbWU6ICAgJ2RpdicsXG5cdFx0dGVtcGxhdGU6IHdwLnRlbXBsYXRlKCd0aGVwYXN0ZS1ncmFiYmVyJyksXG5cdFx0Y2xhc3NOYW1lIDogJ3RoZXBhc3RlLWdyYWJiZXInLFxuXHRcdFxuXHRcdGdyYWJiZXIgOiBudWxsLFxuXHRcdHVwbG9hZGVyIDogbnVsbCxcblx0XHRcblx0XHRpbml0aWFsaXplIDogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgcmV0ID0gd3AubWVkaWEuVmlldy5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cblx0XHRcdF8uZGVmYXVsdHMoIHRoaXMub3B0aW9ucywge1xuXHRcdFx0XHR3cHVwbG9hZGVyXHRcdDogbnVsbCxcblx0XHRcdFx0ZGVmYXVsdEZpbGVOYW1lXHQ6IGwxMG4ucGFzdGVkLFxuXHRcdFx0XHRkZWZhdWx0RmlsZUZvcm1hdCA6ICdpbWFnZS9wbmcnLFxuXHRcdFx0XHR0aXRsZVx0XHRcdDogbDEwbi5jb3B5X3Bhc3RlIFxuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMuZ3JhYmJlciAgPSBuZXcgdGhpcy5vcHRpb25zLmdyYWJiZXIoIHsgY29udHJvbGxlclx0OiB0aGlzLmNvbnRyb2xsZXIgfSApO1xuXG5cdFx0XHR0aGlzLnVwbG9hZGVyID0gbmV3IHdwLm1lZGlhLnRoZXBhc3RlLnZpZXcuRGF0YVNvdXJjZUltYWdlVXBsb2FkZXIoIHtcdFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udHJvbGxlclx0XHRcdDogdGhpcy5jb250cm9sbGVyLFxuXHRcdFx0XHRcdFx0XHRcdFx0dXBsb2Rlclx0XHRcdFx0OiB0aGlzLm9wdGlvbnMud3B1cGxvYWRlcixcblx0XHRcdFx0XHRcdFx0XHRcdGRlZmF1bHRGaWxlTmFtZVx0XHQ6IHRoaXMub3B0aW9ucy5kZWZhdWx0RmlsZU5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0RmlsZUZvcm1hdFx0OiB0aGlzLm9wdGlvbnMuZGVmYXVsdEZpbGVGb3JtYXRcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdHRoaXMucmVuZGVyKCk7XG5cblx0XHRcdHRoaXMubGlzdGVuVG8oIHRoaXMuZ3JhYmJlciwgJ2FjdGlvbjpjcmVhdGU6ZGF0YWltYWdlJyxcdHRoaXMuaW1hZ2VDcmVhdGVkICk7XG5cdFx0XHR0aGlzLmxpc3RlblRvKCB0aGlzLnVwbG9hZGVyLCAnYWN0aW9uOmRpc2NhcmQ6ZGF0YWltYWdlJyxcdHRoaXMuc3RhcnRHcmFiYmluZyApO1xuXG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH0sXG5cdFx0cmVuZGVyOmZ1bmN0aW9uKCl7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cblx0XHRcdHdwLm1lZGlhLlZpZXcucHJvdG90eXBlLnJlbmRlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cblx0XHRcdHRoaXMuJCgnLmNvbnRlbnQnKVxuXHRcdFx0XHQuYXBwZW5kKCB0aGlzLmdyYWJiZXIucmVuZGVyKCkuJGVsIClcblx0XHRcdFx0LmFwcGVuZCggdGhpcy51cGxvYWRlci5yZW5kZXIoKS4kZWwgKTtcblxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHRpbWFnZUNyZWF0ZWQgOiBmdW5jdGlvbiggZ3JhYmJlciAsIGltYWdlRGF0YSApIHtcblx0XHRcdHRoaXMuZ3JhYmJlci5zdG9wKCkuaGlkZSgpO1xuXHRcdFx0dGhpcy51cGxvYWRlci5zaG93KCkuc2V0SW1hZ2VEYXRhKCBpbWFnZURhdGEgKTtcblx0XHR9LFxuXHRcdHN0YXJ0R3JhYmJpbmc6ZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLnVwbG9hZGVyLmhpZGUoKTtcblx0XHRcdHRoaXMuZ3JhYmJlci5zaG93KCkuc3RhcnQoKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0c3RvcEdyYWJiaW5nOmZ1bmN0aW9uKCkge1xuXHRcdFx0dGhpcy5ncmFiYmVyLnN0b3AoKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0Z2V0QWN0aW9uIDogZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5ncmFiYmVyLmFjdGlvbjtcblx0XHR9LFxuXHRcdGRpc21pc3M6ZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLmdyYWJiZXIuc3RvcCgpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHR9KTtcblxufSkoalF1ZXJ5LHdpbmRvdyxtT3hpZSk7XG4iXX0= 
     1(function(){var e,t,a,i,n;e=window.jQuery,e.paste=function(e){var a;return"undefined"!=typeof console&&null!==console&&console.log("DEPRECATED: This method is deprecated. Please use $.fn.pastableNonInputable() instead."),a=t.mountNonInputable(e),a._container},e.fn.pastableNonInputable=function(){var a,i,n,r;for(r=this,i=0,n=r.length;i<n;i++)a=r[i],a._pastable||e(a).is("textarea, input:text, [contenteditable]")||(t.mountNonInputable(a),a._pastable=!0);return this},e.fn.pastableTextarea=function(){var a,i,n,r;for(r=this,i=0,n=r.length;i<n;i++)a=r[i],a._pastable||e(a).is(":not(textarea, input:text)")||(t.mountTextarea(a),a._pastable=!0);return this},e.fn.pastableContenteditable=function(){var a,i,n,r;for(r=this,i=0,n=r.length;i<n;i++)a=r[i],a._pastable||e(a).is(":not([contenteditable])")||(t.mountContenteditable(a),a._pastable=!0);return this},i=function(e,t){var a,i,n,r,o,s,l,p,d,u,c;if(null==t&&(t=512),!(p=e.match(/^data\:([^\;]+)\;base64\,(.+)$/)))return null;for(u=p,p=u[0],s=u[1],a=u[2],r=atob(a),n=[],d=0;d<r.length;){for(c=r.slice(d,d+t),o=new Array(c.length),l=0;l<c.length;)o[l]=c.charCodeAt(l),l++;i=new Uint8Array(o),n.push(i),d+=t}return new Blob(n,{type:s})},a=function(){return e(document.createElement("div")).attr("contenteditable",!0).attr("aria-hidden",!0).attr("tabindex",-1).css({width:1,height:1,position:"fixed",left:-100,overflow:"hidden"})},n=function(t,a){var i,n,r,o,s,l;return o=void 0,s=void 0,r=void 0,n=void 0,i=void 0,"area"===(l=t.nodeName.toLowerCase())?(o=t.parentNode,s=o.name,!(!t.href||!s||"map"!==o.nodeName.toLowerCase())&&(r=e("img[usemap='#"+s+"']"),r.length>0&&r.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(l)?(n=!t.disabled)&&(i=e(t).closest("fieldset")[0])&&(n=!i.disabled):n="a"===l?t.href||a:a,(n=n||e(t).is("[contenteditable]"))&&e(t).is(":visible"))},t=function(){function t(t,a){this._container=t,this._target=a,this._container=e(this._container),this._target=e(this._target).addClass("pastable"),this._container.on("paste",function(e){return function(t){var a,i,n,r,o,s,l,p,d,u,c,h,g;if(t.currentTarget!==t.target)return t.preventDefault();if(e._paste_event_fired=!0,null!=(null!=(d=t.originalEvent)?d.clipboardData:void 0))if(a=t.originalEvent.clipboardData,a.items)for(u=a.items,r=0,s=u.length;r<s;r++){if(n=u[r],n.type.match(/^image\//)){p=new FileReader,p.onload=function(t){return e._handleImage(t.target.result)};try{p.readAsDataURL(n.getAsFile())}catch(e){}t.preventDefault();break}"text/plain"===n.type&&n.getAsString(function(t){return e._target.trigger("pasteText",{text:t})})}else-1!==Array.prototype.indexOf.call(a.types,"text/plain")&&(g=a.getData("Text"),setTimeout(function(){return e._target.trigger("pasteText",{text:g})},1)),e._checkImagesInContainer(function(t){return e._handleImage(t)});if(a=window.clipboardData)if(null!=(c=g=a.getData("Text"))?c.length:void 0)setTimeout(function(){return e._target.trigger("pasteText",{text:g}),e._target.trigger("_pasteCheckContainerDone")},1);else{for(h=a.files,o=0,l=h.length;o<l;o++)i=h[o],e._handleImage(URL.createObjectURL(i));e._checkImagesInContainer(function(e){})}return null}}(this))}return t.prototype._target=null,t.prototype._container=null,t.mountNonInputable=function(i){var r;return r=new t(a().appendTo(i),i),e(i).on("click",function(e){return function(e){if(!n(e.target,!1))return r._container.focus()}}()),r._container.on("focus",function(t){return function(){return e(i).addClass("pastable-focus")}}()),r._container.on("blur",function(t){return function(){return e(i).removeClass("pastable-focus")}}())},t.mountTextarea=function(i){var n,r,o,s;return("undefined"!=typeof DataTransfer&&null!==DataTransfer?DataTransfer.prototype:void 0)&&(null!=(o=Object.getOwnPropertyDescriptor)&&null!=(s=o.call(Object,DataTransfer.prototype,"items"))?s.get:void 0)?this.mountContenteditable(i):(r=new t(a().insertBefore(i),i),n=!1,e(i).on("keyup",function(e){var t;return 17!==(t=e.keyCode)&&224!==t||(n=!1),null}),e(i).on("keydown",function(t){var a;return 17!==(a=t.keyCode)&&224!==a||(n=!0),null!=t.ctrlKey&&null!=t.metaKey&&(n=t.ctrlKey||t.metaKey),n&&86===t.keyCode&&(r._textarea_focus_stolen=!0,r._container.focus(),r._paste_event_fired=!1,setTimeout(function(t){return function(){if(!r._paste_event_fired)return e(i).focus(),r._textarea_focus_stolen=!1}}(),1)),null}),e(i).on("paste",function(e){return function(){}}()),e(i).on("focus",function(t){return function(){if(!r._textarea_focus_stolen)return e(i).addClass("pastable-focus")}}()),e(i).on("blur",function(t){return function(){if(!r._textarea_focus_stolen)return e(i).removeClass("pastable-focus")}}()),e(r._target).on("_pasteCheckContainerDone",function(t){return function(){return e(i).focus(),r._textarea_focus_stolen=!1}}()),e(r._target).on("pasteText",function(t){return function(t,a){var n,r,o;return o=e(i).prop("selectionStart"),r=e(i).prop("selectionEnd"),n=e(i).val(),e(i).val(""+n.slice(0,o)+a.text+n.slice(r)),e(i)[0].setSelectionRange(o+a.text.length,o+a.text.length),e(i).trigger("change")}}()))},t.mountContenteditable=function(a){return new t(a,a),e(a).on("focus",function(t){return function(){return e(a).addClass("pastable-focus")}}()),e(a).on("blur",function(t){return function(){return e(a).removeClass("pastable-focus")}}())},t.prototype._handleImage=function(e){var t;return e.match(/^webkit\-fake\-url\:\/\//)?this._target.trigger("pasteImageError",{message:"You are trying to paste an image in Safari, however we are unable to retieve its data."}):(this._target.trigger("pasteImageStart"),t=new Image,t.crossOrigin="anonymous",t.onload=function(e){return function(){var a,n,r,o;n=document.createElement("canvas"),n.width=t.width,n.height=t.height,r=n.getContext("2d"),r.drawImage(t,0,0,n.width,n.height),o=null;try{o=n.toDataURL("image/png"),a=i(o)}catch(e){}return o&&e._target.trigger("pasteImage",{blob:a,dataURL:o,width:t.width,height:t.height}),e._target.trigger("pasteImageEnd")}}(this),t.onerror=function(t){return function(){return t._target.trigger("pasteImageError",{message:"Failed to get image from: "+e,url:e}),t._target.trigger("pasteImageEnd")}}(this),t.src=e)},t.prototype._checkImagesInContainer=function(t){var a,i,n,r,o;for(o=Math.floor(1e3*Math.random()),r=this._container.find("img"),i=0,n=r.length;i<n;i++)a=r[i],a["_paste_marked_"+o]=!0;return setTimeout(function(i){return function(){var n,r,s;for(s=i._container.find("img"),n=0,r=s.length;n<r;n++)a=s[n],a["_paste_marked_"+o]||(t(a.src),e(a).remove());return i._target.trigger("_pasteCheckContainerDone")}}(this),1)},t}()}).call(this),function(e,t){var a=(navigator.userAgent.indexOf("Chrome"),0);thepaste=t.thepaste=e.extend({supports:{paste:"paste"in document||"onpaste"in document||"object"==typeof window.onpaste||"onpaste"in document.createElement("DIV")},view:{},insertImage:function(e,t,i){var n="__thepaste_img_"+a++,r='<img id="'+n+'" class="alignnone size-full" src="'+e+'" />';return i.insertContent(r),i.$("#"+n)[0]},uploadImage:function(t,i){var n,r,s,l=t.src,p=function(n){var p="__thepaste_box_"+a++,d=n.match(/^data\:([^\;]+)\;/)[1];file=new o.Blob(null,{data:n}),suffix=thepaste.options.mime_types.convert[d],"undefined"==typeof suffix&&console.trace("bad type: "+d),e(t).wrap('<div id="'+p+'" data-progress="0" class="thepaste-image-placeholder" contenteditable="false"></div>'),s=i.$("#"+p),file.name=thepaste.l10n.pasted+"."+suffix,file.type=d;var u=function(){r.uploader.uploader.uploader.addFile(file)};r?(r.state().reset(),u()):(r=wp.media.editor.open(window.wpActiveEditor,{frame:"post",state:"insert",title:thepaste.l10n.copy_paste,multiple:!1}),r.close(),r.uploader.uploader&&r.uploader.uploader.ready?u():r.on("uploader:ready",u)),r.uploader.uploader.uploader.bind("UploadProgress",function(e){s.attr("data-progress",e.total.percent)}),r.uploader.uploader.uploader.bind("FileUploaded",function(t,a){var n='<img class="alignnone wp-image-'+a.attachment.id+' size-full" src="'+a.attachment.changed.url+'" />';s.replaceWith(n),i.$('img[src="'+l+'"]').each(function(){e(this).replaceWith(n)})}),r.uploader.uploader.uploader.bind("Error",function(e,t){console.log(e,t)})};"blob:"===l.substr(0,5)?(n=new XMLHttpRequest,n.responseType="blob",n.onreadystatechange=function(){var e;4==n.readyState&&(e=new FileReader,e.onload=function(){p(e.result)},e.readAsDataURL(new Blob([n.response],{type:"image/png"})))},n.open("GET",l),n.send(null)):"data:"===l.substr(0,5)&&p(l)},clipboardHasImage:function(t){var a=!1;return t.items?(e.each(t.items,function(e,t){if(t.type in thepaste.options.mime_types.paste)return a=!0,!1}),a):t.types?(e.each(thepaste.options.mime_types.paste,function(e,i){if(t.types.indexOf(e)>-1)return a=!0,!1}),a):null}},thepaste)}(jQuery,wp.media),function(e,t){var a=wp.media.thepaste.l10n;e.extend(wp.Uploader.prototype,{success:function(e){}}),_.extend(wp.media.view.MediaFrame.Select.prototype,{_parentInitialize:wp.media.view.MediaFrame.Select.prototype.initialize,initialize:function(){this._parentInitialize.apply(this,arguments),this.bindPasteHandlers()},_parentBrowseRouter:wp.media.view.MediaFrame.Select.prototype.browseRouter,browseRouter:function(e){this._parentBrowseRouter.apply(this,arguments),wp.media.thepaste.supports.paste&&e.set({pasteboard:{text:a.copy_paste,priority:35}})},bindPasteHandlers:function(){var e=!1;this.on("content:render close",function(t){e&&"function"==typeof e.dismiss&&e.dismiss(),void 0!==t&&(e=t)},this),this.on("content:create:pasteboard",this.contentCreatePasteboard,this),this.on("content:render:pasteboard",this.contentRenderGrabber,this),frame=this},contentCreatePasteboard:function(e){this.state();this.currentPasteView=e.view=new wp.media.thepaste.view.DataSourceImageGrabber({controller:this,grabber:wp.media.thepaste.view.Pasteboard}),this.listenTo(this.currentPasteView.uploader,"action:uploaded:dataimage",this.uploadedDataImage)},contentRenderGrabber:function(e){e.startGrabbing()},uploadedDataImage:function(e){this.stopListening(this.currentPasteView.uploader,"action:uploaded:dataimage");var t={view:null};this.browseContent(t),this.content.set(t.view),this.router.get().select("browse")}}),_.extend(wp.media.view.AttachmentsBrowser.prototype,{_parentInitialize:wp.media.view.AttachmentsBrowser.prototype.initialize,initialize:function(){var e,t=this;this._parentInitialize.apply(this,arguments),this.thepaste={paste:{grabber:!1,modal:!1,mode:"paste"},current:!1},this.controller instanceof wp.media.view.MediaFrame.Select||wp.media.thepaste.supports.paste&&(e=new wp.media.view.Button({text:a.copy_paste,className:"grabber-button",priority:-64,click:function(){t.thepaste.active=t.thepaste.paste,t.thepasteOpen(a.copy_paste)}}),this.thepaste.paste.grabber=new wp.media.thepaste.view.DataSourceImageGrabber({controller:this.controller,grabber:wp.media.thepaste.view.Pasteboard,wpuploader:this.controller.uploader.uploader.uploader}),this.toolbar.set("pasteModeButton",e.render()))},thepasteUploaded:function(e){this.thepaste.active.grabber.dismiss(),this.thepaste.modal.close(),this.thepasteClose()},thepasteError:function(e){console.log("error",e)},thepasteOpen:function(e){var t=this;this.thepaste.modal=new wp.media.view.Modal({controller:this,title:e}),this.thepaste.modal.content(this.thepaste.active.grabber),this.thepaste.modal.open(),this.thepaste.modal.on("close",function(){t.thepasteClose.apply(t),t.thepaste.active.grabber.stopGrabbing()}),this.thepaste.active.grabber.startGrabbing(),this.listenTo(this.thepaste.active.grabber.uploader,"action:uploaded:dataimage",this.thepasteUploaded),this.listenTo(this.thepaste.active.grabber.uploader,"error:uploaded:dataimage",this.thepasteError)},thepasteClose:function(){this.controller.deactivateMode(this.thepaste.active.mode).activateMode("edit"),this.stopListening(this.thepaste.active.grabber.uploader,"action:uploaded:dataimage"),this.stopListening(this.thepaste.active.grabber.uploader,"error:uploaded:dataimage")}})}(jQuery,window),function(e,t,a){var i=wp.media.thepaste,n=(wp.media.view.Button,wp.media.view.Modal,i.l10n);wp.media.thepaste.view.DataSourceImageUploader=wp.media.View.extend({template:wp.template("thepaste-uploader"),className:"thepaste-uploader",controller:null,image:null,$discardBtn:null,$uploadBtn:null,uploader:null,events:{'click [data-action="upload"]':"uploadImage",'click [data-action="discard"]':"discardImage"},initialize:function(){wp.media.View.prototype.initialize.apply(this,arguments),_.defaults(this.options,{defaultFileName:n.image});new wp.media.View({tagName:"div",className:"instruments",controller:this.controller});this.uploader=this.options.uploder},setImageData:function(e){var t=this.$imageContainer.html("").get(0),n=this,r=e.match(/data:(image\/(\w+));/)[1];return i.options.mime_types.convert[r]||(r=this.options.defaultFileFormat),this.image&&this.image.destroy(),this.image=new a.Image,this.image.onload=function(){var e=n.getUploader().getOption("resize"),a=Math.max(e.width/this.width,e.height/this.height);!!e&&a<1&&this.downsize(this.width*a,this.height*a),this.embed(t)},this.image.load(e),this.$imageContainer&&this.$imageContainer.append(this.image),this.$('[data-setting="format"] input[value="'+r+'"]').prop("checked",!0),this.disabled(!1),this},render:function(){return wp.media.View.prototype.render.apply(this,arguments),this.$imageContainer=this.$(".image-container"),this.$discardBtn=this.$('[data-action="discard"]'),this.$uploadBtn=this.$('[data-action="upload"]'),this.$('[data-setting="title"]').val(this.options.defaultFileName),this},discardImage:function(){this.trigger("action:discard:dataimage",this),this.unbindUploaderEvents()},uploadImage:function(){var e=this.$('[data-setting="format"] :checked').val(),t=i.options.mime_types.convert[e],a=this.$('input[data-setting="title"]').val()+"."+t,n=this.image.getAsBlob(e,i.options.jpeg_quality);this.bindUploaderEvents(),n.detach(n.getSource()),n.name=a,n.type=e,this.getUploader().addFile(n,a),this.disabled(!0),this.trigger("action:upload:dataimage",this)},show:function(){return this.$el.show(),this},hide:function(){return this.$el.hide(),this},disabled:function(e){this.$discardBtn.prop("disabled",e),this.$uploadBtn.prop("disabled",e)},_uploadSuccessHandler:function(){this.trigger("action:uploaded:dataimage"),this.disabled(!1),this.unbindUploaderEvents()},_uploadErrorHandler:function(){this.trigger("error:uploaded:dataimage"),this.disabled(!1),this.unbindUploaderEvents()},bindUploaderEvents:function(){this.getUploader().bind("FileUploaded",this._uploadSuccessHandler,this),this.getUploader().bind("Error",this._uploadErrorHandler,this)},unbindUploaderEvents:function(){this.getUploader().unbind("FileUploaded",this._uploadSuccessHandler,this),this.getUploader().unbind("Error",this._uploadErrorHandler,this)},getUploader:function(){return this.controller.uploader.uploader.uploader}}),wp.media.thepaste.view.Pasteboard=wp.media.View.extend({template:wp.template("thepaste-pasteboard"),className:"thepaste-pasteboard",controller:null,action:"paste",$pasteboard:null,render:function(){var e=this;return wp.media.View.prototype.render.apply(this,arguments),this.$pasteboard=this.$(".injector").pastableContenteditable(),this.$message=this.$(".message"),this.$pasteboard.on("click",function(){e.show_message("")}),this},start:function(){var t,a=this;return this.imagePasted=!1,this.$pasteboard.on("paste",function(e){t=wp.media.thepaste.clipboardHasImage(e.originalEvent.clipboardData)}).on("pasteText",function(i,r){t||a.imagePasted||(a.show_message(n.paste_error_no_image),e(this).html(""))}).on("pasteImage",function(e,t){a.imagePasted||(a.trigger("action:create:dataimage",this,t.dataURL),a.imagePasted=!0)}).on("pasteImageError",function(t,i){a.show_message(n.paste_error),e(this).html("")}),setTimeout(function(){a.$pasteboard.get(0).focus()},1),this},stop:function(){return this.$pasteboard.off("pasteImage").off("pasteImageError").off("pasteText"),this},show:function(){return this.$el.show(),this},hide:function(){return this.$el.hide(),this},show_message:function(e){this.$message.text(e)}}),wp.media.thepaste.view.DataSourceImageGrabber=wp.media.View.extend({template:wp.template("thepaste-grabber"),className:"thepaste-grabber",grabber:null,uploader:null,initialize:function(){var e=wp.media.View.prototype.initialize.apply(this,arguments);return _.defaults(this.options,{wpuploader:null,defaultFileName:n.pasted,defaultFileFormat:"image/png",title:n.copy_paste}),this.grabber=new this.options.grabber({controller:this.controller}),this.uploader=new wp.media.thepaste.view.DataSourceImageUploader({controller:this.controller,uploder:this.options.wpuploader,defaultFileName:this.options.defaultFileName,defaultFileFormat:this.options.defaultFileFormat}),this.render(),this.listenTo(this.grabber,"action:create:dataimage",this.imageCreated),this.listenTo(this.uploader,"action:discard:dataimage",this.startGrabbing),e},render:function(){return wp.media.View.prototype.render.apply(this,arguments),this.$(".content").append(this.grabber.render().$el).append(this.uploader.render().$el),this},imageCreated:function(e,t){this.grabber.stop().hide(),this.uploader.show().setImageData(t)},startGrabbing:function(){return this.uploader.hide(),this.grabber.show().start(),this},stopGrabbing:function(){return this.grabber.stop(),this},getAction:function(){return this.grabber.action},dismiss:function(){return this.grabber.stop(),this}})}(jQuery,window,mOxie); 
     2//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRoZS1wYXN0ZS5qcyJdLCJuYW1lcyI6WyIkIiwiUGFzdGUiLCJjcmVhdGVIaWRkZW5FZGl0YWJsZSIsImRhdGFVUkx0b0Jsb2IiLCJpc0ZvY3VzYWJsZSIsIndpbmRvdyIsImpRdWVyeSIsInBhc3RlIiwicGFzdGVDb250YWluZXIiLCJwbSIsImNvbnNvbGUiLCJsb2ciLCJtb3VudE5vbklucHV0YWJsZSIsIl9jb250YWluZXIiLCJmbiIsInBhc3RhYmxlTm9uSW5wdXRhYmxlIiwiZWwiLCJqIiwibGVuIiwicmVmIiwidGhpcyIsImxlbmd0aCIsIl9wYXN0YWJsZSIsImlzIiwicGFzdGFibGVUZXh0YXJlYSIsIm1vdW50VGV4dGFyZWEiLCJwYXN0YWJsZUNvbnRlbnRlZGl0YWJsZSIsIm1vdW50Q29udGVudGVkaXRhYmxlIiwiZGF0YVVSTCIsInNsaWNlU2l6ZSIsImI2NERhdGEiLCJieXRlQXJyYXkiLCJieXRlQXJyYXlzIiwiYnl0ZUNoYXJhY3RlcnMiLCJieXRlTnVtYmVycyIsImNvbnRlbnRUeXBlIiwiaSIsIm0iLCJvZmZzZXQiLCJzbGljZSIsIm1hdGNoIiwiYXRvYiIsIkFycmF5IiwiY2hhckNvZGVBdCIsIlVpbnQ4QXJyYXkiLCJwdXNoIiwiQmxvYiIsInR5cGUiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJhdHRyIiwiY3NzIiwid2lkdGgiLCJoZWlnaHQiLCJwb3NpdGlvbiIsImxlZnQiLCJvdmVyZmxvdyIsImVsZW1lbnQiLCJoYXNUYWJpbmRleCIsImZpZWxkc2V0IiwiZm9jdXNhYmxlSWZWaXNpYmxlIiwiaW1nIiwibWFwIiwibWFwTmFtZSIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJwYXJlbnROb2RlIiwibmFtZSIsImhyZWYiLCJ0ZXN0IiwiZGlzYWJsZWQiLCJjbG9zZXN0IiwiX3RhcmdldCIsImFkZENsYXNzIiwib24iLCJfdGhpcyIsImV2IiwiY2xpcGJvYXJkRGF0YSIsImZpbGUiLCJpdGVtIiwiayIsImxlbjEiLCJyZWFkZXIiLCJyZWYxIiwicmVmMiIsInJlZjMiLCJ0ZXh0IiwiY3VycmVudFRhcmdldCIsInRhcmdldCIsInByZXZlbnREZWZhdWx0IiwiX3Bhc3RlX2V2ZW50X2ZpcmVkIiwib3JpZ2luYWxFdmVudCIsIml0ZW1zIiwiRmlsZVJlYWRlciIsIm9ubG9hZCIsImV2ZW50IiwiX2hhbmRsZUltYWdlIiwicmVzdWx0IiwicmVhZEFzRGF0YVVSTCIsImdldEFzRmlsZSIsImVycm9yIiwiZ2V0QXNTdHJpbmciLCJzdHJpbmciLCJ0cmlnZ2VyIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImNhbGwiLCJ0eXBlcyIsImdldERhdGEiLCJzZXRUaW1lb3V0IiwiX2NoZWNrSW1hZ2VzSW5Db250YWluZXIiLCJzcmMiLCJmaWxlcyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIm5vbklucHV0YWJsZSIsImFwcGVuZFRvIiwiZm9jdXMiLCJyZW1vdmVDbGFzcyIsInRleHRhcmVhIiwiY3RsRG93biIsIkRhdGFUcmFuc2ZlciIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldCIsImluc2VydEJlZm9yZSIsImtleUNvZGUiLCJjdHJsS2V5IiwibWV0YUtleSIsIl90ZXh0YXJlYV9mb2N1c19zdG9sZW4iLCJkYXRhIiwiY29udGVudCIsImN1ckVuZCIsImN1clN0YXJ0IiwicHJvcCIsInZhbCIsInNldFNlbGVjdGlvblJhbmdlIiwiY29udGVudGVkaXRhYmxlIiwibG9hZGVyIiwibWVzc2FnZSIsIkltYWdlIiwiY3Jvc3NPcmlnaW4iLCJibG9iIiwiY2FudmFzIiwiY3R4IiwiZ2V0Q29udGV4dCIsImRyYXdJbWFnZSIsInRvRGF0YVVSTCIsIm9uZXJyb3IiLCJ1cmwiLCJjYiIsInRpbWVzcGFuIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwiZmluZCIsInJlbW92ZSIsImV4cG9ydHMiLCJjb3VudGVyIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwidGhlcGFzdGUiLCJleHRlbmQiLCJzdXBwb3J0cyIsInZpZXciLCJpbnNlcnRJbWFnZSIsImVkaXRvciIsImlkIiwiaW1hZ2VIdG1sIiwiaW5zZXJ0Q29udGVudCIsInVwbG9hZEltYWdlIiwiaW1hZ2UiLCJ4aHIiLCJ3b3JrZmxvdyIsIiRjb250YWluZXIiLCJ1cGxvYWQiLCJvIiwic3VmZml4Iiwib3B0aW9ucyIsIm1pbWVfdHlwZXMiLCJjb252ZXJ0IiwidHJhY2UiLCJ3cmFwIiwibDEwbiIsInBhc3RlZCIsImFkZEZpbGUiLCJ1cGxvYWRlciIsInN0YXRlIiwicmVzZXQiLCJ3cCIsIm1lZGlhIiwib3BlbiIsIndwQWN0aXZlRWRpdG9yIiwiZnJhbWUiLCJ0aXRsZSIsImNvcHlfcGFzdGUiLCJtdWx0aXBsZSIsImNsb3NlIiwicmVhZHkiLCJiaW5kIiwiZSIsInRvdGFsIiwicGVyY2VudCIsInVwIiwiYXJncyIsImltZ0hUTUwiLCJhdHRhY2htZW50IiwiY2hhbmdlZCIsInJlcGxhY2VXaXRoIiwiZWFjaCIsInN1YnN0ciIsIlhNTEh0dHBSZXF1ZXN0IiwicmVzcG9uc2VUeXBlIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInJlc3BvbnNlIiwic2VuZCIsImNsaXBib2FyZEhhc0ltYWdlIiwiaGFzSW1hZ2UiLCJleHQiLCJVcGxvYWRlciIsInN1Y2Nlc3MiLCJmaWxlX2F0dGFjaG1lbnQiLCJfIiwiTWVkaWFGcmFtZSIsIlNlbGVjdCIsIl9wYXJlbnRJbml0aWFsaXplIiwiaW5pdGlhbGl6ZSIsImFwcGx5IiwiYXJndW1lbnRzIiwiYmluZFBhc3RlSGFuZGxlcnMiLCJfcGFyZW50QnJvd3NlUm91dGVyIiwiYnJvd3NlUm91dGVyIiwic2V0IiwicGFzdGVib2FyZCIsInByaW9yaXR5IiwicHJldmlvdXNDb250ZW50IiwiZGlzbWlzcyIsImNvbnRlbnRDcmVhdGVQYXN0ZWJvYXJkIiwiY29udGVudFJlbmRlckdyYWJiZXIiLCJjdXJyZW50UGFzdGVWaWV3IiwiRGF0YVNvdXJjZUltYWdlR3JhYmJlciIsImNvbnRyb2xsZXIiLCJncmFiYmVyIiwiUGFzdGVib2FyZCIsImxpc3RlblRvIiwidXBsb2FkZWREYXRhSW1hZ2UiLCJzdGFydEdyYWJiaW5nIiwic3RvcExpc3RlbmluZyIsIm9iaiIsImJyb3dzZUNvbnRlbnQiLCJyb3V0ZXIiLCJzZWxlY3QiLCJBdHRhY2htZW50c0Jyb3dzZXIiLCJwYXN0ZUJ0biIsInNlbGYiLCJtb2RhbCIsIm1vZGUiLCJjdXJyZW50IiwiQnV0dG9uIiwiY2xhc3NOYW1lIiwiY2xpY2siLCJhY3RpdmUiLCJ0aGVwYXN0ZU9wZW4iLCJ3cHVwbG9hZGVyIiwidG9vbGJhciIsInJlbmRlciIsInRoZXBhc3RlVXBsb2FkZWQiLCJ0aGVwYXN0ZUNsb3NlIiwidGhlcGFzdGVFcnJvciIsIk1vZGFsIiwic3RvcEdyYWJiaW5nIiwiZGVhY3RpdmF0ZU1vZGUiLCJhY3RpdmF0ZU1vZGUiLCJEYXRhU291cmNlSW1hZ2VVcGxvYWRlciIsIlZpZXciLCJ0ZW1wbGF0ZSIsIiRkaXNjYXJkQnRuIiwiJHVwbG9hZEJ0biIsImV2ZW50cyIsImNsaWNrIFtkYXRhLWFjdGlvbj1cInVwbG9hZFwiXSIsImNsaWNrIFtkYXRhLWFjdGlvbj1cImRpc2NhcmRcIl0iLCJkZWZhdWx0cyIsImRlZmF1bHRGaWxlTmFtZSIsInRhZ05hbWUiLCJ1cGxvZGVyIiwic2V0SW1hZ2VEYXRhIiwiY29udGFpbmVyIiwiJGltYWdlQ29udGFpbmVyIiwiaHRtbCIsImZvcm1hdCIsImRlZmF1bHRGaWxlRm9ybWF0IiwiZGVzdHJveSIsIm9wdHMiLCJnZXRVcGxvYWRlciIsImdldE9wdGlvbiIsInNjYWxlIiwibWF4IiwiZG93bnNpemUiLCJlbWJlZCIsImxvYWQiLCJhcHBlbmQiLCJkaXNjYXJkSW1hZ2UiLCJ1bmJpbmRVcGxvYWRlckV2ZW50cyIsImdldEFzQmxvYiIsImpwZWdfcXVhbGl0eSIsImJpbmRVcGxvYWRlckV2ZW50cyIsImRldGFjaCIsImdldFNvdXJjZSIsInNob3ciLCIkZWwiLCJoaWRlIiwiX3VwbG9hZFN1Y2Nlc3NIYW5kbGVyIiwiX3VwbG9hZEVycm9ySGFuZGxlciIsInVuYmluZCIsImFjdGlvbiIsIiRwYXN0ZWJvYXJkIiwiJG1lc3NhZ2UiLCJzaG93X21lc3NhZ2UiLCJzdGFydCIsImltYWdlUGFzdGVkIiwicGFzdGVfZXJyb3Jfbm9faW1hZ2UiLCJwYXN0ZV9lcnJvciIsInN0b3AiLCJvZmYiLCJtc2ciLCJyZXQiLCJpbWFnZUNyZWF0ZWQiLCJpbWFnZURhdGEiLCJnZXRBY3Rpb24iLCJtT3hpZSJdLCJtYXBwaW5ncyI6IkNBUUEsV0FDRSxHQUFJQSxHQUFHQyxFQUFPQyxFQUFzQkMsRUFBZUMsQ0FFbkRKLEdBQUlLLE9BQU9DLE9BRVhOLEVBQUVPLE1BQVEsU0FBU0MsR0FDakIsR0FBSUMsRUFLSixPQUp1QixtQkFBWkMsVUFBdUMsT0FBWkEsU0FDcENBLFFBQVFDLElBQUksMEZBRWRGLEVBQUtSLEVBQU1XLGtCQUFrQkosR0FDdEJDLEVBQUdJLFlBR1piLEVBQUVjLEdBQUdDLHFCQUF1QixXQUMxQixHQUFJQyxHQUFJQyxFQUFHQyxFQUFLQyxDQUVoQixLQURBQSxFQUFNQyxLQUNESCxFQUFJLEVBQUdDLEVBQU1DLEVBQUlFLE9BQVFKLEVBQUlDLEVBQUtELElBQ3JDRCxFQUFLRyxFQUFJRixHQUNMRCxFQUFHTSxXQUFhdEIsRUFBRWdCLEdBQUlPLEdBQUcsNkNBRzdCdEIsRUFBTVcsa0JBQWtCSSxHQUN4QkEsRUFBR00sV0FBWSxFQUVqQixPQUFPRixPQUdUcEIsRUFBRWMsR0FBR1UsaUJBQW1CLFdBQ3RCLEdBQUlSLEdBQUlDLEVBQUdDLEVBQUtDLENBRWhCLEtBREFBLEVBQU1DLEtBQ0RILEVBQUksRUFBR0MsRUFBTUMsRUFBSUUsT0FBUUosRUFBSUMsRUFBS0QsSUFDckNELEVBQUtHLEVBQUlGLEdBQ0xELEVBQUdNLFdBQWF0QixFQUFFZ0IsR0FBSU8sR0FBRyxnQ0FHN0J0QixFQUFNd0IsY0FBY1QsR0FDcEJBLEVBQUdNLFdBQVksRUFFakIsT0FBT0YsT0FHVHBCLEVBQUVjLEdBQUdZLHdCQUEwQixXQUM3QixHQUFJVixH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RSxHQUVSNUQsT0FBTyxXQVNOLE1BTkE3RSxJQUFHQyxNQUFNcUYsS0FBSzNLLFVBQVVrSyxPQUFPdEMsTUFBT2hOLEtBQU1pTixXQUU1Q2pOLEtBQUtwQixFQUFFLFlBQ0w2UyxPQUFRelIsS0FBSytOLFFBQVF1QixTQUFTNEMsS0FDOUJULE9BQVF6UixLQUFLc0ssU0FBU2dGLFNBQVM0QyxLQUUxQmxTLE1BRVJtVCxhQUFlLFNBQVVwRixFQUFVcUYsR0FDbENwVCxLQUFLK04sUUFBUWdGLE9BQU9aLE9BQ3BCblMsS0FBS3NLLFNBQVMySCxPQUFPdkIsYUFBYzBDLElBRXBDakYsY0FBYyxXQUdiLE1BRkFuTyxNQUFLc0ssU0FBUzZILE9BQ2RuUyxLQUFLK04sUUFBUWtFLE9BQU9VLFFBQ2IzUyxNQUVSMlAsYUFBYSxXQUVaLE1BREEzUCxNQUFLK04sUUFBUWdGLE9BQ04vUyxNQUVScVQsVUFBWSxXQUNYLE1BQU9yVCxNQUFLK04sUUFBUXdFLFFBRXJCOUUsUUFBUSxXQUVQLE1BREF6TixNQUFLK04sUUFBUWdGLE9BQ04vUyxTQUlQZCxPQUFPRCxPQUFPcVUiLCJmaWxlIjoidGhlLXBhc3RlLm1pbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi43XG5cbi8qXG5wYXN0ZS5qcyBpcyBhbiBpbnRlcmZhY2UgdG8gcmVhZCBkYXRhICggdGV4dCAvIGltYWdlICkgZnJvbSBjbGlwYm9hcmQgaW4gZGlmZmVyZW50IGJyb3dzZXJzLiBJdCBhbHNvIGNvbnRhaW5zIHNldmVyYWwgaGFja3MuXG5cbmh0dHBzOi8vZ2l0aHViLmNvbS9sYXllcnNzc3MvcGFzdGUuanNcbiAqL1xuXG4oZnVuY3Rpb24oKSB7XG4gIHZhciAkLCBQYXN0ZSwgY3JlYXRlSGlkZGVuRWRpdGFibGUsIGRhdGFVUkx0b0Jsb2IsIGlzRm9jdXNhYmxlO1xuXG4gICQgPSB3aW5kb3cualF1ZXJ5O1xuXG4gICQucGFzdGUgPSBmdW5jdGlvbihwYXN0ZUNvbnRhaW5lcikge1xuICAgIHZhciBwbTtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29uc29sZSAhPT0gbnVsbCkge1xuICAgICAgY29uc29sZS5sb2coXCJERVBSRUNBVEVEOiBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICQuZm4ucGFzdGFibGVOb25JbnB1dGFibGUoKSBpbnN0ZWFkLlwiKTtcbiAgICB9XG4gICAgcG0gPSBQYXN0ZS5tb3VudE5vbklucHV0YWJsZShwYXN0ZUNvbnRhaW5lcik7XG4gICAgcmV0dXJuIHBtLl9jb250YWluZXI7XG4gIH07XG5cbiAgJC5mbi5wYXN0YWJsZU5vbklucHV0YWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBlbCwgaiwgbGVuLCByZWY7XG4gICAgcmVmID0gdGhpcztcbiAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGVsID0gcmVmW2pdO1xuICAgICAgaWYgKGVsLl9wYXN0YWJsZSB8fCAkKGVsKS5pcygndGV4dGFyZWEsIGlucHV0OnRleHQsIFtjb250ZW50ZWRpdGFibGVdJykpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBQYXN0ZS5tb3VudE5vbklucHV0YWJsZShlbCk7XG4gICAgICBlbC5fcGFzdGFibGUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAkLmZuLnBhc3RhYmxlVGV4dGFyZWEgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgZWwsIGosIGxlbiwgcmVmO1xuICAgIHJlZiA9IHRoaXM7XG4gICAgZm9yIChqID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBlbCA9IHJlZltqXTtcbiAgICAgIGlmIChlbC5fcGFzdGFibGUgfHwgJChlbCkuaXMoJzpub3QodGV4dGFyZWEsIGlucHV0OnRleHQpJykpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBQYXN0ZS5tb3VudFRleHRhcmVhKGVsKTtcbiAgICAgIGVsLl9wYXN0YWJsZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gICQuZm4ucGFzdGFibGVDb250ZW50ZWRpdGFibGUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgZWwsIGosIGxlbiwgcmVmO1xuICAgIHJlZiA9IHRoaXM7XG4gICAgZm9yIChqID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBlbCA9IHJlZltqXTtcbiAgICAgIGlmIChlbC5fcGFzdGFibGUgfHwgJChlbCkuaXMoJzpub3QoW2NvbnRlbnRlZGl0YWJsZV0pJykpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBQYXN0ZS5tb3VudENvbnRlbnRlZGl0YWJsZShlbCk7XG4gICAgICBlbC5fcGFzdGFibGUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBkYXRhVVJMdG9CbG9iID0gZnVuY3Rpb24oZGF0YVVSTCwgc2xpY2VTaXplKSB7XG4gICAgdmFyIGI2NERhdGEsIGJ5dGVBcnJheSwgYnl0ZUFycmF5cywgYnl0ZUNoYXJhY3RlcnMsIGJ5dGVOdW1iZXJzLCBjb250ZW50VHlwZSwgaSwgbSwgb2Zmc2V0LCByZWYsIHNsaWNlO1xuICAgIGlmIChzbGljZVNpemUgPT0gbnVsbCkge1xuICAgICAgc2xpY2VTaXplID0gNTEyO1xuICAgIH1cbiAgICBpZiAoIShtID0gZGF0YVVSTC5tYXRjaCgvXmRhdGFcXDooW15cXDtdKylcXDtiYXNlNjRcXCwoLispJC8pKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJlZiA9IG0sIG0gPSByZWZbMF0sIGNvbnRlbnRUeXBlID0gcmVmWzFdLCBiNjREYXRhID0gcmVmWzJdO1xuICAgIGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihiNjREYXRhKTtcbiAgICBieXRlQXJyYXlzID0gW107XG4gICAgb2Zmc2V0ID0gMDtcbiAgICB3aGlsZSAob2Zmc2V0IDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoKSB7XG4gICAgICBzbGljZSA9IGJ5dGVDaGFyYWN0ZXJzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgc2xpY2VTaXplKTtcbiAgICAgIGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KHNsaWNlLmxlbmd0aCk7XG4gICAgICBpID0gMDtcbiAgICAgIHdoaWxlIChpIDwgc2xpY2UubGVuZ3RoKSB7XG4gICAgICAgIGJ5dGVOdW1iZXJzW2ldID0gc2xpY2UuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgICAgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xuICAgICAgYnl0ZUFycmF5cy5wdXNoKGJ5dGVBcnJheSk7XG4gICAgICBvZmZzZXQgKz0gc2xpY2VTaXplO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEJsb2IoYnl0ZUFycmF5cywge1xuICAgICAgdHlwZTogY29udGVudFR5cGVcbiAgICB9KTtcbiAgfTtcblxuICBjcmVhdGVIaWRkZW5FZGl0YWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKS5hdHRyKCdjb250ZW50ZWRpdGFibGUnLCB0cnVlKS5hdHRyKCdhcmlhLWhpZGRlbicsIHRydWUpLmF0dHIoJ3RhYmluZGV4JywgLTEpLmNzcyh7XG4gICAgICB3aWR0aDogMSxcbiAgICAgIGhlaWdodDogMSxcbiAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgbGVmdDogLTEwMCxcbiAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ1xuICAgIH0pO1xuICB9O1xuXG4gIGlzRm9jdXNhYmxlID0gZnVuY3Rpb24oZWxlbWVudCwgaGFzVGFiaW5kZXgpIHtcbiAgICB2YXIgZmllbGRzZXQsIGZvY3VzYWJsZUlmVmlzaWJsZSwgaW1nLCBtYXAsIG1hcE5hbWUsIG5vZGVOYW1lO1xuICAgIG1hcCA9IHZvaWQgMDtcbiAgICBtYXBOYW1lID0gdm9pZCAwO1xuICAgIGltZyA9IHZvaWQgMDtcbiAgICBmb2N1c2FibGVJZlZpc2libGUgPSB2b2lkIDA7XG4gICAgZmllbGRzZXQgPSB2b2lkIDA7XG4gICAgbm9kZU5hbWUgPSBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKCdhcmVhJyA9PT0gbm9kZU5hbWUpIHtcbiAgICAgIG1hcCA9IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICAgIG1hcE5hbWUgPSBtYXAubmFtZTtcbiAgICAgIGlmICghZWxlbWVudC5ocmVmIHx8ICFtYXBOYW1lIHx8IG1hcC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnbWFwJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpbWcgPSAkKCdpbWdbdXNlbWFwPVxcJyMnICsgbWFwTmFtZSArICdcXCddJyk7XG4gICAgICByZXR1cm4gaW1nLmxlbmd0aCA+IDAgJiYgaW1nLmlzKCc6dmlzaWJsZScpO1xuICAgIH1cbiAgICBpZiAoL14oaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbnxvYmplY3QpJC8udGVzdChub2RlTmFtZSkpIHtcbiAgICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9ICFlbGVtZW50LmRpc2FibGVkO1xuICAgICAgaWYgKGZvY3VzYWJsZUlmVmlzaWJsZSkge1xuICAgICAgICBmaWVsZHNldCA9ICQoZWxlbWVudCkuY2xvc2VzdCgnZmllbGRzZXQnKVswXTtcbiAgICAgICAgaWYgKGZpZWxkc2V0KSB7XG4gICAgICAgICAgZm9jdXNhYmxlSWZWaXNpYmxlID0gIWZpZWxkc2V0LmRpc2FibGVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICgnYScgPT09IG5vZGVOYW1lKSB7XG4gICAgICBmb2N1c2FibGVJZlZpc2libGUgPSBlbGVtZW50LmhyZWYgfHwgaGFzVGFiaW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9IGhhc1RhYmluZGV4O1xuICAgIH1cbiAgICBmb2N1c2FibGVJZlZpc2libGUgPSBmb2N1c2FibGVJZlZpc2libGUgfHwgJChlbGVtZW50KS5pcygnW2NvbnRlbnRlZGl0YWJsZV0nKTtcbiAgICByZXR1cm4gZm9jdXNhYmxlSWZWaXNpYmxlICYmICQoZWxlbWVudCkuaXMoJzp2aXNpYmxlJyk7XG4gIH07XG5cbiAgUGFzdGUgPSAoZnVuY3Rpb24oKSB7XG4gICAgUGFzdGUucHJvdG90eXBlLl90YXJnZXQgPSBudWxsO1xuXG4gICAgUGFzdGUucHJvdG90eXBlLl9jb250YWluZXIgPSBudWxsO1xuXG4gICAgUGFzdGUubW91bnROb25JbnB1dGFibGUgPSBmdW5jdGlvbihub25JbnB1dGFibGUpIHtcbiAgICAgIHZhciBwYXN0ZTtcbiAgICAgIHBhc3RlID0gbmV3IFBhc3RlKGNyZWF0ZUhpZGRlbkVkaXRhYmxlKCkuYXBwZW5kVG8obm9uSW5wdXRhYmxlKSwgbm9uSW5wdXRhYmxlKTtcbiAgICAgICQobm9uSW5wdXRhYmxlKS5vbignY2xpY2snLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2KSB7XG4gICAgICAgICAgaWYgKCFpc0ZvY3VzYWJsZShldi50YXJnZXQsIGZhbHNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhc3RlLl9jb250YWluZXIuZm9jdXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICBwYXN0ZS5fY29udGFpbmVyLm9uKCdmb2N1cycsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuICQobm9uSW5wdXRhYmxlKS5hZGRDbGFzcygncGFzdGFibGUtZm9jdXMnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHJldHVybiBwYXN0ZS5fY29udGFpbmVyLm9uKCdibHVyJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gJChub25JbnB1dGFibGUpLnJlbW92ZUNsYXNzKCdwYXN0YWJsZS1mb2N1cycpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgIH07XG5cbiAgICBQYXN0ZS5tb3VudFRleHRhcmVhID0gZnVuY3Rpb24odGV4dGFyZWEpIHtcbiAgICAgIHZhciBjdGxEb3duLCBwYXN0ZSwgcmVmLCByZWYxO1xuICAgICAgaWYgKCh0eXBlb2YgRGF0YVRyYW5zZmVyICE9PSBcInVuZGVmaW5lZFwiICYmIERhdGFUcmFuc2ZlciAhPT0gbnVsbCA/IERhdGFUcmFuc2Zlci5wcm90b3R5cGUgOiB2b2lkIDApICYmICgocmVmID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcikgIT0gbnVsbCA/IChyZWYxID0gcmVmLmNhbGwoT2JqZWN0LCBEYXRhVHJhbnNmZXIucHJvdG90eXBlLCAnaXRlbXMnKSkgIT0gbnVsbCA/IHJlZjEuZ2V0IDogdm9pZCAwIDogdm9pZCAwKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb3VudENvbnRlbnRlZGl0YWJsZSh0ZXh0YXJlYSk7XG4gICAgICB9XG4gICAgICBwYXN0ZSA9IG5ldyBQYXN0ZShjcmVhdGVIaWRkZW5FZGl0YWJsZSgpLmluc2VydEJlZm9yZSh0ZXh0YXJlYSksIHRleHRhcmVhKTtcbiAgICAgIGN0bERvd24gPSBmYWxzZTtcbiAgICAgICQodGV4dGFyZWEpLm9uKCdrZXl1cCcsIGZ1bmN0aW9uKGV2KSB7XG4gICAgICAgIHZhciByZWYyO1xuICAgICAgICBpZiAoKHJlZjIgPSBldi5rZXlDb2RlKSA9PT0gMTcgfHwgcmVmMiA9PT0gMjI0KSB7XG4gICAgICAgICAgY3RsRG93biA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSk7XG4gICAgICAkKHRleHRhcmVhKS5vbigna2V5ZG93bicsIGZ1bmN0aW9uKGV2KSB7XG4gICAgICAgIHZhciByZWYyO1xuICAgICAgICBpZiAoKHJlZjIgPSBldi5rZXlDb2RlKSA9PT0gMTcgfHwgcmVmMiA9PT0gMjI0KSB7XG4gICAgICAgICAgY3RsRG93biA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChldi5jdHJsS2V5ICE9IG51bGwpICYmIChldi5tZXRhS2V5ICE9IG51bGwpKSB7XG4gICAgICAgICAgY3RsRG93biA9IGV2LmN0cmxLZXkgfHwgZXYubWV0YUtleTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3RsRG93biAmJiBldi5rZXlDb2RlID09PSA4Nikge1xuICAgICAgICAgIHBhc3RlLl90ZXh0YXJlYV9mb2N1c19zdG9sZW4gPSB0cnVlO1xuICAgICAgICAgIHBhc3RlLl9jb250YWluZXIuZm9jdXMoKTtcbiAgICAgICAgICBwYXN0ZS5fcGFzdGVfZXZlbnRfZmlyZWQgPSBmYWxzZTtcbiAgICAgICAgICBzZXRUaW1lb3V0KChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICBpZiAoIXBhc3RlLl9wYXN0ZV9ldmVudF9maXJlZCkge1xuICAgICAgICAgICAgICAgICQodGV4dGFyZWEpLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhc3RlLl90ZXh0YXJlYV9mb2N1c19zdG9sZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSh0aGlzKSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcbiAgICAgICQodGV4dGFyZWEpLm9uKCdwYXN0ZScsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7fTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgICQodGV4dGFyZWEpLm9uKCdmb2N1cycsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKCFwYXN0ZS5fdGV4dGFyZWFfZm9jdXNfc3RvbGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gJCh0ZXh0YXJlYSkuYWRkQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgJCh0ZXh0YXJlYSkub24oJ2JsdXInLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmICghcGFzdGUuX3RleHRhcmVhX2ZvY3VzX3N0b2xlbikge1xuICAgICAgICAgICAgcmV0dXJuICQodGV4dGFyZWEpLnJlbW92ZUNsYXNzKCdwYXN0YWJsZS1mb2N1cycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgICQocGFzdGUuX3RhcmdldCkub24oJ19wYXN0ZUNoZWNrQ29udGFpbmVyRG9uZScsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgJCh0ZXh0YXJlYSkuZm9jdXMoKTtcbiAgICAgICAgICByZXR1cm4gcGFzdGUuX3RleHRhcmVhX2ZvY3VzX3N0b2xlbiA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgcmV0dXJuICQocGFzdGUuX3RhcmdldCkub24oJ3Bhc3RlVGV4dCcsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXYsIGRhdGEpIHtcbiAgICAgICAgICB2YXIgY29udGVudCwgY3VyRW5kLCBjdXJTdGFydDtcbiAgICAgICAgICBjdXJTdGFydCA9ICQodGV4dGFyZWEpLnByb3AoJ3NlbGVjdGlvblN0YXJ0Jyk7XG4gICAgICAgICAgY3VyRW5kID0gJCh0ZXh0YXJlYSkucHJvcCgnc2VsZWN0aW9uRW5kJyk7XG4gICAgICAgICAgY29udGVudCA9ICQodGV4dGFyZWEpLnZhbCgpO1xuICAgICAgICAgICQodGV4dGFyZWEpLnZhbChcIlwiICsgY29udGVudC5zbGljZSgwLCBjdXJTdGFydCkgKyBkYXRhLnRleHQgKyBjb250ZW50LnNsaWNlKGN1ckVuZCkpO1xuICAgICAgICAgICQodGV4dGFyZWEpWzBdLnNldFNlbGVjdGlvblJhbmdlKGN1clN0YXJ0ICsgZGF0YS50ZXh0Lmxlbmd0aCwgY3VyU3RhcnQgKyBkYXRhLnRleHQubGVuZ3RoKTtcbiAgICAgICAgICByZXR1cm4gJCh0ZXh0YXJlYSkudHJpZ2dlcignY2hhbmdlJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgfTtcblxuICAgIFBhc3RlLm1vdW50Q29udGVudGVkaXRhYmxlID0gZnVuY3Rpb24oY29udGVudGVkaXRhYmxlKSB7XG4gICAgICB2YXIgcGFzdGU7XG4gICAgICBwYXN0ZSA9IG5ldyBQYXN0ZShjb250ZW50ZWRpdGFibGUsIGNvbnRlbnRlZGl0YWJsZSk7XG4gICAgICAkKGNvbnRlbnRlZGl0YWJsZSkub24oJ2ZvY3VzJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gJChjb250ZW50ZWRpdGFibGUpLmFkZENsYXNzKCdwYXN0YWJsZS1mb2N1cycpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgcmV0dXJuICQoY29udGVudGVkaXRhYmxlKS5vbignYmx1cicsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuICQoY29udGVudGVkaXRhYmxlKS5yZW1vdmVDbGFzcygncGFzdGFibGUtZm9jdXMnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gUGFzdGUoX2NvbnRhaW5lciwgX3RhcmdldCkge1xuICAgICAgdGhpcy5fY29udGFpbmVyID0gX2NvbnRhaW5lcjtcbiAgICAgIHRoaXMuX3RhcmdldCA9IF90YXJnZXQ7XG4gICAgICB0aGlzLl9jb250YWluZXIgPSAkKHRoaXMuX2NvbnRhaW5lcik7XG4gICAgICB0aGlzLl90YXJnZXQgPSAkKHRoaXMuX3RhcmdldCkuYWRkQ2xhc3MoJ3Bhc3RhYmxlJyk7XG4gICAgICB0aGlzLl9jb250YWluZXIub24oJ3Bhc3RlJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihldikge1xuICAgICAgICAgIHZhciBjbGlwYm9hcmREYXRhLCBmaWxlLCBpdGVtLCBqLCBrLCBsZW4sIGxlbjEsIHJlYWRlciwgcmVmLCByZWYxLCByZWYyLCByZWYzLCB0ZXh0O1xuICAgICAgICAgIGlmIChldi5jdXJyZW50VGFyZ2V0ICE9PSBldi50YXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBfdGhpcy5fcGFzdGVfZXZlbnRfZmlyZWQgPSB0cnVlO1xuICAgICAgICAgIGlmICgoKHJlZiA9IGV2Lm9yaWdpbmFsRXZlbnQpICE9IG51bGwgPyByZWYuY2xpcGJvYXJkRGF0YSA6IHZvaWQgMCkgIT0gbnVsbCkge1xuICAgICAgICAgICAgY2xpcGJvYXJkRGF0YSA9IGV2Lm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YTtcbiAgICAgICAgICAgIGlmIChjbGlwYm9hcmREYXRhLml0ZW1zKSB7XG4gICAgICAgICAgICAgIHJlZjEgPSBjbGlwYm9hcmREYXRhLml0ZW1zO1xuICAgICAgICAgICAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYxLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgaXRlbSA9IHJlZjFbal07XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udHlwZS5tYXRjaCgvXmltYWdlXFwvLykpIHtcbiAgICAgICAgICAgICAgICAgIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICAgICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLl9oYW5kbGVJbWFnZShldmVudC50YXJnZXQucmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChpdGVtLmdldEFzRmlsZSgpKTtcbiAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgICAgICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlID09PSAndGV4dC9wbGFpbicpIHtcbiAgICAgICAgICAgICAgICAgIGl0ZW0uZ2V0QXNTdHJpbmcoZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlVGV4dCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmICgtMSAhPT0gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChjbGlwYm9hcmREYXRhLnR5cGVzLCAndGV4dC9wbGFpbicpKSB7XG4gICAgICAgICAgICAgICAgdGV4dCA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YSgnVGV4dCcpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZVRleHQnLCB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRleHRcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF90aGlzLl9jaGVja0ltYWdlc0luQ29udGFpbmVyKGZ1bmN0aW9uKHNyYykge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5faGFuZGxlSW1hZ2Uoc3JjKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjbGlwYm9hcmREYXRhID0gd2luZG93LmNsaXBib2FyZERhdGEpIHtcbiAgICAgICAgICAgIGlmICgocmVmMiA9ICh0ZXh0ID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCdUZXh0JykpKSAhPSBudWxsID8gcmVmMi5sZW5ndGggOiB2b2lkIDApIHtcbiAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlVGV4dCcsIHtcbiAgICAgICAgICAgICAgICAgIHRleHQ6IHRleHRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdfcGFzdGVDaGVja0NvbnRhaW5lckRvbmUnKTtcbiAgICAgICAgICAgICAgfSwgMSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZWYzID0gY2xpcGJvYXJkRGF0YS5maWxlcztcbiAgICAgICAgICAgICAgZm9yIChrID0gMCwgbGVuMSA9IHJlZjMubGVuZ3RoOyBrIDwgbGVuMTsgaysrKSB7XG4gICAgICAgICAgICAgICAgZmlsZSA9IHJlZjNba107XG4gICAgICAgICAgICAgICAgX3RoaXMuX2hhbmRsZUltYWdlKFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF90aGlzLl9jaGVja0ltYWdlc0luQ29udGFpbmVyKGZ1bmN0aW9uKHNyYykge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICB9XG5cbiAgICBQYXN0ZS5wcm90b3R5cGUuX2hhbmRsZUltYWdlID0gZnVuY3Rpb24oc3JjKSB7XG4gICAgICB2YXIgbG9hZGVyO1xuICAgICAgaWYgKHNyYy5tYXRjaCgvXndlYmtpdFxcLWZha2VcXC11cmxcXDpcXC9cXC8vKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlSW1hZ2VFcnJvcicsIHtcbiAgICAgICAgICBtZXNzYWdlOiBcIllvdSBhcmUgdHJ5aW5nIHRvIHBhc3RlIGFuIGltYWdlIGluIFNhZmFyaSwgaG93ZXZlciB3ZSBhcmUgdW5hYmxlIHRvIHJldGlldmUgaXRzIGRhdGEuXCJcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVJbWFnZVN0YXJ0Jyk7XG4gICAgICBsb2FkZXIgPSBuZXcgSW1hZ2UoKTtcbiAgICAgIGxvYWRlci5jcm9zc09yaWdpbiA9IFwiYW5vbnltb3VzXCI7XG4gICAgICBsb2FkZXIub25sb2FkID0gKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgYmxvYiwgY2FudmFzLCBjdHgsIGRhdGFVUkw7XG4gICAgICAgICAgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgICAgY2FudmFzLndpZHRoID0gbG9hZGVyLndpZHRoO1xuICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBsb2FkZXIuaGVpZ2h0O1xuICAgICAgICAgIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICAgIGN0eC5kcmF3SW1hZ2UobG9hZGVyLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICAgIGRhdGFVUkwgPSBudWxsO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBkYXRhVVJMID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyk7XG4gICAgICAgICAgICBibG9iID0gZGF0YVVSTHRvQmxvYihkYXRhVVJMKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICAgICAgICBpZiAoZGF0YVVSTCkge1xuICAgICAgICAgICAgX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZUltYWdlJywge1xuICAgICAgICAgICAgICBibG9iOiBibG9iLFxuICAgICAgICAgICAgICBkYXRhVVJMOiBkYXRhVVJMLFxuICAgICAgICAgICAgICB3aWR0aDogbG9hZGVyLndpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGxvYWRlci5oZWlnaHRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZUltYWdlRW5kJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKTtcbiAgICAgIGxvYWRlci5vbmVycm9yID0gKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlSW1hZ2VFcnJvcicsIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGdldCBpbWFnZSBmcm9tOiBcIiArIHNyYyxcbiAgICAgICAgICAgIHVybDogc3JjXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVJbWFnZUVuZCcpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcyk7XG4gICAgICByZXR1cm4gbG9hZGVyLnNyYyA9IHNyYztcbiAgICB9O1xuXG4gICAgUGFzdGUucHJvdG90eXBlLl9jaGVja0ltYWdlc0luQ29udGFpbmVyID0gZnVuY3Rpb24oY2IpIHtcbiAgICAgIHZhciBpbWcsIGosIGxlbiwgcmVmLCB0aW1lc3BhbjtcbiAgICAgIHRpbWVzcGFuID0gTWF0aC5mbG9vcigxMDAwICogTWF0aC5yYW5kb20oKSk7XG4gICAgICByZWYgPSB0aGlzLl9jb250YWluZXIuZmluZCgnaW1nJyk7XG4gICAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgICAgaW1nID0gcmVmW2pdO1xuICAgICAgICBpbWdbXCJfcGFzdGVfbWFya2VkX1wiICsgdGltZXNwYW5dID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZXRUaW1lb3V0KChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGssIGxlbjEsIHJlZjE7XG4gICAgICAgICAgcmVmMSA9IF90aGlzLl9jb250YWluZXIuZmluZCgnaW1nJyk7XG4gICAgICAgICAgZm9yIChrID0gMCwgbGVuMSA9IHJlZjEubGVuZ3RoOyBrIDwgbGVuMTsgaysrKSB7XG4gICAgICAgICAgICBpbWcgPSByZWYxW2tdO1xuICAgICAgICAgICAgaWYgKCFpbWdbXCJfcGFzdGVfbWFya2VkX1wiICsgdGltZXNwYW5dKSB7XG4gICAgICAgICAgICAgIGNiKGltZy5zcmMpO1xuICAgICAgICAgICAgICAkKGltZykucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ19wYXN0ZUNoZWNrQ29udGFpbmVyRG9uZScpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcyksIDEpO1xuICAgIH07XG5cbiAgICByZXR1cm4gUGFzdGU7XG5cbiAgfSkoKTtcblxufSkuY2FsbCh0aGlzKTtcblxuKGZ1bmN0aW9uKCQsZXhwb3J0cyl7XG5cblx0dmFyIGlzX2Nocm9tZVx0PSBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0Nocm9tZScpID4gLTEsXG5cdFx0Y291bnRlciA9IDAsXG5cdFx0d29ya2Zsb3c7XG5cblx0dGhlcGFzdGUgPSBleHBvcnRzLnRoZXBhc3RlID0gJC5leHRlbmQoIHtcblx0XHRzdXBwb3J0cyA6IHtcblx0XHRcdHBhc3RlOiAoICgncGFzdGUnIGluIGRvY3VtZW50KSB8fCAoJ29ucGFzdGUnIGluIGRvY3VtZW50KSB8fCB0eXBlb2Yod2luZG93Lm9ucGFzdGUpID09PSAnb2JqZWN0JyB8fCAoICdvbnBhc3RlJyBpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKSApICksIC8vIGJyb3dzZXJcblx0XHR9LFxuXHRcdHZpZXc6e30sXG5cblx0XHRpbnNlcnRJbWFnZTpmdW5jdGlvbiggZGF0YVVSTCwgdHlwZSwgZWRpdG9yICkge1xuXHRcdFx0dmFyIGlkID0gJ19fdGhlcGFzdGVfaW1nXycrKGNvdW50ZXIrKyksXG5cdFx0XHRcdGltYWdlSHRtbCA9ICc8aW1nIGlkPVwiJytpZCsnXCIgY2xhc3M9XCJhbGlnbm5vbmUgc2l6ZS1mdWxsXCIgc3JjPVwiJytkYXRhVVJMKydcIiAvPicsXG5cdFx0XHRcdCRjb250YWluZXI7XG5cblxuXHRcdFx0ZWRpdG9yLmluc2VydENvbnRlbnQoIGltYWdlSHRtbCApO1xuXG5cdFx0XHRyZXR1cm4gZWRpdG9yLiQoJyMnK2lkKVswXTtcblx0XHR9LFxuXG5cdFx0dXBsb2FkSW1hZ2U6IGZ1bmN0aW9uKCBpbWFnZSwgZWRpdG9yICkge1xuXG5cdFx0XHR2YXIgeGhyLFxuXHRcdFx0XHR3b3JrZmxvdyxcblx0XHRcdFx0JGNvbnRhaW5lcixcblx0XHRcdFx0c3JjID0gaW1hZ2Uuc3JjLFxuXHRcdFx0XHR1cGxvYWQgPSBmdW5jdGlvbiggZGF0YVVSTCApe1xuXHRcdFx0XHRcdHZhciBpZCA9ICdfX3RoZXBhc3RlX2JveF8nKyhjb3VudGVyKyspLFxuXHRcdFx0XHRcdFx0dHlwZSA9IGRhdGFVUkwubWF0Y2goL15kYXRhXFw6KFteXFw7XSspXFw7LylbMV1cblx0XHRcdFx0XHRcdGZpbGUgPSBuZXcgby5CbG9iKCBudWxsLCB7IGRhdGE6IGRhdGFVUkwgfSApXG5cdFx0XHRcdFx0XHRzdWZmaXggPSB0aGVwYXN0ZS5vcHRpb25zLm1pbWVfdHlwZXMuY29udmVydFsgdHlwZSBdO1xuXHRcdFx0XHRcdGlmICggJ3VuZGVmaW5lZCcgPT09IHR5cGVvZiBzdWZmaXggKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLnRyYWNlKCAnYmFkIHR5cGU6ICcgKyB0eXBlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCQoaW1hZ2UpLndyYXAoJzxkaXYgaWQ9XCInK2lkKydcIiBkYXRhLXByb2dyZXNzPVwiMFwiIGNsYXNzPVwidGhlcGFzdGUtaW1hZ2UtcGxhY2Vob2xkZXJcIiBjb250ZW50ZWRpdGFibGU9XCJmYWxzZVwiPjwvZGl2PicpO1xuXHRcdFx0XHRcdCRjb250YWluZXIgPSBlZGl0b3IuJCgnIycraWQpO1xuXG5cdFx0XHRcdFx0ZmlsZS5uYW1lID0gdGhlcGFzdGUubDEwbi5wYXN0ZWQgKyAnLicgKyBzdWZmaXg7XG5cdFx0XHRcdFx0ZmlsZS50eXBlID0gdHlwZTtcblxuXHRcdFx0XHRcdHZhciBhZGRGaWxlID0gZnVuY3Rpb24oKXtcblx0XHRcdFx0XHRcdHdvcmtmbG93LnVwbG9hZGVyLnVwbG9hZGVyLnVwbG9hZGVyLmFkZEZpbGUoIGZpbGUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCAhIHdvcmtmbG93ICkge1xuXHRcdFx0XHRcdFx0d29ya2Zsb3cgPSB3cC5tZWRpYS5lZGl0b3Iub3Blbiggd2luZG93LndwQWN0aXZlRWRpdG9yLCB7XG5cdFx0XHRcdFx0XHRcdGZyYW1lOlx0XHQncG9zdCcsXG5cdFx0XHRcdFx0XHRcdHN0YXRlOlx0XHQnaW5zZXJ0Jyxcblx0XHRcdFx0XHRcdFx0dGl0bGU6XHRcdHRoZXBhc3RlLmwxMG4uY29weV9wYXN0ZSxcblx0XHRcdFx0XHRcdFx0bXVsdGlwbGU6XHRmYWxzZVxuXHRcdFx0XHRcdFx0fSApO1xuXG5cdFx0XHRcdFx0XHR3b3JrZmxvdy5jbG9zZSgpO1xuXG5cdFx0XHRcdFx0XHRpZiAoIHdvcmtmbG93LnVwbG9hZGVyLnVwbG9hZGVyICYmIHdvcmtmbG93LnVwbG9hZGVyLnVwbG9hZGVyLnJlYWR5ICkge1xuXHRcdFx0XHRcdFx0XHRhZGRGaWxlKCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR3b3JrZmxvdy5vbiggJ3VwbG9hZGVyOnJlYWR5JywgYWRkRmlsZSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR3b3JrZmxvdy5zdGF0ZSgpLnJlc2V0KCk7XG5cdFx0XHRcdFx0XHRhZGRGaWxlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHdvcmtmbG93LnVwbG9hZGVyLnVwbG9hZGVyLnVwbG9hZGVyLmJpbmQoJ1VwbG9hZFByb2dyZXNzJyxmdW5jdGlvbiggZSApe1xuXHRcdFx0XHRcdFx0JGNvbnRhaW5lci5hdHRyKCdkYXRhLXByb2dyZXNzJyxlLnRvdGFsLnBlcmNlbnQpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHdvcmtmbG93LnVwbG9hZGVyLnVwbG9hZGVyLnVwbG9hZGVyLmJpbmQoJ0ZpbGVVcGxvYWRlZCcsZnVuY3Rpb24oIHVwLCBhcmdzICl7XG5cdFx0XHRcdFx0XHR2YXIgaW1nSFRNTCA9ICc8aW1nIGNsYXNzPVwiYWxpZ25ub25lIHdwLWltYWdlLScrYXJncy5hdHRhY2htZW50LmlkKycgc2l6ZS1mdWxsXCIgc3JjPVwiJythcmdzLmF0dGFjaG1lbnQuY2hhbmdlZC51cmwrJ1wiIC8+Jztcblx0XHRcdFx0XHRcdC8vIHJlcGxhY2UgaW1hZ2Vcblx0XHRcdFx0XHRcdCRjb250YWluZXIucmVwbGFjZVdpdGgoIGltZ0hUTUwgKTtcblx0XHRcdFx0XHRcdC8vIHJlcGxhY2Ugb3RoZXIgaW5zdGFuY2VzXG5cdFx0XHRcdFx0XHRlZGl0b3IuJCgnaW1nW3NyYz1cIicrc3JjKydcIl0nKS5lYWNoKGZ1bmN0aW9uKCl7XG5cdFx0XHRcdFx0XHRcdCQodGhpcykucmVwbGFjZVdpdGgoIGltZ0hUTUwgKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHdvcmtmbG93LnVwbG9hZGVyLnVwbG9hZGVyLnVwbG9hZGVyLmJpbmQoJ0Vycm9yJyxmdW5jdGlvbiggdXAsIGFyZ3MgKXtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHVwLGFyZ3MpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRpZiAoIHNyYy5zdWJzdHIoMCw1KSA9PT0gJ2Jsb2I6JyApIHtcblxuXHRcdFx0XHR4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblx0XHRcdFx0eGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJztcblx0XHRcdFx0eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCl7XG5cdFx0XHRcdFx0dmFyIHJlYWRlcjtcblx0XHRcdFx0XHRpZiAoIHhoci5yZWFkeVN0YXRlID09IDQgKSB7XG5cdFx0XHRcdFx0XHRyZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXHRcdFx0XHRcdFx0cmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHR1cGxvYWQoIHJlYWRlci5yZXN1bHQgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJlYWRlci5yZWFkQXNEYXRhVVJMKCBuZXcgQmxvYiggWyB4aHIucmVzcG9uc2UgXSwgeyB0eXBlOiAnaW1hZ2UvcG5nJyB9ICkgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0eGhyLm9wZW4oICdHRVQnLCBzcmMgKTtcblx0XHRcdFx0eGhyLnNlbmQoIG51bGwgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggc3JjLnN1YnN0cigwLDUpID09PSAnZGF0YTonICkge1xuXHRcdFx0XHR1cGxvYWQoIHNyYyApO1xuXHRcdFx0fVxuXG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqXHRAcmV0dXJuOiBudWxsfHRydWV8ZmFsc2Vcblx0XHQgKi9cblx0XHRjbGlwYm9hcmRIYXNJbWFnZTpmdW5jdGlvbiggY2xpcGJvYXJkRGF0YSApIHtcblx0XHRcdHZhciBoYXNJbWFnZSA9IGZhbHNlO1xuXHRcdFx0aWYgKCBjbGlwYm9hcmREYXRhLml0ZW1zICkge1xuXHRcdFx0XHQkLmVhY2goIGNsaXBib2FyZERhdGEuaXRlbXMsIGZ1bmN0aW9uKGksaXRlbSl7XG5cdFx0XHRcdFx0aWYgKCBpdGVtLnR5cGUgaW4gdGhlcGFzdGUub3B0aW9ucy5taW1lX3R5cGVzLnBhc3RlICkge1xuXHRcdFx0XHRcdFx0aGFzSW1hZ2UgPSB0cnVlO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdFx0XHRyZXR1cm4gaGFzSW1hZ2U7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggY2xpcGJvYXJkRGF0YS50eXBlcyApIHtcblx0XHRcdFx0JC5lYWNoKCB0aGVwYXN0ZS5vcHRpb25zLm1pbWVfdHlwZXMucGFzdGUsIGZ1bmN0aW9uKHR5cGUsZXh0KXtcblx0XHRcdFx0XHRpZiAoIGNsaXBib2FyZERhdGEudHlwZXMuaW5kZXhPZih0eXBlKSA+IC0xICkge1xuXHRcdFx0XHRcdFx0aGFzSW1hZ2UgPSB0cnVlO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdFx0XHRyZXR1cm4gaGFzSW1hZ2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblxuXHR9LCB0aGVwYXN0ZSApO1xuXG59KSggalF1ZXJ5LCB3cC5tZWRpYSApO1xuXG4oZnVuY3Rpb24oJCxleHBvcnRzKXtcblxuXHR2YXIgY291bnRlciAgICAgID0gMCxcblx0XHRsMTBuID0gd3AubWVkaWEudGhlcGFzdGUubDEwbjtcblxuXHQkLmV4dGVuZCggd3AuVXBsb2FkZXIucHJvdG90eXBlLCB7XG5cdFx0c3VjY2VzcyA6IGZ1bmN0aW9uKCBmaWxlX2F0dGFjaG1lbnQgKXtcblx0XHR9XG5cdH0pO1xuXG5cblx0LyoqXG5cdCAqXHRJbnRlZ3JhdGUgaW50byBtZWRpYSBsaWJyYXJ5IG1vZGFsXG5cdCAqL1xuXHQvLyBhZGQgc3RhdGVzIHRvIGJyb3dzZSByb3V0ZXJcblx0Xy5leHRlbmQoIHdwLm1lZGlhLnZpZXcuTWVkaWFGcmFtZS5TZWxlY3QucHJvdG90eXBlLCB7XG5cdFx0X3BhcmVudEluaXRpYWxpemU6IHdwLm1lZGlhLnZpZXcuTWVkaWFGcmFtZS5TZWxlY3QucHJvdG90eXBlLmluaXRpYWxpemUsXG5cdFx0aW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLl9wYXJlbnRJbml0aWFsaXplLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdHRoaXMuYmluZFBhc3RlSGFuZGxlcnMoKTtcblx0XHR9LFxuXHRcdF9wYXJlbnRCcm93c2VSb3V0ZXI6IHdwLm1lZGlhLnZpZXcuTWVkaWFGcmFtZS5TZWxlY3QucHJvdG90eXBlLmJyb3dzZVJvdXRlcixcblx0XHRicm93c2VSb3V0ZXIgOiBmdW5jdGlvbiggdmlldyApIHtcblx0XHRcdHRoaXMuX3BhcmVudEJyb3dzZVJvdXRlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7XG5cblx0XHRcdGlmICggd3AubWVkaWEudGhlcGFzdGUuc3VwcG9ydHMucGFzdGUgKSB7XG5cdFx0XHRcdHZpZXcuc2V0KHtwYXN0ZWJvYXJkOntcblx0XHRcdFx0XHR0ZXh0OiAgICAgbDEwbi5jb3B5X3Bhc3RlLFxuXHRcdFx0XHRcdHByaW9yaXR5OiAzNVxuXHRcdFx0XHR9fSk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdGJpbmRQYXN0ZUhhbmRsZXJzOiBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBwcmV2aW91c0NvbnRlbnQgPSBmYWxzZTtcblx0XHRcblx0XHRcdC8vIGRpc21pc3MgY29udGVudCBvbiBjbG9zZVxuXHRcdFx0dGhpcy5vbiggJ2NvbnRlbnQ6cmVuZGVyIGNsb3NlJyAsIGZ1bmN0aW9uKGNvbnRlbnQpe1xuXHRcdFx0XHRpZiAoIHByZXZpb3VzQ29udGVudCAmJiAnZnVuY3Rpb24nID09PSB0eXBlb2YgcHJldmlvdXNDb250ZW50LmRpc21pc3MgKSB7XG5cdFx0XHRcdFx0cHJldmlvdXNDb250ZW50LmRpc21pc3MoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YgY29udGVudCApXG5cdFx0XHRcdFx0cHJldmlvdXNDb250ZW50ID0gY29udGVudDtcblx0XHRcdH0gLCB0aGlzICk7XG5cdFx0XG5cdFx0XHR0aGlzLm9uKCAnY29udGVudDpjcmVhdGU6cGFzdGVib2FyZCcsIHRoaXMuY29udGVudENyZWF0ZVBhc3RlYm9hcmQsIHRoaXMgKTtcblx0XHRcdHRoaXMub24oICdjb250ZW50OnJlbmRlcjpwYXN0ZWJvYXJkJywgdGhpcy5jb250ZW50UmVuZGVyR3JhYmJlciwgdGhpcyApO1xuXG5cdFx0XHRmcmFtZSA9IHRoaXM7XG5cdFx0fSxcblx0XHQvLyBhZGQgaGFuZGxlcnNcblx0XHRjb250ZW50Q3JlYXRlUGFzdGVib2FyZDogZnVuY3Rpb24oIGNvbnRlbnQgKSB7XG5cdFx0XHR2YXIgc3RhdGUgPSB0aGlzLnN0YXRlKCk7XG5cblx0XHRcdHRoaXMuY3VycmVudFBhc3RlVmlldyA9IGNvbnRlbnQudmlldyA9IG5ldyB3cC5tZWRpYS50aGVwYXN0ZS52aWV3LkRhdGFTb3VyY2VJbWFnZUdyYWJiZXIoIHsgXG5cdFx0XHRcdGNvbnRyb2xsZXJcdDogdGhpcywgXG5cdFx0XHRcdGdyYWJiZXJcdFx0OiB3cC5tZWRpYS50aGVwYXN0ZS52aWV3LlBhc3RlYm9hcmRcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5saXN0ZW5UbyggdGhpcy5jdXJyZW50UGFzdGVWaWV3LnVwbG9hZGVyLCAnYWN0aW9uOnVwbG9hZGVkOmRhdGFpbWFnZScsIHRoaXMudXBsb2FkZWREYXRhSW1hZ2UgKTtcblx0XHR9LFxuXHRcdGNvbnRlbnRSZW5kZXJHcmFiYmVyOiBmdW5jdGlvbiggY29udGVudCApIHtcblx0XHRcdGNvbnRlbnQuc3RhcnRHcmFiYmluZygpO1xuXHRcdH0sXG5cdFx0dXBsb2FkZWREYXRhSW1hZ2U6IGZ1bmN0aW9uKCBjb250ZW50ICkge1xuXHRcdFx0dGhpcy5zdG9wTGlzdGVuaW5nKCB0aGlzLmN1cnJlbnRQYXN0ZVZpZXcudXBsb2FkZXIsICdhY3Rpb246dXBsb2FkZWQ6ZGF0YWltYWdlJyApO1xuXHRcdFx0dmFyIG9iaiA9IHsgdmlldzogbnVsbCB9O1xuXHRcdFx0dGhpcy5icm93c2VDb250ZW50KG9iaik7XG5cdFx0XHR0aGlzLmNvbnRlbnQuc2V0KCBvYmoudmlldyApO1xuXHRcdFx0dGhpcy5yb3V0ZXIuZ2V0KCkuc2VsZWN0KCdicm93c2UnKVxuXHRcdH1cblx0fSk7XG5cdFxuXG5cblx0LyoqXG5cdCAqXHRBZGQgcGFzdGUgYnV0dG9uIHRvIHRvb2xiYXIgb24gdXBsb2FkLnBocFxuXHQgKi9cblx0Xy5leHRlbmQoIHdwLm1lZGlhLnZpZXcuQXR0YWNobWVudHNCcm93c2VyLnByb3RvdHlwZSwge1xuXHRcdF9wYXJlbnRJbml0aWFsaXplOlx0d3AubWVkaWEudmlldy5BdHRhY2htZW50c0Jyb3dzZXIucHJvdG90eXBlLmluaXRpYWxpemUsXG5cdFx0aW5pdGlhbGl6ZTpcdGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHNlbGYgPSB0aGlzLFxuXHRcdFx0XHRwYXN0ZUJ0bjtcblxuXHRcdFx0dGhpcy5fcGFyZW50SW5pdGlhbGl6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7XG5cdFx0XHRcblx0XHRcdHRoaXMudGhlcGFzdGUgPSB7XG5cdFx0XHRcdHBhc3RlXHQ6IHtcbi8vXHRcdFx0XHRcdGJ1dHRvblx0OiBmYWxzZSxcblx0XHRcdFx0XHRncmFiYmVyXHQ6IGZhbHNlLFxuXHRcdFx0XHRcdG1vZGFsXHQ6IGZhbHNlLFxuXHRcdFx0XHRcdG1vZGVcdDogJ3Bhc3RlJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Y3VycmVudFx0XHQ6IGZhbHNlXG5cdFx0XHR9XG5cblx0XHRcdGlmICggISAoIHRoaXMuY29udHJvbGxlciBpbnN0YW5jZW9mIHdwLm1lZGlhLnZpZXcuTWVkaWFGcmFtZS5TZWxlY3QgKSApIHtcblxuXHRcdFx0XHRpZiAoIHdwLm1lZGlhLnRoZXBhc3RlLnN1cHBvcnRzLnBhc3RlICkge1xuXG5cdFx0XHRcdFx0cGFzdGVCdG4gPSBuZXcgd3AubWVkaWEudmlldy5CdXR0b24oIHtcblx0XHRcdFx0XHRcdHRleHRcdFx0OiBsMTBuLmNvcHlfcGFzdGUsXG5cdFx0XHRcdFx0XHRjbGFzc05hbWU6ICAnZ3JhYmJlci1idXR0b24nLFxuXHRcdFx0XHRcdFx0cHJpb3JpdHlcdDogLTY0LFxuXHRcdFx0XHRcdFx0Y2xpY2s6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRzZWxmLnRoZXBhc3RlLmFjdGl2ZSA9IHNlbGYudGhlcGFzdGUucGFzdGU7XG5cdFx0XHRcdFx0XHRcdHNlbGYudGhlcGFzdGVPcGVuKCBsMTBuLmNvcHlfcGFzdGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0dGhpcy50aGVwYXN0ZS5wYXN0ZS5ncmFiYmVyID0gbmV3IHdwLm1lZGlhLnRoZXBhc3RlLnZpZXcuRGF0YVNvdXJjZUltYWdlR3JhYmJlcigge1xuXHRcdFx0XHRcdFx0Y29udHJvbGxlclx0OiB0aGlzLmNvbnRyb2xsZXIsXG5cdFx0XHRcdFx0XHRncmFiYmVyXHRcdDogd3AubWVkaWEudGhlcGFzdGUudmlldy5QYXN0ZWJvYXJkLFxuXHRcdFx0XHRcdFx0d3B1cGxvYWRlclx0OiB0aGlzLmNvbnRyb2xsZXIudXBsb2FkZXIudXBsb2FkZXIudXBsb2FkZXJcblx0XHRcdFx0XHR9ICk7XG5cblx0XHRcdFx0XHR0aGlzLnRvb2xiYXIuc2V0KCAncGFzdGVNb2RlQnV0dG9uJywgcGFzdGVCdG4ucmVuZGVyKCkgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0dGhlcGFzdGVVcGxvYWRlZDogZnVuY3Rpb24oIGUgKSB7XG5cdFx0XHR0aGlzLnRoZXBhc3RlLmFjdGl2ZS5ncmFiYmVyLmRpc21pc3MoKTtcblx0XHRcdHRoaXMudGhlcGFzdGUubW9kYWwuY2xvc2UoKTtcblx0XHRcdHRoaXMudGhlcGFzdGVDbG9zZSgpO1xuXHRcdH0sXG5cdFx0dGhlcGFzdGVFcnJvcjogZnVuY3Rpb24oIGUgKSB7XG5cdFx0XHRjb25zb2xlLmxvZyggJ2Vycm9yJywgZSApO1xuXHRcdH0sXG5cdFx0dGhlcGFzdGVPcGVuOiBmdW5jdGlvbiggdGl0bGUgKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cblx0XHRcdHRoaXMudGhlcGFzdGUubW9kYWwgID0gIG5ldyB3cC5tZWRpYS52aWV3Lk1vZGFsKCB7XG5cdFx0XHRcdGNvbnRyb2xsZXIgOiB0aGlzLFxuXHRcdFx0XHR0aXRsZSAgICAgIDogdGl0bGVcblx0XHRcdH0gKTtcblx0XHRcdHRoaXMudGhlcGFzdGUubW9kYWwuY29udGVudCggdGhpcy50aGVwYXN0ZS5hY3RpdmUuZ3JhYmJlciApO1xuXHRcdFx0dGhpcy50aGVwYXN0ZS5tb2RhbC5vcGVuKCk7XG5cblx0XHRcdHRoaXMudGhlcGFzdGUubW9kYWwub24oICdjbG9zZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRzZWxmLnRoZXBhc3RlQ2xvc2UuYXBwbHkoc2VsZik7XG5cdFx0XHRcdHNlbGYudGhlcGFzdGUuYWN0aXZlLmdyYWJiZXIuc3RvcEdyYWJiaW5nKCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy50aGVwYXN0ZS5hY3RpdmUuZ3JhYmJlci5zdGFydEdyYWJiaW5nKCk7XG5cblx0XHRcdHRoaXMubGlzdGVuVG8oIHRoaXMudGhlcGFzdGUuYWN0aXZlLmdyYWJiZXIudXBsb2FkZXIsICdhY3Rpb246dXBsb2FkZWQ6ZGF0YWltYWdlJywgdGhpcy50aGVwYXN0ZVVwbG9hZGVkICk7XG5cdFx0XHR0aGlzLmxpc3RlblRvKCB0aGlzLnRoZXBhc3RlLmFjdGl2ZS5ncmFiYmVyLnVwbG9hZGVyLCAnZXJyb3I6dXBsb2FkZWQ6ZGF0YWltYWdlJywgdGhpcy50aGVwYXN0ZUVycm9yICk7XG5cdFx0fSxcblx0XHR0aGVwYXN0ZUNsb3NlOiBmdW5jdGlvbigpIHtcblxuXHRcdFx0dGhpcy5jb250cm9sbGVyLmRlYWN0aXZhdGVNb2RlKCB0aGlzLnRoZXBhc3RlLmFjdGl2ZS5tb2RlICkuYWN0aXZhdGVNb2RlKCAnZWRpdCcgKTtcblxuXHRcdFx0dGhpcy5zdG9wTGlzdGVuaW5nKCB0aGlzLnRoZXBhc3RlLmFjdGl2ZS5ncmFiYmVyLnVwbG9hZGVyLCAnYWN0aW9uOnVwbG9hZGVkOmRhdGFpbWFnZScgKTtcblx0XHRcdHRoaXMuc3RvcExpc3RlbmluZyggdGhpcy50aGVwYXN0ZS5hY3RpdmUuZ3JhYmJlci51cGxvYWRlciwgJ2Vycm9yOnVwbG9hZGVkOmRhdGFpbWFnZScgKTtcblx0XHR9XG5cdH0pO1xuXHRcbn0pKGpRdWVyeSx3aW5kb3cpO1xuXG4oZnVuY3Rpb24oJCx3aW5kb3csbyl7XG5cdHZhciB0aGVwYXN0ZSA9IHdwLm1lZGlhLnRoZXBhc3RlLFxuXHRcdEJ1dHRvbiA9IHdwLm1lZGlhLnZpZXcuQnV0dG9uLFxuXHRcdE1vZGFsICA9IHdwLm1lZGlhLnZpZXcuTW9kYWwsXG5cdFx0bDEwbiAgID0gdGhlcGFzdGUubDEwbjtcblxuXG5cdHdwLm1lZGlhLnRoZXBhc3RlLnZpZXcuRGF0YVNvdXJjZUltYWdlVXBsb2FkZXIgPSB3cC5tZWRpYS5WaWV3LmV4dGVuZCh7XG5cdFx0dGVtcGxhdGU6IHdwLnRlbXBsYXRlKCd0aGVwYXN0ZS11cGxvYWRlcicpLFxuXHRcdGNsYXNzTmFtZTogJ3RoZXBhc3RlLXVwbG9hZGVyJyxcblx0XHRjb250cm9sbGVyOm51bGwsXG5cdFx0aW1hZ2UgOiBudWxsLFxuXHRcdCRkaXNjYXJkQnRuIDogbnVsbCxcblx0XHQkdXBsb2FkQnRuIDogbnVsbCxcblx0XHRcblx0XHR1cGxvYWRlciA6IG51bGwsXG5cdFx0XG5cdFx0ZXZlbnRzIDoge1xuXHRcdFx0J2NsaWNrIFtkYXRhLWFjdGlvbj1cInVwbG9hZFwiXSdcdDogJ3VwbG9hZEltYWdlJyxcblx0XHRcdCdjbGljayBbZGF0YS1hY3Rpb249XCJkaXNjYXJkXCJdJ1x0OiAnZGlzY2FyZEltYWdlJyxcblx0XHR9LFxuXHRcdGluaXRpYWxpemUgOiBmdW5jdGlvbigpIHtcblxuXHRcdFx0d3AubWVkaWEuVmlldy5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cblx0XHRcdF8uZGVmYXVsdHMoIHRoaXMub3B0aW9ucywge1xuXHRcdFx0XHRkZWZhdWx0RmlsZU5hbWUgOiBsMTBuLmltYWdlXG5cdFx0XHR9KTtcblx0XHRcdHZhciBzZWxmID0gdGhpcyxcblx0XHRcdFx0aW5zdHIgPSBuZXcgd3AubWVkaWEuVmlldyh7XG5cdFx0XHRcdHRhZ05hbWUgICAgOiAnZGl2Jyxcblx0XHRcdFx0Y2xhc3NOYW1lICA6ICdpbnN0cnVtZW50cycsXG5cdFx0XHRcdGNvbnRyb2xsZXIgOiB0aGlzLmNvbnRyb2xsZXJcblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLnVwbG9hZGVyID0gdGhpcy5vcHRpb25zLnVwbG9kZXI7XG5cdFx0fSxcblx0XHRzZXRJbWFnZURhdGEgOiBmdW5jdGlvbiggZGF0YSApIHtcblx0XHRcdHZhciBjb250YWluZXIgPSB0aGlzLiRpbWFnZUNvbnRhaW5lci5odG1sKCcnKS5nZXQoMCksXG5cdFx0XHRcdHNlbGYgPSB0aGlzLFxuXHRcdFx0XHRmb3JtYXQgPSBkYXRhLm1hdGNoKC9kYXRhOihpbWFnZVxcLyhcXHcrKSk7LylbMV07XG5cblx0XHRcdGlmICggISB0aGVwYXN0ZS5vcHRpb25zLm1pbWVfdHlwZXMuY29udmVydFtmb3JtYXRdICkge1xuXHRcdFx0XHRmb3JtYXQgPSB0aGlzLm9wdGlvbnMuZGVmYXVsdEZpbGVGb3JtYXQ7XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdGlmICggdGhpcy5pbWFnZSApIHtcblx0XHRcdFx0dGhpcy5pbWFnZS5kZXN0cm95KCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuaW1hZ2UgPSBuZXcgby5JbWFnZSgpO1xuXHRcdFx0dGhpcy5pbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIG9wdHMgPSBzZWxmLmdldFVwbG9hZGVyKCkuZ2V0T3B0aW9uKCdyZXNpemUnKSxcblx0XHRcdFx0XHRzY2FsZSA9IE1hdGgubWF4KCBvcHRzLndpZHRoIC8gdGhpcy53aWR0aCwgb3B0cy5oZWlnaHQgLyB0aGlzLmhlaWdodCApO1xuXG5cdFx0XHRcdCEhb3B0cyAmJiAoc2NhbGUgPCAxKSAmJiB0aGlzLmRvd25zaXplKCB0aGlzLndpZHRoKnNjYWxlLCB0aGlzLmhlaWdodCpzY2FsZSApO1xuXG5cdFx0XHRcdHRoaXMuZW1iZWQoIGNvbnRhaW5lciApO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmltYWdlLmxvYWQoIGRhdGEgKTtcblx0XHRcdGlmICggdGhpcy4kaW1hZ2VDb250YWluZXIgKSB7XG5cdFx0XHRcdHRoaXMuJGltYWdlQ29udGFpbmVyLmFwcGVuZCh0aGlzLmltYWdlKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuJCgnW2RhdGEtc2V0dGluZz1cImZvcm1hdFwiXSBpbnB1dFt2YWx1ZT1cIicrZm9ybWF0KydcIl0nKS5wcm9wKCAnY2hlY2tlZCcsIHRydWUgKTtcblxuXG5cdFx0XHR0aGlzLmRpc2FibGVkKGZhbHNlKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0cmVuZGVyIDogZnVuY3Rpb24oKSB7XG5cdFx0XHR3cC5tZWRpYS5WaWV3LnByb3RvdHlwZS5yZW5kZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO1xuXHRcdFx0dGhpcy4kaW1hZ2VDb250YWluZXIgPSB0aGlzLiQoJy5pbWFnZS1jb250YWluZXInKTtcblx0XHRcdHRoaXMuJGRpc2NhcmRCdG4gPSB0aGlzLiQoJ1tkYXRhLWFjdGlvbj1cImRpc2NhcmRcIl0nKTtcblx0XHRcdHRoaXMuJHVwbG9hZEJ0biA9IHRoaXMuJCgnW2RhdGEtYWN0aW9uPVwidXBsb2FkXCJdJyk7XG5cdFx0XHR0aGlzLiQoJ1tkYXRhLXNldHRpbmc9XCJ0aXRsZVwiXScpLnZhbCggdGhpcy5vcHRpb25zLmRlZmF1bHRGaWxlTmFtZSApO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHRkaXNjYXJkSW1hZ2UgOiBmdW5jdGlvbigpe1xuXHRcdFx0dGhpcy50cmlnZ2VyKCAnYWN0aW9uOmRpc2NhcmQ6ZGF0YWltYWdlJyAsIHRoaXMgKTtcblx0XHRcdHRoaXMudW5iaW5kVXBsb2FkZXJFdmVudHMoKTtcblx0XHR9LFxuXHRcdHVwbG9hZEltYWdlIDogZnVuY3Rpb24oKSB7XG5cblx0XHRcdHZhciB0eXBlID0gdGhpcy4kKCdbZGF0YS1zZXR0aW5nPVwiZm9ybWF0XCJdIDpjaGVja2VkJykudmFsKCksXG5cdFx0XHRcdHN1ZmZpeCA9IHRoZXBhc3RlLm9wdGlvbnMubWltZV90eXBlcy5jb252ZXJ0WyB0eXBlIF0sXG5cdFx0XHRcdG5hbWUgPSB0aGlzLiQoJ2lucHV0W2RhdGEtc2V0dGluZz1cInRpdGxlXCJdJykudmFsKCkgKyAnLicgKyBzdWZmaXgsXG5cdFx0XHRcdGJsb2IgPSB0aGlzLmltYWdlLmdldEFzQmxvYiggdHlwZSwgdGhlcGFzdGUub3B0aW9ucy5qcGVnX3F1YWxpdHkgKTtcblxuXHRcdFx0dGhpcy5iaW5kVXBsb2FkZXJFdmVudHMoKTtcblxuXHRcdFx0YmxvYi5kZXRhY2goIGJsb2IuZ2V0U291cmNlKCkgKTtcblx0XHRcdGJsb2IubmFtZSA9IG5hbWU7XG5cdFx0XHRibG9iLnR5cGUgPSB0eXBlO1xuXHRcdFx0dGhpcy5nZXRVcGxvYWRlcigpLmFkZEZpbGUoIGJsb2IgLCBuYW1lICk7XG5cblx0XHRcdHRoaXMuZGlzYWJsZWQoIHRydWUgKTtcblxuXHRcdFx0dGhpcy50cmlnZ2VyKCAnYWN0aW9uOnVwbG9hZDpkYXRhaW1hZ2UnICwgdGhpcyApO1xuXHRcdH0sXG5cdFx0c2hvdzpmdW5jdGlvbigpe1xuXHRcdFx0dGhpcy4kZWwuc2hvdygpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHRoaWRlOmZ1bmN0aW9uKCl7XG5cdFx0XHR0aGlzLiRlbC5oaWRlKCk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdGRpc2FibGVkIDogZnVuY3Rpb24oIGRpc2FibGVkICkge1xuXHRcdFx0dGhpcy4kZGlzY2FyZEJ0bi5wcm9wKCAnZGlzYWJsZWQnLCBkaXNhYmxlZCApO1xuXHRcdFx0dGhpcy4kdXBsb2FkQnRuLnByb3AoICdkaXNhYmxlZCcsIGRpc2FibGVkICk7XG5cdFx0fSxcblx0XHRfdXBsb2FkU3VjY2Vzc0hhbmRsZXIgOiBmdW5jdGlvbigpIHtcblx0XHRcdHRoaXMudHJpZ2dlciggJ2FjdGlvbjp1cGxvYWRlZDpkYXRhaW1hZ2UnICk7XG5cdFx0XHR0aGlzLmRpc2FibGVkKGZhbHNlKTtcblx0XHRcdHRoaXMudW5iaW5kVXBsb2FkZXJFdmVudHMoKTtcblx0XHR9LFxuXHRcdF91cGxvYWRFcnJvckhhbmRsZXIgOiBmdW5jdGlvbigpIHtcblx0XHRcdHRoaXMudHJpZ2dlciggJ2Vycm9yOnVwbG9hZGVkOmRhdGFpbWFnZScgKTtcblx0XHRcdHRoaXMuZGlzYWJsZWQoZmFsc2UpO1xuXHRcdFx0dGhpcy51bmJpbmRVcGxvYWRlckV2ZW50cygpO1xuXHRcdH0sXG5cdFx0YmluZFVwbG9hZGVyRXZlbnRzIDogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLmdldFVwbG9hZGVyKCkuYmluZCggJ0ZpbGVVcGxvYWRlZCcsXHR0aGlzLl91cGxvYWRTdWNjZXNzSGFuZGxlcixcdHRoaXMgKTtcblx0XHRcdHRoaXMuZ2V0VXBsb2FkZXIoKS5iaW5kKCAnRXJyb3InLFx0XHRcdHRoaXMuX3VwbG9hZEVycm9ySGFuZGxlcixcdHRoaXMgKTtcblx0XHR9LFxuXHRcdHVuYmluZFVwbG9hZGVyRXZlbnRzIDogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLmdldFVwbG9hZGVyKCkudW5iaW5kKCAnRmlsZVVwbG9hZGVkJyxcdHRoaXMuX3VwbG9hZFN1Y2Nlc3NIYW5kbGVyLFx0dGhpcyApO1xuXHRcdFx0dGhpcy5nZXRVcGxvYWRlcigpLnVuYmluZCggJ0Vycm9yJyxcdFx0XHR0aGlzLl91cGxvYWRFcnJvckhhbmRsZXIsXHR0aGlzICk7XG5cdFx0fSxcblx0XHRnZXRVcGxvYWRlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb250cm9sbGVyLnVwbG9hZGVyLnVwbG9hZGVyLnVwbG9hZGVyO1xuXHRcdH1cblx0fSk7XG5cblxuXHR3cC5tZWRpYS50aGVwYXN0ZS52aWV3LlBhc3RlYm9hcmQgPSB3cC5tZWRpYS5WaWV3LmV4dGVuZCh7XG5cdFx0dGVtcGxhdGU6IHdwLnRlbXBsYXRlKCd0aGVwYXN0ZS1wYXN0ZWJvYXJkJyksXG5cdFx0Y2xhc3NOYW1lOiAndGhlcGFzdGUtcGFzdGVib2FyZCcsXG5cdFx0Y29udHJvbGxlcjpudWxsLFxuXHRcdGFjdGlvbjoncGFzdGUnLFxuXHRcdCRwYXN0ZWJvYXJkIDogbnVsbCxcblxuXHRcdHJlbmRlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cdFx0XHR3cC5tZWRpYS5WaWV3LnByb3RvdHlwZS5yZW5kZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO1xuXHRcdFx0dGhpcy4kcGFzdGVib2FyZCA9IHRoaXMuJCggJy5pbmplY3RvcicgKS5wYXN0YWJsZUNvbnRlbnRlZGl0YWJsZSgpO1xuXHRcdFx0dGhpcy4kbWVzc2FnZSA9IHRoaXMuJCggJy5tZXNzYWdlJyApO1xuXHRcdFx0dGhpcy4kcGFzdGVib2FyZC5vbignY2xpY2snLCBmdW5jdGlvbigpe1xuXHRcdFx0XHRzZWxmLnNob3dfbWVzc2FnZSgnJyk7XG5cdFx0XHR9ICk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdHN0YXJ0IDogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXMsXG5cdFx0XHRcdGNsaXBib2FyZEhhc0ltYWdlO1xuXG5cdFx0XHR0aGlzLmltYWdlUGFzdGVkID0gZmFsc2U7XG5cblx0XHRcdHRoaXMuJHBhc3RlYm9hcmRcblx0XHRcdFx0Lm9uKCdwYXN0ZScsZnVuY3Rpb24oZSl7XG5cdFx0XHRcdFx0Y2xpcGJvYXJkSGFzSW1hZ2UgPSB3cC5tZWRpYS50aGVwYXN0ZS5jbGlwYm9hcmRIYXNJbWFnZShlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5vbigncGFzdGVUZXh0JyAsIGZ1bmN0aW9uKCBlLCBkYXRhICkge1xuXG5cdFx0XHRcdFx0aWYgKCBjbGlwYm9hcmRIYXNJbWFnZSB8fCBzZWxmLmltYWdlUGFzdGVkICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzZWxmLnNob3dfbWVzc2FnZSggbDEwbi5wYXN0ZV9lcnJvcl9ub19pbWFnZSApO1xuXHRcdFx0XHRcdCQoIHRoaXMgKS5odG1sKCcnKTtcblx0XHRcdFx0fSApXG5cdFx0XHRcdC5vbigncGFzdGVJbWFnZScgLCBmdW5jdGlvbiggZSwgZGF0YSApIHtcblx0XHRcdFx0XHRpZiAoIHNlbGYuaW1hZ2VQYXN0ZWQgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNlbGYudHJpZ2dlciggJ2FjdGlvbjpjcmVhdGU6ZGF0YWltYWdlJywgdGhpcyAsIGRhdGEuZGF0YVVSTCApO1xuXHRcdFx0XHRcdHNlbGYuaW1hZ2VQYXN0ZWQgPSB0cnVlO1xuXHRcdFx0XHR9IClcblx0XHRcdFx0Lm9uKCdwYXN0ZUltYWdlRXJyb3InICwgZnVuY3Rpb24oIGUsIGRhdGEgKSB7XG5cdFx0XHRcdFx0c2VsZi5zaG93X21lc3NhZ2UoIGwxMG4ucGFzdGVfZXJyb3IgKTtcblx0XHRcdFx0XHQkKCB0aGlzICkuaHRtbCgnJyk7XG5cdFx0XHRcdH0gKVxuXHRcdFx0XHQ7XG5cblx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcblx0XHRcdFx0c2VsZi4kcGFzdGVib2FyZC5nZXQoMCkuZm9jdXMoKTtcblx0XHRcdH0sMSk7XG5cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0c3RvcCA6IGZ1bmN0aW9uKCkge1xuXHRcdFx0dGhpcy4kcGFzdGVib2FyZFxuXHRcdFx0XHQub2ZmKCdwYXN0ZUltYWdlJylcblx0XHRcdFx0Lm9mZigncGFzdGVJbWFnZUVycm9yJylcblx0XHRcdFx0Lm9mZigncGFzdGVUZXh0Jyk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdHNob3c6ZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLiRlbC5zaG93KCk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdGhpZGU6ZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLiRlbC5oaWRlKCk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdHNob3dfbWVzc2FnZTpmdW5jdGlvbiggbXNnICkge1xuXHRcdFx0dGhpcy4kbWVzc2FnZS50ZXh0KCBtc2cgKTtcblx0XHR9XG5cdH0pO1xuXG5cdHdwLm1lZGlhLnRoZXBhc3RlLnZpZXcuRGF0YVNvdXJjZUltYWdlR3JhYmJlciA9IHdwLm1lZGlhLlZpZXcuZXh0ZW5kKHtcbi8vXHRcdHRhZ05hbWU6ICAgJ2RpdicsXG5cdFx0dGVtcGxhdGU6IHdwLnRlbXBsYXRlKCd0aGVwYXN0ZS1ncmFiYmVyJyksXG5cdFx0Y2xhc3NOYW1lIDogJ3RoZXBhc3RlLWdyYWJiZXInLFxuXHRcdFxuXHRcdGdyYWJiZXIgOiBudWxsLFxuXHRcdHVwbG9hZGVyIDogbnVsbCxcblx0XHRcblx0XHRpbml0aWFsaXplIDogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgcmV0ID0gd3AubWVkaWEuVmlldy5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cblx0XHRcdF8uZGVmYXVsdHMoIHRoaXMub3B0aW9ucywge1xuXHRcdFx0XHR3cHVwbG9hZGVyXHRcdDogbnVsbCxcblx0XHRcdFx0ZGVmYXVsdEZpbGVOYW1lXHQ6IGwxMG4ucGFzdGVkLFxuXHRcdFx0XHRkZWZhdWx0RmlsZUZvcm1hdCA6ICdpbWFnZS9wbmcnLFxuXHRcdFx0XHR0aXRsZVx0XHRcdDogbDEwbi5jb3B5X3Bhc3RlIFxuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMuZ3JhYmJlciAgPSBuZXcgdGhpcy5vcHRpb25zLmdyYWJiZXIoIHsgY29udHJvbGxlclx0OiB0aGlzLmNvbnRyb2xsZXIgfSApO1xuXG5cdFx0XHR0aGlzLnVwbG9hZGVyID0gbmV3IHdwLm1lZGlhLnRoZXBhc3RlLnZpZXcuRGF0YVNvdXJjZUltYWdlVXBsb2FkZXIoIHtcdFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udHJvbGxlclx0XHRcdDogdGhpcy5jb250cm9sbGVyLFxuXHRcdFx0XHRcdFx0XHRcdFx0dXBsb2Rlclx0XHRcdFx0OiB0aGlzLm9wdGlvbnMud3B1cGxvYWRlcixcblx0XHRcdFx0XHRcdFx0XHRcdGRlZmF1bHRGaWxlTmFtZVx0XHQ6IHRoaXMub3B0aW9ucy5kZWZhdWx0RmlsZU5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0RmlsZUZvcm1hdFx0OiB0aGlzLm9wdGlvbnMuZGVmYXVsdEZpbGVGb3JtYXRcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdHRoaXMucmVuZGVyKCk7XG5cblx0XHRcdHRoaXMubGlzdGVuVG8oIHRoaXMuZ3JhYmJlciwgJ2FjdGlvbjpjcmVhdGU6ZGF0YWltYWdlJyxcdHRoaXMuaW1hZ2VDcmVhdGVkICk7XG5cdFx0XHR0aGlzLmxpc3RlblRvKCB0aGlzLnVwbG9hZGVyLCAnYWN0aW9uOmRpc2NhcmQ6ZGF0YWltYWdlJyxcdHRoaXMuc3RhcnRHcmFiYmluZyApO1xuXG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH0sXG5cdFx0cmVuZGVyOmZ1bmN0aW9uKCl7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cblx0XHRcdHdwLm1lZGlhLlZpZXcucHJvdG90eXBlLnJlbmRlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cblx0XHRcdHRoaXMuJCgnLmNvbnRlbnQnKVxuXHRcdFx0XHQuYXBwZW5kKCB0aGlzLmdyYWJiZXIucmVuZGVyKCkuJGVsIClcblx0XHRcdFx0LmFwcGVuZCggdGhpcy51cGxvYWRlci5yZW5kZXIoKS4kZWwgKTtcblxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHRpbWFnZUNyZWF0ZWQgOiBmdW5jdGlvbiggZ3JhYmJlciAsIGltYWdlRGF0YSApIHtcblx0XHRcdHRoaXMuZ3JhYmJlci5zdG9wKCkuaGlkZSgpO1xuXHRcdFx0dGhpcy51cGxvYWRlci5zaG93KCkuc2V0SW1hZ2VEYXRhKCBpbWFnZURhdGEgKTtcblx0XHR9LFxuXHRcdHN0YXJ0R3JhYmJpbmc6ZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLnVwbG9hZGVyLmhpZGUoKTtcblx0XHRcdHRoaXMuZ3JhYmJlci5zaG93KCkuc3RhcnQoKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0c3RvcEdyYWJiaW5nOmZ1bmN0aW9uKCkge1xuXHRcdFx0dGhpcy5ncmFiYmVyLnN0b3AoKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0Z2V0QWN0aW9uIDogZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5ncmFiYmVyLmFjdGlvbjtcblx0XHR9LFxuXHRcdGRpc21pc3M6ZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLmdyYWJiZXIuc3RvcCgpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHR9KTtcblxufSkoalF1ZXJ5LHdpbmRvdyxtT3hpZSk7XG4iXX0= 
  • the-paste/tags/1.0.2/readme.txt

    r1730916 r1760781  
    4141== Changelog == 
    4242 
     43= 1.0.2 = 
     44* Remove unnecessary settings 
     45 
    4346= 1.0.1 = 
    4447* Update plugin URL 
  • the-paste/trunk/css/admin/mce/the-paste-editor.css

    r1729167 r1760781  
    1 .thepaste-image-placeholder{display:inline-block;max-width:100%;position:relative}.thepaste-image-placeholder:before{content:'';position:absolute;left:0;top:0;bottom:0;right:0;background:rgba(0,0,0,0.8)}.thepaste-image-placeholder:after{content:attr(data-progress) "%";position:absolute;left:0;top:50%;bottom:0;right:0;color:#fff;font-size:30px;line-height:0;text-align:center}.thepaste-image-placeholder>*{max-width:100%} 
     1.thepaste-image-placeholder{display:inline-block;max-width:100%;position:relative}.thepaste-image-placeholder:before{content:'';position:absolute;left:0;top:0;bottom:0;right:0;background:rgba(0,0,0,0.8)}.thepaste-image-placeholder:after{content:attr(data-progress) "%";position:absolute;left:0;top:50%;bottom:0;right:0;color:#fff;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;font-size:30px;font-weight:700;line-height:0;text-align:center}.thepaste-image-placeholder>*{max-width:100%} 
    22 
    3 /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlLXBhc3RlLWVkaXRvci5jc3MiLCJzb3VyY2VzIjpbInRoZS1wYXN0ZS1lZGl0b3Iuc2NzcyIsIi4uLy4uL3ZhcmlhYmxlcy9fdmFyaWFibGVzLnNjc3MiLCIuLi8uLi92YXJpYWJsZXMvX2Rhc2hpY29ucy5zY3NzIiwiLi4vLi4vbWl4aW5zL19taXhpbnMuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbkBpbXBvcnQgJy4uLy4uL3ZhcmlhYmxlcy92YXJpYWJsZXMnO1xuXG5AaW1wb3J0ICcuLi8uLi9taXhpbnMvbWl4aW5zJztcblxuLnRoZXBhc3RlLWltYWdlLXBsYWNlaG9sZGVyIHtcblx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG5cdG1heC13aWR0aDoxMDAlO1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0JjpiZWZvcmUge1xuXHRcdGNvbnRlbnQ6Jyc7XG5cdFx0cG9zaXRpb246YWJzb2x1dGU7XG5cdFx0bGVmdDowO1xuXHRcdHRvcDowO1xuXHRcdGJvdHRvbTowO1xuXHRcdHJpZ2h0OjA7XG5cdFx0YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuOCk7XG5cdH1cblx0JjphZnRlciB7XG5cdFx0Y29udGVudDphdHRyKGRhdGEtcHJvZ3Jlc3MpICclJztcblx0XHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0XHRsZWZ0OjA7XG5cdFx0dG9wOjUwJTtcblx0XHRib3R0b206MDtcblx0XHRyaWdodDowO1xuXHRcdGNvbG9yOiNmZmY7XG5cdFx0Zm9udC1zaXplOjMwcHg7XG5cdFx0bGluZS1oZWlnaHQ6MDtcblx0XHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0fVxuXHQmID4gKiB7XG5cdFx0bWF4LXdpZHRoOjEwMCU7XG5cdH1cbn1cblxuIiwiQGltcG9ydCAnZGFzaGljb25zJzsiLCJcbiRkYXNoaWNvbi1tZW51OiBcIlxcZjMzM1wiO1xuXG4kZGFzaGljb24tYWRtaW4tc2l0ZTogXCJcXGYzMTlcIjtcblxuJGRhc2hpY29uLWRhc2hib2FyZDogXCJcXGYyMjZcIjtcblxuJGRhc2hpY29uLWFkbWluLW1lZGlhOiBcIlxcZjEwNFwiO1xuXG4kZGFzaGljb24tYWRtaW4tcGFnZTogXCJcXGYxMDVcIjtcblxuJGRhc2hpY29uLWFkbWluLWNvbW1lbnRzOiBcIlxcZjEwMVwiO1xuXG4kZGFzaGljb24tYWRtaW4tYXBwZWFyYW5jZTogXCJcXGYxMDBcIjtcblxuJGRhc2hpY29uLWFkbWluLXBsdWdpbnM6IFwiXFxmMTA2XCI7XG5cbiRkYXNoaWNvbi1hZG1pbi11c2VyczogXCJcXGYxMTBcIjtcblxuJGRhc2hpY29uLWFkbWluLXRvb2xzOiBcIlxcZjEwN1wiO1xuXG4kZGFzaGljb24tYWRtaW4tc2V0dGluZ3M6IFwiXFxmMTA4XCI7XG5cbiRkYXNoaWNvbi1hZG1pbi1uZXR3b3JrOiBcIlxcZjExMlwiO1xuXG4kZGFzaGljb24tYWRtaW4tZ2VuZXJpYzogXCJcXGYxMTFcIjtcblxuJGRhc2hpY29uLWFkbWluLWhvbWU6IFwiXFxmMTAyXCI7XG5cbiRkYXNoaWNvbi1hZG1pbi1jb2xsYXBzZTogXCJcXGYxNDhcIjtcblxuJGRhc2hpY29uLWZpbHRlcjogXCJcXGY1MzZcIjtcblxuJGRhc2hpY29uLWFkbWluLWN1c3RvbWl6ZXI6IFwiXFxmNTQwXCI7XG5cbiRkYXNoaWNvbi1hZG1pbi1tdWx0aXNpdGU6IFwiXFxmNTQxXCI7XG5cblxuLyogQm90aCBBZG1pbiBNZW51IGFuZCBQb3N0IEZvcm1hdHMgKi9cblxuJGRhc2hpY29uLWFkbWluLWxpbmtzOiBcIlxcZjEwM1wiO1xuJGRhc2hpY29uLWZvcm1hdC1saW5rczogXCJcXGYxMDNcIjtcblxuJGRhc2hpY29uLWFkbWluLXBvc3Q6IFwiXFxmMTA5XCI7XG4kZGFzaGljb24tZm9ybWF0LXN0YW5kYXJkOiBcIlxcZjEwOVwiO1xuXG5cbi8qIFBvc3QgRm9ybWF0IEljb25zICovXG5cbiRkYXNoaWNvbi1mb3JtYXQtaW1hZ2U6IFwiXFxmMTI4XCI7XG5cbiRkYXNoaWNvbi1mb3JtYXQtZ2FsbGVyeTogXCJcXGYxNjFcIjtcblxuJGRhc2hpY29uLWZvcm1hdC1hdWRpbzogXCJcXGYxMjdcIjtcblxuJGRhc2hpY29uLWZvcm1hdC12aWRlbzogXCJcXGYxMjZcIjtcblxuJGRhc2hpY29uLWZvcm1hdC1jaGF0OiBcIlxcZjEyNVwiO1xuXG4kZGFzaGljb24tZm9ybWF0LXN0YXR1czogXCJcXGYxMzBcIjtcblxuJGRhc2hpY29uLWZvcm1hdC1hc2lkZTogXCJcXGYxMjNcIjtcblxuJGRhc2hpY29uLWZvcm1hdC1xdW90ZTogXCJcXGYxMjJcIjtcblxuXG4vKiBXZWxjb21lIFNjcmVlbiBJY29ucyAqL1xuXG4kZGFzaGljb24td2VsY29tZS13cml0ZS1ibG9nOiBcIlxcZjExOVwiO1xuJGRhc2hpY29uLXdlbGNvbWUtZWRpdC1wYWdlOiBcIlxcZjExOVwiO1xuXG4kZGFzaGljb24td2VsY29tZS1hZGQtcGFnZTogXCJcXGYxMzNcIjtcblxuJGRhc2hpY29uLXdlbGNvbWUtdmlldy1zaXRlOiBcIlxcZjExNVwiO1xuXG4kZGFzaGljb24td2VsY29tZS13aWRnZXRzLW1lbnVzOiBcIlxcZjExNlwiO1xuXG4kZGFzaGljb24td2VsY29tZS1jb21tZW50czogXCJcXGYxMTdcIjtcblxuJGRhc2hpY29uLXdlbGNvbWUtbGVhcm4tbW9yZTogXCJcXGYxMThcIjtcblxuXG4vKiBJbWFnZSBFZGl0aW5nIEljb25zICovXG5cbiRkYXNoaWNvbi1pbWFnZS1jcm9wOiBcIlxcZjE2NVwiO1xuXG4kZGFzaGljb24taW1hZ2Utcm90YXRlOiBcIlxcZjUzMVwiO1xuXG5cbiRkYXNoaWNvbi1pbWFnZS1yb3RhdGUtbGVmdDogXCJcXGYxNjZcIjtcblxuJGRhc2hpY29uLWltYWdlLXJvdGF0ZS1yaWdodDogXCJcXGYxNjdcIjtcblxuJGRhc2hpY29uLWltYWdlLWZsaXAtdmVydGljYWw6IFwiXFxmMTY4XCI7XG5cbiRkYXNoaWNvbi1pbWFnZS1mbGlwLWhvcml6b250YWw6IFwiXFxmMTY5XCI7XG5cbiRkYXNoaWNvbi1pbWFnZS1maWx0ZXI6IFwiXFxmNTMzXCI7XG5cblxuLyogQm90aCBJbWFnZSBFZGl0aW5nIGFuZCBUaW55TUNFICovXG5cbiRkYXNoaWNvbi11bmRvOiBcIlxcZjE3MVwiO1xuXG4kZGFzaGljb24tcmVkbzogXCJcXGYxNzJcIjtcblxuLyogVGlueU1DRSBJY29ucyAqL1xuXG4kZGFzaGljb24tZWRpdG9yLWJvbGQ6IFwiXFxmMjAwXCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItaXRhbGljOiBcIlxcZjIwMVwiO1xuXG4kZGFzaGljb24tZWRpdG9yLXVsOiBcIlxcZjIwM1wiO1xuXG4kZGFzaGljb24tZWRpdG9yLW9sOiBcIlxcZjIwNFwiO1xuXG4kZGFzaGljb24tZWRpdG9yLXF1b3RlOiBcIlxcZjIwNVwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWFsaWdubGVmdDogXCJcXGYyMDZcIjtcblxuJGRhc2hpY29uLWVkaXRvci1hbGlnbmNlbnRlcjogXCJcXGYyMDdcIjtcblxuJGRhc2hpY29uLWVkaXRvci1hbGlnbnJpZ2h0OiBcIlxcZjIwOFwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWluc2VydG1vcmU6IFwiXFxmMjA5XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3Itc3BlbGxjaGVjazogXCJcXGYyMTBcIjtcblxuJGRhc2hpY29uLWVkaXRvci1kaXN0cmFjdGlvbmZyZWU6IFwiXFxmMjExXCI7XG4kZGFzaGljb24tZWRpdG9yLWV4cGFuZDogXCJcXGYyMTFcIjtcblxuJGRhc2hpY29uLWVkaXRvci1jb250cmFjdDogXCJcXGY1MDZcIjtcblxuJGRhc2hpY29uLWVkaXRvci1raXRjaGVuc2luazogXCJcXGYyMTJcIjtcblxuJGRhc2hpY29uLWVkaXRvci11bmRlcmxpbmU6IFwiXFxmMjEzXCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItanVzdGlmeTogXCJcXGYyMTRcIjtcblxuJGRhc2hpY29uLWVkaXRvci10ZXh0Y29sb3I6IFwiXFxmMjE1XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItcGFzdGUtd29yZDogXCJcXGYyMTZcIjtcblxuJGRhc2hpY29uLWVkaXRvci1wYXN0ZS10ZXh0OiBcIlxcZjIxN1wiO1xuXG4kZGFzaGljb24tZWRpdG9yLXJlbW92ZWZvcm1hdHRpbmc6IFwiXFxmMjE4XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItdmlkZW86IFwiXFxmMjE5XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItY3VzdG9tY2hhcjogXCJcXGYyMjBcIjtcblxuJGRhc2hpY29uLWVkaXRvci1vdXRkZW50OiBcIlxcZjIyMVwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWluZGVudDogXCJcXGYyMjJcIjtcblxuJGRhc2hpY29uLWVkaXRvci1oZWxwOiBcIlxcZjIyM1wiO1xuXG4kZGFzaGljb24tZWRpdG9yLXN0cmlrZXRocm91Z2g6IFwiXFxmMjI0XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItdW5saW5rOiBcIlxcZjIyNVwiO1xuXG4kZGFzaGljb24tZWRpdG9yLXJ0bDogXCJcXGYzMjBcIjtcblxuJGRhc2hpY29uLWVkaXRvci1icmVhazogXCJcXGY0NzRcIjtcblxuJGRhc2hpY29uLWVkaXRvci1jb2RlOiBcIlxcZjQ3NVwiO1xuXG4kZGFzaGljb24tZWRpdG9yLXBhcmFncmFwaDogXCJcXGY0NzZcIjtcblxuJGRhc2hpY29uLWVkaXRvci10YWJsZTogXCJcXGY1MzVcIjtcblxuLyogUG9zdCBJY29ucyAqL1xuXG4kZGFzaGljb24tYWxpZ24tbGVmdDogXCJcXGYxMzVcIjtcblxuJGRhc2hpY29uLWFsaWduLXJpZ2h0OiBcIlxcZjEzNlwiO1xuXG4kZGFzaGljb24tYWxpZ24tY2VudGVyOiBcIlxcZjEzNFwiO1xuXG4kZGFzaGljb24tYWxpZ24tbm9uZTogXCJcXGYxMzhcIjtcblxuJGRhc2hpY29uLWxvY2s6IFwiXFxmMTYwXCI7XG5cbiRkYXNoaWNvbi11bmxvY2s6IFwiXFxmNTI4XCI7XG5cbiRkYXNoaWNvbi1jYWxlbmRhcjogXCJcXGYxNDVcIjtcblxuJGRhc2hpY29uLWNhbGVuZGFyLWFsdDogXCJcXGY1MDhcIjtcblxuJGRhc2hpY29uLXZpc2liaWxpdHk6IFwiXFxmMTc3XCI7XG5cbiRkYXNoaWNvbi1oaWRkZW46IFwiXFxmNTMwXCI7XG5cbiRkYXNoaWNvbi1wb3N0LXN0YXR1czogXCJcXGYxNzNcIjtcblxuJGRhc2hpY29uLWVkaXQ6IFwiXFxmNDY0XCI7XG5cbiRkYXNoaWNvbi1wb3N0LXRyYXNoOiBcIlxcZjE4MlwiO1xuJGRhc2hpY29uLXRyYXNoOiBcIlxcZjE4MlwiO1xuXG4kZGFzaGljb24tc3RpY2t5OiBcIlxcZjUzN1wiO1xuXG5cbi8qIFNvcnRpbmcgKi9cblxuJGRhc2hpY29uLWV4dGVybmFsOiBcIlxcZjUwNFwiO1xuXG4kZGFzaGljb24tYXJyb3ctdXA6IFwiXFxmMTQyXCI7XG5cbiRkYXNoaWNvbi1hcnJvdy1kb3duOiBcIlxcZjE0MFwiO1xuXG4kZGFzaGljb24tYXJyb3ctbGVmdDogXCJcXGYxNDFcIjtcblxuJGRhc2hpY29uLWFycm93LXJpZ2h0OiBcIlxcZjEzOVwiO1xuXG4kZGFzaGljb24tYXJyb3ctdXAtYWx0OiBcIlxcZjM0MlwiO1xuXG4kZGFzaGljb24tYXJyb3ctZG93bi1hbHQ6IFwiXFxmMzQ2XCI7XG5cbiRkYXNoaWNvbi1hcnJvdy1sZWZ0LWFsdDogXCJcXGYzNDBcIjtcblxuJGRhc2hpY29uLWFycm93LXJpZ2h0LWFsdDogXCJcXGYzNDRcIjtcblxuJGRhc2hpY29uLWFycm93LXVwLWFsdDI6IFwiXFxmMzQzXCI7XG5cbiRkYXNoaWNvbi1hcnJvdy1kb3duLWFsdDI6IFwiXFxmMzQ3XCI7XG5cbiRkYXNoaWNvbi1hcnJvdy1sZWZ0LWFsdDI6IFwiXFxmMzQxXCI7XG5cbiRkYXNoaWNvbi1hcnJvdy1yaWdodC1hbHQyOiBcIlxcZjM0NVwiO1xuXG4kZGFzaGljb24tbGVmdHJpZ2h0OiBcIlxcZjIyOVwiO1xuXG4kZGFzaGljb24tc29ydDogXCJcXGYxNTZcIjtcblxuJGRhc2hpY29uLXJhbmRvbWl6ZTogXCJcXGY1MDNcIjtcblxuJGRhc2hpY29uLWxpc3QtdmlldzogXCJcXGYxNjNcIjtcblxuJGRhc2hpY29uLWV4Y2VycHQtdmlldzogXCJcXGYxNjRcIjtcblxuJGRhc2hpY29uLWdyaWQtdmlldzogXCJcXGY1MDlcIjtcblxuJGRhc2hpY29uLW1vdmU6IFwiXFxmNTQ1XCI7XG5cblxuLyogV1Bvcmcgc3BlY2lmaWMgaWNvbnM6IEpvYnMsIFByb2ZpbGVzLCBXb3JkQ2FtcHMgKi9cblxuJGRhc2hpY29uLWhhbW1lcjogXCJcXGYzMDhcIjtcblxuJGRhc2hpY29uLWFydDogXCJcXGYzMDlcIjtcblxuJGRhc2hpY29uLW1pZ3JhdGU6IFwiXFxmMzEwXCI7XG5cbiRkYXNoaWNvbi1wZXJmb3JtYW5jZTogXCJcXGYzMTFcIjtcblxuJGRhc2hpY29uLXVuaXZlcnNhbC1hY2Nlc3M6IFwiXFxmNDgzXCI7XG5cbiRkYXNoaWNvbi11bml2ZXJzYWwtYWNjZXNzLWFsdDogXCJcXGY1MDdcIjtcblxuJGRhc2hpY29uLXRpY2tldHM6IFwiXFxmNDg2XCI7XG5cbiRkYXNoaWNvbi1uYW1ldGFnOiBcIlxcZjQ4NFwiO1xuXG4kZGFzaGljb24tY2xpcGJvYXJkOiBcIlxcZjQ4MVwiO1xuXG4kZGFzaGljb24taGVhcnQ6IFwiXFxmNDg3XCI7XG5cbiRkYXNoaWNvbi1tZWdhcGhvbmU6IFwiXFxmNDg4XCI7XG5cbiRkYXNoaWNvbi1zY2hlZHVsZTogXCJcXGY0ODlcIjtcblxuXG4vKiBJbnRlcm5hbC9Qcm9kdWN0cyAqL1xuXG4kZGFzaGljb24td29yZHByZXNzOiBcIlxcZjEyMFwiO1xuXG4kZGFzaGljb24td29yZHByZXNzLWFsdDogXCJcXGYzMjRcIjtcblxuJGRhc2hpY29uLXByZXNzdGhpczogXCJcXGYxNTdcIjtcblxuJGRhc2hpY29uLXVwZGF0ZTogXCJcXGY0NjNcIjtcblxuJGRhc2hpY29uLXNjcmVlbm9wdGlvbnM6IFwiXFxmMTgwXCI7XG5cbiRkYXNoaWNvbi1jYXJ0OiBcIlxcZjE3NFwiO1xuXG4kZGFzaGljb24tZmVlZGJhY2s6IFwiXFxmMTc1XCI7XG5cbiRkYXNoaWNvbi1jbG91ZDogXCJcXGYxNzZcIjtcblxuJGRhc2hpY29uLXRyYW5zbGF0aW9uOiBcIlxcZjMyNlwiO1xuXG5cbi8qIFRheG9ub21pZXMgKi9cblxuJGRhc2hpY29uLXRhZzogXCJcXGYzMjNcIjtcblxuJGRhc2hpY29uLWNhdGVnb3J5OiBcIlxcZjMxOFwiO1xuXG5cbi8qIFdpZGdldCBpY29ucyAqL1xuXG4kZGFzaGljb24tYXJjaGl2ZTogXCJcXGY0ODBcIjtcblxuJGRhc2hpY29uLXRhZ2Nsb3VkOiBcIlxcZjQ3OVwiO1xuXG4kZGFzaGljb24tdGV4dDogXCJcXGY0NzhcIjtcblxuXG4vKiBNZWRpYSBpY29ucyAqL1xuXG4kZGFzaGljb24tbWVkaWEtYXJjaGl2ZTogXCJcXGY1MDFcIjtcblxuJGRhc2hpY29uLW1lZGlhLWF1ZGlvOiBcIlxcZjUwMFwiO1xuXG4kZGFzaGljb24tbWVkaWEtY29kZTogXCJcXGY0OTlcIjtcblxuJGRhc2hpY29uLW1lZGlhLWRlZmF1bHQ6IFwiXFxmNDk4XCI7XG5cbiRkYXNoaWNvbi1tZWRpYS1kb2N1bWVudDogXCJcXGY0OTdcIjtcblxuJGRhc2hpY29uLW1lZGlhLWludGVyYWN0aXZlOiBcIlxcZjQ5NlwiO1xuXG4kZGFzaGljb24tbWVkaWEtc3ByZWFkc2hlZXQ6IFwiXFxmNDk1XCI7XG5cbiRkYXNoaWNvbi1tZWRpYS10ZXh0OiBcIlxcZjQ5MVwiO1xuXG4kZGFzaGljb24tbWVkaWEtdmlkZW86IFwiXFxmNDkwXCI7XG5cbiRkYXNoaWNvbi1wbGF5bGlzdC1hdWRpbzogXCJcXGY0OTJcIjtcblxuJGRhc2hpY29uLXBsYXlsaXN0LXZpZGVvOiBcIlxcZjQ5M1wiO1xuXG4kZGFzaGljb24tY29udHJvbHMtcGxheTogXCJcXGY1MjJcIjtcblxuJGRhc2hpY29uLWNvbnRyb2xzLXBhdXNlOiBcIlxcZjUyM1wiO1xuXG4kZGFzaGljb24tY29udHJvbHMtZm9yd2FyZDogXCJcXGY1MTlcIjtcblxuJGRhc2hpY29uLWNvbnRyb2xzLXNraXBmb3J3YXJkOiBcIlxcZjUxN1wiO1xuXG4kZGFzaGljb24tY29udHJvbHMtYmFjazogXCJcXGY1MThcIjtcblxuJGRhc2hpY29uLWNvbnRyb2xzLXNraXBiYWNrOiBcIlxcZjUxNlwiO1xuXG4kZGFzaGljb24tY29udHJvbHMtcmVwZWF0OiBcIlxcZjUxNVwiO1xuXG4kZGFzaGljb24tY29udHJvbHMtdm9sdW1lb246IFwiXFxmNTIxXCI7XG5cbiRkYXNoaWNvbi1jb250cm9scy12b2x1bWVvZmY6IFwiXFxmNTIwXCI7XG5cblxuLyogQWxlcnRzL05vdGlmaWNhdGlvbnMvRmxhZ3MgKi9cblxuJGRhc2hpY29uLXllczogXCJcXGYxNDdcIjtcblxuJGRhc2hpY29uLW5vOiBcIlxcZjE1OFwiO1xuXG4kZGFzaGljb24tbm8tYWx0OiBcIlxcZjMzNVwiO1xuXG4kZGFzaGljb24tcGx1czogXCJcXGYxMzJcIjtcblxuJGRhc2hpY29uLXBsdXMtYWx0OiBcIlxcZjUwMlwiO1xuXG4kZGFzaGljb24tcGx1cy1hbHQyOiBcIlxcZjU0M1wiO1xuXG4kZGFzaGljb24tbWludXM6IFwiXFxmNDYwXCI7XG5cbiRkYXNoaWNvbi1kaXNtaXNzOiBcIlxcZjE1M1wiO1xuXG4kZGFzaGljb24tbWFya2VyOiBcIlxcZjE1OVwiO1xuXG4kZGFzaGljb24tc3Rhci1maWxsZWQ6IFwiXFxmMTU1XCI7XG5cbiRkYXNoaWNvbi1zdGFyLWhhbGY6IFwiXFxmNDU5XCI7XG5cbiRkYXNoaWNvbi1zdGFyLWVtcHR5OiBcIlxcZjE1NFwiO1xuXG4kZGFzaGljb24tZmxhZzogXCJcXGYyMjdcIjtcblxuJGRhc2hpY29uLWluZm86IFwiXFxmMzQ4XCI7XG5cbiRkYXNoaWNvbi13YXJuaW5nOiBcIlxcZjUzNFwiO1xuXG5cbi8qIFNvY2lhbCBJY29ucyAqL1xuXG4kZGFzaGljb24tc2hhcmU6IFwiXFxmMjM3XCI7XG5cbiRkYXNoaWNvbi1zaGFyZTE6IFwiXFxmMjM3XCI7XG5cbiRkYXNoaWNvbi1zaGFyZS1hbHQ6IFwiXFxmMjQwXCI7XG5cbiRkYXNoaWNvbi1zaGFyZS1hbHQyOiBcIlxcZjI0MlwiO1xuXG4kZGFzaGljb24tdHdpdHRlcjogXCJcXGYzMDFcIjtcblxuJGRhc2hpY29uLXJzczogXCJcXGYzMDNcIjtcblxuJGRhc2hpY29uLWVtYWlsOiBcIlxcZjQ2NVwiO1xuXG4kZGFzaGljb24tZW1haWwtYWx0OiBcIlxcZjQ2NlwiO1xuXG4kZGFzaGljb24tZmFjZWJvb2s6IFwiXFxmMzA0XCI7XG5cbiRkYXNoaWNvbi1mYWNlYm9vay1hbHQ6IFwiXFxmMzA1XCI7XG5cbiRkYXNoaWNvbi1uZXR3b3JraW5nOiBcIlxcZjMyNVwiO1xuXG4kZGFzaGljb24tZ29vZ2xlcGx1czogXCJcXGY0NjJcIjtcblxuXG4vKiBNaXNjL0NQVCAqL1xuXG4kZGFzaGljb24tbG9jYXRpb246IFwiXFxmMjMwXCI7XG5cbiRkYXNoaWNvbi1sb2NhdGlvbi1hbHQ6IFwiXFxmMjMxXCI7XG5cbiRkYXNoaWNvbi1jYW1lcmE6IFwiXFxmMzA2XCI7XG5cbiRkYXNoaWNvbi1pbWFnZXMtYWx0OiBcIlxcZjIzMlwiO1xuXG4kZGFzaGljb24taW1hZ2VzLWFsdDI6IFwiXFxmMjMzXCI7XG5cbiRkYXNoaWNvbi12aWRlby1hbHQ6IFwiXFxmMjM0XCI7XG5cbiRkYXNoaWNvbi12aWRlby1hbHQyOiBcIlxcZjIzNVwiO1xuXG4kZGFzaGljb24tdmlkZW8tYWx0MzogXCJcXGYyMzZcIjtcblxuJGRhc2hpY29uLXZhdWx0OiBcIlxcZjE3OFwiO1xuXG4kZGFzaGljb24tc2hpZWxkOiBcIlxcZjMzMlwiO1xuXG4kZGFzaGljb24tc2hpZWxkLWFsdDogXCJcXGYzMzRcIjtcblxuJGRhc2hpY29uLXNvczogXCJcXGY0NjhcIjtcblxuJGRhc2hpY29uLXNlYXJjaDogXCJcXGYxNzlcIjtcblxuJGRhc2hpY29uLXNsaWRlczogXCJcXGYxODFcIjtcblxuJGRhc2hpY29uLWFuYWx5dGljczogXCJcXGYxODNcIjtcblxuJGRhc2hpY29uLWNoYXJ0LXBpZTogXCJcXGYxODRcIjtcblxuJGRhc2hpY29uLWNoYXJ0LWJhcjogXCJcXGYxODVcIjtcblxuJGRhc2hpY29uLWNoYXJ0LWxpbmU6IFwiXFxmMjM4XCI7XG5cbiRkYXNoaWNvbi1jaGFydC1hcmVhOiBcIlxcZjIzOVwiO1xuXG4kZGFzaGljb24tZ3JvdXBzOiBcIlxcZjMwN1wiO1xuXG4kZGFzaGljb24tYnVzaW5lc3NtYW46IFwiXFxmMzM4XCI7XG5cbiRkYXNoaWNvbi1pZDogXCJcXGYzMzZcIjtcblxuJGRhc2hpY29uLWlkLWFsdDogXCJcXGYzMzdcIjtcblxuJGRhc2hpY29uLXByb2R1Y3RzOiBcIlxcZjMxMlwiO1xuXG4kZGFzaGljb24tYXdhcmRzOiBcIlxcZjMxM1wiO1xuXG4kZGFzaGljb24tZm9ybXM6IFwiXFxmMzE0XCI7XG5cbiRkYXNoaWNvbi10ZXN0aW1vbmlhbDogXCJcXGY0NzNcIjtcblxuJGRhc2hpY29uLXBvcnRmb2xpbzogXCJcXGYzMjJcIjtcblxuJGRhc2hpY29uLWJvb2s6IFwiXFxmMzMwXCI7XG5cbiRkYXNoaWNvbi1ib29rLWFsdDogXCJcXGYzMzFcIjtcblxuJGRhc2hpY29uLWRvd25sb2FkOiBcIlxcZjMxNlwiO1xuXG4kZGFzaGljb24tdXBsb2FkOiBcIlxcZjMxN1wiO1xuXG4kZGFzaGljb24tYmFja3VwOiBcIlxcZjMyMVwiO1xuXG4kZGFzaGljb24tY2xvY2s6IFwiXFxmNDY5XCI7XG5cbiRkYXNoaWNvbi1saWdodGJ1bGI6IFwiXFxmMzM5XCI7XG5cbiRkYXNoaWNvbi1taWNyb3Bob25lOiBcIlxcZjQ4MlwiO1xuXG4kZGFzaGljb24tZGVza3RvcDogXCJcXGY0NzJcIjtcblxuJGRhc2hpY29uLWxhcHRvcDogXCJcXGY1NDdcIjtcblxuJGRhc2hpY29uLXRhYmxldDogXCJcXGY0NzFcIjtcblxuJGRhc2hpY29uLXNtYXJ0cGhvbmU6IFwiXFxmNDcwXCI7XG5cbiRkYXNoaWNvbi1waG9uZTogXCJcXGY1MjVcIjtcblxuJGRhc2hpY29uLXNtaWxleTogXCJcXGYzMjhcIjtcblxuJGRhc2hpY29uLWluZGV4LWNhcmQ6IFwiXFxmNTEwXCI7XG5cbiRkYXNoaWNvbi1jYXJyb3Q6IFwiXFxmNTExXCI7XG5cbiRkYXNoaWNvbi1idWlsZGluZzogXCJcXGY1MTJcIjtcblxuJGRhc2hpY29uLXN0b3JlOiBcIlxcZjUxM1wiO1xuXG4kZGFzaGljb24tYWxidW06IFwiXFxmNTE0XCI7XG5cbiRkYXNoaWNvbi1wYWxtdHJlZTogXCJcXGY1MjdcIjtcblxuJGRhc2hpY29uLXRpY2tldHMtYWx0OiBcIlxcZjUyNFwiO1xuXG4kZGFzaGljb24tbW9uZXk6IFwiXFxmNTI2XCI7XG5cbiRkYXNoaWNvbi10aHVtYnMtdXA6IFwiXFxmNTI5XCI7XG5cbiRkYXNoaWNvbi10aHVtYnMtZG93bjogXCJcXGY1NDJcIjtcblxuJGRhc2hpY29uLWxheW91dDogXCJcXGY1MzhcIjtcblxuJGRhc2hpY29uLXBhcGVyY2xpcDogXCJcXGY1NDZcIjtcbiIsIiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxBQUFBLDJCQUEyQixBQUFDLENBQzNCLE9BQU8sQ0FBQyxZQUFZLENBQ3BCLFNBQVMsQ0FBQyxJQUFJLENBQ2QsUUFBUSxDQUFDLFFBQVEsQ0F5QmpCLEFBNUJELEFBSUMsMkJBSjBCLEFBSTFCLE9BQVEsQUFBQyxDQUNSLE9BQU8sQ0FBQyxFQUFFLENBQ1YsUUFBUSxDQUFDLFFBQVEsQ0FDakIsSUFBSSxDQUFDLENBQUMsQ0FDTixHQUFHLENBQUMsQ0FBQyxDQUNMLE1BQU0sQ0FBQyxDQUFDLENBQ1IsS0FBSyxDQUFDLENBQUMsQ0FDUCxVQUFVLENBQUMsZUFBZSxDQUMxQixBQVpGLEFBYUMsMkJBYjBCLEFBYTFCLE1BQU8sQUFBQyxDQUNQLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQy9CLFFBQVEsQ0FBQyxRQUFRLENBQ2pCLElBQUksQ0FBQyxDQUFDLENBQ04sR0FBRyxDQUFDLEdBQUcsQ0FDUCxNQUFNLENBQUMsQ0FBQyxDQUNSLEtBQUssQ0FBQyxDQUFDLENBQ1AsS0FBSyxDQUFDLElBQUksQ0FDVixTQUFTLENBQUMsSUFBSSxDQUNkLFdBQVcsQ0FBQyxDQUFDLENBQ2IsVUFBVSxDQUFDLE1BQU0sQ0FDakIsQUF4QkYsQUF5QkssMkJBekJzQixDQXlCdEIsQ0FBQyxBQUFDLENBQ0wsU0FBUyxDQUFDLElBQUksQ0FDZCJ9 */ 
     3/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlLXBhc3RlLWVkaXRvci5jc3MiLCJzb3VyY2VzIjpbInRoZS1wYXN0ZS1lZGl0b3Iuc2NzcyIsIi4uLy4uL3ZhcmlhYmxlcy9fdmFyaWFibGVzLnNjc3MiLCIuLi8uLi92YXJpYWJsZXMvX2Rhc2hpY29ucy5zY3NzIiwiLi4vLi4vbWl4aW5zL19taXhpbnMuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbkBpbXBvcnQgJy4uLy4uL3ZhcmlhYmxlcy92YXJpYWJsZXMnO1xuXG5AaW1wb3J0ICcuLi8uLi9taXhpbnMvbWl4aW5zJztcblxuLnRoZXBhc3RlLWltYWdlLXBsYWNlaG9sZGVyIHtcblx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG5cdG1heC13aWR0aDoxMDAlO1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0JjpiZWZvcmUge1xuXHRcdGNvbnRlbnQ6Jyc7XG5cdFx0cG9zaXRpb246YWJzb2x1dGU7XG5cdFx0bGVmdDowO1xuXHRcdHRvcDowO1xuXHRcdGJvdHRvbTowO1xuXHRcdHJpZ2h0OjA7XG5cdFx0YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuOCk7XG5cdH1cblx0JjphZnRlciB7XG5cdFx0Y29udGVudDphdHRyKGRhdGEtcHJvZ3Jlc3MpICclJztcblx0XHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0XHRsZWZ0OjA7XG5cdFx0dG9wOjUwJTtcblx0XHRib3R0b206MDtcblx0XHRyaWdodDowO1xuXHRcdGNvbG9yOiNmZmY7XG5cdFx0Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFJvYm90bywgT3h5Z2VuLVNhbnMsIFVidW50dSwgQ2FudGFyZWxsLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG5cdFx0Zm9udC1zaXplOjMwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6NzAwO1xuXHRcdGxpbmUtaGVpZ2h0OjA7XG5cdFx0dGV4dC1hbGlnbjpjZW50ZXI7XG5cdH1cblx0JiA+ICoge1xuXHRcdG1heC13aWR0aDoxMDAlO1xuXHR9XG59XG4iLCJAaW1wb3J0ICdkYXNoaWNvbnMnOyIsIlxuJGRhc2hpY29uLW1lbnU6IFwiXFxmMzMzXCI7XG5cbiRkYXNoaWNvbi1hZG1pbi1zaXRlOiBcIlxcZjMxOVwiO1xuXG4kZGFzaGljb24tZGFzaGJvYXJkOiBcIlxcZjIyNlwiO1xuXG4kZGFzaGljb24tYWRtaW4tbWVkaWE6IFwiXFxmMTA0XCI7XG5cbiRkYXNoaWNvbi1hZG1pbi1wYWdlOiBcIlxcZjEwNVwiO1xuXG4kZGFzaGljb24tYWRtaW4tY29tbWVudHM6IFwiXFxmMTAxXCI7XG5cbiRkYXNoaWNvbi1hZG1pbi1hcHBlYXJhbmNlOiBcIlxcZjEwMFwiO1xuXG4kZGFzaGljb24tYWRtaW4tcGx1Z2luczogXCJcXGYxMDZcIjtcblxuJGRhc2hpY29uLWFkbWluLXVzZXJzOiBcIlxcZjExMFwiO1xuXG4kZGFzaGljb24tYWRtaW4tdG9vbHM6IFwiXFxmMTA3XCI7XG5cbiRkYXNoaWNvbi1hZG1pbi1zZXR0aW5nczogXCJcXGYxMDhcIjtcblxuJGRhc2hpY29uLWFkbWluLW5ldHdvcms6IFwiXFxmMTEyXCI7XG5cbiRkYXNoaWNvbi1hZG1pbi1nZW5lcmljOiBcIlxcZjExMVwiO1xuXG4kZGFzaGljb24tYWRtaW4taG9tZTogXCJcXGYxMDJcIjtcblxuJGRhc2hpY29uLWFkbWluLWNvbGxhcHNlOiBcIlxcZjE0OFwiO1xuXG4kZGFzaGljb24tZmlsdGVyOiBcIlxcZjUzNlwiO1xuXG4kZGFzaGljb24tYWRtaW4tY3VzdG9taXplcjogXCJcXGY1NDBcIjtcblxuJGRhc2hpY29uLWFkbWluLW11bHRpc2l0ZTogXCJcXGY1NDFcIjtcblxuXG4vKiBCb3RoIEFkbWluIE1lbnUgYW5kIFBvc3QgRm9ybWF0cyAqL1xuXG4kZGFzaGljb24tYWRtaW4tbGlua3M6IFwiXFxmMTAzXCI7XG4kZGFzaGljb24tZm9ybWF0LWxpbmtzOiBcIlxcZjEwM1wiO1xuXG4kZGFzaGljb24tYWRtaW4tcG9zdDogXCJcXGYxMDlcIjtcbiRkYXNoaWNvbi1mb3JtYXQtc3RhbmRhcmQ6IFwiXFxmMTA5XCI7XG5cblxuLyogUG9zdCBGb3JtYXQgSWNvbnMgKi9cblxuJGRhc2hpY29uLWZvcm1hdC1pbWFnZTogXCJcXGYxMjhcIjtcblxuJGRhc2hpY29uLWZvcm1hdC1nYWxsZXJ5OiBcIlxcZjE2MVwiO1xuXG4kZGFzaGljb24tZm9ybWF0LWF1ZGlvOiBcIlxcZjEyN1wiO1xuXG4kZGFzaGljb24tZm9ybWF0LXZpZGVvOiBcIlxcZjEyNlwiO1xuXG4kZGFzaGljb24tZm9ybWF0LWNoYXQ6IFwiXFxmMTI1XCI7XG5cbiRkYXNoaWNvbi1mb3JtYXQtc3RhdHVzOiBcIlxcZjEzMFwiO1xuXG4kZGFzaGljb24tZm9ybWF0LWFzaWRlOiBcIlxcZjEyM1wiO1xuXG4kZGFzaGljb24tZm9ybWF0LXF1b3RlOiBcIlxcZjEyMlwiO1xuXG5cbi8qIFdlbGNvbWUgU2NyZWVuIEljb25zICovXG5cbiRkYXNoaWNvbi13ZWxjb21lLXdyaXRlLWJsb2c6IFwiXFxmMTE5XCI7XG4kZGFzaGljb24td2VsY29tZS1lZGl0LXBhZ2U6IFwiXFxmMTE5XCI7XG5cbiRkYXNoaWNvbi13ZWxjb21lLWFkZC1wYWdlOiBcIlxcZjEzM1wiO1xuXG4kZGFzaGljb24td2VsY29tZS12aWV3LXNpdGU6IFwiXFxmMTE1XCI7XG5cbiRkYXNoaWNvbi13ZWxjb21lLXdpZGdldHMtbWVudXM6IFwiXFxmMTE2XCI7XG5cbiRkYXNoaWNvbi13ZWxjb21lLWNvbW1lbnRzOiBcIlxcZjExN1wiO1xuXG4kZGFzaGljb24td2VsY29tZS1sZWFybi1tb3JlOiBcIlxcZjExOFwiO1xuXG5cbi8qIEltYWdlIEVkaXRpbmcgSWNvbnMgKi9cblxuJGRhc2hpY29uLWltYWdlLWNyb3A6IFwiXFxmMTY1XCI7XG5cbiRkYXNoaWNvbi1pbWFnZS1yb3RhdGU6IFwiXFxmNTMxXCI7XG5cblxuJGRhc2hpY29uLWltYWdlLXJvdGF0ZS1sZWZ0OiBcIlxcZjE2NlwiO1xuXG4kZGFzaGljb24taW1hZ2Utcm90YXRlLXJpZ2h0OiBcIlxcZjE2N1wiO1xuXG4kZGFzaGljb24taW1hZ2UtZmxpcC12ZXJ0aWNhbDogXCJcXGYxNjhcIjtcblxuJGRhc2hpY29uLWltYWdlLWZsaXAtaG9yaXpvbnRhbDogXCJcXGYxNjlcIjtcblxuJGRhc2hpY29uLWltYWdlLWZpbHRlcjogXCJcXGY1MzNcIjtcblxuXG4vKiBCb3RoIEltYWdlIEVkaXRpbmcgYW5kIFRpbnlNQ0UgKi9cblxuJGRhc2hpY29uLXVuZG86IFwiXFxmMTcxXCI7XG5cbiRkYXNoaWNvbi1yZWRvOiBcIlxcZjE3MlwiO1xuXG4vKiBUaW55TUNFIEljb25zICovXG5cbiRkYXNoaWNvbi1lZGl0b3ItYm9sZDogXCJcXGYyMDBcIjtcblxuJGRhc2hpY29uLWVkaXRvci1pdGFsaWM6IFwiXFxmMjAxXCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItdWw6IFwiXFxmMjAzXCI7XG5cbiRkYXNoaWNvbi1lZGl0b3Itb2w6IFwiXFxmMjA0XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItcXVvdGU6IFwiXFxmMjA1XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItYWxpZ25sZWZ0OiBcIlxcZjIwNlwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWFsaWduY2VudGVyOiBcIlxcZjIwN1wiO1xuXG4kZGFzaGljb24tZWRpdG9yLWFsaWducmlnaHQ6IFwiXFxmMjA4XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItaW5zZXJ0bW9yZTogXCJcXGYyMDlcIjtcblxuJGRhc2hpY29uLWVkaXRvci1zcGVsbGNoZWNrOiBcIlxcZjIxMFwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWRpc3RyYWN0aW9uZnJlZTogXCJcXGYyMTFcIjtcbiRkYXNoaWNvbi1lZGl0b3ItZXhwYW5kOiBcIlxcZjIxMVwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWNvbnRyYWN0OiBcIlxcZjUwNlwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWtpdGNoZW5zaW5rOiBcIlxcZjIxMlwiO1xuXG4kZGFzaGljb24tZWRpdG9yLXVuZGVybGluZTogXCJcXGYyMTNcIjtcblxuJGRhc2hpY29uLWVkaXRvci1qdXN0aWZ5OiBcIlxcZjIxNFwiO1xuXG4kZGFzaGljb24tZWRpdG9yLXRleHRjb2xvcjogXCJcXGYyMTVcIjtcblxuJGRhc2hpY29uLWVkaXRvci1wYXN0ZS13b3JkOiBcIlxcZjIxNlwiO1xuXG4kZGFzaGljb24tZWRpdG9yLXBhc3RlLXRleHQ6IFwiXFxmMjE3XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItcmVtb3ZlZm9ybWF0dGluZzogXCJcXGYyMThcIjtcblxuJGRhc2hpY29uLWVkaXRvci12aWRlbzogXCJcXGYyMTlcIjtcblxuJGRhc2hpY29uLWVkaXRvci1jdXN0b21jaGFyOiBcIlxcZjIyMFwiO1xuXG4kZGFzaGljb24tZWRpdG9yLW91dGRlbnQ6IFwiXFxmMjIxXCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItaW5kZW50OiBcIlxcZjIyMlwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWhlbHA6IFwiXFxmMjIzXCI7XG5cbiRkYXNoaWNvbi1lZGl0b3Itc3RyaWtldGhyb3VnaDogXCJcXGYyMjRcIjtcblxuJGRhc2hpY29uLWVkaXRvci11bmxpbms6IFwiXFxmMjI1XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItcnRsOiBcIlxcZjMyMFwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWJyZWFrOiBcIlxcZjQ3NFwiO1xuXG4kZGFzaGljb24tZWRpdG9yLWNvZGU6IFwiXFxmNDc1XCI7XG5cbiRkYXNoaWNvbi1lZGl0b3ItcGFyYWdyYXBoOiBcIlxcZjQ3NlwiO1xuXG4kZGFzaGljb24tZWRpdG9yLXRhYmxlOiBcIlxcZjUzNVwiO1xuXG4vKiBQb3N0IEljb25zICovXG5cbiRkYXNoaWNvbi1hbGlnbi1sZWZ0OiBcIlxcZjEzNVwiO1xuXG4kZGFzaGljb24tYWxpZ24tcmlnaHQ6IFwiXFxmMTM2XCI7XG5cbiRkYXNoaWNvbi1hbGlnbi1jZW50ZXI6IFwiXFxmMTM0XCI7XG5cbiRkYXNoaWNvbi1hbGlnbi1ub25lOiBcIlxcZjEzOFwiO1xuXG4kZGFzaGljb24tbG9jazogXCJcXGYxNjBcIjtcblxuJGRhc2hpY29uLXVubG9jazogXCJcXGY1MjhcIjtcblxuJGRhc2hpY29uLWNhbGVuZGFyOiBcIlxcZjE0NVwiO1xuXG4kZGFzaGljb24tY2FsZW5kYXItYWx0OiBcIlxcZjUwOFwiO1xuXG4kZGFzaGljb24tdmlzaWJpbGl0eTogXCJcXGYxNzdcIjtcblxuJGRhc2hpY29uLWhpZGRlbjogXCJcXGY1MzBcIjtcblxuJGRhc2hpY29uLXBvc3Qtc3RhdHVzOiBcIlxcZjE3M1wiO1xuXG4kZGFzaGljb24tZWRpdDogXCJcXGY0NjRcIjtcblxuJGRhc2hpY29uLXBvc3QtdHJhc2g6IFwiXFxmMTgyXCI7XG4kZGFzaGljb24tdHJhc2g6IFwiXFxmMTgyXCI7XG5cbiRkYXNoaWNvbi1zdGlja3k6IFwiXFxmNTM3XCI7XG5cblxuLyogU29ydGluZyAqL1xuXG4kZGFzaGljb24tZXh0ZXJuYWw6IFwiXFxmNTA0XCI7XG5cbiRkYXNoaWNvbi1hcnJvdy11cDogXCJcXGYxNDJcIjtcblxuJGRhc2hpY29uLWFycm93LWRvd246IFwiXFxmMTQwXCI7XG5cbiRkYXNoaWNvbi1hcnJvdy1sZWZ0OiBcIlxcZjE0MVwiO1xuXG4kZGFzaGljb24tYXJyb3ctcmlnaHQ6IFwiXFxmMTM5XCI7XG5cbiRkYXNoaWNvbi1hcnJvdy11cC1hbHQ6IFwiXFxmMzQyXCI7XG5cbiRkYXNoaWNvbi1hcnJvdy1kb3duLWFsdDogXCJcXGYzNDZcIjtcblxuJGRhc2hpY29uLWFycm93LWxlZnQtYWx0OiBcIlxcZjM0MFwiO1xuXG4kZGFzaGljb24tYXJyb3ctcmlnaHQtYWx0OiBcIlxcZjM0NFwiO1xuXG4kZGFzaGljb24tYXJyb3ctdXAtYWx0MjogXCJcXGYzNDNcIjtcblxuJGRhc2hpY29uLWFycm93LWRvd24tYWx0MjogXCJcXGYzNDdcIjtcblxuJGRhc2hpY29uLWFycm93LWxlZnQtYWx0MjogXCJcXGYzNDFcIjtcblxuJGRhc2hpY29uLWFycm93LXJpZ2h0LWFsdDI6IFwiXFxmMzQ1XCI7XG5cbiRkYXNoaWNvbi1sZWZ0cmlnaHQ6IFwiXFxmMjI5XCI7XG5cbiRkYXNoaWNvbi1zb3J0OiBcIlxcZjE1NlwiO1xuXG4kZGFzaGljb24tcmFuZG9taXplOiBcIlxcZjUwM1wiO1xuXG4kZGFzaGljb24tbGlzdC12aWV3OiBcIlxcZjE2M1wiO1xuXG4kZGFzaGljb24tZXhjZXJwdC12aWV3OiBcIlxcZjE2NFwiO1xuXG4kZGFzaGljb24tZ3JpZC12aWV3OiBcIlxcZjUwOVwiO1xuXG4kZGFzaGljb24tbW92ZTogXCJcXGY1NDVcIjtcblxuXG4vKiBXUG9yZyBzcGVjaWZpYyBpY29uczogSm9icywgUHJvZmlsZXMsIFdvcmRDYW1wcyAqL1xuXG4kZGFzaGljb24taGFtbWVyOiBcIlxcZjMwOFwiO1xuXG4kZGFzaGljb24tYXJ0OiBcIlxcZjMwOVwiO1xuXG4kZGFzaGljb24tbWlncmF0ZTogXCJcXGYzMTBcIjtcblxuJGRhc2hpY29uLXBlcmZvcm1hbmNlOiBcIlxcZjMxMVwiO1xuXG4kZGFzaGljb24tdW5pdmVyc2FsLWFjY2VzczogXCJcXGY0ODNcIjtcblxuJGRhc2hpY29uLXVuaXZlcnNhbC1hY2Nlc3MtYWx0OiBcIlxcZjUwN1wiO1xuXG4kZGFzaGljb24tdGlja2V0czogXCJcXGY0ODZcIjtcblxuJGRhc2hpY29uLW5hbWV0YWc6IFwiXFxmNDg0XCI7XG5cbiRkYXNoaWNvbi1jbGlwYm9hcmQ6IFwiXFxmNDgxXCI7XG5cbiRkYXNoaWNvbi1oZWFydDogXCJcXGY0ODdcIjtcblxuJGRhc2hpY29uLW1lZ2FwaG9uZTogXCJcXGY0ODhcIjtcblxuJGRhc2hpY29uLXNjaGVkdWxlOiBcIlxcZjQ4OVwiO1xuXG5cbi8qIEludGVybmFsL1Byb2R1Y3RzICovXG5cbiRkYXNoaWNvbi13b3JkcHJlc3M6IFwiXFxmMTIwXCI7XG5cbiRkYXNoaWNvbi13b3JkcHJlc3MtYWx0OiBcIlxcZjMyNFwiO1xuXG4kZGFzaGljb24tcHJlc3N0aGlzOiBcIlxcZjE1N1wiO1xuXG4kZGFzaGljb24tdXBkYXRlOiBcIlxcZjQ2M1wiO1xuXG4kZGFzaGljb24tc2NyZWVub3B0aW9uczogXCJcXGYxODBcIjtcblxuJGRhc2hpY29uLWNhcnQ6IFwiXFxmMTc0XCI7XG5cbiRkYXNoaWNvbi1mZWVkYmFjazogXCJcXGYxNzVcIjtcblxuJGRhc2hpY29uLWNsb3VkOiBcIlxcZjE3NlwiO1xuXG4kZGFzaGljb24tdHJhbnNsYXRpb246IFwiXFxmMzI2XCI7XG5cblxuLyogVGF4b25vbWllcyAqL1xuXG4kZGFzaGljb24tdGFnOiBcIlxcZjMyM1wiO1xuXG4kZGFzaGljb24tY2F0ZWdvcnk6IFwiXFxmMzE4XCI7XG5cblxuLyogV2lkZ2V0IGljb25zICovXG5cbiRkYXNoaWNvbi1hcmNoaXZlOiBcIlxcZjQ4MFwiO1xuXG4kZGFzaGljb24tdGFnY2xvdWQ6IFwiXFxmNDc5XCI7XG5cbiRkYXNoaWNvbi10ZXh0OiBcIlxcZjQ3OFwiO1xuXG5cbi8qIE1lZGlhIGljb25zICovXG5cbiRkYXNoaWNvbi1tZWRpYS1hcmNoaXZlOiBcIlxcZjUwMVwiO1xuXG4kZGFzaGljb24tbWVkaWEtYXVkaW86IFwiXFxmNTAwXCI7XG5cbiRkYXNoaWNvbi1tZWRpYS1jb2RlOiBcIlxcZjQ5OVwiO1xuXG4kZGFzaGljb24tbWVkaWEtZGVmYXVsdDogXCJcXGY0OThcIjtcblxuJGRhc2hpY29uLW1lZGlhLWRvY3VtZW50OiBcIlxcZjQ5N1wiO1xuXG4kZGFzaGljb24tbWVkaWEtaW50ZXJhY3RpdmU6IFwiXFxmNDk2XCI7XG5cbiRkYXNoaWNvbi1tZWRpYS1zcHJlYWRzaGVldDogXCJcXGY0OTVcIjtcblxuJGRhc2hpY29uLW1lZGlhLXRleHQ6IFwiXFxmNDkxXCI7XG5cbiRkYXNoaWNvbi1tZWRpYS12aWRlbzogXCJcXGY0OTBcIjtcblxuJGRhc2hpY29uLXBsYXlsaXN0LWF1ZGlvOiBcIlxcZjQ5MlwiO1xuXG4kZGFzaGljb24tcGxheWxpc3QtdmlkZW86IFwiXFxmNDkzXCI7XG5cbiRkYXNoaWNvbi1jb250cm9scy1wbGF5OiBcIlxcZjUyMlwiO1xuXG4kZGFzaGljb24tY29udHJvbHMtcGF1c2U6IFwiXFxmNTIzXCI7XG5cbiRkYXNoaWNvbi1jb250cm9scy1mb3J3YXJkOiBcIlxcZjUxOVwiO1xuXG4kZGFzaGljb24tY29udHJvbHMtc2tpcGZvcndhcmQ6IFwiXFxmNTE3XCI7XG5cbiRkYXNoaWNvbi1jb250cm9scy1iYWNrOiBcIlxcZjUxOFwiO1xuXG4kZGFzaGljb24tY29udHJvbHMtc2tpcGJhY2s6IFwiXFxmNTE2XCI7XG5cbiRkYXNoaWNvbi1jb250cm9scy1yZXBlYXQ6IFwiXFxmNTE1XCI7XG5cbiRkYXNoaWNvbi1jb250cm9scy12b2x1bWVvbjogXCJcXGY1MjFcIjtcblxuJGRhc2hpY29uLWNvbnRyb2xzLXZvbHVtZW9mZjogXCJcXGY1MjBcIjtcblxuXG4vKiBBbGVydHMvTm90aWZpY2F0aW9ucy9GbGFncyAqL1xuXG4kZGFzaGljb24teWVzOiBcIlxcZjE0N1wiO1xuXG4kZGFzaGljb24tbm86IFwiXFxmMTU4XCI7XG5cbiRkYXNoaWNvbi1uby1hbHQ6IFwiXFxmMzM1XCI7XG5cbiRkYXNoaWNvbi1wbHVzOiBcIlxcZjEzMlwiO1xuXG4kZGFzaGljb24tcGx1cy1hbHQ6IFwiXFxmNTAyXCI7XG5cbiRkYXNoaWNvbi1wbHVzLWFsdDI6IFwiXFxmNTQzXCI7XG5cbiRkYXNoaWNvbi1taW51czogXCJcXGY0NjBcIjtcblxuJGRhc2hpY29uLWRpc21pc3M6IFwiXFxmMTUzXCI7XG5cbiRkYXNoaWNvbi1tYXJrZXI6IFwiXFxmMTU5XCI7XG5cbiRkYXNoaWNvbi1zdGFyLWZpbGxlZDogXCJcXGYxNTVcIjtcblxuJGRhc2hpY29uLXN0YXItaGFsZjogXCJcXGY0NTlcIjtcblxuJGRhc2hpY29uLXN0YXItZW1wdHk6IFwiXFxmMTU0XCI7XG5cbiRkYXNoaWNvbi1mbGFnOiBcIlxcZjIyN1wiO1xuXG4kZGFzaGljb24taW5mbzogXCJcXGYzNDhcIjtcblxuJGRhc2hpY29uLXdhcm5pbmc6IFwiXFxmNTM0XCI7XG5cblxuLyogU29jaWFsIEljb25zICovXG5cbiRkYXNoaWNvbi1zaGFyZTogXCJcXGYyMzdcIjtcblxuJGRhc2hpY29uLXNoYXJlMTogXCJcXGYyMzdcIjtcblxuJGRhc2hpY29uLXNoYXJlLWFsdDogXCJcXGYyNDBcIjtcblxuJGRhc2hpY29uLXNoYXJlLWFsdDI6IFwiXFxmMjQyXCI7XG5cbiRkYXNoaWNvbi10d2l0dGVyOiBcIlxcZjMwMVwiO1xuXG4kZGFzaGljb24tcnNzOiBcIlxcZjMwM1wiO1xuXG4kZGFzaGljb24tZW1haWw6IFwiXFxmNDY1XCI7XG5cbiRkYXNoaWNvbi1lbWFpbC1hbHQ6IFwiXFxmNDY2XCI7XG5cbiRkYXNoaWNvbi1mYWNlYm9vazogXCJcXGYzMDRcIjtcblxuJGRhc2hpY29uLWZhY2Vib29rLWFsdDogXCJcXGYzMDVcIjtcblxuJGRhc2hpY29uLW5ldHdvcmtpbmc6IFwiXFxmMzI1XCI7XG5cbiRkYXNoaWNvbi1nb29nbGVwbHVzOiBcIlxcZjQ2MlwiO1xuXG5cbi8qIE1pc2MvQ1BUICovXG5cbiRkYXNoaWNvbi1sb2NhdGlvbjogXCJcXGYyMzBcIjtcblxuJGRhc2hpY29uLWxvY2F0aW9uLWFsdDogXCJcXGYyMzFcIjtcblxuJGRhc2hpY29uLWNhbWVyYTogXCJcXGYzMDZcIjtcblxuJGRhc2hpY29uLWltYWdlcy1hbHQ6IFwiXFxmMjMyXCI7XG5cbiRkYXNoaWNvbi1pbWFnZXMtYWx0MjogXCJcXGYyMzNcIjtcblxuJGRhc2hpY29uLXZpZGVvLWFsdDogXCJcXGYyMzRcIjtcblxuJGRhc2hpY29uLXZpZGVvLWFsdDI6IFwiXFxmMjM1XCI7XG5cbiRkYXNoaWNvbi12aWRlby1hbHQzOiBcIlxcZjIzNlwiO1xuXG4kZGFzaGljb24tdmF1bHQ6IFwiXFxmMTc4XCI7XG5cbiRkYXNoaWNvbi1zaGllbGQ6IFwiXFxmMzMyXCI7XG5cbiRkYXNoaWNvbi1zaGllbGQtYWx0OiBcIlxcZjMzNFwiO1xuXG4kZGFzaGljb24tc29zOiBcIlxcZjQ2OFwiO1xuXG4kZGFzaGljb24tc2VhcmNoOiBcIlxcZjE3OVwiO1xuXG4kZGFzaGljb24tc2xpZGVzOiBcIlxcZjE4MVwiO1xuXG4kZGFzaGljb24tYW5hbHl0aWNzOiBcIlxcZjE4M1wiO1xuXG4kZGFzaGljb24tY2hhcnQtcGllOiBcIlxcZjE4NFwiO1xuXG4kZGFzaGljb24tY2hhcnQtYmFyOiBcIlxcZjE4NVwiO1xuXG4kZGFzaGljb24tY2hhcnQtbGluZTogXCJcXGYyMzhcIjtcblxuJGRhc2hpY29uLWNoYXJ0LWFyZWE6IFwiXFxmMjM5XCI7XG5cbiRkYXNoaWNvbi1ncm91cHM6IFwiXFxmMzA3XCI7XG5cbiRkYXNoaWNvbi1idXNpbmVzc21hbjogXCJcXGYzMzhcIjtcblxuJGRhc2hpY29uLWlkOiBcIlxcZjMzNlwiO1xuXG4kZGFzaGljb24taWQtYWx0OiBcIlxcZjMzN1wiO1xuXG4kZGFzaGljb24tcHJvZHVjdHM6IFwiXFxmMzEyXCI7XG5cbiRkYXNoaWNvbi1hd2FyZHM6IFwiXFxmMzEzXCI7XG5cbiRkYXNoaWNvbi1mb3JtczogXCJcXGYzMTRcIjtcblxuJGRhc2hpY29uLXRlc3RpbW9uaWFsOiBcIlxcZjQ3M1wiO1xuXG4kZGFzaGljb24tcG9ydGZvbGlvOiBcIlxcZjMyMlwiO1xuXG4kZGFzaGljb24tYm9vazogXCJcXGYzMzBcIjtcblxuJGRhc2hpY29uLWJvb2stYWx0OiBcIlxcZjMzMVwiO1xuXG4kZGFzaGljb24tZG93bmxvYWQ6IFwiXFxmMzE2XCI7XG5cbiRkYXNoaWNvbi11cGxvYWQ6IFwiXFxmMzE3XCI7XG5cbiRkYXNoaWNvbi1iYWNrdXA6IFwiXFxmMzIxXCI7XG5cbiRkYXNoaWNvbi1jbG9jazogXCJcXGY0NjlcIjtcblxuJGRhc2hpY29uLWxpZ2h0YnVsYjogXCJcXGYzMzlcIjtcblxuJGRhc2hpY29uLW1pY3JvcGhvbmU6IFwiXFxmNDgyXCI7XG5cbiRkYXNoaWNvbi1kZXNrdG9wOiBcIlxcZjQ3MlwiO1xuXG4kZGFzaGljb24tbGFwdG9wOiBcIlxcZjU0N1wiO1xuXG4kZGFzaGljb24tdGFibGV0OiBcIlxcZjQ3MVwiO1xuXG4kZGFzaGljb24tc21hcnRwaG9uZTogXCJcXGY0NzBcIjtcblxuJGRhc2hpY29uLXBob25lOiBcIlxcZjUyNVwiO1xuXG4kZGFzaGljb24tc21pbGV5OiBcIlxcZjMyOFwiO1xuXG4kZGFzaGljb24taW5kZXgtY2FyZDogXCJcXGY1MTBcIjtcblxuJGRhc2hpY29uLWNhcnJvdDogXCJcXGY1MTFcIjtcblxuJGRhc2hpY29uLWJ1aWxkaW5nOiBcIlxcZjUxMlwiO1xuXG4kZGFzaGljb24tc3RvcmU6IFwiXFxmNTEzXCI7XG5cbiRkYXNoaWNvbi1hbGJ1bTogXCJcXGY1MTRcIjtcblxuJGRhc2hpY29uLXBhbG10cmVlOiBcIlxcZjUyN1wiO1xuXG4kZGFzaGljb24tdGlja2V0cy1hbHQ6IFwiXFxmNTI0XCI7XG5cbiRkYXNoaWNvbi1tb25leTogXCJcXGY1MjZcIjtcblxuJGRhc2hpY29uLXRodW1icy11cDogXCJcXGY1MjlcIjtcblxuJGRhc2hpY29uLXRodW1icy1kb3duOiBcIlxcZjU0MlwiO1xuXG4kZGFzaGljb24tbGF5b3V0OiBcIlxcZjUzOFwiO1xuXG4kZGFzaGljb24tcGFwZXJjbGlwOiBcIlxcZjU0NlwiO1xuIiwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLEFBQUEsMkJBQTJCLEFBQUMsQ0FDM0IsT0FBTyxDQUFDLFlBQVksQ0FDcEIsU0FBUyxDQUFDLElBQUksQ0FDZCxRQUFRLENBQUMsUUFBUSxDQTJCakIsQUE5QkQsQUFJQywyQkFKMEIsQUFJMUIsT0FBUSxBQUFDLENBQ1IsT0FBTyxDQUFDLEVBQUUsQ0FDVixRQUFRLENBQUMsUUFBUSxDQUNqQixJQUFJLENBQUMsQ0FBQyxDQUNOLEdBQUcsQ0FBQyxDQUFDLENBQ0wsTUFBTSxDQUFDLENBQUMsQ0FDUixLQUFLLENBQUMsQ0FBQyxDQUNQLFVBQVUsQ0FBQyxlQUFlLENBQzFCLEFBWkYsQUFhQywyQkFiMEIsQUFhMUIsTUFBTyxBQUFDLENBQ1AsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FDL0IsUUFBUSxDQUFDLFFBQVEsQ0FDakIsSUFBSSxDQUFDLENBQUMsQ0FDTixHQUFHLENBQUMsR0FBRyxDQUNQLE1BQU0sQ0FBQyxDQUFDLENBQ1IsS0FBSyxDQUFDLENBQUMsQ0FDUCxLQUFLLENBQUMsSUFBSSxDQUNWLFdBQVcsQ0FBQyxtSEFBbUgsQ0FDL0gsU0FBUyxDQUFDLElBQUksQ0FDZCxXQUFXLENBQUMsR0FBRyxDQUNmLFdBQVcsQ0FBQyxDQUFDLENBQ2IsVUFBVSxDQUFDLE1BQU0sQ0FDakIsQUExQkYsQUEyQkssMkJBM0JzQixDQTJCdEIsQ0FBQyxBQUFDLENBQ0wsU0FBUyxDQUFDLElBQUksQ0FDZCJ9 */ 
  • the-paste/trunk/include/ThePaste/Admin/TinyMce/TinyMceThePaste.php

    r1729167 r1760781  
    2323        $this->plugin_params = array(); 
    2424        $this->mce_settings =  array( 
    25             'extended_valid_elements' => 'canvas', 
    26             'custom_elements' => 'canvas', 
     25            'extended_valid_elements'   => 'canvas', 
     26            'custom_elements'           => 'canvas', 
     27            'paste_data_images'         => true, 
    2728        ); 
    2829        parent::__construct(); 
  • the-paste/trunk/index.php

    r1730916 r1760781  
    2727 
    2828    Admin\Admin::instance(); 
    29     Settings\SettingsMedia::instance(); 
    3029 
    3130} 
  • the-paste/trunk/js/admin/mce/the-paste-plugin.js

    r1729167 r1760781  
    410410            preventImagePaste = false, 
    411411            thepaste = wp.media.thepaste, 
    412             toolbar; 
    413  
     412            toolbar, 
     413            pasted_image_tmp_prefix = '__pasted_image_tmp_', 
     414            pasted_image_tmp_class = ''; 
     415 
     416        // default on 
    414417        thepaste.options.editor.auto_upload = localStorage.getItem( 'thepaste.auto_upload' ) !== 'false'; 
    415         // default on 
    416  
    417         function domAdd() { 
    418             var result = origDomAdd.apply(this,arguments); 
    419             if ( 'mcepastebin' === $(result).attr('id') ) { 
    420                 $(result) 
    421                     .pastableContenteditable() 
    422                     .on('paste',function(e){ 
    423                     }) 
    424                     .on('pasteImage',function( e, data ) { 
    425                         var image; 
    426                         if ( preventImagePaste ) { 
    427                             e.preventDefault(); 
    428                             return false; 
    429                         } 
    430                         image = thepaste.insertImage( data.dataURL, data.blob.type, editor ); 
    431                         if ( thepaste.options.editor.auto_upload ) { 
    432                             thepaste.uploadImage( image, editor ); 
    433                         } 
    434                     }); 
    435             } 
    436             return result; 
    437         } 
    438  
    439         function setupEditorDom() { 
    440  
    441             origDomAdd = editor.dom.add; 
    442  
    443             editor.dom.add = domAdd; 
    444  
    445             $(editor.dom.doc).on( 'paste', function(e){ 
    446                 currentClipboardEvent = e.originalEvent; 
    447                 console.log(currentClipboardEvent.clipboardData.types); 
    448                 clipboardHasImage = thepaste.clipboardHasImage(e.originalEvent.clipboardData); 
    449                 preventImagePaste = false; 
    450             } ); 
    451         } 
     418 
    452419        editor.addCommand( 'cmd_thepaste', function() { 
    453420            thepaste.options.editor.auto_upload = ! thepaste.options.editor.auto_upload; 
    454421            localStorage.setItem( 'thepaste.auto_upload', thepaste.options.editor.auto_upload.toString() ); 
    455422            pasteBtn.active( thepaste.options.editor.auto_upload ); 
     423 
    456424        }); 
    457425 
     
    474442                var image; 
    475443                image = editor.selection.getNode(); 
    476 //console.log(image); 
     444 
    477445                thepaste.uploadImage( image, editor ); 
    478             }            
     446            } 
    479447        }); 
    480448 
     
    494462 
    495463        editor.on( 'wptoolbar', function( event ) { 
    496             var canUpload = false, 
    497                 uploadBtn; 
     464            var uploadBtn; 
    498465            if ( event.element.nodeName === 'IMG' && ! editor.wp.isPlaceholder( event.element ) ) { 
    499466                event.toolbar = toolbar; 
    500                 canUpload = !! event.element.src.match( /^(blob|data):/ ); 
    501467                uploadBtn = toolbar.$el.find('.thepaste-upload').closest('.mce-btn'); 
    502468 
    503                 if ( canUpload ) { 
     469                if ( canUpload( event.element ) ) { 
    504470                    uploadBtn.show(); 
    505471                } else { 
     
    509475        } ); 
    510476 
     477        function canUpload( img ) { 
     478            var sub = img.src.substring(0,5); 
     479            return sub === 'blob:' || sub === 'data:'; 
     480        } 
     481 
     482        function execCommandUploadPastedImage(a){ 
     483            if ( thepaste.options.editor.auto_upload && 
     484                a.command == 'mceInsertContent' && 
     485                !! a.value && !! a.value.content && 
     486                "<img" === a.value.content.substring(0,4).toLowerCase() 
     487            ) { 
     488                $img = $(editor.getBody()).find('.'+pasted_image_tmp_class); 
     489                if ( canUpload( $img.get(0) ) ) { 
     490                    thepaste.uploadImage( $img.get(0), editor ); 
     491                    $img.removeClass(pasted_image_tmp_class); 
     492                } 
     493            } 
     494        } 
    511495        editor 
    512             .on( 'init', setupEditorDom ) 
     496//          .on( 'init', setupEditorDom ) 
     497            .on( 'PastePostProcess', function(e){ 
     498                var $firstChild; 
     499                if ( thepaste.options.editor.auto_upload ) { 
     500                    $firstChild = $(e.node).children().first(); 
     501                    if ( $firstChild.is('img') && canUpload( $firstChild.get(0) ) ) { 
     502                        pasted_image_tmp_class = pasted_image_tmp_prefix + Date.now(); 
     503                        $firstChild.addClass( pasted_image_tmp_class ); 
     504                        editor.once( 'ExecCommand', execCommandUploadPastedImage ); 
     505                    } 
     506                } 
     507            }) 
    513508            .on( 'BeforePastePreProcess', function(e){ 
     509                // remove svg data from illustrator 
    514510                if (  e.content.match( /&lt;svg[\s\S.]*&lt;\/svg&gt;/i ) ) { 
    515511                    e.preventDefault(); 
    516512                    e.content = ''; 
    517513                } 
    518                 if ( clipboardHasImage ) { 
    519                     e.preventDefault(); 
    520                     e.content = ''; 
    521                 } 
    522514                return e; 
    523515 
    524             } ); 
     516            } ) 
     517            ; 
    525518 
    526519    }; 
     
    529522 
    530523} )(jQuery); 
    531  
  • the-paste/trunk/js/admin/mce/the-paste-plugin.min.js

    r1729167 r1760781  
    1 (function(){var t,e,n,a,o;t=window.jQuery,t.paste=function(t){var n;return"undefined"!=typeof console&&null!==console&&console.log("DEPRECATED: This method is deprecated. Please use $.fn.pastableNonInputable() instead."),n=e.mountNonInputable(t),n._container},t.fn.pastableNonInputable=function(){var n,a,o,r;for(r=this,a=0,o=r.length;a<o;a++)n=r[a],n._pastable||t(n).is("textarea, input:text, [contenteditable]")||(e.mountNonInputable(n),n._pastable=!0);return this},t.fn.pastableTextarea=function(){var n,a,o,r;for(r=this,a=0,o=r.length;a<o;a++)n=r[a],n._pastable||t(n).is(":not(textarea, input:text)")||(e.mountTextarea(n),n._pastable=!0);return this},t.fn.pastableContenteditable=function(){var n,a,o,r;for(r=this,a=0,o=r.length;a<o;a++)n=r[a],n._pastable||t(n).is(":not([contenteditable])")||(e.mountContenteditable(n),n._pastable=!0);return this},a=function(t,e){var n,a,o,r,i,u,l,s,c,p,d;if(null==e&&(e=512),!(s=t.match(/^data\:([^\;]+)\;base64\,(.+)$/)))return null;for(p=s,s=p[0],u=p[1],n=p[2],r=atob(n),o=[],c=0;c<r.length;){for(d=r.slice(c,c+e),i=new Array(d.length),l=0;l<d.length;)i[l]=d.charCodeAt(l),l++;a=new Uint8Array(i),o.push(a),c+=e}return new Blob(o,{type:u})},n=function(){return t(document.createElement("div")).attr("contenteditable",!0).attr("aria-hidden",!0).attr("tabindex",-1).css({width:1,height:1,position:"fixed",left:-100,overflow:"hidden"})},o=function(e,n){var a,o,r,i,u,l;return i=void 0,u=void 0,r=void 0,o=void 0,a=void 0,"area"===(l=e.nodeName.toLowerCase())?(i=e.parentNode,u=i.name,!(!e.href||!u||"map"!==i.nodeName.toLowerCase())&&(r=t("img[usemap='#"+u+"']"),r.length>0&&r.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(l)?(o=!e.disabled)&&(a=t(e).closest("fieldset")[0])&&(o=!a.disabled):o="a"===l?e.href||n:n,(o=o||t(e).is("[contenteditable]"))&&t(e).is(":visible"))},e=function(){function e(e,n){this._container=e,this._target=n,this._container=t(this._container),this._target=t(this._target).addClass("pastable"),this._container.on("paste",function(t){return function(e){var n,a,o,r,i,u,l,s,c,p,d,f,g;if(e.currentTarget!==e.target)return e.preventDefault();if(t._paste_event_fired=!0,null!=(null!=(c=e.originalEvent)?c.clipboardData:void 0))if(n=e.originalEvent.clipboardData,n.items)for(p=n.items,r=0,u=p.length;r<u;r++){if(o=p[r],o.type.match(/^image\//)){s=new FileReader,s.onload=function(e){return t._handleImage(e.target.result)};try{s.readAsDataURL(o.getAsFile())}catch(t){}e.preventDefault();break}"text/plain"===o.type&&o.getAsString(function(e){return t._target.trigger("pasteText",{text:e})})}else-1!==Array.prototype.indexOf.call(n.types,"text/plain")&&(g=n.getData("Text"),setTimeout(function(){return t._target.trigger("pasteText",{text:g})},1)),t._checkImagesInContainer(function(e){return t._handleImage(e)});if(n=window.clipboardData)if(null!=(d=g=n.getData("Text"))?d.length:void 0)setTimeout(function(){return t._target.trigger("pasteText",{text:g}),t._target.trigger("_pasteCheckContainerDone")},1);else{for(f=n.files,i=0,l=f.length;i<l;i++)a=f[i],t._handleImage(URL.createObjectURL(a));t._checkImagesInContainer(function(t){})}return null}}(this))}return e.prototype._target=null,e.prototype._container=null,e.mountNonInputable=function(a){var r;return r=new e(n().appendTo(a),a),t(a).on("click",function(t){return function(t){if(!o(t.target,!1))return r._container.focus()}}()),r._container.on("focus",function(e){return function(){return t(a).addClass("pastable-focus")}}()),r._container.on("blur",function(e){return function(){return t(a).removeClass("pastable-focus")}}())},e.mountTextarea=function(a){var o,r,i,u;return("undefined"!=typeof DataTransfer&&null!==DataTransfer?DataTransfer.prototype:void 0)&&(null!=(i=Object.getOwnPropertyDescriptor)&&null!=(u=i.call(Object,DataTransfer.prototype,"items"))?u.get:void 0)?this.mountContenteditable(a):(r=new e(n().insertBefore(a),a),o=!1,t(a).on("keyup",function(t){var e;return 17!==(e=t.keyCode)&&224!==e||(o=!1),null}),t(a).on("keydown",function(e){var n;return 17!==(n=e.keyCode)&&224!==n||(o=!0),null!=e.ctrlKey&&null!=e.metaKey&&(o=e.ctrlKey||e.metaKey),o&&86===e.keyCode&&(r._textarea_focus_stolen=!0,r._container.focus(),r._paste_event_fired=!1,setTimeout(function(e){return function(){if(!r._paste_event_fired)return t(a).focus(),r._textarea_focus_stolen=!1}}(),1)),null}),t(a).on("paste",function(t){return function(){}}()),t(a).on("focus",function(e){return function(){if(!r._textarea_focus_stolen)return t(a).addClass("pastable-focus")}}()),t(a).on("blur",function(e){return function(){if(!r._textarea_focus_stolen)return t(a).removeClass("pastable-focus")}}()),t(r._target).on("_pasteCheckContainerDone",function(e){return function(){return t(a).focus(),r._textarea_focus_stolen=!1}}()),t(r._target).on("pasteText",function(e){return function(e,n){var o,r,i;return i=t(a).prop("selectionStart"),r=t(a).prop("selectionEnd"),o=t(a).val(),t(a).val(""+o.slice(0,i)+n.text+o.slice(r)),t(a)[0].setSelectionRange(i+n.text.length,i+n.text.length),t(a).trigger("change")}}()))},e.mountContenteditable=function(n){return new e(n,n),t(n).on("focus",function(e){return function(){return t(n).addClass("pastable-focus")}}()),t(n).on("blur",function(e){return function(){return t(n).removeClass("pastable-focus")}}())},e.prototype._handleImage=function(t){var e;return t.match(/^webkit\-fake\-url\:\/\//)?this._target.trigger("pasteImageError",{message:"You are trying to paste an image in Safari, however we are unable to retieve its data."}):(this._target.trigger("pasteImageStart"),e=new Image,e.crossOrigin="anonymous",e.onload=function(t){return function(){var n,o,r,i;o=document.createElement("canvas"),o.width=e.width,o.height=e.height,r=o.getContext("2d"),r.drawImage(e,0,0,o.width,o.height),i=null;try{i=o.toDataURL("image/png"),n=a(i)}catch(t){}return i&&t._target.trigger("pasteImage",{blob:n,dataURL:i,width:e.width,height:e.height}),t._target.trigger("pasteImageEnd")}}(this),e.onerror=function(e){return function(){return e._target.trigger("pasteImageError",{message:"Failed to get image from: "+t,url:t}),e._target.trigger("pasteImageEnd")}}(this),e.src=t)},e.prototype._checkImagesInContainer=function(e){var n,a,o,r,i;for(i=Math.floor(1e3*Math.random()),r=this._container.find("img"),a=0,o=r.length;a<o;a++)n=r[a],n["_paste_marked_"+i]=!0;return setTimeout(function(a){return function(){var o,r,u;for(u=a._container.find("img"),o=0,r=u.length;o<r;o++)n=u[o],n["_paste_marked_"+i]||(e(n.src),t(n).remove());return a._target.trigger("_pasteCheckContainerDone")}}(this),1)},e}()}).call(this);var thepastePluginCallback;!function(t){thepastePluginCallback=function(e){function n(){var n=r.apply(this,arguments);return"mcepastebin"===t(n).attr("id")&&t(n).pastableContenteditable().on("paste",function(t){}).on("pasteImage",function(t,n){var a;if(s)return t.preventDefault(),!1;a=c.insertImage(n.dataURL,n.blob.type,e),c.options.editor.auto_upload&&c.uploadImage(a,e)}),n}function a(){r=e.dom.add,e.dom.add=n,t(e.dom.doc).on("paste",function(t){l=t.originalEvent,console.log(l.clipboardData.types),u=c.clipboardHasImage(t.originalEvent.clipboardData),s=!1})}var o,r,i,u=!1,l=null,s=!1,c=wp.media.thepaste;c.options.editor.auto_upload="false"!==localStorage.getItem("thepaste.auto_upload"),e.addCommand("cmd_thepaste",function(){c.options.editor.auto_upload=!c.options.editor.auto_upload,localStorage.setItem("thepaste.auto_upload",c.options.editor.auto_upload.toString()),o.active(c.options.editor.auto_upload)}),e.addButton("thepaste",{icon:"thepaste",tooltip:c.l10n.upload_pasted_images,cmd:"cmd_thepaste",onPostRender:function(){o=this},active:c.options.editor.auto_upload}),e.addButton("wp_img_thepaste_upload",{icon:"dashicon dashicons dashicons-upload thepaste-upload",tooltip:c.l10n.upload_image,onclick:function(){var t;t=e.selection.getNode(),c.uploadImage(t,e)}}),e.once("preinit",function(){e.wp&&e.wp._createToolbar&&(i=e.wp._createToolbar(["wp_img_alignleft","wp_img_aligncenter","wp_img_alignright","wp_img_alignnone","wp_img_thepaste_upload","wp_img_edit","wp_img_remove"]))}),e.on("wptoolbar",function(t){var n,a=!1;"IMG"!==t.element.nodeName||e.wp.isPlaceholder(t.element)||(t.toolbar=i,a=!!t.element.src.match(/^(blob|data):/),n=i.$el.find(".thepaste-upload").closest(".mce-btn"),a?n.show():n.hide())}),e.on("init",a).on("BeforePastePreProcess",function(t){return t.content.match(/&lt;svg[\s\S.]*&lt;\/svg&gt;/i)&&(t.preventDefault(),t.content=""),u&&(t.preventDefault(),t.content=""),t})},tinymce.PluginManager.add("thepaste",thepastePluginCallback)}(jQuery); 
    2 //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRoZS1wYXN0ZS1wbHVnaW4uanMiXSwibmFtZXMiOlsiJCIsIlBhc3RlIiwiY3JlYXRlSGlkZGVuRWRpdGFibGUiLCJkYXRhVVJMdG9CbG9iIiwiaXNGb2N1c2FibGUiLCJ3aW5kb3ciLCJqUXVlcnkiLCJwYXN0ZSIsInBhc3RlQ29udGFpbmVyIiwicG0iLCJjb25zb2xlIiwibG9nIiwibW91bnROb25JbnB1dGFibGUiLCJfY29udGFpbmVyIiwiZm4iLCJwYXN0YWJsZU5vbklucHV0YWJsZSIsImVsIiwiaiIsImxlbiIsInJlZiIsInRoaXMiLCJsZW5ndGgiLCJfcGFzdGFibGUiLCJpcyIsInBhc3RhYmxlVGV4dGFyZWEiLCJtb3VudFRleHRhcmVhIiwicGFzdGFibGVDb250ZW50ZWRpdGFibGUiLCJtb3VudENvbnRlbnRlZGl0YWJsZSIsImRhdGFVUkwiLCJzbGljZVNpemUiLCJiNjREYXRhIiwiYnl0ZUFycmF5IiwiYnl0ZUFycmF5cyIsImJ5dGVDaGFyYWN0ZXJzIiwiYnl0ZU51bWJlcnMiLCJjb250ZW50VHlwZSIsImkiLCJtIiwib2Zmc2V0Iiwic2xpY2UiLCJtYXRjaCIsImF0b2IiLCJBcnJheSIsImNoYXJDb2RlQXQiLCJVaW50OEFycmF5IiwicHVzaCIsIkJsb2IiLCJ0eXBlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiYXR0ciIsImNzcyIsIndpZHRoIiwiaGVpZ2h0IiwicG9zaXRpb24iLCJsZWZ0Iiwib3ZlcmZsb3ciLCJlbGVtZW50IiwiaGFzVGFiaW5kZXgiLCJmaWVsZHNldCIsImZvY3VzYWJsZUlmVmlzaWJsZSIsImltZyIsIm1hcCIsIm1hcE5hbWUiLCJub2RlTmFtZSIsInRvTG93ZXJDYXNlIiwicGFyZW50Tm9kZSIsIm5hbWUiLCJocmVmIiwidGVzdCIsImRpc2FibGVkIiwiY2xvc2VzdCIsIl90YXJnZXQiLCJhZGRDbGFzcyIsIm9uIiwiX3RoaXMiLCJldiIsImNsaXBib2FyZERhdGEiLCJmaWxlIiwiaXRlbSIsImsiLCJsZW4xIiwicmVhZGVyIiwicmVmMSIsInJlZjIiLCJyZWYzIiwidGV4dCIsImN1cnJlbnRUYXJnZXQiLCJ0YXJnZXQiLCJwcmV2ZW50RGVmYXVsdCIsIl9wYXN0ZV9ldmVudF9maXJlZCIsIm9yaWdpbmFsRXZlbnQiLCJpdGVtcyIsIkZpbGVSZWFkZXIiLCJvbmxvYWQiLCJldmVudCIsIl9oYW5kbGVJbWFnZSIsInJlc3VsdCIsInJlYWRBc0RhdGFVUkwiLCJnZXRBc0ZpbGUiLCJlcnJvciIsImdldEFzU3RyaW5nIiwic3RyaW5nIiwidHJpZ2dlciIsInByb3RvdHlwZSIsImluZGV4T2YiLCJjYWxsIiwidHlwZXMiLCJnZXREYXRhIiwic2V0VGltZW91dCIsIl9jaGVja0ltYWdlc0luQ29udGFpbmVyIiwic3JjIiwiZmlsZXMiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJub25JbnB1dGFibGUiLCJhcHBlbmRUbyIsImZvY3VzIiwicmVtb3ZlQ2xhc3MiLCJ0ZXh0YXJlYSIsImN0bERvd24iLCJEYXRhVHJhbnNmZXIiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXQiLCJpbnNlcnRCZWZvcmUiLCJrZXlDb2RlIiwiY3RybEtleSIsIm1ldGFLZXkiLCJfdGV4dGFyZWFfZm9jdXNfc3RvbGVuIiwiZGF0YSIsImNvbnRlbnQiLCJjdXJFbmQiLCJjdXJTdGFydCIsInByb3AiLCJ2YWwiLCJzZXRTZWxlY3Rpb25SYW5nZSIsImNvbnRlbnRlZGl0YWJsZSIsImxvYWRlciIsIm1lc3NhZ2UiLCJJbWFnZSIsImNyb3NzT3JpZ2luIiwiYmxvYiIsImNhbnZhcyIsImN0eCIsImdldENvbnRleHQiLCJkcmF3SW1hZ2UiLCJ0b0RhdGFVUkwiLCJvbmVycm9yIiwidXJsIiwiY2IiLCJ0aW1lc3BhbiIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImZpbmQiLCJyZW1vdmUiLCJ0aGVwYXN0ZVBsdWdpbkNhbGxiYWNrIiwiZWRpdG9yIiwiZG9tQWRkIiwib3JpZ0RvbUFkZCIsImFwcGx5IiwiYXJndW1lbnRzIiwiZSIsImltYWdlIiwicHJldmVudEltYWdlUGFzdGUiLCJ0aGVwYXN0ZSIsImluc2VydEltYWdlIiwib3B0aW9ucyIsImF1dG9fdXBsb2FkIiwidXBsb2FkSW1hZ2UiLCJzZXR1cEVkaXRvckRvbSIsImRvbSIsImFkZCIsImRvYyIsImN1cnJlbnRDbGlwYm9hcmRFdmVudCIsImNsaXBib2FyZEhhc0ltYWdlIiwicGFzdGVCdG4iLCJ0b29sYmFyIiwid3AiLCJtZWRpYSIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJhZGRDb21tYW5kIiwic2V0SXRlbSIsInRvU3RyaW5nIiwiYWN0aXZlIiwiYWRkQnV0dG9uIiwiaWNvbiIsInRvb2x0aXAiLCJsMTBuIiwidXBsb2FkX3Bhc3RlZF9pbWFnZXMiLCJjbWQiLCJvblBvc3RSZW5kZXIiLCJ1cGxvYWRfaW1hZ2UiLCJvbmNsaWNrIiwic2VsZWN0aW9uIiwiZ2V0Tm9kZSIsIm9uY2UiLCJfY3JlYXRlVG9vbGJhciIsInVwbG9hZEJ0biIsImNhblVwbG9hZCIsImlzUGxhY2Vob2xkZXIiLCIkZWwiLCJzaG93IiwiaGlkZSIsInRpbnltY2UiLCJQbHVnaW5NYW5hZ2VyIl0sIm1hcHBpbmdzIjoiQ0FRQSxXQUNFLEdBQUlBLEdBQUdDLEVBQU9DLEVBQXNCQyxFQUFlQyxDQUVuREosR0FBSUssT0FBT0MsT0FFWE4sRUFBRU8sTUFBUSxTQUFTQyxHQUNqQixHQUFJQyxFQUtKLE9BSnVCLG1CQUFaQyxVQUF1QyxPQUFaQSxTQUNwQ0EsUUFBUUMsSUFBSSwwRkFFZEYsRUFBS1IsRUFBTVcsa0JBQWtCSixHQUN0QkMsRUFBR0ksWUFHWmIsRUFBRWMsR0FBR0MscUJBQXVCLFdBQzFCLEdBQUlDLEdBQUlDLEVBQUdDLEVBQUtDLENBRWhCLEtBREFBLEVBQU1DLEtBQ0RILEVBQUksRUFBR0MsRUFBTUMsRUFBSUUsT0FBUUosRUFBSUMsRUFBS0QsSUFDckNELEVBQUtHLEVBQUlGLEdBQ0xELEVBQUdNLFdBQWF0QixFQUFFZ0IsR0FBSU8sR0FBRyw2Q0FHN0J0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QUFReUIsSUFBSWhELEtBQUssb0JBQW9CcEYsUUFBUSxZQUVwRGtJLEVBQ0pELEVBQVVJLE9BRVZKLEVBQVVLLFVBS2IvQyxFQUNFcEYsR0FBSSxPQUFRaUcsR0FDWmpHLEdBQUksd0JBQXlCLFNBQVN5RixHQVN0QyxNQVJNQSxHQUFFaEMsUUFBUTNGLE1BQU8sbUNBQ3RCMkgsRUFBRTFFLGlCQUNGMEUsRUFBRWhDLFFBQVUsSUFFUjZDLElBQ0piLEVBQUUxRSxpQkFDRjBFLEVBQUVoQyxRQUFVLElBRU5nQyxLQU1WMkMsUUFBUUMsY0FBY2xDLElBQUssV0FBWWhCLHlCQUVwQ3ZKIiwiZmlsZSI6InRoZS1wYXN0ZS1wbHVnaW4ubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjEyLjdcblxuLypcbnBhc3RlLmpzIGlzIGFuIGludGVyZmFjZSB0byByZWFkIGRhdGEgKCB0ZXh0IC8gaW1hZ2UgKSBmcm9tIGNsaXBib2FyZCBpbiBkaWZmZXJlbnQgYnJvd3NlcnMuIEl0IGFsc28gY29udGFpbnMgc2V2ZXJhbCBoYWNrcy5cblxuaHR0cHM6Ly9naXRodWIuY29tL2xheWVyc3Nzcy9wYXN0ZS5qc1xuICovXG5cbihmdW5jdGlvbigpIHtcbiAgdmFyICQsIFBhc3RlLCBjcmVhdGVIaWRkZW5FZGl0YWJsZSwgZGF0YVVSTHRvQmxvYiwgaXNGb2N1c2FibGU7XG5cbiAgJCA9IHdpbmRvdy5qUXVlcnk7XG5cbiAgJC5wYXN0ZSA9IGZ1bmN0aW9uKHBhc3RlQ29udGFpbmVyKSB7XG4gICAgdmFyIHBtO1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb25zb2xlICE9PSBudWxsKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkRFUFJFQ0FURUQ6IFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgJC5mbi5wYXN0YWJsZU5vbklucHV0YWJsZSgpIGluc3RlYWQuXCIpO1xuICAgIH1cbiAgICBwbSA9IFBhc3RlLm1vdW50Tm9uSW5wdXRhYmxlKHBhc3RlQ29udGFpbmVyKTtcbiAgICByZXR1cm4gcG0uX2NvbnRhaW5lcjtcbiAgfTtcblxuICAkLmZuLnBhc3RhYmxlTm9uSW5wdXRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGVsLCBqLCBsZW4sIHJlZjtcbiAgICByZWYgPSB0aGlzO1xuICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgZWwgPSByZWZbal07XG4gICAgICBpZiAoZWwuX3Bhc3RhYmxlIHx8ICQoZWwpLmlzKCd0ZXh0YXJlYSwgaW5wdXQ6dGV4dCwgW2NvbnRlbnRlZGl0YWJsZV0nKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIFBhc3RlLm1vdW50Tm9uSW5wdXRhYmxlKGVsKTtcbiAgICAgIGVsLl9wYXN0YWJsZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gICQuZm4ucGFzdGFibGVUZXh0YXJlYSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBlbCwgaiwgbGVuLCByZWY7XG4gICAgcmVmID0gdGhpcztcbiAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGVsID0gcmVmW2pdO1xuICAgICAgaWYgKGVsLl9wYXN0YWJsZSB8fCAkKGVsKS5pcygnOm5vdCh0ZXh0YXJlYSwgaW5wdXQ6dGV4dCknKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIFBhc3RlLm1vdW50VGV4dGFyZWEoZWwpO1xuICAgICAgZWwuX3Bhc3RhYmxlID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgJC5mbi5wYXN0YWJsZUNvbnRlbnRlZGl0YWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBlbCwgaiwgbGVuLCByZWY7XG4gICAgcmVmID0gdGhpcztcbiAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGVsID0gcmVmW2pdO1xuICAgICAgaWYgKGVsLl9wYXN0YWJsZSB8fCAkKGVsKS5pcygnOm5vdChbY29udGVudGVkaXRhYmxlXSknKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIFBhc3RlLm1vdW50Q29udGVudGVkaXRhYmxlKGVsKTtcbiAgICAgIGVsLl9wYXN0YWJsZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIGRhdGFVUkx0b0Jsb2IgPSBmdW5jdGlvbihkYXRhVVJMLCBzbGljZVNpemUpIHtcbiAgICB2YXIgYjY0RGF0YSwgYnl0ZUFycmF5LCBieXRlQXJyYXlzLCBieXRlQ2hhcmFjdGVycywgYnl0ZU51bWJlcnMsIGNvbnRlbnRUeXBlLCBpLCBtLCBvZmZzZXQsIHJlZiwgc2xpY2U7XG4gICAgaWYgKHNsaWNlU2l6ZSA9PSBudWxsKSB7XG4gICAgICBzbGljZVNpemUgPSA1MTI7XG4gICAgfVxuICAgIGlmICghKG0gPSBkYXRhVVJMLm1hdGNoKC9eZGF0YVxcOihbXlxcO10rKVxcO2Jhc2U2NFxcLCguKykkLykpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmVmID0gbSwgbSA9IHJlZlswXSwgY29udGVudFR5cGUgPSByZWZbMV0sIGI2NERhdGEgPSByZWZbMl07XG4gICAgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGI2NERhdGEpO1xuICAgIGJ5dGVBcnJheXMgPSBbXTtcbiAgICBvZmZzZXQgPSAwO1xuICAgIHdoaWxlIChvZmZzZXQgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGgpIHtcbiAgICAgIHNsaWNlID0gYnl0ZUNoYXJhY3RlcnMuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBzbGljZVNpemUpO1xuICAgICAgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoc2xpY2UubGVuZ3RoKTtcbiAgICAgIGkgPSAwO1xuICAgICAgd2hpbGUgKGkgPCBzbGljZS5sZW5ndGgpIHtcbiAgICAgICAgYnl0ZU51bWJlcnNbaV0gPSBzbGljZS5jaGFyQ29kZUF0KGkpO1xuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgICBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG4gICAgICBieXRlQXJyYXlzLnB1c2goYnl0ZUFycmF5KTtcbiAgICAgIG9mZnNldCArPSBzbGljZVNpemU7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQmxvYihieXRlQXJyYXlzLCB7XG4gICAgICB0eXBlOiBjb250ZW50VHlwZVxuICAgIH0pO1xuICB9O1xuXG4gIGNyZWF0ZUhpZGRlbkVkaXRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpLmF0dHIoJ2NvbnRlbnRlZGl0YWJsZScsIHRydWUpLmF0dHIoJ2FyaWEtaGlkZGVuJywgdHJ1ZSkuYXR0cigndGFiaW5kZXgnLCAtMSkuY3NzKHtcbiAgICAgIHdpZHRoOiAxLFxuICAgICAgaGVpZ2h0OiAxLFxuICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICBsZWZ0OiAtMTAwLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nXG4gICAgfSk7XG4gIH07XG5cbiAgaXNGb2N1c2FibGUgPSBmdW5jdGlvbihlbGVtZW50LCBoYXNUYWJpbmRleCkge1xuICAgIHZhciBmaWVsZHNldCwgZm9jdXNhYmxlSWZWaXNpYmxlLCBpbWcsIG1hcCwgbWFwTmFtZSwgbm9kZU5hbWU7XG4gICAgbWFwID0gdm9pZCAwO1xuICAgIG1hcE5hbWUgPSB2b2lkIDA7XG4gICAgaW1nID0gdm9pZCAwO1xuICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9IHZvaWQgMDtcbiAgICBmaWVsZHNldCA9IHZvaWQgMDtcbiAgICBub2RlTmFtZSA9IGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoJ2FyZWEnID09PSBub2RlTmFtZSkge1xuICAgICAgbWFwID0gZWxlbWVudC5wYXJlbnROb2RlO1xuICAgICAgbWFwTmFtZSA9IG1hcC5uYW1lO1xuICAgICAgaWYgKCFlbGVtZW50LmhyZWYgfHwgIW1hcE5hbWUgfHwgbWFwLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdtYXAnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGltZyA9ICQoJ2ltZ1t1c2VtYXA9XFwnIycgKyBtYXBOYW1lICsgJ1xcJ10nKTtcbiAgICAgIHJldHVybiBpbWcubGVuZ3RoID4gMCAmJiBpbWcuaXMoJzp2aXNpYmxlJyk7XG4gICAgfVxuICAgIGlmICgvXihpbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9ufG9iamVjdCkkLy50ZXN0KG5vZGVOYW1lKSkge1xuICAgICAgZm9jdXNhYmxlSWZWaXNpYmxlID0gIWVsZW1lbnQuZGlzYWJsZWQ7XG4gICAgICBpZiAoZm9jdXNhYmxlSWZWaXNpYmxlKSB7XG4gICAgICAgIGZpZWxkc2V0ID0gJChlbGVtZW50KS5jbG9zZXN0KCdmaWVsZHNldCcpWzBdO1xuICAgICAgICBpZiAoZmllbGRzZXQpIHtcbiAgICAgICAgICBmb2N1c2FibGVJZlZpc2libGUgPSAhZmllbGRzZXQuZGlzYWJsZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCdhJyA9PT0gbm9kZU5hbWUpIHtcbiAgICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9IGVsZW1lbnQuaHJlZiB8fCBoYXNUYWJpbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9jdXNhYmxlSWZWaXNpYmxlID0gaGFzVGFiaW5kZXg7XG4gICAgfVxuICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9IGZvY3VzYWJsZUlmVmlzaWJsZSB8fCAkKGVsZW1lbnQpLmlzKCdbY29udGVudGVkaXRhYmxlXScpO1xuICAgIHJldHVybiBmb2N1c2FibGVJZlZpc2libGUgJiYgJChlbGVtZW50KS5pcygnOnZpc2libGUnKTtcbiAgfTtcblxuICBQYXN0ZSA9IChmdW5jdGlvbigpIHtcbiAgICBQYXN0ZS5wcm90b3R5cGUuX3RhcmdldCA9IG51bGw7XG5cbiAgICBQYXN0ZS5wcm90b3R5cGUuX2NvbnRhaW5lciA9IG51bGw7XG5cbiAgICBQYXN0ZS5tb3VudE5vbklucHV0YWJsZSA9IGZ1bmN0aW9uKG5vbklucHV0YWJsZSkge1xuICAgICAgdmFyIHBhc3RlO1xuICAgICAgcGFzdGUgPSBuZXcgUGFzdGUoY3JlYXRlSGlkZGVuRWRpdGFibGUoKS5hcHBlbmRUbyhub25JbnB1dGFibGUpLCBub25JbnB1dGFibGUpO1xuICAgICAgJChub25JbnB1dGFibGUpLm9uKCdjbGljaycsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXYpIHtcbiAgICAgICAgICBpZiAoIWlzRm9jdXNhYmxlKGV2LnRhcmdldCwgZmFsc2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFzdGUuX2NvbnRhaW5lci5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHBhc3RlLl9jb250YWluZXIub24oJ2ZvY3VzJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gJChub25JbnB1dGFibGUpLmFkZENsYXNzKCdwYXN0YWJsZS1mb2N1cycpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgcmV0dXJuIHBhc3RlLl9jb250YWluZXIub24oJ2JsdXInLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiAkKG5vbklucHV0YWJsZSkucmVtb3ZlQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgfTtcblxuICAgIFBhc3RlLm1vdW50VGV4dGFyZWEgPSBmdW5jdGlvbih0ZXh0YXJlYSkge1xuICAgICAgdmFyIGN0bERvd24sIHBhc3RlLCByZWYsIHJlZjE7XG4gICAgICBpZiAoKHR5cGVvZiBEYXRhVHJhbnNmZXIgIT09IFwidW5kZWZpbmVkXCIgJiYgRGF0YVRyYW5zZmVyICE9PSBudWxsID8gRGF0YVRyYW5zZmVyLnByb3RvdHlwZSA6IHZvaWQgMCkgJiYgKChyZWYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKSAhPSBudWxsID8gKHJlZjEgPSByZWYuY2FsbChPYmplY3QsIERhdGFUcmFuc2Zlci5wcm90b3R5cGUsICdpdGVtcycpKSAhPSBudWxsID8gcmVmMS5nZXQgOiB2b2lkIDAgOiB2b2lkIDApKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vdW50Q29udGVudGVkaXRhYmxlKHRleHRhcmVhKTtcbiAgICAgIH1cbiAgICAgIHBhc3RlID0gbmV3IFBhc3RlKGNyZWF0ZUhpZGRlbkVkaXRhYmxlKCkuaW5zZXJ0QmVmb3JlKHRleHRhcmVhKSwgdGV4dGFyZWEpO1xuICAgICAgY3RsRG93biA9IGZhbHNlO1xuICAgICAgJCh0ZXh0YXJlYSkub24oJ2tleXVwJywgZnVuY3Rpb24oZXYpIHtcbiAgICAgICAgdmFyIHJlZjI7XG4gICAgICAgIGlmICgocmVmMiA9IGV2LmtleUNvZGUpID09PSAxNyB8fCByZWYyID09PSAyMjQpIHtcbiAgICAgICAgICBjdGxEb3duID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcbiAgICAgICQodGV4dGFyZWEpLm9uKCdrZXlkb3duJywgZnVuY3Rpb24oZXYpIHtcbiAgICAgICAgdmFyIHJlZjI7XG4gICAgICAgIGlmICgocmVmMiA9IGV2LmtleUNvZGUpID09PSAxNyB8fCByZWYyID09PSAyMjQpIHtcbiAgICAgICAgICBjdGxEb3duID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGV2LmN0cmxLZXkgIT0gbnVsbCkgJiYgKGV2Lm1ldGFLZXkgIT0gbnVsbCkpIHtcbiAgICAgICAgICBjdGxEb3duID0gZXYuY3RybEtleSB8fCBldi5tZXRhS2V5O1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdGxEb3duICYmIGV2LmtleUNvZGUgPT09IDg2KSB7XG4gICAgICAgICAgcGFzdGUuX3RleHRhcmVhX2ZvY3VzX3N0b2xlbiA9IHRydWU7XG4gICAgICAgICAgcGFzdGUuX2NvbnRhaW5lci5mb2N1cygpO1xuICAgICAgICAgIHBhc3RlLl9wYXN0ZV9ldmVudF9maXJlZCA9IGZhbHNlO1xuICAgICAgICAgIHNldFRpbWVvdXQoKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIGlmICghcGFzdGUuX3Bhc3RlX2V2ZW50X2ZpcmVkKSB7XG4gICAgICAgICAgICAgICAgJCh0ZXh0YXJlYSkuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFzdGUuX3RleHRhcmVhX2ZvY3VzX3N0b2xlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pKHRoaXMpLCAxKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pO1xuICAgICAgJCh0ZXh0YXJlYSkub24oJ3Bhc3RlJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHt9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgJCh0ZXh0YXJlYSkub24oJ2ZvY3VzJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBpZiAoIXBhc3RlLl90ZXh0YXJlYV9mb2N1c19zdG9sZW4pIHtcbiAgICAgICAgICAgIHJldHVybiAkKHRleHRhcmVhKS5hZGRDbGFzcygncGFzdGFibGUtZm9jdXMnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICAkKHRleHRhcmVhKS5vbignYmx1cicsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKCFwYXN0ZS5fdGV4dGFyZWFfZm9jdXNfc3RvbGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gJCh0ZXh0YXJlYSkucmVtb3ZlQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgJChwYXN0ZS5fdGFyZ2V0KS5vbignX3Bhc3RlQ2hlY2tDb250YWluZXJEb25lJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAkKHRleHRhcmVhKS5mb2N1cygpO1xuICAgICAgICAgIHJldHVybiBwYXN0ZS5fdGV4dGFyZWFfZm9jdXNfc3RvbGVuID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICByZXR1cm4gJChwYXN0ZS5fdGFyZ2V0KS5vbigncGFzdGVUZXh0JywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihldiwgZGF0YSkge1xuICAgICAgICAgIHZhciBjb250ZW50LCBjdXJFbmQsIGN1clN0YXJ0O1xuICAgICAgICAgIGN1clN0YXJ0ID0gJCh0ZXh0YXJlYSkucHJvcCgnc2VsZWN0aW9uU3RhcnQnKTtcbiAgICAgICAgICBjdXJFbmQgPSAkKHRleHRhcmVhKS5wcm9wKCdzZWxlY3Rpb25FbmQnKTtcbiAgICAgICAgICBjb250ZW50ID0gJCh0ZXh0YXJlYSkudmFsKCk7XG4gICAgICAgICAgJCh0ZXh0YXJlYSkudmFsKFwiXCIgKyBjb250ZW50LnNsaWNlKDAsIGN1clN0YXJ0KSArIGRhdGEudGV4dCArIGNvbnRlbnQuc2xpY2UoY3VyRW5kKSk7XG4gICAgICAgICAgJCh0ZXh0YXJlYSlbMF0uc2V0U2VsZWN0aW9uUmFuZ2UoY3VyU3RhcnQgKyBkYXRhLnRleHQubGVuZ3RoLCBjdXJTdGFydCArIGRhdGEudGV4dC5sZW5ndGgpO1xuICAgICAgICAgIHJldHVybiAkKHRleHRhcmVhKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICB9O1xuXG4gICAgUGFzdGUubW91bnRDb250ZW50ZWRpdGFibGUgPSBmdW5jdGlvbihjb250ZW50ZWRpdGFibGUpIHtcbiAgICAgIHZhciBwYXN0ZTtcbiAgICAgIHBhc3RlID0gbmV3IFBhc3RlKGNvbnRlbnRlZGl0YWJsZSwgY29udGVudGVkaXRhYmxlKTtcbiAgICAgICQoY29udGVudGVkaXRhYmxlKS5vbignZm9jdXMnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiAkKGNvbnRlbnRlZGl0YWJsZSkuYWRkQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICByZXR1cm4gJChjb250ZW50ZWRpdGFibGUpLm9uKCdibHVyJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gJChjb250ZW50ZWRpdGFibGUpLnJlbW92ZUNsYXNzKCdwYXN0YWJsZS1mb2N1cycpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBQYXN0ZShfY29udGFpbmVyLCBfdGFyZ2V0KSB7XG4gICAgICB0aGlzLl9jb250YWluZXIgPSBfY29udGFpbmVyO1xuICAgICAgdGhpcy5fdGFyZ2V0ID0gX3RhcmdldDtcbiAgICAgIHRoaXMuX2NvbnRhaW5lciA9ICQodGhpcy5fY29udGFpbmVyKTtcbiAgICAgIHRoaXMuX3RhcmdldCA9ICQodGhpcy5fdGFyZ2V0KS5hZGRDbGFzcygncGFzdGFibGUnKTtcbiAgICAgIHRoaXMuX2NvbnRhaW5lci5vbigncGFzdGUnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2KSB7XG4gICAgICAgICAgdmFyIGNsaXBib2FyZERhdGEsIGZpbGUsIGl0ZW0sIGosIGssIGxlbiwgbGVuMSwgcmVhZGVyLCByZWYsIHJlZjEsIHJlZjIsIHJlZjMsIHRleHQ7XG4gICAgICAgICAgaWYgKGV2LmN1cnJlbnRUYXJnZXQgIT09IGV2LnRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIF90aGlzLl9wYXN0ZV9ldmVudF9maXJlZCA9IHRydWU7XG4gICAgICAgICAgaWYgKCgocmVmID0gZXYub3JpZ2luYWxFdmVudCkgIT0gbnVsbCA/IHJlZi5jbGlwYm9hcmREYXRhIDogdm9pZCAwKSAhPSBudWxsKSB7XG4gICAgICAgICAgICBjbGlwYm9hcmREYXRhID0gZXYub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhO1xuICAgICAgICAgICAgaWYgKGNsaXBib2FyZERhdGEuaXRlbXMpIHtcbiAgICAgICAgICAgICAgcmVmMSA9IGNsaXBib2FyZERhdGEuaXRlbXM7XG4gICAgICAgICAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZjEubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpdGVtID0gcmVmMVtqXTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlLm1hdGNoKC9eaW1hZ2VcXC8vKSkge1xuICAgICAgICAgICAgICAgICAgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuX2hhbmRsZUltYWdlKGV2ZW50LnRhcmdldC5yZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGl0ZW0uZ2V0QXNGaWxlKCkpO1xuICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICd0ZXh0L3BsYWluJykge1xuICAgICAgICAgICAgICAgICAgaXRlbS5nZXRBc1N0cmluZyhmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVUZXh0Jywge1xuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHN0cmluZ1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKC0xICE9PSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGNsaXBib2FyZERhdGEudHlwZXMsICd0ZXh0L3BsYWluJykpIHtcbiAgICAgICAgICAgICAgICB0ZXh0ID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCdUZXh0Jyk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlVGV4dCcsIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgMSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgX3RoaXMuX2NoZWNrSW1hZ2VzSW5Db250YWluZXIoZnVuY3Rpb24oc3JjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLl9oYW5kbGVJbWFnZShzcmMpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNsaXBib2FyZERhdGEgPSB3aW5kb3cuY2xpcGJvYXJkRGF0YSkge1xuICAgICAgICAgICAgaWYgKChyZWYyID0gKHRleHQgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoJ1RleHQnKSkpICE9IG51bGwgPyByZWYyLmxlbmd0aCA6IHZvaWQgMCkge1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVUZXh0Jywge1xuICAgICAgICAgICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ19wYXN0ZUNoZWNrQ29udGFpbmVyRG9uZScpO1xuICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlZjMgPSBjbGlwYm9hcmREYXRhLmZpbGVzO1xuICAgICAgICAgICAgICBmb3IgKGsgPSAwLCBsZW4xID0gcmVmMy5sZW5ndGg7IGsgPCBsZW4xOyBrKyspIHtcbiAgICAgICAgICAgICAgICBmaWxlID0gcmVmM1trXTtcbiAgICAgICAgICAgICAgICBfdGhpcy5faGFuZGxlSW1hZ2UoVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgX3RoaXMuX2NoZWNrSW1hZ2VzSW5Db250YWluZXIoZnVuY3Rpb24oc3JjKSB7fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgIH1cblxuICAgIFBhc3RlLnByb3RvdHlwZS5faGFuZGxlSW1hZ2UgPSBmdW5jdGlvbihzcmMpIHtcbiAgICAgIHZhciBsb2FkZXI7XG4gICAgICBpZiAoc3JjLm1hdGNoKC9ed2Via2l0XFwtZmFrZVxcLXVybFxcOlxcL1xcLy8pKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVJbWFnZUVycm9yJywge1xuICAgICAgICAgIG1lc3NhZ2U6IFwiWW91IGFyZSB0cnlpbmcgdG8gcGFzdGUgYW4gaW1hZ2UgaW4gU2FmYXJpLCBob3dldmVyIHdlIGFyZSB1bmFibGUgdG8gcmV0aWV2ZSBpdHMgZGF0YS5cIlxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZUltYWdlU3RhcnQnKTtcbiAgICAgIGxvYWRlciA9IG5ldyBJbWFnZSgpO1xuICAgICAgbG9hZGVyLmNyb3NzT3JpZ2luID0gXCJhbm9ueW1vdXNcIjtcbiAgICAgIGxvYWRlci5vbmxvYWQgPSAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBibG9iLCBjYW52YXMsIGN0eCwgZGF0YVVSTDtcbiAgICAgICAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgICBjYW52YXMud2lkdGggPSBsb2FkZXIud2lkdGg7XG4gICAgICAgICAgY2FudmFzLmhlaWdodCA9IGxvYWRlci5oZWlnaHQ7XG4gICAgICAgICAgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShsb2FkZXIsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG4gICAgICAgICAgZGF0YVVSTCA9IG51bGw7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGRhdGFVUkwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICAgICAgICAgIGJsb2IgPSBkYXRhVVJMdG9CbG9iKGRhdGFVUkwpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgICAgIGlmIChkYXRhVVJMKSB7XG4gICAgICAgICAgICBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlSW1hZ2UnLCB7XG4gICAgICAgICAgICAgIGJsb2I6IGJsb2IsXG4gICAgICAgICAgICAgIGRhdGFVUkw6IGRhdGFVUkwsXG4gICAgICAgICAgICAgIHdpZHRoOiBsb2FkZXIud2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodDogbG9hZGVyLmhlaWdodFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlSW1hZ2VFbmQnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpO1xuICAgICAgbG9hZGVyLm9uZXJyb3IgPSAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVJbWFnZUVycm9yJywge1xuICAgICAgICAgICAgbWVzc2FnZTogXCJGYWlsZWQgdG8gZ2V0IGltYWdlIGZyb206IFwiICsgc3JjLFxuICAgICAgICAgICAgdXJsOiBzcmNcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZUltYWdlRW5kJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKTtcbiAgICAgIHJldHVybiBsb2FkZXIuc3JjID0gc3JjO1xuICAgIH07XG5cbiAgICBQYXN0ZS5wcm90b3R5cGUuX2NoZWNrSW1hZ2VzSW5Db250YWluZXIgPSBmdW5jdGlvbihjYikge1xuICAgICAgdmFyIGltZywgaiwgbGVuLCByZWYsIHRpbWVzcGFuO1xuICAgICAgdGltZXNwYW4gPSBNYXRoLmZsb29yKDEwMDAgKiBNYXRoLnJhbmRvbSgpKTtcbiAgICAgIHJlZiA9IHRoaXMuX2NvbnRhaW5lci5maW5kKCdpbWcnKTtcbiAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgICBpbWcgPSByZWZbal07XG4gICAgICAgIGltZ1tcIl9wYXN0ZV9tYXJrZWRfXCIgKyB0aW1lc3Bhbl0gPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgaywgbGVuMSwgcmVmMTtcbiAgICAgICAgICByZWYxID0gX3RoaXMuX2NvbnRhaW5lci5maW5kKCdpbWcnKTtcbiAgICAgICAgICBmb3IgKGsgPSAwLCBsZW4xID0gcmVmMS5sZW5ndGg7IGsgPCBsZW4xOyBrKyspIHtcbiAgICAgICAgICAgIGltZyA9IHJlZjFba107XG4gICAgICAgICAgICBpZiAoIWltZ1tcIl9wYXN0ZV9tYXJrZWRfXCIgKyB0aW1lc3Bhbl0pIHtcbiAgICAgICAgICAgICAgY2IoaW1nLnNyYyk7XG4gICAgICAgICAgICAgICQoaW1nKS5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIF90aGlzLl90YXJnZXQudHJpZ2dlcignX3Bhc3RlQ2hlY2tDb250YWluZXJEb25lJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSwgMSk7XG4gICAgfTtcblxuICAgIHJldHVybiBQYXN0ZTtcblxuICB9KSgpO1xuXG59KS5jYWxsKHRoaXMpO1xuXG52YXIgdGhlcGFzdGVQbHVnaW5DYWxsYmFjaztcblxuKGZ1bmN0aW9uKCQpe1xuXHR0aGVwYXN0ZVBsdWdpbkNhbGxiYWNrID0gZnVuY3Rpb24oIGVkaXRvciApIHtcblx0XHR2YXIgcGFzdGVCdG4sXG5cdFx0XHRvcmlnRG9tQWRkLFxuXHRcdFx0Y2xpcGJvYXJkSGFzSW1hZ2UgPSBmYWxzZSxcblx0XHRcdGN1cnJlbnRDbGlwYm9hcmRFdmVudCA9IG51bGwsXG5cdFx0XHRwcmV2ZW50SW1hZ2VQYXN0ZSA9IGZhbHNlLFxuXHRcdFx0dGhlcGFzdGUgPSB3cC5tZWRpYS50aGVwYXN0ZSxcblx0XHRcdHRvb2xiYXI7XG5cblx0XHR0aGVwYXN0ZS5vcHRpb25zLmVkaXRvci5hdXRvX3VwbG9hZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCAndGhlcGFzdGUuYXV0b191cGxvYWQnICkgIT09ICdmYWxzZSc7XG5cdFx0Ly8gZGVmYXVsdCBvblxuXG5cdFx0ZnVuY3Rpb24gZG9tQWRkKCkge1xuXHRcdFx0dmFyIHJlc3VsdCA9IG9yaWdEb21BZGQuYXBwbHkodGhpcyxhcmd1bWVudHMpO1xuXHRcdFx0aWYgKCAnbWNlcGFzdGViaW4nID09PSAkKHJlc3VsdCkuYXR0cignaWQnKSApIHtcblx0XHRcdFx0JChyZXN1bHQpXG5cdFx0XHRcdFx0LnBhc3RhYmxlQ29udGVudGVkaXRhYmxlKClcblx0XHRcdFx0XHQub24oJ3Bhc3RlJyxmdW5jdGlvbihlKXtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5vbigncGFzdGVJbWFnZScsZnVuY3Rpb24oIGUsIGRhdGEgKSB7XG5cdFx0XHRcdFx0XHR2YXIgaW1hZ2U7XG5cdFx0XHRcdFx0XHRpZiAoIHByZXZlbnRJbWFnZVBhc3RlICkge1xuXHRcdFx0XHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGltYWdlID0gdGhlcGFzdGUuaW5zZXJ0SW1hZ2UoIGRhdGEuZGF0YVVSTCwgZGF0YS5ibG9iLnR5cGUsIGVkaXRvciApO1xuXHRcdFx0XHRcdFx0aWYgKCB0aGVwYXN0ZS5vcHRpb25zLmVkaXRvci5hdXRvX3VwbG9hZCApIHtcblx0XHRcdFx0XHRcdFx0dGhlcGFzdGUudXBsb2FkSW1hZ2UoIGltYWdlLCBlZGl0b3IgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gc2V0dXBFZGl0b3JEb20oKSB7XG5cblx0XHRcdG9yaWdEb21BZGQgPSBlZGl0b3IuZG9tLmFkZDtcblxuXHRcdFx0ZWRpdG9yLmRvbS5hZGQgPSBkb21BZGQ7XG5cblx0XHRcdCQoZWRpdG9yLmRvbS5kb2MpLm9uKCAncGFzdGUnLCBmdW5jdGlvbihlKXtcblx0XHRcdFx0Y3VycmVudENsaXBib2FyZEV2ZW50ID0gZS5vcmlnaW5hbEV2ZW50O1xuXHRcdFx0XHRjb25zb2xlLmxvZyhjdXJyZW50Q2xpcGJvYXJkRXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcyk7XG5cdFx0XHRcdGNsaXBib2FyZEhhc0ltYWdlID0gdGhlcGFzdGUuY2xpcGJvYXJkSGFzSW1hZ2UoZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEpO1xuXHRcdFx0XHRwcmV2ZW50SW1hZ2VQYXN0ZSA9IGZhbHNlO1xuXHRcdFx0fSApO1xuXHRcdH1cblx0XHRlZGl0b3IuYWRkQ29tbWFuZCggJ2NtZF90aGVwYXN0ZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0dGhlcGFzdGUub3B0aW9ucy5lZGl0b3IuYXV0b191cGxvYWQgPSAhIHRoZXBhc3RlLm9wdGlvbnMuZWRpdG9yLmF1dG9fdXBsb2FkO1xuXHRcdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oICd0aGVwYXN0ZS5hdXRvX3VwbG9hZCcsIHRoZXBhc3RlLm9wdGlvbnMuZWRpdG9yLmF1dG9fdXBsb2FkLnRvU3RyaW5nKCkgKTtcblx0XHRcdHBhc3RlQnRuLmFjdGl2ZSggdGhlcGFzdGUub3B0aW9ucy5lZGl0b3IuYXV0b191cGxvYWQgKTtcblx0XHR9KTtcblxuXG5cdFx0ZWRpdG9yLmFkZEJ1dHRvbigndGhlcGFzdGUnLCB7XG5cdFx0XHRpY29uOiAndGhlcGFzdGUnLFxuXHRcdFx0dG9vbHRpcDogdGhlcGFzdGUubDEwbi51cGxvYWRfcGFzdGVkX2ltYWdlcyxcblx0XHRcdGNtZCA6ICdjbWRfdGhlcGFzdGUnLFxuXHRcdFx0b25Qb3N0UmVuZGVyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cGFzdGVCdG4gPSB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdGFjdGl2ZTp0aGVwYXN0ZS5vcHRpb25zLmVkaXRvci5hdXRvX3VwbG9hZFxuXHRcdH0pO1xuXG5cdFx0ZWRpdG9yLmFkZEJ1dHRvbignd3BfaW1nX3RoZXBhc3RlX3VwbG9hZCcsIHtcblx0XHRcdGljb246ICdkYXNoaWNvbiBkYXNoaWNvbnMgZGFzaGljb25zLXVwbG9hZCB0aGVwYXN0ZS11cGxvYWQnLFxuXHRcdFx0dG9vbHRpcDogdGhlcGFzdGUubDEwbi51cGxvYWRfaW1hZ2UsXG5cdFx0XHRvbmNsaWNrOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0Ly8gd3JhcCBpbWcsIHVwbG9hZFxuXHRcdFx0XHR2YXIgaW1hZ2U7XG5cdFx0XHRcdGltYWdlID0gZWRpdG9yLnNlbGVjdGlvbi5nZXROb2RlKCk7XG4vL2NvbnNvbGUubG9nKGltYWdlKTtcblx0XHRcdFx0dGhlcGFzdGUudXBsb2FkSW1hZ2UoIGltYWdlLCBlZGl0b3IgKTtcblx0XHRcdH1cdFx0XHRcblx0XHR9KTtcblxuXHRcdGVkaXRvci5vbmNlKCAncHJlaW5pdCcsIGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCBlZGl0b3Iud3AgJiYgZWRpdG9yLndwLl9jcmVhdGVUb29sYmFyICkge1xuXHRcdFx0XHR0b29sYmFyID0gZWRpdG9yLndwLl9jcmVhdGVUb29sYmFyKCBbXG5cdFx0XHRcdFx0J3dwX2ltZ19hbGlnbmxlZnQnLFxuXHRcdFx0XHRcdCd3cF9pbWdfYWxpZ25jZW50ZXInLFxuXHRcdFx0XHRcdCd3cF9pbWdfYWxpZ25yaWdodCcsXG5cdFx0XHRcdFx0J3dwX2ltZ19hbGlnbm5vbmUnLFxuXHRcdFx0XHRcdCd3cF9pbWdfdGhlcGFzdGVfdXBsb2FkJyxcblx0XHRcdFx0XHQnd3BfaW1nX2VkaXQnLFxuXHRcdFx0XHRcdCd3cF9pbWdfcmVtb3ZlJyxcblx0XHRcdFx0XSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdGVkaXRvci5vbiggJ3dwdG9vbGJhcicsIGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciBjYW5VcGxvYWQgPSBmYWxzZSxcblx0XHRcdFx0dXBsb2FkQnRuO1xuXHRcdFx0aWYgKCBldmVudC5lbGVtZW50Lm5vZGVOYW1lID09PSAnSU1HJyAmJiAhIGVkaXRvci53cC5pc1BsYWNlaG9sZGVyKCBldmVudC5lbGVtZW50ICkgKSB7XG5cdFx0XHRcdGV2ZW50LnRvb2xiYXIgPSB0b29sYmFyO1xuXHRcdFx0XHRjYW5VcGxvYWQgPSAhISBldmVudC5lbGVtZW50LnNyYy5tYXRjaCggL14oYmxvYnxkYXRhKTovICk7XG5cdFx0XHRcdHVwbG9hZEJ0biA9IHRvb2xiYXIuJGVsLmZpbmQoJy50aGVwYXN0ZS11cGxvYWQnKS5jbG9zZXN0KCcubWNlLWJ0bicpO1xuXG5cdFx0XHRcdGlmICggY2FuVXBsb2FkICkge1xuXHRcdFx0XHRcdHVwbG9hZEJ0bi5zaG93KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dXBsb2FkQnRuLmhpZGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdGVkaXRvclxuXHRcdFx0Lm9uKCAnaW5pdCcsIHNldHVwRWRpdG9yRG9tIClcblx0XHRcdC5vbiggJ0JlZm9yZVBhc3RlUHJlUHJvY2VzcycsIGZ1bmN0aW9uKGUpe1xuXHRcdFx0XHRpZiAoICBlLmNvbnRlbnQubWF0Y2goIC8mbHQ7c3ZnW1xcc1xcUy5dKiZsdDtcXC9zdmcmZ3Q7L2kgKSApIHtcblx0XHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0ZS5jb250ZW50ID0gJyc7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBjbGlwYm9hcmRIYXNJbWFnZSApIHtcblx0XHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0ZS5jb250ZW50ID0gJyc7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGU7XG5cblx0XHRcdH0gKTtcblxuXHR9O1xuXG5cdHRpbnltY2UuUGx1Z2luTWFuYWdlci5hZGQoICd0aGVwYXN0ZScsIHRoZXBhc3RlUGx1Z2luQ2FsbGJhY2sgKTtcblxufSApKGpRdWVyeSk7XG5cbiJdfQ== 
     1(function(){var t,e,n,a,o;t=window.jQuery,t.paste=function(t){var n;return"undefined"!=typeof console&&null!==console&&console.log("DEPRECATED: This method is deprecated. Please use $.fn.pastableNonInputable() instead."),n=e.mountNonInputable(t),n._container},t.fn.pastableNonInputable=function(){var n,a,o,r;for(r=this,a=0,o=r.length;a<o;a++)n=r[a],n._pastable||t(n).is("textarea, input:text, [contenteditable]")||(e.mountNonInputable(n),n._pastable=!0);return this},t.fn.pastableTextarea=function(){var n,a,o,r;for(r=this,a=0,o=r.length;a<o;a++)n=r[a],n._pastable||t(n).is(":not(textarea, input:text)")||(e.mountTextarea(n),n._pastable=!0);return this},t.fn.pastableContenteditable=function(){var n,a,o,r;for(r=this,a=0,o=r.length;a<o;a++)n=r[a],n._pastable||t(n).is(":not([contenteditable])")||(e.mountContenteditable(n),n._pastable=!0);return this},a=function(t,e){var n,a,o,r,i,u,s,l,c,d,p;if(null==e&&(e=512),!(l=t.match(/^data\:([^\;]+)\;base64\,(.+)$/)))return null;for(d=l,l=d[0],u=d[1],n=d[2],r=atob(n),o=[],c=0;c<r.length;){for(p=r.slice(c,c+e),i=new Array(p.length),s=0;s<p.length;)i[s]=p.charCodeAt(s),s++;a=new Uint8Array(i),o.push(a),c+=e}return new Blob(o,{type:u})},n=function(){return t(document.createElement("div")).attr("contenteditable",!0).attr("aria-hidden",!0).attr("tabindex",-1).css({width:1,height:1,position:"fixed",left:-100,overflow:"hidden"})},o=function(e,n){var a,o,r,i,u,s;return i=void 0,u=void 0,r=void 0,o=void 0,a=void 0,"area"===(s=e.nodeName.toLowerCase())?(i=e.parentNode,u=i.name,!(!e.href||!u||"map"!==i.nodeName.toLowerCase())&&(r=t("img[usemap='#"+u+"']"),r.length>0&&r.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(s)?(o=!e.disabled)&&(a=t(e).closest("fieldset")[0])&&(o=!a.disabled):o="a"===s?e.href||n:n,(o=o||t(e).is("[contenteditable]"))&&t(e).is(":visible"))},e=function(){function e(e,n){this._container=e,this._target=n,this._container=t(this._container),this._target=t(this._target).addClass("pastable"),this._container.on("paste",function(t){return function(e){var n,a,o,r,i,u,s,l,c,d,p,g,f;if(e.currentTarget!==e.target)return e.preventDefault();if(t._paste_event_fired=!0,null!=(null!=(c=e.originalEvent)?c.clipboardData:void 0))if(n=e.originalEvent.clipboardData,n.items)for(d=n.items,r=0,u=d.length;r<u;r++){if(o=d[r],o.type.match(/^image\//)){l=new FileReader,l.onload=function(e){return t._handleImage(e.target.result)};try{l.readAsDataURL(o.getAsFile())}catch(t){}e.preventDefault();break}"text/plain"===o.type&&o.getAsString(function(e){return t._target.trigger("pasteText",{text:e})})}else-1!==Array.prototype.indexOf.call(n.types,"text/plain")&&(f=n.getData("Text"),setTimeout(function(){return t._target.trigger("pasteText",{text:f})},1)),t._checkImagesInContainer(function(e){return t._handleImage(e)});if(n=window.clipboardData)if(null!=(p=f=n.getData("Text"))?p.length:void 0)setTimeout(function(){return t._target.trigger("pasteText",{text:f}),t._target.trigger("_pasteCheckContainerDone")},1);else{for(g=n.files,i=0,s=g.length;i<s;i++)a=g[i],t._handleImage(URL.createObjectURL(a));t._checkImagesInContainer(function(t){})}return null}}(this))}return e.prototype._target=null,e.prototype._container=null,e.mountNonInputable=function(a){var r;return r=new e(n().appendTo(a),a),t(a).on("click",function(t){return function(t){if(!o(t.target,!1))return r._container.focus()}}()),r._container.on("focus",function(e){return function(){return t(a).addClass("pastable-focus")}}()),r._container.on("blur",function(e){return function(){return t(a).removeClass("pastable-focus")}}())},e.mountTextarea=function(a){var o,r,i,u;return("undefined"!=typeof DataTransfer&&null!==DataTransfer?DataTransfer.prototype:void 0)&&(null!=(i=Object.getOwnPropertyDescriptor)&&null!=(u=i.call(Object,DataTransfer.prototype,"items"))?u.get:void 0)?this.mountContenteditable(a):(r=new e(n().insertBefore(a),a),o=!1,t(a).on("keyup",function(t){var e;return 17!==(e=t.keyCode)&&224!==e||(o=!1),null}),t(a).on("keydown",function(e){var n;return 17!==(n=e.keyCode)&&224!==n||(o=!0),null!=e.ctrlKey&&null!=e.metaKey&&(o=e.ctrlKey||e.metaKey),o&&86===e.keyCode&&(r._textarea_focus_stolen=!0,r._container.focus(),r._paste_event_fired=!1,setTimeout(function(e){return function(){if(!r._paste_event_fired)return t(a).focus(),r._textarea_focus_stolen=!1}}(),1)),null}),t(a).on("paste",function(t){return function(){}}()),t(a).on("focus",function(e){return function(){if(!r._textarea_focus_stolen)return t(a).addClass("pastable-focus")}}()),t(a).on("blur",function(e){return function(){if(!r._textarea_focus_stolen)return t(a).removeClass("pastable-focus")}}()),t(r._target).on("_pasteCheckContainerDone",function(e){return function(){return t(a).focus(),r._textarea_focus_stolen=!1}}()),t(r._target).on("pasteText",function(e){return function(e,n){var o,r,i;return i=t(a).prop("selectionStart"),r=t(a).prop("selectionEnd"),o=t(a).val(),t(a).val(""+o.slice(0,i)+n.text+o.slice(r)),t(a)[0].setSelectionRange(i+n.text.length,i+n.text.length),t(a).trigger("change")}}()))},e.mountContenteditable=function(n){return new e(n,n),t(n).on("focus",function(e){return function(){return t(n).addClass("pastable-focus")}}()),t(n).on("blur",function(e){return function(){return t(n).removeClass("pastable-focus")}}())},e.prototype._handleImage=function(t){var e;return t.match(/^webkit\-fake\-url\:\/\//)?this._target.trigger("pasteImageError",{message:"You are trying to paste an image in Safari, however we are unable to retieve its data."}):(this._target.trigger("pasteImageStart"),e=new Image,e.crossOrigin="anonymous",e.onload=function(t){return function(){var n,o,r,i;o=document.createElement("canvas"),o.width=e.width,o.height=e.height,r=o.getContext("2d"),r.drawImage(e,0,0,o.width,o.height),i=null;try{i=o.toDataURL("image/png"),n=a(i)}catch(t){}return i&&t._target.trigger("pasteImage",{blob:n,dataURL:i,width:e.width,height:e.height}),t._target.trigger("pasteImageEnd")}}(this),e.onerror=function(e){return function(){return e._target.trigger("pasteImageError",{message:"Failed to get image from: "+t,url:t}),e._target.trigger("pasteImageEnd")}}(this),e.src=t)},e.prototype._checkImagesInContainer=function(e){var n,a,o,r,i;for(i=Math.floor(1e3*Math.random()),r=this._container.find("img"),a=0,o=r.length;a<o;a++)n=r[a],n["_paste_marked_"+i]=!0;return setTimeout(function(a){return function(){var o,r,u;for(u=a._container.find("img"),o=0,r=u.length;o<r;o++)n=u[o],n["_paste_marked_"+i]||(e(n.src),t(n).remove());return a._target.trigger("_pasteCheckContainerDone")}}(this),1)},e}()}).call(this);var thepastePluginCallback;!function(t){thepastePluginCallback=function(e){function n(t){var e=t.src.substring(0,5);return"blob:"===e||"data:"===e}function a(a){i.options.editor.auto_upload&&"mceInsertContent"==a.command&&a.value&&a.value.content&&"<img"===a.value.content.substring(0,4).toLowerCase()&&($img=t(e.getBody()).find("."+u),n($img.get(0))&&(i.uploadImage($img.get(0),e),$img.removeClass(u)))}var o,r,i=wp.media.thepaste,u="";i.options.editor.auto_upload="false"!==localStorage.getItem("thepaste.auto_upload"),e.addCommand("cmd_thepaste",function(){i.options.editor.auto_upload=!i.options.editor.auto_upload,localStorage.setItem("thepaste.auto_upload",i.options.editor.auto_upload.toString()),o.active(i.options.editor.auto_upload)}),e.addButton("thepaste",{icon:"thepaste",tooltip:i.l10n.upload_pasted_images,cmd:"cmd_thepaste",onPostRender:function(){o=this},active:i.options.editor.auto_upload}),e.addButton("wp_img_thepaste_upload",{icon:"dashicon dashicons dashicons-upload thepaste-upload",tooltip:i.l10n.upload_image,onclick:function(){var t;t=e.selection.getNode(),i.uploadImage(t,e)}}),e.once("preinit",function(){e.wp&&e.wp._createToolbar&&(r=e.wp._createToolbar(["wp_img_alignleft","wp_img_aligncenter","wp_img_alignright","wp_img_alignnone","wp_img_thepaste_upload","wp_img_edit","wp_img_remove"]))}),e.on("wptoolbar",function(t){var a;"IMG"!==t.element.nodeName||e.wp.isPlaceholder(t.element)||(t.toolbar=r,a=r.$el.find(".thepaste-upload").closest(".mce-btn"),n(t.element)?a.show():a.hide())}),e.on("PastePostProcess",function(o){var r;i.options.editor.auto_upload&&(r=t(o.node).children().first(),r.is("img")&&n(r.get(0))&&(u="__pasted_image_tmp_"+Date.now(),r.addClass(u),e.once("ExecCommand",a)))}).on("BeforePastePreProcess",function(t){return t.content.match(/&lt;svg[\s\S.]*&lt;\/svg&gt;/i)&&(t.preventDefault(),t.content=""),t})},tinymce.PluginManager.add("thepaste",thepastePluginCallback)}(jQuery); 
     2//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRoZS1wYXN0ZS1wbHVnaW4uanMiXSwibmFtZXMiOlsiJCIsIlBhc3RlIiwiY3JlYXRlSGlkZGVuRWRpdGFibGUiLCJkYXRhVVJMdG9CbG9iIiwiaXNGb2N1c2FibGUiLCJ3aW5kb3ciLCJqUXVlcnkiLCJwYXN0ZSIsInBhc3RlQ29udGFpbmVyIiwicG0iLCJjb25zb2xlIiwibG9nIiwibW91bnROb25JbnB1dGFibGUiLCJfY29udGFpbmVyIiwiZm4iLCJwYXN0YWJsZU5vbklucHV0YWJsZSIsImVsIiwiaiIsImxlbiIsInJlZiIsInRoaXMiLCJsZW5ndGgiLCJfcGFzdGFibGUiLCJpcyIsInBhc3RhYmxlVGV4dGFyZWEiLCJtb3VudFRleHRhcmVhIiwicGFzdGFibGVDb250ZW50ZWRpdGFibGUiLCJtb3VudENvbnRlbnRlZGl0YWJsZSIsImRhdGFVUkwiLCJzbGljZVNpemUiLCJiNjREYXRhIiwiYnl0ZUFycmF5IiwiYnl0ZUFycmF5cyIsImJ5dGVDaGFyYWN0ZXJzIiwiYnl0ZU51bWJlcnMiLCJjb250ZW50VHlwZSIsImkiLCJtIiwib2Zmc2V0Iiwic2xpY2UiLCJtYXRjaCIsImF0b2IiLCJBcnJheSIsImNoYXJDb2RlQXQiLCJVaW50OEFycmF5IiwicHVzaCIsIkJsb2IiLCJ0eXBlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiYXR0ciIsImNzcyIsIndpZHRoIiwiaGVpZ2h0IiwicG9zaXRpb24iLCJsZWZ0Iiwib3ZlcmZsb3ciLCJlbGVtZW50IiwiaGFzVGFiaW5kZXgiLCJmaWVsZHNldCIsImZvY3VzYWJsZUlmVmlzaWJsZSIsImltZyIsIm1hcCIsIm1hcE5hbWUiLCJub2RlTmFtZSIsInRvTG93ZXJDYXNlIiwicGFyZW50Tm9kZSIsIm5hbWUiLCJocmVmIiwidGVzdCIsImRpc2FibGVkIiwiY2xvc2VzdCIsIl90YXJnZXQiLCJhZGRDbGFzcyIsIm9uIiwiX3RoaXMiLCJldiIsImNsaXBib2FyZERhdGEiLCJmaWxlIiwiaXRlbSIsImsiLCJsZW4xIiwicmVhZGVyIiwicmVmMSIsInJlZjIiLCJyZWYzIiwidGV4dCIsImN1cnJlbnRUYXJnZXQiLCJ0YXJnZXQiLCJwcmV2ZW50RGVmYXVsdCIsIl9wYXN0ZV9ldmVudF9maXJlZCIsIm9yaWdpbmFsRXZlbnQiLCJpdGVtcyIsIkZpbGVSZWFkZXIiLCJvbmxvYWQiLCJldmVudCIsIl9oYW5kbGVJbWFnZSIsInJlc3VsdCIsInJlYWRBc0RhdGFVUkwiLCJnZXRBc0ZpbGUiLCJlcnJvciIsImdldEFzU3RyaW5nIiwic3RyaW5nIiwidHJpZ2dlciIsInByb3RvdHlwZSIsImluZGV4T2YiLCJjYWxsIiwidHlwZXMiLCJnZXREYXRhIiwic2V0VGltZW91dCIsIl9jaGVja0ltYWdlc0luQ29udGFpbmVyIiwic3JjIiwiZmlsZXMiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJub25JbnB1dGFibGUiLCJhcHBlbmRUbyIsImZvY3VzIiwicmVtb3ZlQ2xhc3MiLCJ0ZXh0YXJlYSIsImN0bERvd24iLCJEYXRhVHJhbnNmZXIiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXQiLCJpbnNlcnRCZWZvcmUiLCJrZXlDb2RlIiwiY3RybEtleSIsIm1ldGFLZXkiLCJfdGV4dGFyZWFfZm9jdXNfc3RvbGVuIiwiZGF0YSIsImNvbnRlbnQiLCJjdXJFbmQiLCJjdXJTdGFydCIsInByb3AiLCJ2YWwiLCJzZXRTZWxlY3Rpb25SYW5nZSIsImNvbnRlbnRlZGl0YWJsZSIsImxvYWRlciIsIm1lc3NhZ2UiLCJJbWFnZSIsImNyb3NzT3JpZ2luIiwiYmxvYiIsImNhbnZhcyIsImN0eCIsImdldENvbnRleHQiLCJkcmF3SW1hZ2UiLCJ0b0RhdGFVUkwiLCJvbmVycm9yIiwidXJsIiwiY2IiLCJ0aW1lc3BhbiIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImZpbmQiLCJyZW1vdmUiLCJ0aGVwYXN0ZVBsdWdpbkNhbGxiYWNrIiwiZWRpdG9yIiwiY2FuVXBsb2FkIiwic3ViIiwic3Vic3RyaW5nIiwiZXhlY0NvbW1hbmRVcGxvYWRQYXN0ZWRJbWFnZSIsImEiLCJ0aGVwYXN0ZSIsIm9wdGlvbnMiLCJhdXRvX3VwbG9hZCIsImNvbW1hbmQiLCJ2YWx1ZSIsIiRpbWciLCJnZXRCb2R5IiwicGFzdGVkX2ltYWdlX3RtcF9jbGFzcyIsInVwbG9hZEltYWdlIiwicGFzdGVCdG4iLCJ0b29sYmFyIiwid3AiLCJtZWRpYSIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJhZGRDb21tYW5kIiwic2V0SXRlbSIsInRvU3RyaW5nIiwiYWN0aXZlIiwiYWRkQnV0dG9uIiwiaWNvbiIsInRvb2x0aXAiLCJsMTBuIiwidXBsb2FkX3Bhc3RlZF9pbWFnZXMiLCJjbWQiLCJvblBvc3RSZW5kZXIiLCJ1cGxvYWRfaW1hZ2UiLCJvbmNsaWNrIiwiaW1hZ2UiLCJzZWxlY3Rpb24iLCJnZXROb2RlIiwib25jZSIsIl9jcmVhdGVUb29sYmFyIiwidXBsb2FkQnRuIiwiaXNQbGFjZWhvbGRlciIsIiRlbCIsInNob3ciLCJoaWRlIiwiZSIsIiRmaXJzdENoaWxkIiwibm9kZSIsImNoaWxkcmVuIiwiZmlyc3QiLCJEYXRlIiwibm93IiwidGlueW1jZSIsIlBsdWdpbk1hbmFnZXIiLCJhZGQiXSwibWFwcGluZ3MiOiJDQVFBLFdBQ0UsR0FBSUEsR0FBR0MsRUFBT0MsRUFBc0JDLEVBQWVDLENBRW5ESixHQUFJSyxPQUFPQyxPQUVYTixFQUFFTyxNQUFRLFNBQVNDLEdBQ2pCLEdBQUlDLEVBS0osT0FKdUIsbUJBQVpDLFVBQXVDLE9BQVpBLFNBQ3BDQSxRQUFRQyxJQUFJLDBGQUVkRixFQUFLUixFQUFNVyxrQkFBa0JKLEdBQ3RCQyxFQUFHSSxZQUdaYixFQUFFYyxHQUFHQyxxQkFBdUIsV0FDMUIsR0FBSUMsR0FBSUMsRUFBR0MsRUFBS0MsQ0FFaEIsS0FEQUEsRUFBTUMsS0FDREgsRUFBSSxFQUFHQyxFQUFNQyxFQUFJRSxPQUFRSixFQUFJQyxFQUFLRCxJQUNyQ0QsRUFBS0csRUFBSUYsR0FDTEQsRUFBR00sV0FBYXRCLEVBQUVnQixH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QyxNQUN4REwsRUFBWWxJLFNBQVVrRyxHQUN0QmIsRUFBT3FDLEtBQU0sY0FBZWpDLE9BSTlCeEYsR0FBSSx3QkFBeUIsU0FBU2dJLEdBTXRDLE1BSk1BLEdBQUV2RSxRQUFRM0YsTUFBTyxtQ0FDdEJrSyxFQUFFakgsaUJBQ0ZpSCxFQUFFdkUsUUFBVSxJQUVOdUUsS0FPVk8sUUFBUUMsY0FBY0MsSUFBSyxXQUFZdEQseUJBRXBDdkoiLCJmaWxlIjoidGhlLXBhc3RlLXBsdWdpbi5taW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuN1xuXG4vKlxucGFzdGUuanMgaXMgYW4gaW50ZXJmYWNlIHRvIHJlYWQgZGF0YSAoIHRleHQgLyBpbWFnZSApIGZyb20gY2xpcGJvYXJkIGluIGRpZmZlcmVudCBicm93c2Vycy4gSXQgYWxzbyBjb250YWlucyBzZXZlcmFsIGhhY2tzLlxuXG5odHRwczovL2dpdGh1Yi5jb20vbGF5ZXJzc3NzL3Bhc3RlLmpzXG4gKi9cblxuKGZ1bmN0aW9uKCkge1xuICB2YXIgJCwgUGFzdGUsIGNyZWF0ZUhpZGRlbkVkaXRhYmxlLCBkYXRhVVJMdG9CbG9iLCBpc0ZvY3VzYWJsZTtcblxuICAkID0gd2luZG93LmpRdWVyeTtcblxuICAkLnBhc3RlID0gZnVuY3Rpb24ocGFzdGVDb250YWluZXIpIHtcbiAgICB2YXIgcG07XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiREVQUkVDQVRFRDogVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSAkLmZuLnBhc3RhYmxlTm9uSW5wdXRhYmxlKCkgaW5zdGVhZC5cIik7XG4gICAgfVxuICAgIHBtID0gUGFzdGUubW91bnROb25JbnB1dGFibGUocGFzdGVDb250YWluZXIpO1xuICAgIHJldHVybiBwbS5fY29udGFpbmVyO1xuICB9O1xuXG4gICQuZm4ucGFzdGFibGVOb25JbnB1dGFibGUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgZWwsIGosIGxlbiwgcmVmO1xuICAgIHJlZiA9IHRoaXM7XG4gICAgZm9yIChqID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBlbCA9IHJlZltqXTtcbiAgICAgIGlmIChlbC5fcGFzdGFibGUgfHwgJChlbCkuaXMoJ3RleHRhcmVhLCBpbnB1dDp0ZXh0LCBbY29udGVudGVkaXRhYmxlXScpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgUGFzdGUubW91bnROb25JbnB1dGFibGUoZWwpO1xuICAgICAgZWwuX3Bhc3RhYmxlID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgJC5mbi5wYXN0YWJsZVRleHRhcmVhID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGVsLCBqLCBsZW4sIHJlZjtcbiAgICByZWYgPSB0aGlzO1xuICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgZWwgPSByZWZbal07XG4gICAgICBpZiAoZWwuX3Bhc3RhYmxlIHx8ICQoZWwpLmlzKCc6bm90KHRleHRhcmVhLCBpbnB1dDp0ZXh0KScpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgUGFzdGUubW91bnRUZXh0YXJlYShlbCk7XG4gICAgICBlbC5fcGFzdGFibGUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAkLmZuLnBhc3RhYmxlQ29udGVudGVkaXRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGVsLCBqLCBsZW4sIHJlZjtcbiAgICByZWYgPSB0aGlzO1xuICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgZWwgPSByZWZbal07XG4gICAgICBpZiAoZWwuX3Bhc3RhYmxlIHx8ICQoZWwpLmlzKCc6bm90KFtjb250ZW50ZWRpdGFibGVdKScpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgUGFzdGUubW91bnRDb250ZW50ZWRpdGFibGUoZWwpO1xuICAgICAgZWwuX3Bhc3RhYmxlID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgZGF0YVVSTHRvQmxvYiA9IGZ1bmN0aW9uKGRhdGFVUkwsIHNsaWNlU2l6ZSkge1xuICAgIHZhciBiNjREYXRhLCBieXRlQXJyYXksIGJ5dGVBcnJheXMsIGJ5dGVDaGFyYWN0ZXJzLCBieXRlTnVtYmVycywgY29udGVudFR5cGUsIGksIG0sIG9mZnNldCwgcmVmLCBzbGljZTtcbiAgICBpZiAoc2xpY2VTaXplID09IG51bGwpIHtcbiAgICAgIHNsaWNlU2l6ZSA9IDUxMjtcbiAgICB9XG4gICAgaWYgKCEobSA9IGRhdGFVUkwubWF0Y2goL15kYXRhXFw6KFteXFw7XSspXFw7YmFzZTY0XFwsKC4rKSQvKSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZWYgPSBtLCBtID0gcmVmWzBdLCBjb250ZW50VHlwZSA9IHJlZlsxXSwgYjY0RGF0YSA9IHJlZlsyXTtcbiAgICBieXRlQ2hhcmFjdGVycyA9IGF0b2IoYjY0RGF0YSk7XG4gICAgYnl0ZUFycmF5cyA9IFtdO1xuICAgIG9mZnNldCA9IDA7XG4gICAgd2hpbGUgKG9mZnNldCA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCkge1xuICAgICAgc2xpY2UgPSBieXRlQ2hhcmFjdGVycy5zbGljZShvZmZzZXQsIG9mZnNldCArIHNsaWNlU2l6ZSk7XG4gICAgICBieXRlTnVtYmVycyA9IG5ldyBBcnJheShzbGljZS5sZW5ndGgpO1xuICAgICAgaSA9IDA7XG4gICAgICB3aGlsZSAoaSA8IHNsaWNlLmxlbmd0aCkge1xuICAgICAgICBieXRlTnVtYmVyc1tpXSA9IHNsaWNlLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICAgIGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcbiAgICAgIGJ5dGVBcnJheXMucHVzaChieXRlQXJyYXkpO1xuICAgICAgb2Zmc2V0ICs9IHNsaWNlU2l6ZTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBCbG9iKGJ5dGVBcnJheXMsIHtcbiAgICAgIHR5cGU6IGNvbnRlbnRUeXBlXG4gICAgfSk7XG4gIH07XG5cbiAgY3JlYXRlSGlkZGVuRWRpdGFibGUgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSkuYXR0cignY29udGVudGVkaXRhYmxlJywgdHJ1ZSkuYXR0cignYXJpYS1oaWRkZW4nLCB0cnVlKS5hdHRyKCd0YWJpbmRleCcsIC0xKS5jc3Moe1xuICAgICAgd2lkdGg6IDEsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIGxlZnQ6IC0xMDAsXG4gICAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgICB9KTtcbiAgfTtcblxuICBpc0ZvY3VzYWJsZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIGhhc1RhYmluZGV4KSB7XG4gICAgdmFyIGZpZWxkc2V0LCBmb2N1c2FibGVJZlZpc2libGUsIGltZywgbWFwLCBtYXBOYW1lLCBub2RlTmFtZTtcbiAgICBtYXAgPSB2b2lkIDA7XG4gICAgbWFwTmFtZSA9IHZvaWQgMDtcbiAgICBpbWcgPSB2b2lkIDA7XG4gICAgZm9jdXNhYmxlSWZWaXNpYmxlID0gdm9pZCAwO1xuICAgIGZpZWxkc2V0ID0gdm9pZCAwO1xuICAgIG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICgnYXJlYScgPT09IG5vZGVOYW1lKSB7XG4gICAgICBtYXAgPSBlbGVtZW50LnBhcmVudE5vZGU7XG4gICAgICBtYXBOYW1lID0gbWFwLm5hbWU7XG4gICAgICBpZiAoIWVsZW1lbnQuaHJlZiB8fCAhbWFwTmFtZSB8fCBtYXAubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ21hcCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaW1nID0gJCgnaW1nW3VzZW1hcD1cXCcjJyArIG1hcE5hbWUgKyAnXFwnXScpO1xuICAgICAgcmV0dXJuIGltZy5sZW5ndGggPiAwICYmIGltZy5pcygnOnZpc2libGUnKTtcbiAgICB9XG4gICAgaWYgKC9eKGlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvLnRlc3Qobm9kZU5hbWUpKSB7XG4gICAgICBmb2N1c2FibGVJZlZpc2libGUgPSAhZWxlbWVudC5kaXNhYmxlZDtcbiAgICAgIGlmIChmb2N1c2FibGVJZlZpc2libGUpIHtcbiAgICAgICAgZmllbGRzZXQgPSAkKGVsZW1lbnQpLmNsb3Nlc3QoJ2ZpZWxkc2V0JylbMF07XG4gICAgICAgIGlmIChmaWVsZHNldCkge1xuICAgICAgICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9ICFmaWVsZHNldC5kaXNhYmxlZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoJ2EnID09PSBub2RlTmFtZSkge1xuICAgICAgZm9jdXNhYmxlSWZWaXNpYmxlID0gZWxlbWVudC5ocmVmIHx8IGhhc1RhYmluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICBmb2N1c2FibGVJZlZpc2libGUgPSBoYXNUYWJpbmRleDtcbiAgICB9XG4gICAgZm9jdXNhYmxlSWZWaXNpYmxlID0gZm9jdXNhYmxlSWZWaXNpYmxlIHx8ICQoZWxlbWVudCkuaXMoJ1tjb250ZW50ZWRpdGFibGVdJyk7XG4gICAgcmV0dXJuIGZvY3VzYWJsZUlmVmlzaWJsZSAmJiAkKGVsZW1lbnQpLmlzKCc6dmlzaWJsZScpO1xuICB9O1xuXG4gIFBhc3RlID0gKGZ1bmN0aW9uKCkge1xuICAgIFBhc3RlLnByb3RvdHlwZS5fdGFyZ2V0ID0gbnVsbDtcblxuICAgIFBhc3RlLnByb3RvdHlwZS5fY29udGFpbmVyID0gbnVsbDtcblxuICAgIFBhc3RlLm1vdW50Tm9uSW5wdXRhYmxlID0gZnVuY3Rpb24obm9uSW5wdXRhYmxlKSB7XG4gICAgICB2YXIgcGFzdGU7XG4gICAgICBwYXN0ZSA9IG5ldyBQYXN0ZShjcmVhdGVIaWRkZW5FZGl0YWJsZSgpLmFwcGVuZFRvKG5vbklucHV0YWJsZSksIG5vbklucHV0YWJsZSk7XG4gICAgICAkKG5vbklucHV0YWJsZSkub24oJ2NsaWNrJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihldikge1xuICAgICAgICAgIGlmICghaXNGb2N1c2FibGUoZXYudGFyZ2V0LCBmYWxzZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXN0ZS5fY29udGFpbmVyLmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgcGFzdGUuX2NvbnRhaW5lci5vbignZm9jdXMnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiAkKG5vbklucHV0YWJsZSkuYWRkQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICByZXR1cm4gcGFzdGUuX2NvbnRhaW5lci5vbignYmx1cicsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuICQobm9uSW5wdXRhYmxlKS5yZW1vdmVDbGFzcygncGFzdGFibGUtZm9jdXMnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICB9O1xuXG4gICAgUGFzdGUubW91bnRUZXh0YXJlYSA9IGZ1bmN0aW9uKHRleHRhcmVhKSB7XG4gICAgICB2YXIgY3RsRG93biwgcGFzdGUsIHJlZiwgcmVmMTtcbiAgICAgIGlmICgodHlwZW9mIERhdGFUcmFuc2ZlciAhPT0gXCJ1bmRlZmluZWRcIiAmJiBEYXRhVHJhbnNmZXIgIT09IG51bGwgPyBEYXRhVHJhbnNmZXIucHJvdG90eXBlIDogdm9pZCAwKSAmJiAoKHJlZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpICE9IG51bGwgPyAocmVmMSA9IHJlZi5jYWxsKE9iamVjdCwgRGF0YVRyYW5zZmVyLnByb3RvdHlwZSwgJ2l0ZW1zJykpICE9IG51bGwgPyByZWYxLmdldCA6IHZvaWQgMCA6IHZvaWQgMCkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW91bnRDb250ZW50ZWRpdGFibGUodGV4dGFyZWEpO1xuICAgICAgfVxuICAgICAgcGFzdGUgPSBuZXcgUGFzdGUoY3JlYXRlSGlkZGVuRWRpdGFibGUoKS5pbnNlcnRCZWZvcmUodGV4dGFyZWEpLCB0ZXh0YXJlYSk7XG4gICAgICBjdGxEb3duID0gZmFsc2U7XG4gICAgICAkKHRleHRhcmVhKS5vbigna2V5dXAnLCBmdW5jdGlvbihldikge1xuICAgICAgICB2YXIgcmVmMjtcbiAgICAgICAgaWYgKChyZWYyID0gZXYua2V5Q29kZSkgPT09IDE3IHx8IHJlZjIgPT09IDIyNCkge1xuICAgICAgICAgIGN0bERvd24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pO1xuICAgICAgJCh0ZXh0YXJlYSkub24oJ2tleWRvd24nLCBmdW5jdGlvbihldikge1xuICAgICAgICB2YXIgcmVmMjtcbiAgICAgICAgaWYgKChyZWYyID0gZXYua2V5Q29kZSkgPT09IDE3IHx8IHJlZjIgPT09IDIyNCkge1xuICAgICAgICAgIGN0bERvd24gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoZXYuY3RybEtleSAhPSBudWxsKSAmJiAoZXYubWV0YUtleSAhPSBudWxsKSkge1xuICAgICAgICAgIGN0bERvd24gPSBldi5jdHJsS2V5IHx8IGV2Lm1ldGFLZXk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN0bERvd24gJiYgZXYua2V5Q29kZSA9PT0gODYpIHtcbiAgICAgICAgICBwYXN0ZS5fdGV4dGFyZWFfZm9jdXNfc3RvbGVuID0gdHJ1ZTtcbiAgICAgICAgICBwYXN0ZS5fY29udGFpbmVyLmZvY3VzKCk7XG4gICAgICAgICAgcGFzdGUuX3Bhc3RlX2V2ZW50X2ZpcmVkID0gZmFsc2U7XG4gICAgICAgICAgc2V0VGltZW91dCgoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgaWYgKCFwYXN0ZS5fcGFzdGVfZXZlbnRfZmlyZWQpIHtcbiAgICAgICAgICAgICAgICAkKHRleHRhcmVhKS5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXN0ZS5fdGV4dGFyZWFfZm9jdXNfc3RvbGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSkodGhpcyksIDEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSk7XG4gICAgICAkKHRleHRhcmVhKS5vbigncGFzdGUnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge307XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICAkKHRleHRhcmVhKS5vbignZm9jdXMnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmICghcGFzdGUuX3RleHRhcmVhX2ZvY3VzX3N0b2xlbikge1xuICAgICAgICAgICAgcmV0dXJuICQodGV4dGFyZWEpLmFkZENsYXNzKCdwYXN0YWJsZS1mb2N1cycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgICQodGV4dGFyZWEpLm9uKCdibHVyJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBpZiAoIXBhc3RlLl90ZXh0YXJlYV9mb2N1c19zdG9sZW4pIHtcbiAgICAgICAgICAgIHJldHVybiAkKHRleHRhcmVhKS5yZW1vdmVDbGFzcygncGFzdGFibGUtZm9jdXMnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICAkKHBhc3RlLl90YXJnZXQpLm9uKCdfcGFzdGVDaGVja0NvbnRhaW5lckRvbmUnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICQodGV4dGFyZWEpLmZvY3VzKCk7XG4gICAgICAgICAgcmV0dXJuIHBhc3RlLl90ZXh0YXJlYV9mb2N1c19zdG9sZW4gPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHJldHVybiAkKHBhc3RlLl90YXJnZXQpLm9uKCdwYXN0ZVRleHQnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2LCBkYXRhKSB7XG4gICAgICAgICAgdmFyIGNvbnRlbnQsIGN1ckVuZCwgY3VyU3RhcnQ7XG4gICAgICAgICAgY3VyU3RhcnQgPSAkKHRleHRhcmVhKS5wcm9wKCdzZWxlY3Rpb25TdGFydCcpO1xuICAgICAgICAgIGN1ckVuZCA9ICQodGV4dGFyZWEpLnByb3AoJ3NlbGVjdGlvbkVuZCcpO1xuICAgICAgICAgIGNvbnRlbnQgPSAkKHRleHRhcmVhKS52YWwoKTtcbiAgICAgICAgICAkKHRleHRhcmVhKS52YWwoXCJcIiArIGNvbnRlbnQuc2xpY2UoMCwgY3VyU3RhcnQpICsgZGF0YS50ZXh0ICsgY29udGVudC5zbGljZShjdXJFbmQpKTtcbiAgICAgICAgICAkKHRleHRhcmVhKVswXS5zZXRTZWxlY3Rpb25SYW5nZShjdXJTdGFydCArIGRhdGEudGV4dC5sZW5ndGgsIGN1clN0YXJ0ICsgZGF0YS50ZXh0Lmxlbmd0aCk7XG4gICAgICAgICAgcmV0dXJuICQodGV4dGFyZWEpLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgIH07XG5cbiAgICBQYXN0ZS5tb3VudENvbnRlbnRlZGl0YWJsZSA9IGZ1bmN0aW9uKGNvbnRlbnRlZGl0YWJsZSkge1xuICAgICAgdmFyIHBhc3RlO1xuICAgICAgcGFzdGUgPSBuZXcgUGFzdGUoY29udGVudGVkaXRhYmxlLCBjb250ZW50ZWRpdGFibGUpO1xuICAgICAgJChjb250ZW50ZWRpdGFibGUpLm9uKCdmb2N1cycsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuICQoY29udGVudGVkaXRhYmxlKS5hZGRDbGFzcygncGFzdGFibGUtZm9jdXMnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHJldHVybiAkKGNvbnRlbnRlZGl0YWJsZSkub24oJ2JsdXInLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiAkKGNvbnRlbnRlZGl0YWJsZSkucmVtb3ZlQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIFBhc3RlKF9jb250YWluZXIsIF90YXJnZXQpIHtcbiAgICAgIHRoaXMuX2NvbnRhaW5lciA9IF9jb250YWluZXI7XG4gICAgICB0aGlzLl90YXJnZXQgPSBfdGFyZ2V0O1xuICAgICAgdGhpcy5fY29udGFpbmVyID0gJCh0aGlzLl9jb250YWluZXIpO1xuICAgICAgdGhpcy5fdGFyZ2V0ID0gJCh0aGlzLl90YXJnZXQpLmFkZENsYXNzKCdwYXN0YWJsZScpO1xuICAgICAgdGhpcy5fY29udGFpbmVyLm9uKCdwYXN0ZScsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXYpIHtcbiAgICAgICAgICB2YXIgY2xpcGJvYXJkRGF0YSwgZmlsZSwgaXRlbSwgaiwgaywgbGVuLCBsZW4xLCByZWFkZXIsIHJlZiwgcmVmMSwgcmVmMiwgcmVmMywgdGV4dDtcbiAgICAgICAgICBpZiAoZXYuY3VycmVudFRhcmdldCAhPT0gZXYudGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgX3RoaXMuX3Bhc3RlX2V2ZW50X2ZpcmVkID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoKChyZWYgPSBldi5vcmlnaW5hbEV2ZW50KSAhPSBudWxsID8gcmVmLmNsaXBib2FyZERhdGEgOiB2b2lkIDApICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNsaXBib2FyZERhdGEgPSBldi5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGE7XG4gICAgICAgICAgICBpZiAoY2xpcGJvYXJkRGF0YS5pdGVtcykge1xuICAgICAgICAgICAgICByZWYxID0gY2xpcGJvYXJkRGF0YS5pdGVtcztcbiAgICAgICAgICAgICAgZm9yIChqID0gMCwgbGVuID0gcmVmMS5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgICAgICAgICAgIGl0ZW0gPSByZWYxW2pdO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUubWF0Y2goL15pbWFnZVxcLy8pKSB7XG4gICAgICAgICAgICAgICAgICByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5faGFuZGxlSW1hZ2UoZXZlbnQudGFyZ2V0LnJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoaXRlbS5nZXRBc0ZpbGUoKSk7XG4gICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICAgICAgICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ3RleHQvcGxhaW4nKSB7XG4gICAgICAgICAgICAgICAgICBpdGVtLmdldEFzU3RyaW5nKGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZVRleHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAoLTEgIT09IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoY2xpcGJvYXJkRGF0YS50eXBlcywgJ3RleHQvcGxhaW4nKSkge1xuICAgICAgICAgICAgICAgIHRleHQgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoJ1RleHQnKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVUZXh0Jywge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0ZXh0XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBfdGhpcy5fY2hlY2tJbWFnZXNJbkNvbnRhaW5lcihmdW5jdGlvbihzcmMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuX2hhbmRsZUltYWdlKHNyYyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2xpcGJvYXJkRGF0YSA9IHdpbmRvdy5jbGlwYm9hcmREYXRhKSB7XG4gICAgICAgICAgICBpZiAoKHJlZjIgPSAodGV4dCA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YSgnVGV4dCcpKSkgIT0gbnVsbCA/IHJlZjIubGVuZ3RoIDogdm9pZCAwKSB7XG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZVRleHQnLCB7XG4gICAgICAgICAgICAgICAgICB0ZXh0OiB0ZXh0XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLl90YXJnZXQudHJpZ2dlcignX3Bhc3RlQ2hlY2tDb250YWluZXJEb25lJyk7XG4gICAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVmMyA9IGNsaXBib2FyZERhdGEuZmlsZXM7XG4gICAgICAgICAgICAgIGZvciAoayA9IDAsIGxlbjEgPSByZWYzLmxlbmd0aDsgayA8IGxlbjE7IGsrKykge1xuICAgICAgICAgICAgICAgIGZpbGUgPSByZWYzW2tdO1xuICAgICAgICAgICAgICAgIF90aGlzLl9oYW5kbGVJbWFnZShVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBfdGhpcy5fY2hlY2tJbWFnZXNJbkNvbnRhaW5lcihmdW5jdGlvbihzcmMpIHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgfVxuXG4gICAgUGFzdGUucHJvdG90eXBlLl9oYW5kbGVJbWFnZSA9IGZ1bmN0aW9uKHNyYykge1xuICAgICAgdmFyIGxvYWRlcjtcbiAgICAgIGlmIChzcmMubWF0Y2goL153ZWJraXRcXC1mYWtlXFwtdXJsXFw6XFwvXFwvLykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZUltYWdlRXJyb3InLCB7XG4gICAgICAgICAgbWVzc2FnZTogXCJZb3UgYXJlIHRyeWluZyB0byBwYXN0ZSBhbiBpbWFnZSBpbiBTYWZhcmksIGhvd2V2ZXIgd2UgYXJlIHVuYWJsZSB0byByZXRpZXZlIGl0cyBkYXRhLlwiXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlSW1hZ2VTdGFydCcpO1xuICAgICAgbG9hZGVyID0gbmV3IEltYWdlKCk7XG4gICAgICBsb2FkZXIuY3Jvc3NPcmlnaW4gPSBcImFub255bW91c1wiO1xuICAgICAgbG9hZGVyLm9ubG9hZCA9IChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGJsb2IsIGNhbnZhcywgY3R4LCBkYXRhVVJMO1xuICAgICAgICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgIGNhbnZhcy53aWR0aCA9IGxvYWRlci53aWR0aDtcbiAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gbG9hZGVyLmhlaWdodDtcbiAgICAgICAgICBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICBjdHguZHJhd0ltYWdlKGxvYWRlciwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgICBkYXRhVVJMID0gbnVsbDtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZGF0YVVSTCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuICAgICAgICAgICAgYmxvYiA9IGRhdGFVUkx0b0Jsb2IoZGF0YVVSTCk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgICAgICAgaWYgKGRhdGFVUkwpIHtcbiAgICAgICAgICAgIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVJbWFnZScsIHtcbiAgICAgICAgICAgICAgYmxvYjogYmxvYixcbiAgICAgICAgICAgICAgZGF0YVVSTDogZGF0YVVSTCxcbiAgICAgICAgICAgICAgd2lkdGg6IGxvYWRlci53aWR0aCxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBsb2FkZXIuaGVpZ2h0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVJbWFnZUVuZCcpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcyk7XG4gICAgICBsb2FkZXIub25lcnJvciA9IChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZUltYWdlRXJyb3InLCB7XG4gICAgICAgICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byBnZXQgaW1hZ2UgZnJvbTogXCIgKyBzcmMsXG4gICAgICAgICAgICB1cmw6IHNyY1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlSW1hZ2VFbmQnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpO1xuICAgICAgcmV0dXJuIGxvYWRlci5zcmMgPSBzcmM7XG4gICAgfTtcblxuICAgIFBhc3RlLnByb3RvdHlwZS5fY2hlY2tJbWFnZXNJbkNvbnRhaW5lciA9IGZ1bmN0aW9uKGNiKSB7XG4gICAgICB2YXIgaW1nLCBqLCBsZW4sIHJlZiwgdGltZXNwYW47XG4gICAgICB0aW1lc3BhbiA9IE1hdGguZmxvb3IoMTAwMCAqIE1hdGgucmFuZG9tKCkpO1xuICAgICAgcmVmID0gdGhpcy5fY29udGFpbmVyLmZpbmQoJ2ltZycpO1xuICAgICAgZm9yIChqID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICAgIGltZyA9IHJlZltqXTtcbiAgICAgICAgaW1nW1wiX3Bhc3RlX21hcmtlZF9cIiArIHRpbWVzcGFuXSA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2V0VGltZW91dCgoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBrLCBsZW4xLCByZWYxO1xuICAgICAgICAgIHJlZjEgPSBfdGhpcy5fY29udGFpbmVyLmZpbmQoJ2ltZycpO1xuICAgICAgICAgIGZvciAoayA9IDAsIGxlbjEgPSByZWYxLmxlbmd0aDsgayA8IGxlbjE7IGsrKykge1xuICAgICAgICAgICAgaW1nID0gcmVmMVtrXTtcbiAgICAgICAgICAgIGlmICghaW1nW1wiX3Bhc3RlX21hcmtlZF9cIiArIHRpbWVzcGFuXSkge1xuICAgICAgICAgICAgICBjYihpbWcuc3JjKTtcbiAgICAgICAgICAgICAgJChpbWcpLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdfcGFzdGVDaGVja0NvbnRhaW5lckRvbmUnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpLCAxKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIFBhc3RlO1xuXG4gIH0pKCk7XG5cbn0pLmNhbGwodGhpcyk7XG5cbnZhciB0aGVwYXN0ZVBsdWdpbkNhbGxiYWNrO1xuXG4oZnVuY3Rpb24oJCl7XG5cdHRoZXBhc3RlUGx1Z2luQ2FsbGJhY2sgPSBmdW5jdGlvbiggZWRpdG9yICkge1xuXHRcdHZhciBwYXN0ZUJ0bixcblx0XHRcdG9yaWdEb21BZGQsXG5cdFx0XHRjbGlwYm9hcmRIYXNJbWFnZSA9IGZhbHNlLFxuXHRcdFx0Y3VycmVudENsaXBib2FyZEV2ZW50ID0gbnVsbCxcblx0XHRcdHByZXZlbnRJbWFnZVBhc3RlID0gZmFsc2UsXG5cdFx0XHR0aGVwYXN0ZSA9IHdwLm1lZGlhLnRoZXBhc3RlLFxuXHRcdFx0dG9vbGJhcixcblx0XHRcdHBhc3RlZF9pbWFnZV90bXBfcHJlZml4ID0gJ19fcGFzdGVkX2ltYWdlX3RtcF8nLFxuXHRcdFx0cGFzdGVkX2ltYWdlX3RtcF9jbGFzcyA9ICcnO1xuXG5cdFx0Ly8gZGVmYXVsdCBvblxuXHRcdHRoZXBhc3RlLm9wdGlvbnMuZWRpdG9yLmF1dG9fdXBsb2FkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oICd0aGVwYXN0ZS5hdXRvX3VwbG9hZCcgKSAhPT0gJ2ZhbHNlJztcblxuXHRcdGVkaXRvci5hZGRDb21tYW5kKCAnY21kX3RoZXBhc3RlJywgZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGVwYXN0ZS5vcHRpb25zLmVkaXRvci5hdXRvX3VwbG9hZCA9ICEgdGhlcGFzdGUub3B0aW9ucy5lZGl0b3IuYXV0b191cGxvYWQ7XG5cdFx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbSggJ3RoZXBhc3RlLmF1dG9fdXBsb2FkJywgdGhlcGFzdGUub3B0aW9ucy5lZGl0b3IuYXV0b191cGxvYWQudG9TdHJpbmcoKSApO1xuXHRcdFx0cGFzdGVCdG4uYWN0aXZlKCB0aGVwYXN0ZS5vcHRpb25zLmVkaXRvci5hdXRvX3VwbG9hZCApO1xuXG5cdFx0fSk7XG5cblxuXHRcdGVkaXRvci5hZGRCdXR0b24oJ3RoZXBhc3RlJywge1xuXHRcdFx0aWNvbjogJ3RoZXBhc3RlJyxcblx0XHRcdHRvb2x0aXA6IHRoZXBhc3RlLmwxMG4udXBsb2FkX3Bhc3RlZF9pbWFnZXMsXG5cdFx0XHRjbWQgOiAnY21kX3RoZXBhc3RlJyxcblx0XHRcdG9uUG9zdFJlbmRlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHBhc3RlQnRuID0gdGhpcztcblx0XHRcdH0sXG5cdFx0XHRhY3RpdmU6dGhlcGFzdGUub3B0aW9ucy5lZGl0b3IuYXV0b191cGxvYWRcblx0XHR9KTtcblxuXHRcdGVkaXRvci5hZGRCdXR0b24oJ3dwX2ltZ190aGVwYXN0ZV91cGxvYWQnLCB7XG5cdFx0XHRpY29uOiAnZGFzaGljb24gZGFzaGljb25zIGRhc2hpY29ucy11cGxvYWQgdGhlcGFzdGUtdXBsb2FkJyxcblx0XHRcdHRvb2x0aXA6IHRoZXBhc3RlLmwxMG4udXBsb2FkX2ltYWdlLFxuXHRcdFx0b25jbGljazogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdC8vIHdyYXAgaW1nLCB1cGxvYWRcblx0XHRcdFx0dmFyIGltYWdlO1xuXHRcdFx0XHRpbWFnZSA9IGVkaXRvci5zZWxlY3Rpb24uZ2V0Tm9kZSgpO1xuXG5cdFx0XHRcdHRoZXBhc3RlLnVwbG9hZEltYWdlKCBpbWFnZSwgZWRpdG9yICk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRlZGl0b3Iub25jZSggJ3ByZWluaXQnLCBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggZWRpdG9yLndwICYmIGVkaXRvci53cC5fY3JlYXRlVG9vbGJhciApIHtcblx0XHRcdFx0dG9vbGJhciA9IGVkaXRvci53cC5fY3JlYXRlVG9vbGJhciggW1xuXHRcdFx0XHRcdCd3cF9pbWdfYWxpZ25sZWZ0Jyxcblx0XHRcdFx0XHQnd3BfaW1nX2FsaWduY2VudGVyJyxcblx0XHRcdFx0XHQnd3BfaW1nX2FsaWducmlnaHQnLFxuXHRcdFx0XHRcdCd3cF9pbWdfYWxpZ25ub25lJyxcblx0XHRcdFx0XHQnd3BfaW1nX3RoZXBhc3RlX3VwbG9hZCcsXG5cdFx0XHRcdFx0J3dwX2ltZ19lZGl0Jyxcblx0XHRcdFx0XHQnd3BfaW1nX3JlbW92ZScsXG5cdFx0XHRcdF0gKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRlZGl0b3Iub24oICd3cHRvb2xiYXInLCBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHR2YXIgdXBsb2FkQnRuO1xuXHRcdFx0aWYgKCBldmVudC5lbGVtZW50Lm5vZGVOYW1lID09PSAnSU1HJyAmJiAhIGVkaXRvci53cC5pc1BsYWNlaG9sZGVyKCBldmVudC5lbGVtZW50ICkgKSB7XG5cdFx0XHRcdGV2ZW50LnRvb2xiYXIgPSB0b29sYmFyO1xuXHRcdFx0XHR1cGxvYWRCdG4gPSB0b29sYmFyLiRlbC5maW5kKCcudGhlcGFzdGUtdXBsb2FkJykuY2xvc2VzdCgnLm1jZS1idG4nKTtcblxuXHRcdFx0XHRpZiAoIGNhblVwbG9hZCggZXZlbnQuZWxlbWVudCApICkge1xuXHRcdFx0XHRcdHVwbG9hZEJ0bi5zaG93KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dXBsb2FkQnRuLmhpZGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdGZ1bmN0aW9uIGNhblVwbG9hZCggaW1nICkge1xuXHRcdFx0dmFyIHN1YiA9IGltZy5zcmMuc3Vic3RyaW5nKDAsNSk7XG5cdFx0XHRyZXR1cm4gc3ViID09PSAnYmxvYjonIHx8IHN1YiA9PT0gJ2RhdGE6Jztcblx0XHR9XG5cblx0XHRmdW5jdGlvbiBleGVjQ29tbWFuZFVwbG9hZFBhc3RlZEltYWdlKGEpe1xuXHRcdFx0aWYgKCB0aGVwYXN0ZS5vcHRpb25zLmVkaXRvci5hdXRvX3VwbG9hZCAmJlxuXHRcdFx0XHRhLmNvbW1hbmQgPT0gJ21jZUluc2VydENvbnRlbnQnICYmXG5cdFx0XHRcdCEhIGEudmFsdWUgJiYgISEgYS52YWx1ZS5jb250ZW50ICYmXG5cdFx0XHRcdFwiPGltZ1wiID09PSBhLnZhbHVlLmNvbnRlbnQuc3Vic3RyaW5nKDAsNCkudG9Mb3dlckNhc2UoKVxuXHRcdFx0KSB7XG5cdFx0XHRcdCRpbWcgPSAkKGVkaXRvci5nZXRCb2R5KCkpLmZpbmQoJy4nK3Bhc3RlZF9pbWFnZV90bXBfY2xhc3MpO1xuXHRcdFx0XHRpZiAoIGNhblVwbG9hZCggJGltZy5nZXQoMCkgKSApIHtcblx0XHRcdFx0XHR0aGVwYXN0ZS51cGxvYWRJbWFnZSggJGltZy5nZXQoMCksIGVkaXRvciApO1xuXHRcdFx0XHRcdCRpbWcucmVtb3ZlQ2xhc3MocGFzdGVkX2ltYWdlX3RtcF9jbGFzcyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0ZWRpdG9yXG4vL1x0XHRcdC5vbiggJ2luaXQnLCBzZXR1cEVkaXRvckRvbSApXG5cdFx0XHQub24oICdQYXN0ZVBvc3RQcm9jZXNzJywgZnVuY3Rpb24oZSl7XG5cdFx0XHRcdHZhciAkZmlyc3RDaGlsZDtcblx0XHRcdFx0aWYgKCB0aGVwYXN0ZS5vcHRpb25zLmVkaXRvci5hdXRvX3VwbG9hZCApIHtcblx0XHRcdFx0XHQkZmlyc3RDaGlsZCA9ICQoZS5ub2RlKS5jaGlsZHJlbigpLmZpcnN0KCk7XG5cdFx0XHRcdFx0aWYgKCAkZmlyc3RDaGlsZC5pcygnaW1nJykgJiYgY2FuVXBsb2FkKCAkZmlyc3RDaGlsZC5nZXQoMCkgKSApIHtcblx0XHRcdFx0XHRcdHBhc3RlZF9pbWFnZV90bXBfY2xhc3MgPSBwYXN0ZWRfaW1hZ2VfdG1wX3ByZWZpeCArIERhdGUubm93KCk7XG5cdFx0XHRcdFx0XHQkZmlyc3RDaGlsZC5hZGRDbGFzcyggcGFzdGVkX2ltYWdlX3RtcF9jbGFzcyApO1xuXHRcdFx0XHRcdFx0ZWRpdG9yLm9uY2UoICdFeGVjQ29tbWFuZCcsIGV4ZWNDb21tYW5kVXBsb2FkUGFzdGVkSW1hZ2UgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQub24oICdCZWZvcmVQYXN0ZVByZVByb2Nlc3MnLCBmdW5jdGlvbihlKXtcblx0XHRcdFx0Ly8gcmVtb3ZlIHN2ZyBkYXRhIGZyb20gaWxsdXN0cmF0b3Jcblx0XHRcdFx0aWYgKCAgZS5jb250ZW50Lm1hdGNoKCAvJmx0O3N2Z1tcXHNcXFMuXSombHQ7XFwvc3ZnJmd0Oy9pICkgKSB7XG5cdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdGUuY29udGVudCA9ICcnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBlO1xuXG5cdFx0XHR9IClcblx0XHRcdDtcblxuXHR9O1xuXG5cdHRpbnltY2UuUGx1Z2luTWFuYWdlci5hZGQoICd0aGVwYXN0ZScsIHRoZXBhc3RlUGx1Z2luQ2FsbGJhY2sgKTtcblxufSApKGpRdWVyeSk7XG4iXX0= 
  • the-paste/trunk/js/admin/the-paste.js

    r1730916 r1760781  
    405405        counter = 0, 
    406406        workflow; 
    407          
     407 
    408408    thepaste = exports.thepaste = $.extend( { 
    409409        supports : { 
     
    411411        }, 
    412412        view:{}, 
    413          
     413 
    414414        insertImage:function( dataURL, type, editor ) { 
    415415            var id = '__thepaste_img_'+(counter++), 
     
    419419 
    420420            editor.insertContent( imageHtml ); 
    421              
     421 
    422422            return editor.$('#'+id)[0]; 
    423423        }, 
     
    426426 
    427427            var xhr, 
    428                 workflow,  
     428                workflow, 
    429429                $container, 
    430430                src = image.src, 
     
    434434                        file = new o.Blob( null, { data: dataURL } ) 
    435435                        suffix = thepaste.options.mime_types.convert[ type ]; 
    436  
     436                    if ( 'undefined' === typeof suffix ) { 
     437                        console.trace( 'bad type: ' + type ); 
     438                    } 
    437439                    $(image).wrap('<div id="'+id+'" data-progress="0" class="thepaste-image-placeholder" contenteditable="false"></div>'); 
    438440                    $container = editor.$('#'+id); 
     
    489491                        reader = new FileReader(); 
    490492                        reader.onload = function() { 
    491  
    492493                            upload( reader.result ); 
    493  
    494494                        } 
    495                         reader.readAsDataURL( xhr.response ); 
     495                        reader.readAsDataURL( new Blob( [ xhr.response ], { type: 'image/png' } ) ); 
    496496                    } 
    497497                } 
     
    500500 
    501501            } else if ( src.substr(0,5) === 'data:' ) { 
    502  
    503502                upload( src ); 
    504  
    505             }  
    506              
     503            } 
     504 
    507505        }, 
    508506 
     
    538536 
    539537})( jQuery, wp.media ); 
    540  
    541538 
    542539(function($,exports){ 
  • the-paste/trunk/js/admin/the-paste.min.js

    r1730916 r1760781  
    1 (function(){var e,t,a,i,n;e=window.jQuery,e.paste=function(e){var a;return"undefined"!=typeof console&&null!==console&&console.log("DEPRECATED: This method is deprecated. Please use $.fn.pastableNonInputable() instead."),a=t.mountNonInputable(e),a._container},e.fn.pastableNonInputable=function(){var a,i,n,r;for(r=this,i=0,n=r.length;i<n;i++)a=r[i],a._pastable||e(a).is("textarea, input:text, [contenteditable]")||(t.mountNonInputable(a),a._pastable=!0);return this},e.fn.pastableTextarea=function(){var a,i,n,r;for(r=this,i=0,n=r.length;i<n;i++)a=r[i],a._pastable||e(a).is(":not(textarea, input:text)")||(t.mountTextarea(a),a._pastable=!0);return this},e.fn.pastableContenteditable=function(){var a,i,n,r;for(r=this,i=0,n=r.length;i<n;i++)a=r[i],a._pastable||e(a).is(":not([contenteditable])")||(t.mountContenteditable(a),a._pastable=!0);return this},i=function(e,t){var a,i,n,r,o,s,l,p,d,u,h;if(null==t&&(t=512),!(p=e.match(/^data\:([^\;]+)\;base64\,(.+)$/)))return null;for(u=p,p=u[0],s=u[1],a=u[2],r=atob(a),n=[],d=0;d<r.length;){for(h=r.slice(d,d+t),o=new Array(h.length),l=0;l<h.length;)o[l]=h.charCodeAt(l),l++;i=new Uint8Array(o),n.push(i),d+=t}return new Blob(n,{type:s})},a=function(){return e(document.createElement("div")).attr("contenteditable",!0).attr("aria-hidden",!0).attr("tabindex",-1).css({width:1,height:1,position:"fixed",left:-100,overflow:"hidden"})},n=function(t,a){var i,n,r,o,s,l;return o=void 0,s=void 0,r=void 0,n=void 0,i=void 0,"area"===(l=t.nodeName.toLowerCase())?(o=t.parentNode,s=o.name,!(!t.href||!s||"map"!==o.nodeName.toLowerCase())&&(r=e("img[usemap='#"+s+"']"),r.length>0&&r.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(l)?(n=!t.disabled)&&(i=e(t).closest("fieldset")[0])&&(n=!i.disabled):n="a"===l?t.href||a:a,(n=n||e(t).is("[contenteditable]"))&&e(t).is(":visible"))},t=function(){function t(t,a){this._container=t,this._target=a,this._container=e(this._container),this._target=e(this._target).addClass("pastable"),this._container.on("paste",function(e){return function(t){var a,i,n,r,o,s,l,p,d,u,h,c,g;if(t.currentTarget!==t.target)return t.preventDefault();if(e._paste_event_fired=!0,null!=(null!=(d=t.originalEvent)?d.clipboardData:void 0))if(a=t.originalEvent.clipboardData,a.items)for(u=a.items,r=0,s=u.length;r<s;r++){if(n=u[r],n.type.match(/^image\//)){p=new FileReader,p.onload=function(t){return e._handleImage(t.target.result)};try{p.readAsDataURL(n.getAsFile())}catch(e){}t.preventDefault();break}"text/plain"===n.type&&n.getAsString(function(t){return e._target.trigger("pasteText",{text:t})})}else-1!==Array.prototype.indexOf.call(a.types,"text/plain")&&(g=a.getData("Text"),setTimeout(function(){return e._target.trigger("pasteText",{text:g})},1)),e._checkImagesInContainer(function(t){return e._handleImage(t)});if(a=window.clipboardData)if(null!=(h=g=a.getData("Text"))?h.length:void 0)setTimeout(function(){return e._target.trigger("pasteText",{text:g}),e._target.trigger("_pasteCheckContainerDone")},1);else{for(c=a.files,o=0,l=c.length;o<l;o++)i=c[o],e._handleImage(URL.createObjectURL(i));e._checkImagesInContainer(function(e){})}return null}}(this))}return t.prototype._target=null,t.prototype._container=null,t.mountNonInputable=function(i){var r;return r=new t(a().appendTo(i),i),e(i).on("click",function(e){return function(e){if(!n(e.target,!1))return r._container.focus()}}()),r._container.on("focus",function(t){return function(){return e(i).addClass("pastable-focus")}}()),r._container.on("blur",function(t){return function(){return e(i).removeClass("pastable-focus")}}())},t.mountTextarea=function(i){var n,r,o,s;return("undefined"!=typeof DataTransfer&&null!==DataTransfer?DataTransfer.prototype:void 0)&&(null!=(o=Object.getOwnPropertyDescriptor)&&null!=(s=o.call(Object,DataTransfer.prototype,"items"))?s.get:void 0)?this.mountContenteditable(i):(r=new t(a().insertBefore(i),i),n=!1,e(i).on("keyup",function(e){var t;return 17!==(t=e.keyCode)&&224!==t||(n=!1),null}),e(i).on("keydown",function(t){var a;return 17!==(a=t.keyCode)&&224!==a||(n=!0),null!=t.ctrlKey&&null!=t.metaKey&&(n=t.ctrlKey||t.metaKey),n&&86===t.keyCode&&(r._textarea_focus_stolen=!0,r._container.focus(),r._paste_event_fired=!1,setTimeout(function(t){return function(){if(!r._paste_event_fired)return e(i).focus(),r._textarea_focus_stolen=!1}}(),1)),null}),e(i).on("paste",function(e){return function(){}}()),e(i).on("focus",function(t){return function(){if(!r._textarea_focus_stolen)return e(i).addClass("pastable-focus")}}()),e(i).on("blur",function(t){return function(){if(!r._textarea_focus_stolen)return e(i).removeClass("pastable-focus")}}()),e(r._target).on("_pasteCheckContainerDone",function(t){return function(){return e(i).focus(),r._textarea_focus_stolen=!1}}()),e(r._target).on("pasteText",function(t){return function(t,a){var n,r,o;return o=e(i).prop("selectionStart"),r=e(i).prop("selectionEnd"),n=e(i).val(),e(i).val(""+n.slice(0,o)+a.text+n.slice(r)),e(i)[0].setSelectionRange(o+a.text.length,o+a.text.length),e(i).trigger("change")}}()))},t.mountContenteditable=function(a){return new t(a,a),e(a).on("focus",function(t){return function(){return e(a).addClass("pastable-focus")}}()),e(a).on("blur",function(t){return function(){return e(a).removeClass("pastable-focus")}}())},t.prototype._handleImage=function(e){var t;return e.match(/^webkit\-fake\-url\:\/\//)?this._target.trigger("pasteImageError",{message:"You are trying to paste an image in Safari, however we are unable to retieve its data."}):(this._target.trigger("pasteImageStart"),t=new Image,t.crossOrigin="anonymous",t.onload=function(e){return function(){var a,n,r,o;n=document.createElement("canvas"),n.width=t.width,n.height=t.height,r=n.getContext("2d"),r.drawImage(t,0,0,n.width,n.height),o=null;try{o=n.toDataURL("image/png"),a=i(o)}catch(e){}return o&&e._target.trigger("pasteImage",{blob:a,dataURL:o,width:t.width,height:t.height}),e._target.trigger("pasteImageEnd")}}(this),t.onerror=function(t){return function(){return t._target.trigger("pasteImageError",{message:"Failed to get image from: "+e,url:e}),t._target.trigger("pasteImageEnd")}}(this),t.src=e)},t.prototype._checkImagesInContainer=function(t){var a,i,n,r,o;for(o=Math.floor(1e3*Math.random()),r=this._container.find("img"),i=0,n=r.length;i<n;i++)a=r[i],a["_paste_marked_"+o]=!0;return setTimeout(function(i){return function(){var n,r,s;for(s=i._container.find("img"),n=0,r=s.length;n<r;n++)a=s[n],a["_paste_marked_"+o]||(t(a.src),e(a).remove());return i._target.trigger("_pasteCheckContainerDone")}}(this),1)},t}()}).call(this),function(e,t){var a=(navigator.userAgent.indexOf("Chrome"),0);thepaste=t.thepaste=e.extend({supports:{paste:"paste"in document||"onpaste"in document||"object"==typeof window.onpaste||"onpaste"in document.createElement("DIV")},view:{},insertImage:function(e,t,i){var n="__thepaste_img_"+a++,r='<img id="'+n+'" class="alignnone size-full" src="'+e+'" />';return i.insertContent(r),i.$("#"+n)[0]},uploadImage:function(t,i){var n,r,s,l=t.src,p=function(n){var p="__thepaste_box_"+a++,d=n.match(/^data\:([^\;]+)\;/)[1];file=new o.Blob(null,{data:n}),suffix=thepaste.options.mime_types.convert[d],e(t).wrap('<div id="'+p+'" data-progress="0" class="thepaste-image-placeholder" contenteditable="false"></div>'),s=i.$("#"+p),file.name=thepaste.l10n.pasted+"."+suffix,file.type=d;var u=function(){r.uploader.uploader.uploader.addFile(file)};r?(r.state().reset(),u()):(r=wp.media.editor.open(window.wpActiveEditor,{frame:"post",state:"insert",title:thepaste.l10n.copy_paste,multiple:!1}),r.close(),r.uploader.uploader&&r.uploader.uploader.ready?u():r.on("uploader:ready",u)),r.uploader.uploader.uploader.bind("UploadProgress",function(e){s.attr("data-progress",e.total.percent)}),r.uploader.uploader.uploader.bind("FileUploaded",function(t,a){var n='<img class="alignnone wp-image-'+a.attachment.id+' size-full" src="'+a.attachment.changed.url+'" />';s.replaceWith(n),i.$('img[src="'+l+'"]').each(function(){e(this).replaceWith(n)})}),r.uploader.uploader.uploader.bind("Error",function(e,t){console.log(e,t)})};"blob:"===l.substr(0,5)?(n=new XMLHttpRequest,n.responseType="blob",n.onreadystatechange=function(){var e;4==n.readyState&&(e=new FileReader,e.onload=function(){p(e.result)},e.readAsDataURL(n.response))},n.open("GET",l),n.send(null)):"data:"===l.substr(0,5)&&p(l)},clipboardHasImage:function(t){var a=!1;return t.items?(e.each(t.items,function(e,t){if(t.type in thepaste.options.mime_types.paste)return a=!0,!1}),a):t.types?(e.each(thepaste.options.mime_types.paste,function(e,i){if(t.types.indexOf(e)>-1)return a=!0,!1}),a):null}},thepaste)}(jQuery,wp.media),function(e,t){var a=wp.media.thepaste.l10n;e.extend(wp.Uploader.prototype,{success:function(e){}}),_.extend(wp.media.view.MediaFrame.Select.prototype,{_parentInitialize:wp.media.view.MediaFrame.Select.prototype.initialize,initialize:function(){this._parentInitialize.apply(this,arguments),this.bindPasteHandlers()},_parentBrowseRouter:wp.media.view.MediaFrame.Select.prototype.browseRouter,browseRouter:function(e){this._parentBrowseRouter.apply(this,arguments),wp.media.thepaste.supports.paste&&e.set({pasteboard:{text:a.copy_paste,priority:35}})},bindPasteHandlers:function(){var e=!1;this.on("content:render close",function(t){e&&"function"==typeof e.dismiss&&e.dismiss(),void 0!==t&&(e=t)},this),this.on("content:create:pasteboard",this.contentCreatePasteboard,this),this.on("content:render:pasteboard",this.contentRenderGrabber,this),frame=this},contentCreatePasteboard:function(e){this.state();this.currentPasteView=e.view=new wp.media.thepaste.view.DataSourceImageGrabber({controller:this,grabber:wp.media.thepaste.view.Pasteboard}),this.listenTo(this.currentPasteView.uploader,"action:uploaded:dataimage",this.uploadedDataImage)},contentRenderGrabber:function(e){e.startGrabbing()},uploadedDataImage:function(e){this.stopListening(this.currentPasteView.uploader,"action:uploaded:dataimage");var t={view:null};this.browseContent(t),this.content.set(t.view),this.router.get().select("browse")}}),_.extend(wp.media.view.AttachmentsBrowser.prototype,{_parentInitialize:wp.media.view.AttachmentsBrowser.prototype.initialize,initialize:function(){var e,t=this;this._parentInitialize.apply(this,arguments),this.thepaste={paste:{grabber:!1,modal:!1,mode:"paste"},current:!1},this.controller instanceof wp.media.view.MediaFrame.Select||wp.media.thepaste.supports.paste&&(e=new wp.media.view.Button({text:a.copy_paste,className:"grabber-button",priority:-64,click:function(){t.thepaste.active=t.thepaste.paste,t.thepasteOpen(a.copy_paste)}}),this.thepaste.paste.grabber=new wp.media.thepaste.view.DataSourceImageGrabber({controller:this.controller,grabber:wp.media.thepaste.view.Pasteboard,wpuploader:this.controller.uploader.uploader.uploader}),this.toolbar.set("pasteModeButton",e.render()))},thepasteUploaded:function(e){this.thepaste.active.grabber.dismiss(),this.thepaste.modal.close(),this.thepasteClose()},thepasteError:function(e){console.log("error",e)},thepasteOpen:function(e){var t=this;this.thepaste.modal=new wp.media.view.Modal({controller:this,title:e}),this.thepaste.modal.content(this.thepaste.active.grabber),this.thepaste.modal.open(),this.thepaste.modal.on("close",function(){t.thepasteClose.apply(t),t.thepaste.active.grabber.stopGrabbing()}),this.thepaste.active.grabber.startGrabbing(),this.listenTo(this.thepaste.active.grabber.uploader,"action:uploaded:dataimage",this.thepasteUploaded),this.listenTo(this.thepaste.active.grabber.uploader,"error:uploaded:dataimage",this.thepasteError)},thepasteClose:function(){this.controller.deactivateMode(this.thepaste.active.mode).activateMode("edit"),this.stopListening(this.thepaste.active.grabber.uploader,"action:uploaded:dataimage"),this.stopListening(this.thepaste.active.grabber.uploader,"error:uploaded:dataimage")}})}(jQuery,window),function(e,t,a){var i=wp.media.thepaste,n=(wp.media.view.Button,wp.media.view.Modal,i.l10n);wp.media.thepaste.view.DataSourceImageUploader=wp.media.View.extend({template:wp.template("thepaste-uploader"),className:"thepaste-uploader",controller:null,image:null,$discardBtn:null,$uploadBtn:null,uploader:null,events:{'click [data-action="upload"]':"uploadImage",'click [data-action="discard"]':"discardImage"},initialize:function(){wp.media.View.prototype.initialize.apply(this,arguments),_.defaults(this.options,{defaultFileName:n.image});new wp.media.View({tagName:"div",className:"instruments",controller:this.controller});this.uploader=this.options.uploder},setImageData:function(e){var t=this.$imageContainer.html("").get(0),n=this,r=e.match(/data:(image\/(\w+));/)[1];return i.options.mime_types.convert[r]||(r=this.options.defaultFileFormat),this.image&&this.image.destroy(),this.image=new a.Image,this.image.onload=function(){var e=n.getUploader().getOption("resize"),a=Math.max(e.width/this.width,e.height/this.height);!!e&&a<1&&this.downsize(this.width*a,this.height*a),this.embed(t)},this.image.load(e),this.$imageContainer&&this.$imageContainer.append(this.image),this.$('[data-setting="format"] input[value="'+r+'"]').prop("checked",!0),this.disabled(!1),this},render:function(){return wp.media.View.prototype.render.apply(this,arguments),this.$imageContainer=this.$(".image-container"),this.$discardBtn=this.$('[data-action="discard"]'),this.$uploadBtn=this.$('[data-action="upload"]'),this.$('[data-setting="title"]').val(this.options.defaultFileName),this},discardImage:function(){this.trigger("action:discard:dataimage",this),this.unbindUploaderEvents()},uploadImage:function(){var e=this.$('[data-setting="format"] :checked').val(),t=i.options.mime_types.convert[e],a=this.$('input[data-setting="title"]').val()+"."+t,n=this.image.getAsBlob(e,i.options.jpeg_quality);this.bindUploaderEvents(),n.detach(n.getSource()),n.name=a,n.type=e,this.getUploader().addFile(n,a),this.disabled(!0),this.trigger("action:upload:dataimage",this)},show:function(){return this.$el.show(),this},hide:function(){return this.$el.hide(),this},disabled:function(e){this.$discardBtn.prop("disabled",e),this.$uploadBtn.prop("disabled",e)},_uploadSuccessHandler:function(){this.trigger("action:uploaded:dataimage"),this.disabled(!1),this.unbindUploaderEvents()},_uploadErrorHandler:function(){this.trigger("error:uploaded:dataimage"),this.disabled(!1),this.unbindUploaderEvents()},bindUploaderEvents:function(){this.getUploader().bind("FileUploaded",this._uploadSuccessHandler,this),this.getUploader().bind("Error",this._uploadErrorHandler,this)},unbindUploaderEvents:function(){this.getUploader().unbind("FileUploaded",this._uploadSuccessHandler,this),this.getUploader().unbind("Error",this._uploadErrorHandler,this)},getUploader:function(){return this.controller.uploader.uploader.uploader}}),wp.media.thepaste.view.Pasteboard=wp.media.View.extend({template:wp.template("thepaste-pasteboard"),className:"thepaste-pasteboard",controller:null,action:"paste",$pasteboard:null,render:function(){var e=this;return wp.media.View.prototype.render.apply(this,arguments),this.$pasteboard=this.$(".injector").pastableContenteditable(),this.$message=this.$(".message"),this.$pasteboard.on("click",function(){e.show_message("")}),this},start:function(){var t,a=this;return this.imagePasted=!1,this.$pasteboard.on("paste",function(e){t=wp.media.thepaste.clipboardHasImage(e.originalEvent.clipboardData)}).on("pasteText",function(i,r){t||a.imagePasted||(a.show_message(n.paste_error_no_image),e(this).html(""))}).on("pasteImage",function(e,t){a.imagePasted||(a.trigger("action:create:dataimage",this,t.dataURL),a.imagePasted=!0)}).on("pasteImageError",function(t,i){a.show_message(n.paste_error),e(this).html("")}),setTimeout(function(){a.$pasteboard.get(0).focus()},1),this},stop:function(){return this.$pasteboard.off("pasteImage").off("pasteImageError").off("pasteText"),this},show:function(){return this.$el.show(),this},hide:function(){return this.$el.hide(),this},show_message:function(e){this.$message.text(e)}}),wp.media.thepaste.view.DataSourceImageGrabber=wp.media.View.extend({template:wp.template("thepaste-grabber"),className:"thepaste-grabber",grabber:null,uploader:null,initialize:function(){var e=wp.media.View.prototype.initialize.apply(this,arguments);return _.defaults(this.options,{wpuploader:null,defaultFileName:n.pasted,defaultFileFormat:"image/png",title:n.copy_paste}),this.grabber=new this.options.grabber({controller:this.controller}),this.uploader=new wp.media.thepaste.view.DataSourceImageUploader({controller:this.controller,uploder:this.options.wpuploader,defaultFileName:this.options.defaultFileName,defaultFileFormat:this.options.defaultFileFormat}),this.render(),this.listenTo(this.grabber,"action:create:dataimage",this.imageCreated),this.listenTo(this.uploader,"action:discard:dataimage",this.startGrabbing),e},render:function(){return wp.media.View.prototype.render.apply(this,arguments),this.$(".content").append(this.grabber.render().$el).append(this.uploader.render().$el),this},imageCreated:function(e,t){this.grabber.stop().hide(),this.uploader.show().setImageData(t)},startGrabbing:function(){return this.uploader.hide(),this.grabber.show().start(),this},stopGrabbing:function(){return this.grabber.stop(),this},getAction:function(){return this.grabber.action},dismiss:function(){return this.grabber.stop(),this}})}(jQuery,window,mOxie); 
    2 //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRoZS1wYXN0ZS5qcyJdLCJuYW1lcyI6WyIkIiwiUGFzdGUiLCJjcmVhdGVIaWRkZW5FZGl0YWJsZSIsImRhdGFVUkx0b0Jsb2IiLCJpc0ZvY3VzYWJsZSIsIndpbmRvdyIsImpRdWVyeSIsInBhc3RlIiwicGFzdGVDb250YWluZXIiLCJwbSIsImNvbnNvbGUiLCJsb2ciLCJtb3VudE5vbklucHV0YWJsZSIsIl9jb250YWluZXIiLCJmbiIsInBhc3RhYmxlTm9uSW5wdXRhYmxlIiwiZWwiLCJqIiwibGVuIiwicmVmIiwidGhpcyIsImxlbmd0aCIsIl9wYXN0YWJsZSIsImlzIiwicGFzdGFibGVUZXh0YXJlYSIsIm1vdW50VGV4dGFyZWEiLCJwYXN0YWJsZUNvbnRlbnRlZGl0YWJsZSIsIm1vdW50Q29udGVudGVkaXRhYmxlIiwiZGF0YVVSTCIsInNsaWNlU2l6ZSIsImI2NERhdGEiLCJieXRlQXJyYXkiLCJieXRlQXJyYXlzIiwiYnl0ZUNoYXJhY3RlcnMiLCJieXRlTnVtYmVycyIsImNvbnRlbnRUeXBlIiwiaSIsIm0iLCJvZmZzZXQiLCJzbGljZSIsIm1hdGNoIiwiYXRvYiIsIkFycmF5IiwiY2hhckNvZGVBdCIsIlVpbnQ4QXJyYXkiLCJwdXNoIiwiQmxvYiIsInR5cGUiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJhdHRyIiwiY3NzIiwid2lkdGgiLCJoZWlnaHQiLCJwb3NpdGlvbiIsImxlZnQiLCJvdmVyZmxvdyIsImVsZW1lbnQiLCJoYXNUYWJpbmRleCIsImZpZWxkc2V0IiwiZm9jdXNhYmxlSWZWaXNpYmxlIiwiaW1nIiwibWFwIiwibWFwTmFtZSIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJwYXJlbnROb2RlIiwibmFtZSIsImhyZWYiLCJ0ZXN0IiwiZGlzYWJsZWQiLCJjbG9zZXN0IiwiX3RhcmdldCIsImFkZENsYXNzIiwib24iLCJfdGhpcyIsImV2IiwiY2xpcGJvYXJkRGF0YSIsImZpbGUiLCJpdGVtIiwiayIsImxlbjEiLCJyZWFkZXIiLCJyZWYxIiwicmVmMiIsInJlZjMiLCJ0ZXh0IiwiY3VycmVudFRhcmdldCIsInRhcmdldCIsInByZXZlbnREZWZhdWx0IiwiX3Bhc3RlX2V2ZW50X2ZpcmVkIiwib3JpZ2luYWxFdmVudCIsIml0ZW1zIiwiRmlsZVJlYWRlciIsIm9ubG9hZCIsImV2ZW50IiwiX2hhbmRsZUltYWdlIiwicmVzdWx0IiwicmVhZEFzRGF0YVVSTCIsImdldEFzRmlsZSIsImVycm9yIiwiZ2V0QXNTdHJpbmciLCJzdHJpbmciLCJ0cmlnZ2VyIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImNhbGwiLCJ0eXBlcyIsImdldERhdGEiLCJzZXRUaW1lb3V0IiwiX2NoZWNrSW1hZ2VzSW5Db250YWluZXIiLCJzcmMiLCJmaWxlcyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIm5vbklucHV0YWJsZSIsImFwcGVuZFRvIiwiZm9jdXMiLCJyZW1vdmVDbGFzcyIsInRleHRhcmVhIiwiY3RsRG93biIsIkRhdGFUcmFuc2ZlciIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldCIsImluc2VydEJlZm9yZSIsImtleUNvZGUiLCJjdHJsS2V5IiwibWV0YUtleSIsIl90ZXh0YXJlYV9mb2N1c19zdG9sZW4iLCJkYXRhIiwiY29udGVudCIsImN1ckVuZCIsImN1clN0YXJ0IiwicHJvcCIsInZhbCIsInNldFNlbGVjdGlvblJhbmdlIiwiY29udGVudGVkaXRhYmxlIiwibG9hZGVyIiwibWVzc2FnZSIsIkltYWdlIiwiY3Jvc3NPcmlnaW4iLCJibG9iIiwiY2FudmFzIiwiY3R4IiwiZ2V0Q29udGV4dCIsImRyYXdJbWFnZSIsInRvRGF0YVVSTCIsIm9uZXJyb3IiLCJ1cmwiLCJjYiIsInRpbWVzcGFuIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwiZmluZCIsInJlbW92ZSIsImV4cG9ydHMiLCJjb3VudGVyIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwidGhlcGFzdGUiLCJleHRlbmQiLCJzdXBwb3J0cyIsInZpZXciLCJpbnNlcnRJbWFnZSIsImVkaXRvciIsImlkIiwiaW1hZ2VIdG1sIiwiaW5zZXJ0Q29udGVudCIsInVwbG9hZEltYWdlIiwiaW1hZ2UiLCJ4aHIiLCJ3b3JrZmxvdyIsIiRjb250YWluZXIiLCJ1cGxvYWQiLCJvIiwic3VmZml4Iiwib3B0aW9ucyIsIm1pbWVfdHlwZXMiLCJjb252ZXJ0Iiwid3JhcCIsImwxMG4iLCJwYXN0ZWQiLCJhZGRGaWxlIiwidXBsb2FkZXIiLCJzdGF0ZSIsInJlc2V0Iiwid3AiLCJtZWRpYSIsIm9wZW4iLCJ3cEFjdGl2ZUVkaXRvciIsImZyYW1lIiwidGl0bGUiLCJjb3B5X3Bhc3RlIiwibXVsdGlwbGUiLCJjbG9zZSIsInJlYWR5IiwiYmluZCIsImUiLCJ0b3RhbCIsInBlcmNlbnQiLCJ1cCIsImFyZ3MiLCJpbWdIVE1MIiwiYXR0YWNobWVudCIsImNoYW5nZWQiLCJyZXBsYWNlV2l0aCIsImVhY2giLCJzdWJzdHIiLCJYTUxIdHRwUmVxdWVzdCIsInJlc3BvbnNlVHlwZSIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJyZXNwb25zZSIsInNlbmQiLCJjbGlwYm9hcmRIYXNJbWFnZSIsImhhc0ltYWdlIiwiZXh0IiwiVXBsb2FkZXIiLCJzdWNjZXNzIiwiZmlsZV9hdHRhY2htZW50IiwiXyIsIk1lZGlhRnJhbWUiLCJTZWxlY3QiLCJfcGFyZW50SW5pdGlhbGl6ZSIsImluaXRpYWxpemUiLCJhcHBseSIsImFyZ3VtZW50cyIsImJpbmRQYXN0ZUhhbmRsZXJzIiwiX3BhcmVudEJyb3dzZVJvdXRlciIsImJyb3dzZVJvdXRlciIsInNldCIsInBhc3RlYm9hcmQiLCJwcmlvcml0eSIsInByZXZpb3VzQ29udGVudCIsImRpc21pc3MiLCJjb250ZW50Q3JlYXRlUGFzdGVib2FyZCIsImNvbnRlbnRSZW5kZXJHcmFiYmVyIiwiY3VycmVudFBhc3RlVmlldyIsIkRhdGFTb3VyY2VJbWFnZUdyYWJiZXIiLCJjb250cm9sbGVyIiwiZ3JhYmJlciIsIlBhc3RlYm9hcmQiLCJsaXN0ZW5UbyIsInVwbG9hZGVkRGF0YUltYWdlIiwic3RhcnRHcmFiYmluZyIsInN0b3BMaXN0ZW5pbmciLCJvYmoiLCJicm93c2VDb250ZW50Iiwicm91dGVyIiwic2VsZWN0IiwiQXR0YWNobWVudHNCcm93c2VyIiwicGFzdGVCdG4iLCJzZWxmIiwibW9kYWwiLCJtb2RlIiwiY3VycmVudCIsIkJ1dHRvbiIsImNsYXNzTmFtZSIsImNsaWNrIiwiYWN0aXZlIiwidGhlcGFzdGVPcGVuIiwid3B1cGxvYWRlciIsInRvb2xiYXIiLCJyZW5kZXIiLCJ0aGVwYXN0ZVVwbG9hZGVkIiwidGhlcGFzdGVDbG9zZSIsInRoZXBhc3RlRXJyb3IiLCJNb2RhbCIsInN0b3BHcmFiYmluZyIsImRlYWN0aXZhdGVNb2RlIiwiYWN0aXZhdGVNb2RlIiwiRGF0YVNvdXJjZUltYWdlVXBsb2FkZXIiLCJWaWV3IiwidGVtcGxhdGUiLCIkZGlzY2FyZEJ0biIsIiR1cGxvYWRCdG4iLCJldmVudHMiLCJjbGljayBbZGF0YS1hY3Rpb249XCJ1cGxvYWRcIl0iLCJjbGljayBbZGF0YS1hY3Rpb249XCJkaXNjYXJkXCJdIiwiZGVmYXVsdHMiLCJkZWZhdWx0RmlsZU5hbWUiLCJ0YWdOYW1lIiwidXBsb2RlciIsInNldEltYWdlRGF0YSIsImNvbnRhaW5lciIsIiRpbWFnZUNvbnRhaW5lciIsImh0bWwiLCJmb3JtYXQiLCJkZWZhdWx0RmlsZUZvcm1hdCIsImRlc3Ryb3kiLCJvcHRzIiwiZ2V0VXBsb2FkZXIiLCJnZXRPcHRpb24iLCJzY2FsZSIsIm1heCIsImRvd25zaXplIiwiZW1iZWQiLCJsb2FkIiwiYXBwZW5kIiwiZGlzY2FyZEltYWdlIiwidW5iaW5kVXBsb2FkZXJFdmVudHMiLCJnZXRBc0Jsb2IiLCJqcGVnX3F1YWxpdHkiLCJiaW5kVXBsb2FkZXJFdmVudHMiLCJkZXRhY2giLCJnZXRTb3VyY2UiLCJzaG93IiwiJGVsIiwiaGlkZSIsIl91cGxvYWRTdWNjZXNzSGFuZGxlciIsIl91cGxvYWRFcnJvckhhbmRsZXIiLCJ1bmJpbmQiLCJhY3Rpb24iLCIkcGFzdGVib2FyZCIsIiRtZXNzYWdlIiwic2hvd19tZXNzYWdlIiwic3RhcnQiLCJpbWFnZVBhc3RlZCIsInBhc3RlX2Vycm9yX25vX2ltYWdlIiwicGFzdGVfZXJyb3IiLCJzdG9wIiwib2ZmIiwibXNnIiwicmV0IiwiaW1hZ2VDcmVhdGVkIiwiaW1hZ2VEYXRhIiwiZ2V0QWN0aW9uIiwibU94aWUiXSwibWFwcGluZ3MiOiJDQVFBLFdBQ0UsR0FBSUEsR0FBR0MsRUFBT0MsRUFBc0JDLEVBQWVDLENBRW5ESixHQUFJSyxPQUFPQyxPQUVYTixFQUFFTyxNQUFRLFNBQVNDLEdBQ2pCLEdBQUlDLEVBS0osT0FKdUIsbUJBQVpDLFVBQXVDLE9BQVpBLFNBQ3BDQSxRQUFRQyxJQUFJLDBGQUVkRixFQUFLUixFQUFNVyxrQkFBa0JKLEdBQ3RCQyxFQUFHSSxZQUdaYixFQUFFYyxHQUFHQyxxQkFBdUIsV0FDMUIsR0FBSUMsR0FBSUMsRUFBR0MsRUFBS0MsQ0FFaEIsS0FEQUEsRUFBTUMsS0FDREgsRUFBSSxFQUFHQyxFQUFNQyxFQUFJRSxPQUFRSixFQUFJQyxFQUFLRCxJQUNyQ0QsRUFBS0csRUFBSUYsR0FDTEQsRUFBR00sV0FBYXRCLEVBQUVnQixHQUFJTyxHQUFHLDZDQUc3QnRCLEVBQU1XLGtCQUFrQkksR0FDeEJBLEVBQUdNLFdBQVksRUFFakIsT0FBT0YsT0FHVHBCLEVBQUVjLEdBQUdVLGlCQUFtQixXQUN0QixHQUFJUixHQUFJQyxFQUFHQyxFQUFLQyxDQUVoQixLQURBQSxFQUFNQyxLQUNESCxFQUFJLEVBQUdDLEVBQU1DLEVBQUlFLE9BQVFKLEVBQUlDLEVBQUtELElBQ3JDRCxFQUFLRyxFQUFJRixHQUNMRCxFQUFHTSxXQUFhdEIsRUFBRWdCLEdBQUlPLEdBQUcsZ0NBRzdCdEIsRUFBTXdCLGNBQWNULEdBQ3BCQSxFQUFHTSxXQUFZLEVBRWpCLE9BQU9GLE9BR1RwQixFQUFFYyxHQUFHWSx3QkFBMEIsV0FDN0IsR0FBSVYsR0FBSUMsRUFBR0MsRUFBS0MsQ0FFaEIsS0FEQUEsRUFBTUMsS0FDREgsRUFBSSxFQUFHQyxFQUFNQyxFQUFJRSxPQUFRSixFQUFJQyxFQUFLRCxJQUNyQ0QsRUFBS0csRUFBSUYsR0FDTEQsRUFBR00sV0FBYXRCLEVBQUVnQixHQUFJTyxHQUFHLDZCQUc3QnRCLEVBQU0wQixxQkFBcUJYLEdBQzNCQSxFQUFHTSxXQUFZLEVBRWpCLE9BQU9GLE9BR1RqQixFQUFnQixTQUFTeUIsRUFBU0MsR0FDaEMsR0FBSUMsR0FBU0MsRUFBV0MsRUFBWUMsRUFBZ0JDLEVBQWFDLEVBQWFDLEVBQUdDLEVBQUdDLEVBQVFuQixFQUFLb0IsQ0FJakcsSUFIaUIsTUFBYlYsSUFDRkEsRUFBWSxPQUVSUSxFQUFJVCxFQUFRWSxNQUFNLG1DQUN0QixNQUFPLEtBTVQsS0FKQXJCLEVBQU1rQixFQUFHQSxFQUFJbEIsRUFBSSxHQUFJZ0IsRUFBY2hCLEVBQUksR0FBSVcsRUFBVVgsRUFBSSxHQUN6RGMsRUFBaUJRLEtBQUtYLEdBQ3RCRSxLQUNBTSxFQUFTLEVBQ0ZBLEVBQVNMLEVBQWVaLFFBQVEsQ0FJckMsSUFIQWtCLEVBQVFOLEVBQWVNLE1BQU1ELEVBQVFBLEVBQVNULEdBQzlDSyxFQUFjLEdBQUlRLE9BQU1ILEVBQU1sQixRQUM5QmUsRUFBSSxFQUNHQSxFQUFJRyxFQUFNbEIsUUFDZmEsRUFBWUUsR0FBS0csRUFBTUksV0FBV1AsR0FDbENBLEdBRUZMLEdBQVksR0FBSWEsWUFBV1YsR0FDM0JGLEVBQVdhLEtBQUtkLEdBQ2hCTyxHQUFVVCxFQUVaLE1BQU8sSUFBSWlCLE1BQUtkLEdBQ2RlLEtBQU1aLEtBSVZqQyxFQUF1QixXQUNyQixNQUFPRixHQUFFZ0QsU0FBU0MsY0FBYyxRQUFRQyxLQUFLLG1CQUFtQixHQUFNQSxLQUFLLGVBQWUsR0FBTUEsS0FBSyxZQUFhLEdBQUdDLEtBQ25IQyxNQUFPLEVBQ1BDLE9BQVEsRUFDUkMsU0FBVSxRQUNWQyxNQUFPLElBQ1BDLFNBQVUsWUFJZHBELEVBQWMsU0FBU3FELEVBQVNDLEdBQzlCLEdBQUlDLEdBQVVDLEVBQW9CQyxFQUFLQyxFQUFLQyxFQUFTQyxDQU9yRCxPQU5BRixPQUFNLEdBQ05DLE1BQVUsR0FDVkYsTUFBTSxHQUNORCxNQUFxQixHQUNyQkQsTUFBVyxHQUVQLFVBREpLLEVBQVdQLEVBQVFPLFNBQVNDLGdCQUUxQkgsRUFBTUwsRUFBUVMsV0FDZEgsRUFBVUQsRUFBSUssUUFDVFYsRUFBUVcsT0FBU0wsR0FBMEMsUUFBL0JELEVBQUlFLFNBQVNDLGlCQUc5Q0osRUFBTTdELEVBQUUsZ0JBQW1CK0QsRUFBVSxNQUM5QkYsRUFBSXhDLE9BQVMsR0FBS3dDLEVBQUl0QyxHQUFHLGVBRTlCLDBDQUEwQzhDLEtBQUtMLElBQ2pESixHQUFzQkgsRUFBUWEsWUFFNUJYLEVBQVczRCxFQUFFeUQsR0FBU2MsUUFBUSxZQUFZLE1BRXhDWCxHQUFzQkQsRUFBU1csVUFJbkNWLEVBRFMsTUFBUUksRUFDSVAsRUFBUVcsTUFBUVYsRUFFaEJBLEdBRXZCRSxFQUFxQkEsR0FBc0I1RCxFQUFFeUQsR0FBU2xDLEdBQUcsdUJBQzVCdkIsRUFBRXlELEdBQVNsQyxHQUFHLGNBRzdDdEIsRUFBUSxXQW1ITixRQUFTQSxHQUFNWSxFQUFZMkQsR0FDekJwRCxLQUFLUCxXQUFhQSxFQUNsQk8sS0FBS29ELFFBQVVBLEVBQ2ZwRCxLQUFLUCxXQUFhYixFQUFFb0IsS0FBS1AsWUFDekJPLEtBQUtvRCxRQUFVeEUsRUFBRW9CLEtBQUtvRCxTQUFTQyxTQUFTLFlBQ3hDckQsS0FBS1AsV0FBVzZELEdBQUcsUUFBUyxTQUFVQyxHQUNwQyxNQUFPLFVBQVNDLEdBQ2QsR0FBSUMsR0FBZUMsRUFBTUMsRUFBTTlELEVBQUcrRCxFQUFHOUQsRUFBSytELEVBQU1DLEVBQVEvRCxFQUFLZ0UsRUFBTUMsRUFBTUMsRUFBTUMsQ0FDL0UsSUFBSVYsRUFBR1csZ0JBQWtCWCxFQUFHWSxPQUMxQixNQUFPWixHQUFHYSxnQkFHWixJQURBZCxFQUFNZSxvQkFBcUIsRUFDNEMsT0FBdEMsT0FBM0J2RSxFQUFNeUQsRUFBR2UsZUFBeUJ4RSxFQUFJMEQsa0JBQWdCLElBRTFELEdBREFBLEVBQWdCRCxFQUFHZSxjQUFjZCxjQUM3QkEsRUFBY2UsTUFFaEIsSUFEQVQsRUFBT04sRUFBY2UsTUFDaEIzRSxFQUFJLEVBQUdDLEVBQU1pRSxFQUFLOUQsT0FBUUosRUFBSUMsRUFBS0QsSUFBSyxDQUUzQyxHQURBOEQsRUFBT0ksRUFBS2xFLEdBQ1I4RCxFQUFLaEMsS0FBS1AsTUFBTSxZQUFhLENBQy9CMEMsRUFBUyxHQUFJVyxZQUNiWCxFQUFPWSxPQUFTLFNBQVNDLEdBQ3ZCLE1BQU9wQixHQUFNcUIsYUFBYUQsRUFBTVAsT0FBT1MsUUFFekMsS0FDRWYsRUFBT2dCLGNBQWNuQixFQUFLb0IsYUFDMUIsTUFBT0MsSUFDVHhCLEVBQUdhLGdCQUNILE9BRWdCLGVBQWRWLEVBQUtoQyxNQUNQZ0MsRUFBS3NCLFlBQVksU0FBU0MsR0FDeEIsTUFBTzNCLEdBQU1ILFFBQVErQixRQUFRLGFBQzNCakIsS0FBTWdCLFdBTVQsSUFBTTVELE1BQU04RCxVQUFVQyxRQUFRQyxLQUFLN0IsRUFBYzhCLE1BQU8sZ0JBQzNEckIsRUFBT1QsRUFBYytCLFFBQVEsUUFDN0JDLFdBQVcsV0FDVCxNQUFPbEMsR0FBTUgsUUFBUStCLFFBQVEsYUFDM0JqQixLQUFNQSxLQUVQLElBRUxYLEVBQU1tQyx3QkFBd0IsU0FBU0MsR0FDckMsTUFBT3BDLEdBQU1xQixhQUFhZSxJQUloQyxJQUFJbEMsRUFBZ0J4RSxPQUFPd0UsY0FDekIsR0FBdUQsT0FBbERPLEVBQVFFLEVBQU9ULEVBQWMrQixRQUFRLFNBQW9CeEIsRUFBSy9ELFdBQVMsR0FDMUV3RixXQUFXLFdBSVQsTUFIQWxDLEdBQU1ILFFBQVErQixRQUFRLGFBQ3BCakIsS0FBTUEsSUFFRFgsRUFBTUgsUUFBUStCLFFBQVEsNkJBQzVCLE9BQ0UsQ0FFTCxJQURBbEIsRUFBT1IsRUFBY21DLE1BQ2hCaEMsRUFBSSxFQUFHQyxFQUFPSSxFQUFLaEUsT0FBUTJELEVBQUlDLEVBQU1ELElBQ3hDRixFQUFPTyxFQUFLTCxHQUNaTCxFQUFNcUIsYUFBYWlCLElBQUlDLGdCQUFnQnBDLEdBRXpDSCxHQUFNbUMsd0JBQXdCLFNBQVNDLE1BRzNDLE1BQU8sUUFFUjNGLE9BeUVMLE1BalFBbkIsR0FBTXVHLFVBQVVoQyxRQUFVLEtBRTFCdkUsRUFBTXVHLFVBQVUzRixXQUFhLEtBRTdCWixFQUFNVyxrQkFBb0IsU0FBU3VHLEdBQ2pDLEdBQUk1RyxFQWNKLE9BYkFBLEdBQVEsR0FBSU4sR0FBTUMsSUFBdUJrSCxTQUFTRCxHQUFlQSxHQUNqRW5ILEVBQUVtSCxHQUFjekMsR0FBRyxRQUFTLFNBQVVDLEdBQ3BDLE1BQU8sVUFBU0MsR0FDZCxJQUFLeEUsRUFBWXdFLEVBQUdZLFFBQVEsR0FDMUIsTUFBT2pGLEdBQU1NLFdBQVd3RyxhQUk5QjlHLEVBQU1NLFdBQVc2RCxHQUFHLFFBQVMsU0FBVUMsR0FDckMsTUFBTyxZQUNMLE1BQU8zRSxHQUFFbUgsR0FBYzFDLFNBQVMsdUJBRzdCbEUsRUFBTU0sV0FBVzZELEdBQUcsT0FBUSxTQUFVQyxHQUMzQyxNQUFPLFlBQ0wsTUFBTzNFLEdBQUVtSCxHQUFjRyxZQUFZLHdCQUt6Q3JILEVBQU13QixjQUFnQixTQUFTOEYsR0FDN0IsR0FBSUMsR0FBU2pILEVBQU9ZLEVBQUtnRSxDQUN6QixRQUE2QixtQkFBakJzQyxlQUFpRCxPQUFqQkEsYUFBd0JBLGFBQWFqQixjQUFZLE1BQXVELE9BQTFDckYsRUFBTXVHLE9BQU9DLDJCQUFrRyxPQUE3RHhDLEVBQU9oRSxFQUFJdUYsS0FBS2dCLE9BQVFELGFBQWFqQixVQUFXLFVBQW9CckIsRUFBS3lDLFFBQWUsSUFDM094RyxLQUFLTyxxQkFBcUI0RixJQUVuQ2hILEVBQVEsR0FBSU4sR0FBTUMsSUFBdUIySCxhQUFhTixHQUFXQSxHQUNqRUMsR0FBVSxFQUNWeEgsRUFBRXVILEdBQVU3QyxHQUFHLFFBQVMsU0FBU0UsR0FDL0IsR0FBSVEsRUFJSixPQUg0QixPQUF2QkEsRUFBT1IsRUFBR2tELFVBQTRCLE1BQVQxQyxJQUNoQ29DLEdBQVUsR0FFTCxPQUVUeEgsRUFBRXVILEdBQVU3QyxHQUFHLFVBQVcsU0FBU0UsR0FDakMsR0FBSVEsRUFvQkosT0FuQjRCLE9BQXZCQSxFQUFPUixFQUFHa0QsVUFBNEIsTUFBVDFDLElBQ2hDb0MsR0FBVSxHQUVPLE1BQWQ1QyxFQUFHbUQsU0FBbUMsTUFBZG5ELEVBQUdvRCxVQUM5QlIsRUFBVTVDLEVBQUdtRCxTQUFXbkQsRUFBR29ELFNBRXpCUixHQUEwQixLQUFmNUMsRUFBR2tELFVBQ2hCdkgsRUFBTTBILHdCQUF5QixFQUMvQjFILEVBQU1NLFdBQVd3RyxRQUNqQjlHLEVBQU1tRixvQkFBcUIsRUFDM0JtQixXQUFXLFNBQVVsQyxHQUNuQixNQUFPLFlBQ0wsSUFBS3BFLEVBQU1tRixtQkFFVCxNQURBMUYsR0FBRXVILEdBQVVGLFFBQ0w5RyxFQUFNMEgsd0JBQXlCLE1BR2xDLElBRUwsT0FFVGpJLEVBQUV1SCxHQUFVN0MsR0FBRyxRQUFTLFNBQVVDLEdBQ2hDLE1BQU8sa0JBRVQzRSxFQUFFdUgsR0FBVTdDLEdBQUcsUUFBUyxTQUFVQyxHQUNoQyxNQUFPLFlBQ0wsSUFBS3BFLEVBQU0wSCx1QkFDVCxNQUFPakksR0FBRXVILEdBQVU5QyxTQUFTLHVCQUlsQ3pFLEVBQUV1SCxHQUFVN0MsR0FBRyxPQUFRLFNBQVVDLEdBQy9CLE1BQU8sWUFDTCxJQUFLcEUsRUFBTTBILHVCQUNULE1BQU9qSSxHQUFFdUgsR0FBVUQsWUFBWSx1QkFJckN0SCxFQUFFTyxFQUFNaUUsU0FBU0UsR0FBRywyQkFBNEIsU0FBVUMsR0FDeEQsTUFBTyxZQUVMLE1BREEzRSxHQUFFdUgsR0FBVUYsUUFDTDlHLEVBQU0wSCx3QkFBeUIsT0FHbkNqSSxFQUFFTyxFQUFNaUUsU0FBU0UsR0FBRyxZQUFhLFNBQVVDLEdBQ2hELE1BQU8sVUFBU0MsRUFBSXNELEdBQ2xCLEdBQUlDLEdBQVNDLEVBQVFDLENBTXJCLE9BTEFBLEdBQVdySSxFQUFFdUgsR0FBVWUsS0FBSyxrQkFDNUJGLEVBQVNwSSxFQUFFdUgsR0FBVWUsS0FBSyxnQkFDMUJILEVBQVVuSSxFQUFFdUgsR0FBVWdCLE1BQ3RCdkksRUFBRXVILEdBQVVnQixJQUFJLEdBQUtKLEVBQVE1RixNQUFNLEVBQUc4RixHQUFZSCxFQUFLNUMsS0FBTzZDLEVBQVE1RixNQUFNNkYsSUFDNUVwSSxFQUFFdUgsR0FBVSxHQUFHaUIsa0JBQWtCSCxFQUFXSCxFQUFLNUMsS0FBS2pFLE9BQVFnSCxFQUFXSCxFQUFLNUMsS0FBS2pFLFFBQzVFckIsRUFBRXVILEdBQVVoQixRQUFRLGlCQUtqQ3RHLEVBQU0wQixxQkFBdUIsU0FBUzhHLEdBUXBDLE1BTlEsSUFBSXhJLEdBQU13SSxFQUFpQkEsR0FDbkN6SSxFQUFFeUksR0FBaUIvRCxHQUFHLFFBQVMsU0FBVUMsR0FDdkMsTUFBTyxZQUNMLE1BQU8zRSxHQUFFeUksR0FBaUJoRSxTQUFTLHVCQUdoQ3pFLEVBQUV5SSxHQUFpQi9ELEdBQUcsT0FBUSxTQUFVQyxHQUM3QyxNQUFPLFlBQ0wsTUFBTzNFLEdBQUV5SSxHQUFpQm5CLFlBQVksd0JBOEU1Q3JILEVBQU11RyxVQUFVUixhQUFlLFNBQVNlLEdBQ3RDLEdBQUkyQixFQUNKLE9BQUkzQixHQUFJdkUsTUFBTSw0QkFDTHBCLEtBQUtvRCxRQUFRK0IsUUFBUSxtQkFDMUJvQyxRQUFTLDRGQUdidkgsS0FBS29ELFFBQVErQixRQUFRLG1CQUNyQm1DLEVBQVMsR0FBSUUsT0FDYkYsRUFBT0csWUFBYyxZQUNyQkgsRUFBTzVDLE9BQVMsU0FBVW5CLEdBQ3hCLE1BQU8sWUFDTCxHQUFJbUUsR0FBTUMsRUFBUUMsRUFBS3BILENBQ3ZCbUgsR0FBUy9GLFNBQVNDLGNBQWMsVUFDaEM4RixFQUFPM0YsTUFBUXNGLEVBQU90RixNQUN0QjJGLEVBQU8xRixPQUFTcUYsRUFBT3JGLE9BQ3ZCMkYsRUFBTUQsRUFBT0UsV0FBVyxNQUN4QkQsRUFBSUUsVUFBVVIsRUFBUSxFQUFHLEVBQUdLLEVBQU8zRixNQUFPMkYsRUFBTzFGLFFBQ2pEekIsRUFBVSxJQUNWLEtBQ0VBLEVBQVVtSCxFQUFPSSxVQUFVLGFBQzNCTCxFQUFPM0ksRUFBY3lCLEdBQ3JCLE1BQU93RSxJQVNULE1BUkl4RSxJQUNGK0MsRUFBTUgsUUFBUStCLFFBQVEsY0FDcEJ1QyxLQUFNQSxFQUNObEgsUUFBU0EsRUFDVHdCLE1BQU9zRixFQUFPdEYsTUFDZEMsT0FBUXFGLEVBQU9yRixTQUdac0IsRUFBTUgsUUFBUStCLFFBQVEsbUJBRTlCbkYsTUFDSHNILEVBQU9VLFFBQVUsU0FBVXpFLEdBQ3pCLE1BQU8sWUFLTCxNQUpBQSxHQUFNSCxRQUFRK0IsUUFBUSxtQkFDcEJvQyxRQUFTLDZCQUErQjVCLEVBQ3hDc0MsSUFBS3RDLElBRUFwQyxFQUFNSCxRQUFRK0IsUUFBUSxtQkFFOUJuRixNQUNJc0gsRUFBTzNCLElBQU1BLElBR3RCOUcsRUFBTXVHLFVBQVVNLHdCQUEwQixTQUFTd0MsR0FDakQsR0FBSXpGLEdBQUs1QyxFQUFHQyxFQUFLQyxFQUFLb0ksQ0FHdEIsS0FGQUEsRUFBV0MsS0FBS0MsTUFBTSxJQUFPRCxLQUFLRSxVQUNsQ3ZJLEVBQU1DLEtBQUtQLFdBQVc4SSxLQUFLLE9BQ3RCMUksRUFBSSxFQUFHQyxFQUFNQyxFQUFJRSxPQUFRSixFQUFJQyxFQUFLRCxJQUNyQzRDLEVBQU0xQyxFQUFJRixHQUNWNEMsRUFBSSxpQkFBbUIwRixJQUFZLENBRXJDLE9BQU8xQyxZQUFXLFNBQVVsQyxHQUMxQixNQUFPLFlBQ0wsR0FBSUssR0FBR0MsRUFBTUUsQ0FFYixLQURBQSxFQUFPUixFQUFNOUQsV0FBVzhJLEtBQUssT0FDeEIzRSxFQUFJLEVBQUdDLEVBQU9FLEVBQUs5RCxPQUFRMkQsRUFBSUMsRUFBTUQsSUFDeENuQixFQUFNc0IsRUFBS0gsR0FDTm5CLEVBQUksaUJBQW1CMEYsS0FDMUJELEVBQUd6RixFQUFJa0QsS0FDUC9HLEVBQUU2RCxHQUFLK0YsU0FHWCxPQUFPakYsR0FBTUgsUUFBUStCLFFBQVEsOEJBRTlCbkYsTUFBTyxJQUdMbkIsT0FJUnlHLEtBQUt0RixNQUVSLFNBQVVwQixFQUFFNkosR0FFWCxHQUNDQyxJQURlQyxVQUFVQyxVQUFVdkQsUUFBUSxVQUNqQyxFQUdYd0QsVUFBV0osRUFBUUksU0FBV2pLLEVBQUVrSyxRQUMvQkMsVUFDQzVKLE1BQVUsU0FBV3lDLFdBQWMsV0FBYUEsV0FBd0MsZ0JBQXBCM0MsUUFBYyxTQUFvQixXQUFhMkMsVUFBU0MsY0FBYyxRQUUzSW1ILFFBRUFDLFlBQVksU0FBVXpJLEVBQVNtQixFQUFNdUgsR0FDcEMsR0FBSUMsR0FBSyxrQkFBbUJULElBQzNCVSxFQUFZLFlBQVlELEVBQUcsc0NBQXNDM0ksRUFBUSxNQU0xRSxPQUZBMEksR0FBT0csY0FBZUQsR0FFZkYsRUFBT3RLLEVBQUUsSUFBSXVLLEdBQUksSUFHekJHLFlBQWEsU0FBVUMsRUFBT0wsR0FFN0IsR0FBSU0sR0FDSEMsRUFDQUMsRUFDQS9ELEVBQU00RCxFQUFNNUQsSUFDWmdFLEVBQVMsU0FBVW5KLEdBQ2xCLEdBQUkySSxHQUFLLGtCQUFtQlQsSUFDM0IvRyxFQUFPbkIsRUFBUVksTUFBTSxxQkFBcUIsRUFDMUNzQyxNQUFPLEdBQUlrRyxHQUFFbEksS0FBTSxNQUFRb0YsS0FBTXRHLElBQ2pDcUosT0FBU2hCLFNBQVNpQixRQUFRQyxXQUFXQyxRQUFTckksR0FFL0MvQyxFQUFFMkssR0FBT1UsS0FBSyxZQUFZZCxFQUFHLHlGQUM3Qk8sRUFBYVIsRUFBT3RLLEVBQUUsSUFBSXVLLEdBRTFCekYsS0FBS1gsS0FBTzhGLFNBQVNxQixLQUFLQyxPQUFTLElBQU1OLE9BQ3pDbkcsS0FBSy9CLEtBQU9BLENBRVosSUFBSXlJLEdBQVUsV0FDYlgsRUFBU1ksU0FBU0EsU0FBU0EsU0FBU0QsUUFBUzFHLE1BRXZDK0YsSUFnQk5BLEVBQVNhLFFBQVFDLFFBQ2pCSCxNQWhCQVgsRUFBV2UsR0FBR0MsTUFBTXZCLE9BQU93QixLQUFNekwsT0FBTzBMLGdCQUN2Q0MsTUFBUSxPQUNSTixNQUFRLFNBQ1JPLE1BQVFoQyxTQUFTcUIsS0FBS1ksV0FDdEJDLFVBQVUsSUFHWHRCLEVBQVN1QixRQUVKdkIsRUFBU1ksU0FBU0EsVUFBWVosRUFBU1ksU0FBU0EsU0FBU1ksTUFDN0RiLElBRUFYLEVBQVNuRyxHQUFJLGlCQUFrQjhHLElBTWpDWCxFQUFTWSxTQUFTQSxTQUFTQSxTQUFTYSxLQUFLLGlCQUFpQixTQUFVQyxHQUNuRXpCLEVBQVc1SCxLQUFLLGdCQUFnQnFKLEVBQUVDLE1BQU1DLFdBRXpDNUIsRUFBU1ksU0FBU0EsU0FBU0EsU0FBU2EsS0FBSyxlQUFlLFNBQVVJLEVBQUlDLEdBQ3JFLEdBQUlDLEdBQVUsa0NBQWtDRCxFQUFLRSxXQUFXdEMsR0FBRyxvQkFBb0JvQyxFQUFLRSxXQUFXQyxRQUFRekQsSUFBSSxNQUVuSHlCLEdBQVdpQyxZQUFhSCxHQUV4QnRDLEVBQU90SyxFQUFFLFlBQVkrRyxFQUFJLE1BQU1pRyxLQUFLLFdBQ25DaE4sRUFBRW9CLE1BQU0yTCxZQUFhSCxPQUd2Qi9CLEVBQVNZLFNBQVNBLFNBQVNBLFNBQVNhLEtBQUssUUFBUSxTQUFVSSxFQUFJQyxHQUM5RGpNLFFBQVFDLElBQUkrTCxFQUFHQyxLQUlPLFdBQXBCNUYsRUFBSWtHLE9BQU8sRUFBRSxJQUVqQnJDLEVBQU0sR0FBSXNDLGdCQUNWdEMsRUFBSXVDLGFBQWUsT0FDbkJ2QyxFQUFJd0MsbUJBQXFCLFdBQ3hCLEdBQUlsSSxFQUNtQixJQUFsQjBGLEVBQUl5QyxhQUNSbkksRUFBUyxHQUFJVyxZQUNiWCxFQUFPWSxPQUFTLFdBRWZpRixFQUFRN0YsRUFBT2UsU0FHaEJmLEVBQU9nQixjQUFlMEUsRUFBSTBDLFlBRzVCMUMsRUFBSWtCLEtBQU0sTUFBTy9FLEdBQ2pCNkQsRUFBSTJDLEtBQU0sT0FFcUIsVUFBcEJ4RyxFQUFJa0csT0FBTyxFQUFFLElBRXhCbEMsRUFBUWhFLElBU1Z5RyxrQkFBa0IsU0FBVTNJLEdBQzNCLEdBQUk0SSxJQUFXLENBQ2YsT0FBSzVJLEdBQWNlLE9BQ2xCNUYsRUFBRWdOLEtBQU1uSSxFQUFjZSxNQUFPLFNBQVN4RCxFQUFFMkMsR0FDdkMsR0FBS0EsRUFBS2hDLE9BQVFrSCxVQUFTaUIsUUFBUUMsV0FBVzVLLE1BRTdDLE1BREFrTixJQUFXLEdBQ0osSUFHRkEsR0FHSDVJLEVBQWM4QixPQUNsQjNHLEVBQUVnTixLQUFNL0MsU0FBU2lCLFFBQVFDLFdBQVc1SyxNQUFPLFNBQVN3QyxFQUFLMkssR0FDeEQsR0FBSzdJLEVBQWM4QixNQUFNRixRQUFRMUQsSUFBUyxFQUV6QyxNQURBMEssSUFBVyxHQUNKLElBR0ZBLEdBRUQsT0FJTnhELFdBRUEzSixPQUFRc0wsR0FBR0MsT0FHZixTQUFVN0wsRUFBRTZKLEdBRVgsR0FDQ3lCLEdBQU9NLEdBQUdDLE1BQU01QixTQUFTcUIsSUFFMUJ0TCxHQUFFa0ssT0FBUTBCLEdBQUcrQixTQUFTbkgsV0FDckJvSCxRQUFVLFNBQVVDLE9BU3JCQyxFQUFFNUQsT0FBUTBCLEdBQUdDLE1BQU16QixLQUFLMkQsV0FBV0MsT0FBT3hILFdBQ3pDeUgsa0JBQW1CckMsR0FBR0MsTUFBTXpCLEtBQUsyRCxXQUFXQyxPQUFPeEgsVUFBVTBILFdBQzdEQSxXQUFZLFdBQ1g5TSxLQUFLNk0sa0JBQWtCRSxNQUFPL00sS0FBTWdOLFdBQ3BDaE4sS0FBS2lOLHFCQUVOQyxvQkFBcUIxQyxHQUFHQyxNQUFNekIsS0FBSzJELFdBQVdDLE9BQU94SCxVQUFVK0gsYUFDL0RBLGFBQWUsU0FBVW5FLEdBQ3hCaEosS0FBS2tOLG9CQUFvQkgsTUFBTS9NLEtBQUtnTixXQUUvQnhDLEdBQUdDLE1BQU01QixTQUFTRSxTQUFTNUosT0FDL0I2SixFQUFLb0UsS0FBS0MsWUFDVG5KLEtBQVVnRyxFQUFLWSxXQUNmd0MsU0FBVSxPQUtiTCxrQkFBbUIsV0FDbEIsR0FBSU0sSUFBa0IsQ0FHdEJ2TixNQUFLc0QsR0FBSSx1QkFBeUIsU0FBU3lELEdBQ3JDd0csR0FBbUIsa0JBQXNCQSxHQUFnQkMsU0FDN0RELEVBQWdCQyxjQUVaLEtBQXVCekcsSUFDM0J3RyxFQUFrQnhHLElBQ2hCL0csTUFFSkEsS0FBS3NELEdBQUksNEJBQTZCdEQsS0FBS3lOLHdCQUF5QnpOLE1BQ3BFQSxLQUFLc0QsR0FBSSw0QkFBNkJ0RCxLQUFLME4scUJBQXNCMU4sTUFFakU0SyxNQUFRNUssTUFHVHlOLHdCQUF5QixTQUFVMUcsR0FDdEIvRyxLQUFLc0ssT0FFakJ0SyxNQUFLMk4saUJBQW1CNUcsRUFBUWlDLEtBQU8sR0FBSXdCLElBQUdDLE1BQU01QixTQUFTRyxLQUFLNEUsd0JBQ2pFQyxXQUFhN04sS0FDYjhOLFFBQVd0RCxHQUFHQyxNQUFNNUIsU0FBU0csS0FBSytFLGFBRW5DL04sS0FBS2dPLFNBQVVoTyxLQUFLMk4saUJBQWlCdEQsU0FBVSw0QkFBNkJySyxLQUFLaU8sb0JBRWxGUCxxQkFBc0IsU0FBVTNHLEdBQy9CQSxFQUFRbUgsaUJBRVRELGtCQUFtQixTQUFVbEgsR0FDNUIvRyxLQUFLbU8sY0FBZW5PLEtBQUsyTixpQkFBaUJ0RCxTQUFVLDRCQUNwRCxJQUFJK0QsSUFBUXBGLEtBQU0sS0FDbEJoSixNQUFLcU8sY0FBY0QsR0FDbkJwTyxLQUFLK0csUUFBUXFHLElBQUtnQixFQUFJcEYsTUFDdEJoSixLQUFLc08sT0FBTzlILE1BQU0rSCxPQUFPLGFBUzNCN0IsRUFBRTVELE9BQVEwQixHQUFHQyxNQUFNekIsS0FBS3dGLG1CQUFtQnBKLFdBQzFDeUgsa0JBQW1CckMsR0FBR0MsTUFBTXpCLEtBQUt3RixtQkFBbUJwSixVQUFVMEgsV0FDOURBLFdBQVksV0FDWCxHQUNDMkIsR0FER0MsRUFBTzFPLElBR1hBLE1BQUs2TSxrQkFBa0JFLE1BQU0vTSxLQUFLZ04sV0FFbENoTixLQUFLNkksVUFDSjFKLE9BRUMyTyxTQUFVLEVBQ1ZhLE9BQVEsRUFDUkMsS0FBTyxTQUVSQyxTQUFXLEdBR0g3TyxLQUFLNk4scUJBQXNCckQsSUFBR0MsTUFBTXpCLEtBQUsyRCxXQUFXQyxRQUV2RHBDLEdBQUdDLE1BQU01QixTQUFTRSxTQUFTNUosUUFFL0JzUCxFQUFXLEdBQUlqRSxJQUFHQyxNQUFNekIsS0FBSzhGLFFBQzVCNUssS0FBUWdHLEVBQUtZLFdBQ2JpRSxVQUFZLGlCQUNaekIsVUFBWSxHQUNaMEIsTUFBTyxXQUNOTixFQUFLN0YsU0FBU29HLE9BQVNQLEVBQUs3RixTQUFTMUosTUFDckN1UCxFQUFLUSxhQUFjaEYsRUFBS1ksZUFHMUI5SyxLQUFLNkksU0FBUzFKLE1BQU0yTyxRQUFVLEdBQUl0RCxJQUFHQyxNQUFNNUIsU0FBU0csS0FBSzRFLHdCQUN4REMsV0FBYTdOLEtBQUs2TixXQUNsQkMsUUFBV3RELEdBQUdDLE1BQU01QixTQUFTRyxLQUFLK0UsV0FDbENvQixXQUFhblAsS0FBSzZOLFdBQVd4RCxTQUFTQSxTQUFTQSxXQUdoRHJLLEtBQUtvUCxRQUFRaEMsSUFBSyxrQkFBbUJxQixFQUFTWSxZQUlqREMsaUJBQWtCLFNBQVVuRSxHQUMzQm5MLEtBQUs2SSxTQUFTb0csT0FBT25CLFFBQVFOLFVBQzdCeE4sS0FBSzZJLFNBQVM4RixNQUFNM0QsUUFDcEJoTCxLQUFLdVAsaUJBRU5DLGNBQWUsU0FBVXJFLEdBQ3hCN0wsUUFBUUMsSUFBSyxRQUFTNEwsSUFFdkIrRCxhQUFjLFNBQVVyRSxHQUN2QixHQUFJNkQsR0FBTzFPLElBRVhBLE1BQUs2SSxTQUFTOEYsTUFBVSxHQUFJbkUsSUFBR0MsTUFBTXpCLEtBQUt5RyxPQUN6QzVCLFdBQWE3TixLQUNiNkssTUFBYUEsSUFFZDdLLEtBQUs2SSxTQUFTOEYsTUFBTTVILFFBQVMvRyxLQUFLNkksU0FBU29HLE9BQU9uQixTQUNsRDlOLEtBQUs2SSxTQUFTOEYsTUFBTWpFLE9BRXBCMUssS0FBSzZJLFNBQVM4RixNQUFNckwsR0FBSSxRQUFTLFdBQ2hDb0wsRUFBS2EsY0FBY3hDLE1BQU0yQixHQUN6QkEsRUFBSzdGLFNBQVNvRyxPQUFPbkIsUUFBUTRCLGlCQUc5QjFQLEtBQUs2SSxTQUFTb0csT0FBT25CLFFBQVFJLGdCQUU3QmxPLEtBQUtnTyxTQUFVaE8sS0FBSzZJLFNBQVNvRyxPQUFPbkIsUUFBUXpELFNBQVUsNEJBQTZCckssS0FBS3NQLGtCQUN4RnRQLEtBQUtnTyxTQUFVaE8sS0FBSzZJLFNBQVNvRyxPQUFPbkIsUUFBUXpELFNBQVUsMkJBQTRCckssS0FBS3dQLGdCQUV4RkQsY0FBZSxXQUVkdlAsS0FBSzZOLFdBQVc4QixlQUFnQjNQLEtBQUs2SSxTQUFTb0csT0FBT0wsTUFBT2dCLGFBQWMsUUFFMUU1UCxLQUFLbU8sY0FBZW5PLEtBQUs2SSxTQUFTb0csT0FBT25CLFFBQVF6RCxTQUFVLDZCQUMzRHJLLEtBQUttTyxjQUFlbk8sS0FBSzZJLFNBQVNvRyxPQUFPbkIsUUFBUXpELFNBQVUsZ0NBSTNEbkwsT0FBT0QsUUFFVixTQUFVTCxFQUFFSyxFQUFPMkssR0FDbEIsR0FBSWYsR0FBVzJCLEdBQUdDLE1BQU01QixTQUd2QnFCLEdBRlNNLEdBQUdDLE1BQU16QixLQUFLOEYsT0FDZHRFLEdBQUdDLE1BQU16QixLQUFLeUcsTUFDZDVHLEVBQVNxQixLQUduQk0sSUFBR0MsTUFBTTVCLFNBQVNHLEtBQUs2Ryx3QkFBMEJyRixHQUFHQyxNQUFNcUYsS0FBS2hILFFBQzlEaUgsU0FBVXZGLEdBQUd1RixTQUFTLHFCQUN0QmhCLFVBQVcsb0JBQ1hsQixXQUFXLEtBQ1h0RSxNQUFRLEtBQ1J5RyxZQUFjLEtBQ2RDLFdBQWEsS0FFYjVGLFNBQVcsS0FFWDZGLFFBQ0NDLCtCQUFpQyxjQUNqQ0MsZ0NBQWtDLGdCQUVuQ3RELFdBQWEsV0FFWnRDLEdBQUdDLE1BQU1xRixLQUFLMUssVUFBVTBILFdBQVdDLE1BQU8vTSxLQUFNZ04sV0FFaEROLEVBQUUyRCxTQUFVclEsS0FBSzhKLFNBQ2hCd0csZ0JBQWtCcEcsRUFBS1gsT0FHZixJQUFJaUIsSUFBR0MsTUFBTXFGLE1BQ3JCUyxRQUFhLE1BQ2J4QixVQUFhLGNBQ2JsQixXQUFhN04sS0FBSzZOLFlBR25CN04sTUFBS3FLLFNBQVdySyxLQUFLOEosUUFBUTBHLFNBRTlCQyxhQUFlLFNBQVUzSixHQUN4QixHQUFJNEosR0FBWTFRLEtBQUsyUSxnQkFBZ0JDLEtBQUssSUFBSXBLLElBQUksR0FDakRrSSxFQUFPMU8sS0FDUDZRLEVBQVMvSixFQUFLMUYsTUFBTSx3QkFBd0IsRUE0QjdDLE9BMUJPeUgsR0FBU2lCLFFBQVFDLFdBQVdDLFFBQVE2RyxLQUMxQ0EsRUFBUzdRLEtBQUs4SixRQUFRZ0gsbUJBR2xCOVEsS0FBS3VKLE9BQ1R2SixLQUFLdUosTUFBTXdILFVBR1ovUSxLQUFLdUosTUFBUSxHQUFJSyxHQUFFcEMsTUFDbkJ4SCxLQUFLdUosTUFBTTdFLE9BQVMsV0FDbkIsR0FBSXNNLEdBQU90QyxFQUFLdUMsY0FBY0MsVUFBVSxVQUN2Q0MsRUFBUS9JLEtBQUtnSixJQUFLSixFQUFLaFAsTUFBUWhDLEtBQUtnQyxNQUFPZ1AsRUFBSy9PLE9BQVNqQyxLQUFLaUMsVUFFN0QrTyxHQUFTRyxFQUFRLEdBQU1uUixLQUFLcVIsU0FBVXJSLEtBQUtnQyxNQUFNbVAsRUFBT25SLEtBQUtpQyxPQUFPa1AsR0FFdEVuUixLQUFLc1IsTUFBT1osSUFHYjFRLEtBQUt1SixNQUFNZ0ksS0FBTXpLLEdBQ1o5RyxLQUFLMlEsaUJBQ1QzUSxLQUFLMlEsZ0JBQWdCYSxPQUFPeFIsS0FBS3VKLE9BRWxDdkosS0FBS3BCLEVBQUUsd0NBQXdDaVMsRUFBTyxNQUFNM0osS0FBTSxXQUFXLEdBRzdFbEgsS0FBS2tELFVBQVMsR0FDUGxELE1BRVJxUCxPQUFTLFdBTVIsTUFMQTdFLElBQUdDLE1BQU1xRixLQUFLMUssVUFBVWlLLE9BQU90QyxNQUFNL00sS0FBS2dOLFdBQzFDaE4sS0FBSzJRLGdCQUFrQjNRLEtBQUtwQixFQUFFLG9CQUM5Qm9CLEtBQUtnUSxZQUFjaFEsS0FBS3BCLEVBQUUsMkJBQzFCb0IsS0FBS2lRLFdBQWFqUSxLQUFLcEIsRUFBRSwwQkFDekJvQixLQUFLcEIsRUFBRSwwQkFBMEJ1SSxJQUFLbkgsS0FBSzhKLFFBQVF3RyxpQkFDNUN0USxNQUVSeVIsYUFBZSxXQUNkelIsS0FBS21GLFFBQVMsMkJBQTZCbkYsTUFDM0NBLEtBQUswUix3QkFFTnBJLFlBQWMsV0FFYixHQUFJM0gsR0FBTzNCLEtBQUtwQixFQUFFLG9DQUFvQ3VJLE1BQ3JEMEMsRUFBU2hCLEVBQVNpQixRQUFRQyxXQUFXQyxRQUFTckksR0FDOUNvQixFQUFPL0MsS0FBS3BCLEVBQUUsK0JBQStCdUksTUFBUSxJQUFNMEMsRUFDM0RuQyxFQUFPMUgsS0FBS3VKLE1BQU1vSSxVQUFXaFEsRUFBTWtILEVBQVNpQixRQUFROEgsYUFFckQ1UixNQUFLNlIscUJBRUxuSyxFQUFLb0ssT0FBUXBLLEVBQUtxSyxhQUNsQnJLLEVBQUszRSxLQUFPQSxFQUNaMkUsRUFBSy9GLEtBQU9BLEVBQ1ozQixLQUFLaVIsY0FBYzdHLFFBQVMxQyxFQUFPM0UsR0FFbkMvQyxLQUFLa0QsVUFBVSxHQUVmbEQsS0FBS21GLFFBQVMsMEJBQTRCbkYsT0FFM0NnUyxLQUFLLFdBRUosTUFEQWhTLE1BQUtpUyxJQUFJRCxPQUNGaFMsTUFFUmtTLEtBQUssV0FFSixNQURBbFMsTUFBS2lTLElBQUlDLE9BQ0ZsUyxNQUVSa0QsU0FBVyxTQUFVQSxHQUNwQmxELEtBQUtnUSxZQUFZOUksS0FBTSxXQUFZaEUsR0FDbkNsRCxLQUFLaVEsV0FBVy9JLEtBQU0sV0FBWWhFLElBRW5DaVAsc0JBQXdCLFdBQ3ZCblMsS0FBS21GLFFBQVMsNkJBQ2RuRixLQUFLa0QsVUFBUyxHQUNkbEQsS0FBSzBSLHdCQUVOVSxvQkFBc0IsV0FDckJwUyxLQUFLbUYsUUFBUyw0QkFDZG5GLEtBQUtrRCxVQUFTLEdBQ2RsRCxLQUFLMFIsd0JBRU5HLG1CQUFxQixXQUNwQjdSLEtBQUtpUixjQUFjL0YsS0FBTSxlQUFnQmxMLEtBQUttUyxzQkFBdUJuUyxNQUNyRUEsS0FBS2lSLGNBQWMvRixLQUFNLFFBQVdsTCxLQUFLb1Msb0JBQXFCcFMsT0FFL0QwUixxQkFBdUIsV0FDdEIxUixLQUFLaVIsY0FBY29CLE9BQVEsZUFBZ0JyUyxLQUFLbVMsc0JBQXVCblMsTUFDdkVBLEtBQUtpUixjQUFjb0IsT0FBUSxRQUFXclMsS0FBS29TLG9CQUFxQnBTLE9BRWpFaVIsWUFBYSxXQUNaLE1BQU9qUixNQUFLNk4sV0FBV3hELFNBQVNBLFNBQVNBLFlBSzNDRyxHQUFHQyxNQUFNNUIsU0FBU0csS0FBSytFLFdBQWF2RCxHQUFHQyxNQUFNcUYsS0FBS2hILFFBQ2pEaUgsU0FBVXZGLEdBQUd1RixTQUFTLHVCQUN0QmhCLFVBQVcsc0JBQ1hsQixXQUFXLEtBQ1h5RSxPQUFPLFFBQ1BDLFlBQWMsS0FFZGxELE9BQVEsV0FDUCxHQUFJWCxHQUFPMU8sSUFPWCxPQU5Bd0ssSUFBR0MsTUFBTXFGLEtBQUsxSyxVQUFVaUssT0FBT3RDLE1BQU0vTSxLQUFLZ04sV0FDMUNoTixLQUFLdVMsWUFBY3ZTLEtBQUtwQixFQUFHLGFBQWMwQiwwQkFDekNOLEtBQUt3UyxTQUFXeFMsS0FBS3BCLEVBQUcsWUFDeEJvQixLQUFLdVMsWUFBWWpQLEdBQUcsUUFBUyxXQUM1Qm9MLEVBQUsrRCxhQUFhLE1BRVp6UyxNQUVSMFMsTUFBUSxXQUNQLEdBQ0N0RyxHQURHc0MsRUFBTzFPLElBa0NYLE9BL0JBQSxNQUFLMlMsYUFBYyxFQUVuQjNTLEtBQUt1UyxZQUNIalAsR0FBRyxRQUFRLFNBQVM2SCxHQUNwQmlCLEVBQW9CNUIsR0FBR0MsTUFBTTVCLFNBQVN1RCxrQkFBa0JqQixFQUFFNUcsY0FBY2QsaUJBRXhFSCxHQUFHLFlBQWMsU0FBVTZILEVBQUdyRSxHQUV6QnNGLEdBQXFCc0MsRUFBS2lFLGNBRy9CakUsRUFBSytELGFBQWN2SSxFQUFLMEksc0JBQ3hCaFUsRUFBR29CLE1BQU80USxLQUFLLE9BRWZ0TixHQUFHLGFBQWUsU0FBVTZILEVBQUdyRSxHQUMxQjRILEVBQUtpRSxjQUdWakUsRUFBS3ZKLFFBQVMsMEJBQTJCbkYsS0FBTzhHLEVBQUt0RyxTQUNyRGtPLEVBQUtpRSxhQUFjLEtBRW5CclAsR0FBRyxrQkFBb0IsU0FBVTZILEVBQUdyRSxHQUNwQzRILEVBQUsrRCxhQUFjdkksRUFBSzJJLGFBQ3hCalUsRUFBR29CLE1BQU80USxLQUFLLE1BSWpCbkwsV0FBVyxXQUNWaUosRUFBSzZELFlBQVkvTCxJQUFJLEdBQUdQLFNBQ3ZCLEdBRUtqRyxNQUVSOFMsS0FBTyxXQUtOLE1BSkE5UyxNQUFLdVMsWUFDSFEsSUFBSSxjQUNKQSxJQUFJLG1CQUNKQSxJQUFJLGFBQ0MvUyxNQUVSZ1MsS0FBSyxXQUVKLE1BREFoUyxNQUFLaVMsSUFBSUQsT0FDRmhTLE1BRVJrUyxLQUFLLFdBRUosTUFEQWxTLE1BQUtpUyxJQUFJQyxPQUNGbFMsTUFFUnlTLGFBQWEsU0FBVU8sR0FDdEJoVCxLQUFLd1MsU0FBU3RPLEtBQU04TyxNQUl0QnhJLEdBQUdDLE1BQU01QixTQUFTRyxLQUFLNEUsdUJBQXlCcEQsR0FBR0MsTUFBTXFGLEtBQUtoSCxRQUU3RGlILFNBQVV2RixHQUFHdUYsU0FBUyxvQkFDdEJoQixVQUFZLG1CQUVaakIsUUFBVSxLQUNWekQsU0FBVyxLQUVYeUMsV0FBYSxXQUNaLEdBQUltRyxHQUFNekksR0FBR0MsTUFBTXFGLEtBQUsxSyxVQUFVMEgsV0FBV0MsTUFBTy9NLEtBQU1nTixVQXNCMUQsT0FwQkFOLEdBQUUyRCxTQUFVclEsS0FBSzhKLFNBQ2hCcUYsV0FBYyxLQUNkbUIsZ0JBQWtCcEcsRUFBS0MsT0FDdkIyRyxrQkFBb0IsWUFDcEJqRyxNQUFVWCxFQUFLWSxhQUdoQjlLLEtBQUs4TixRQUFXLEdBQUk5TixNQUFLOEosUUFBUWdFLFNBQVdELFdBQWE3TixLQUFLNk4sYUFFOUQ3TixLQUFLcUssU0FBVyxHQUFJRyxJQUFHQyxNQUFNNUIsU0FBU0csS0FBSzZHLHlCQUNyQ2hDLFdBQWU3TixLQUFLNk4sV0FDcEIyQyxRQUFheFEsS0FBSzhKLFFBQVFxRixXQUMxQm1CLGdCQUFtQnRRLEtBQUs4SixRQUFRd0csZ0JBQ2hDUSxrQkFBb0I5USxLQUFLOEosUUFBUWdILG9CQUV2QzlRLEtBQUtxUCxTQUVMclAsS0FBS2dPLFNBQVVoTyxLQUFLOE4sUUFBUywwQkFBMkI5TixLQUFLa1QsY0FDN0RsVCxLQUFLZ08sU0FBVWhPLEtBQUtxSyxTQUFVLDJCQUE0QnJLLEtBQUtrTyxlQUV4RCtFLEdBRVI1RCxPQUFPLFdBU04sTUFOQTdFLElBQUdDLE1BQU1xRixLQUFLMUssVUFBVWlLLE9BQU90QyxNQUFPL00sS0FBTWdOLFdBRTVDaE4sS0FBS3BCLEVBQUUsWUFDTDRTLE9BQVF4UixLQUFLOE4sUUFBUXVCLFNBQVM0QyxLQUM5QlQsT0FBUXhSLEtBQUtxSyxTQUFTZ0YsU0FBUzRDLEtBRTFCalMsTUFFUmtULGFBQWUsU0FBVXBGLEVBQVVxRixHQUNsQ25ULEtBQUs4TixRQUFRZ0YsT0FBT1osT0FDcEJsUyxLQUFLcUssU0FBUzJILE9BQU92QixhQUFjMEMsSUFFcENqRixjQUFjLFdBR2IsTUFGQWxPLE1BQUtxSyxTQUFTNkgsT0FDZGxTLEtBQUs4TixRQUFRa0UsT0FBT1UsUUFDYjFTLE1BRVIwUCxhQUFhLFdBRVosTUFEQTFQLE1BQUs4TixRQUFRZ0YsT0FDTjlTLE1BRVJvVCxVQUFZLFdBQ1gsTUFBT3BULE1BQUs4TixRQUFRd0UsUUFFckI5RSxRQUFRLFdBRVAsTUFEQXhOLE1BQUs4TixRQUFRZ0YsT0FDTjlTLFNBSVBkLE9BQU9ELE9BQU9vVSIsImZpbGUiOiJ0aGUtcGFzdGUubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjEyLjdcblxuLypcbnBhc3RlLmpzIGlzIGFuIGludGVyZmFjZSB0byByZWFkIGRhdGEgKCB0ZXh0IC8gaW1hZ2UgKSBmcm9tIGNsaXBib2FyZCBpbiBkaWZmZXJlbnQgYnJvd3NlcnMuIEl0IGFsc28gY29udGFpbnMgc2V2ZXJhbCBoYWNrcy5cblxuaHR0cHM6Ly9naXRodWIuY29tL2xheWVyc3Nzcy9wYXN0ZS5qc1xuICovXG5cbihmdW5jdGlvbigpIHtcbiAgdmFyICQsIFBhc3RlLCBjcmVhdGVIaWRkZW5FZGl0YWJsZSwgZGF0YVVSTHRvQmxvYiwgaXNGb2N1c2FibGU7XG5cbiAgJCA9IHdpbmRvdy5qUXVlcnk7XG5cbiAgJC5wYXN0ZSA9IGZ1bmN0aW9uKHBhc3RlQ29udGFpbmVyKSB7XG4gICAgdmFyIHBtO1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb25zb2xlICE9PSBudWxsKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkRFUFJFQ0FURUQ6IFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgJC5mbi5wYXN0YWJsZU5vbklucHV0YWJsZSgpIGluc3RlYWQuXCIpO1xuICAgIH1cbiAgICBwbSA9IFBhc3RlLm1vdW50Tm9uSW5wdXRhYmxlKHBhc3RlQ29udGFpbmVyKTtcbiAgICByZXR1cm4gcG0uX2NvbnRhaW5lcjtcbiAgfTtcblxuICAkLmZuLnBhc3RhYmxlTm9uSW5wdXRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGVsLCBqLCBsZW4sIHJlZjtcbiAgICByZWYgPSB0aGlzO1xuICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgZWwgPSByZWZbal07XG4gICAgICBpZiAoZWwuX3Bhc3RhYmxlIHx8ICQoZWwpLmlzKCd0ZXh0YXJlYSwgaW5wdXQ6dGV4dCwgW2NvbnRlbnRlZGl0YWJsZV0nKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIFBhc3RlLm1vdW50Tm9uSW5wdXRhYmxlKGVsKTtcbiAgICAgIGVsLl9wYXN0YWJsZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gICQuZm4ucGFzdGFibGVUZXh0YXJlYSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBlbCwgaiwgbGVuLCByZWY7XG4gICAgcmVmID0gdGhpcztcbiAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGVsID0gcmVmW2pdO1xuICAgICAgaWYgKGVsLl9wYXN0YWJsZSB8fCAkKGVsKS5pcygnOm5vdCh0ZXh0YXJlYSwgaW5wdXQ6dGV4dCknKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIFBhc3RlLm1vdW50VGV4dGFyZWEoZWwpO1xuICAgICAgZWwuX3Bhc3RhYmxlID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgJC5mbi5wYXN0YWJsZUNvbnRlbnRlZGl0YWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBlbCwgaiwgbGVuLCByZWY7XG4gICAgcmVmID0gdGhpcztcbiAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGVsID0gcmVmW2pdO1xuICAgICAgaWYgKGVsLl9wYXN0YWJsZSB8fCAkKGVsKS5pcygnOm5vdChbY29udGVudGVkaXRhYmxlXSknKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIFBhc3RlLm1vdW50Q29udGVudGVkaXRhYmxlKGVsKTtcbiAgICAgIGVsLl9wYXN0YWJsZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIGRhdGFVUkx0b0Jsb2IgPSBmdW5jdGlvbihkYXRhVVJMLCBzbGljZVNpemUpIHtcbiAgICB2YXIgYjY0RGF0YSwgYnl0ZUFycmF5LCBieXRlQXJyYXlzLCBieXRlQ2hhcmFjdGVycywgYnl0ZU51bWJlcnMsIGNvbnRlbnRUeXBlLCBpLCBtLCBvZmZzZXQsIHJlZiwgc2xpY2U7XG4gICAgaWYgKHNsaWNlU2l6ZSA9PSBudWxsKSB7XG4gICAgICBzbGljZVNpemUgPSA1MTI7XG4gICAgfVxuICAgIGlmICghKG0gPSBkYXRhVVJMLm1hdGNoKC9eZGF0YVxcOihbXlxcO10rKVxcO2Jhc2U2NFxcLCguKykkLykpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmVmID0gbSwgbSA9IHJlZlswXSwgY29udGVudFR5cGUgPSByZWZbMV0sIGI2NERhdGEgPSByZWZbMl07XG4gICAgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGI2NERhdGEpO1xuICAgIGJ5dGVBcnJheXMgPSBbXTtcbiAgICBvZmZzZXQgPSAwO1xuICAgIHdoaWxlIChvZmZzZXQgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGgpIHtcbiAgICAgIHNsaWNlID0gYnl0ZUNoYXJhY3RlcnMuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBzbGljZVNpemUpO1xuICAgICAgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoc2xpY2UubGVuZ3RoKTtcbiAgICAgIGkgPSAwO1xuICAgICAgd2hpbGUgKGkgPCBzbGljZS5sZW5ndGgpIHtcbiAgICAgICAgYnl0ZU51bWJlcnNbaV0gPSBzbGljZS5jaGFyQ29kZUF0KGkpO1xuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgICBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG4gICAgICBieXRlQXJyYXlzLnB1c2goYnl0ZUFycmF5KTtcbiAgICAgIG9mZnNldCArPSBzbGljZVNpemU7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQmxvYihieXRlQXJyYXlzLCB7XG4gICAgICB0eXBlOiBjb250ZW50VHlwZVxuICAgIH0pO1xuICB9O1xuXG4gIGNyZWF0ZUhpZGRlbkVkaXRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpLmF0dHIoJ2NvbnRlbnRlZGl0YWJsZScsIHRydWUpLmF0dHIoJ2FyaWEtaGlkZGVuJywgdHJ1ZSkuYXR0cigndGFiaW5kZXgnLCAtMSkuY3NzKHtcbiAgICAgIHdpZHRoOiAxLFxuICAgICAgaGVpZ2h0OiAxLFxuICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICBsZWZ0OiAtMTAwLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nXG4gICAgfSk7XG4gIH07XG5cbiAgaXNGb2N1c2FibGUgPSBmdW5jdGlvbihlbGVtZW50LCBoYXNUYWJpbmRleCkge1xuICAgIHZhciBmaWVsZHNldCwgZm9jdXNhYmxlSWZWaXNpYmxlLCBpbWcsIG1hcCwgbWFwTmFtZSwgbm9kZU5hbWU7XG4gICAgbWFwID0gdm9pZCAwO1xuICAgIG1hcE5hbWUgPSB2b2lkIDA7XG4gICAgaW1nID0gdm9pZCAwO1xuICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9IHZvaWQgMDtcbiAgICBmaWVsZHNldCA9IHZvaWQgMDtcbiAgICBub2RlTmFtZSA9IGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoJ2FyZWEnID09PSBub2RlTmFtZSkge1xuICAgICAgbWFwID0gZWxlbWVudC5wYXJlbnROb2RlO1xuICAgICAgbWFwTmFtZSA9IG1hcC5uYW1lO1xuICAgICAgaWYgKCFlbGVtZW50LmhyZWYgfHwgIW1hcE5hbWUgfHwgbWFwLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdtYXAnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGltZyA9ICQoJ2ltZ1t1c2VtYXA9XFwnIycgKyBtYXBOYW1lICsgJ1xcJ10nKTtcbiAgICAgIHJldHVybiBpbWcubGVuZ3RoID4gMCAmJiBpbWcuaXMoJzp2aXNpYmxlJyk7XG4gICAgfVxuICAgIGlmICgvXihpbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9ufG9iamVjdCkkLy50ZXN0KG5vZGVOYW1lKSkge1xuICAgICAgZm9jdXNhYmxlSWZWaXNpYmxlID0gIWVsZW1lbnQuZGlzYWJsZWQ7XG4gICAgICBpZiAoZm9jdXNhYmxlSWZWaXNpYmxlKSB7XG4gICAgICAgIGZpZWxkc2V0ID0gJChlbGVtZW50KS5jbG9zZXN0KCdmaWVsZHNldCcpWzBdO1xuICAgICAgICBpZiAoZmllbGRzZXQpIHtcbiAgICAgICAgICBmb2N1c2FibGVJZlZpc2libGUgPSAhZmllbGRzZXQuZGlzYWJsZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCdhJyA9PT0gbm9kZU5hbWUpIHtcbiAgICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9IGVsZW1lbnQuaHJlZiB8fCBoYXNUYWJpbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9jdXNhYmxlSWZWaXNpYmxlID0gaGFzVGFiaW5kZXg7XG4gICAgfVxuICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9IGZvY3VzYWJsZUlmVmlzaWJsZSB8fCAkKGVsZW1lbnQpLmlzKCdbY29udGVudGVkaXRhYmxlXScpO1xuICAgIHJldHVybiBmb2N1c2FibGVJZlZpc2libGUgJiYgJChlbGVtZW50KS5pcygnOnZpc2libGUnKTtcbiAgfTtcblxuICBQYXN0ZSA9IChmdW5jdGlvbigpIHtcbiAgICBQYXN0ZS5wcm90b3R5cGUuX3RhcmdldCA9IG51bGw7XG5cbiAgICBQYXN0ZS5wcm90b3R5cGUuX2NvbnRhaW5lciA9IG51bGw7XG5cbiAgICBQYXN0ZS5tb3VudE5vbklucHV0YWJsZSA9IGZ1bmN0aW9uKG5vbklucHV0YWJsZSkge1xuICAgICAgdmFyIHBhc3RlO1xuICAgICAgcGFzdGUgPSBuZXcgUGFzdGUoY3JlYXRlSGlkZGVuRWRpdGFibGUoKS5hcHBlbmRUbyhub25JbnB1dGFibGUpLCBub25JbnB1dGFibGUpO1xuICAgICAgJChub25JbnB1dGFibGUpLm9uKCdjbGljaycsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXYpIHtcbiAgICAgICAgICBpZiAoIWlzRm9jdXNhYmxlKGV2LnRhcmdldCwgZmFsc2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFzdGUuX2NvbnRhaW5lci5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHBhc3RlLl9jb250YWluZXIub24oJ2ZvY3VzJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gJChub25JbnB1dGFibGUpLmFkZENsYXNzKCdwYXN0YWJsZS1mb2N1cycpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgcmV0dXJuIHBhc3RlLl9jb250YWluZXIub24oJ2JsdXInLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiAkKG5vbklucHV0YWJsZSkucmVtb3ZlQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgfTtcblxuICAgIFBhc3RlLm1vdW50VGV4dGFyZWEgPSBmdW5jdGlvbih0ZXh0YXJlYSkge1xuICAgICAgdmFyIGN0bERvd24sIHBhc3RlLCByZWYsIHJlZjE7XG4gICAgICBpZiAoKHR5cGVvZiBEYXRhVHJhbnNmZXIgIT09IFwidW5kZWZpbmVkXCIgJiYgRGF0YVRyYW5zZmVyICE9PSBudWxsID8gRGF0YVRyYW5zZmVyLnByb3RvdHlwZSA6IHZvaWQgMCkgJiYgKChyZWYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKSAhPSBudWxsID8gKHJlZjEgPSByZWYuY2FsbChPYmplY3QsIERhdGFUcmFuc2Zlci5wcm90b3R5cGUsICdpdGVtcycpKSAhPSBudWxsID8gcmVmMS5nZXQgOiB2b2lkIDAgOiB2b2lkIDApKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vdW50Q29udGVudGVkaXRhYmxlKHRleHRhcmVhKTtcbiAgICAgIH1cbiAgICAgIHBhc3RlID0gbmV3IFBhc3RlKGNyZWF0ZUhpZGRlbkVkaXRhYmxlKCkuaW5zZXJ0QmVmb3JlKHRleHRhcmVhKSwgdGV4dGFyZWEpO1xuICAgICAgY3RsRG93biA9IGZhbHNlO1xuICAgICAgJCh0ZXh0YXJlYSkub24oJ2tleXVwJywgZnVuY3Rpb24oZXYpIHtcbiAgICAgICAgdmFyIHJlZjI7XG4gICAgICAgIGlmICgocmVmMiA9IGV2LmtleUNvZGUpID09PSAxNyB8fCByZWYyID09PSAyMjQpIHtcbiAgICAgICAgICBjdGxEb3duID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcbiAgICAgICQodGV4dGFyZWEpLm9uKCdrZXlkb3duJywgZnVuY3Rpb24oZXYpIHtcbiAgICAgICAgdmFyIHJlZjI7XG4gICAgICAgIGlmICgocmVmMiA9IGV2LmtleUNvZGUpID09PSAxNyB8fCByZWYyID09PSAyMjQpIHtcbiAgICAgICAgICBjdGxEb3duID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGV2LmN0cmxLZXkgIT0gbnVsbCkgJiYgKGV2Lm1ldGFLZXkgIT0gbnVsbCkpIHtcbiAgICAgICAgICBjdGxEb3duID0gZXYuY3RybEtleSB8fCBldi5tZXRhS2V5O1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdGxEb3duICYmIGV2LmtleUNvZGUgPT09IDg2KSB7XG4gICAgICAgICAgcGFzdGUuX3RleHRhcmVhX2ZvY3VzX3N0b2xlbiA9IHRydWU7XG4gICAgICAgICAgcGFzdGUuX2NvbnRhaW5lci5mb2N1cygpO1xuICAgICAgICAgIHBhc3RlLl9wYXN0ZV9ldmVudF9maXJlZCA9IGZhbHNlO1xuICAgICAgICAgIHNldFRpbWVvdXQoKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIGlmICghcGFzdGUuX3Bhc3RlX2V2ZW50X2ZpcmVkKSB7XG4gICAgICAgICAgICAgICAgJCh0ZXh0YXJlYSkuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFzdGUuX3RleHRhcmVhX2ZvY3VzX3N0b2xlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pKHRoaXMpLCAxKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pO1xuICAgICAgJCh0ZXh0YXJlYSkub24oJ3Bhc3RlJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHt9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgJCh0ZXh0YXJlYSkub24oJ2ZvY3VzJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBpZiAoIXBhc3RlLl90ZXh0YXJlYV9mb2N1c19zdG9sZW4pIHtcbiAgICAgICAgICAgIHJldHVybiAkKHRleHRhcmVhKS5hZGRDbGFzcygncGFzdGFibGUtZm9jdXMnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICAkKHRleHRhcmVhKS5vbignYmx1cicsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKCFwYXN0ZS5fdGV4dGFyZWFfZm9jdXNfc3RvbGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gJCh0ZXh0YXJlYSkucmVtb3ZlQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgJChwYXN0ZS5fdGFyZ2V0KS5vbignX3Bhc3RlQ2hlY2tDb250YWluZXJEb25lJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAkKHRleHRhcmVhKS5mb2N1cygpO1xuICAgICAgICAgIHJldHVybiBwYXN0ZS5fdGV4dGFyZWFfZm9jdXNfc3RvbGVuID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICByZXR1cm4gJChwYXN0ZS5fdGFyZ2V0KS5vbigncGFzdGVUZXh0JywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihldiwgZGF0YSkge1xuICAgICAgICAgIHZhciBjb250ZW50LCBjdXJFbmQsIGN1clN0YXJ0O1xuICAgICAgICAgIGN1clN0YXJ0ID0gJCh0ZXh0YXJlYSkucHJvcCgnc2VsZWN0aW9uU3RhcnQnKTtcbiAgICAgICAgICBjdXJFbmQgPSAkKHRleHRhcmVhKS5wcm9wKCdzZWxlY3Rpb25FbmQnKTtcbiAgICAgICAgICBjb250ZW50ID0gJCh0ZXh0YXJlYSkudmFsKCk7XG4gICAgICAgICAgJCh0ZXh0YXJlYSkudmFsKFwiXCIgKyBjb250ZW50LnNsaWNlKDAsIGN1clN0YXJ0KSArIGRhdGEudGV4dCArIGNvbnRlbnQuc2xpY2UoY3VyRW5kKSk7XG4gICAgICAgICAgJCh0ZXh0YXJlYSlbMF0uc2V0U2VsZWN0aW9uUmFuZ2UoY3VyU3RhcnQgKyBkYXRhLnRleHQubGVuZ3RoLCBjdXJTdGFydCArIGRhdGEudGV4dC5sZW5ndGgpO1xuICAgICAgICAgIHJldHVybiAkKHRleHRhcmVhKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICB9O1xuXG4gICAgUGFzdGUubW91bnRDb250ZW50ZWRpdGFibGUgPSBmdW5jdGlvbihjb250ZW50ZWRpdGFibGUpIHtcbiAgICAgIHZhciBwYXN0ZTtcbiAgICAgIHBhc3RlID0gbmV3IFBhc3RlKGNvbnRlbnRlZGl0YWJsZSwgY29udGVudGVkaXRhYmxlKTtcbiAgICAgICQoY29udGVudGVkaXRhYmxlKS5vbignZm9jdXMnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiAkKGNvbnRlbnRlZGl0YWJsZSkuYWRkQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICByZXR1cm4gJChjb250ZW50ZWRpdGFibGUpLm9uKCdibHVyJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gJChjb250ZW50ZWRpdGFibGUpLnJlbW92ZUNsYXNzKCdwYXN0YWJsZS1mb2N1cycpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBQYXN0ZShfY29udGFpbmVyLCBfdGFyZ2V0KSB7XG4gICAgICB0aGlzLl9jb250YWluZXIgPSBfY29udGFpbmVyO1xuICAgICAgdGhpcy5fdGFyZ2V0ID0gX3RhcmdldDtcbiAgICAgIHRoaXMuX2NvbnRhaW5lciA9ICQodGhpcy5fY29udGFpbmVyKTtcbiAgICAgIHRoaXMuX3RhcmdldCA9ICQodGhpcy5fdGFyZ2V0KS5hZGRDbGFzcygncGFzdGFibGUnKTtcbiAgICAgIHRoaXMuX2NvbnRhaW5lci5vbigncGFzdGUnLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2KSB7XG4gICAgICAgICAgdmFyIGNsaXBib2FyZERhdGEsIGZpbGUsIGl0ZW0sIGosIGssIGxlbiwgbGVuMSwgcmVhZGVyLCByZWYsIHJlZjEsIHJlZjIsIHJlZjMsIHRleHQ7XG4gICAgICAgICAgaWYgKGV2LmN1cnJlbnRUYXJnZXQgIT09IGV2LnRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIF90aGlzLl9wYXN0ZV9ldmVudF9maXJlZCA9IHRydWU7XG4gICAgICAgICAgaWYgKCgocmVmID0gZXYub3JpZ2luYWxFdmVudCkgIT0gbnVsbCA/IHJlZi5jbGlwYm9hcmREYXRhIDogdm9pZCAwKSAhPSBudWxsKSB7XG4gICAgICAgICAgICBjbGlwYm9hcmREYXRhID0gZXYub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhO1xuICAgICAgICAgICAgaWYgKGNsaXBib2FyZERhdGEuaXRlbXMpIHtcbiAgICAgICAgICAgICAgcmVmMSA9IGNsaXBib2FyZERhdGEuaXRlbXM7XG4gICAgICAgICAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZjEubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpdGVtID0gcmVmMVtqXTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlLm1hdGNoKC9eaW1hZ2VcXC8vKSkge1xuICAgICAgICAgICAgICAgICAgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuX2hhbmRsZUltYWdlKGV2ZW50LnRhcmdldC5yZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGl0ZW0uZ2V0QXNGaWxlKCkpO1xuICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICd0ZXh0L3BsYWluJykge1xuICAgICAgICAgICAgICAgICAgaXRlbS5nZXRBc1N0cmluZyhmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVUZXh0Jywge1xuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHN0cmluZ1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKC0xICE9PSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGNsaXBib2FyZERhdGEudHlwZXMsICd0ZXh0L3BsYWluJykpIHtcbiAgICAgICAgICAgICAgICB0ZXh0ID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCdUZXh0Jyk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlVGV4dCcsIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgMSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgX3RoaXMuX2NoZWNrSW1hZ2VzSW5Db250YWluZXIoZnVuY3Rpb24oc3JjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLl9oYW5kbGVJbWFnZShzcmMpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNsaXBib2FyZERhdGEgPSB3aW5kb3cuY2xpcGJvYXJkRGF0YSkge1xuICAgICAgICAgICAgaWYgKChyZWYyID0gKHRleHQgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoJ1RleHQnKSkpICE9IG51bGwgPyByZWYyLmxlbmd0aCA6IHZvaWQgMCkge1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVUZXh0Jywge1xuICAgICAgICAgICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ19wYXN0ZUNoZWNrQ29udGFpbmVyRG9uZScpO1xuICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlZjMgPSBjbGlwYm9hcmREYXRhLmZpbGVzO1xuICAgICAgICAgICAgICBmb3IgKGsgPSAwLCBsZW4xID0gcmVmMy5sZW5ndGg7IGsgPCBsZW4xOyBrKyspIHtcbiAgICAgICAgICAgICAgICBmaWxlID0gcmVmM1trXTtcbiAgICAgICAgICAgICAgICBfdGhpcy5faGFuZGxlSW1hZ2UoVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgX3RoaXMuX2NoZWNrSW1hZ2VzSW5Db250YWluZXIoZnVuY3Rpb24oc3JjKSB7fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgIH1cblxuICAgIFBhc3RlLnByb3RvdHlwZS5faGFuZGxlSW1hZ2UgPSBmdW5jdGlvbihzcmMpIHtcbiAgICAgIHZhciBsb2FkZXI7XG4gICAgICBpZiAoc3JjLm1hdGNoKC9ed2Via2l0XFwtZmFrZVxcLXVybFxcOlxcL1xcLy8pKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVJbWFnZUVycm9yJywge1xuICAgICAgICAgIG1lc3NhZ2U6IFwiWW91IGFyZSB0cnlpbmcgdG8gcGFzdGUgYW4gaW1hZ2UgaW4gU2FmYXJpLCBob3dldmVyIHdlIGFyZSB1bmFibGUgdG8gcmV0aWV2ZSBpdHMgZGF0YS5cIlxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZUltYWdlU3RhcnQnKTtcbiAgICAgIGxvYWRlciA9IG5ldyBJbWFnZSgpO1xuICAgICAgbG9hZGVyLmNyb3NzT3JpZ2luID0gXCJhbm9ueW1vdXNcIjtcbiAgICAgIGxvYWRlci5vbmxvYWQgPSAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBibG9iLCBjYW52YXMsIGN0eCwgZGF0YVVSTDtcbiAgICAgICAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgICBjYW52YXMud2lkdGggPSBsb2FkZXIud2lkdGg7XG4gICAgICAgICAgY2FudmFzLmhlaWdodCA9IGxvYWRlci5oZWlnaHQ7XG4gICAgICAgICAgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShsb2FkZXIsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG4gICAgICAgICAgZGF0YVVSTCA9IG51bGw7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGRhdGFVUkwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICAgICAgICAgIGJsb2IgPSBkYXRhVVJMdG9CbG9iKGRhdGFVUkwpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgICAgIGlmIChkYXRhVVJMKSB7XG4gICAgICAgICAgICBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlSW1hZ2UnLCB7XG4gICAgICAgICAgICAgIGJsb2I6IGJsb2IsXG4gICAgICAgICAgICAgIGRhdGFVUkw6IGRhdGFVUkwsXG4gICAgICAgICAgICAgIHdpZHRoOiBsb2FkZXIud2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodDogbG9hZGVyLmhlaWdodFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlSW1hZ2VFbmQnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpO1xuICAgICAgbG9hZGVyLm9uZXJyb3IgPSAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVJbWFnZUVycm9yJywge1xuICAgICAgICAgICAgbWVzc2FnZTogXCJGYWlsZWQgdG8gZ2V0IGltYWdlIGZyb206IFwiICsgc3JjLFxuICAgICAgICAgICAgdXJsOiBzcmNcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZUltYWdlRW5kJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKTtcbiAgICAgIHJldHVybiBsb2FkZXIuc3JjID0gc3JjO1xuICAgIH07XG5cbiAgICBQYXN0ZS5wcm90b3R5cGUuX2NoZWNrSW1hZ2VzSW5Db250YWluZXIgPSBmdW5jdGlvbihjYikge1xuICAgICAgdmFyIGltZywgaiwgbGVuLCByZWYsIHRpbWVzcGFuO1xuICAgICAgdGltZXNwYW4gPSBNYXRoLmZsb29yKDEwMDAgKiBNYXRoLnJhbmRvbSgpKTtcbiAgICAgIHJlZiA9IHRoaXMuX2NvbnRhaW5lci5maW5kKCdpbWcnKTtcbiAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgICBpbWcgPSByZWZbal07XG4gICAgICAgIGltZ1tcIl9wYXN0ZV9tYXJrZWRfXCIgKyB0aW1lc3Bhbl0gPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgaywgbGVuMSwgcmVmMTtcbiAgICAgICAgICByZWYxID0gX3RoaXMuX2NvbnRhaW5lci5maW5kKCdpbWcnKTtcbiAgICAgICAgICBmb3IgKGsgPSAwLCBsZW4xID0gcmVmMS5sZW5ndGg7IGsgPCBsZW4xOyBrKyspIHtcbiAgICAgICAgICAgIGltZyA9IHJlZjFba107XG4gICAgICAgICAgICBpZiAoIWltZ1tcIl9wYXN0ZV9tYXJrZWRfXCIgKyB0aW1lc3Bhbl0pIHtcbiAgICAgICAgICAgICAgY2IoaW1nLnNyYyk7XG4gICAgICAgICAgICAgICQoaW1nKS5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIF90aGlzLl90YXJnZXQudHJpZ2dlcignX3Bhc3RlQ2hlY2tDb250YWluZXJEb25lJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSwgMSk7XG4gICAgfTtcblxuICAgIHJldHVybiBQYXN0ZTtcblxuICB9KSgpO1xuXG59KS5jYWxsKHRoaXMpO1xuXG4oZnVuY3Rpb24oJCxleHBvcnRzKXtcblxuXHR2YXIgaXNfY2hyb21lXHQ9IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignQ2hyb21lJykgPiAtMSxcblx0XHRjb3VudGVyID0gMCxcblx0XHR3b3JrZmxvdztcblx0XHRcblx0dGhlcGFzdGUgPSBleHBvcnRzLnRoZXBhc3RlID0gJC5leHRlbmQoIHtcblx0XHRzdXBwb3J0cyA6IHtcblx0XHRcdHBhc3RlOiAoICgncGFzdGUnIGluIGRvY3VtZW50KSB8fCAoJ29ucGFzdGUnIGluIGRvY3VtZW50KSB8fCB0eXBlb2Yod2luZG93Lm9ucGFzdGUpID09PSAnb2JqZWN0JyB8fCAoICdvbnBhc3RlJyBpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKSApICksIC8vIGJyb3dzZXJcblx0XHR9LFxuXHRcdHZpZXc6e30sXG5cdFx0XG5cdFx0aW5zZXJ0SW1hZ2U6ZnVuY3Rpb24oIGRhdGFVUkwsIHR5cGUsIGVkaXRvciApIHtcblx0XHRcdHZhciBpZCA9ICdfX3RoZXBhc3RlX2ltZ18nKyhjb3VudGVyKyspLFxuXHRcdFx0XHRpbWFnZUh0bWwgPSAnPGltZyBpZD1cIicraWQrJ1wiIGNsYXNzPVwiYWxpZ25ub25lIHNpemUtZnVsbFwiIHNyYz1cIicrZGF0YVVSTCsnXCIgLz4nLFxuXHRcdFx0XHQkY29udGFpbmVyO1xuXG5cblx0XHRcdGVkaXRvci5pbnNlcnRDb250ZW50KCBpbWFnZUh0bWwgKTtcblx0XHRcdFxuXHRcdFx0cmV0dXJuIGVkaXRvci4kKCcjJytpZClbMF07XG5cdFx0fSxcblxuXHRcdHVwbG9hZEltYWdlOiBmdW5jdGlvbiggaW1hZ2UsIGVkaXRvciApIHtcblxuXHRcdFx0dmFyIHhocixcblx0XHRcdFx0d29ya2Zsb3csIFxuXHRcdFx0XHQkY29udGFpbmVyLFxuXHRcdFx0XHRzcmMgPSBpbWFnZS5zcmMsXG5cdFx0XHRcdHVwbG9hZCA9IGZ1bmN0aW9uKCBkYXRhVVJMICl7XG5cdFx0XHRcdFx0dmFyIGlkID0gJ19fdGhlcGFzdGVfYm94XycrKGNvdW50ZXIrKyksXG5cdFx0XHRcdFx0XHR0eXBlID0gZGF0YVVSTC5tYXRjaCgvXmRhdGFcXDooW15cXDtdKylcXDsvKVsxXVxuXHRcdFx0XHRcdFx0ZmlsZSA9IG5ldyBvLkJsb2IoIG51bGwsIHsgZGF0YTogZGF0YVVSTCB9IClcblx0XHRcdFx0XHRcdHN1ZmZpeCA9IHRoZXBhc3RlLm9wdGlvbnMubWltZV90eXBlcy5jb252ZXJ0WyB0eXBlIF07XG5cblx0XHRcdFx0XHQkKGltYWdlKS53cmFwKCc8ZGl2IGlkPVwiJytpZCsnXCIgZGF0YS1wcm9ncmVzcz1cIjBcIiBjbGFzcz1cInRoZXBhc3RlLWltYWdlLXBsYWNlaG9sZGVyXCIgY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIj48L2Rpdj4nKTtcblx0XHRcdFx0XHQkY29udGFpbmVyID0gZWRpdG9yLiQoJyMnK2lkKTtcblxuXHRcdFx0XHRcdGZpbGUubmFtZSA9IHRoZXBhc3RlLmwxMG4ucGFzdGVkICsgJy4nICsgc3VmZml4O1xuXHRcdFx0XHRcdGZpbGUudHlwZSA9IHR5cGU7XG5cblx0XHRcdFx0XHR2YXIgYWRkRmlsZSA9IGZ1bmN0aW9uKCl7XG5cdFx0XHRcdFx0XHR3b3JrZmxvdy51cGxvYWRlci51cGxvYWRlci51cGxvYWRlci5hZGRGaWxlKCBmaWxlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggISB3b3JrZmxvdyApIHtcblx0XHRcdFx0XHRcdHdvcmtmbG93ID0gd3AubWVkaWEuZWRpdG9yLm9wZW4oIHdpbmRvdy53cEFjdGl2ZUVkaXRvciwge1xuXHRcdFx0XHRcdFx0XHRmcmFtZTpcdFx0J3Bvc3QnLFxuXHRcdFx0XHRcdFx0XHRzdGF0ZTpcdFx0J2luc2VydCcsXG5cdFx0XHRcdFx0XHRcdHRpdGxlOlx0XHR0aGVwYXN0ZS5sMTBuLmNvcHlfcGFzdGUsXG5cdFx0XHRcdFx0XHRcdG11bHRpcGxlOlx0ZmFsc2Vcblx0XHRcdFx0XHRcdH0gKTtcblxuXHRcdFx0XHRcdFx0d29ya2Zsb3cuY2xvc2UoKTtcblxuXHRcdFx0XHRcdFx0aWYgKCB3b3JrZmxvdy51cGxvYWRlci51cGxvYWRlciAmJiB3b3JrZmxvdy51cGxvYWRlci51cGxvYWRlci5yZWFkeSApIHtcblx0XHRcdFx0XHRcdFx0YWRkRmlsZSgpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0d29ya2Zsb3cub24oICd1cGxvYWRlcjpyZWFkeScsIGFkZEZpbGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0d29ya2Zsb3cuc3RhdGUoKS5yZXNldCgpO1xuXHRcdFx0XHRcdFx0YWRkRmlsZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR3b3JrZmxvdy51cGxvYWRlci51cGxvYWRlci51cGxvYWRlci5iaW5kKCdVcGxvYWRQcm9ncmVzcycsZnVuY3Rpb24oIGUgKXtcblx0XHRcdFx0XHRcdCRjb250YWluZXIuYXR0cignZGF0YS1wcm9ncmVzcycsZS50b3RhbC5wZXJjZW50KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR3b3JrZmxvdy51cGxvYWRlci51cGxvYWRlci51cGxvYWRlci5iaW5kKCdGaWxlVXBsb2FkZWQnLGZ1bmN0aW9uKCB1cCwgYXJncyApe1xuXHRcdFx0XHRcdFx0dmFyIGltZ0hUTUwgPSAnPGltZyBjbGFzcz1cImFsaWdubm9uZSB3cC1pbWFnZS0nK2FyZ3MuYXR0YWNobWVudC5pZCsnIHNpemUtZnVsbFwiIHNyYz1cIicrYXJncy5hdHRhY2htZW50LmNoYW5nZWQudXJsKydcIiAvPic7XG5cdFx0XHRcdFx0XHQvLyByZXBsYWNlIGltYWdlXG5cdFx0XHRcdFx0XHQkY29udGFpbmVyLnJlcGxhY2VXaXRoKCBpbWdIVE1MICk7XG5cdFx0XHRcdFx0XHQvLyByZXBsYWNlIG90aGVyIGluc3RhbmNlc1xuXHRcdFx0XHRcdFx0ZWRpdG9yLiQoJ2ltZ1tzcmM9XCInK3NyYysnXCJdJykuZWFjaChmdW5jdGlvbigpe1xuXHRcdFx0XHRcdFx0XHQkKHRoaXMpLnJlcGxhY2VXaXRoKCBpbWdIVE1MICk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR3b3JrZmxvdy51cGxvYWRlci51cGxvYWRlci51cGxvYWRlci5iaW5kKCdFcnJvcicsZnVuY3Rpb24oIHVwLCBhcmdzICl7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyh1cCxhcmdzKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fTtcblxuXHRcdFx0aWYgKCBzcmMuc3Vic3RyKDAsNSkgPT09ICdibG9iOicgKSB7XG5cblx0XHRcdFx0eGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG5cdFx0XHRcdHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYic7XG5cdFx0XHRcdHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpe1xuXHRcdFx0XHRcdHZhciByZWFkZXI7XG5cdFx0XHRcdFx0aWYgKCB4aHIucmVhZHlTdGF0ZSA9PSA0ICkge1xuXHRcdFx0XHRcdFx0cmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblx0XHRcdFx0XHRcdHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHRcdFx0XHR1cGxvYWQoIHJlYWRlci5yZXN1bHQgKTtcblxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmVhZGVyLnJlYWRBc0RhdGFVUkwoIHhoci5yZXNwb25zZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHR4aHIub3BlbiggJ0dFVCcsIHNyYyApO1xuXHRcdFx0XHR4aHIuc2VuZCggbnVsbCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBzcmMuc3Vic3RyKDAsNSkgPT09ICdkYXRhOicgKSB7XG5cblx0XHRcdFx0dXBsb2FkKCBzcmMgKTtcblxuXHRcdFx0fSBcblx0XHRcdFxuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKlx0QHJldHVybjogbnVsbHx0cnVlfGZhbHNlXG5cdFx0ICovXG5cdFx0Y2xpcGJvYXJkSGFzSW1hZ2U6ZnVuY3Rpb24oIGNsaXBib2FyZERhdGEgKSB7XG5cdFx0XHR2YXIgaGFzSW1hZ2UgPSBmYWxzZTtcblx0XHRcdGlmICggY2xpcGJvYXJkRGF0YS5pdGVtcyApIHtcblx0XHRcdFx0JC5lYWNoKCBjbGlwYm9hcmREYXRhLml0ZW1zLCBmdW5jdGlvbihpLGl0ZW0pe1xuXHRcdFx0XHRcdGlmICggaXRlbS50eXBlIGluIHRoZXBhc3RlLm9wdGlvbnMubWltZV90eXBlcy5wYXN0ZSApIHtcblx0XHRcdFx0XHRcdGhhc0ltYWdlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHRcdFx0cmV0dXJuIGhhc0ltYWdlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGNsaXBib2FyZERhdGEudHlwZXMgKSB7XG5cdFx0XHRcdCQuZWFjaCggdGhlcGFzdGUub3B0aW9ucy5taW1lX3R5cGVzLnBhc3RlLCBmdW5jdGlvbih0eXBlLGV4dCl7XG5cdFx0XHRcdFx0aWYgKCBjbGlwYm9hcmREYXRhLnR5cGVzLmluZGV4T2YodHlwZSkgPiAtMSApIHtcblx0XHRcdFx0XHRcdGhhc0ltYWdlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHRcdFx0cmV0dXJuIGhhc0ltYWdlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXG5cblx0fSwgdGhlcGFzdGUgKTtcblxufSkoIGpRdWVyeSwgd3AubWVkaWEgKTtcblxuXG4oZnVuY3Rpb24oJCxleHBvcnRzKXtcblxuXHR2YXIgY291bnRlciAgICAgID0gMCxcblx0XHRsMTBuID0gd3AubWVkaWEudGhlcGFzdGUubDEwbjtcblxuXHQkLmV4dGVuZCggd3AuVXBsb2FkZXIucHJvdG90eXBlLCB7XG5cdFx0c3VjY2VzcyA6IGZ1bmN0aW9uKCBmaWxlX2F0dGFjaG1lbnQgKXtcblx0XHR9XG5cdH0pO1xuXG5cblx0LyoqXG5cdCAqXHRJbnRlZ3JhdGUgaW50byBtZWRpYSBsaWJyYXJ5IG1vZGFsXG5cdCAqL1xuXHQvLyBhZGQgc3RhdGVzIHRvIGJyb3dzZSByb3V0ZXJcblx0Xy5leHRlbmQoIHdwLm1lZGlhLnZpZXcuTWVkaWFGcmFtZS5TZWxlY3QucHJvdG90eXBlLCB7XG5cdFx0X3BhcmVudEluaXRpYWxpemU6IHdwLm1lZGlhLnZpZXcuTWVkaWFGcmFtZS5TZWxlY3QucHJvdG90eXBlLmluaXRpYWxpemUsXG5cdFx0aW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLl9wYXJlbnRJbml0aWFsaXplLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdHRoaXMuYmluZFBhc3RlSGFuZGxlcnMoKTtcblx0XHR9LFxuXHRcdF9wYXJlbnRCcm93c2VSb3V0ZXI6IHdwLm1lZGlhLnZpZXcuTWVkaWFGcmFtZS5TZWxlY3QucHJvdG90eXBlLmJyb3dzZVJvdXRlcixcblx0XHRicm93c2VSb3V0ZXIgOiBmdW5jdGlvbiggdmlldyApIHtcblx0XHRcdHRoaXMuX3BhcmVudEJyb3dzZVJvdXRlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7XG5cblx0XHRcdGlmICggd3AubWVkaWEudGhlcGFzdGUuc3VwcG9ydHMucGFzdGUgKSB7XG5cdFx0XHRcdHZpZXcuc2V0KHtwYXN0ZWJvYXJkOntcblx0XHRcdFx0XHR0ZXh0OiAgICAgbDEwbi5jb3B5X3Bhc3RlLFxuXHRcdFx0XHRcdHByaW9yaXR5OiAzNVxuXHRcdFx0XHR9fSk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdGJpbmRQYXN0ZUhhbmRsZXJzOiBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBwcmV2aW91c0NvbnRlbnQgPSBmYWxzZTtcblx0XHRcblx0XHRcdC8vIGRpc21pc3MgY29udGVudCBvbiBjbG9zZVxuXHRcdFx0dGhpcy5vbiggJ2NvbnRlbnQ6cmVuZGVyIGNsb3NlJyAsIGZ1bmN0aW9uKGNvbnRlbnQpe1xuXHRcdFx0XHRpZiAoIHByZXZpb3VzQ29udGVudCAmJiAnZnVuY3Rpb24nID09PSB0eXBlb2YgcHJldmlvdXNDb250ZW50LmRpc21pc3MgKSB7XG5cdFx0XHRcdFx0cHJldmlvdXNDb250ZW50LmRpc21pc3MoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YgY29udGVudCApXG5cdFx0XHRcdFx0cHJldmlvdXNDb250ZW50ID0gY29udGVudDtcblx0XHRcdH0gLCB0aGlzICk7XG5cdFx0XG5cdFx0XHR0aGlzLm9uKCAnY29udGVudDpjcmVhdGU6cGFzdGVib2FyZCcsIHRoaXMuY29udGVudENyZWF0ZVBhc3RlYm9hcmQsIHRoaXMgKTtcblx0XHRcdHRoaXMub24oICdjb250ZW50OnJlbmRlcjpwYXN0ZWJvYXJkJywgdGhpcy5jb250ZW50UmVuZGVyR3JhYmJlciwgdGhpcyApO1xuXG5cdFx0XHRmcmFtZSA9IHRoaXM7XG5cdFx0fSxcblx0XHQvLyBhZGQgaGFuZGxlcnNcblx0XHRjb250ZW50Q3JlYXRlUGFzdGVib2FyZDogZnVuY3Rpb24oIGNvbnRlbnQgKSB7XG5cdFx0XHR2YXIgc3RhdGUgPSB0aGlzLnN0YXRlKCk7XG5cblx0XHRcdHRoaXMuY3VycmVudFBhc3RlVmlldyA9IGNvbnRlbnQudmlldyA9IG5ldyB3cC5tZWRpYS50aGVwYXN0ZS52aWV3LkRhdGFTb3VyY2VJbWFnZUdyYWJiZXIoIHsgXG5cdFx0XHRcdGNvbnRyb2xsZXJcdDogdGhpcywgXG5cdFx0XHRcdGdyYWJiZXJcdFx0OiB3cC5tZWRpYS50aGVwYXN0ZS52aWV3LlBhc3RlYm9hcmRcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5saXN0ZW5UbyggdGhpcy5jdXJyZW50UGFzdGVWaWV3LnVwbG9hZGVyLCAnYWN0aW9uOnVwbG9hZGVkOmRhdGFpbWFnZScsIHRoaXMudXBsb2FkZWREYXRhSW1hZ2UgKTtcblx0XHR9LFxuXHRcdGNvbnRlbnRSZW5kZXJHcmFiYmVyOiBmdW5jdGlvbiggY29udGVudCApIHtcblx0XHRcdGNvbnRlbnQuc3RhcnRHcmFiYmluZygpO1xuXHRcdH0sXG5cdFx0dXBsb2FkZWREYXRhSW1hZ2U6IGZ1bmN0aW9uKCBjb250ZW50ICkge1xuXHRcdFx0dGhpcy5zdG9wTGlzdGVuaW5nKCB0aGlzLmN1cnJlbnRQYXN0ZVZpZXcudXBsb2FkZXIsICdhY3Rpb246dXBsb2FkZWQ6ZGF0YWltYWdlJyApO1xuXHRcdFx0dmFyIG9iaiA9IHsgdmlldzogbnVsbCB9O1xuXHRcdFx0dGhpcy5icm93c2VDb250ZW50KG9iaik7XG5cdFx0XHR0aGlzLmNvbnRlbnQuc2V0KCBvYmoudmlldyApO1xuXHRcdFx0dGhpcy5yb3V0ZXIuZ2V0KCkuc2VsZWN0KCdicm93c2UnKVxuXHRcdH1cblx0fSk7XG5cdFxuXG5cblx0LyoqXG5cdCAqXHRBZGQgcGFzdGUgYnV0dG9uIHRvIHRvb2xiYXIgb24gdXBsb2FkLnBocFxuXHQgKi9cblx0Xy5leHRlbmQoIHdwLm1lZGlhLnZpZXcuQXR0YWNobWVudHNCcm93c2VyLnByb3RvdHlwZSwge1xuXHRcdF9wYXJlbnRJbml0aWFsaXplOlx0d3AubWVkaWEudmlldy5BdHRhY2htZW50c0Jyb3dzZXIucHJvdG90eXBlLmluaXRpYWxpemUsXG5cdFx0aW5pdGlhbGl6ZTpcdGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHNlbGYgPSB0aGlzLFxuXHRcdFx0XHRwYXN0ZUJ0bjtcblxuXHRcdFx0dGhpcy5fcGFyZW50SW5pdGlhbGl6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7XG5cdFx0XHRcblx0XHRcdHRoaXMudGhlcGFzdGUgPSB7XG5cdFx0XHRcdHBhc3RlXHQ6IHtcbi8vXHRcdFx0XHRcdGJ1dHRvblx0OiBmYWxzZSxcblx0XHRcdFx0XHRncmFiYmVyXHQ6IGZhbHNlLFxuXHRcdFx0XHRcdG1vZGFsXHQ6IGZhbHNlLFxuXHRcdFx0XHRcdG1vZGVcdDogJ3Bhc3RlJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Y3VycmVudFx0XHQ6IGZhbHNlXG5cdFx0XHR9XG5cblx0XHRcdGlmICggISAoIHRoaXMuY29udHJvbGxlciBpbnN0YW5jZW9mIHdwLm1lZGlhLnZpZXcuTWVkaWFGcmFtZS5TZWxlY3QgKSApIHtcblxuXHRcdFx0XHRpZiAoIHdwLm1lZGlhLnRoZXBhc3RlLnN1cHBvcnRzLnBhc3RlICkge1xuXG5cdFx0XHRcdFx0cGFzdGVCdG4gPSBuZXcgd3AubWVkaWEudmlldy5CdXR0b24oIHtcblx0XHRcdFx0XHRcdHRleHRcdFx0OiBsMTBuLmNvcHlfcGFzdGUsXG5cdFx0XHRcdFx0XHRjbGFzc05hbWU6ICAnZ3JhYmJlci1idXR0b24nLFxuXHRcdFx0XHRcdFx0cHJpb3JpdHlcdDogLTY0LFxuXHRcdFx0XHRcdFx0Y2xpY2s6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRzZWxmLnRoZXBhc3RlLmFjdGl2ZSA9IHNlbGYudGhlcGFzdGUucGFzdGU7XG5cdFx0XHRcdFx0XHRcdHNlbGYudGhlcGFzdGVPcGVuKCBsMTBuLmNvcHlfcGFzdGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0dGhpcy50aGVwYXN0ZS5wYXN0ZS5ncmFiYmVyID0gbmV3IHdwLm1lZGlhLnRoZXBhc3RlLnZpZXcuRGF0YVNvdXJjZUltYWdlR3JhYmJlcigge1xuXHRcdFx0XHRcdFx0Y29udHJvbGxlclx0OiB0aGlzLmNvbnRyb2xsZXIsXG5cdFx0XHRcdFx0XHRncmFiYmVyXHRcdDogd3AubWVkaWEudGhlcGFzdGUudmlldy5QYXN0ZWJvYXJkLFxuXHRcdFx0XHRcdFx0d3B1cGxvYWRlclx0OiB0aGlzLmNvbnRyb2xsZXIudXBsb2FkZXIudXBsb2FkZXIudXBsb2FkZXJcblx0XHRcdFx0XHR9ICk7XG5cblx0XHRcdFx0XHR0aGlzLnRvb2xiYXIuc2V0KCAncGFzdGVNb2RlQnV0dG9uJywgcGFzdGVCdG4ucmVuZGVyKCkgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0dGhlcGFzdGVVcGxvYWRlZDogZnVuY3Rpb24oIGUgKSB7XG5cdFx0XHR0aGlzLnRoZXBhc3RlLmFjdGl2ZS5ncmFiYmVyLmRpc21pc3MoKTtcblx0XHRcdHRoaXMudGhlcGFzdGUubW9kYWwuY2xvc2UoKTtcblx0XHRcdHRoaXMudGhlcGFzdGVDbG9zZSgpO1xuXHRcdH0sXG5cdFx0dGhlcGFzdGVFcnJvcjogZnVuY3Rpb24oIGUgKSB7XG5cdFx0XHRjb25zb2xlLmxvZyggJ2Vycm9yJywgZSApO1xuXHRcdH0sXG5cdFx0dGhlcGFzdGVPcGVuOiBmdW5jdGlvbiggdGl0bGUgKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cblx0XHRcdHRoaXMudGhlcGFzdGUubW9kYWwgID0gIG5ldyB3cC5tZWRpYS52aWV3Lk1vZGFsKCB7XG5cdFx0XHRcdGNvbnRyb2xsZXIgOiB0aGlzLFxuXHRcdFx0XHR0aXRsZSAgICAgIDogdGl0bGVcblx0XHRcdH0gKTtcblx0XHRcdHRoaXMudGhlcGFzdGUubW9kYWwuY29udGVudCggdGhpcy50aGVwYXN0ZS5hY3RpdmUuZ3JhYmJlciApO1xuXHRcdFx0dGhpcy50aGVwYXN0ZS5tb2RhbC5vcGVuKCk7XG5cblx0XHRcdHRoaXMudGhlcGFzdGUubW9kYWwub24oICdjbG9zZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRzZWxmLnRoZXBhc3RlQ2xvc2UuYXBwbHkoc2VsZik7XG5cdFx0XHRcdHNlbGYudGhlcGFzdGUuYWN0aXZlLmdyYWJiZXIuc3RvcEdyYWJiaW5nKCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy50aGVwYXN0ZS5hY3RpdmUuZ3JhYmJlci5zdGFydEdyYWJiaW5nKCk7XG5cblx0XHRcdHRoaXMubGlzdGVuVG8oIHRoaXMudGhlcGFzdGUuYWN0aXZlLmdyYWJiZXIudXBsb2FkZXIsICdhY3Rpb246dXBsb2FkZWQ6ZGF0YWltYWdlJywgdGhpcy50aGVwYXN0ZVVwbG9hZGVkICk7XG5cdFx0XHR0aGlzLmxpc3RlblRvKCB0aGlzLnRoZXBhc3RlLmFjdGl2ZS5ncmFiYmVyLnVwbG9hZGVyLCAnZXJyb3I6dXBsb2FkZWQ6ZGF0YWltYWdlJywgdGhpcy50aGVwYXN0ZUVycm9yICk7XG5cdFx0fSxcblx0XHR0aGVwYXN0ZUNsb3NlOiBmdW5jdGlvbigpIHtcblxuXHRcdFx0dGhpcy5jb250cm9sbGVyLmRlYWN0aXZhdGVNb2RlKCB0aGlzLnRoZXBhc3RlLmFjdGl2ZS5tb2RlICkuYWN0aXZhdGVNb2RlKCAnZWRpdCcgKTtcblxuXHRcdFx0dGhpcy5zdG9wTGlzdGVuaW5nKCB0aGlzLnRoZXBhc3RlLmFjdGl2ZS5ncmFiYmVyLnVwbG9hZGVyLCAnYWN0aW9uOnVwbG9hZGVkOmRhdGFpbWFnZScgKTtcblx0XHRcdHRoaXMuc3RvcExpc3RlbmluZyggdGhpcy50aGVwYXN0ZS5hY3RpdmUuZ3JhYmJlci51cGxvYWRlciwgJ2Vycm9yOnVwbG9hZGVkOmRhdGFpbWFnZScgKTtcblx0XHR9XG5cdH0pO1xuXHRcbn0pKGpRdWVyeSx3aW5kb3cpO1xuXG4oZnVuY3Rpb24oJCx3aW5kb3csbyl7XG5cdHZhciB0aGVwYXN0ZSA9IHdwLm1lZGlhLnRoZXBhc3RlLFxuXHRcdEJ1dHRvbiA9IHdwLm1lZGlhLnZpZXcuQnV0dG9uLFxuXHRcdE1vZGFsICA9IHdwLm1lZGlhLnZpZXcuTW9kYWwsXG5cdFx0bDEwbiAgID0gdGhlcGFzdGUubDEwbjtcblxuXG5cdHdwLm1lZGlhLnRoZXBhc3RlLnZpZXcuRGF0YVNvdXJjZUltYWdlVXBsb2FkZXIgPSB3cC5tZWRpYS5WaWV3LmV4dGVuZCh7XG5cdFx0dGVtcGxhdGU6IHdwLnRlbXBsYXRlKCd0aGVwYXN0ZS11cGxvYWRlcicpLFxuXHRcdGNsYXNzTmFtZTogJ3RoZXBhc3RlLXVwbG9hZGVyJyxcblx0XHRjb250cm9sbGVyOm51bGwsXG5cdFx0aW1hZ2UgOiBudWxsLFxuXHRcdCRkaXNjYXJkQnRuIDogbnVsbCxcblx0XHQkdXBsb2FkQnRuIDogbnVsbCxcblx0XHRcblx0XHR1cGxvYWRlciA6IG51bGwsXG5cdFx0XG5cdFx0ZXZlbnRzIDoge1xuXHRcdFx0J2NsaWNrIFtkYXRhLWFjdGlvbj1cInVwbG9hZFwiXSdcdDogJ3VwbG9hZEltYWdlJyxcblx0XHRcdCdjbGljayBbZGF0YS1hY3Rpb249XCJkaXNjYXJkXCJdJ1x0OiAnZGlzY2FyZEltYWdlJyxcblx0XHR9LFxuXHRcdGluaXRpYWxpemUgOiBmdW5jdGlvbigpIHtcblxuXHRcdFx0d3AubWVkaWEuVmlldy5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cblx0XHRcdF8uZGVmYXVsdHMoIHRoaXMub3B0aW9ucywge1xuXHRcdFx0XHRkZWZhdWx0RmlsZU5hbWUgOiBsMTBuLmltYWdlXG5cdFx0XHR9KTtcblx0XHRcdHZhciBzZWxmID0gdGhpcyxcblx0XHRcdFx0aW5zdHIgPSBuZXcgd3AubWVkaWEuVmlldyh7XG5cdFx0XHRcdHRhZ05hbWUgICAgOiAnZGl2Jyxcblx0XHRcdFx0Y2xhc3NOYW1lICA6ICdpbnN0cnVtZW50cycsXG5cdFx0XHRcdGNvbnRyb2xsZXIgOiB0aGlzLmNvbnRyb2xsZXJcblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLnVwbG9hZGVyID0gdGhpcy5vcHRpb25zLnVwbG9kZXI7XG5cdFx0fSxcblx0XHRzZXRJbWFnZURhdGEgOiBmdW5jdGlvbiggZGF0YSApIHtcblx0XHRcdHZhciBjb250YWluZXIgPSB0aGlzLiRpbWFnZUNvbnRhaW5lci5odG1sKCcnKS5nZXQoMCksXG5cdFx0XHRcdHNlbGYgPSB0aGlzLFxuXHRcdFx0XHRmb3JtYXQgPSBkYXRhLm1hdGNoKC9kYXRhOihpbWFnZVxcLyhcXHcrKSk7LylbMV07XG5cblx0XHRcdGlmICggISB0aGVwYXN0ZS5vcHRpb25zLm1pbWVfdHlwZXMuY29udmVydFtmb3JtYXRdICkge1xuXHRcdFx0XHRmb3JtYXQgPSB0aGlzLm9wdGlvbnMuZGVmYXVsdEZpbGVGb3JtYXQ7XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdGlmICggdGhpcy5pbWFnZSApIHtcblx0XHRcdFx0dGhpcy5pbWFnZS5kZXN0cm95KCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuaW1hZ2UgPSBuZXcgby5JbWFnZSgpO1xuXHRcdFx0dGhpcy5pbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIG9wdHMgPSBzZWxmLmdldFVwbG9hZGVyKCkuZ2V0T3B0aW9uKCdyZXNpemUnKSxcblx0XHRcdFx0XHRzY2FsZSA9IE1hdGgubWF4KCBvcHRzLndpZHRoIC8gdGhpcy53aWR0aCwgb3B0cy5oZWlnaHQgLyB0aGlzLmhlaWdodCApO1xuXG5cdFx0XHRcdCEhb3B0cyAmJiAoc2NhbGUgPCAxKSAmJiB0aGlzLmRvd25zaXplKCB0aGlzLndpZHRoKnNjYWxlLCB0aGlzLmhlaWdodCpzY2FsZSApO1xuXG5cdFx0XHRcdHRoaXMuZW1iZWQoIGNvbnRhaW5lciApO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmltYWdlLmxvYWQoIGRhdGEgKTtcblx0XHRcdGlmICggdGhpcy4kaW1hZ2VDb250YWluZXIgKSB7XG5cdFx0XHRcdHRoaXMuJGltYWdlQ29udGFpbmVyLmFwcGVuZCh0aGlzLmltYWdlKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuJCgnW2RhdGEtc2V0dGluZz1cImZvcm1hdFwiXSBpbnB1dFt2YWx1ZT1cIicrZm9ybWF0KydcIl0nKS5wcm9wKCAnY2hlY2tlZCcsIHRydWUgKTtcblxuXG5cdFx0XHR0aGlzLmRpc2FibGVkKGZhbHNlKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0cmVuZGVyIDogZnVuY3Rpb24oKSB7XG5cdFx0XHR3cC5tZWRpYS5WaWV3LnByb3RvdHlwZS5yZW5kZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO1xuXHRcdFx0dGhpcy4kaW1hZ2VDb250YWluZXIgPSB0aGlzLiQoJy5pbWFnZS1jb250YWluZXInKTtcblx0XHRcdHRoaXMuJGRpc2NhcmRCdG4gPSB0aGlzLiQoJ1tkYXRhLWFjdGlvbj1cImRpc2NhcmRcIl0nKTtcblx0XHRcdHRoaXMuJHVwbG9hZEJ0biA9IHRoaXMuJCgnW2RhdGEtYWN0aW9uPVwidXBsb2FkXCJdJyk7XG5cdFx0XHR0aGlzLiQoJ1tkYXRhLXNldHRpbmc9XCJ0aXRsZVwiXScpLnZhbCggdGhpcy5vcHRpb25zLmRlZmF1bHRGaWxlTmFtZSApO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHRkaXNjYXJkSW1hZ2UgOiBmdW5jdGlvbigpe1xuXHRcdFx0dGhpcy50cmlnZ2VyKCAnYWN0aW9uOmRpc2NhcmQ6ZGF0YWltYWdlJyAsIHRoaXMgKTtcblx0XHRcdHRoaXMudW5iaW5kVXBsb2FkZXJFdmVudHMoKTtcblx0XHR9LFxuXHRcdHVwbG9hZEltYWdlIDogZnVuY3Rpb24oKSB7XG5cblx0XHRcdHZhciB0eXBlID0gdGhpcy4kKCdbZGF0YS1zZXR0aW5nPVwiZm9ybWF0XCJdIDpjaGVja2VkJykudmFsKCksXG5cdFx0XHRcdHN1ZmZpeCA9IHRoZXBhc3RlLm9wdGlvbnMubWltZV90eXBlcy5jb252ZXJ0WyB0eXBlIF0sXG5cdFx0XHRcdG5hbWUgPSB0aGlzLiQoJ2lucHV0W2RhdGEtc2V0dGluZz1cInRpdGxlXCJdJykudmFsKCkgKyAnLicgKyBzdWZmaXgsXG5cdFx0XHRcdGJsb2IgPSB0aGlzLmltYWdlLmdldEFzQmxvYiggdHlwZSwgdGhlcGFzdGUub3B0aW9ucy5qcGVnX3F1YWxpdHkgKTtcblxuXHRcdFx0dGhpcy5iaW5kVXBsb2FkZXJFdmVudHMoKTtcblxuXHRcdFx0YmxvYi5kZXRhY2goIGJsb2IuZ2V0U291cmNlKCkgKTtcblx0XHRcdGJsb2IubmFtZSA9IG5hbWU7XG5cdFx0XHRibG9iLnR5cGUgPSB0eXBlO1xuXHRcdFx0dGhpcy5nZXRVcGxvYWRlcigpLmFkZEZpbGUoIGJsb2IgLCBuYW1lICk7XG5cblx0XHRcdHRoaXMuZGlzYWJsZWQoIHRydWUgKTtcblxuXHRcdFx0dGhpcy50cmlnZ2VyKCAnYWN0aW9uOnVwbG9hZDpkYXRhaW1hZ2UnICwgdGhpcyApO1xuXHRcdH0sXG5cdFx0c2hvdzpmdW5jdGlvbigpe1xuXHRcdFx0dGhpcy4kZWwuc2hvdygpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHRoaWRlOmZ1bmN0aW9uKCl7XG5cdFx0XHR0aGlzLiRlbC5oaWRlKCk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdGRpc2FibGVkIDogZnVuY3Rpb24oIGRpc2FibGVkICkge1xuXHRcdFx0dGhpcy4kZGlzY2FyZEJ0bi5wcm9wKCAnZGlzYWJsZWQnLCBkaXNhYmxlZCApO1xuXHRcdFx0dGhpcy4kdXBsb2FkQnRuLnByb3AoICdkaXNhYmxlZCcsIGRpc2FibGVkICk7XG5cdFx0fSxcblx0XHRfdXBsb2FkU3VjY2Vzc0hhbmRsZXIgOiBmdW5jdGlvbigpIHtcblx0XHRcdHRoaXMudHJpZ2dlciggJ2FjdGlvbjp1cGxvYWRlZDpkYXRhaW1hZ2UnICk7XG5cdFx0XHR0aGlzLmRpc2FibGVkKGZhbHNlKTtcblx0XHRcdHRoaXMudW5iaW5kVXBsb2FkZXJFdmVudHMoKTtcblx0XHR9LFxuXHRcdF91cGxvYWRFcnJvckhhbmRsZXIgOiBmdW5jdGlvbigpIHtcblx0XHRcdHRoaXMudHJpZ2dlciggJ2Vycm9yOnVwbG9hZGVkOmRhdGFpbWFnZScgKTtcblx0XHRcdHRoaXMuZGlzYWJsZWQoZmFsc2UpO1xuXHRcdFx0dGhpcy51bmJpbmRVcGxvYWRlckV2ZW50cygpO1xuXHRcdH0sXG5cdFx0YmluZFVwbG9hZGVyRXZlbnRzIDogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLmdldFVwbG9hZGVyKCkuYmluZCggJ0ZpbGVVcGxvYWRlZCcsXHR0aGlzLl91cGxvYWRTdWNjZXNzSGFuZGxlcixcdHRoaXMgKTtcblx0XHRcdHRoaXMuZ2V0VXBsb2FkZXIoKS5iaW5kKCAnRXJyb3InLFx0XHRcdHRoaXMuX3VwbG9hZEVycm9ySGFuZGxlcixcdHRoaXMgKTtcblx0XHR9LFxuXHRcdHVuYmluZFVwbG9hZGVyRXZlbnRzIDogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLmdldFVwbG9hZGVyKCkudW5iaW5kKCAnRmlsZVVwbG9hZGVkJyxcdHRoaXMuX3VwbG9hZFN1Y2Nlc3NIYW5kbGVyLFx0dGhpcyApO1xuXHRcdFx0dGhpcy5nZXRVcGxvYWRlcigpLnVuYmluZCggJ0Vycm9yJyxcdFx0XHR0aGlzLl91cGxvYWRFcnJvckhhbmRsZXIsXHR0aGlzICk7XG5cdFx0fSxcblx0XHRnZXRVcGxvYWRlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb250cm9sbGVyLnVwbG9hZGVyLnVwbG9hZGVyLnVwbG9hZGVyO1xuXHRcdH1cblx0fSk7XG5cblxuXHR3cC5tZWRpYS50aGVwYXN0ZS52aWV3LlBhc3RlYm9hcmQgPSB3cC5tZWRpYS5WaWV3LmV4dGVuZCh7XG5cdFx0dGVtcGxhdGU6IHdwLnRlbXBsYXRlKCd0aGVwYXN0ZS1wYXN0ZWJvYXJkJyksXG5cdFx0Y2xhc3NOYW1lOiAndGhlcGFzdGUtcGFzdGVib2FyZCcsXG5cdFx0Y29udHJvbGxlcjpudWxsLFxuXHRcdGFjdGlvbjoncGFzdGUnLFxuXHRcdCRwYXN0ZWJvYXJkIDogbnVsbCxcblxuXHRcdHJlbmRlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cdFx0XHR3cC5tZWRpYS5WaWV3LnByb3RvdHlwZS5yZW5kZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO1xuXHRcdFx0dGhpcy4kcGFzdGVib2FyZCA9IHRoaXMuJCggJy5pbmplY3RvcicgKS5wYXN0YWJsZUNvbnRlbnRlZGl0YWJsZSgpO1xuXHRcdFx0dGhpcy4kbWVzc2FnZSA9IHRoaXMuJCggJy5tZXNzYWdlJyApO1xuXHRcdFx0dGhpcy4kcGFzdGVib2FyZC5vbignY2xpY2snLCBmdW5jdGlvbigpe1xuXHRcdFx0XHRzZWxmLnNob3dfbWVzc2FnZSgnJyk7XG5cdFx0XHR9ICk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdHN0YXJ0IDogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXMsXG5cdFx0XHRcdGNsaXBib2FyZEhhc0ltYWdlO1xuXG5cdFx0XHR0aGlzLmltYWdlUGFzdGVkID0gZmFsc2U7XG5cblx0XHRcdHRoaXMuJHBhc3RlYm9hcmRcblx0XHRcdFx0Lm9uKCdwYXN0ZScsZnVuY3Rpb24oZSl7XG5cdFx0XHRcdFx0Y2xpcGJvYXJkSGFzSW1hZ2UgPSB3cC5tZWRpYS50aGVwYXN0ZS5jbGlwYm9hcmRIYXNJbWFnZShlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5vbigncGFzdGVUZXh0JyAsIGZ1bmN0aW9uKCBlLCBkYXRhICkge1xuXG5cdFx0XHRcdFx0aWYgKCBjbGlwYm9hcmRIYXNJbWFnZSB8fCBzZWxmLmltYWdlUGFzdGVkICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzZWxmLnNob3dfbWVzc2FnZSggbDEwbi5wYXN0ZV9lcnJvcl9ub19pbWFnZSApO1xuXHRcdFx0XHRcdCQoIHRoaXMgKS5odG1sKCcnKTtcblx0XHRcdFx0fSApXG5cdFx0XHRcdC5vbigncGFzdGVJbWFnZScgLCBmdW5jdGlvbiggZSwgZGF0YSApIHtcblx0XHRcdFx0XHRpZiAoIHNlbGYuaW1hZ2VQYXN0ZWQgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNlbGYudHJpZ2dlciggJ2FjdGlvbjpjcmVhdGU6ZGF0YWltYWdlJywgdGhpcyAsIGRhdGEuZGF0YVVSTCApO1xuXHRcdFx0XHRcdHNlbGYuaW1hZ2VQYXN0ZWQgPSB0cnVlO1xuXHRcdFx0XHR9IClcblx0XHRcdFx0Lm9uKCdwYXN0ZUltYWdlRXJyb3InICwgZnVuY3Rpb24oIGUsIGRhdGEgKSB7XG5cdFx0XHRcdFx0c2VsZi5zaG93X21lc3NhZ2UoIGwxMG4ucGFzdGVfZXJyb3IgKTtcblx0XHRcdFx0XHQkKCB0aGlzICkuaHRtbCgnJyk7XG5cdFx0XHRcdH0gKVxuXHRcdFx0XHQ7XG5cblx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcblx0XHRcdFx0c2VsZi4kcGFzdGVib2FyZC5nZXQoMCkuZm9jdXMoKTtcblx0XHRcdH0sMSk7XG5cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0c3RvcCA6IGZ1bmN0aW9uKCkge1xuXHRcdFx0dGhpcy4kcGFzdGVib2FyZFxuXHRcdFx0XHQub2ZmKCdwYXN0ZUltYWdlJylcblx0XHRcdFx0Lm9mZigncGFzdGVJbWFnZUVycm9yJylcblx0XHRcdFx0Lm9mZigncGFzdGVUZXh0Jyk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdHNob3c6ZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLiRlbC5zaG93KCk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdGhpZGU6ZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLiRlbC5oaWRlKCk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdHNob3dfbWVzc2FnZTpmdW5jdGlvbiggbXNnICkge1xuXHRcdFx0dGhpcy4kbWVzc2FnZS50ZXh0KCBtc2cgKTtcblx0XHR9XG5cdH0pO1xuXG5cdHdwLm1lZGlhLnRoZXBhc3RlLnZpZXcuRGF0YVNvdXJjZUltYWdlR3JhYmJlciA9IHdwLm1lZGlhLlZpZXcuZXh0ZW5kKHtcbi8vXHRcdHRhZ05hbWU6ICAgJ2RpdicsXG5cdFx0dGVtcGxhdGU6IHdwLnRlbXBsYXRlKCd0aGVwYXN0ZS1ncmFiYmVyJyksXG5cdFx0Y2xhc3NOYW1lIDogJ3RoZXBhc3RlLWdyYWJiZXInLFxuXHRcdFxuXHRcdGdyYWJiZXIgOiBudWxsLFxuXHRcdHVwbG9hZGVyIDogbnVsbCxcblx0XHRcblx0XHRpbml0aWFsaXplIDogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgcmV0ID0gd3AubWVkaWEuVmlldy5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cblx0XHRcdF8uZGVmYXVsdHMoIHRoaXMub3B0aW9ucywge1xuXHRcdFx0XHR3cHVwbG9hZGVyXHRcdDogbnVsbCxcblx0XHRcdFx0ZGVmYXVsdEZpbGVOYW1lXHQ6IGwxMG4ucGFzdGVkLFxuXHRcdFx0XHRkZWZhdWx0RmlsZUZvcm1hdCA6ICdpbWFnZS9wbmcnLFxuXHRcdFx0XHR0aXRsZVx0XHRcdDogbDEwbi5jb3B5X3Bhc3RlIFxuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMuZ3JhYmJlciAgPSBuZXcgdGhpcy5vcHRpb25zLmdyYWJiZXIoIHsgY29udHJvbGxlclx0OiB0aGlzLmNvbnRyb2xsZXIgfSApO1xuXG5cdFx0XHR0aGlzLnVwbG9hZGVyID0gbmV3IHdwLm1lZGlhLnRoZXBhc3RlLnZpZXcuRGF0YVNvdXJjZUltYWdlVXBsb2FkZXIoIHtcdFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udHJvbGxlclx0XHRcdDogdGhpcy5jb250cm9sbGVyLFxuXHRcdFx0XHRcdFx0XHRcdFx0dXBsb2Rlclx0XHRcdFx0OiB0aGlzLm9wdGlvbnMud3B1cGxvYWRlcixcblx0XHRcdFx0XHRcdFx0XHRcdGRlZmF1bHRGaWxlTmFtZVx0XHQ6IHRoaXMub3B0aW9ucy5kZWZhdWx0RmlsZU5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0RmlsZUZvcm1hdFx0OiB0aGlzLm9wdGlvbnMuZGVmYXVsdEZpbGVGb3JtYXRcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdHRoaXMucmVuZGVyKCk7XG5cblx0XHRcdHRoaXMubGlzdGVuVG8oIHRoaXMuZ3JhYmJlciwgJ2FjdGlvbjpjcmVhdGU6ZGF0YWltYWdlJyxcdHRoaXMuaW1hZ2VDcmVhdGVkICk7XG5cdFx0XHR0aGlzLmxpc3RlblRvKCB0aGlzLnVwbG9hZGVyLCAnYWN0aW9uOmRpc2NhcmQ6ZGF0YWltYWdlJyxcdHRoaXMuc3RhcnRHcmFiYmluZyApO1xuXG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH0sXG5cdFx0cmVuZGVyOmZ1bmN0aW9uKCl7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cblx0XHRcdHdwLm1lZGlhLlZpZXcucHJvdG90eXBlLnJlbmRlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cblx0XHRcdHRoaXMuJCgnLmNvbnRlbnQnKVxuXHRcdFx0XHQuYXBwZW5kKCB0aGlzLmdyYWJiZXIucmVuZGVyKCkuJGVsIClcblx0XHRcdFx0LmFwcGVuZCggdGhpcy51cGxvYWRlci5yZW5kZXIoKS4kZWwgKTtcblxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHRpbWFnZUNyZWF0ZWQgOiBmdW5jdGlvbiggZ3JhYmJlciAsIGltYWdlRGF0YSApIHtcblx0XHRcdHRoaXMuZ3JhYmJlci5zdG9wKCkuaGlkZSgpO1xuXHRcdFx0dGhpcy51cGxvYWRlci5zaG93KCkuc2V0SW1hZ2VEYXRhKCBpbWFnZURhdGEgKTtcblx0XHR9LFxuXHRcdHN0YXJ0R3JhYmJpbmc6ZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLnVwbG9hZGVyLmhpZGUoKTtcblx0XHRcdHRoaXMuZ3JhYmJlci5zaG93KCkuc3RhcnQoKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0c3RvcEdyYWJiaW5nOmZ1bmN0aW9uKCkge1xuXHRcdFx0dGhpcy5ncmFiYmVyLnN0b3AoKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0Z2V0QWN0aW9uIDogZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5ncmFiYmVyLmFjdGlvbjtcblx0XHR9LFxuXHRcdGRpc21pc3M6ZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLmdyYWJiZXIuc3RvcCgpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHR9KTtcblxufSkoalF1ZXJ5LHdpbmRvdyxtT3hpZSk7XG4iXX0= 
     1(function(){var e,t,a,i,n;e=window.jQuery,e.paste=function(e){var a;return"undefined"!=typeof console&&null!==console&&console.log("DEPRECATED: This method is deprecated. Please use $.fn.pastableNonInputable() instead."),a=t.mountNonInputable(e),a._container},e.fn.pastableNonInputable=function(){var a,i,n,r;for(r=this,i=0,n=r.length;i<n;i++)a=r[i],a._pastable||e(a).is("textarea, input:text, [contenteditable]")||(t.mountNonInputable(a),a._pastable=!0);return this},e.fn.pastableTextarea=function(){var a,i,n,r;for(r=this,i=0,n=r.length;i<n;i++)a=r[i],a._pastable||e(a).is(":not(textarea, input:text)")||(t.mountTextarea(a),a._pastable=!0);return this},e.fn.pastableContenteditable=function(){var a,i,n,r;for(r=this,i=0,n=r.length;i<n;i++)a=r[i],a._pastable||e(a).is(":not([contenteditable])")||(t.mountContenteditable(a),a._pastable=!0);return this},i=function(e,t){var a,i,n,r,o,s,l,p,d,u,c;if(null==t&&(t=512),!(p=e.match(/^data\:([^\;]+)\;base64\,(.+)$/)))return null;for(u=p,p=u[0],s=u[1],a=u[2],r=atob(a),n=[],d=0;d<r.length;){for(c=r.slice(d,d+t),o=new Array(c.length),l=0;l<c.length;)o[l]=c.charCodeAt(l),l++;i=new Uint8Array(o),n.push(i),d+=t}return new Blob(n,{type:s})},a=function(){return e(document.createElement("div")).attr("contenteditable",!0).attr("aria-hidden",!0).attr("tabindex",-1).css({width:1,height:1,position:"fixed",left:-100,overflow:"hidden"})},n=function(t,a){var i,n,r,o,s,l;return o=void 0,s=void 0,r=void 0,n=void 0,i=void 0,"area"===(l=t.nodeName.toLowerCase())?(o=t.parentNode,s=o.name,!(!t.href||!s||"map"!==o.nodeName.toLowerCase())&&(r=e("img[usemap='#"+s+"']"),r.length>0&&r.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(l)?(n=!t.disabled)&&(i=e(t).closest("fieldset")[0])&&(n=!i.disabled):n="a"===l?t.href||a:a,(n=n||e(t).is("[contenteditable]"))&&e(t).is(":visible"))},t=function(){function t(t,a){this._container=t,this._target=a,this._container=e(this._container),this._target=e(this._target).addClass("pastable"),this._container.on("paste",function(e){return function(t){var a,i,n,r,o,s,l,p,d,u,c,h,g;if(t.currentTarget!==t.target)return t.preventDefault();if(e._paste_event_fired=!0,null!=(null!=(d=t.originalEvent)?d.clipboardData:void 0))if(a=t.originalEvent.clipboardData,a.items)for(u=a.items,r=0,s=u.length;r<s;r++){if(n=u[r],n.type.match(/^image\//)){p=new FileReader,p.onload=function(t){return e._handleImage(t.target.result)};try{p.readAsDataURL(n.getAsFile())}catch(e){}t.preventDefault();break}"text/plain"===n.type&&n.getAsString(function(t){return e._target.trigger("pasteText",{text:t})})}else-1!==Array.prototype.indexOf.call(a.types,"text/plain")&&(g=a.getData("Text"),setTimeout(function(){return e._target.trigger("pasteText",{text:g})},1)),e._checkImagesInContainer(function(t){return e._handleImage(t)});if(a=window.clipboardData)if(null!=(c=g=a.getData("Text"))?c.length:void 0)setTimeout(function(){return e._target.trigger("pasteText",{text:g}),e._target.trigger("_pasteCheckContainerDone")},1);else{for(h=a.files,o=0,l=h.length;o<l;o++)i=h[o],e._handleImage(URL.createObjectURL(i));e._checkImagesInContainer(function(e){})}return null}}(this))}return t.prototype._target=null,t.prototype._container=null,t.mountNonInputable=function(i){var r;return r=new t(a().appendTo(i),i),e(i).on("click",function(e){return function(e){if(!n(e.target,!1))return r._container.focus()}}()),r._container.on("focus",function(t){return function(){return e(i).addClass("pastable-focus")}}()),r._container.on("blur",function(t){return function(){return e(i).removeClass("pastable-focus")}}())},t.mountTextarea=function(i){var n,r,o,s;return("undefined"!=typeof DataTransfer&&null!==DataTransfer?DataTransfer.prototype:void 0)&&(null!=(o=Object.getOwnPropertyDescriptor)&&null!=(s=o.call(Object,DataTransfer.prototype,"items"))?s.get:void 0)?this.mountContenteditable(i):(r=new t(a().insertBefore(i),i),n=!1,e(i).on("keyup",function(e){var t;return 17!==(t=e.keyCode)&&224!==t||(n=!1),null}),e(i).on("keydown",function(t){var a;return 17!==(a=t.keyCode)&&224!==a||(n=!0),null!=t.ctrlKey&&null!=t.metaKey&&(n=t.ctrlKey||t.metaKey),n&&86===t.keyCode&&(r._textarea_focus_stolen=!0,r._container.focus(),r._paste_event_fired=!1,setTimeout(function(t){return function(){if(!r._paste_event_fired)return e(i).focus(),r._textarea_focus_stolen=!1}}(),1)),null}),e(i).on("paste",function(e){return function(){}}()),e(i).on("focus",function(t){return function(){if(!r._textarea_focus_stolen)return e(i).addClass("pastable-focus")}}()),e(i).on("blur",function(t){return function(){if(!r._textarea_focus_stolen)return e(i).removeClass("pastable-focus")}}()),e(r._target).on("_pasteCheckContainerDone",function(t){return function(){return e(i).focus(),r._textarea_focus_stolen=!1}}()),e(r._target).on("pasteText",function(t){return function(t,a){var n,r,o;return o=e(i).prop("selectionStart"),r=e(i).prop("selectionEnd"),n=e(i).val(),e(i).val(""+n.slice(0,o)+a.text+n.slice(r)),e(i)[0].setSelectionRange(o+a.text.length,o+a.text.length),e(i).trigger("change")}}()))},t.mountContenteditable=function(a){return new t(a,a),e(a).on("focus",function(t){return function(){return e(a).addClass("pastable-focus")}}()),e(a).on("blur",function(t){return function(){return e(a).removeClass("pastable-focus")}}())},t.prototype._handleImage=function(e){var t;return e.match(/^webkit\-fake\-url\:\/\//)?this._target.trigger("pasteImageError",{message:"You are trying to paste an image in Safari, however we are unable to retieve its data."}):(this._target.trigger("pasteImageStart"),t=new Image,t.crossOrigin="anonymous",t.onload=function(e){return function(){var a,n,r,o;n=document.createElement("canvas"),n.width=t.width,n.height=t.height,r=n.getContext("2d"),r.drawImage(t,0,0,n.width,n.height),o=null;try{o=n.toDataURL("image/png"),a=i(o)}catch(e){}return o&&e._target.trigger("pasteImage",{blob:a,dataURL:o,width:t.width,height:t.height}),e._target.trigger("pasteImageEnd")}}(this),t.onerror=function(t){return function(){return t._target.trigger("pasteImageError",{message:"Failed to get image from: "+e,url:e}),t._target.trigger("pasteImageEnd")}}(this),t.src=e)},t.prototype._checkImagesInContainer=function(t){var a,i,n,r,o;for(o=Math.floor(1e3*Math.random()),r=this._container.find("img"),i=0,n=r.length;i<n;i++)a=r[i],a["_paste_marked_"+o]=!0;return setTimeout(function(i){return function(){var n,r,s;for(s=i._container.find("img"),n=0,r=s.length;n<r;n++)a=s[n],a["_paste_marked_"+o]||(t(a.src),e(a).remove());return i._target.trigger("_pasteCheckContainerDone")}}(this),1)},t}()}).call(this),function(e,t){var a=(navigator.userAgent.indexOf("Chrome"),0);thepaste=t.thepaste=e.extend({supports:{paste:"paste"in document||"onpaste"in document||"object"==typeof window.onpaste||"onpaste"in document.createElement("DIV")},view:{},insertImage:function(e,t,i){var n="__thepaste_img_"+a++,r='<img id="'+n+'" class="alignnone size-full" src="'+e+'" />';return i.insertContent(r),i.$("#"+n)[0]},uploadImage:function(t,i){var n,r,s,l=t.src,p=function(n){var p="__thepaste_box_"+a++,d=n.match(/^data\:([^\;]+)\;/)[1];file=new o.Blob(null,{data:n}),suffix=thepaste.options.mime_types.convert[d],"undefined"==typeof suffix&&console.trace("bad type: "+d),e(t).wrap('<div id="'+p+'" data-progress="0" class="thepaste-image-placeholder" contenteditable="false"></div>'),s=i.$("#"+p),file.name=thepaste.l10n.pasted+"."+suffix,file.type=d;var u=function(){r.uploader.uploader.uploader.addFile(file)};r?(r.state().reset(),u()):(r=wp.media.editor.open(window.wpActiveEditor,{frame:"post",state:"insert",title:thepaste.l10n.copy_paste,multiple:!1}),r.close(),r.uploader.uploader&&r.uploader.uploader.ready?u():r.on("uploader:ready",u)),r.uploader.uploader.uploader.bind("UploadProgress",function(e){s.attr("data-progress",e.total.percent)}),r.uploader.uploader.uploader.bind("FileUploaded",function(t,a){var n='<img class="alignnone wp-image-'+a.attachment.id+' size-full" src="'+a.attachment.changed.url+'" />';s.replaceWith(n),i.$('img[src="'+l+'"]').each(function(){e(this).replaceWith(n)})}),r.uploader.uploader.uploader.bind("Error",function(e,t){console.log(e,t)})};"blob:"===l.substr(0,5)?(n=new XMLHttpRequest,n.responseType="blob",n.onreadystatechange=function(){var e;4==n.readyState&&(e=new FileReader,e.onload=function(){p(e.result)},e.readAsDataURL(new Blob([n.response],{type:"image/png"})))},n.open("GET",l),n.send(null)):"data:"===l.substr(0,5)&&p(l)},clipboardHasImage:function(t){var a=!1;return t.items?(e.each(t.items,function(e,t){if(t.type in thepaste.options.mime_types.paste)return a=!0,!1}),a):t.types?(e.each(thepaste.options.mime_types.paste,function(e,i){if(t.types.indexOf(e)>-1)return a=!0,!1}),a):null}},thepaste)}(jQuery,wp.media),function(e,t){var a=wp.media.thepaste.l10n;e.extend(wp.Uploader.prototype,{success:function(e){}}),_.extend(wp.media.view.MediaFrame.Select.prototype,{_parentInitialize:wp.media.view.MediaFrame.Select.prototype.initialize,initialize:function(){this._parentInitialize.apply(this,arguments),this.bindPasteHandlers()},_parentBrowseRouter:wp.media.view.MediaFrame.Select.prototype.browseRouter,browseRouter:function(e){this._parentBrowseRouter.apply(this,arguments),wp.media.thepaste.supports.paste&&e.set({pasteboard:{text:a.copy_paste,priority:35}})},bindPasteHandlers:function(){var e=!1;this.on("content:render close",function(t){e&&"function"==typeof e.dismiss&&e.dismiss(),void 0!==t&&(e=t)},this),this.on("content:create:pasteboard",this.contentCreatePasteboard,this),this.on("content:render:pasteboard",this.contentRenderGrabber,this),frame=this},contentCreatePasteboard:function(e){this.state();this.currentPasteView=e.view=new wp.media.thepaste.view.DataSourceImageGrabber({controller:this,grabber:wp.media.thepaste.view.Pasteboard}),this.listenTo(this.currentPasteView.uploader,"action:uploaded:dataimage",this.uploadedDataImage)},contentRenderGrabber:function(e){e.startGrabbing()},uploadedDataImage:function(e){this.stopListening(this.currentPasteView.uploader,"action:uploaded:dataimage");var t={view:null};this.browseContent(t),this.content.set(t.view),this.router.get().select("browse")}}),_.extend(wp.media.view.AttachmentsBrowser.prototype,{_parentInitialize:wp.media.view.AttachmentsBrowser.prototype.initialize,initialize:function(){var e,t=this;this._parentInitialize.apply(this,arguments),this.thepaste={paste:{grabber:!1,modal:!1,mode:"paste"},current:!1},this.controller instanceof wp.media.view.MediaFrame.Select||wp.media.thepaste.supports.paste&&(e=new wp.media.view.Button({text:a.copy_paste,className:"grabber-button",priority:-64,click:function(){t.thepaste.active=t.thepaste.paste,t.thepasteOpen(a.copy_paste)}}),this.thepaste.paste.grabber=new wp.media.thepaste.view.DataSourceImageGrabber({controller:this.controller,grabber:wp.media.thepaste.view.Pasteboard,wpuploader:this.controller.uploader.uploader.uploader}),this.toolbar.set("pasteModeButton",e.render()))},thepasteUploaded:function(e){this.thepaste.active.grabber.dismiss(),this.thepaste.modal.close(),this.thepasteClose()},thepasteError:function(e){console.log("error",e)},thepasteOpen:function(e){var t=this;this.thepaste.modal=new wp.media.view.Modal({controller:this,title:e}),this.thepaste.modal.content(this.thepaste.active.grabber),this.thepaste.modal.open(),this.thepaste.modal.on("close",function(){t.thepasteClose.apply(t),t.thepaste.active.grabber.stopGrabbing()}),this.thepaste.active.grabber.startGrabbing(),this.listenTo(this.thepaste.active.grabber.uploader,"action:uploaded:dataimage",this.thepasteUploaded),this.listenTo(this.thepaste.active.grabber.uploader,"error:uploaded:dataimage",this.thepasteError)},thepasteClose:function(){this.controller.deactivateMode(this.thepaste.active.mode).activateMode("edit"),this.stopListening(this.thepaste.active.grabber.uploader,"action:uploaded:dataimage"),this.stopListening(this.thepaste.active.grabber.uploader,"error:uploaded:dataimage")}})}(jQuery,window),function(e,t,a){var i=wp.media.thepaste,n=(wp.media.view.Button,wp.media.view.Modal,i.l10n);wp.media.thepaste.view.DataSourceImageUploader=wp.media.View.extend({template:wp.template("thepaste-uploader"),className:"thepaste-uploader",controller:null,image:null,$discardBtn:null,$uploadBtn:null,uploader:null,events:{'click [data-action="upload"]':"uploadImage",'click [data-action="discard"]':"discardImage"},initialize:function(){wp.media.View.prototype.initialize.apply(this,arguments),_.defaults(this.options,{defaultFileName:n.image});new wp.media.View({tagName:"div",className:"instruments",controller:this.controller});this.uploader=this.options.uploder},setImageData:function(e){var t=this.$imageContainer.html("").get(0),n=this,r=e.match(/data:(image\/(\w+));/)[1];return i.options.mime_types.convert[r]||(r=this.options.defaultFileFormat),this.image&&this.image.destroy(),this.image=new a.Image,this.image.onload=function(){var e=n.getUploader().getOption("resize"),a=Math.max(e.width/this.width,e.height/this.height);!!e&&a<1&&this.downsize(this.width*a,this.height*a),this.embed(t)},this.image.load(e),this.$imageContainer&&this.$imageContainer.append(this.image),this.$('[data-setting="format"] input[value="'+r+'"]').prop("checked",!0),this.disabled(!1),this},render:function(){return wp.media.View.prototype.render.apply(this,arguments),this.$imageContainer=this.$(".image-container"),this.$discardBtn=this.$('[data-action="discard"]'),this.$uploadBtn=this.$('[data-action="upload"]'),this.$('[data-setting="title"]').val(this.options.defaultFileName),this},discardImage:function(){this.trigger("action:discard:dataimage",this),this.unbindUploaderEvents()},uploadImage:function(){var e=this.$('[data-setting="format"] :checked').val(),t=i.options.mime_types.convert[e],a=this.$('input[data-setting="title"]').val()+"."+t,n=this.image.getAsBlob(e,i.options.jpeg_quality);this.bindUploaderEvents(),n.detach(n.getSource()),n.name=a,n.type=e,this.getUploader().addFile(n,a),this.disabled(!0),this.trigger("action:upload:dataimage",this)},show:function(){return this.$el.show(),this},hide:function(){return this.$el.hide(),this},disabled:function(e){this.$discardBtn.prop("disabled",e),this.$uploadBtn.prop("disabled",e)},_uploadSuccessHandler:function(){this.trigger("action:uploaded:dataimage"),this.disabled(!1),this.unbindUploaderEvents()},_uploadErrorHandler:function(){this.trigger("error:uploaded:dataimage"),this.disabled(!1),this.unbindUploaderEvents()},bindUploaderEvents:function(){this.getUploader().bind("FileUploaded",this._uploadSuccessHandler,this),this.getUploader().bind("Error",this._uploadErrorHandler,this)},unbindUploaderEvents:function(){this.getUploader().unbind("FileUploaded",this._uploadSuccessHandler,this),this.getUploader().unbind("Error",this._uploadErrorHandler,this)},getUploader:function(){return this.controller.uploader.uploader.uploader}}),wp.media.thepaste.view.Pasteboard=wp.media.View.extend({template:wp.template("thepaste-pasteboard"),className:"thepaste-pasteboard",controller:null,action:"paste",$pasteboard:null,render:function(){var e=this;return wp.media.View.prototype.render.apply(this,arguments),this.$pasteboard=this.$(".injector").pastableContenteditable(),this.$message=this.$(".message"),this.$pasteboard.on("click",function(){e.show_message("")}),this},start:function(){var t,a=this;return this.imagePasted=!1,this.$pasteboard.on("paste",function(e){t=wp.media.thepaste.clipboardHasImage(e.originalEvent.clipboardData)}).on("pasteText",function(i,r){t||a.imagePasted||(a.show_message(n.paste_error_no_image),e(this).html(""))}).on("pasteImage",function(e,t){a.imagePasted||(a.trigger("action:create:dataimage",this,t.dataURL),a.imagePasted=!0)}).on("pasteImageError",function(t,i){a.show_message(n.paste_error),e(this).html("")}),setTimeout(function(){a.$pasteboard.get(0).focus()},1),this},stop:function(){return this.$pasteboard.off("pasteImage").off("pasteImageError").off("pasteText"),this},show:function(){return this.$el.show(),this},hide:function(){return this.$el.hide(),this},show_message:function(e){this.$message.text(e)}}),wp.media.thepaste.view.DataSourceImageGrabber=wp.media.View.extend({template:wp.template("thepaste-grabber"),className:"thepaste-grabber",grabber:null,uploader:null,initialize:function(){var e=wp.media.View.prototype.initialize.apply(this,arguments);return _.defaults(this.options,{wpuploader:null,defaultFileName:n.pasted,defaultFileFormat:"image/png",title:n.copy_paste}),this.grabber=new this.options.grabber({controller:this.controller}),this.uploader=new wp.media.thepaste.view.DataSourceImageUploader({controller:this.controller,uploder:this.options.wpuploader,defaultFileName:this.options.defaultFileName,defaultFileFormat:this.options.defaultFileFormat}),this.render(),this.listenTo(this.grabber,"action:create:dataimage",this.imageCreated),this.listenTo(this.uploader,"action:discard:dataimage",this.startGrabbing),e},render:function(){return wp.media.View.prototype.render.apply(this,arguments),this.$(".content").append(this.grabber.render().$el).append(this.uploader.render().$el),this},imageCreated:function(e,t){this.grabber.stop().hide(),this.uploader.show().setImageData(t)},startGrabbing:function(){return this.uploader.hide(),this.grabber.show().start(),this},stopGrabbing:function(){return this.grabber.stop(),this},getAction:function(){return this.grabber.action},dismiss:function(){return this.grabber.stop(),this}})}(jQuery,window,mOxie); 
     2//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRoZS1wYXN0ZS5qcyJdLCJuYW1lcyI6WyIkIiwiUGFzdGUiLCJjcmVhdGVIaWRkZW5FZGl0YWJsZSIsImRhdGFVUkx0b0Jsb2IiLCJpc0ZvY3VzYWJsZSIsIndpbmRvdyIsImpRdWVyeSIsInBhc3RlIiwicGFzdGVDb250YWluZXIiLCJwbSIsImNvbnNvbGUiLCJsb2ciLCJtb3VudE5vbklucHV0YWJsZSIsIl9jb250YWluZXIiLCJmbiIsInBhc3RhYmxlTm9uSW5wdXRhYmxlIiwiZWwiLCJqIiwibGVuIiwicmVmIiwidGhpcyIsImxlbmd0aCIsIl9wYXN0YWJsZSIsImlzIiwicGFzdGFibGVUZXh0YXJlYSIsIm1vdW50VGV4dGFyZWEiLCJwYXN0YWJsZUNvbnRlbnRlZGl0YWJsZSIsIm1vdW50Q29udGVudGVkaXRhYmxlIiwiZGF0YVVSTCIsInNsaWNlU2l6ZSIsImI2NERhdGEiLCJieXRlQXJyYXkiLCJieXRlQXJyYXlzIiwiYnl0ZUNoYXJhY3RlcnMiLCJieXRlTnVtYmVycyIsImNvbnRlbnRUeXBlIiwiaSIsIm0iLCJvZmZzZXQiLCJzbGljZSIsIm1hdGNoIiwiYXRvYiIsIkFycmF5IiwiY2hhckNvZGVBdCIsIlVpbnQ4QXJyYXkiLCJwdXNoIiwiQmxvYiIsInR5cGUiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJhdHRyIiwiY3NzIiwid2lkdGgiLCJoZWlnaHQiLCJwb3NpdGlvbiIsImxlZnQiLCJvdmVyZmxvdyIsImVsZW1lbnQiLCJoYXNUYWJpbmRleCIsImZpZWxkc2V0IiwiZm9jdXNhYmxlSWZWaXNpYmxlIiwiaW1nIiwibWFwIiwibWFwTmFtZSIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJwYXJlbnROb2RlIiwibmFtZSIsImhyZWYiLCJ0ZXN0IiwiZGlzYWJsZWQiLCJjbG9zZXN0IiwiX3RhcmdldCIsImFkZENsYXNzIiwib24iLCJfdGhpcyIsImV2IiwiY2xpcGJvYXJkRGF0YSIsImZpbGUiLCJpdGVtIiwiayIsImxlbjEiLCJyZWFkZXIiLCJyZWYxIiwicmVmMiIsInJlZjMiLCJ0ZXh0IiwiY3VycmVudFRhcmdldCIsInRhcmdldCIsInByZXZlbnREZWZhdWx0IiwiX3Bhc3RlX2V2ZW50X2ZpcmVkIiwib3JpZ2luYWxFdmVudCIsIml0ZW1zIiwiRmlsZVJlYWRlciIsIm9ubG9hZCIsImV2ZW50IiwiX2hhbmRsZUltYWdlIiwicmVzdWx0IiwicmVhZEFzRGF0YVVSTCIsImdldEFzRmlsZSIsImVycm9yIiwiZ2V0QXNTdHJpbmciLCJzdHJpbmciLCJ0cmlnZ2VyIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImNhbGwiLCJ0eXBlcyIsImdldERhdGEiLCJzZXRUaW1lb3V0IiwiX2NoZWNrSW1hZ2VzSW5Db250YWluZXIiLCJzcmMiLCJmaWxlcyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIm5vbklucHV0YWJsZSIsImFwcGVuZFRvIiwiZm9jdXMiLCJyZW1vdmVDbGFzcyIsInRleHRhcmVhIiwiY3RsRG93biIsIkRhdGFUcmFuc2ZlciIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldCIsImluc2VydEJlZm9yZSIsImtleUNvZGUiLCJjdHJsS2V5IiwibWV0YUtleSIsIl90ZXh0YXJlYV9mb2N1c19zdG9sZW4iLCJkYXRhIiwiY29udGVudCIsImN1ckVuZCIsImN1clN0YXJ0IiwicHJvcCIsInZhbCIsInNldFNlbGVjdGlvblJhbmdlIiwiY29udGVudGVkaXRhYmxlIiwibG9hZGVyIiwibWVzc2FnZSIsIkltYWdlIiwiY3Jvc3NPcmlnaW4iLCJibG9iIiwiY2FudmFzIiwiY3R4IiwiZ2V0Q29udGV4dCIsImRyYXdJbWFnZSIsInRvRGF0YVVSTCIsIm9uZXJyb3IiLCJ1cmwiLCJjYiIsInRpbWVzcGFuIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwiZmluZCIsInJlbW92ZSIsImV4cG9ydHMiLCJjb3VudGVyIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwidGhlcGFzdGUiLCJleHRlbmQiLCJzdXBwb3J0cyIsInZpZXciLCJpbnNlcnRJbWFnZSIsImVkaXRvciIsImlkIiwiaW1hZ2VIdG1sIiwiaW5zZXJ0Q29udGVudCIsInVwbG9hZEltYWdlIiwiaW1hZ2UiLCJ4aHIiLCJ3b3JrZmxvdyIsIiRjb250YWluZXIiLCJ1cGxvYWQiLCJvIiwic3VmZml4Iiwib3B0aW9ucyIsIm1pbWVfdHlwZXMiLCJjb252ZXJ0IiwidHJhY2UiLCJ3cmFwIiwibDEwbiIsInBhc3RlZCIsImFkZEZpbGUiLCJ1cGxvYWRlciIsInN0YXRlIiwicmVzZXQiLCJ3cCIsIm1lZGlhIiwib3BlbiIsIndwQWN0aXZlRWRpdG9yIiwiZnJhbWUiLCJ0aXRsZSIsImNvcHlfcGFzdGUiLCJtdWx0aXBsZSIsImNsb3NlIiwicmVhZHkiLCJiaW5kIiwiZSIsInRvdGFsIiwicGVyY2VudCIsInVwIiwiYXJncyIsImltZ0hUTUwiLCJhdHRhY2htZW50IiwiY2hhbmdlZCIsInJlcGxhY2VXaXRoIiwiZWFjaCIsInN1YnN0ciIsIlhNTEh0dHBSZXF1ZXN0IiwicmVzcG9uc2VUeXBlIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInJlc3BvbnNlIiwic2VuZCIsImNsaXBib2FyZEhhc0ltYWdlIiwiaGFzSW1hZ2UiLCJleHQiLCJVcGxvYWRlciIsInN1Y2Nlc3MiLCJmaWxlX2F0dGFjaG1lbnQiLCJfIiwiTWVkaWFGcmFtZSIsIlNlbGVjdCIsIl9wYXJlbnRJbml0aWFsaXplIiwiaW5pdGlhbGl6ZSIsImFwcGx5IiwiYXJndW1lbnRzIiwiYmluZFBhc3RlSGFuZGxlcnMiLCJfcGFyZW50QnJvd3NlUm91dGVyIiwiYnJvd3NlUm91dGVyIiwic2V0IiwicGFzdGVib2FyZCIsInByaW9yaXR5IiwicHJldmlvdXNDb250ZW50IiwiZGlzbWlzcyIsImNvbnRlbnRDcmVhdGVQYXN0ZWJvYXJkIiwiY29udGVudFJlbmRlckdyYWJiZXIiLCJjdXJyZW50UGFzdGVWaWV3IiwiRGF0YVNvdXJjZUltYWdlR3JhYmJlciIsImNvbnRyb2xsZXIiLCJncmFiYmVyIiwiUGFzdGVib2FyZCIsImxpc3RlblRvIiwidXBsb2FkZWREYXRhSW1hZ2UiLCJzdGFydEdyYWJiaW5nIiwic3RvcExpc3RlbmluZyIsIm9iaiIsImJyb3dzZUNvbnRlbnQiLCJyb3V0ZXIiLCJzZWxlY3QiLCJBdHRhY2htZW50c0Jyb3dzZXIiLCJwYXN0ZUJ0biIsInNlbGYiLCJtb2RhbCIsIm1vZGUiLCJjdXJyZW50IiwiQnV0dG9uIiwiY2xhc3NOYW1lIiwiY2xpY2siLCJhY3RpdmUiLCJ0aGVwYXN0ZU9wZW4iLCJ3cHVwbG9hZGVyIiwidG9vbGJhciIsInJlbmRlciIsInRoZXBhc3RlVXBsb2FkZWQiLCJ0aGVwYXN0ZUNsb3NlIiwidGhlcGFzdGVFcnJvciIsIk1vZGFsIiwic3RvcEdyYWJiaW5nIiwiZGVhY3RpdmF0ZU1vZGUiLCJhY3RpdmF0ZU1vZGUiLCJEYXRhU291cmNlSW1hZ2VVcGxvYWRlciIsIlZpZXciLCJ0ZW1wbGF0ZSIsIiRkaXNjYXJkQnRuIiwiJHVwbG9hZEJ0biIsImV2ZW50cyIsImNsaWNrIFtkYXRhLWFjdGlvbj1cInVwbG9hZFwiXSIsImNsaWNrIFtkYXRhLWFjdGlvbj1cImRpc2NhcmRcIl0iLCJkZWZhdWx0cyIsImRlZmF1bHRGaWxlTmFtZSIsInRhZ05hbWUiLCJ1cGxvZGVyIiwic2V0SW1hZ2VEYXRhIiwiY29udGFpbmVyIiwiJGltYWdlQ29udGFpbmVyIiwiaHRtbCIsImZvcm1hdCIsImRlZmF1bHRGaWxlRm9ybWF0IiwiZGVzdHJveSIsIm9wdHMiLCJnZXRVcGxvYWRlciIsImdldE9wdGlvbiIsInNjYWxlIiwibWF4IiwiZG93bnNpemUiLCJlbWJlZCIsImxvYWQiLCJhcHBlbmQiLCJkaXNjYXJkSW1hZ2UiLCJ1bmJpbmRVcGxvYWRlckV2ZW50cyIsImdldEFzQmxvYiIsImpwZWdfcXVhbGl0eSIsImJpbmRVcGxvYWRlckV2ZW50cyIsImRldGFjaCIsImdldFNvdXJjZSIsInNob3ciLCIkZWwiLCJoaWRlIiwiX3VwbG9hZFN1Y2Nlc3NIYW5kbGVyIiwiX3VwbG9hZEVycm9ySGFuZGxlciIsInVuYmluZCIsImFjdGlvbiIsIiRwYXN0ZWJvYXJkIiwiJG1lc3NhZ2UiLCJzaG93X21lc3NhZ2UiLCJzdGFydCIsImltYWdlUGFzdGVkIiwicGFzdGVfZXJyb3Jfbm9faW1hZ2UiLCJwYXN0ZV9lcnJvciIsInN0b3AiLCJvZmYiLCJtc2ciLCJyZXQiLCJpbWFnZUNyZWF0ZWQiLCJpbWFnZURhdGEiLCJnZXRBY3Rpb24iLCJtT3hpZSJdLCJtYXBwaW5ncyI6IkNBUUEsV0FDRSxHQUFJQSxHQUFHQyxFQUFPQyxFQUFzQkMsRUFBZUMsQ0FFbkRKLEdBQUlLLE9BQU9DLE9BRVhOLEVBQUVPLE1BQVEsU0FBU0MsR0FDakIsR0FBSUMsRUFLSixPQUp1QixtQkFBWkMsVUFBdUMsT0FBWkEsU0FDcENBLFFBQVFDLElBQUksMEZBRWRGLEVBQUtSLEVBQU1XLGtCQUFrQkosR0FDdEJDLEVBQUdJLFlBR1piLEVBQUVjLEdBQUdDLHFCQUF1QixXQUMxQixHQUFJQyxHQUFJQyxFQUFHQyxFQUFLQyxDQUVoQixLQURBQSxFQUFNQyxLQUNESCxFQUFJLEVBQUdDLEVBQU1DLEVBQUlFLE9BQVFKLEVBQUlDLEVBQUtELElBQ3JDRCxFQUFLRyxFQUFJRixHQUNMRCxFQUFHTSxXQUFhdEIsRUFBRWdCLEdBQUlPLEdBQUcsNkNBRzdCdEIsRUFBTVcsa0JBQWtCSSxHQUN4QkEsRUFBR00sV0FBWSxFQUVqQixPQUFPRixPQUdUcEIsRUFBRWMsR0FBR1UsaUJBQW1CLFdBQ3RCLEdBQUlSLEdBQUlDLEVBQUdDLEVBQUtDLENBRWhCLEtBREFBLEVBQU1DLEtBQ0RILEVBQUksRUFBR0MsRUFBTUMsRUFBSUUsT0FBUUosRUFBSUMsRUFBS0QsSUFDckNELEVBQUtHLEVBQUlGLEdBQ0xELEVBQUdNLFdBQWF0QixFQUFFZ0IsR0FBSU8sR0FBRyxnQ0FHN0J0QixFQUFNd0IsY0FBY1QsR0FDcEJBLEVBQUdNLFdBQVksRUFFakIsT0FBT0YsT0FHVHBCLEVBQUVjLEdBQUdZLHdCQUEwQixXQUM3QixHQUFJVixH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RSxHQUVSNUQsT0FBTyxXQVNOLE1BTkE3RSxJQUFHQyxNQUFNcUYsS0FBSzNLLFVBQVVrSyxPQUFPdEMsTUFBT2hOLEtBQU1pTixXQUU1Q2pOLEtBQUtwQixFQUFFLFlBQ0w2UyxPQUFRelIsS0FBSytOLFFBQVF1QixTQUFTNEMsS0FDOUJULE9BQVF6UixLQUFLc0ssU0FBU2dGLFNBQVM0QyxLQUUxQmxTLE1BRVJtVCxhQUFlLFNBQVVwRixFQUFVcUYsR0FDbENwVCxLQUFLK04sUUFBUWdGLE9BQU9aLE9BQ3BCblMsS0FBS3NLLFNBQVMySCxPQUFPdkIsYUFBYzBDLElBRXBDakYsY0FBYyxXQUdiLE1BRkFuTyxNQUFLc0ssU0FBUzZILE9BQ2RuUyxLQUFLK04sUUFBUWtFLE9BQU9VLFFBQ2IzUyxNQUVSMlAsYUFBYSxXQUVaLE1BREEzUCxNQUFLK04sUUFBUWdGLE9BQ04vUyxNQUVScVQsVUFBWSxXQUNYLE1BQU9yVCxNQUFLK04sUUFBUXdFLFFBRXJCOUUsUUFBUSxXQUVQLE1BREF6TixNQUFLK04sUUFBUWdGLE9BQ04vUyxTQUlQZCxPQUFPRCxPQUFPcVUiLCJmaWxlIjoidGhlLXBhc3RlLm1pbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi43XG5cbi8qXG5wYXN0ZS5qcyBpcyBhbiBpbnRlcmZhY2UgdG8gcmVhZCBkYXRhICggdGV4dCAvIGltYWdlICkgZnJvbSBjbGlwYm9hcmQgaW4gZGlmZmVyZW50IGJyb3dzZXJzLiBJdCBhbHNvIGNvbnRhaW5zIHNldmVyYWwgaGFja3MuXG5cbmh0dHBzOi8vZ2l0aHViLmNvbS9sYXllcnNzc3MvcGFzdGUuanNcbiAqL1xuXG4oZnVuY3Rpb24oKSB7XG4gIHZhciAkLCBQYXN0ZSwgY3JlYXRlSGlkZGVuRWRpdGFibGUsIGRhdGFVUkx0b0Jsb2IsIGlzRm9jdXNhYmxlO1xuXG4gICQgPSB3aW5kb3cualF1ZXJ5O1xuXG4gICQucGFzdGUgPSBmdW5jdGlvbihwYXN0ZUNvbnRhaW5lcikge1xuICAgIHZhciBwbTtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29uc29sZSAhPT0gbnVsbCkge1xuICAgICAgY29uc29sZS5sb2coXCJERVBSRUNBVEVEOiBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICQuZm4ucGFzdGFibGVOb25JbnB1dGFibGUoKSBpbnN0ZWFkLlwiKTtcbiAgICB9XG4gICAgcG0gPSBQYXN0ZS5tb3VudE5vbklucHV0YWJsZShwYXN0ZUNvbnRhaW5lcik7XG4gICAgcmV0dXJuIHBtLl9jb250YWluZXI7XG4gIH07XG5cbiAgJC5mbi5wYXN0YWJsZU5vbklucHV0YWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBlbCwgaiwgbGVuLCByZWY7XG4gICAgcmVmID0gdGhpcztcbiAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGVsID0gcmVmW2pdO1xuICAgICAgaWYgKGVsLl9wYXN0YWJsZSB8fCAkKGVsKS5pcygndGV4dGFyZWEsIGlucHV0OnRleHQsIFtjb250ZW50ZWRpdGFibGVdJykpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBQYXN0ZS5tb3VudE5vbklucHV0YWJsZShlbCk7XG4gICAgICBlbC5fcGFzdGFibGUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAkLmZuLnBhc3RhYmxlVGV4dGFyZWEgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgZWwsIGosIGxlbiwgcmVmO1xuICAgIHJlZiA9IHRoaXM7XG4gICAgZm9yIChqID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBlbCA9IHJlZltqXTtcbiAgICAgIGlmIChlbC5fcGFzdGFibGUgfHwgJChlbCkuaXMoJzpub3QodGV4dGFyZWEsIGlucHV0OnRleHQpJykpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBQYXN0ZS5tb3VudFRleHRhcmVhKGVsKTtcbiAgICAgIGVsLl9wYXN0YWJsZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gICQuZm4ucGFzdGFibGVDb250ZW50ZWRpdGFibGUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgZWwsIGosIGxlbiwgcmVmO1xuICAgIHJlZiA9IHRoaXM7XG4gICAgZm9yIChqID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBlbCA9IHJlZltqXTtcbiAgICAgIGlmIChlbC5fcGFzdGFibGUgfHwgJChlbCkuaXMoJzpub3QoW2NvbnRlbnRlZGl0YWJsZV0pJykpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBQYXN0ZS5tb3VudENvbnRlbnRlZGl0YWJsZShlbCk7XG4gICAgICBlbC5fcGFzdGFibGUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBkYXRhVVJMdG9CbG9iID0gZnVuY3Rpb24oZGF0YVVSTCwgc2xpY2VTaXplKSB7XG4gICAgdmFyIGI2NERhdGEsIGJ5dGVBcnJheSwgYnl0ZUFycmF5cywgYnl0ZUNoYXJhY3RlcnMsIGJ5dGVOdW1iZXJzLCBjb250ZW50VHlwZSwgaSwgbSwgb2Zmc2V0LCByZWYsIHNsaWNlO1xuICAgIGlmIChzbGljZVNpemUgPT0gbnVsbCkge1xuICAgICAgc2xpY2VTaXplID0gNTEyO1xuICAgIH1cbiAgICBpZiAoIShtID0gZGF0YVVSTC5tYXRjaCgvXmRhdGFcXDooW15cXDtdKylcXDtiYXNlNjRcXCwoLispJC8pKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJlZiA9IG0sIG0gPSByZWZbMF0sIGNvbnRlbnRUeXBlID0gcmVmWzFdLCBiNjREYXRhID0gcmVmWzJdO1xuICAgIGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihiNjREYXRhKTtcbiAgICBieXRlQXJyYXlzID0gW107XG4gICAgb2Zmc2V0ID0gMDtcbiAgICB3aGlsZSAob2Zmc2V0IDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoKSB7XG4gICAgICBzbGljZSA9IGJ5dGVDaGFyYWN0ZXJzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgc2xpY2VTaXplKTtcbiAgICAgIGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KHNsaWNlLmxlbmd0aCk7XG4gICAgICBpID0gMDtcbiAgICAgIHdoaWxlIChpIDwgc2xpY2UubGVuZ3RoKSB7XG4gICAgICAgIGJ5dGVOdW1iZXJzW2ldID0gc2xpY2UuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgICAgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xuICAgICAgYnl0ZUFycmF5cy5wdXNoKGJ5dGVBcnJheSk7XG4gICAgICBvZmZzZXQgKz0gc2xpY2VTaXplO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEJsb2IoYnl0ZUFycmF5cywge1xuICAgICAgdHlwZTogY29udGVudFR5cGVcbiAgICB9KTtcbiAgfTtcblxuICBjcmVhdGVIaWRkZW5FZGl0YWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKS5hdHRyKCdjb250ZW50ZWRpdGFibGUnLCB0cnVlKS5hdHRyKCdhcmlhLWhpZGRlbicsIHRydWUpLmF0dHIoJ3RhYmluZGV4JywgLTEpLmNzcyh7XG4gICAgICB3aWR0aDogMSxcbiAgICAgIGhlaWdodDogMSxcbiAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgbGVmdDogLTEwMCxcbiAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ1xuICAgIH0pO1xuICB9O1xuXG4gIGlzRm9jdXNhYmxlID0gZnVuY3Rpb24oZWxlbWVudCwgaGFzVGFiaW5kZXgpIHtcbiAgICB2YXIgZmllbGRzZXQsIGZvY3VzYWJsZUlmVmlzaWJsZSwgaW1nLCBtYXAsIG1hcE5hbWUsIG5vZGVOYW1lO1xuICAgIG1hcCA9IHZvaWQgMDtcbiAgICBtYXBOYW1lID0gdm9pZCAwO1xuICAgIGltZyA9IHZvaWQgMDtcbiAgICBmb2N1c2FibGVJZlZpc2libGUgPSB2b2lkIDA7XG4gICAgZmllbGRzZXQgPSB2b2lkIDA7XG4gICAgbm9kZU5hbWUgPSBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKCdhcmVhJyA9PT0gbm9kZU5hbWUpIHtcbiAgICAgIG1hcCA9IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICAgIG1hcE5hbWUgPSBtYXAubmFtZTtcbiAgICAgIGlmICghZWxlbWVudC5ocmVmIHx8ICFtYXBOYW1lIHx8IG1hcC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnbWFwJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpbWcgPSAkKCdpbWdbdXNlbWFwPVxcJyMnICsgbWFwTmFtZSArICdcXCddJyk7XG4gICAgICByZXR1cm4gaW1nLmxlbmd0aCA+IDAgJiYgaW1nLmlzKCc6dmlzaWJsZScpO1xuICAgIH1cbiAgICBpZiAoL14oaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbnxvYmplY3QpJC8udGVzdChub2RlTmFtZSkpIHtcbiAgICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9ICFlbGVtZW50LmRpc2FibGVkO1xuICAgICAgaWYgKGZvY3VzYWJsZUlmVmlzaWJsZSkge1xuICAgICAgICBmaWVsZHNldCA9ICQoZWxlbWVudCkuY2xvc2VzdCgnZmllbGRzZXQnKVswXTtcbiAgICAgICAgaWYgKGZpZWxkc2V0KSB7XG4gICAgICAgICAgZm9jdXNhYmxlSWZWaXNpYmxlID0gIWZpZWxkc2V0LmRpc2FibGVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICgnYScgPT09IG5vZGVOYW1lKSB7XG4gICAgICBmb2N1c2FibGVJZlZpc2libGUgPSBlbGVtZW50LmhyZWYgfHwgaGFzVGFiaW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvY3VzYWJsZUlmVmlzaWJsZSA9IGhhc1RhYmluZGV4O1xuICAgIH1cbiAgICBmb2N1c2FibGVJZlZpc2libGUgPSBmb2N1c2FibGVJZlZpc2libGUgfHwgJChlbGVtZW50KS5pcygnW2NvbnRlbnRlZGl0YWJsZV0nKTtcbiAgICByZXR1cm4gZm9jdXNhYmxlSWZWaXNpYmxlICYmICQoZWxlbWVudCkuaXMoJzp2aXNpYmxlJyk7XG4gIH07XG5cbiAgUGFzdGUgPSAoZnVuY3Rpb24oKSB7XG4gICAgUGFzdGUucHJvdG90eXBlLl90YXJnZXQgPSBudWxsO1xuXG4gICAgUGFzdGUucHJvdG90eXBlLl9jb250YWluZXIgPSBudWxsO1xuXG4gICAgUGFzdGUubW91bnROb25JbnB1dGFibGUgPSBmdW5jdGlvbihub25JbnB1dGFibGUpIHtcbiAgICAgIHZhciBwYXN0ZTtcbiAgICAgIHBhc3RlID0gbmV3IFBhc3RlKGNyZWF0ZUhpZGRlbkVkaXRhYmxlKCkuYXBwZW5kVG8obm9uSW5wdXRhYmxlKSwgbm9uSW5wdXRhYmxlKTtcbiAgICAgICQobm9uSW5wdXRhYmxlKS5vbignY2xpY2snLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2KSB7XG4gICAgICAgICAgaWYgKCFpc0ZvY3VzYWJsZShldi50YXJnZXQsIGZhbHNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhc3RlLl9jb250YWluZXIuZm9jdXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICBwYXN0ZS5fY29udGFpbmVyLm9uKCdmb2N1cycsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuICQobm9uSW5wdXRhYmxlKS5hZGRDbGFzcygncGFzdGFibGUtZm9jdXMnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHJldHVybiBwYXN0ZS5fY29udGFpbmVyLm9uKCdibHVyJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gJChub25JbnB1dGFibGUpLnJlbW92ZUNsYXNzKCdwYXN0YWJsZS1mb2N1cycpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgIH07XG5cbiAgICBQYXN0ZS5tb3VudFRleHRhcmVhID0gZnVuY3Rpb24odGV4dGFyZWEpIHtcbiAgICAgIHZhciBjdGxEb3duLCBwYXN0ZSwgcmVmLCByZWYxO1xuICAgICAgaWYgKCh0eXBlb2YgRGF0YVRyYW5zZmVyICE9PSBcInVuZGVmaW5lZFwiICYmIERhdGFUcmFuc2ZlciAhPT0gbnVsbCA/IERhdGFUcmFuc2Zlci5wcm90b3R5cGUgOiB2b2lkIDApICYmICgocmVmID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcikgIT0gbnVsbCA/IChyZWYxID0gcmVmLmNhbGwoT2JqZWN0LCBEYXRhVHJhbnNmZXIucHJvdG90eXBlLCAnaXRlbXMnKSkgIT0gbnVsbCA/IHJlZjEuZ2V0IDogdm9pZCAwIDogdm9pZCAwKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb3VudENvbnRlbnRlZGl0YWJsZSh0ZXh0YXJlYSk7XG4gICAgICB9XG4gICAgICBwYXN0ZSA9IG5ldyBQYXN0ZShjcmVhdGVIaWRkZW5FZGl0YWJsZSgpLmluc2VydEJlZm9yZSh0ZXh0YXJlYSksIHRleHRhcmVhKTtcbiAgICAgIGN0bERvd24gPSBmYWxzZTtcbiAgICAgICQodGV4dGFyZWEpLm9uKCdrZXl1cCcsIGZ1bmN0aW9uKGV2KSB7XG4gICAgICAgIHZhciByZWYyO1xuICAgICAgICBpZiAoKHJlZjIgPSBldi5rZXlDb2RlKSA9PT0gMTcgfHwgcmVmMiA9PT0gMjI0KSB7XG4gICAgICAgICAgY3RsRG93biA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSk7XG4gICAgICAkKHRleHRhcmVhKS5vbigna2V5ZG93bicsIGZ1bmN0aW9uKGV2KSB7XG4gICAgICAgIHZhciByZWYyO1xuICAgICAgICBpZiAoKHJlZjIgPSBldi5rZXlDb2RlKSA9PT0gMTcgfHwgcmVmMiA9PT0gMjI0KSB7XG4gICAgICAgICAgY3RsRG93biA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChldi5jdHJsS2V5ICE9IG51bGwpICYmIChldi5tZXRhS2V5ICE9IG51bGwpKSB7XG4gICAgICAgICAgY3RsRG93biA9IGV2LmN0cmxLZXkgfHwgZXYubWV0YUtleTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3RsRG93biAmJiBldi5rZXlDb2RlID09PSA4Nikge1xuICAgICAgICAgIHBhc3RlLl90ZXh0YXJlYV9mb2N1c19zdG9sZW4gPSB0cnVlO1xuICAgICAgICAgIHBhc3RlLl9jb250YWluZXIuZm9jdXMoKTtcbiAgICAgICAgICBwYXN0ZS5fcGFzdGVfZXZlbnRfZmlyZWQgPSBmYWxzZTtcbiAgICAgICAgICBzZXRUaW1lb3V0KChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICBpZiAoIXBhc3RlLl9wYXN0ZV9ldmVudF9maXJlZCkge1xuICAgICAgICAgICAgICAgICQodGV4dGFyZWEpLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhc3RlLl90ZXh0YXJlYV9mb2N1c19zdG9sZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSh0aGlzKSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcbiAgICAgICQodGV4dGFyZWEpLm9uKCdwYXN0ZScsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7fTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgICQodGV4dGFyZWEpLm9uKCdmb2N1cycsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKCFwYXN0ZS5fdGV4dGFyZWFfZm9jdXNfc3RvbGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gJCh0ZXh0YXJlYSkuYWRkQ2xhc3MoJ3Bhc3RhYmxlLWZvY3VzJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgJCh0ZXh0YXJlYSkub24oJ2JsdXInLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmICghcGFzdGUuX3RleHRhcmVhX2ZvY3VzX3N0b2xlbikge1xuICAgICAgICAgICAgcmV0dXJuICQodGV4dGFyZWEpLnJlbW92ZUNsYXNzKCdwYXN0YWJsZS1mb2N1cycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgICQocGFzdGUuX3RhcmdldCkub24oJ19wYXN0ZUNoZWNrQ29udGFpbmVyRG9uZScsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgJCh0ZXh0YXJlYSkuZm9jdXMoKTtcbiAgICAgICAgICByZXR1cm4gcGFzdGUuX3RleHRhcmVhX2ZvY3VzX3N0b2xlbiA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgcmV0dXJuICQocGFzdGUuX3RhcmdldCkub24oJ3Bhc3RlVGV4dCcsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXYsIGRhdGEpIHtcbiAgICAgICAgICB2YXIgY29udGVudCwgY3VyRW5kLCBjdXJTdGFydDtcbiAgICAgICAgICBjdXJTdGFydCA9ICQodGV4dGFyZWEpLnByb3AoJ3NlbGVjdGlvblN0YXJ0Jyk7XG4gICAgICAgICAgY3VyRW5kID0gJCh0ZXh0YXJlYSkucHJvcCgnc2VsZWN0aW9uRW5kJyk7XG4gICAgICAgICAgY29udGVudCA9ICQodGV4dGFyZWEpLnZhbCgpO1xuICAgICAgICAgICQodGV4dGFyZWEpLnZhbChcIlwiICsgY29udGVudC5zbGljZSgwLCBjdXJTdGFydCkgKyBkYXRhLnRleHQgKyBjb250ZW50LnNsaWNlKGN1ckVuZCkpO1xuICAgICAgICAgICQodGV4dGFyZWEpWzBdLnNldFNlbGVjdGlvblJhbmdlKGN1clN0YXJ0ICsgZGF0YS50ZXh0Lmxlbmd0aCwgY3VyU3RhcnQgKyBkYXRhLnRleHQubGVuZ3RoKTtcbiAgICAgICAgICByZXR1cm4gJCh0ZXh0YXJlYSkudHJpZ2dlcignY2hhbmdlJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgfTtcblxuICAgIFBhc3RlLm1vdW50Q29udGVudGVkaXRhYmxlID0gZnVuY3Rpb24oY29udGVudGVkaXRhYmxlKSB7XG4gICAgICB2YXIgcGFzdGU7XG4gICAgICBwYXN0ZSA9IG5ldyBQYXN0ZShjb250ZW50ZWRpdGFibGUsIGNvbnRlbnRlZGl0YWJsZSk7XG4gICAgICAkKGNvbnRlbnRlZGl0YWJsZSkub24oJ2ZvY3VzJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gJChjb250ZW50ZWRpdGFibGUpLmFkZENsYXNzKCdwYXN0YWJsZS1mb2N1cycpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgcmV0dXJuICQoY29udGVudGVkaXRhYmxlKS5vbignYmx1cicsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuICQoY29udGVudGVkaXRhYmxlKS5yZW1vdmVDbGFzcygncGFzdGFibGUtZm9jdXMnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gUGFzdGUoX2NvbnRhaW5lciwgX3RhcmdldCkge1xuICAgICAgdGhpcy5fY29udGFpbmVyID0gX2NvbnRhaW5lcjtcbiAgICAgIHRoaXMuX3RhcmdldCA9IF90YXJnZXQ7XG4gICAgICB0aGlzLl9jb250YWluZXIgPSAkKHRoaXMuX2NvbnRhaW5lcik7XG4gICAgICB0aGlzLl90YXJnZXQgPSAkKHRoaXMuX3RhcmdldCkuYWRkQ2xhc3MoJ3Bhc3RhYmxlJyk7XG4gICAgICB0aGlzLl9jb250YWluZXIub24oJ3Bhc3RlJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihldikge1xuICAgICAgICAgIHZhciBjbGlwYm9hcmREYXRhLCBmaWxlLCBpdGVtLCBqLCBrLCBsZW4sIGxlbjEsIHJlYWRlciwgcmVmLCByZWYxLCByZWYyLCByZWYzLCB0ZXh0O1xuICAgICAgICAgIGlmIChldi5jdXJyZW50VGFyZ2V0ICE9PSBldi50YXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBfdGhpcy5fcGFzdGVfZXZlbnRfZmlyZWQgPSB0cnVlO1xuICAgICAgICAgIGlmICgoKHJlZiA9IGV2Lm9yaWdpbmFsRXZlbnQpICE9IG51bGwgPyByZWYuY2xpcGJvYXJkRGF0YSA6IHZvaWQgMCkgIT0gbnVsbCkge1xuICAgICAgICAgICAgY2xpcGJvYXJkRGF0YSA9IGV2Lm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YTtcbiAgICAgICAgICAgIGlmIChjbGlwYm9hcmREYXRhLml0ZW1zKSB7XG4gICAgICAgICAgICAgIHJlZjEgPSBjbGlwYm9hcmREYXRhLml0ZW1zO1xuICAgICAgICAgICAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYxLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgaXRlbSA9IHJlZjFbal07XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udHlwZS5tYXRjaCgvXmltYWdlXFwvLykpIHtcbiAgICAgICAgICAgICAgICAgIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICAgICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLl9oYW5kbGVJbWFnZShldmVudC50YXJnZXQucmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChpdGVtLmdldEFzRmlsZSgpKTtcbiAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgICAgICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlID09PSAndGV4dC9wbGFpbicpIHtcbiAgICAgICAgICAgICAgICAgIGl0ZW0uZ2V0QXNTdHJpbmcoZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlVGV4dCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmICgtMSAhPT0gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChjbGlwYm9hcmREYXRhLnR5cGVzLCAndGV4dC9wbGFpbicpKSB7XG4gICAgICAgICAgICAgICAgdGV4dCA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YSgnVGV4dCcpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZVRleHQnLCB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRleHRcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF90aGlzLl9jaGVja0ltYWdlc0luQ29udGFpbmVyKGZ1bmN0aW9uKHNyYykge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5faGFuZGxlSW1hZ2Uoc3JjKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjbGlwYm9hcmREYXRhID0gd2luZG93LmNsaXBib2FyZERhdGEpIHtcbiAgICAgICAgICAgIGlmICgocmVmMiA9ICh0ZXh0ID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCdUZXh0JykpKSAhPSBudWxsID8gcmVmMi5sZW5ndGggOiB2b2lkIDApIHtcbiAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlVGV4dCcsIHtcbiAgICAgICAgICAgICAgICAgIHRleHQ6IHRleHRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdfcGFzdGVDaGVja0NvbnRhaW5lckRvbmUnKTtcbiAgICAgICAgICAgICAgfSwgMSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZWYzID0gY2xpcGJvYXJkRGF0YS5maWxlcztcbiAgICAgICAgICAgICAgZm9yIChrID0gMCwgbGVuMSA9IHJlZjMubGVuZ3RoOyBrIDwgbGVuMTsgaysrKSB7XG4gICAgICAgICAgICAgICAgZmlsZSA9IHJlZjNba107XG4gICAgICAgICAgICAgICAgX3RoaXMuX2hhbmRsZUltYWdlKFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF90aGlzLl9jaGVja0ltYWdlc0luQ29udGFpbmVyKGZ1bmN0aW9uKHNyYykge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICB9XG5cbiAgICBQYXN0ZS5wcm90b3R5cGUuX2hhbmRsZUltYWdlID0gZnVuY3Rpb24oc3JjKSB7XG4gICAgICB2YXIgbG9hZGVyO1xuICAgICAgaWYgKHNyYy5tYXRjaCgvXndlYmtpdFxcLWZha2VcXC11cmxcXDpcXC9cXC8vKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlSW1hZ2VFcnJvcicsIHtcbiAgICAgICAgICBtZXNzYWdlOiBcIllvdSBhcmUgdHJ5aW5nIHRvIHBhc3RlIGFuIGltYWdlIGluIFNhZmFyaSwgaG93ZXZlciB3ZSBhcmUgdW5hYmxlIHRvIHJldGlldmUgaXRzIGRhdGEuXCJcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVJbWFnZVN0YXJ0Jyk7XG4gICAgICBsb2FkZXIgPSBuZXcgSW1hZ2UoKTtcbiAgICAgIGxvYWRlci5jcm9zc09yaWdpbiA9IFwiYW5vbnltb3VzXCI7XG4gICAgICBsb2FkZXIub25sb2FkID0gKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgYmxvYiwgY2FudmFzLCBjdHgsIGRhdGFVUkw7XG4gICAgICAgICAgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgICAgY2FudmFzLndpZHRoID0gbG9hZGVyLndpZHRoO1xuICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBsb2FkZXIuaGVpZ2h0O1xuICAgICAgICAgIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICAgIGN0eC5kcmF3SW1hZ2UobG9hZGVyLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICAgIGRhdGFVUkwgPSBudWxsO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBkYXRhVVJMID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyk7XG4gICAgICAgICAgICBibG9iID0gZGF0YVVSTHRvQmxvYihkYXRhVVJMKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICAgICAgICBpZiAoZGF0YVVSTCkge1xuICAgICAgICAgICAgX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZUltYWdlJywge1xuICAgICAgICAgICAgICBibG9iOiBibG9iLFxuICAgICAgICAgICAgICBkYXRhVVJMOiBkYXRhVVJMLFxuICAgICAgICAgICAgICB3aWR0aDogbG9hZGVyLndpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGxvYWRlci5oZWlnaHRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gX3RoaXMuX3RhcmdldC50cmlnZ2VyKCdwYXN0ZUltYWdlRW5kJyk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKTtcbiAgICAgIGxvYWRlci5vbmVycm9yID0gKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ3Bhc3RlSW1hZ2VFcnJvcicsIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGdldCBpbWFnZSBmcm9tOiBcIiArIHNyYyxcbiAgICAgICAgICAgIHVybDogc3JjXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLl90YXJnZXQudHJpZ2dlcigncGFzdGVJbWFnZUVuZCcpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcyk7XG4gICAgICByZXR1cm4gbG9hZGVyLnNyYyA9IHNyYztcbiAgICB9O1xuXG4gICAgUGFzdGUucHJvdG90eXBlLl9jaGVja0ltYWdlc0luQ29udGFpbmVyID0gZnVuY3Rpb24oY2IpIHtcbiAgICAgIHZhciBpbWcsIGosIGxlbiwgcmVmLCB0aW1lc3BhbjtcbiAgICAgIHRpbWVzcGFuID0gTWF0aC5mbG9vcigxMDAwICogTWF0aC5yYW5kb20oKSk7XG4gICAgICByZWYgPSB0aGlzLl9jb250YWluZXIuZmluZCgnaW1nJyk7XG4gICAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgICAgaW1nID0gcmVmW2pdO1xuICAgICAgICBpbWdbXCJfcGFzdGVfbWFya2VkX1wiICsgdGltZXNwYW5dID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZXRUaW1lb3V0KChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGssIGxlbjEsIHJlZjE7XG4gICAgICAgICAgcmVmMSA9IF90aGlzLl9jb250YWluZXIuZmluZCgnaW1nJyk7XG4gICAgICAgICAgZm9yIChrID0gMCwgbGVuMSA9IHJlZjEubGVuZ3RoOyBrIDwgbGVuMTsgaysrKSB7XG4gICAgICAgICAgICBpbWcgPSByZWYxW2tdO1xuICAgICAgICAgICAgaWYgKCFpbWdbXCJfcGFzdGVfbWFya2VkX1wiICsgdGltZXNwYW5dKSB7XG4gICAgICAgICAgICAgIGNiKGltZy5zcmMpO1xuICAgICAgICAgICAgICAkKGltZykucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBfdGhpcy5fdGFyZ2V0LnRyaWdnZXIoJ19wYXN0ZUNoZWNrQ29udGFpbmVyRG9uZScpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcyksIDEpO1xuICAgIH07XG5cbiAgICByZXR1cm4gUGFzdGU7XG5cbiAgfSkoKTtcblxufSkuY2FsbCh0aGlzKTtcblxuKGZ1bmN0aW9uKCQsZXhwb3J0cyl7XG5cblx0dmFyIGlzX2Nocm9tZVx0PSBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0Nocm9tZScpID4gLTEsXG5cdFx0Y291bnRlciA9IDAsXG5cdFx0d29ya2Zsb3c7XG5cblx0dGhlcGFzdGUgPSBleHBvcnRzLnRoZXBhc3RlID0gJC5leHRlbmQoIHtcblx0XHRzdXBwb3J0cyA6IHtcblx0XHRcdHBhc3RlOiAoICgncGFzdGUnIGluIGRvY3VtZW50KSB8fCAoJ29ucGFzdGUnIGluIGRvY3VtZW50KSB8fCB0eXBlb2Yod2luZG93Lm9ucGFzdGUpID09PSAnb2JqZWN0JyB8fCAoICdvbnBhc3RlJyBpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKSApICksIC8vIGJyb3dzZXJcblx0XHR9LFxuXHRcdHZpZXc6e30sXG5cblx0XHRpbnNlcnRJbWFnZTpmdW5jdGlvbiggZGF0YVVSTCwgdHlwZSwgZWRpdG9yICkge1xuXHRcdFx0dmFyIGlkID0gJ19fdGhlcGFzdGVfaW1nXycrKGNvdW50ZXIrKyksXG5cdFx0XHRcdGltYWdlSHRtbCA9ICc8aW1nIGlkPVwiJytpZCsnXCIgY2xhc3M9XCJhbGlnbm5vbmUgc2l6ZS1mdWxsXCIgc3JjPVwiJytkYXRhVVJMKydcIiAvPicsXG5cdFx0XHRcdCRjb250YWluZXI7XG5cblxuXHRcdFx0ZWRpdG9yLmluc2VydENvbnRlbnQoIGltYWdlSHRtbCApO1xuXG5cdFx0XHRyZXR1cm4gZWRpdG9yLiQoJyMnK2lkKVswXTtcblx0XHR9LFxuXG5cdFx0dXBsb2FkSW1hZ2U6IGZ1bmN0aW9uKCBpbWFnZSwgZWRpdG9yICkge1xuXG5cdFx0XHR2YXIgeGhyLFxuXHRcdFx0XHR3b3JrZmxvdyxcblx0XHRcdFx0JGNvbnRhaW5lcixcblx0XHRcdFx0c3JjID0gaW1hZ2Uuc3JjLFxuXHRcdFx0XHR1cGxvYWQgPSBmdW5jdGlvbiggZGF0YVVSTCApe1xuXHRcdFx0XHRcdHZhciBpZCA9ICdfX3RoZXBhc3RlX2JveF8nKyhjb3VudGVyKyspLFxuXHRcdFx0XHRcdFx0dHlwZSA9IGRhdGFVUkwubWF0Y2goL15kYXRhXFw6KFteXFw7XSspXFw7LylbMV1cblx0XHRcdFx0XHRcdGZpbGUgPSBuZXcgby5CbG9iKCBudWxsLCB7IGRhdGE6IGRhdGFVUkwgfSApXG5cdFx0XHRcdFx0XHRzdWZmaXggPSB0aGVwYXN0ZS5vcHRpb25zLm1pbWVfdHlwZXMuY29udmVydFsgdHlwZSBdO1xuXHRcdFx0XHRcdGlmICggJ3VuZGVmaW5lZCcgPT09IHR5cGVvZiBzdWZmaXggKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLnRyYWNlKCAnYmFkIHR5cGU6ICcgKyB0eXBlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCQoaW1hZ2UpLndyYXAoJzxkaXYgaWQ9XCInK2lkKydcIiBkYXRhLXByb2dyZXNzPVwiMFwiIGNsYXNzPVwidGhlcGFzdGUtaW1hZ2UtcGxhY2Vob2xkZXJcIiBjb250ZW50ZWRpdGFibGU9XCJmYWxzZVwiPjwvZGl2PicpO1xuXHRcdFx0XHRcdCRjb250YWluZXIgPSBlZGl0b3IuJCgnIycraWQpO1xuXG5cdFx0XHRcdFx0ZmlsZS5uYW1lID0gdGhlcGFzdGUubDEwbi5wYXN0ZWQgKyAnLicgKyBzdWZmaXg7XG5cdFx0XHRcdFx0ZmlsZS50eXBlID0gdHlwZTtcblxuXHRcdFx0XHRcdHZhciBhZGRGaWxlID0gZnVuY3Rpb24oKXtcblx0XHRcdFx0XHRcdHdvcmtmbG93LnVwbG9hZGVyLnVwbG9hZGVyLnVwbG9hZGVyLmFkZEZpbGUoIGZpbGUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCAhIHdvcmtmbG93ICkge1xuXHRcdFx0XHRcdFx0d29ya2Zsb3cgPSB3cC5tZWRpYS5lZGl0b3Iub3Blbiggd2luZG93LndwQWN0aXZlRWRpdG9yLCB7XG5cdFx0XHRcdFx0XHRcdGZyYW1lOlx0XHQncG9zdCcsXG5cdFx0XHRcdFx0XHRcdHN0YXRlOlx0XHQnaW5zZXJ0Jyxcblx0XHRcdFx0XHRcdFx0dGl0bGU6XHRcdHRoZXBhc3RlLmwxMG4uY29weV9wYXN0ZSxcblx0XHRcdFx0XHRcdFx0bXVsdGlwbGU6XHRmYWxzZVxuXHRcdFx0XHRcdFx0fSApO1xuXG5cdFx0XHRcdFx0XHR3b3JrZmxvdy5jbG9zZSgpO1xuXG5cdFx0XHRcdFx0XHRpZiAoIHdvcmtmbG93LnVwbG9hZGVyLnVwbG9hZGVyICYmIHdvcmtmbG93LnVwbG9hZGVyLnVwbG9hZGVyLnJlYWR5ICkge1xuXHRcdFx0XHRcdFx0XHRhZGRGaWxlKCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR3b3JrZmxvdy5vbiggJ3VwbG9hZGVyOnJlYWR5JywgYWRkRmlsZSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR3b3JrZmxvdy5zdGF0ZSgpLnJlc2V0KCk7XG5cdFx0XHRcdFx0XHRhZGRGaWxlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHdvcmtmbG93LnVwbG9hZGVyLnVwbG9hZGVyLnVwbG9hZGVyLmJpbmQoJ1VwbG9hZFByb2dyZXNzJyxmdW5jdGlvbiggZSApe1xuXHRcdFx0XHRcdFx0JGNvbnRhaW5lci5hdHRyKCdkYXRhLXByb2dyZXNzJyxlLnRvdGFsLnBlcmNlbnQpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHdvcmtmbG93LnVwbG9hZGVyLnVwbG9hZGVyLnVwbG9hZGVyLmJpbmQoJ0ZpbGVVcGxvYWRlZCcsZnVuY3Rpb24oIHVwLCBhcmdzICl7XG5cdFx0XHRcdFx0XHR2YXIgaW1nSFRNTCA9ICc8aW1nIGNsYXNzPVwiYWxpZ25ub25lIHdwLWltYWdlLScrYXJncy5hdHRhY2htZW50LmlkKycgc2l6ZS1mdWxsXCIgc3JjPVwiJythcmdzLmF0dGFjaG1lbnQuY2hhbmdlZC51cmwrJ1wiIC8+Jztcblx0XHRcdFx0XHRcdC8vIHJlcGxhY2UgaW1hZ2Vcblx0XHRcdFx0XHRcdCRjb250YWluZXIucmVwbGFjZVdpdGgoIGltZ0hUTUwgKTtcblx0XHRcdFx0XHRcdC8vIHJlcGxhY2Ugb3RoZXIgaW5zdGFuY2VzXG5cdFx0XHRcdFx0XHRlZGl0b3IuJCgnaW1nW3NyYz1cIicrc3JjKydcIl0nKS5lYWNoKGZ1bmN0aW9uKCl7XG5cdFx0XHRcdFx0XHRcdCQodGhpcykucmVwbGFjZVdpdGgoIGltZ0hUTUwgKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHdvcmtmbG93LnVwbG9hZGVyLnVwbG9hZGVyLnVwbG9hZGVyLmJpbmQoJ0Vycm9yJyxmdW5jdGlvbiggdXAsIGFyZ3MgKXtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHVwLGFyZ3MpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRpZiAoIHNyYy5zdWJzdHIoMCw1KSA9PT0gJ2Jsb2I6JyApIHtcblxuXHRcdFx0XHR4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblx0XHRcdFx0eGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJztcblx0XHRcdFx0eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCl7XG5cdFx0XHRcdFx0dmFyIHJlYWRlcjtcblx0XHRcdFx0XHRpZiAoIHhoci5yZWFkeVN0YXRlID09IDQgKSB7XG5cdFx0XHRcdFx0XHRyZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXHRcdFx0XHRcdFx0cmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHR1cGxvYWQoIHJlYWRlci5yZXN1bHQgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJlYWRlci5yZWFkQXNEYXRhVVJMKCBuZXcgQmxvYiggWyB4aHIucmVzcG9uc2UgXSwgeyB0eXBlOiAnaW1hZ2UvcG5nJyB9ICkgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0eGhyLm9wZW4oICdHRVQnLCBzcmMgKTtcblx0XHRcdFx0eGhyLnNlbmQoIG51bGwgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggc3JjLnN1YnN0cigwLDUpID09PSAnZGF0YTonICkge1xuXHRcdFx0XHR1cGxvYWQoIHNyYyApO1xuXHRcdFx0fVxuXG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqXHRAcmV0dXJuOiBudWxsfHRydWV8ZmFsc2Vcblx0XHQgKi9cblx0XHRjbGlwYm9hcmRIYXNJbWFnZTpmdW5jdGlvbiggY2xpcGJvYXJkRGF0YSApIHtcblx0XHRcdHZhciBoYXNJbWFnZSA9IGZhbHNlO1xuXHRcdFx0aWYgKCBjbGlwYm9hcmREYXRhLml0ZW1zICkge1xuXHRcdFx0XHQkLmVhY2goIGNsaXBib2FyZERhdGEuaXRlbXMsIGZ1bmN0aW9uKGksaXRlbSl7XG5cdFx0XHRcdFx0aWYgKCBpdGVtLnR5cGUgaW4gdGhlcGFzdGUub3B0aW9ucy5taW1lX3R5cGVzLnBhc3RlICkge1xuXHRcdFx0XHRcdFx0aGFzSW1hZ2UgPSB0cnVlO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdFx0XHRyZXR1cm4gaGFzSW1hZ2U7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggY2xpcGJvYXJkRGF0YS50eXBlcyApIHtcblx0XHRcdFx0JC5lYWNoKCB0aGVwYXN0ZS5vcHRpb25zLm1pbWVfdHlwZXMucGFzdGUsIGZ1bmN0aW9uKHR5cGUsZXh0KXtcblx0XHRcdFx0XHRpZiAoIGNsaXBib2FyZERhdGEudHlwZXMuaW5kZXhPZih0eXBlKSA+IC0xICkge1xuXHRcdFx0XHRcdFx0aGFzSW1hZ2UgPSB0cnVlO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdFx0XHRyZXR1cm4gaGFzSW1hZ2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblxuXHR9LCB0aGVwYXN0ZSApO1xuXG59KSggalF1ZXJ5LCB3cC5tZWRpYSApO1xuXG4oZnVuY3Rpb24oJCxleHBvcnRzKXtcblxuXHR2YXIgY291bnRlciAgICAgID0gMCxcblx0XHRsMTBuID0gd3AubWVkaWEudGhlcGFzdGUubDEwbjtcblxuXHQkLmV4dGVuZCggd3AuVXBsb2FkZXIucHJvdG90eXBlLCB7XG5cdFx0c3VjY2VzcyA6IGZ1bmN0aW9uKCBmaWxlX2F0dGFjaG1lbnQgKXtcblx0XHR9XG5cdH0pO1xuXG5cblx0LyoqXG5cdCAqXHRJbnRlZ3JhdGUgaW50byBtZWRpYSBsaWJyYXJ5IG1vZGFsXG5cdCAqL1xuXHQvLyBhZGQgc3RhdGVzIHRvIGJyb3dzZSByb3V0ZXJcblx0Xy5leHRlbmQoIHdwLm1lZGlhLnZpZXcuTWVkaWFGcmFtZS5TZWxlY3QucHJvdG90eXBlLCB7XG5cdFx0X3BhcmVudEluaXRpYWxpemU6IHdwLm1lZGlhLnZpZXcuTWVkaWFGcmFtZS5TZWxlY3QucHJvdG90eXBlLmluaXRpYWxpemUsXG5cdFx0aW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLl9wYXJlbnRJbml0aWFsaXplLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdHRoaXMuYmluZFBhc3RlSGFuZGxlcnMoKTtcblx0XHR9LFxuXHRcdF9wYXJlbnRCcm93c2VSb3V0ZXI6IHdwLm1lZGlhLnZpZXcuTWVkaWFGcmFtZS5TZWxlY3QucHJvdG90eXBlLmJyb3dzZVJvdXRlcixcblx0XHRicm93c2VSb3V0ZXIgOiBmdW5jdGlvbiggdmlldyApIHtcblx0XHRcdHRoaXMuX3BhcmVudEJyb3dzZVJvdXRlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7XG5cblx0XHRcdGlmICggd3AubWVkaWEudGhlcGFzdGUuc3VwcG9ydHMucGFzdGUgKSB7XG5cdFx0XHRcdHZpZXcuc2V0KHtwYXN0ZWJvYXJkOntcblx0XHRcdFx0XHR0ZXh0OiAgICAgbDEwbi5jb3B5X3Bhc3RlLFxuXHRcdFx0XHRcdHByaW9yaXR5OiAzNVxuXHRcdFx0XHR9fSk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdGJpbmRQYXN0ZUhhbmRsZXJzOiBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBwcmV2aW91c0NvbnRlbnQgPSBmYWxzZTtcblx0XHRcblx0XHRcdC8vIGRpc21pc3MgY29udGVudCBvbiBjbG9zZVxuXHRcdFx0dGhpcy5vbiggJ2NvbnRlbnQ6cmVuZGVyIGNsb3NlJyAsIGZ1bmN0aW9uKGNvbnRlbnQpe1xuXHRcdFx0XHRpZiAoIHByZXZpb3VzQ29udGVudCAmJiAnZnVuY3Rpb24nID09PSB0eXBlb2YgcHJldmlvdXNDb250ZW50LmRpc21pc3MgKSB7XG5cdFx0XHRcdFx0cHJldmlvdXNDb250ZW50LmRpc21pc3MoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YgY29udGVudCApXG5cdFx0XHRcdFx0cHJldmlvdXNDb250ZW50ID0gY29udGVudDtcblx0XHRcdH0gLCB0aGlzICk7XG5cdFx0XG5cdFx0XHR0aGlzLm9uKCAnY29udGVudDpjcmVhdGU6cGFzdGVib2FyZCcsIHRoaXMuY29udGVudENyZWF0ZVBhc3RlYm9hcmQsIHRoaXMgKTtcblx0XHRcdHRoaXMub24oICdjb250ZW50OnJlbmRlcjpwYXN0ZWJvYXJkJywgdGhpcy5jb250ZW50UmVuZGVyR3JhYmJlciwgdGhpcyApO1xuXG5cdFx0XHRmcmFtZSA9IHRoaXM7XG5cdFx0fSxcblx0XHQvLyBhZGQgaGFuZGxlcnNcblx0XHRjb250ZW50Q3JlYXRlUGFzdGVib2FyZDogZnVuY3Rpb24oIGNvbnRlbnQgKSB7XG5cdFx0XHR2YXIgc3RhdGUgPSB0aGlzLnN0YXRlKCk7XG5cblx0XHRcdHRoaXMuY3VycmVudFBhc3RlVmlldyA9IGNvbnRlbnQudmlldyA9IG5ldyB3cC5tZWRpYS50aGVwYXN0ZS52aWV3LkRhdGFTb3VyY2VJbWFnZUdyYWJiZXIoIHsgXG5cdFx0XHRcdGNvbnRyb2xsZXJcdDogdGhpcywgXG5cdFx0XHRcdGdyYWJiZXJcdFx0OiB3cC5tZWRpYS50aGVwYXN0ZS52aWV3LlBhc3RlYm9hcmRcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5saXN0ZW5UbyggdGhpcy5jdXJyZW50UGFzdGVWaWV3LnVwbG9hZGVyLCAnYWN0aW9uOnVwbG9hZGVkOmRhdGFpbWFnZScsIHRoaXMudXBsb2FkZWREYXRhSW1hZ2UgKTtcblx0XHR9LFxuXHRcdGNvbnRlbnRSZW5kZXJHcmFiYmVyOiBmdW5jdGlvbiggY29udGVudCApIHtcblx0XHRcdGNvbnRlbnQuc3RhcnRHcmFiYmluZygpO1xuXHRcdH0sXG5cdFx0dXBsb2FkZWREYXRhSW1hZ2U6IGZ1bmN0aW9uKCBjb250ZW50ICkge1xuXHRcdFx0dGhpcy5zdG9wTGlzdGVuaW5nKCB0aGlzLmN1cnJlbnRQYXN0ZVZpZXcudXBsb2FkZXIsICdhY3Rpb246dXBsb2FkZWQ6ZGF0YWltYWdlJyApO1xuXHRcdFx0dmFyIG9iaiA9IHsgdmlldzogbnVsbCB9O1xuXHRcdFx0dGhpcy5icm93c2VDb250ZW50KG9iaik7XG5cdFx0XHR0aGlzLmNvbnRlbnQuc2V0KCBvYmoudmlldyApO1xuXHRcdFx0dGhpcy5yb3V0ZXIuZ2V0KCkuc2VsZWN0KCdicm93c2UnKVxuXHRcdH1cblx0fSk7XG5cdFxuXG5cblx0LyoqXG5cdCAqXHRBZGQgcGFzdGUgYnV0dG9uIHRvIHRvb2xiYXIgb24gdXBsb2FkLnBocFxuXHQgKi9cblx0Xy5leHRlbmQoIHdwLm1lZGlhLnZpZXcuQXR0YWNobWVudHNCcm93c2VyLnByb3RvdHlwZSwge1xuXHRcdF9wYXJlbnRJbml0aWFsaXplOlx0d3AubWVkaWEudmlldy5BdHRhY2htZW50c0Jyb3dzZXIucHJvdG90eXBlLmluaXRpYWxpemUsXG5cdFx0aW5pdGlhbGl6ZTpcdGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHNlbGYgPSB0aGlzLFxuXHRcdFx0XHRwYXN0ZUJ0bjtcblxuXHRcdFx0dGhpcy5fcGFyZW50SW5pdGlhbGl6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7XG5cdFx0XHRcblx0XHRcdHRoaXMudGhlcGFzdGUgPSB7XG5cdFx0XHRcdHBhc3RlXHQ6IHtcbi8vXHRcdFx0XHRcdGJ1dHRvblx0OiBmYWxzZSxcblx0XHRcdFx0XHRncmFiYmVyXHQ6IGZhbHNlLFxuXHRcdFx0XHRcdG1vZGFsXHQ6IGZhbHNlLFxuXHRcdFx0XHRcdG1vZGVcdDogJ3Bhc3RlJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Y3VycmVudFx0XHQ6IGZhbHNlXG5cdFx0XHR9XG5cblx0XHRcdGlmICggISAoIHRoaXMuY29udHJvbGxlciBpbnN0YW5jZW9mIHdwLm1lZGlhLnZpZXcuTWVkaWFGcmFtZS5TZWxlY3QgKSApIHtcblxuXHRcdFx0XHRpZiAoIHdwLm1lZGlhLnRoZXBhc3RlLnN1cHBvcnRzLnBhc3RlICkge1xuXG5cdFx0XHRcdFx0cGFzdGVCdG4gPSBuZXcgd3AubWVkaWEudmlldy5CdXR0b24oIHtcblx0XHRcdFx0XHRcdHRleHRcdFx0OiBsMTBuLmNvcHlfcGFzdGUsXG5cdFx0XHRcdFx0XHRjbGFzc05hbWU6ICAnZ3JhYmJlci1idXR0b24nLFxuXHRcdFx0XHRcdFx0cHJpb3JpdHlcdDogLTY0LFxuXHRcdFx0XHRcdFx0Y2xpY2s6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRzZWxmLnRoZXBhc3RlLmFjdGl2ZSA9IHNlbGYudGhlcGFzdGUucGFzdGU7XG5cdFx0XHRcdFx0XHRcdHNlbGYudGhlcGFzdGVPcGVuKCBsMTBuLmNvcHlfcGFzdGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0dGhpcy50aGVwYXN0ZS5wYXN0ZS5ncmFiYmVyID0gbmV3IHdwLm1lZGlhLnRoZXBhc3RlLnZpZXcuRGF0YVNvdXJjZUltYWdlR3JhYmJlcigge1xuXHRcdFx0XHRcdFx0Y29udHJvbGxlclx0OiB0aGlzLmNvbnRyb2xsZXIsXG5cdFx0XHRcdFx0XHRncmFiYmVyXHRcdDogd3AubWVkaWEudGhlcGFzdGUudmlldy5QYXN0ZWJvYXJkLFxuXHRcdFx0XHRcdFx0d3B1cGxvYWRlclx0OiB0aGlzLmNvbnRyb2xsZXIudXBsb2FkZXIudXBsb2FkZXIudXBsb2FkZXJcblx0XHRcdFx0XHR9ICk7XG5cblx0XHRcdFx0XHR0aGlzLnRvb2xiYXIuc2V0KCAncGFzdGVNb2RlQnV0dG9uJywgcGFzdGVCdG4ucmVuZGVyKCkgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0dGhlcGFzdGVVcGxvYWRlZDogZnVuY3Rpb24oIGUgKSB7XG5cdFx0XHR0aGlzLnRoZXBhc3RlLmFjdGl2ZS5ncmFiYmVyLmRpc21pc3MoKTtcblx0XHRcdHRoaXMudGhlcGFzdGUubW9kYWwuY2xvc2UoKTtcblx0XHRcdHRoaXMudGhlcGFzdGVDbG9zZSgpO1xuXHRcdH0sXG5cdFx0dGhlcGFzdGVFcnJvcjogZnVuY3Rpb24oIGUgKSB7XG5cdFx0XHRjb25zb2xlLmxvZyggJ2Vycm9yJywgZSApO1xuXHRcdH0sXG5cdFx0dGhlcGFzdGVPcGVuOiBmdW5jdGlvbiggdGl0bGUgKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cblx0XHRcdHRoaXMudGhlcGFzdGUubW9kYWwgID0gIG5ldyB3cC5tZWRpYS52aWV3Lk1vZGFsKCB7XG5cdFx0XHRcdGNvbnRyb2xsZXIgOiB0aGlzLFxuXHRcdFx0XHR0aXRsZSAgICAgIDogdGl0bGVcblx0XHRcdH0gKTtcblx0XHRcdHRoaXMudGhlcGFzdGUubW9kYWwuY29udGVudCggdGhpcy50aGVwYXN0ZS5hY3RpdmUuZ3JhYmJlciApO1xuXHRcdFx0dGhpcy50aGVwYXN0ZS5tb2RhbC5vcGVuKCk7XG5cblx0XHRcdHRoaXMudGhlcGFzdGUubW9kYWwub24oICdjbG9zZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRzZWxmLnRoZXBhc3RlQ2xvc2UuYXBwbHkoc2VsZik7XG5cdFx0XHRcdHNlbGYudGhlcGFzdGUuYWN0aXZlLmdyYWJiZXIuc3RvcEdyYWJiaW5nKCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy50aGVwYXN0ZS5hY3RpdmUuZ3JhYmJlci5zdGFydEdyYWJiaW5nKCk7XG5cblx0XHRcdHRoaXMubGlzdGVuVG8oIHRoaXMudGhlcGFzdGUuYWN0aXZlLmdyYWJiZXIudXBsb2FkZXIsICdhY3Rpb246dXBsb2FkZWQ6ZGF0YWltYWdlJywgdGhpcy50aGVwYXN0ZVVwbG9hZGVkICk7XG5cdFx0XHR0aGlzLmxpc3RlblRvKCB0aGlzLnRoZXBhc3RlLmFjdGl2ZS5ncmFiYmVyLnVwbG9hZGVyLCAnZXJyb3I6dXBsb2FkZWQ6ZGF0YWltYWdlJywgdGhpcy50aGVwYXN0ZUVycm9yICk7XG5cdFx0fSxcblx0XHR0aGVwYXN0ZUNsb3NlOiBmdW5jdGlvbigpIHtcblxuXHRcdFx0dGhpcy5jb250cm9sbGVyLmRlYWN0aXZhdGVNb2RlKCB0aGlzLnRoZXBhc3RlLmFjdGl2ZS5tb2RlICkuYWN0aXZhdGVNb2RlKCAnZWRpdCcgKTtcblxuXHRcdFx0dGhpcy5zdG9wTGlzdGVuaW5nKCB0aGlzLnRoZXBhc3RlLmFjdGl2ZS5ncmFiYmVyLnVwbG9hZGVyLCAnYWN0aW9uOnVwbG9hZGVkOmRhdGFpbWFnZScgKTtcblx0XHRcdHRoaXMuc3RvcExpc3RlbmluZyggdGhpcy50aGVwYXN0ZS5hY3RpdmUuZ3JhYmJlci51cGxvYWRlciwgJ2Vycm9yOnVwbG9hZGVkOmRhdGFpbWFnZScgKTtcblx0XHR9XG5cdH0pO1xuXHRcbn0pKGpRdWVyeSx3aW5kb3cpO1xuXG4oZnVuY3Rpb24oJCx3aW5kb3csbyl7XG5cdHZhciB0aGVwYXN0ZSA9IHdwLm1lZGlhLnRoZXBhc3RlLFxuXHRcdEJ1dHRvbiA9IHdwLm1lZGlhLnZpZXcuQnV0dG9uLFxuXHRcdE1vZGFsICA9IHdwLm1lZGlhLnZpZXcuTW9kYWwsXG5cdFx0bDEwbiAgID0gdGhlcGFzdGUubDEwbjtcblxuXG5cdHdwLm1lZGlhLnRoZXBhc3RlLnZpZXcuRGF0YVNvdXJjZUltYWdlVXBsb2FkZXIgPSB3cC5tZWRpYS5WaWV3LmV4dGVuZCh7XG5cdFx0dGVtcGxhdGU6IHdwLnRlbXBsYXRlKCd0aGVwYXN0ZS11cGxvYWRlcicpLFxuXHRcdGNsYXNzTmFtZTogJ3RoZXBhc3RlLXVwbG9hZGVyJyxcblx0XHRjb250cm9sbGVyOm51bGwsXG5cdFx0aW1hZ2UgOiBudWxsLFxuXHRcdCRkaXNjYXJkQnRuIDogbnVsbCxcblx0XHQkdXBsb2FkQnRuIDogbnVsbCxcblx0XHRcblx0XHR1cGxvYWRlciA6IG51bGwsXG5cdFx0XG5cdFx0ZXZlbnRzIDoge1xuXHRcdFx0J2NsaWNrIFtkYXRhLWFjdGlvbj1cInVwbG9hZFwiXSdcdDogJ3VwbG9hZEltYWdlJyxcblx0XHRcdCdjbGljayBbZGF0YS1hY3Rpb249XCJkaXNjYXJkXCJdJ1x0OiAnZGlzY2FyZEltYWdlJyxcblx0XHR9LFxuXHRcdGluaXRpYWxpemUgOiBmdW5jdGlvbigpIHtcblxuXHRcdFx0d3AubWVkaWEuVmlldy5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cblx0XHRcdF8uZGVmYXVsdHMoIHRoaXMub3B0aW9ucywge1xuXHRcdFx0XHRkZWZhdWx0RmlsZU5hbWUgOiBsMTBuLmltYWdlXG5cdFx0XHR9KTtcblx0XHRcdHZhciBzZWxmID0gdGhpcyxcblx0XHRcdFx0aW5zdHIgPSBuZXcgd3AubWVkaWEuVmlldyh7XG5cdFx0XHRcdHRhZ05hbWUgICAgOiAnZGl2Jyxcblx0XHRcdFx0Y2xhc3NOYW1lICA6ICdpbnN0cnVtZW50cycsXG5cdFx0XHRcdGNvbnRyb2xsZXIgOiB0aGlzLmNvbnRyb2xsZXJcblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLnVwbG9hZGVyID0gdGhpcy5vcHRpb25zLnVwbG9kZXI7XG5cdFx0fSxcblx0XHRzZXRJbWFnZURhdGEgOiBmdW5jdGlvbiggZGF0YSApIHtcblx0XHRcdHZhciBjb250YWluZXIgPSB0aGlzLiRpbWFnZUNvbnRhaW5lci5odG1sKCcnKS5nZXQoMCksXG5cdFx0XHRcdHNlbGYgPSB0aGlzLFxuXHRcdFx0XHRmb3JtYXQgPSBkYXRhLm1hdGNoKC9kYXRhOihpbWFnZVxcLyhcXHcrKSk7LylbMV07XG5cblx0XHRcdGlmICggISB0aGVwYXN0ZS5vcHRpb25zLm1pbWVfdHlwZXMuY29udmVydFtmb3JtYXRdICkge1xuXHRcdFx0XHRmb3JtYXQgPSB0aGlzLm9wdGlvbnMuZGVmYXVsdEZpbGVGb3JtYXQ7XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdGlmICggdGhpcy5pbWFnZSApIHtcblx0XHRcdFx0dGhpcy5pbWFnZS5kZXN0cm95KCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuaW1hZ2UgPSBuZXcgby5JbWFnZSgpO1xuXHRcdFx0dGhpcy5pbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIG9wdHMgPSBzZWxmLmdldFVwbG9hZGVyKCkuZ2V0T3B0aW9uKCdyZXNpemUnKSxcblx0XHRcdFx0XHRzY2FsZSA9IE1hdGgubWF4KCBvcHRzLndpZHRoIC8gdGhpcy53aWR0aCwgb3B0cy5oZWlnaHQgLyB0aGlzLmhlaWdodCApO1xuXG5cdFx0XHRcdCEhb3B0cyAmJiAoc2NhbGUgPCAxKSAmJiB0aGlzLmRvd25zaXplKCB0aGlzLndpZHRoKnNjYWxlLCB0aGlzLmhlaWdodCpzY2FsZSApO1xuXG5cdFx0XHRcdHRoaXMuZW1iZWQoIGNvbnRhaW5lciApO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmltYWdlLmxvYWQoIGRhdGEgKTtcblx0XHRcdGlmICggdGhpcy4kaW1hZ2VDb250YWluZXIgKSB7XG5cdFx0XHRcdHRoaXMuJGltYWdlQ29udGFpbmVyLmFwcGVuZCh0aGlzLmltYWdlKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuJCgnW2RhdGEtc2V0dGluZz1cImZvcm1hdFwiXSBpbnB1dFt2YWx1ZT1cIicrZm9ybWF0KydcIl0nKS5wcm9wKCAnY2hlY2tlZCcsIHRydWUgKTtcblxuXG5cdFx0XHR0aGlzLmRpc2FibGVkKGZhbHNlKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0cmVuZGVyIDogZnVuY3Rpb24oKSB7XG5cdFx0XHR3cC5tZWRpYS5WaWV3LnByb3RvdHlwZS5yZW5kZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO1xuXHRcdFx0dGhpcy4kaW1hZ2VDb250YWluZXIgPSB0aGlzLiQoJy5pbWFnZS1jb250YWluZXInKTtcblx0XHRcdHRoaXMuJGRpc2NhcmRCdG4gPSB0aGlzLiQoJ1tkYXRhLWFjdGlvbj1cImRpc2NhcmRcIl0nKTtcblx0XHRcdHRoaXMuJHVwbG9hZEJ0biA9IHRoaXMuJCgnW2RhdGEtYWN0aW9uPVwidXBsb2FkXCJdJyk7XG5cdFx0XHR0aGlzLiQoJ1tkYXRhLXNldHRpbmc9XCJ0aXRsZVwiXScpLnZhbCggdGhpcy5vcHRpb25zLmRlZmF1bHRGaWxlTmFtZSApO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHRkaXNjYXJkSW1hZ2UgOiBmdW5jdGlvbigpe1xuXHRcdFx0dGhpcy50cmlnZ2VyKCAnYWN0aW9uOmRpc2NhcmQ6ZGF0YWltYWdlJyAsIHRoaXMgKTtcblx0XHRcdHRoaXMudW5iaW5kVXBsb2FkZXJFdmVudHMoKTtcblx0XHR9LFxuXHRcdHVwbG9hZEltYWdlIDogZnVuY3Rpb24oKSB7XG5cblx0XHRcdHZhciB0eXBlID0gdGhpcy4kKCdbZGF0YS1zZXR0aW5nPVwiZm9ybWF0XCJdIDpjaGVja2VkJykudmFsKCksXG5cdFx0XHRcdHN1ZmZpeCA9IHRoZXBhc3RlLm9wdGlvbnMubWltZV90eXBlcy5jb252ZXJ0WyB0eXBlIF0sXG5cdFx0XHRcdG5hbWUgPSB0aGlzLiQoJ2lucHV0W2RhdGEtc2V0dGluZz1cInRpdGxlXCJdJykudmFsKCkgKyAnLicgKyBzdWZmaXgsXG5cdFx0XHRcdGJsb2IgPSB0aGlzLmltYWdlLmdldEFzQmxvYiggdHlwZSwgdGhlcGFzdGUub3B0aW9ucy5qcGVnX3F1YWxpdHkgKTtcblxuXHRcdFx0dGhpcy5iaW5kVXBsb2FkZXJFdmVudHMoKTtcblxuXHRcdFx0YmxvYi5kZXRhY2goIGJsb2IuZ2V0U291cmNlKCkgKTtcblx0XHRcdGJsb2IubmFtZSA9IG5hbWU7XG5cdFx0XHRibG9iLnR5cGUgPSB0eXBlO1xuXHRcdFx0dGhpcy5nZXRVcGxvYWRlcigpLmFkZEZpbGUoIGJsb2IgLCBuYW1lICk7XG5cblx0XHRcdHRoaXMuZGlzYWJsZWQoIHRydWUgKTtcblxuXHRcdFx0dGhpcy50cmlnZ2VyKCAnYWN0aW9uOnVwbG9hZDpkYXRhaW1hZ2UnICwgdGhpcyApO1xuXHRcdH0sXG5cdFx0c2hvdzpmdW5jdGlvbigpe1xuXHRcdFx0dGhpcy4kZWwuc2hvdygpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHRoaWRlOmZ1bmN0aW9uKCl7XG5cdFx0XHR0aGlzLiRlbC5oaWRlKCk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdGRpc2FibGVkIDogZnVuY3Rpb24oIGRpc2FibGVkICkge1xuXHRcdFx0dGhpcy4kZGlzY2FyZEJ0bi5wcm9wKCAnZGlzYWJsZWQnLCBkaXNhYmxlZCApO1xuXHRcdFx0dGhpcy4kdXBsb2FkQnRuLnByb3AoICdkaXNhYmxlZCcsIGRpc2FibGVkICk7XG5cdFx0fSxcblx0XHRfdXBsb2FkU3VjY2Vzc0hhbmRsZXIgOiBmdW5jdGlvbigpIHtcblx0XHRcdHRoaXMudHJpZ2dlciggJ2FjdGlvbjp1cGxvYWRlZDpkYXRhaW1hZ2UnICk7XG5cdFx0XHR0aGlzLmRpc2FibGVkKGZhbHNlKTtcblx0XHRcdHRoaXMudW5iaW5kVXBsb2FkZXJFdmVudHMoKTtcblx0XHR9LFxuXHRcdF91cGxvYWRFcnJvckhhbmRsZXIgOiBmdW5jdGlvbigpIHtcblx0XHRcdHRoaXMudHJpZ2dlciggJ2Vycm9yOnVwbG9hZGVkOmRhdGFpbWFnZScgKTtcblx0XHRcdHRoaXMuZGlzYWJsZWQoZmFsc2UpO1xuXHRcdFx0dGhpcy51bmJpbmRVcGxvYWRlckV2ZW50cygpO1xuXHRcdH0sXG5cdFx0YmluZFVwbG9hZGVyRXZlbnRzIDogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLmdldFVwbG9hZGVyKCkuYmluZCggJ0ZpbGVVcGxvYWRlZCcsXHR0aGlzLl91cGxvYWRTdWNjZXNzSGFuZGxlcixcdHRoaXMgKTtcblx0XHRcdHRoaXMuZ2V0VXBsb2FkZXIoKS5iaW5kKCAnRXJyb3InLFx0XHRcdHRoaXMuX3VwbG9hZEVycm9ySGFuZGxlcixcdHRoaXMgKTtcblx0XHR9LFxuXHRcdHVuYmluZFVwbG9hZGVyRXZlbnRzIDogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLmdldFVwbG9hZGVyKCkudW5iaW5kKCAnRmlsZVVwbG9hZGVkJyxcdHRoaXMuX3VwbG9hZFN1Y2Nlc3NIYW5kbGVyLFx0dGhpcyApO1xuXHRcdFx0dGhpcy5nZXRVcGxvYWRlcigpLnVuYmluZCggJ0Vycm9yJyxcdFx0XHR0aGlzLl91cGxvYWRFcnJvckhhbmRsZXIsXHR0aGlzICk7XG5cdFx0fSxcblx0XHRnZXRVcGxvYWRlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb250cm9sbGVyLnVwbG9hZGVyLnVwbG9hZGVyLnVwbG9hZGVyO1xuXHRcdH1cblx0fSk7XG5cblxuXHR3cC5tZWRpYS50aGVwYXN0ZS52aWV3LlBhc3RlYm9hcmQgPSB3cC5tZWRpYS5WaWV3LmV4dGVuZCh7XG5cdFx0dGVtcGxhdGU6IHdwLnRlbXBsYXRlKCd0aGVwYXN0ZS1wYXN0ZWJvYXJkJyksXG5cdFx0Y2xhc3NOYW1lOiAndGhlcGFzdGUtcGFzdGVib2FyZCcsXG5cdFx0Y29udHJvbGxlcjpudWxsLFxuXHRcdGFjdGlvbjoncGFzdGUnLFxuXHRcdCRwYXN0ZWJvYXJkIDogbnVsbCxcblxuXHRcdHJlbmRlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cdFx0XHR3cC5tZWRpYS5WaWV3LnByb3RvdHlwZS5yZW5kZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO1xuXHRcdFx0dGhpcy4kcGFzdGVib2FyZCA9IHRoaXMuJCggJy5pbmplY3RvcicgKS5wYXN0YWJsZUNvbnRlbnRlZGl0YWJsZSgpO1xuXHRcdFx0dGhpcy4kbWVzc2FnZSA9IHRoaXMuJCggJy5tZXNzYWdlJyApO1xuXHRcdFx0dGhpcy4kcGFzdGVib2FyZC5vbignY2xpY2snLCBmdW5jdGlvbigpe1xuXHRcdFx0XHRzZWxmLnNob3dfbWVzc2FnZSgnJyk7XG5cdFx0XHR9ICk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdHN0YXJ0IDogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXMsXG5cdFx0XHRcdGNsaXBib2FyZEhhc0ltYWdlO1xuXG5cdFx0XHR0aGlzLmltYWdlUGFzdGVkID0gZmFsc2U7XG5cblx0XHRcdHRoaXMuJHBhc3RlYm9hcmRcblx0XHRcdFx0Lm9uKCdwYXN0ZScsZnVuY3Rpb24oZSl7XG5cdFx0XHRcdFx0Y2xpcGJvYXJkSGFzSW1hZ2UgPSB3cC5tZWRpYS50aGVwYXN0ZS5jbGlwYm9hcmRIYXNJbWFnZShlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5vbigncGFzdGVUZXh0JyAsIGZ1bmN0aW9uKCBlLCBkYXRhICkge1xuXG5cdFx0XHRcdFx0aWYgKCBjbGlwYm9hcmRIYXNJbWFnZSB8fCBzZWxmLmltYWdlUGFzdGVkICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzZWxmLnNob3dfbWVzc2FnZSggbDEwbi5wYXN0ZV9lcnJvcl9ub19pbWFnZSApO1xuXHRcdFx0XHRcdCQoIHRoaXMgKS5odG1sKCcnKTtcblx0XHRcdFx0fSApXG5cdFx0XHRcdC5vbigncGFzdGVJbWFnZScgLCBmdW5jdGlvbiggZSwgZGF0YSApIHtcblx0XHRcdFx0XHRpZiAoIHNlbGYuaW1hZ2VQYXN0ZWQgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNlbGYudHJpZ2dlciggJ2FjdGlvbjpjcmVhdGU6ZGF0YWltYWdlJywgdGhpcyAsIGRhdGEuZGF0YVVSTCApO1xuXHRcdFx0XHRcdHNlbGYuaW1hZ2VQYXN0ZWQgPSB0cnVlO1xuXHRcdFx0XHR9IClcblx0XHRcdFx0Lm9uKCdwYXN0ZUltYWdlRXJyb3InICwgZnVuY3Rpb24oIGUsIGRhdGEgKSB7XG5cdFx0XHRcdFx0c2VsZi5zaG93X21lc3NhZ2UoIGwxMG4ucGFzdGVfZXJyb3IgKTtcblx0XHRcdFx0XHQkKCB0aGlzICkuaHRtbCgnJyk7XG5cdFx0XHRcdH0gKVxuXHRcdFx0XHQ7XG5cblx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcblx0XHRcdFx0c2VsZi4kcGFzdGVib2FyZC5nZXQoMCkuZm9jdXMoKTtcblx0XHRcdH0sMSk7XG5cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0c3RvcCA6IGZ1bmN0aW9uKCkge1xuXHRcdFx0dGhpcy4kcGFzdGVib2FyZFxuXHRcdFx0XHQub2ZmKCdwYXN0ZUltYWdlJylcblx0XHRcdFx0Lm9mZigncGFzdGVJbWFnZUVycm9yJylcblx0XHRcdFx0Lm9mZigncGFzdGVUZXh0Jyk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdHNob3c6ZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLiRlbC5zaG93KCk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdGhpZGU6ZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLiRlbC5oaWRlKCk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdHNob3dfbWVzc2FnZTpmdW5jdGlvbiggbXNnICkge1xuXHRcdFx0dGhpcy4kbWVzc2FnZS50ZXh0KCBtc2cgKTtcblx0XHR9XG5cdH0pO1xuXG5cdHdwLm1lZGlhLnRoZXBhc3RlLnZpZXcuRGF0YVNvdXJjZUltYWdlR3JhYmJlciA9IHdwLm1lZGlhLlZpZXcuZXh0ZW5kKHtcbi8vXHRcdHRhZ05hbWU6ICAgJ2RpdicsXG5cdFx0dGVtcGxhdGU6IHdwLnRlbXBsYXRlKCd0aGVwYXN0ZS1ncmFiYmVyJyksXG5cdFx0Y2xhc3NOYW1lIDogJ3RoZXBhc3RlLWdyYWJiZXInLFxuXHRcdFxuXHRcdGdyYWJiZXIgOiBudWxsLFxuXHRcdHVwbG9hZGVyIDogbnVsbCxcblx0XHRcblx0XHRpbml0aWFsaXplIDogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgcmV0ID0gd3AubWVkaWEuVmlldy5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cblx0XHRcdF8uZGVmYXVsdHMoIHRoaXMub3B0aW9ucywge1xuXHRcdFx0XHR3cHVwbG9hZGVyXHRcdDogbnVsbCxcblx0XHRcdFx0ZGVmYXVsdEZpbGVOYW1lXHQ6IGwxMG4ucGFzdGVkLFxuXHRcdFx0XHRkZWZhdWx0RmlsZUZvcm1hdCA6ICdpbWFnZS9wbmcnLFxuXHRcdFx0XHR0aXRsZVx0XHRcdDogbDEwbi5jb3B5X3Bhc3RlIFxuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMuZ3JhYmJlciAgPSBuZXcgdGhpcy5vcHRpb25zLmdyYWJiZXIoIHsgY29udHJvbGxlclx0OiB0aGlzLmNvbnRyb2xsZXIgfSApO1xuXG5cdFx0XHR0aGlzLnVwbG9hZGVyID0gbmV3IHdwLm1lZGlhLnRoZXBhc3RlLnZpZXcuRGF0YVNvdXJjZUltYWdlVXBsb2FkZXIoIHtcdFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udHJvbGxlclx0XHRcdDogdGhpcy5jb250cm9sbGVyLFxuXHRcdFx0XHRcdFx0XHRcdFx0dXBsb2Rlclx0XHRcdFx0OiB0aGlzLm9wdGlvbnMud3B1cGxvYWRlcixcblx0XHRcdFx0XHRcdFx0XHRcdGRlZmF1bHRGaWxlTmFtZVx0XHQ6IHRoaXMub3B0aW9ucy5kZWZhdWx0RmlsZU5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0RmlsZUZvcm1hdFx0OiB0aGlzLm9wdGlvbnMuZGVmYXVsdEZpbGVGb3JtYXRcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdHRoaXMucmVuZGVyKCk7XG5cblx0XHRcdHRoaXMubGlzdGVuVG8oIHRoaXMuZ3JhYmJlciwgJ2FjdGlvbjpjcmVhdGU6ZGF0YWltYWdlJyxcdHRoaXMuaW1hZ2VDcmVhdGVkICk7XG5cdFx0XHR0aGlzLmxpc3RlblRvKCB0aGlzLnVwbG9hZGVyLCAnYWN0aW9uOmRpc2NhcmQ6ZGF0YWltYWdlJyxcdHRoaXMuc3RhcnRHcmFiYmluZyApO1xuXG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH0sXG5cdFx0cmVuZGVyOmZ1bmN0aW9uKCl7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cblx0XHRcdHdwLm1lZGlhLlZpZXcucHJvdG90eXBlLnJlbmRlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cblx0XHRcdHRoaXMuJCgnLmNvbnRlbnQnKVxuXHRcdFx0XHQuYXBwZW5kKCB0aGlzLmdyYWJiZXIucmVuZGVyKCkuJGVsIClcblx0XHRcdFx0LmFwcGVuZCggdGhpcy51cGxvYWRlci5yZW5kZXIoKS4kZWwgKTtcblxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHRpbWFnZUNyZWF0ZWQgOiBmdW5jdGlvbiggZ3JhYmJlciAsIGltYWdlRGF0YSApIHtcblx0XHRcdHRoaXMuZ3JhYmJlci5zdG9wKCkuaGlkZSgpO1xuXHRcdFx0dGhpcy51cGxvYWRlci5zaG93KCkuc2V0SW1hZ2VEYXRhKCBpbWFnZURhdGEgKTtcblx0XHR9LFxuXHRcdHN0YXJ0R3JhYmJpbmc6ZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLnVwbG9hZGVyLmhpZGUoKTtcblx0XHRcdHRoaXMuZ3JhYmJlci5zaG93KCkuc3RhcnQoKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0c3RvcEdyYWJiaW5nOmZ1bmN0aW9uKCkge1xuXHRcdFx0dGhpcy5ncmFiYmVyLnN0b3AoKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0Z2V0QWN0aW9uIDogZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5ncmFiYmVyLmFjdGlvbjtcblx0XHR9LFxuXHRcdGRpc21pc3M6ZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLmdyYWJiZXIuc3RvcCgpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHR9KTtcblxufSkoalF1ZXJ5LHdpbmRvdyxtT3hpZSk7XG4iXX0= 
  • the-paste/trunk/readme.txt

    r1730916 r1760781  
    4141== Changelog == 
    4242 
     43= 1.0.2 = 
     44* Remove unnecessary settings 
     45 
    4346= 1.0.1 = 
    4447* Update plugin URL 
Note: See TracChangeset for help on using the changeset viewer.