vue-element-admin/node_modules/.cache/babel-loader/3fa78ad5748a6aae411e67b19f205751.json
2025-08-06 00:44:43 +08:00

1 line
28 KiB
JSON

{"remainingRequest":"/Users/kang/Gitea/vue-element-admin/node_modules/thread-loader/dist/cjs.js!/Users/kang/Gitea/vue-element-admin/node_modules/babel-loader/lib/index.js!/Users/kang/Gitea/vue-element-admin/node_modules/cache-loader/dist/cjs.js??ref--0-0!/Users/kang/Gitea/vue-element-admin/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/kang/Gitea/vue-element-admin/src/components/ImageCropper/index.vue?vue&type=script&lang=js","dependencies":[{"path":"/Users/kang/Gitea/vue-element-admin/src/components/ImageCropper/index.vue","mtime":1754409279862},{"path":"/Users/kang/Gitea/vue-element-admin/babel.config.js","mtime":1754409277597},{"path":"/Users/kang/Gitea/vue-element-admin/node_modules/cache-loader/dist/cjs.js","mtime":1754409278035},{"path":"/Users/kang/Gitea/vue-element-admin/node_modules/thread-loader/dist/cjs.js","mtime":1754409279608},{"path":"/Users/kang/Gitea/vue-element-admin/node_modules/babel-loader/lib/index.js","mtime":1754409277911},{"path":"/Users/kang/Gitea/vue-element-admin/node_modules/cache-loader/dist/cjs.js","mtime":1754409278035},{"path":"/Users/kang/Gitea/vue-element-admin/node_modules/vue-loader/lib/index.js","mtime":1754409279720}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCid1c2Ugc3RyaWN0JzsKCmltcG9ydCBfdHlwZW9mIGZyb20gIi9Vc2Vycy9rYW5nL0dpdGVhL3Z1ZS1lbGVtZW50LWFkbWluL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKaW1wb3J0IHJlcXVlc3QgZnJvbSAnQC91dGlscy9yZXF1ZXN0JzsKaW1wb3J0IGxhbmd1YWdlIGZyb20gJy4vdXRpbHMvbGFuZ3VhZ2UuanMnOwppbXBvcnQgbWltZXMgZnJvbSAnLi91dGlscy9taW1lcy5qcyc7CmltcG9ydCBkYXRhMmJsb2IgZnJvbSAnLi91dGlscy9kYXRhMmJsb2IuanMnOwppbXBvcnQgZWZmZWN0UmlwcGxlIGZyb20gJy4vdXRpbHMvZWZmZWN0UmlwcGxlLmpzJzsKZXhwb3J0IGRlZmF1bHQgewogIHByb3BzOiB7CiAgICAvLyDln5/vvIzkuIrkvKDmlofku7ZuYW1l77yM6Kem5Y+R5LqL5Lu25Lya5bim5LiK77yI5aaC5p6c5LiA5Liq6aG16Z2i5aSa5Liq5Zu+54mH5LiK5Lyg5o6n5Lu277yM5Y+v5Lul5YGa5Yy65YiGCiAgICBmaWVsZDogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICdhdmF0YXInCiAgICB9LAogICAgLy8g5Y6f5ZCNa2V577yM57G75Ly85LqOaWTvvIzop6blj5Hkuovku7bkvJrluKbkuIrvvIjlpoLmnpzkuIDkuKrpobXpnaLlpJrkuKrlm77niYfkuIrkvKDmjqfku7bvvIzlj6/ku6XlgZrljLrliIYKICAgIGtpOiB7CiAgICAgIHR5cGU6IE51bWJlciwKICAgICAgZGVmYXVsdDogMAogICAgfSwKICAgIC8vIOaYvuekuuivpeaOp+S7tuS4juWQpgogICAgdmFsdWU6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogdHJ1ZQogICAgfSwKICAgIC8vIOS4iuS8oOWcsOWdgAogICAgdXJsOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogJycKICAgIH0sCiAgICAvLyDlhbbku5bopoHkuIrkvKDmlofku7bpmYTluKbnmoTmlbDmja7vvIzlr7nosaHmoLzlvI8KICAgIHBhcmFtczogewogICAgICB0eXBlOiBPYmplY3QsCiAgICAgIGRlZmF1bHQ6IG51bGwKICAgIH0sCiAgICAvLyBBZGQgY3VzdG9tIGhlYWRlcnMKICAgIGhlYWRlcnM6IHsKICAgICAgdHlwZTogT2JqZWN0LAogICAgICBkZWZhdWx0OiBudWxsCiAgICB9LAogICAgLy8g5Ymq6KOB5Zu+54mH55qE5a69CiAgICB3aWR0aDogewogICAgICB0eXBlOiBOdW1iZXIsCiAgICAgIGRlZmF1bHQ6IDIwMAogICAgfSwKICAgIC8vIOWJquijgeWbvueJh+eahOmrmAogICAgaGVpZ2h0OiB7CiAgICAgIHR5cGU6IE51bWJlciwKICAgICAgZGVmYXVsdDogMjAwCiAgICB9LAogICAgLy8g5LiN5pi+56S65peL6L2s5Yqf6IO9CiAgICBub1JvdGF0ZTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiB0cnVlCiAgICB9LAogICAgLy8g5LiN6aKE6KeI5ZyG5b2i5Zu+54mHCiAgICBub0NpcmNsZTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIC8vIOS4jemihOiniOaWueW9ouWbvueJhwogICAgbm9TcXVhcmU6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICAvLyDljZXmlofku7blpKflsI/pmZDliLYKICAgIG1heFNpemU6IHsKICAgICAgdHlwZTogTnVtYmVyLAogICAgICBkZWZhdWx0OiAxMDI0MAogICAgfSwKICAgIC8vIOivreiogOexu+WeiwogICAgbGFuZ1R5cGU6IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAnemgnCiAgICB9LAogICAgLy8g6K+t6KiA5YyFCiAgICBsYW5nRXh0OiB7CiAgICAgIHR5cGU6IE9iamVjdCwKICAgICAgZGVmYXVsdDogbnVsbAogICAgfSwKICAgIC8vIOWbvueJh+S4iuS8oOagvOW8jwogICAgaW1nRm9ybWF0OiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogJ3BuZycKICAgIH0sCiAgICAvLyDmmK/lkKbmlK/mjIHot6jln58KICAgIHdpdGhDcmVkZW50aWFsczogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfQogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHZhciBpbWdGb3JtYXQgPSB0aGlzLmltZ0Zvcm1hdCwKICAgICAgbGFuZ1R5cGUgPSB0aGlzLmxhbmdUeXBlLAogICAgICBsYW5nRXh0ID0gdGhpcy5sYW5nRXh0LAogICAgICB3aWR0aCA9IHRoaXMud2lkdGgsCiAgICAgIGhlaWdodCA9IHRoaXMuaGVpZ2h0OwogICAgdmFyIGlzU3VwcG9ydGVkID0gdHJ1ZTsKICAgIHZhciBhbGxvd0ltZ0Zvcm1hdCA9IFsnanBnJywgJ3BuZyddOwogICAgdmFyIHRlbXBJbWdGb3JtYXQgPSBhbGxvd0ltZ0Zvcm1hdC5pbmRleE9mKGltZ0Zvcm1hdCkgPT09IC0xID8gJ2pwZycgOiBpbWdGb3JtYXQ7CiAgICB2YXIgbGFuZyA9IGxhbmd1YWdlW2xhbmdUeXBlXSA/IGxhbmd1YWdlW2xhbmdUeXBlXSA6IGxhbmd1YWdlWydlbiddOwogICAgdmFyIG1pbWUgPSBtaW1lc1t0ZW1wSW1nRm9ybWF0XTsKICAgIC8vIOinhOiMg+WbvueJh+agvOW8jwogICAgdGhpcy5pbWdGb3JtYXQgPSB0ZW1wSW1nRm9ybWF0OwogICAgaWYgKGxhbmdFeHQpIHsKICAgICAgT2JqZWN0LmFzc2lnbihsYW5nLCBsYW5nRXh0KTsKICAgIH0KICAgIGlmICh0eXBlb2YgRm9ybURhdGEgIT09ICdmdW5jdGlvbicpIHsKICAgICAgaXNTdXBwb3J0ZWQgPSBmYWxzZTsKICAgIH0KICAgIHJldHVybiB7CiAgICAgIC8vIOWbvueJh+eahG1pbWUKICAgICAgbWltZTogbWltZSwKICAgICAgLy8g6K+t6KiA5YyFCiAgICAgIGxhbmc6IGxhbmcsCiAgICAgIC8vIOa1j+iniOWZqOaYr+WQpuaUr+aMgeivpeaOp+S7tgogICAgICBpc1N1cHBvcnRlZDogaXNTdXBwb3J0ZWQsCiAgICAgIC8vIOa1j+iniOWZqOaYr+WQpuaUr+aMgeinpuWxj+S6i+S7tgogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zCiAgICAgIGlzU3VwcG9ydFRvdWNoOiBkb2N1bWVudC5oYXNPd25Qcm9wZXJ0eSgnb250b3VjaHN0YXJ0JyksCiAgICAgIC8vIOatpemqpAogICAgICBzdGVwOiAxLAogICAgICAvLyAx6YCJ5oup5paH5Lu2IDLliaroo4EgM+S4iuS8oAogICAgICAvLyDkuIrkvKDnirbmgIHlj4rov5vluqYKICAgICAgbG9hZGluZzogMCwKICAgICAgLy8gMOacquW8gOWniyAx5q2j5ZyoIDLmiJDlip8gM+mUmeivrwogICAgICBwcm9ncmVzczogMCwKICAgICAgLy8g5piv5ZCm5pyJ6ZSZ6K+v5Y+K6ZSZ6K+v5L+h5oGvCiAgICAgIGhhc0Vycm9yOiBmYWxzZSwKICAgICAgZXJyb3JNc2c6ICcnLAogICAgICAvLyDpnIDmsYLlm77lrr3pq5jmr5QKICAgICAgcmF0aW86IHdpZHRoIC8gaGVpZ2h0LAogICAgICAvLyDljp/lm77lnLDlnYDjgIHnlJ/miJDlm77niYflnLDlnYAKICAgICAgc291cmNlSW1nOiBudWxsLAogICAgICBzb3VyY2VJbWdVcmw6ICcnLAogICAgICBjcmVhdGVJbWdVcmw6ICcnLAogICAgICAvLyDljp/lm77niYfmi5bliqjkuovku7bliJ3lp4vlgLwKICAgICAgc291cmNlSW1nTW91c2VEb3duOiB7CiAgICAgICAgb246IGZhbHNlLAogICAgICAgIG1YOiAwLAogICAgICAgIC8vIOm8oOagh+aMieS4i+eahOWdkOaghwogICAgICAgIG1ZOiAwLAogICAgICAgIHg6IDAsCiAgICAgICAgLy8gc2NhbGXljp/lm77lnZDmoIcKICAgICAgICB5OiAwCiAgICAgIH0sCiAgICAgIC8vIOeUn+aIkOWbvueJh+mihOiniOeahOWuueWZqOWkp+WwjwogICAgICBwcmV2aWV3Q29udGFpbmVyOiB7CiAgICAgICAgd2lkdGg6IDEwMCwKICAgICAgICBoZWlnaHQ6IDEwMAogICAgICB9LAogICAgICAvLyDljp/lm77lrrnlmajlrr3pq5gKICAgICAgc291cmNlSW1nQ29udGFpbmVyOiB7CiAgICAgICAgLy8gc2ljCiAgICAgICAgd2lkdGg6IDI0MCwKICAgICAgICBoZWlnaHQ6IDE4NCAvLyDlpoLmnpznlJ/miJDlm77mr5TkvovkuI7mraTkuIDoh7TkvJrlh7rnjrBidWfvvIzlhYjmlLnmiJDnibnmrornmoTmoLzlvI/lkKfvvIzlk4jlk4jlk4gKICAgICAgfSwKICAgICAgLy8g5Y6f5Zu+5bGV56S65bGe5oCnCiAgICAgIHNjYWxlOiB7CiAgICAgICAgem9vbUFkZE9uOiBmYWxzZSwKICAgICAgICAvLyDmjInpkq7nvKnmlL7kuovku7blvIDlkK8KICAgICAgICB6b29tU3ViT246IGZhbHNlLAogICAgICAgIC8vIOaMiemSrue8qeaUvuS6i+S7tuW8gOWQrwogICAgICAgIHJhbmdlOiAxLAogICAgICAgIC8vIOacgOWkpzEwMAogICAgICAgIHJvdGF0ZUxlZnQ6IGZhbHNlLAogICAgICAgIC8vIOaMiemSruWQkeW3puaXi+i9rOS6i+S7tuW8gOWQrwogICAgICAgIHJvdGF0ZVJpZ2h0OiBmYWxzZSwKICAgICAgICAvLyDmjInpkq7lkJHlj7Pml4vovazkuovku7blvIDlkK8KICAgICAgICBkZWdyZWU6IDAsCiAgICAgICAgLy8g5peL6L2s5bqm5pWwCiAgICAgICAgeDogMCwKICAgICAgICB5OiAwLAogICAgICAgIHdpZHRoOiAwLAogICAgICAgIGhlaWdodDogMCwKICAgICAgICBtYXhXaWR0aDogMCwKICAgICAgICBtYXhIZWlnaHQ6IDAsCiAgICAgICAgbWluV2lkdGg6IDAsCiAgICAgICAgLy8g5pyA5a69CiAgICAgICAgbWluSGVpZ2h0OiAwLAogICAgICAgIG5hdHVyYWxXaWR0aDogMCwKICAgICAgICAvLyDljp/lrr0KICAgICAgICBuYXR1cmFsSGVpZ2h0OiAwCiAgICAgIH0KICAgIH07CiAgfSwKICBjb21wdXRlZDogewogICAgLy8g6L+b5bqm5p2h5qC35byPCiAgICBwcm9ncmVzc1N0eWxlOiBmdW5jdGlvbiBwcm9ncmVzc1N0eWxlKCkgewogICAgICB2YXIgcHJvZ3Jlc3MgPSB0aGlzLnByb2dyZXNzOwogICAgICByZXR1cm4gewogICAgICAgIHdpZHRoOiBwcm9ncmVzcyArICclJwogICAgICB9OwogICAgfSwKICAgIC8vIOWOn+Wbvuagt+W8jwogICAgc291cmNlSW1nU3R5bGU6IGZ1bmN0aW9uIHNvdXJjZUltZ1N0eWxlKCkgewogICAgICB2YXIgc2NhbGUgPSB0aGlzLnNjYWxlLAogICAgICAgIHNvdXJjZUltZ01hc2tpbmcgPSB0aGlzLnNvdXJjZUltZ01hc2tpbmc7CiAgICAgIHZhciB0b3AgPSBzY2FsZS55ICsgc291cmNlSW1nTWFza2luZy55ICsgJ3B4JzsKICAgICAgdmFyIGxlZnQgPSBzY2FsZS54ICsgc291cmNlSW1nTWFza2luZy54ICsgJ3B4JzsKICAgICAgcmV0dXJuIHsKICAgICAgICB0b3A6IHRvcCwKICAgICAgICBsZWZ0OiBsZWZ0LAogICAgICAgIHdpZHRoOiBzY2FsZS53aWR0aCArICdweCcsCiAgICAgICAgaGVpZ2h0OiBzY2FsZS5oZWlnaHQgKyAncHgnLAogICAgICAgIHRyYW5zZm9ybTogJ3JvdGF0ZSgnICsgc2NhbGUuZGVncmVlICsgJ2RlZyknLAogICAgICAgIC8vIOaXi+i9rOaXtiDlt6bkvqfljp/lp4vlm77ml4vovazmoLflvI8KICAgICAgICAnLW1zLXRyYW5zZm9ybSc6ICdyb3RhdGUoJyArIHNjYWxlLmRlZ3JlZSArICdkZWcpJywKICAgICAgICAvLyDlhbzlrrlJRTkKICAgICAgICAnLW1vei10cmFuc2Zvcm0nOiAncm90YXRlKCcgKyBzY2FsZS5kZWdyZWUgKyAnZGVnKScsCiAgICAgICAgLy8g5YW85a65RmlyZUZveAogICAgICAgICctd2Via2l0LXRyYW5zZm9ybSc6ICdyb3RhdGUoJyArIHNjYWxlLmRlZ3JlZSArICdkZWcpJywKICAgICAgICAvLyDlhbzlrrlTYWZhcmkg5ZKMIGNocm9tZQogICAgICAgICctby10cmFuc2Zvcm0nOiAncm90YXRlKCcgKyBzY2FsZS5kZWdyZWUgKyAnZGVnKScgLy8g5YW85a65IE9wZXJhCiAgICAgIH07CiAgICB9LAogICAgLy8g5Y6f5Zu+6JKZ54mI5bGe5oCnCiAgICBzb3VyY2VJbWdNYXNraW5nOiBmdW5jdGlvbiBzb3VyY2VJbWdNYXNraW5nKCkgewogICAgICB2YXIgd2lkdGggPSB0aGlzLndpZHRoLAogICAgICAgIGhlaWdodCA9IHRoaXMuaGVpZ2h0LAogICAgICAgIHJhdGlvID0gdGhpcy5yYXRpbywKICAgICAgICBzb3VyY2VJbWdDb250YWluZXIgPSB0aGlzLnNvdXJjZUltZ0NvbnRhaW5lcjsKICAgICAgdmFyIHNpYyA9IHNvdXJjZUltZ0NvbnRhaW5lcjsKICAgICAgdmFyIHNpY1JhdGlvID0gc2ljLndpZHRoIC8gc2ljLmhlaWdodDsgLy8g5Y6f5Zu+5a655Zmo5a696auY5q+UCiAgICAgIHZhciB4ID0gMDsKICAgICAgdmFyIHkgPSAwOwogICAgICB2YXIgdyA9IHNpYy53aWR0aDsKICAgICAgdmFyIGggPSBzaWMuaGVpZ2h0OwogICAgICB2YXIgc2NhbGUgPSAxOwogICAgICBpZiAocmF0aW8gPCBzaWNSYXRpbykgewogICAgICAgIHNjYWxlID0gc2ljLmhlaWdodCAvIGhlaWdodDsKICAgICAgICB3ID0gc2ljLmhlaWdodCAqIHJhdGlvOwogICAgICAgIHggPSAoc2ljLndpZHRoIC0gdykgLyAyOwogICAgICB9CiAgICAgIGlmIChyYXRpbyA+IHNpY1JhdGlvKSB7CiAgICAgICAgc2NhbGUgPSBzaWMud2lkdGggLyB3aWR0aDsKICAgICAgICBoID0gc2ljLndpZHRoIC8gcmF0aW87CiAgICAgICAgeSA9IChzaWMuaGVpZ2h0IC0gaCkgLyAyOwogICAgICB9CiAgICAgIHJldHVybiB7CiAgICAgICAgc2NhbGU6IHNjYWxlLAogICAgICAgIC8vIOiSmeeJiOebuOWvuemcgOaxguWuvemrmOeahOe8qeaUvgogICAgICAgIHg6IHgsCiAgICAgICAgeTogeSwKICAgICAgICB3aWR0aDogdywKICAgICAgICBoZWlnaHQ6IGgKICAgICAgfTsKICAgIH0sCiAgICAvLyDljp/lm77pga7nvanmoLflvI8KICAgIHNvdXJjZUltZ1NoYWRlU3R5bGU6IGZ1bmN0aW9uIHNvdXJjZUltZ1NoYWRlU3R5bGUoKSB7CiAgICAgIHZhciBzb3VyY2VJbWdNYXNraW5nID0gdGhpcy5zb3VyY2VJbWdNYXNraW5nLAogICAgICAgIHNvdXJjZUltZ0NvbnRhaW5lciA9IHRoaXMuc291cmNlSW1nQ29udGFpbmVyOwogICAgICB2YXIgc2ljID0gc291cmNlSW1nQ29udGFpbmVyOwogICAgICB2YXIgc2ltID0gc291cmNlSW1nTWFza2luZzsKICAgICAgdmFyIHcgPSBzaW0ud2lkdGggPT09IHNpYy53aWR0aCA/IHNpbS53aWR0aCA6IChzaWMud2lkdGggLSBzaW0ud2lkdGgpIC8gMjsKICAgICAgdmFyIGggPSBzaW0uaGVpZ2h0ID09PSBzaWMuaGVpZ2h0ID8gc2ltLmhlaWdodCA6IChzaWMuaGVpZ2h0IC0gc2ltLmhlaWdodCkgLyAyOwogICAgICByZXR1cm4gewogICAgICAgIHdpZHRoOiB3ICsgJ3B4JywKICAgICAgICBoZWlnaHQ6IGggKyAncHgnCiAgICAgIH07CiAgICB9LAogICAgcHJldmlld1N0eWxlOiBmdW5jdGlvbiBwcmV2aWV3U3R5bGUoKSB7CiAgICAgIHZhciByYXRpbyA9IHRoaXMucmF0aW8sCiAgICAgICAgcHJldmlld0NvbnRhaW5lciA9IHRoaXMucHJldmlld0NvbnRhaW5lcjsKICAgICAgdmFyIHBjID0gcHJldmlld0NvbnRhaW5lcjsKICAgICAgdmFyIHcgPSBwYy53aWR0aDsKICAgICAgdmFyIGggPSBwYy5oZWlnaHQ7CiAgICAgIHZhciBwY1JhdGlvID0gdyAvIGg7CiAgICAgIGlmIChyYXRpbyA8IHBjUmF0aW8pIHsKICAgICAgICB3ID0gcGMuaGVpZ2h0ICogcmF0aW87CiAgICAgIH0KICAgICAgaWYgKHJhdGlvID4gcGNSYXRpbykgewogICAgICAgIGggPSBwYy53aWR0aCAvIHJhdGlvOwogICAgICB9CiAgICAgIHJldHVybiB7CiAgICAgICAgd2lkdGg6IHcgKyAncHgnLAogICAgICAgIGhlaWdodDogaCArICdweCcKICAgICAgfTsKICAgIH0KICB9LAogIHdhdGNoOiB7CiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUobmV3VmFsdWUpIHsKICAgICAgaWYgKG5ld1ZhbHVlICYmIHRoaXMubG9hZGluZyAhPT0gMSkgewogICAgICAgIHRoaXMucmVzZXQoKTsKICAgICAgfQogICAgfQogIH0sCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIC8vIOe7keWumuaMiemUrmVzY+makOiXj+atpOaPkuS7tuS6i+S7tgogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLmNsb3NlSGFuZGxlcik7CiAgfSwKICBkZXN0cm95ZWQ6IGZ1bmN0aW9uIGRlc3Ryb3llZCgpIHsKICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5jbG9zZUhhbmRsZXIpOwogIH0sCiAgbWV0aG9kczogewogICAgLy8g54K55Ye75rOi57q55pWI5p6cCiAgICByaXBwbGU6IGZ1bmN0aW9uIHJpcHBsZShlKSB7CiAgICAgIGVmZmVjdFJpcHBsZShlKTsKICAgIH0sCiAgICAvLyDlhbPpl63mjqfku7YKICAgIG9mZjogZnVuY3Rpb24gb2ZmKCkgewogICAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpcy4kZW1pdCgnaW5wdXQnLCBmYWxzZSk7CiAgICAgICAgX3RoaXMuJGVtaXQoJ2Nsb3NlJyk7CiAgICAgICAgaWYgKF90aGlzLnN0ZXAgPT09IDMgJiYgX3RoaXMubG9hZGluZyA9PT0gMikgewogICAgICAgICAgX3RoaXMuc2V0U3RlcCgxKTsKICAgICAgICB9CiAgICAgIH0sIDIwMCk7CiAgICB9LAogICAgLy8g6K6+572u5q2l6aqkCiAgICBzZXRTdGVwOiBmdW5jdGlvbiBzZXRTdGVwKG5vKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICAvLyDlu7bml7bmmK/kuLrkuobmmL7npLrliqjnlLvmlYjmnpzlkaLvvIzlk4jlk4jlk4gKICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXMyLnN0ZXAgPSBubzsKICAgICAgfSwgMjAwKTsKICAgIH0sCiAgICAvKiDlm77niYfpgInmi6nljLrln5/lh73mlbDnu5HlrpoKICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogICAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uIHByZXZlbnREZWZhdWx0KGUpIHsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGUpIHsKICAgICAgaWYgKHRoaXMubG9hZGluZyAhPT0gMSkgewogICAgICAgIGlmIChlLnRhcmdldCAhPT0gdGhpcy4kcmVmcy5maWxlaW5wdXQpIHsKICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSB0aGlzLiRyZWZzKSB7CiAgICAgICAgICAgIHRoaXMuJHJlZnMuZmlsZWlucHV0LmNsaWNrKCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgaGFuZGxlQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVDaGFuZ2UoZSkgewogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIGlmICh0aGlzLmxvYWRpbmcgIT09IDEpIHsKICAgICAgICB2YXIgZmlsZXMgPSBlLnRhcmdldC5maWxlcyB8fCBlLmRhdGFUcmFuc2Zlci5maWxlczsKICAgICAgICB0aGlzLnJlc2V0KCk7CiAgICAgICAgaWYgKHRoaXMuY2hlY2tGaWxlKGZpbGVzWzBdKSkgewogICAgICAgICAgdGhpcy5zZXRTb3VyY2VJbWcoZmlsZXNbMF0pOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgICAvLyDmo4DmtYvpgInmi6nnmoTmlofku7bmmK/lkKblkIjpgIIKICAgIGNoZWNrRmlsZTogZnVuY3Rpb24gY2hlY2tGaWxlKGZpbGUpIHsKICAgICAgdmFyIGxhbmcgPSB0aGlzLmxhbmcsCiAgICAgICAgbWF4U2l6ZSA9IHRoaXMubWF4U2l6ZTsKICAgICAgLy8g5LuF6ZmQ5Zu+54mHCiAgICAgIGlmIChmaWxlLnR5cGUuaW5kZXhPZignaW1hZ2UnKSA9PT0gLTEpIHsKICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTsKICAgICAgICB0aGlzLmVycm9yTXNnID0gbGFuZy5lcnJvci5vbmx5SW1nOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICAvLyDotoXlh7rlpKflsI8KICAgICAgaWYgKGZpbGUuc2l6ZSAvIDEwMjQgPiBtYXhTaXplKSB7CiAgICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7CiAgICAgICAgdGhpcy5lcnJvck1zZyA9IGxhbmcuZXJyb3Iub3V0T2ZTaXplICsgbWF4U2l6ZSArICdrYic7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB0cnVlOwogICAgfSwKICAgIC8vIOmHjee9ruaOp+S7tgogICAgcmVzZXQ6IGZ1bmN0aW9uIHJlc2V0KCkgewogICAgICB0aGlzLmxvYWRpbmcgPSAwOwogICAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7CiAgICAgIHRoaXMuZXJyb3JNc2cgPSAnJzsKICAgICAgdGhpcy5wcm9ncmVzcyA9IDA7CiAgICB9LAogICAgLy8g6K6+572u5Zu+54mH5rqQCiAgICBzZXRTb3VyY2VJbWc6IGZ1bmN0aW9uIHNldFNvdXJjZUltZyhmaWxlKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICB2YXIgZnIgPSBuZXcgRmlsZVJlYWRlcigpOwogICAgICBmci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkgewogICAgICAgIF90aGlzMy5zb3VyY2VJbWdVcmwgPSBmci5yZXN1bHQ7CiAgICAgICAgX3RoaXMzLnN0YXJ0Q3JvcCgpOwogICAgICB9OwogICAgICBmci5yZWFkQXNEYXRhVVJMKGZpbGUpOwogICAgfSwKICAgIC8vIOWJquijgeWJjeWHhuWkh+W3peS9nAogICAgc3RhcnRDcm9wOiBmdW5jdGlvbiBzdGFydENyb3AoKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICB2YXIgd2lkdGggPSB0aGlzLndpZHRoLAogICAgICAgIGhlaWdodCA9IHRoaXMuaGVpZ2h0LAogICAgICAgIHJhdGlvID0gdGhpcy5yYXRpbywKICAgICAgICBzY2FsZSA9IHRoaXMuc2NhbGUsCiAgICAgICAgc291cmNlSW1nVXJsID0gdGhpcy5zb3VyY2VJbWdVcmwsCiAgICAgICAgc291cmNlSW1nTWFza2luZyA9IHRoaXMuc291cmNlSW1nTWFza2luZywKICAgICAgICBsYW5nID0gdGhpcy5sYW5nOwogICAgICB2YXIgc2ltID0gc291cmNlSW1nTWFza2luZzsKICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpOwogICAgICBpbWcuc3JjID0gc291cmNlSW1nVXJsOwogICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBuV2lkdGggPSBpbWcubmF0dXJhbFdpZHRoOwogICAgICAgIHZhciBuSGVpZ2h0ID0gaW1nLm5hdHVyYWxIZWlnaHQ7CiAgICAgICAgdmFyIG5SYXRpbyA9IG5XaWR0aCAvIG5IZWlnaHQ7CiAgICAgICAgdmFyIHcgPSBzaW0ud2lkdGg7CiAgICAgICAgdmFyIGggPSBzaW0uaGVpZ2h0OwogICAgICAgIHZhciB4ID0gMDsKICAgICAgICB2YXIgeSA9IDA7CiAgICAgICAgLy8g5Zu+54mH5YOP57Sg5LiN6L6+5qCHCiAgICAgICAgaWYgKG5XaWR0aCA8IHdpZHRoIHx8IG5IZWlnaHQgPCBoZWlnaHQpIHsKICAgICAgICAgIF90aGlzNC5oYXNFcnJvciA9IHRydWU7CiAgICAgICAgICBfdGhpczQuZXJyb3JNc2cgPSBsYW5nLmVycm9yLmxvd2VzdFB4ICsgd2lkdGggKyAnKicgKyBoZWlnaHQ7CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmIChyYXRpbyA+IG5SYXRpbykgewogICAgICAgICAgaCA9IHcgLyBuUmF0aW87CiAgICAgICAgICB5ID0gKHNpbS5oZWlnaHQgLSBoKSAvIDI7CiAgICAgICAgfQogICAgICAgIGlmIChyYXRpbyA8IG5SYXRpbykgewogICAgICAgICAgdyA9IGggKiBuUmF0aW87CiAgICAgICAgICB4ID0gKHNpbS53aWR0aCAtIHcpIC8gMjsKICAgICAgICB9CiAgICAgICAgc2NhbGUucmFuZ2UgPSAwOwogICAgICAgIHNjYWxlLnggPSB4OwogICAgICAgIHNjYWxlLnkgPSB5OwogICAgICAgIHNjYWxlLndpZHRoID0gdzsKICAgICAgICBzY2FsZS5oZWlnaHQgPSBoOwogICAgICAgIHNjYWxlLmRlZ3JlZSA9IDA7CiAgICAgICAgc2NhbGUubWluV2lkdGggPSB3OwogICAgICAgIHNjYWxlLm1pbkhlaWdodCA9IGg7CiAgICAgICAgc2NhbGUubWF4V2lkdGggPSBuV2lkdGggKiBzaW0uc2NhbGU7CiAgICAgICAgc2NhbGUubWF4SGVpZ2h0ID0gbkhlaWdodCAqIHNpbS5zY2FsZTsKICAgICAgICBzY2FsZS5uYXR1cmFsV2lkdGggPSBuV2lkdGg7CiAgICAgICAgc2NhbGUubmF0dXJhbEhlaWdodCA9IG5IZWlnaHQ7CiAgICAgICAgX3RoaXM0LnNvdXJjZUltZyA9IGltZzsKICAgICAgICBfdGhpczQuY3JlYXRlSW1nKCk7CiAgICAgICAgX3RoaXM0LnNldFN0ZXAoMik7CiAgICAgIH07CiAgICB9LAogICAgLy8g6byg5qCH5oyJ5LiL5Zu+54mH5YeG5aSH56e75YqoCiAgICBpbWdTdGFydE1vdmU6IGZ1bmN0aW9uIGltZ1N0YXJ0TW92ZShlKSB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgLy8g5pSv5oyB6Kem5pG45LqL5Lu277yM5YiZ6byg5qCH5LqL5Lu25peg5pWICiAgICAgIGlmICh0aGlzLmlzU3VwcG9ydFRvdWNoICYmICFlLnRhcmdldFRvdWNoZXMpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgdmFyIGV0ID0gZS50YXJnZXRUb3VjaGVzID8gZS50YXJnZXRUb3VjaGVzWzBdIDogZTsKICAgICAgdmFyIHNvdXJjZUltZ01vdXNlRG93biA9IHRoaXMuc291cmNlSW1nTW91c2VEb3duLAogICAgICAgIHNjYWxlID0gdGhpcy5zY2FsZTsKICAgICAgdmFyIHNpbWQgPSBzb3VyY2VJbWdNb3VzZURvd247CiAgICAgIHNpbWQubVggPSBldC5zY3JlZW5YOwogICAgICBzaW1kLm1ZID0gZXQuc2NyZWVuWTsKICAgICAgc2ltZC54ID0gc2NhbGUueDsKICAgICAgc2ltZC55ID0gc2NhbGUueTsKICAgICAgc2ltZC5vbiA9IHRydWU7CiAgICB9LAogICAgLy8g6byg5qCH5oyJ5LiL54q25oCB5LiL56e75Yqo77yM5Zu+54mH56e75YqoCiAgICBpbWdNb3ZlOiBmdW5jdGlvbiBpbWdNb3ZlKGUpIHsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAvLyDmlK/mjIHop6bmkbjkuovku7bvvIzliJnpvKDmoIfkuovku7bml6DmlYgKICAgICAgaWYgKHRoaXMuaXNTdXBwb3J0VG91Y2ggJiYgIWUudGFyZ2V0VG91Y2hlcykgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICB2YXIgZXQgPSBlLnRhcmdldFRvdWNoZXMgPyBlLnRhcmdldFRvdWNoZXNbMF0gOiBlOwogICAgICB2YXIgX3RoaXMkc291cmNlSW1nTW91c2VEID0gdGhpcy5zb3VyY2VJbWdNb3VzZURvd24sCiAgICAgICAgb24gPSBfdGhpcyRzb3VyY2VJbWdNb3VzZUQub24sCiAgICAgICAgbVggPSBfdGhpcyRzb3VyY2VJbWdNb3VzZUQubVgsCiAgICAgICAgbVkgPSBfdGhpcyRzb3VyY2VJbWdNb3VzZUQubVksCiAgICAgICAgeCA9IF90aGlzJHNvdXJjZUltZ01vdXNlRC54LAogICAgICAgIHkgPSBfdGhpcyRzb3VyY2VJbWdNb3VzZUQueSwKICAgICAgICBzY2FsZSA9IHRoaXMuc2NhbGUsCiAgICAgICAgc291cmNlSW1nTWFza2luZyA9IHRoaXMuc291cmNlSW1nTWFza2luZzsKICAgICAgdmFyIHNpbSA9IHNvdXJjZUltZ01hc2tpbmc7CiAgICAgIHZhciBuWCA9IGV0LnNjcmVlblg7CiAgICAgIHZhciBuWSA9IGV0LnNjcmVlblk7CiAgICAgIHZhciBkWCA9IG5YIC0gbVg7CiAgICAgIHZhciBkWSA9IG5ZIC0gbVk7CiAgICAgIHZhciByWCA9IHggKyBkWDsKICAgICAgdmFyIHJZID0geSArIGRZOwogICAgICBpZiAoIW9uKSByZXR1cm47CiAgICAgIGlmIChyWCA+IDApIHsKICAgICAgICByWCA9IDA7CiAgICAgIH0KICAgICAgaWYgKHJZID4gMCkgewogICAgICAgIHJZID0gMDsKICAgICAgfQogICAgICBpZiAoclggPCBzaW0ud2lkdGggLSBzY2FsZS53aWR0aCkgewogICAgICAgIHJYID0gc2ltLndpZHRoIC0gc2NhbGUud2lkdGg7CiAgICAgIH0KICAgICAgaWYgKHJZIDwgc2ltLmhlaWdodCAtIHNjYWxlLmhlaWdodCkgewogICAgICAgIHJZID0gc2ltLmhlaWdodCAtIHNjYWxlLmhlaWdodDsKICAgICAgfQogICAgICBzY2FsZS54ID0gclg7CiAgICAgIHNjYWxlLnkgPSByWTsKICAgIH0sCiAgICAvLyDmjInpkq7mjInkuIvlvIDlp4vlkJHlj7Pml4vovawKICAgIHN0YXJ0Um90YXRlUmlnaHQ6IGZ1bmN0aW9uIHN0YXJ0Um90YXRlUmlnaHQoZSkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgdmFyIHNjYWxlID0gdGhpcy5zY2FsZTsKICAgICAgc2NhbGUucm90YXRlUmlnaHQgPSB0cnVlOwogICAgICB2YXIgX3JvdGF0ZSA9IGZ1bmN0aW9uIHJvdGF0ZSgpIHsKICAgICAgICBpZiAoc2NhbGUucm90YXRlUmlnaHQpIHsKICAgICAgICAgIHZhciBkZWdyZWUgPSArK3NjYWxlLmRlZ3JlZTsKICAgICAgICAgIF90aGlzNS5jcmVhdGVJbWcoZGVncmVlKTsKICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBfcm90YXRlKCk7CiAgICAgICAgICB9LCA2MCk7CiAgICAgICAgfQogICAgICB9OwogICAgICBfcm90YXRlKCk7CiAgICB9LAogICAgLy8g5oyJ6ZKu5oyJ5LiL5byA5aeL5ZCR5bem5peL6L2sCiAgICBzdGFydFJvdGF0ZUxlZnQ6IGZ1bmN0aW9uIHN0YXJ0Um90YXRlTGVmdChlKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB2YXIgc2NhbGUgPSB0aGlzLnNjYWxlOwogICAgICBzY2FsZS5yb3RhdGVMZWZ0ID0gdHJ1ZTsKICAgICAgdmFyIF9yb3RhdGUyID0gZnVuY3Rpb24gcm90YXRlKCkgewogICAgICAgIGlmIChzY2FsZS5yb3RhdGVMZWZ0KSB7CiAgICAgICAgICB2YXIgZGVncmVlID0gLS1zY2FsZS5kZWdyZWU7CiAgICAgICAgICBfdGhpczYuY3JlYXRlSW1nKGRlZ3JlZSk7CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgX3JvdGF0ZTIoKTsKICAgICAgICAgIH0sIDYwKTsKICAgICAgICB9CiAgICAgIH07CiAgICAgIF9yb3RhdGUyKCk7CiAgICB9LAogICAgLy8g5YGc5q2i5peL6L2sCiAgICBlbmRSb3RhdGU6IGZ1bmN0aW9uIGVuZFJvdGF0ZSgpIHsKICAgICAgdmFyIHNjYWxlID0gdGhpcy5zY2FsZTsKICAgICAgc2NhbGUucm90YXRlTGVmdCA9IGZhbHNlOwogICAgICBzY2FsZS5yb3RhdGVSaWdodCA9IGZhbHNlOwogICAgfSwKICAgIC8vIOaMiemSruaMieS4i+W8gOWni+aUvuWkpwogICAgc3RhcnRab29tQWRkOiBmdW5jdGlvbiBzdGFydFpvb21BZGQoZSkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKICAgICAgdmFyIHNjYWxlID0gdGhpcy5zY2FsZTsKICAgICAgc2NhbGUuem9vbUFkZE9uID0gdHJ1ZTsKICAgICAgdmFyIF96b29tID0gZnVuY3Rpb24gem9vbSgpIHsKICAgICAgICBpZiAoc2NhbGUuem9vbUFkZE9uKSB7CiAgICAgICAgICB2YXIgcmFuZ2UgPSBzY2FsZS5yYW5nZSA+PSAxMDAgPyAxMDAgOiArK3NjYWxlLnJhbmdlOwogICAgICAgICAgX3RoaXM3Lnpvb21JbWcocmFuZ2UpOwogICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIF96b29tKCk7CiAgICAgICAgICB9LCA2MCk7CiAgICAgICAgfQogICAgICB9OwogICAgICBfem9vbSgpOwogICAgfSwKICAgIC8vIOaMiemSruadvuW8gOaIluenu+W8gOWPlua2iOaUvuWkpwogICAgZW5kWm9vbUFkZDogZnVuY3Rpb24gZW5kWm9vbUFkZChlKSB7CiAgICAgIHRoaXMuc2NhbGUuem9vbUFkZE9uID0gZmFsc2U7CiAgICB9LAogICAgLy8g5oyJ6ZKu5oyJ5LiL5byA5aeL57yp5bCPCiAgICBzdGFydFpvb21TdWI6IGZ1bmN0aW9uIHN0YXJ0Wm9vbVN1YihlKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICB2YXIgc2NhbGUgPSB0aGlzLnNjYWxlOwogICAgICBzY2FsZS56b29tU3ViT24gPSB0cnVlOwogICAgICB2YXIgX3pvb20yID0gZnVuY3Rpb24gem9vbSgpIHsKICAgICAgICBpZiAoc2NhbGUuem9vbVN1Yk9uKSB7CiAgICAgICAgICB2YXIgcmFuZ2UgPSBzY2FsZS5yYW5nZSA8PSAwID8gMCA6IC0tc2NhbGUucmFuZ2U7CiAgICAgICAgICBfdGhpczguem9vbUltZyhyYW5nZSk7CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgX3pvb20yKCk7CiAgICAgICAgICB9LCA2MCk7CiAgICAgICAgfQogICAgICB9OwogICAgICBfem9vbTIoKTsKICAgIH0sCiAgICAvLyDmjInpkq7mnb7lvIDmiJbnp7vlvIDlj5bmtojnvKnlsI8KICAgIGVuZFpvb21TdWI6IGZ1bmN0aW9uIGVuZFpvb21TdWIoZSkgewogICAgICB2YXIgc2NhbGUgPSB0aGlzLnNjYWxlOwogICAgICBzY2FsZS56b29tU3ViT24gPSBmYWxzZTsKICAgIH0sCiAgICB6b29tQ2hhbmdlOiBmdW5jdGlvbiB6b29tQ2hhbmdlKGUpIHsKICAgICAgdGhpcy56b29tSW1nKGUudGFyZ2V0LnZhbHVlKTsKICAgIH0sCiAgICAvLyDnvKnmlL7ljp/lm74KICAgIHpvb21JbWc6IGZ1bmN0aW9uIHpvb21JbWcobmV3UmFuZ2UpIHsKICAgICAgdmFyIF90aGlzOSA9IHRoaXM7CiAgICAgIHZhciBzb3VyY2VJbWdNYXNraW5nID0gdGhpcy5zb3VyY2VJbWdNYXNraW5nLAogICAgICAgIHNjYWxlID0gdGhpcy5zY2FsZTsKICAgICAgdmFyIG1heFdpZHRoID0gc2NhbGUubWF4V2lkdGgsCiAgICAgICAgbWF4SGVpZ2h0ID0gc2NhbGUubWF4SGVpZ2h0LAogICAgICAgIG1pbldpZHRoID0gc2NhbGUubWluV2lkdGgsCiAgICAgICAgbWluSGVpZ2h0ID0gc2NhbGUubWluSGVpZ2h0LAogICAgICAgIHdpZHRoID0gc2NhbGUud2lkdGgsCiAgICAgICAgaGVpZ2h0ID0gc2NhbGUuaGVpZ2h0LAogICAgICAgIHggPSBzY2FsZS54LAogICAgICAgIHkgPSBzY2FsZS55OwogICAgICB2YXIgc2ltID0gc291cmNlSW1nTWFza2luZzsKICAgICAgLy8g6JKZ54mI5a696auYCiAgICAgIHZhciBzV2lkdGggPSBzaW0ud2lkdGg7CiAgICAgIHZhciBzSGVpZ2h0ID0gc2ltLmhlaWdodDsKICAgICAgLy8g5paw5a696auYCiAgICAgIHZhciBuV2lkdGggPSBtaW5XaWR0aCArIChtYXhXaWR0aCAtIG1pbldpZHRoKSAqIG5ld1JhbmdlIC8gMTAwOwogICAgICB2YXIgbkhlaWdodCA9IG1pbkhlaWdodCArIChtYXhIZWlnaHQgLSBtaW5IZWlnaHQpICogbmV3UmFuZ2UgLyAxMDA7CiAgICAgIC8vIOaWsOWdkOagh++8iOagueaNruiSmeeJiOS4reW/g+eCuee8qeaUvu+8iQogICAgICB2YXIgblggPSBzV2lkdGggLyAyIC0gbldpZHRoIC8gd2lkdGggKiAoc1dpZHRoIC8gMiAtIHgpOwogICAgICB2YXIgblkgPSBzSGVpZ2h0IC8gMiAtIG5IZWlnaHQgLyBoZWlnaHQgKiAoc0hlaWdodCAvIDIgLSB5KTsKICAgICAgLy8g5Yik5pat5paw5Z2Q5qCH5piv5ZCm6LaF6L+H6JKZ54mI6ZmQ5Yi2CiAgICAgIGlmIChuWCA+IDApIHsKICAgICAgICBuWCA9IDA7CiAgICAgIH0KICAgICAgaWYgKG5ZID4gMCkgewogICAgICAgIG5ZID0gMDsKICAgICAgfQogICAgICBpZiAoblggPCBzV2lkdGggLSBuV2lkdGgpIHsKICAgICAgICBuWCA9IHNXaWR0aCAtIG5XaWR0aDsKICAgICAgfQogICAgICBpZiAoblkgPCBzSGVpZ2h0IC0gbkhlaWdodCkgewogICAgICAgIG5ZID0gc0hlaWdodCAtIG5IZWlnaHQ7CiAgICAgIH0KICAgICAgLy8g6LWL5YC85aSE55CGCiAgICAgIHNjYWxlLnggPSBuWDsKICAgICAgc2NhbGUueSA9IG5ZOwogICAgICBzY2FsZS53aWR0aCA9IG5XaWR0aDsKICAgICAgc2NhbGUuaGVpZ2h0ID0gbkhlaWdodDsKICAgICAgc2NhbGUucmFuZ2UgPSBuZXdSYW5nZTsKICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKHNjYWxlLnJhbmdlID09PSBuZXdSYW5nZSkgewogICAgICAgICAgX3RoaXM5LmNyZWF0ZUltZygpOwogICAgICAgIH0KICAgICAgfSwgMzAwKTsKICAgIH0sCiAgICAvLyDnlJ/miJDpnIDmsYLlm77niYcKICAgIGNyZWF0ZUltZzogZnVuY3Rpb24gY3JlYXRlSW1nKGUpIHsKICAgICAgdmFyIG1pbWUgPSB0aGlzLm1pbWUsCiAgICAgICAgc291cmNlSW1nID0gdGhpcy5zb3VyY2VJbWcsCiAgICAgICAgX3RoaXMkc2NhbGUgPSB0aGlzLnNjYWxlLAogICAgICAgIHggPSBfdGhpcyRzY2FsZS54LAogICAgICAgIHkgPSBfdGhpcyRzY2FsZS55LAogICAgICAgIHdpZHRoID0gX3RoaXMkc2NhbGUud2lkdGgsCiAgICAgICAgaGVpZ2h0ID0gX3RoaXMkc2NhbGUuaGVpZ2h0LAogICAgICAgIGRlZ3JlZSA9IF90aGlzJHNjYWxlLmRlZ3JlZSwKICAgICAgICBzY2FsZSA9IHRoaXMuc291cmNlSW1nTWFza2luZy5zY2FsZTsKICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuJHJlZnMuY2FudmFzOwogICAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CiAgICAgIGlmIChlKSB7CiAgICAgICAgLy8g5Y+W5raI6byg5qCH5oyJ5LiL56e75Yqo54q25oCBCiAgICAgICAgdGhpcy5zb3VyY2VJbWdNb3VzZURvd24ub24gPSBmYWxzZTsKICAgICAgfQogICAgICBjYW52YXMud2lkdGggPSB0aGlzLndpZHRoOwogICAgICBjYW52YXMuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7CiAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgdGhpcy53aWR0aCwgdGhpcy5oZWlnaHQpOwogICAgICAvLyDlsIbpgI/mmI7ljLrln5/orr7nva7kuLrnmb3oibLlupXovrkKICAgICAgY3R4LmZpbGxTdHlsZSA9ICcjZmZmJzsKICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0KTsKICAgICAgY3R4LnRyYW5zbGF0ZSh0aGlzLndpZHRoICogMC41LCB0aGlzLmhlaWdodCAqIDAuNSk7CiAgICAgIGN0eC5yb3RhdGUoTWF0aC5QSSAqIGRlZ3JlZSAvIDE4MCk7CiAgICAgIGN0eC50cmFuc2xhdGUoLXRoaXMud2lkdGggKiAwLjUsIC10aGlzLmhlaWdodCAqIDAuNSk7CiAgICAgIGN0eC5kcmF3SW1hZ2Uoc291cmNlSW1nLCB4IC8gc2NhbGUsIHkgLyBzY2FsZSwgd2lkdGggLyBzY2FsZSwgaGVpZ2h0IC8gc2NhbGUpOwogICAgICB0aGlzLmNyZWF0ZUltZ1VybCA9IGNhbnZhcy50b0RhdGFVUkwobWltZSk7CiAgICB9LAogICAgcHJlcGFyZVVwbG9hZDogZnVuY3Rpb24gcHJlcGFyZVVwbG9hZCgpIHsKICAgICAgdmFyIHVybCA9IHRoaXMudXJsLAogICAgICAgIGNyZWF0ZUltZ1VybCA9IHRoaXMuY3JlYXRlSW1nVXJsLAogICAgICAgIGZpZWxkID0gdGhpcy5maWVsZCwKICAgICAgICBraSA9IHRoaXMua2k7CiAgICAgIHRoaXMuJGVtaXQoJ2Nyb3Atc3VjY2VzcycsIGNyZWF0ZUltZ1VybCwgZmllbGQsIGtpKTsKICAgICAgaWYgKHR5cGVvZiB1cmwgPT09ICdzdHJpbmcnICYmIHVybCkgewogICAgICAgIHRoaXMudXBsb2FkKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5vZmYoKTsKICAgICAgfQogICAgfSwKICAgIC8vIOS4iuS8oOWbvueJhwogICAgdXBsb2FkOiBmdW5jdGlvbiB1cGxvYWQoKSB7CiAgICAgIHZhciBfdGhpczAgPSB0aGlzOwogICAgICB2YXIgbGFuZyA9IHRoaXMubGFuZywKICAgICAgICBpbWdGb3JtYXQgPSB0aGlzLmltZ0Zvcm1hdCwKICAgICAgICBtaW1lID0gdGhpcy5taW1lLAogICAgICAgIHVybCA9IHRoaXMudXJsLAogICAgICAgIHBhcmFtcyA9IHRoaXMucGFyYW1zLAogICAgICAgIGZpZWxkID0gdGhpcy5maWVsZCwKICAgICAgICBraSA9IHRoaXMua2ksCiAgICAgICAgY3JlYXRlSW1nVXJsID0gdGhpcy5jcmVhdGVJbWdVcmw7CiAgICAgIHZhciBmbURhdGEgPSBuZXcgRm9ybURhdGEoKTsKICAgICAgZm1EYXRhLmFwcGVuZChmaWVsZCwgZGF0YTJibG9iKGNyZWF0ZUltZ1VybCwgbWltZSksIGZpZWxkICsgJy4nICsgaW1nRm9ybWF0KTsKICAgICAgLy8g5re75Yqg5YW25LuW5Y+C5pWwCiAgICAgIGlmIChfdHlwZW9mKHBhcmFtcykgPT09ICdvYmplY3QnICYmIHBhcmFtcykgewogICAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChmdW5jdGlvbiAoaykgewogICAgICAgICAgZm1EYXRhLmFwcGVuZChrLCBwYXJhbXNba10pOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIC8vIOebkeWQrOi/m+W6puWbnuiwgwogICAgICAvLyBjb25zdCB1cGxvYWRQcm9ncmVzcyA9IChldmVudCkgPT4gewogICAgICAvLyAgIGlmIChldmVudC5sZW5ndGhDb21wdXRhYmxlKSB7CiAgICAgIC8vICAgICB0aGlzLnByb2dyZXNzID0gMTAwICogTWF0aC5yb3VuZChldmVudC5sb2FkZWQpIC8gZXZlbnQudG90YWwKICAgICAgLy8gICB9CiAgICAgIC8vIH0KICAgICAgLy8g5LiK5Lyg5paH5Lu2CiAgICAgIHRoaXMucmVzZXQoKTsKICAgICAgdGhpcy5sb2FkaW5nID0gMTsKICAgICAgdGhpcy5zZXRTdGVwKDMpOwogICAgICByZXF1ZXN0KHsKICAgICAgICB1cmw6IHVybCwKICAgICAgICBtZXRob2Q6ICdwb3N0JywKICAgICAgICBkYXRhOiBmbURhdGEKICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzRGF0YSkgewogICAgICAgIF90aGlzMC5sb2FkaW5nID0gMjsKICAgICAgICBfdGhpczAuJGVtaXQoJ2Nyb3AtdXBsb2FkLXN1Y2Nlc3MnLCByZXNEYXRhLmRhdGEpOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgaWYgKF90aGlzMC52YWx1ZSkgewogICAgICAgICAgX3RoaXMwLmxvYWRpbmcgPSAzOwogICAgICAgICAgX3RoaXMwLmhhc0Vycm9yID0gdHJ1ZTsKICAgICAgICAgIF90aGlzMC5lcnJvck1zZyA9IGxhbmcuZmFpbDsKICAgICAgICAgIF90aGlzMC4kZW1pdCgnY3JvcC11cGxvYWQtZmFpbCcsIGVyciwgZmllbGQsIGtpKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIGNsb3NlSGFuZGxlcjogZnVuY3Rpb24gY2xvc2VIYW5kbGVyKGUpIHsKICAgICAgaWYgKHRoaXMudmFsdWUgJiYgKGUua2V5ID09PSAnRXNjYXBlJyB8fCBlLmtleUNvZGUgPT09IDI3KSkgewogICAgICAgIHRoaXMub2ZmKCk7CiAgICAgIH0KICAgIH0KICB9Cn07"},null]}