wangzhibo
2023-10-31 86070cd00485c47a2c5c3ffa4a9bae6648dd05c6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
0\r§mûü@èÎÝE507AE668E726347A8981FA54A51739A360370A2F302569C9F7F541F76F6708AÅÙîñÞÀÇÌdkºP€õ;jŒÑ,Tu¬`¢ÀLc\2RdÆZž
_$templateRÖAv <div>$LaXõ
aí‰`^Ý ‘`^Ù `~
á Å    `Ô •
aRÔ„D    ]põ
aí} aÔR ž‡·!rect`V q
`FR –bò‚left`V —`F±`V —`
FR:òright`V
 —` FR¢ÙÝÈbottom`V —`FRc¢±    Ïcenter`V —`FRc^±Ù<corners`V —`F“],Tù
Rc2#Â¥Layouta[ý`YSbÆc
RcšVñi_tmpl$‘Rebeg+ elementLayout$RgRöŒÃstripTransformFromLayoutReByñ noopTransform RfºkðNtransformsAreEqualReþàaùtransformLayout$Rg†°ÉAdistanceBetweenPoints(Rh> ÓJintersectionRatioOfLayoutsRe½NlayoutsAreEqualRcr*·ContextReJ+¡§ moveArrayItemRcžâ$9Context2Rdênü[ combineRefsRdÂ. Highlightern‚ÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿIbþÿÿÿt¡Ä`
L`±
@R<’uZõ3/node_modules/.vite/deps/solid-js_web.js?v=5eac7255]`N“<R8ê:äÀ//node_modules/.vite/deps/solid-js.js?v=5eac7255]`“DR@Žû-5/node_modules/.vite/deps/solid-js_store.js?v=5eac7255]`¢]ÔL`fRe’¡H DragDropDebugger` L`ÄRe¶ö_DragDropProvider` L`ÌRevå‘2DragDropSensors` L`ÔRdÊ2µB DragOverlay` L`ÜRe›¦¹SortableProvider`
 L`äReB‰w$ closestCenter`  L`ìRevB§ÉclosestCorners` L`ôReFì¬^createDraggable` L`üRe®švcreateDroppable` L` RfúÀ£createPointerSensor` L` ReF^ÚcreateSortable` L`Rd.ö‡C layoutStyle` L` RfÖüN\maybeTransformStyle` L`%Re²p®mostIntersecting` L`-ReZS%transformStyle` L`5 Rfç¿useDragDropContext`  L`= RfÒI|+useSortableContext`" L`E]¬L`R Õ
DRbFS›yForUcþÿÿÿ$* •DRc–‹µPortal]cüÿÿÿÔäàä •DRcб‚Portal2—cúÿÿÿbn •DRb†ñPøShowmcøÿÿÿpåxå •DRc6΁Show2cöÿÿÿÀÈ •DRd®¿¤z _$classNameRd†Ò(    classNamecôÿÿÿ~ •D Rfz›û=_$createComponentReŽÌ¿¨createComponentcòÿÿÿú •DRcN`ô?_$effectRcÊ(Œ)effectcðÿÿÿ>J •DRcfE®_$insertRc‚ô’insertcîÿÿÿòþ •DRcÜË~_$memoRbïumemocìÿÿÿNV •DRciŽ×_$style…cêÿÿÿÎØ •D R6åMtemplatecèÿÿÿ" •DRcfk©¶_$useRb2`Ùusecæÿÿÿ¦¬ •DRc®YSbatchÕcäÿÿÿnx •DReVÈ© createContextÝcâÿÿÿ|– •DRe¶u¶+createContext2”càÿÿÿD÷^÷ •DRdþo¸ createEffectícÞÿÿÿš² Õ
DRe¢¡Í createEffect2•cÜÿÿÿ°ÃÈà–DReÎ6–— createEffect3•cÚÿÿÿl؄Ø –DRe"q’´ createEffect4•cØÿÿÿ†÷ž÷ –DRe¢Ñý createEffect5•cÖÿÿÿÎæ –DRd¦Üò createSignalcÔÿÿÿîÃÄ –DReÞ¯¶a createSignal2—cÒÿÿÿªØÂØ –DRd6ºµ¦ createStore%cÐÿÿÿ|’ –DRdî¡Y9 createStore2cÎÿÿÿ¨ø¾ø –DRd
¶¹T
mergeProps5cÌÿÿÿ¶Ê –DRdâWK¯ mergeProps2‘cÊÿÿÿ.B –DRdšmJe    onCleanupEcÈÿÿÿæ®ø® –DRdþÉÏ|
onCleanup2’cÆÿÿÿ
ÄÄ –DRdN7w3
onCleanup3’cÄÿÿÿèØúØ –DRdÊ:>µ
onCleanup4’cÂÿÿÿ  –DRd¦«­m
onCleanup5’cÀÿÿÿdv –DRc†xrÜonMountmc¾ÿÿÿü®
¯ –DRc¾¡ÂÅonMount2“c¼ÿÿÿ<ÄJÄ –DRcj2onMount3“cºÿÿÿÙ(Ù –DRcÊ[Å"onMount4“c¸ÿÿÿ>L –DRcr­™KonMount5“c¶ÿÿÿ–¤ –DRcöBéøuntrack•c´ÿÿÿÎÜ –DRcGE~untrack2”c²ÿÿÿÄ÷Ò÷ –DRd^ñîì
useContext¥c°ÿÿÿàô –DRdZö ƒ useContext2•c®ÿÿÿî÷ø`t aèÿÿÿ‚ÿ¹aêÿÿÿ‚ÿ}aôÿÿÿ‚ÿ•aðÿÿÿ‚ÿ¡aîÿÿÿ‚ÿÉaæÿÿÿ‚ÿ­aìÿÿÿ‚ÿ‰aòÿÿÿ‚ÿÕaäÿÿÿ‚ÿÝaâÿÿÿ‚ÿíaÞÿÿÿ‚ÿ5aÌÿÿÿ‚ÿ•a´ÿÿÿ‚ÿ¥a°ÿÿÿ‚ÿ%aÐÿÿÿ‚ÿìa äÿôaäÿ-aäÿÌaäÿ=a äÿEaÈÿÿÿ‚ÿma¾ÿÿÿ‚ÿ aäÿÔaäÿõaÜÿÿÿ‚ÿaÔÿÿÿ‚ÿMaÆÿÿÿ‚ÿua¼ÿÿÿ‚ÿaäÿ5aäÿ%aäÿüaäÿýaÚÿÿÿ‚ÿaÒÿÿÿ‚ÿUaÄÿÿÿ‚ÿ}aºÿÿÿ‚ÿaäÿ]aüÿÿÿ‚ÿmaøÿÿÿ‚ÿÜaäÿåaàÿÿÿ‚ÿaØÿÿÿ‚ÿa²ÿÿÿ‚ÿ­a®ÿÿÿ‚ÿ-aÎÿÿÿ‚ÿäa
äÿEa"äÿ aÖÿÿÿ‚ÿ]aÂÿÿÿ‚ÿ…a¸ÿÿÿ‚ÿaäÿUaþÿÿÿ‚ÿ=aÊÿÿÿ‚ÿeaÀÿÿÿ‚ÿa¶ÿÿÿ‚ÿuaöÿÿÿ‚ÿeaúÿÿÿ‚ÿÄaäÿHÍ
TQPÆu˜Ghttp://172.28.96.1:5173/node_modules/@thisbeyond/solid-dnd/dist/dev.jsxaDbœD`A`ŠX,Tù
IayQcget rectd±eÇÑ•,T”Ia„ŸQcget left•–eÇÑ–,T”Ia©ÄQcget top•–eÇÑ—,T”IaÐøQd    get right•–e    Çј,T”Ia.Qd
get bottom•–e
ÇÑ™,T”Ia;ŸQd
get center•–e
ÇÑš,T”Ia­èQd get corners•–e ÇÑ›,T8¬`,L`Q¯‘¯RmT°widthR*÷ÍheightõKdÀ!   $
h3333ª(SdÄãâþÿÿÿDa^Ô•œc 0À –eØ    œ,T”laå’•–eKÐ
,T”pa     “•–eKÐ ž,T”ta0 J ”•–eKÐ Ÿ,Tù
xae è –d±eKÐ  ,T•|a ‚ ‘—eKС,T•€a  + ’—eKТ,T•„aN Þ“—eKУ,T•ˆaöÁ”—eKФ,T•ìaì"•—eKÐ¥,Tù
ôa9¸—d±eKЦ,T–-aÑþ’‘eKЧ,T–ÌaTýV“‘eKШ èD,T–=aWGW”‘eKÐb©,T– aÚW/a•‘eKÐcª‡D,T–Ôaea±a–‘eKÐm«D,Tù
ab"cd±eKÐo¬,T—5a9cc“‘’eKÐp­,T—%a¹c#d”‘’eKÐq®,T—üaWdl•‘’eKÐr¯‡D,T—añlFr–‘’eKÐ|°„D,T—Üa    sz{—‘’eKЃ±ŠD,Tù
aß|w}‘d±eKА²,TäaÎ}u‚”’“eKБ³ƒD,TEa‚Á‚•’“eKЗ´,T˜a—ƒëƒ–’“eKИµD,Ta„hŽ—’“eKК¶D,Tœa“ç‘’“eKЪ·D,Tù
Äa’Áš’d±eKЮ¸ DD`”D´R¾´ÆÒ±´data:application/json;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJiYXRjaCIsImNyZWF0ZUNvbnRleHQiLCJjcmVhdGVFZmZlY3QiLCJtZXJnZVByb3BzIiwidW50cmFjayIsInVzZUNvbnRleHQiLCJjcmVhdGVTdG9yZSIsIkxheW91dCIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJjb25zdHJ1Y3RvciIsInJlY3QiLCJNYXRoIiwiZmxvb3IiLCJsZWZ0IiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJjZW50ZXIiLCJjb3JuZXJzIiwidG9wTGVmdCIsInRvcFJpZ2h0IiwiYm90dG9tUmlnaHQiLCJib3R0b21MZWZ0IiwiZWxlbWVudExheW91dCIsImVsZW1lbnQiLCJsYXlvdXQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0cmFuc2Zvcm0iLCJnZXRDb21wdXRlZFN0eWxlIiwic3RyaXBUcmFuc2Zvcm1Gcm9tTGF5b3V0IiwidHJhbnNsYXRlWCIsInRyYW5zbGF0ZVkiLCJzdGFydHNXaXRoIiwibWF0cml4Iiwic2xpY2UiLCJzcGxpdCIsIm5vb3BUcmFuc2Zvcm0iLCJ0cmFuc2Zvcm1zQXJlRXF1YWwiLCJmaXJzdFRyYW5zZm9ybSIsInNlY29uZFRyYW5zZm9ybSIsInRyYW5zZm9ybUxheW91dCIsImRpc3RhbmNlQmV0d2VlblBvaW50cyIsImZpcnN0UG9pbnQiLCJzZWNvbmRQb2ludCIsInNxcnQiLCJwb3ciLCJpbnRlcnNlY3Rpb25SYXRpb09mTGF5b3V0cyIsImZpcnN0TGF5b3V0Iiwic2Vjb25kTGF5b3V0IiwibWF4IiwibWluIiwibGF5b3V0MUFyZWEiLCJsYXlvdXQyQXJlYSIsImludGVyc2VjdGlvbkFyZWEiLCJsYXlvdXRzQXJlRXF1YWwiLCJjbG9zZXN0Q2VudGVyIiwiZHJhZ2dhYmxlIiwiZHJvcHBhYmxlcyIsImNvbnRleHQiLCJwb2ludDEiLCJ0cmFuc2Zvcm1lZCIsImNvbGxpc2lvbiIsImRpc3RhbmNlIiwiSW5maW5pdHkiLCJkcm9wcGFibGUiLCJpZCIsImFjdGl2ZURyb3BwYWJsZUlkIiwiY2xvc2VzdENvcm5lcnMiLCJkcmFnZ2FibGVDb3JuZXJzIiwiZHJvcHBhYmxlQ29ybmVycyIsIm1vc3RJbnRlcnNlY3RpbmciLCJkcmFnZ2FibGVMYXlvdXQiLCJyYXRpbyIsIkNvbnRleHQiLCJEcmFnRHJvcFByb3ZpZGVyIiwicGFzc2VkUHJvcHMiLCJwcm9wcyIsImNvbGxpc2lvbkRldGVjdG9yIiwic3RhdGUiLCJzZXRTdGF0ZSIsImRyYWdnYWJsZXMiLCJzZW5zb3JzIiwiYWN0aXZlIiwiZHJhZ2dhYmxlSWQiLCJkcm9wcGFibGVJZCIsInNlbnNvcklkIiwic2Vuc29yIiwib3ZlcmxheSIsImFkZFRyYW5zZm9ybWVyIiwidHlwZSIsInRyYW5zZm9ybWVyIiwiZGlzcGxheVR5cGUiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJjb25zb2xlIiwid2FybiIsInJlbW92ZVRyYW5zZm9ybWVyIiwidHJhbnNmb3JtZXJJZCIsImFkZERyYWdnYWJsZSIsIm5vZGUiLCJkYXRhIiwiZXhpc3RpbmdEcmFnZ2FibGUiLCJfcGVuZGluZ0NsZWFudXAiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0aWVzIiwidHJhbnNmb3JtZXJzIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwidmFsdWUiLCJnZXQiLCJ2YWx1ZXMiLCJzb3J0IiwiYSIsImIiLCJvcmRlciIsInJlZHVjZSIsInRyYW5zZm9ybWVyMiIsImNhbGxiYWNrIiwibGF5b3V0RGVsdGEiLCJleGlzdGluZ1RyYW5zZm9ybWVyIiwidHJhbnNmb3JtT2Zmc2V0Iiwib25EcmFnRW5kIiwicmVjb21wdXRlTGF5b3V0cyIsInJlbW92ZURyYWdnYWJsZSIsInF1ZXVlTWljcm90YXNrIiwiY2xlYW51cERyYWdnYWJsZSIsImNsZWFudXBBY3RpdmUiLCJhZGREcm9wcGFibGUiLCJleGlzdGluZ0Ryb3BwYWJsZSIsInJlbW92ZURyb3BwYWJsZSIsImNsZWFudXBEcm9wcGFibGUiLCJhZGRTZW5zb3IiLCJhY3RpdmF0b3JzIiwiY29vcmRpbmF0ZXMiLCJvcmlnaW4iLCJjdXJyZW50IiwiZGVsdGEiLCJyZW1vdmVTZW5zb3IiLCJzZXRPdmVybGF5IiwiZXhpc3RpbmciLCJmcm9tRW50cmllcyIsImVudHJpZXMiLCJmaWx0ZXIiLCJjbGVhck92ZXJsYXkiLCJzZW5zb3JTdGFydCIsInNlbnNvck1vdmUiLCJzZW5zb3JFbmQiLCJkcmFnZ2FibGVBY3RpdmF0b3JzIiwiYXNIYW5kbGVycyIsImV2ZW50TWFwIiwiYWN0aXZhdG9yIiwicHVzaCIsImxpc3RlbmVycyIsImtleSIsImhhbmRsZXJLZXkiLCJldmVudCIsImFueUxheW91dENoYW5nZWQiLCJjYWNoZSIsIldlYWtNYXAiLCJjdXJyZW50TGF5b3V0IiwiaGFzIiwic2V0IiwiZGV0ZWN0Q29sbGlzaW9ucyIsImRyYWdTdGFydCIsImRyYWdFbmQiLCJvbkRyYWdTdGFydCIsImhhbmRsZXIiLCJvbkRyYWdNb3ZlIiwib25EcmFnT3ZlciIsInByZXZpb3VzRHJhZ2dhYmxlIiwicHJldmlvdXNEcm9wcGFibGUiLCJwcmV2aW91c092ZXJsYXkiLCJhY3Rpb25zIiwiXyRjcmVhdGVDb21wb25lbnQiLCJQcm92aWRlciIsImNoaWxkcmVuIiwidXNlRHJhZ0Ryb3BDb250ZXh0Iiwib25DbGVhbnVwIiwib25Nb3VudCIsImNyZWF0ZVBvaW50ZXJTZW5zb3IiLCJhY3RpdmF0aW9uRGVsYXkiLCJhY3RpdmF0aW9uRGlzdGFuY2UiLCJwb2ludGVyZG93biIsImF0dGFjaCIsImlzQWN0aXZlU2Vuc29yIiwiaW5pdGlhbENvb3JkaW5hdGVzIiwiYWN0aXZhdGlvbkRlbGF5VGltZW91dElkIiwiYWN0aXZhdGlvbkRyYWdnYWJsZUlkIiwiYnV0dG9uIiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwib25Qb2ludGVyTW92ZSIsIm9uUG9pbnRlclVwIiwiY2xpZW50WCIsImNsaWVudFkiLCJ3aW5kb3ciLCJzZXRUaW1lb3V0Iiwib25BY3RpdmF0ZSIsImRldGFjaCIsImNsZWFyVGltZW91dCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjbGVhclNlbGVjdGlvbiIsInByZXZlbnREZWZhdWx0IiwiZ2V0U2VsZWN0aW9uIiwicmVtb3ZlQWxsUmFuZ2VzIiwiRHJhZ0Ryb3BTZW5zb3JzIiwiXyRtZW1vIiwiY3JlYXRlRWZmZWN0MiIsImNyZWF0ZVNpZ25hbCIsIm9uQ2xlYW51cDIiLCJvbk1vdW50MiIsImxheW91dFN0eWxlIiwidHJhbnNmb3JtU3R5bGUiLCJtYXliZVRyYW5zZm9ybVN0eWxlIiwiY3JlYXRlRHJhZ2dhYmxlIiwic2V0Tm9kZSIsInJlc29sdmVkTm9kZSIsImlzQWN0aXZlRHJhZ2dhYmxlIiwiYWNjZXNzb3IiLCJjb25maWciLCJza2lwVHJhbnNmb3JtIiwicmVzb2x2ZWRUcmFuc2Zvcm0iLCJzdHlsZSIsInNldFByb3BlcnR5IiwicmVtb3ZlUHJvcGVydHkiLCJyZWYiLCJkcmFnQWN0aXZhdG9ycyIsImNyZWF0ZUVmZmVjdDMiLCJjcmVhdGVTaWduYWwyIiwib25DbGVhbnVwMyIsIm9uTW91bnQzIiwiY3JlYXRlRHJvcHBhYmxlIiwiaXNBY3RpdmVEcm9wcGFibGUiLCJQb3J0YWwiLCJTaG93IiwiRHJhZ092ZXJsYXkiLCJwb3NpdGlvbiIsInRyYW5zaXRpb24iLCJtb3VudCIsImJvZHkiLCJ3aGVuIiwiX2VsJCIsIl90bXBsJCIsIl9yZWYkIiwiXyR1c2UiLCJfJGluc2VydCIsIl9jJCIsIl8kZWZmZWN0IiwiX3AkIiwiX3YkIiwiY2xhc3MiLCJfdiQyIiwiXyRjbGFzc05hbWUiLCJfJHN0eWxlIiwidW5kZWZpbmVkIiwiY3JlYXRlQ29udGV4dDIiLCJjcmVhdGVFZmZlY3Q0IiwidW50cmFjazIiLCJ1c2VDb250ZXh0MiIsImNyZWF0ZVN0b3JlMiIsIm1vdmVBcnJheUl0ZW0iLCJhcnJheSIsImZyb21JbmRleCIsInRvSW5kZXgiLCJuZXdBcnJheSIsInNwbGljZSIsIkNvbnRleHQyIiwiU29ydGFibGVQcm92aWRlciIsImRuZFN0YXRlIiwiaW5pdGlhbElkcyIsInNvcnRlZElkcyIsImlzVmFsaWRJbmRleCIsImluZGV4IiwiaWRzIiwiaW5kZXhPZiIsInJlc29ydGVkIiwidXNlU29ydGFibGVDb250ZXh0IiwiY3JlYXRlRWZmZWN0NSIsIm9uQ2xlYW51cDQiLCJvbk1vdW50NCIsImNvbWJpbmVSZWZzIiwic2V0UmVmQSIsInNldFJlZkIiLCJjcmVhdGVTb3J0YWJsZSIsInNvcnRhYmxlU3RhdGUiLCJpbml0aWFsSW5kZXgiLCJjdXJyZW50SW5kZXgiLCJsYXlvdXRCeUlkIiwiaWQyIiwic29ydGVkVHJhbnNmb3JtIiwicmVzb2x2ZWRJbml0aWFsSW5kZXgiLCJyZXNvbHZlZEN1cnJlbnRJbmRleCIsInRhcmdldExheW91dCIsInRyYW5zZm9ybTIiLCJzb3J0YWJsZSIsIkZvciIsIm1lcmdlUHJvcHMyIiwib25DbGVhbnVwNSIsIm9uTW91bnQ1IiwiU2hvdzIiLCJQb3J0YWwyIiwiSGlnaGxpZ2h0ZXIiLCJjb2xvciIsIl9lbCQyIiwiXyRwIiwib3V0bGluZSIsImRpc3BsYXkiLCJEcmFnRHJvcERlYnVnZ2VyIiwidGlja2luZyIsInVwZGF0ZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImVhY2giLCJrZXllZCJdLCJzb3VyY2VzIjpbImRldi5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2RyYWctZHJvcC1jb250ZXh0LnRzeFxuaW1wb3J0IHtcbiAgYmF0Y2gsXG4gIGNyZWF0ZUNvbnRleHQsXG4gIGNyZWF0ZUVmZmVjdCxcbiAgbWVyZ2VQcm9wcyxcbiAgdW50cmFjayxcbiAgdXNlQ29udGV4dFxufSBmcm9tIFwic29saWQtanNcIjtcbmltcG9ydCB7IGNyZWF0ZVN0b3JlIH0gZnJvbSBcInNvbGlkLWpzL3N0b3JlXCI7XG5cbi8vIHNyYy9sYXlvdXQudHNcbnZhciBMYXlvdXQgPSBjbGFzcyB7XG4gIHg7XG4gIHk7XG4gIHdpZHRoO1xuICBoZWlnaHQ7XG4gIGNvbnN0cnVjdG9yKHJlY3QpIHtcbiAgICB0aGlzLnggPSBNYXRoLmZsb29yKHJlY3QueCk7XG4gICAgdGhpcy55ID0gTWF0aC5mbG9vcihyZWN0LnkpO1xuICAgIHRoaXMud2lkdGggPSBNYXRoLmZsb29yKHJlY3Qud2lkdGgpO1xuICAgIHRoaXMuaGVpZ2h0ID0gTWF0aC5mbG9vcihyZWN0LmhlaWdodCk7XG4gIH1cbiAgZ2V0IHJlY3QoKSB7XG4gICAgcmV0dXJuIHsgeDogdGhpcy54LCB5OiB0aGlzLnksIHdpZHRoOiB0aGlzLndpZHRoLCBoZWlnaHQ6IHRoaXMuaGVpZ2h0IH07XG4gIH1cbiAgZ2V0IGxlZnQoKSB7XG4gICAgcmV0dXJuIHRoaXMueDtcbiAgfVxuICBnZXQgdG9wKCkge1xuICAgIHJldHVybiB0aGlzLnk7XG4gIH1cbiAgZ2V0IHJpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLnggKyB0aGlzLndpZHRoO1xuICB9XG4gIGdldCBib3R0b20oKSB7XG4gICAgcmV0dXJuIHRoaXMueSArIHRoaXMuaGVpZ2h0O1xuICB9XG4gIGdldCBjZW50ZXIoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHRoaXMueCArIHRoaXMud2lkdGggKiAwLjUsXG4gICAgICB5OiB0aGlzLnkgKyB0aGlzLmhlaWdodCAqIDAuNVxuICAgIH07XG4gIH1cbiAgZ2V0IGNvcm5lcnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvcExlZnQ6IHsgeDogdGhpcy5sZWZ0LCB5OiB0aGlzLnRvcCB9LFxuICAgICAgdG9wUmlnaHQ6IHsgeDogdGhpcy5yaWdodCwgeTogdGhpcy50b3AgfSxcbiAgICAgIGJvdHRvbVJpZ2h0OiB7IHg6IHRoaXMubGVmdCwgeTogdGhpcy5ib3R0b20gfSxcbiAgICAgIGJvdHRvbUxlZnQ6IHsgeDogdGhpcy5yaWdodCwgeTogdGhpcy5ib3R0b20gfVxuICAgIH07XG4gIH1cbn07XG52YXIgZWxlbWVudExheW91dCA9IChlbGVtZW50KSA9PiB7XG4gIGxldCBsYXlvdXQgPSBuZXcgTGF5b3V0KGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuICBjb25zdCB7IHRyYW5zZm9ybSB9ID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgaWYgKHRyYW5zZm9ybSkge1xuICAgIGxheW91dCA9IHN0cmlwVHJhbnNmb3JtRnJvbUxheW91dChsYXlvdXQsIHRyYW5zZm9ybSk7XG4gIH1cbiAgcmV0dXJuIGxheW91dDtcbn07XG52YXIgc3RyaXBUcmFuc2Zvcm1Gcm9tTGF5b3V0ID0gKGxheW91dCwgdHJhbnNmb3JtKSA9PiB7XG4gIGxldCB0cmFuc2xhdGVYLCB0cmFuc2xhdGVZO1xuICBpZiAodHJhbnNmb3JtLnN0YXJ0c1dpdGgoXCJtYXRyaXgzZChcIikpIHtcbiAgICBjb25zdCBtYXRyaXggPSB0cmFuc2Zvcm0uc2xpY2UoOSwgLTEpLnNwbGl0KC8sIC8pO1xuICAgIHRyYW5zbGF0ZVggPSArbWF0cml4WzEyXTtcbiAgICB0cmFuc2xhdGVZID0gK21hdHJpeFsxM107XG4gIH0gZWxzZSBpZiAodHJhbnNmb3JtLnN0YXJ0c1dpdGgoXCJtYXRyaXgoXCIpKSB7XG4gICAgY29uc3QgbWF0cml4ID0gdHJhbnNmb3JtLnNsaWNlKDcsIC0xKS5zcGxpdCgvLCAvKTtcbiAgICB0cmFuc2xhdGVYID0gK21hdHJpeFs0XTtcbiAgICB0cmFuc2xhdGVZID0gK21hdHJpeFs1XTtcbiAgfSBlbHNlIHtcbiAgICB0cmFuc2xhdGVYID0gMDtcbiAgICB0cmFuc2xhdGVZID0gMDtcbiAgfVxuICByZXR1cm4gbmV3IExheW91dCh7XG4gICAgLi4ubGF5b3V0LFxuICAgIHg6IGxheW91dC54IC0gdHJhbnNsYXRlWCxcbiAgICB5OiBsYXlvdXQueSAtIHRyYW5zbGF0ZVlcbiAgfSk7XG59O1xudmFyIG5vb3BUcmFuc2Zvcm0gPSAoKSA9PiAoeyB4OiAwLCB5OiAwIH0pO1xudmFyIHRyYW5zZm9ybXNBcmVFcXVhbCA9IChmaXJzdFRyYW5zZm9ybSwgc2Vjb25kVHJhbnNmb3JtKSA9PiB7XG4gIHJldHVybiBmaXJzdFRyYW5zZm9ybS54ID09PSBzZWNvbmRUcmFuc2Zvcm0ueCAmJiBmaXJzdFRyYW5zZm9ybS55ID09PSBzZWNvbmRUcmFuc2Zvcm0ueTtcbn07XG52YXIgdHJhbnNmb3JtTGF5b3V0ID0gKGxheW91dCwgdHJhbnNmb3JtKSA9PiB7XG4gIHJldHVybiBuZXcgTGF5b3V0KHtcbiAgICAuLi5sYXlvdXQsXG4gICAgeDogbGF5b3V0LnggKyB0cmFuc2Zvcm0ueCxcbiAgICB5OiBsYXlvdXQueSArIHRyYW5zZm9ybS55XG4gIH0pO1xufTtcbnZhciBkaXN0YW5jZUJldHdlZW5Qb2ludHMgPSAoZmlyc3RQb2ludCwgc2Vjb25kUG9pbnQpID0+IHtcbiAgcmV0dXJuIE1hdGguc3FydChcbiAgICBNYXRoLnBvdyhmaXJzdFBvaW50LnggLSBzZWNvbmRQb2ludC54LCAyKSArIE1hdGgucG93KGZpcnN0UG9pbnQueSAtIHNlY29uZFBvaW50LnksIDIpXG4gICk7XG59O1xudmFyIGludGVyc2VjdGlvblJhdGlvT2ZMYXlvdXRzID0gKGZpcnN0TGF5b3V0LCBzZWNvbmRMYXlvdXQpID0+IHtcbiAgY29uc3QgdG9wID0gTWF0aC5tYXgoZmlyc3RMYXlvdXQudG9wLCBzZWNvbmRMYXlvdXQudG9wKTtcbiAgY29uc3QgbGVmdCA9IE1hdGgubWF4KGZpcnN0TGF5b3V0LmxlZnQsIHNlY29uZExheW91dC5sZWZ0KTtcbiAgY29uc3QgcmlnaHQgPSBNYXRoLm1pbihmaXJzdExheW91dC5yaWdodCwgc2Vjb25kTGF5b3V0LnJpZ2h0KTtcbiAgY29uc3QgYm90dG9tID0gTWF0aC5taW4oZmlyc3RMYXlvdXQuYm90dG9tLCBzZWNvbmRMYXlvdXQuYm90dG9tKTtcbiAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgaWYgKGxlZnQgPCByaWdodCAmJiB0b3AgPCBib3R0b20pIHtcbiAgICBjb25zdCBsYXlvdXQxQXJlYSA9IGZpcnN0TGF5b3V0LndpZHRoICogZmlyc3RMYXlvdXQuaGVpZ2h0O1xuICAgIGNvbnN0IGxheW91dDJBcmVhID0gc2Vjb25kTGF5b3V0LndpZHRoICogc2Vjb25kTGF5b3V0LmhlaWdodDtcbiAgICBjb25zdCBpbnRlcnNlY3Rpb25BcmVhID0gd2lkdGggKiBoZWlnaHQ7XG4gICAgcmV0dXJuIGludGVyc2VjdGlvbkFyZWEgLyAobGF5b3V0MUFyZWEgKyBsYXlvdXQyQXJlYSAtIGludGVyc2VjdGlvbkFyZWEpO1xuICB9XG4gIHJldHVybiAwO1xufTtcbnZhciBsYXlvdXRzQXJlRXF1YWwgPSAoZmlyc3RMYXlvdXQsIHNlY29uZExheW91dCkgPT4ge1xuICByZXR1cm4gZmlyc3RMYXlvdXQueCA9PT0gc2Vjb25kTGF5b3V0LnggJiYgZmlyc3RMYXlvdXQueSA9PT0gc2Vjb25kTGF5b3V0LnkgJiYgZmlyc3RMYXlvdXQud2lkdGggPT09IHNlY29uZExheW91dC53aWR0aCAmJiBmaXJzdExheW91dC5oZWlnaHQgPT09IHNlY29uZExheW91dC5oZWlnaHQ7XG59O1xuXG4vLyBzcmMvY29sbGlzaW9uLnRzXG52YXIgY2xvc2VzdENlbnRlciA9IChkcmFnZ2FibGUsIGRyb3BwYWJsZXMsIGNvbnRleHQpID0+IHtcbiAgY29uc3QgcG9pbnQxID0gZHJhZ2dhYmxlLnRyYW5zZm9ybWVkLmNlbnRlcjtcbiAgY29uc3QgY29sbGlzaW9uID0geyBkaXN0YW5jZTogSW5maW5pdHksIGRyb3BwYWJsZTogbnVsbCB9O1xuICBmb3IgKGNvbnN0IGRyb3BwYWJsZSBvZiBkcm9wcGFibGVzKSB7XG4gICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludHMocG9pbnQxLCBkcm9wcGFibGUubGF5b3V0LmNlbnRlcik7XG4gICAgaWYgKGRpc3RhbmNlIDwgY29sbGlzaW9uLmRpc3RhbmNlKSB7XG4gICAgICBjb2xsaXNpb24uZGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgIGNvbGxpc2lvbi5kcm9wcGFibGUgPSBkcm9wcGFibGU7XG4gICAgfSBlbHNlIGlmIChkaXN0YW5jZSA9PT0gY29sbGlzaW9uLmRpc3RhbmNlICYmIGRyb3BwYWJsZS5pZCA9PT0gY29udGV4dC5hY3RpdmVEcm9wcGFibGVJZCkge1xuICAgICAgY29sbGlzaW9uLmRyb3BwYWJsZSA9IGRyb3BwYWJsZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbGxpc2lvbi5kcm9wcGFibGU7XG59O1xudmFyIGNsb3Nlc3RDb3JuZXJzID0gKGRyYWdnYWJsZSwgZHJvcHBhYmxlcywgY29udGV4dCkgPT4ge1xuICBjb25zdCBkcmFnZ2FibGVDb3JuZXJzID0gZHJhZ2dhYmxlLnRyYW5zZm9ybWVkLmNvcm5lcnM7XG4gIGNvbnN0IGNvbGxpc2lvbiA9IHsgZGlzdGFuY2U6IEluZmluaXR5LCBkcm9wcGFibGU6IG51bGwgfTtcbiAgZm9yIChjb25zdCBkcm9wcGFibGUgb2YgZHJvcHBhYmxlcykge1xuICAgIGNvbnN0IGRyb3BwYWJsZUNvcm5lcnMgPSBkcm9wcGFibGUubGF5b3V0LmNvcm5lcnM7XG4gICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludHMoXG4gICAgICBkcm9wcGFibGVDb3JuZXJzLnRvcExlZnQsXG4gICAgICBkcmFnZ2FibGVDb3JuZXJzLnRvcExlZnRcbiAgICApICsgZGlzdGFuY2VCZXR3ZWVuUG9pbnRzKFxuICAgICAgZHJvcHBhYmxlQ29ybmVycy50b3BSaWdodCxcbiAgICAgIGRyYWdnYWJsZUNvcm5lcnMudG9wUmlnaHRcbiAgICApICsgZGlzdGFuY2VCZXR3ZWVuUG9pbnRzKFxuICAgICAgZHJvcHBhYmxlQ29ybmVycy5ib3R0b21SaWdodCxcbiAgICAgIGRyYWdnYWJsZUNvcm5lcnMuYm90dG9tUmlnaHRcbiAgICApICsgZGlzdGFuY2VCZXR3ZWVuUG9pbnRzKFxuICAgICAgZHJvcHBhYmxlQ29ybmVycy5ib3R0b21MZWZ0LFxuICAgICAgZHJhZ2dhYmxlQ29ybmVycy5ib3R0b21MZWZ0XG4gICAgKTtcbiAgICBpZiAoZGlzdGFuY2UgPCBjb2xsaXNpb24uZGlzdGFuY2UpIHtcbiAgICAgIGNvbGxpc2lvbi5kaXN0YW5jZSA9IGRpc3RhbmNlO1xuICAgICAgY29sbGlzaW9uLmRyb3BwYWJsZSA9IGRyb3BwYWJsZTtcbiAgICB9IGVsc2UgaWYgKGRpc3RhbmNlID09PSBjb2xsaXNpb24uZGlzdGFuY2UgJiYgZHJvcHBhYmxlLmlkID09PSBjb250ZXh0LmFjdGl2ZURyb3BwYWJsZUlkKSB7XG4gICAgICBjb2xsaXNpb24uZHJvcHBhYmxlID0gZHJvcHBhYmxlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY29sbGlzaW9uLmRyb3BwYWJsZTtcbn07XG52YXIgbW9zdEludGVyc2VjdGluZyA9IChkcmFnZ2FibGUsIGRyb3BwYWJsZXMsIGNvbnRleHQpID0+IHtcbiAgY29uc3QgZHJhZ2dhYmxlTGF5b3V0ID0gZHJhZ2dhYmxlLnRyYW5zZm9ybWVkO1xuICBjb25zdCBjb2xsaXNpb24gPSB7IHJhdGlvOiAwLCBkcm9wcGFibGU6IG51bGwgfTtcbiAgZm9yIChjb25zdCBkcm9wcGFibGUgb2YgZHJvcHBhYmxlcykge1xuICAgIGNvbnN0IHJhdGlvID0gaW50ZXJzZWN0aW9uUmF0aW9PZkxheW91dHMoZHJhZ2dhYmxlTGF5b3V0LCBkcm9wcGFibGUubGF5b3V0KTtcbiAgICBpZiAocmF0aW8gPiBjb2xsaXNpb24ucmF0aW8pIHtcbiAgICAgIGNvbGxpc2lvbi5yYXRpbyA9IHJhdGlvO1xuICAgICAgY29sbGlzaW9uLmRyb3BwYWJsZSA9IGRyb3BwYWJsZTtcbiAgICB9IGVsc2UgaWYgKHJhdGlvID4gMCAmJiByYXRpbyA9PT0gY29sbGlzaW9uLnJhdGlvICYmIGRyb3BwYWJsZS5pZCA9PT0gY29udGV4dC5hY3RpdmVEcm9wcGFibGVJZCkge1xuICAgICAgY29sbGlzaW9uLmRyb3BwYWJsZSA9IGRyb3BwYWJsZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbGxpc2lvbi5kcm9wcGFibGU7XG59O1xuXG4vLyBzcmMvZHJhZy1kcm9wLWNvbnRleHQudHN4XG52YXIgQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcbnZhciBEcmFnRHJvcFByb3ZpZGVyID0gKHBhc3NlZFByb3BzKSA9PiB7XG4gIGNvbnN0IHByb3BzID0gbWVyZ2VQcm9wcyhcbiAgICB7IGNvbGxpc2lvbkRldGVjdG9yOiBtb3N0SW50ZXJzZWN0aW5nIH0sXG4gICAgcGFzc2VkUHJvcHNcbiAgKTtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSBjcmVhdGVTdG9yZSh7XG4gICAgZHJhZ2dhYmxlczoge30sXG4gICAgZHJvcHBhYmxlczoge30sXG4gICAgc2Vuc29yczoge30sXG4gICAgYWN0aXZlOiB7XG4gICAgICBkcmFnZ2FibGVJZDogbnVsbCxcbiAgICAgIGdldCBkcmFnZ2FibGUoKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5hY3RpdmUuZHJhZ2dhYmxlSWQgIT09IG51bGwgPyBzdGF0ZS5kcmFnZ2FibGVzW3N0YXRlLmFjdGl2ZS5kcmFnZ2FibGVJZF0gOiBudWxsO1xuICAgICAgfSxcbiAgICAgIGRyb3BwYWJsZUlkOiBudWxsLFxuICAgICAgZ2V0IGRyb3BwYWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLmFjdGl2ZS5kcm9wcGFibGVJZCAhPT0gbnVsbCA/IHN0YXRlLmRyb3BwYWJsZXNbc3RhdGUuYWN0aXZlLmRyb3BwYWJsZUlkXSA6IG51bGw7XG4gICAgICB9LFxuICAgICAgc2Vuc29ySWQ6IG51bGwsXG4gICAgICBnZXQgc2Vuc29yKCkge1xuICAgICAgICByZXR1cm4gc3RhdGUuYWN0aXZlLnNlbnNvcklkICE9PSBudWxsID8gc3RhdGUuc2Vuc29yc1tzdGF0ZS5hY3RpdmUuc2Vuc29ySWRdIDogbnVsbDtcbiAgICAgIH0sXG4gICAgICBvdmVybGF5OiBudWxsXG4gICAgfVxuICB9KTtcbiAgY29uc3QgYWRkVHJhbnNmb3JtZXIgPSAodHlwZSwgaWQsIHRyYW5zZm9ybWVyKSA9PiB7XG4gICAgY29uc3QgZGlzcGxheVR5cGUgPSB0eXBlLnN1YnN0cmluZygwLCB0eXBlLmxlbmd0aCAtIDEpO1xuICAgIGlmICghdW50cmFjaygoKSA9PiBzdGF0ZVt0eXBlXVtpZF0pKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBDYW5ub3QgYWRkIHRyYW5zZm9ybWVyIHRvIG5vbmV4aXN0ZW50ICR7ZGlzcGxheVR5cGV9IHdpdGggaWQ6ICR7aWR9YFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0U3RhdGUodHlwZSwgaWQsIFwidHJhbnNmb3JtZXJzXCIsIHRyYW5zZm9ybWVyLmlkLCB0cmFuc2Zvcm1lcik7XG4gIH07XG4gIGNvbnN0IHJlbW92ZVRyYW5zZm9ybWVyID0gKHR5cGUsIGlkLCB0cmFuc2Zvcm1lcklkKSA9PiB7XG4gICAgY29uc3QgZGlzcGxheVR5cGUgPSB0eXBlLnN1YnN0cmluZygwLCB0eXBlLmxlbmd0aCAtIDEpO1xuICAgIGlmICghdW50cmFjaygoKSA9PiBzdGF0ZVt0eXBlXVtpZF0pKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBDYW5ub3QgcmVtb3ZlIHRyYW5zZm9ybWVyIGZyb20gbm9uZXhpc3RlbnQgJHtkaXNwbGF5VHlwZX0gd2l0aCBpZDogJHtpZH1gXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXVudHJhY2soKCkgPT4gc3RhdGVbdHlwZV1baWRdW1widHJhbnNmb3JtZXJzXCJdW3RyYW5zZm9ybWVySWRdKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgQ2Fubm90IHJlbW92ZSBmcm9tICR7ZGlzcGxheVR5cGV9IHdpdGggaWQgJHtpZH0sIG5vbmV4aXN0ZW50IHRyYW5zZm9ybWVyIHdpdGggaWQ6ICR7dHJhbnNmb3JtZXJJZH1gXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXRTdGF0ZSh0eXBlLCBpZCwgXCJ0cmFuc2Zvcm1lcnNcIiwgdHJhbnNmb3JtZXJJZCwgdm9pZCAwKTtcbiAgfTtcbiAgY29uc3QgYWRkRHJhZ2dhYmxlID0gKHtcbiAgICBpZCxcbiAgICBub2RlLFxuICAgIGxheW91dCxcbiAgICBkYXRhXG4gIH0pID0+IHtcbiAgICBjb25zdCBleGlzdGluZ0RyYWdnYWJsZSA9IHN0YXRlLmRyYWdnYWJsZXNbaWRdO1xuICAgIGNvbnN0IGRyYWdnYWJsZSA9IHtcbiAgICAgIGlkLFxuICAgICAgbm9kZSxcbiAgICAgIGxheW91dCxcbiAgICAgIGRhdGEsXG4gICAgICBfcGVuZGluZ0NsZWFudXA6IGZhbHNlXG4gICAgfTtcbiAgICBsZXQgdHJhbnNmb3JtZXI7XG4gICAgaWYgKCFleGlzdGluZ0RyYWdnYWJsZSkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZHJhZ2dhYmxlLCB7XG4gICAgICAgIHRyYW5zZm9ybWVyczoge1xuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgIHZhbHVlOiB7fVxuICAgICAgICB9LFxuICAgICAgICB0cmFuc2Zvcm06IHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBnZXQ6ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5hY3RpdmUub3ZlcmxheSkge1xuICAgICAgICAgICAgICByZXR1cm4gbm9vcFRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZXJzID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgICAgICAgICAgc3RhdGUuZHJhZ2dhYmxlc1tpZF0udHJhbnNmb3JtZXJzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdHJhbnNmb3JtZXJzLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKTtcbiAgICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1lcnMucmVkdWNlKFxuICAgICAgICAgICAgICAodHJhbnNmb3JtLCB0cmFuc2Zvcm1lcjIpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtZXIyLmNhbGxiYWNrKHRyYW5zZm9ybSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG5vb3BUcmFuc2Zvcm0oKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zZm9ybWVkOiB7XG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtTGF5b3V0KFxuICAgICAgICAgICAgICBzdGF0ZS5kcmFnZ2FibGVzW2lkXS5sYXlvdXQsXG4gICAgICAgICAgICAgIHN0YXRlLmRyYWdnYWJsZXNbaWRdLnRyYW5zZm9ybVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUuYWN0aXZlLmRyYWdnYWJsZUlkID09PSBpZCAmJiAhc3RhdGUuYWN0aXZlLm92ZXJsYXkpIHtcbiAgICAgIGNvbnN0IGxheW91dERlbHRhID0ge1xuICAgICAgICB4OiBleGlzdGluZ0RyYWdnYWJsZS5sYXlvdXQueCAtIGxheW91dC54LFxuICAgICAgICB5OiBleGlzdGluZ0RyYWdnYWJsZS5sYXlvdXQueSAtIGxheW91dC55XG4gICAgICB9O1xuICAgICAgY29uc3QgdHJhbnNmb3JtZXJJZCA9IFwiYWRkRHJhZ2dhYmxlLWV4aXN0aW5nLW9mZnNldFwiO1xuICAgICAgY29uc3QgZXhpc3RpbmdUcmFuc2Zvcm1lciA9IGV4aXN0aW5nRHJhZ2dhYmxlLnRyYW5zZm9ybWVyc1t0cmFuc2Zvcm1lcklkXTtcbiAgICAgIGNvbnN0IHRyYW5zZm9ybU9mZnNldCA9IGV4aXN0aW5nVHJhbnNmb3JtZXIgPyBleGlzdGluZ1RyYW5zZm9ybWVyLmNhbGxiYWNrKGxheW91dERlbHRhKSA6IGxheW91dERlbHRhO1xuICAgICAgdHJhbnNmb3JtZXIgPSB7XG4gICAgICAgIGlkOiB0cmFuc2Zvcm1lcklkLFxuICAgICAgICBvcmRlcjogMTAwLFxuICAgICAgICBjYWxsYmFjazogKHRyYW5zZm9ybSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB0cmFuc2Zvcm0ueCArIHRyYW5zZm9ybU9mZnNldC54LFxuICAgICAgICAgICAgeTogdHJhbnNmb3JtLnkgKyB0cmFuc2Zvcm1PZmZzZXQueVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBvbkRyYWdFbmQoKCkgPT4gcmVtb3ZlVHJhbnNmb3JtZXIoXCJkcmFnZ2FibGVzXCIsIGlkLCB0cmFuc2Zvcm1lcklkKSk7XG4gICAgfVxuICAgIGJhdGNoKCgpID0+IHtcbiAgICAgIHNldFN0YXRlKFwiZHJhZ2dhYmxlc1wiLCBpZCwgZHJhZ2dhYmxlKTtcbiAgICAgIGlmICh0cmFuc2Zvcm1lcikge1xuICAgICAgICBhZGRUcmFuc2Zvcm1lcihcImRyYWdnYWJsZXNcIiwgaWQsIHRyYW5zZm9ybWVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoc3RhdGUuYWN0aXZlLmRyYWdnYWJsZSkge1xuICAgICAgcmVjb21wdXRlTGF5b3V0cygpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVtb3ZlRHJhZ2dhYmxlID0gKGlkKSA9PiB7XG4gICAgaWYgKCF1bnRyYWNrKCgpID0+IHN0YXRlLmRyYWdnYWJsZXNbaWRdKSkge1xuICAgICAgY29uc29sZS53YXJuKGBDYW5ub3QgcmVtb3ZlIG5vbmV4aXN0ZW50IGRyYWdnYWJsZSB3aXRoIGlkOiAke2lkfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXRTdGF0ZShcImRyYWdnYWJsZXNcIiwgaWQsIFwiX3BlbmRpbmdDbGVhbnVwXCIsIHRydWUpO1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IGNsZWFudXBEcmFnZ2FibGUoaWQpKTtcbiAgfTtcbiAgY29uc3QgY2xlYW51cERyYWdnYWJsZSA9IChpZCkgPT4ge1xuICAgIGlmIChzdGF0ZS5kcmFnZ2FibGVzW2lkXT8uX3BlbmRpbmdDbGVhbnVwKSB7XG4gICAgICBjb25zdCBjbGVhbnVwQWN0aXZlID0gc3RhdGUuYWN0aXZlLmRyYWdnYWJsZUlkID09PSBpZDtcbiAgICAgIGJhdGNoKCgpID0+IHtcbiAgICAgICAgaWYgKGNsZWFudXBBY3RpdmUpIHtcbiAgICAgICAgICBzZXRTdGF0ZShcImFjdGl2ZVwiLCBcImRyYWdnYWJsZUlkXCIsIG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHNldFN0YXRlKFwiZHJhZ2dhYmxlc1wiLCBpZCwgdm9pZCAwKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgYWRkRHJvcHBhYmxlID0gKHtcbiAgICBpZCxcbiAgICBub2RlLFxuICAgIGxheW91dCxcbiAgICBkYXRhXG4gIH0pID0+IHtcbiAgICBjb25zdCBleGlzdGluZ0Ryb3BwYWJsZSA9IHN0YXRlLmRyb3BwYWJsZXNbaWRdO1xuICAgIGNvbnN0IGRyb3BwYWJsZSA9IHtcbiAgICAgIGlkLFxuICAgICAgbm9kZSxcbiAgICAgIGxheW91dCxcbiAgICAgIGRhdGEsXG4gICAgICBfcGVuZGluZ0NsZWFudXA6IGZhbHNlXG4gICAgfTtcbiAgICBpZiAoIWV4aXN0aW5nRHJvcHBhYmxlKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkcm9wcGFibGUsIHtcbiAgICAgICAgdHJhbnNmb3JtZXJzOiB7XG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgdmFsdWU6IHt9XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zZm9ybToge1xuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZXJzID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgICAgICAgICAgc3RhdGUuZHJvcHBhYmxlc1tpZF0udHJhbnNmb3JtZXJzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdHJhbnNmb3JtZXJzLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKTtcbiAgICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1lcnMucmVkdWNlKFxuICAgICAgICAgICAgICAodHJhbnNmb3JtLCB0cmFuc2Zvcm1lcikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1lci5jYWxsYmFjayh0cmFuc2Zvcm0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBub29wVHJhbnNmb3JtKClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB0cmFuc2Zvcm1lZDoge1xuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybUxheW91dChcbiAgICAgICAgICAgICAgc3RhdGUuZHJvcHBhYmxlc1tpZF0ubGF5b3V0LFxuICAgICAgICAgICAgICBzdGF0ZS5kcm9wcGFibGVzW2lkXS50cmFuc2Zvcm1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgc2V0U3RhdGUoXCJkcm9wcGFibGVzXCIsIGlkLCBkcm9wcGFibGUpO1xuICAgIGlmIChzdGF0ZS5hY3RpdmUuZHJhZ2dhYmxlKSB7XG4gICAgICByZWNvbXB1dGVMYXlvdXRzKCk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZW1vdmVEcm9wcGFibGUgPSAoaWQpID0+IHtcbiAgICBpZiAoIXVudHJhY2soKCkgPT4gc3RhdGUuZHJvcHBhYmxlc1tpZF0pKSB7XG4gICAgICBjb25zb2xlLndhcm4oYENhbm5vdCByZW1vdmUgbm9uZXhpc3RlbnQgZHJvcHBhYmxlIHdpdGggaWQ6ICR7aWR9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNldFN0YXRlKFwiZHJvcHBhYmxlc1wiLCBpZCwgXCJfcGVuZGluZ0NsZWFudXBcIiwgdHJ1ZSk7XG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gY2xlYW51cERyb3BwYWJsZShpZCkpO1xuICB9O1xuICBjb25zdCBjbGVhbnVwRHJvcHBhYmxlID0gKGlkKSA9PiB7XG4gICAgaWYgKHN0YXRlLmRyb3BwYWJsZXNbaWRdPy5fcGVuZGluZ0NsZWFudXApIHtcbiAgICAgIGNvbnN0IGNsZWFudXBBY3RpdmUgPSBzdGF0ZS5hY3RpdmUuZHJvcHBhYmxlSWQgPT09IGlkO1xuICAgICAgYmF0Y2goKCkgPT4ge1xuICAgICAgICBpZiAoY2xlYW51cEFjdGl2ZSkge1xuICAgICAgICAgIHNldFN0YXRlKFwiYWN0aXZlXCIsIFwiZHJvcHBhYmxlSWRcIiwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0U3RhdGUoXCJkcm9wcGFibGVzXCIsIGlkLCB2b2lkIDApO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBhZGRTZW5zb3IgPSAoeyBpZCwgYWN0aXZhdG9ycyB9KSA9PiB7XG4gICAgc2V0U3RhdGUoXCJzZW5zb3JzXCIsIGlkLCB7XG4gICAgICBpZCxcbiAgICAgIGFjdGl2YXRvcnMsXG4gICAgICBjb29yZGluYXRlczoge1xuICAgICAgICBvcmlnaW46IHsgeDogMCwgeTogMCB9LFxuICAgICAgICBjdXJyZW50OiB7IHg6IDAsIHk6IDAgfSxcbiAgICAgICAgZ2V0IGRlbHRhKCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBzdGF0ZS5zZW5zb3JzW2lkXS5jb29yZGluYXRlcy5jdXJyZW50LnggLSBzdGF0ZS5zZW5zb3JzW2lkXS5jb29yZGluYXRlcy5vcmlnaW4ueCxcbiAgICAgICAgICAgIHk6IHN0YXRlLnNlbnNvcnNbaWRdLmNvb3JkaW5hdGVzLmN1cnJlbnQueSAtIHN0YXRlLnNlbnNvcnNbaWRdLmNvb3JkaW5hdGVzLm9yaWdpbi55XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICBjb25zdCByZW1vdmVTZW5zb3IgPSAoaWQpID0+IHtcbiAgICBpZiAoIXVudHJhY2soKCkgPT4gc3RhdGUuc2Vuc29yc1tpZF0pKSB7XG4gICAgICBjb25zb2xlLndhcm4oYENhbm5vdCByZW1vdmUgbm9uZXhpc3RlbnQgc2Vuc29yIHdpdGggaWQ6ICR7aWR9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNsZWFudXBBY3RpdmUgPSBzdGF0ZS5hY3RpdmUuc2Vuc29ySWQgPT09IGlkO1xuICAgIGJhdGNoKCgpID0+IHtcbiAgICAgIGlmIChjbGVhbnVwQWN0aXZlKSB7XG4gICAgICAgIHNldFN0YXRlKFwiYWN0aXZlXCIsIFwic2Vuc29ySWRcIiwgbnVsbCk7XG4gICAgICB9XG4gICAgICBzZXRTdGF0ZShcInNlbnNvcnNcIiwgaWQsIHZvaWQgMCk7XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IHNldE92ZXJsYXkgPSAoeyBub2RlLCBsYXlvdXQgfSkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gc3RhdGUuYWN0aXZlLm92ZXJsYXk7XG4gICAgY29uc3Qgb3ZlcmxheSA9IHtcbiAgICAgIG5vZGUsXG4gICAgICBsYXlvdXRcbiAgICB9O1xuICAgIGlmICghZXhpc3RpbmcpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG92ZXJsYXksIHtcbiAgICAgICAgaWQ6IHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBnZXQ6ICgpID0+IHN0YXRlLmFjdGl2ZS5kcmFnZ2FibGU/LmlkXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBnZXQ6ICgpID0+IHN0YXRlLmFjdGl2ZS5kcmFnZ2FibGU/LmRhdGFcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNmb3JtZXJzOiB7XG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgZ2V0OiAoKSA9PiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhcbiAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlLmRyYWdnYWJsZSA/IHN0YXRlLmFjdGl2ZS5kcmFnZ2FibGUudHJhbnNmb3JtZXJzIDoge31cbiAgICAgICAgICAgICkuZmlsdGVyKChbaWRdKSA9PiBpZCAhPT0gXCJhZGREcmFnZ2FibGUtZXhpc3Rpbmctb2Zmc2V0XCIpXG4gICAgICAgICAgKVxuICAgICAgICB9LFxuICAgICAgICB0cmFuc2Zvcm06IHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBnZXQ6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVycyA9IE9iamVjdC52YWx1ZXMoXG4gICAgICAgICAgICAgIHN0YXRlLmFjdGl2ZS5vdmVybGF5ID8gc3RhdGUuYWN0aXZlLm92ZXJsYXkudHJhbnNmb3JtZXJzIDogW11cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lcnMuc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpO1xuICAgICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVycy5yZWR1Y2UoXG4gICAgICAgICAgICAgICh0cmFuc2Zvcm0sIHRyYW5zZm9ybWVyKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVyLmNhbGxiYWNrKHRyYW5zZm9ybSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG5vb3BUcmFuc2Zvcm0oKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zZm9ybWVkOiB7XG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuYWN0aXZlLm92ZXJsYXkgPyB0cmFuc2Zvcm1MYXlvdXQoXG4gICAgICAgICAgICAgIHN0YXRlLmFjdGl2ZS5vdmVybGF5LmxheW91dCxcbiAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlLm92ZXJsYXkudHJhbnNmb3JtXG4gICAgICAgICAgICApIDogbmV3IExheW91dCh7IHg6IDAsIHk6IDAsIHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgc2V0U3RhdGUoXCJhY3RpdmVcIiwgXCJvdmVybGF5XCIsIG92ZXJsYXkpO1xuICB9O1xuICBjb25zdCBjbGVhck92ZXJsYXkgPSAoKSA9PiBzZXRTdGF0ZShcImFjdGl2ZVwiLCBcIm92ZXJsYXlcIiwgbnVsbCk7XG4gIGNvbnN0IHNlbnNvclN0YXJ0ID0gKGlkLCBjb29yZGluYXRlcykgPT4ge1xuICAgIGJhdGNoKCgpID0+IHtcbiAgICAgIHNldFN0YXRlKFwic2Vuc29yc1wiLCBpZCwgXCJjb29yZGluYXRlc1wiLCB7XG4gICAgICAgIG9yaWdpbjogeyAuLi5jb29yZGluYXRlcyB9LFxuICAgICAgICBjdXJyZW50OiB7IC4uLmNvb3JkaW5hdGVzIH1cbiAgICAgIH0pO1xuICAgICAgc2V0U3RhdGUoXCJhY3RpdmVcIiwgXCJzZW5zb3JJZFwiLCBpZCk7XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IHNlbnNvck1vdmUgPSAoY29vcmRpbmF0ZXMpID0+IHtcbiAgICBjb25zdCBzZW5zb3JJZCA9IHN0YXRlLmFjdGl2ZS5zZW5zb3JJZDtcbiAgICBpZiAoIXNlbnNvcklkKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJDYW5ub3QgbW92ZSBzZW5zb3Igd2hlbiBubyBzZW5zb3IgYWN0aXZlLlwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0U3RhdGUoXCJzZW5zb3JzXCIsIHNlbnNvcklkLCBcImNvb3JkaW5hdGVzXCIsIFwiY3VycmVudFwiLCB7XG4gICAgICAuLi5jb29yZGluYXRlc1xuICAgIH0pO1xuICB9O1xuICBjb25zdCBzZW5zb3JFbmQgPSAoKSA9PiBzZXRTdGF0ZShcImFjdGl2ZVwiLCBcInNlbnNvcklkXCIsIG51bGwpO1xuICBjb25zdCBkcmFnZ2FibGVBY3RpdmF0b3JzID0gKGRyYWdnYWJsZUlkLCBhc0hhbmRsZXJzKSA9PiB7XG4gICAgY29uc3QgZXZlbnRNYXAgPSB7fTtcbiAgICBmb3IgKGNvbnN0IHNlbnNvciBvZiBPYmplY3QudmFsdWVzKHN0YXRlLnNlbnNvcnMpKSB7XG4gICAgICBpZiAoc2Vuc29yKSB7XG4gICAgICAgIGZvciAoY29uc3QgW3R5cGUsIGFjdGl2YXRvcl0gb2YgT2JqZWN0LmVudHJpZXMoc2Vuc29yLmFjdGl2YXRvcnMpKSB7XG4gICAgICAgICAgZXZlbnRNYXBbdHlwZV0gPz89IFtdO1xuICAgICAgICAgIGV2ZW50TWFwW3R5cGVdLnB1c2goe1xuICAgICAgICAgICAgc2Vuc29yLFxuICAgICAgICAgICAgYWN0aXZhdG9yXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbGlzdGVuZXJzID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgaW4gZXZlbnRNYXApIHtcbiAgICAgIGxldCBoYW5kbGVyS2V5ID0ga2V5O1xuICAgICAgaWYgKGFzSGFuZGxlcnMpIHtcbiAgICAgICAgaGFuZGxlcktleSA9IGBvbiR7a2V5fWA7XG4gICAgICB9XG4gICAgICBsaXN0ZW5lcnNbaGFuZGxlcktleV0gPSAoZXZlbnQpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCB7IGFjdGl2YXRvciB9IG9mIGV2ZW50TWFwW2tleV0pIHtcbiAgICAgICAgICBpZiAoc3RhdGUuYWN0aXZlLnNlbnNvcikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFjdGl2YXRvcihldmVudCwgZHJhZ2dhYmxlSWQpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbGlzdGVuZXJzO1xuICB9O1xuICBjb25zdCByZWNvbXB1dGVMYXlvdXRzID0gKCkgPT4ge1xuICAgIGxldCBhbnlMYXlvdXRDaGFuZ2VkID0gZmFsc2U7XG4gICAgY29uc3QgZHJhZ2dhYmxlcyA9IE9iamVjdC52YWx1ZXMoc3RhdGUuZHJhZ2dhYmxlcyk7XG4gICAgY29uc3QgZHJvcHBhYmxlcyA9IE9iamVjdC52YWx1ZXMoc3RhdGUuZHJvcHBhYmxlcyk7XG4gICAgY29uc3Qgb3ZlcmxheSA9IHN0YXRlLmFjdGl2ZS5vdmVybGF5O1xuICAgIGJhdGNoKCgpID0+IHtcbiAgICAgIGNvbnN0IGNhY2hlID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCk7XG4gICAgICBmb3IgKGNvbnN0IGRyYWdnYWJsZSBvZiBkcmFnZ2FibGVzKSB7XG4gICAgICAgIGlmIChkcmFnZ2FibGUpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50TGF5b3V0ID0gZHJhZ2dhYmxlLmxheW91dDtcbiAgICAgICAgICBpZiAoIWNhY2hlLmhhcyhkcmFnZ2FibGUubm9kZSkpXG4gICAgICAgICAgICBjYWNoZS5zZXQoZHJhZ2dhYmxlLm5vZGUsIGVsZW1lbnRMYXlvdXQoZHJhZ2dhYmxlLm5vZGUpKTtcbiAgICAgICAgICBjb25zdCBsYXlvdXQgPSBjYWNoZS5nZXQoZHJhZ2dhYmxlLm5vZGUpO1xuICAgICAgICAgIGlmICghbGF5b3V0c0FyZUVxdWFsKGN1cnJlbnRMYXlvdXQsIGxheW91dCkpIHtcbiAgICAgICAgICAgIHNldFN0YXRlKFwiZHJhZ2dhYmxlc1wiLCBkcmFnZ2FibGUuaWQsIFwibGF5b3V0XCIsIGxheW91dCk7XG4gICAgICAgICAgICBhbnlMYXlvdXRDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgZHJvcHBhYmxlIG9mIGRyb3BwYWJsZXMpIHtcbiAgICAgICAgaWYgKGRyb3BwYWJsZSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRMYXlvdXQgPSBkcm9wcGFibGUubGF5b3V0O1xuICAgICAgICAgIGlmICghY2FjaGUuaGFzKGRyb3BwYWJsZS5ub2RlKSlcbiAgICAgICAgICAgIGNhY2hlLnNldChkcm9wcGFibGUubm9kZSwgZWxlbWVudExheW91dChkcm9wcGFibGUubm9kZSkpO1xuICAgICAgICAgIGNvbnN0IGxheW91dCA9IGNhY2hlLmdldChkcm9wcGFibGUubm9kZSk7XG4gICAgICAgICAgaWYgKCFsYXlvdXRzQXJlRXF1YWwoY3VycmVudExheW91dCwgbGF5b3V0KSkge1xuICAgICAgICAgICAgc2V0U3RhdGUoXCJkcm9wcGFibGVzXCIsIGRyb3BwYWJsZS5pZCwgXCJsYXlvdXRcIiwgbGF5b3V0KTtcbiAgICAgICAgICAgIGFueUxheW91dENoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG92ZXJsYXkpIHtcbiAgICAgICAgY29uc3QgY3VycmVudExheW91dCA9IG92ZXJsYXkubGF5b3V0O1xuICAgICAgICBjb25zdCBsYXlvdXQgPSBlbGVtZW50TGF5b3V0KG92ZXJsYXkubm9kZSk7XG4gICAgICAgIGlmICghbGF5b3V0c0FyZUVxdWFsKGN1cnJlbnRMYXlvdXQsIGxheW91dCkpIHtcbiAgICAgICAgICBzZXRTdGF0ZShcImFjdGl2ZVwiLCBcIm92ZXJsYXlcIiwgXCJsYXlvdXRcIiwgbGF5b3V0KTtcbiAgICAgICAgICBhbnlMYXlvdXRDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhbnlMYXlvdXRDaGFuZ2VkO1xuICB9O1xuICBjb25zdCBkZXRlY3RDb2xsaXNpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGRyYWdnYWJsZSA9IHN0YXRlLmFjdGl2ZS5vdmVybGF5ID8/IHN0YXRlLmFjdGl2ZS5kcmFnZ2FibGU7XG4gICAgaWYgKGRyYWdnYWJsZSkge1xuICAgICAgY29uc3QgZHJvcHBhYmxlID0gcHJvcHMuY29sbGlzaW9uRGV0ZWN0b3IoXG4gICAgICAgIGRyYWdnYWJsZSxcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhzdGF0ZS5kcm9wcGFibGVzKSxcbiAgICAgICAge1xuICAgICAgICAgIGFjdGl2ZURyb3BwYWJsZUlkOiBzdGF0ZS5hY3RpdmUuZHJvcHBhYmxlSWRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGRyb3BwYWJsZUlkID0gZHJvcHBhYmxlID8gZHJvcHBhYmxlLmlkIDogbnVsbDtcbiAgICAgIGlmIChzdGF0ZS5hY3RpdmUuZHJvcHBhYmxlSWQgIT09IGRyb3BwYWJsZUlkKSB7XG4gICAgICAgIHNldFN0YXRlKFwiYWN0aXZlXCIsIFwiZHJvcHBhYmxlSWRcIiwgZHJvcHBhYmxlSWQpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3QgZHJhZ1N0YXJ0ID0gKGRyYWdnYWJsZUlkKSA9PiB7XG4gICAgY29uc3QgdHJhbnNmb3JtZXIgPSB7XG4gICAgICBpZDogXCJzZW5zb3JNb3ZlXCIsXG4gICAgICBvcmRlcjogMCxcbiAgICAgIGNhbGxiYWNrOiAodHJhbnNmb3JtKSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZS5hY3RpdmUuc2Vuc29yKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHRyYW5zZm9ybS54ICsgc3RhdGUuYWN0aXZlLnNlbnNvci5jb29yZGluYXRlcy5kZWx0YS54LFxuICAgICAgICAgICAgeTogdHJhbnNmb3JtLnkgKyBzdGF0ZS5hY3RpdmUuc2Vuc29yLmNvb3JkaW5hdGVzLmRlbHRhLnlcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cmFuc2Zvcm07XG4gICAgICB9XG4gICAgfTtcbiAgICByZWNvbXB1dGVMYXlvdXRzKCk7XG4gICAgYmF0Y2goKCkgPT4ge1xuICAgICAgc2V0U3RhdGUoXCJhY3RpdmVcIiwgXCJkcmFnZ2FibGVJZFwiLCBkcmFnZ2FibGVJZCk7XG4gICAgICBhZGRUcmFuc2Zvcm1lcihcImRyYWdnYWJsZXNcIiwgZHJhZ2dhYmxlSWQsIHRyYW5zZm9ybWVyKTtcbiAgICB9KTtcbiAgICBkZXRlY3RDb2xsaXNpb25zKCk7XG4gIH07XG4gIGNvbnN0IGRyYWdFbmQgPSAoKSA9PiB7XG4gICAgY29uc3QgZHJhZ2dhYmxlSWQgPSB1bnRyYWNrKCgpID0+IHN0YXRlLmFjdGl2ZS5kcmFnZ2FibGVJZCk7XG4gICAgYmF0Y2goKCkgPT4ge1xuICAgICAgaWYgKGRyYWdnYWJsZUlkICE9PSBudWxsKSB7XG4gICAgICAgIHJlbW92ZVRyYW5zZm9ybWVyKFwiZHJhZ2dhYmxlc1wiLCBkcmFnZ2FibGVJZCwgXCJzZW5zb3JNb3ZlXCIpO1xuICAgICAgfVxuICAgICAgc2V0U3RhdGUoXCJhY3RpdmVcIiwgW1wiZHJhZ2dhYmxlSWRcIiwgXCJkcm9wcGFibGVJZFwiXSwgbnVsbCk7XG4gICAgfSk7XG4gICAgcmVjb21wdXRlTGF5b3V0cygpO1xuICB9O1xuICBjb25zdCBvbkRyYWdTdGFydCA9IChoYW5kbGVyKSA9PiB7XG4gICAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGRyYWdnYWJsZSA9IHN0YXRlLmFjdGl2ZS5kcmFnZ2FibGU7XG4gICAgICBpZiAoZHJhZ2dhYmxlKSB7XG4gICAgICAgIHVudHJhY2soKCkgPT4gaGFuZGxlcih7IGRyYWdnYWJsZSB9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IG9uRHJhZ01vdmUgPSAoaGFuZGxlcikgPT4ge1xuICAgIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBkcmFnZ2FibGUgPSBzdGF0ZS5hY3RpdmUuZHJhZ2dhYmxlO1xuICAgICAgaWYgKGRyYWdnYWJsZSkge1xuICAgICAgICBjb25zdCBvdmVybGF5ID0gdW50cmFjaygoKSA9PiBzdGF0ZS5hY3RpdmUub3ZlcmxheSk7XG4gICAgICAgIE9iamVjdC52YWx1ZXMob3ZlcmxheSA/IG92ZXJsYXkudHJhbnNmb3JtIDogZHJhZ2dhYmxlLnRyYW5zZm9ybSk7XG4gICAgICAgIHVudHJhY2soKCkgPT4gaGFuZGxlcih7IGRyYWdnYWJsZSwgb3ZlcmxheSB9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IG9uRHJhZ092ZXIgPSAoaGFuZGxlcikgPT4ge1xuICAgIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBkcmFnZ2FibGUgPSBzdGF0ZS5hY3RpdmUuZHJhZ2dhYmxlO1xuICAgICAgY29uc3QgZHJvcHBhYmxlID0gc3RhdGUuYWN0aXZlLmRyb3BwYWJsZTtcbiAgICAgIGlmIChkcmFnZ2FibGUpIHtcbiAgICAgICAgdW50cmFjayhcbiAgICAgICAgICAoKSA9PiBoYW5kbGVyKHsgZHJhZ2dhYmxlLCBkcm9wcGFibGUsIG92ZXJsYXk6IHN0YXRlLmFjdGl2ZS5vdmVybGF5IH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IG9uRHJhZ0VuZCA9IChoYW5kbGVyKSA9PiB7XG4gICAgY3JlYXRlRWZmZWN0KFxuICAgICAgKHsgcHJldmlvdXNEcmFnZ2FibGUsIHByZXZpb3VzRHJvcHBhYmxlLCBwcmV2aW91c092ZXJsYXkgfSkgPT4ge1xuICAgICAgICBjb25zdCBkcmFnZ2FibGUgPSBzdGF0ZS5hY3RpdmUuZHJhZ2dhYmxlO1xuICAgICAgICBjb25zdCBkcm9wcGFibGUgPSBkcmFnZ2FibGUgPyBzdGF0ZS5hY3RpdmUuZHJvcHBhYmxlIDogbnVsbDtcbiAgICAgICAgY29uc3Qgb3ZlcmxheSA9IGRyYWdnYWJsZSA/IHN0YXRlLmFjdGl2ZS5vdmVybGF5IDogbnVsbDtcbiAgICAgICAgaWYgKCFkcmFnZ2FibGUgJiYgcHJldmlvdXNEcmFnZ2FibGUpIHtcbiAgICAgICAgICB1bnRyYWNrKFxuICAgICAgICAgICAgKCkgPT4gaGFuZGxlcih7XG4gICAgICAgICAgICAgIGRyYWdnYWJsZTogcHJldmlvdXNEcmFnZ2FibGUsXG4gICAgICAgICAgICAgIGRyb3BwYWJsZTogcHJldmlvdXNEcm9wcGFibGUsXG4gICAgICAgICAgICAgIG92ZXJsYXk6IHByZXZpb3VzT3ZlcmxheVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcHJldmlvdXNEcmFnZ2FibGU6IGRyYWdnYWJsZSxcbiAgICAgICAgICBwcmV2aW91c0Ryb3BwYWJsZTogZHJvcHBhYmxlLFxuICAgICAgICAgIHByZXZpb3VzT3ZlcmxheTogb3ZlcmxheVxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcHJldmlvdXNEcmFnZ2FibGU6IG51bGwsXG4gICAgICAgIHByZXZpb3VzRHJvcHBhYmxlOiBudWxsLFxuICAgICAgICBwcmV2aW91c092ZXJsYXk6IG51bGxcbiAgICAgIH1cbiAgICApO1xuICB9O1xuICBvbkRyYWdNb3ZlKCgpID0+IGRldGVjdENvbGxpc2lvbnMoKSk7XG4gIHByb3BzLm9uRHJhZ1N0YXJ0ICYmIG9uRHJhZ1N0YXJ0KHByb3BzLm9uRHJhZ1N0YXJ0KTtcbiAgcHJvcHMub25EcmFnTW92ZSAmJiBvbkRyYWdNb3ZlKHByb3BzLm9uRHJhZ01vdmUpO1xuICBwcm9wcy5vbkRyYWdPdmVyICYmIG9uRHJhZ092ZXIocHJvcHMub25EcmFnT3Zlcik7XG4gIHByb3BzLm9uRHJhZ0VuZCAmJiBvbkRyYWdFbmQocHJvcHMub25EcmFnRW5kKTtcbiAgY29uc3QgYWN0aW9ucyA9IHtcbiAgICBhZGRUcmFuc2Zvcm1lcixcbiAgICByZW1vdmVUcmFuc2Zvcm1lcixcbiAgICBhZGREcmFnZ2FibGUsXG4gICAgcmVtb3ZlRHJhZ2dhYmxlLFxuICAgIGFkZERyb3BwYWJsZSxcbiAgICByZW1vdmVEcm9wcGFibGUsXG4gICAgYWRkU2Vuc29yLFxuICAgIHJlbW92ZVNlbnNvcixcbiAgICBzZXRPdmVybGF5LFxuICAgIGNsZWFyT3ZlcmxheSxcbiAgICByZWNvbXB1dGVMYXlvdXRzLFxuICAgIGRldGVjdENvbGxpc2lvbnMsXG4gICAgZHJhZ2dhYmxlQWN0aXZhdG9ycyxcbiAgICBzZW5zb3JTdGFydCxcbiAgICBzZW5zb3JNb3ZlLFxuICAgIHNlbnNvckVuZCxcbiAgICBkcmFnU3RhcnQsXG4gICAgZHJhZ0VuZCxcbiAgICBvbkRyYWdTdGFydCxcbiAgICBvbkRyYWdNb3ZlLFxuICAgIG9uRHJhZ092ZXIsXG4gICAgb25EcmFnRW5kXG4gIH07XG4gIGNvbnN0IGNvbnRleHQgPSBbc3RhdGUsIGFjdGlvbnNdO1xuICByZXR1cm4gPENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHR9Pntwcm9wcy5jaGlsZHJlbn08L0NvbnRleHQuUHJvdmlkZXI+O1xufTtcbnZhciB1c2VEcmFnRHJvcENvbnRleHQgPSAoKSA9PiB7XG4gIHJldHVybiB1c2VDb250ZXh0KENvbnRleHQpIHx8IG51bGw7XG59O1xuXG4vLyBzcmMvY3JlYXRlLXBvaW50ZXItc2Vuc29yLnRzXG5pbXBvcnQgeyBvbkNsZWFudXAsIG9uTW91bnQgfSBmcm9tIFwic29saWQtanNcIjtcbnZhciBjcmVhdGVQb2ludGVyU2Vuc29yID0gKGlkID0gXCJwb2ludGVyLXNlbnNvclwiKSA9PiB7XG4gIGNvbnN0IFtcbiAgICBzdGF0ZSxcbiAgICB7XG4gICAgICBhZGRTZW5zb3IsXG4gICAgICByZW1vdmVTZW5zb3IsXG4gICAgICBzZW5zb3JTdGFydCxcbiAgICAgIHNlbnNvck1vdmUsXG4gICAgICBzZW5zb3JFbmQsXG4gICAgICBkcmFnU3RhcnQsXG4gICAgICBkcmFnRW5kXG4gICAgfVxuICBdID0gdXNlRHJhZ0Ryb3BDb250ZXh0KCk7XG4gIGNvbnN0IGFjdGl2YXRpb25EZWxheSA9IDI1MDtcbiAgY29uc3QgYWN0aXZhdGlvbkRpc3RhbmNlID0gMTA7XG4gIG9uTW91bnQoKCkgPT4ge1xuICAgIGFkZFNlbnNvcih7IGlkLCBhY3RpdmF0b3JzOiB7IHBvaW50ZXJkb3duOiBhdHRhY2ggfSB9KTtcbiAgfSk7XG4gIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgcmVtb3ZlU2Vuc29yKGlkKTtcbiAgfSk7XG4gIGNvbnN0IGlzQWN0aXZlU2Vuc29yID0gKCkgPT4gc3RhdGUuYWN0aXZlLnNlbnNvcklkID09PSBpZDtcbiAgY29uc3QgaW5pdGlhbENvb3JkaW5hdGVzID0geyB4OiAwLCB5OiAwIH07XG4gIGxldCBhY3RpdmF0aW9uRGVsYXlUaW1lb3V0SWQgPSBudWxsO1xuICBsZXQgYWN0aXZhdGlvbkRyYWdnYWJsZUlkID0gbnVsbDtcbiAgY29uc3QgYXR0YWNoID0gKGV2ZW50LCBkcmFnZ2FibGVJZCkgPT4ge1xuICAgIGlmIChldmVudC5idXR0b24gIT09IDApXG4gICAgICByZXR1cm47XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJtb3ZlXCIsIG9uUG9pbnRlck1vdmUpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVydXBcIiwgb25Qb2ludGVyVXApO1xuICAgIGFjdGl2YXRpb25EcmFnZ2FibGVJZCA9IGRyYWdnYWJsZUlkO1xuICAgIGluaXRpYWxDb29yZGluYXRlcy54ID0gZXZlbnQuY2xpZW50WDtcbiAgICBpbml0aWFsQ29vcmRpbmF0ZXMueSA9IGV2ZW50LmNsaWVudFk7XG4gICAgYWN0aXZhdGlvbkRlbGF5VGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQob25BY3RpdmF0ZSwgYWN0aXZhdGlvbkRlbGF5KTtcbiAgfTtcbiAgY29uc3QgZGV0YWNoID0gKCkgPT4ge1xuICAgIGlmIChhY3RpdmF0aW9uRGVsYXlUaW1lb3V0SWQpIHtcbiAgICAgIGNsZWFyVGltZW91dChhY3RpdmF0aW9uRGVsYXlUaW1lb3V0SWQpO1xuICAgICAgYWN0aXZhdGlvbkRlbGF5VGltZW91dElkID0gbnVsbDtcbiAgICB9XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJtb3ZlXCIsIG9uUG9pbnRlck1vdmUpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVydXBcIiwgb25Qb2ludGVyVXApO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzZWxlY3Rpb25jaGFuZ2VcIiwgY2xlYXJTZWxlY3Rpb24pO1xuICB9O1xuICBjb25zdCBvbkFjdGl2YXRlID0gKCkgPT4ge1xuICAgIGlmICghc3RhdGUuYWN0aXZlLnNlbnNvcikge1xuICAgICAgc2Vuc29yU3RhcnQoaWQsIGluaXRpYWxDb29yZGluYXRlcyk7XG4gICAgICBkcmFnU3RhcnQoYWN0aXZhdGlvbkRyYWdnYWJsZUlkKTtcbiAgICAgIGNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic2VsZWN0aW9uY2hhbmdlXCIsIGNsZWFyU2VsZWN0aW9uKTtcbiAgICB9IGVsc2UgaWYgKCFpc0FjdGl2ZVNlbnNvcigpKSB7XG4gICAgICBkZXRhY2goKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uUG9pbnRlck1vdmUgPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCBjb29yZGluYXRlcyA9IHsgeDogZXZlbnQuY2xpZW50WCwgeTogZXZlbnQuY2xpZW50WSB9O1xuICAgIGlmICghc3RhdGUuYWN0aXZlLnNlbnNvcikge1xuICAgICAgY29uc3QgdHJhbnNmb3JtID0ge1xuICAgICAgICB4OiBjb29yZGluYXRlcy54IC0gaW5pdGlhbENvb3JkaW5hdGVzLngsXG4gICAgICAgIHk6IGNvb3JkaW5hdGVzLnkgLSBpbml0aWFsQ29vcmRpbmF0ZXMueVxuICAgICAgfTtcbiAgICAgIGlmIChNYXRoLnNxcnQodHJhbnNmb3JtLnggKiogMiArIHRyYW5zZm9ybS55ICoqIDIpID4gYWN0aXZhdGlvbkRpc3RhbmNlKSB7XG4gICAgICAgIG9uQWN0aXZhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzQWN0aXZlU2Vuc29yKCkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBzZW5zb3JNb3ZlKGNvb3JkaW5hdGVzKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uUG9pbnRlclVwID0gKGV2ZW50KSA9PiB7XG4gICAgZGV0YWNoKCk7XG4gICAgaWYgKGlzQWN0aXZlU2Vuc29yKCkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBkcmFnRW5kKCk7XG4gICAgICBzZW5zb3JFbmQoKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGNsZWFyU2VsZWN0aW9uID0gKCkgPT4ge1xuICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKT8ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gIH07XG59O1xuXG4vLyBzcmMvZHJhZy1kcm9wLXNlbnNvcnMudHN4XG52YXIgRHJhZ0Ryb3BTZW5zb3JzID0gKHByb3BzKSA9PiB7XG4gIGNyZWF0ZVBvaW50ZXJTZW5zb3IoKTtcbiAgcmV0dXJuIDw+e3Byb3BzLmNoaWxkcmVufTwvPjtcbn07XG5cbi8vIHNyYy9jcmVhdGUtZHJhZ2dhYmxlLnRzXG5pbXBvcnQge1xuICBjcmVhdGVFZmZlY3QgYXMgY3JlYXRlRWZmZWN0MixcbiAgY3JlYXRlU2lnbmFsLFxuICBvbkNsZWFudXAgYXMgb25DbGVhbnVwMixcbiAgb25Nb3VudCBhcyBvbk1vdW50MlxufSBmcm9tIFwic29saWQtanNcIjtcblxuLy8gc3JjL3N0eWxlLnRzXG52YXIgbGF5b3V0U3R5bGUgPSAobGF5b3V0KSA9PiB7XG4gIHJldHVybiB7XG4gICAgdG9wOiBgJHtsYXlvdXQueX1weGAsXG4gICAgbGVmdDogYCR7bGF5b3V0Lnh9cHhgLFxuICAgIHdpZHRoOiBgJHtsYXlvdXQud2lkdGh9cHhgLFxuICAgIGhlaWdodDogYCR7bGF5b3V0LmhlaWdodH1weGBcbiAgfTtcbn07XG52YXIgdHJhbnNmb3JtU3R5bGUgPSAodHJhbnNmb3JtKSA9PiB7XG4gIHJldHVybiB7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZTNkKCR7dHJhbnNmb3JtLnh9cHgsICR7dHJhbnNmb3JtLnl9cHgsIDApYCB9O1xufTtcbnZhciBtYXliZVRyYW5zZm9ybVN0eWxlID0gKHRyYW5zZm9ybSkgPT4ge1xuICByZXR1cm4gdHJhbnNmb3Jtc0FyZUVxdWFsKHRyYW5zZm9ybSwgbm9vcFRyYW5zZm9ybSgpKSA/IHt9IDogdHJhbnNmb3JtU3R5bGUodHJhbnNmb3JtKTtcbn07XG5cbi8vIHNyYy9jcmVhdGUtZHJhZ2dhYmxlLnRzXG52YXIgY3JlYXRlRHJhZ2dhYmxlID0gKGlkLCBkYXRhID0ge30pID0+IHtcbiAgY29uc3QgW3N0YXRlLCB7IGFkZERyYWdnYWJsZSwgcmVtb3ZlRHJhZ2dhYmxlLCBkcmFnZ2FibGVBY3RpdmF0b3JzIH1dID0gdXNlRHJhZ0Ryb3BDb250ZXh0KCk7XG4gIGNvbnN0IFtub2RlLCBzZXROb2RlXSA9IGNyZWF0ZVNpZ25hbChudWxsKTtcbiAgb25Nb3VudDIoKCkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkTm9kZSA9IG5vZGUoKTtcbiAgICBpZiAocmVzb2x2ZWROb2RlKSB7XG4gICAgICBhZGREcmFnZ2FibGUoe1xuICAgICAgICBpZCxcbiAgICAgICAgbm9kZTogcmVzb2x2ZWROb2RlLFxuICAgICAgICBsYXlvdXQ6IGVsZW1lbnRMYXlvdXQocmVzb2x2ZWROb2RlKSxcbiAgICAgICAgZGF0YVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgb25DbGVhbnVwMigoKSA9PiByZW1vdmVEcmFnZ2FibGUoaWQpKTtcbiAgY29uc3QgaXNBY3RpdmVEcmFnZ2FibGUgPSAoKSA9PiBzdGF0ZS5hY3RpdmUuZHJhZ2dhYmxlSWQgPT09IGlkO1xuICBjb25zdCB0cmFuc2Zvcm0gPSAoKSA9PiB7XG4gICAgcmV0dXJuIHN0YXRlLmRyYWdnYWJsZXNbaWRdPy50cmFuc2Zvcm0gfHwgbm9vcFRyYW5zZm9ybSgpO1xuICB9O1xuICBjb25zdCBkcmFnZ2FibGUgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhcbiAgICAoZWxlbWVudCwgYWNjZXNzb3IpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGFjY2Vzc29yID8gYWNjZXNzb3IoKSA6IHt9O1xuICAgICAgY3JlYXRlRWZmZWN0MigoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkTm9kZSA9IG5vZGUoKTtcbiAgICAgICAgY29uc3QgYWN0aXZhdG9ycyA9IGRyYWdnYWJsZUFjdGl2YXRvcnMoaWQpO1xuICAgICAgICBpZiAocmVzb2x2ZWROb2RlKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gYWN0aXZhdG9ycykge1xuICAgICAgICAgICAgcmVzb2x2ZWROb2RlLmFkZEV2ZW50TGlzdGVuZXIoa2V5LCBhY3RpdmF0b3JzW2tleV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvbkNsZWFudXAyKCgpID0+IHtcbiAgICAgICAgICBpZiAocmVzb2x2ZWROb2RlKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBhY3RpdmF0b3JzKSB7XG4gICAgICAgICAgICAgIHJlc29sdmVkTm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKGtleSwgYWN0aXZhdG9yc1trZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBzZXROb2RlKGVsZW1lbnQpO1xuICAgICAgaWYgKCFjb25maWcuc2tpcFRyYW5zZm9ybSkge1xuICAgICAgICBjcmVhdGVFZmZlY3QyKCgpID0+IHtcbiAgICAgICAgICBjb25zdCByZXNvbHZlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybSgpO1xuICAgICAgICAgIGlmICghdHJhbnNmb3Jtc0FyZUVxdWFsKHJlc29sdmVkVHJhbnNmb3JtLCBub29wVHJhbnNmb3JtKCkpKSB7XG4gICAgICAgICAgICBjb25zdCBzdHlsZSA9IHRyYW5zZm9ybVN0eWxlKHRyYW5zZm9ybSgpKTtcbiAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXCJ0cmFuc2Zvcm1cIiwgc3R5bGUudHJhbnNmb3JtID8/IG51bGwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KFwidHJhbnNmb3JtXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICByZWY6IHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IHNldE5vZGVcbiAgICAgIH0sXG4gICAgICBpc0FjdGl2ZURyYWdnYWJsZToge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGlzQWN0aXZlRHJhZ2dhYmxlXG4gICAgICB9LFxuICAgICAgZHJhZ0FjdGl2YXRvcnM6IHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGRyYWdnYWJsZUFjdGl2YXRvcnMoaWQsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdHJhbnNmb3JtOiB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogdHJhbnNmb3JtXG4gICAgICB9XG4gICAgfVxuICApO1xuICByZXR1cm4gZHJhZ2dhYmxlO1xufTtcblxuLy8gc3JjL2NyZWF0ZS1kcm9wcGFibGUudHNcbmltcG9ydCB7XG4gIGNyZWF0ZUVmZmVjdCBhcyBjcmVhdGVFZmZlY3QzLFxuICBjcmVhdGVTaWduYWwgYXMgY3JlYXRlU2lnbmFsMixcbiAgb25DbGVhbnVwIGFzIG9uQ2xlYW51cDMsXG4gIG9uTW91bnQgYXMgb25Nb3VudDNcbn0gZnJvbSBcInNvbGlkLWpzXCI7XG52YXIgY3JlYXRlRHJvcHBhYmxlID0gKGlkLCBkYXRhID0ge30pID0+IHtcbiAgY29uc3QgW3N0YXRlLCB7IGFkZERyb3BwYWJsZSwgcmVtb3ZlRHJvcHBhYmxlIH1dID0gdXNlRHJhZ0Ryb3BDb250ZXh0KCk7XG4gIGNvbnN0IFtub2RlLCBzZXROb2RlXSA9IGNyZWF0ZVNpZ25hbDIobnVsbCk7XG4gIG9uTW91bnQzKCgpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZE5vZGUgPSBub2RlKCk7XG4gICAgaWYgKHJlc29sdmVkTm9kZSkge1xuICAgICAgYWRkRHJvcHBhYmxlKHtcbiAgICAgICAgaWQsXG4gICAgICAgIG5vZGU6IHJlc29sdmVkTm9kZSxcbiAgICAgICAgbGF5b3V0OiBlbGVtZW50TGF5b3V0KHJlc29sdmVkTm9kZSksXG4gICAgICAgIGRhdGFcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIG9uQ2xlYW51cDMoKCkgPT4gcmVtb3ZlRHJvcHBhYmxlKGlkKSk7XG4gIGNvbnN0IGlzQWN0aXZlRHJvcHBhYmxlID0gKCkgPT4gc3RhdGUuYWN0aXZlLmRyb3BwYWJsZUlkID09PSBpZDtcbiAgY29uc3QgdHJhbnNmb3JtID0gKCkgPT4ge1xuICAgIHJldHVybiBzdGF0ZS5kcm9wcGFibGVzW2lkXT8udHJhbnNmb3JtIHx8IG5vb3BUcmFuc2Zvcm0oKTtcbiAgfTtcbiAgY29uc3QgZHJvcHBhYmxlID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoXG4gICAgKGVsZW1lbnQsIGFjY2Vzc29yKSA9PiB7XG4gICAgICBjb25zdCBjb25maWcgPSBhY2Nlc3NvciA/IGFjY2Vzc29yKCkgOiB7fTtcbiAgICAgIHNldE5vZGUoZWxlbWVudCk7XG4gICAgICBpZiAoIWNvbmZpZy5za2lwVHJhbnNmb3JtKSB7XG4gICAgICAgIGNyZWF0ZUVmZmVjdDMoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc29sdmVkVHJhbnNmb3JtID0gdHJhbnNmb3JtKCk7XG4gICAgICAgICAgaWYgKCF0cmFuc2Zvcm1zQXJlRXF1YWwocmVzb2x2ZWRUcmFuc2Zvcm0sIG5vb3BUcmFuc2Zvcm0oKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlID0gdHJhbnNmb3JtU3R5bGUodHJhbnNmb3JtKCkpO1xuICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcInRyYW5zZm9ybVwiLCBzdHlsZS50cmFuc2Zvcm0gPz8gbnVsbCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJ0cmFuc2Zvcm1cIik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHJlZjoge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogc2V0Tm9kZVxuICAgICAgfSxcbiAgICAgIGlzQWN0aXZlRHJvcHBhYmxlOiB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogaXNBY3RpdmVEcm9wcGFibGVcbiAgICAgIH0sXG4gICAgICB0cmFuc2Zvcm06IHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiB0cmFuc2Zvcm1cbiAgICAgIH1cbiAgICB9XG4gICk7XG4gIHJldHVybiBkcm9wcGFibGU7XG59O1xuXG4vLyBzcmMvZHJhZy1vdmVybGF5LnRzeFxuaW1wb3J0IHsgUG9ydGFsIH0gZnJvbSBcInNvbGlkLWpzL3dlYlwiO1xuaW1wb3J0IHsgU2hvdyB9IGZyb20gXCJzb2xpZC1qc1wiO1xudmFyIERyYWdPdmVybGF5ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IFtzdGF0ZSwgeyBvbkRyYWdTdGFydCwgb25EcmFnRW5kLCBzZXRPdmVybGF5LCBjbGVhck92ZXJsYXkgfV0gPSB1c2VEcmFnRHJvcENvbnRleHQoKTtcbiAgbGV0IG5vZGU7XG4gIG9uRHJhZ1N0YXJ0KCh7IGRyYWdnYWJsZSB9KSA9PiB7XG4gICAgc2V0T3ZlcmxheSh7XG4gICAgICBub2RlOiBkcmFnZ2FibGUubm9kZSxcbiAgICAgIGxheW91dDogZHJhZ2dhYmxlLmxheW91dFxuICAgIH0pO1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIGlmIChub2RlKSB7XG4gICAgICAgIGNvbnN0IGxheW91dCA9IGVsZW1lbnRMYXlvdXQobm9kZSk7XG4gICAgICAgIGNvbnN0IGRlbHRhID0ge1xuICAgICAgICAgIHg6IChkcmFnZ2FibGUubGF5b3V0LndpZHRoIC0gbGF5b3V0LndpZHRoKSAvIDIsXG4gICAgICAgICAgeTogKGRyYWdnYWJsZS5sYXlvdXQuaGVpZ2h0IC0gbGF5b3V0LmhlaWdodCkgLyAyXG4gICAgICAgIH07XG4gICAgICAgIGxheW91dC54ICs9IGRlbHRhLng7XG4gICAgICAgIGxheW91dC55ICs9IGRlbHRhLnk7XG4gICAgICAgIHNldE92ZXJsYXkoeyBub2RlLCBsYXlvdXQgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICBvbkRyYWdFbmQoKCkgPT4gcXVldWVNaWNyb3Rhc2soY2xlYXJPdmVybGF5KSk7XG4gIGNvbnN0IHN0eWxlID0gKCkgPT4ge1xuICAgIGNvbnN0IG92ZXJsYXkgPSBzdGF0ZS5hY3RpdmUub3ZlcmxheTtcbiAgICBjb25zdCBkcmFnZ2FibGUgPSBzdGF0ZS5hY3RpdmUuZHJhZ2dhYmxlO1xuICAgIGlmICghb3ZlcmxheSB8fCAhZHJhZ2dhYmxlKVxuICAgICAgcmV0dXJuIHt9O1xuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogXCJmaXhlZFwiLFxuICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMHNcIixcbiAgICAgIHRvcDogYCR7b3ZlcmxheS5sYXlvdXQudG9wfXB4YCxcbiAgICAgIGxlZnQ6IGAke292ZXJsYXkubGF5b3V0LmxlZnR9cHhgLFxuICAgICAgXCJtaW4td2lkdGhcIjogYCR7ZHJhZ2dhYmxlLmxheW91dC53aWR0aH1weGAsXG4gICAgICBcIm1pbi1oZWlnaHRcIjogYCR7ZHJhZ2dhYmxlLmxheW91dC5oZWlnaHR9cHhgLFxuICAgICAgLi4udHJhbnNmb3JtU3R5bGUob3ZlcmxheS50cmFuc2Zvcm0pLFxuICAgICAgLi4ucHJvcHMuc3R5bGVcbiAgICB9O1xuICB9O1xuICByZXR1cm4gPFBvcnRhbCBtb3VudD17ZG9jdW1lbnQuYm9keX0+PFNob3cgd2hlbj17c3RhdGUuYWN0aXZlLmRyYWdnYWJsZX0+PGRpdiByZWY9e25vZGV9IGNsYXNzPXtwcm9wcy5jbGFzc30gc3R5bGU9e3N0eWxlKCl9Pnt0eXBlb2YgcHJvcHMuY2hpbGRyZW4gPT09IFwiZnVuY3Rpb25cIiA/IHByb3BzLmNoaWxkcmVuKHN0YXRlLmFjdGl2ZS5kcmFnZ2FibGUpIDogcHJvcHMuY2hpbGRyZW59PC9kaXY+PC9TaG93PjwvUG9ydGFsPjtcbn07XG5cbi8vIHNyYy9zb3J0YWJsZS1jb250ZXh0LnRzeFxuaW1wb3J0IHtcbiAgY3JlYXRlQ29udGV4dCBhcyBjcmVhdGVDb250ZXh0MixcbiAgY3JlYXRlRWZmZWN0IGFzIGNyZWF0ZUVmZmVjdDQsXG4gIHVudHJhY2sgYXMgdW50cmFjazIsXG4gIHVzZUNvbnRleHQgYXMgdXNlQ29udGV4dDJcbn0gZnJvbSBcInNvbGlkLWpzXCI7XG5pbXBvcnQgeyBjcmVhdGVTdG9yZSBhcyBjcmVhdGVTdG9yZTIgfSBmcm9tIFwic29saWQtanMvc3RvcmVcIjtcblxuLy8gc3JjL21vdmUtYXJyYXktaXRlbS50c1xudmFyIG1vdmVBcnJheUl0ZW0gPSAoYXJyYXksIGZyb21JbmRleCwgdG9JbmRleCkgPT4ge1xuICBjb25zdCBuZXdBcnJheSA9IGFycmF5LnNsaWNlKCk7XG4gIG5ld0FycmF5LnNwbGljZSh0b0luZGV4LCAwLCAuLi5uZXdBcnJheS5zcGxpY2UoZnJvbUluZGV4LCAxKSk7XG4gIHJldHVybiBuZXdBcnJheTtcbn07XG5cbi8vIHNyYy9zb3J0YWJsZS1jb250ZXh0LnRzeFxudmFyIENvbnRleHQyID0gY3JlYXRlQ29udGV4dDIoKTtcbnZhciBTb3J0YWJsZVByb3ZpZGVyID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IFtkbmRTdGF0ZV0gPSB1c2VEcmFnRHJvcENvbnRleHQoKTtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSBjcmVhdGVTdG9yZTIoe1xuICAgIGluaXRpYWxJZHM6IFtdLFxuICAgIHNvcnRlZElkczogW11cbiAgfSk7XG4gIGNvbnN0IGlzVmFsaWRJbmRleCA9IChpbmRleCkgPT4ge1xuICAgIHJldHVybiBpbmRleCA+PSAwICYmIGluZGV4IDwgc3RhdGUuaW5pdGlhbElkcy5sZW5ndGg7XG4gIH07XG4gIGNyZWF0ZUVmZmVjdDQoKCkgPT4ge1xuICAgIHNldFN0YXRlKFwiaW5pdGlhbElkc1wiLCBbLi4ucHJvcHMuaWRzXSk7XG4gICAgc2V0U3RhdGUoXCJzb3J0ZWRJZHNcIiwgWy4uLnByb3BzLmlkc10pO1xuICB9KTtcbiAgY3JlYXRlRWZmZWN0NCgoKSA9PiB7XG4gICAgaWYgKGRuZFN0YXRlLmFjdGl2ZS5kcmFnZ2FibGVJZCAmJiBkbmRTdGF0ZS5hY3RpdmUuZHJvcHBhYmxlSWQpIHtcbiAgICAgIHVudHJhY2syKCgpID0+IHtcbiAgICAgICAgY29uc3QgZnJvbUluZGV4ID0gc3RhdGUuc29ydGVkSWRzLmluZGV4T2YoZG5kU3RhdGUuYWN0aXZlLmRyYWdnYWJsZUlkKTtcbiAgICAgICAgY29uc3QgdG9JbmRleCA9IHN0YXRlLmluaXRpYWxJZHMuaW5kZXhPZihkbmRTdGF0ZS5hY3RpdmUuZHJvcHBhYmxlSWQpO1xuICAgICAgICBpZiAoIWlzVmFsaWRJbmRleChmcm9tSW5kZXgpIHx8ICFpc1ZhbGlkSW5kZXgodG9JbmRleCkpIHtcbiAgICAgICAgICBzZXRTdGF0ZShcInNvcnRlZElkc1wiLCBbLi4ucHJvcHMuaWRzXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZnJvbUluZGV4ICE9PSB0b0luZGV4KSB7XG4gICAgICAgICAgY29uc3QgcmVzb3J0ZWQgPSBtb3ZlQXJyYXlJdGVtKHN0YXRlLnNvcnRlZElkcywgZnJvbUluZGV4LCB0b0luZGV4KTtcbiAgICAgICAgICBzZXRTdGF0ZShcInNvcnRlZElkc1wiLCByZXNvcnRlZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTdGF0ZShcInNvcnRlZElkc1wiLCBbLi4ucHJvcHMuaWRzXSk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgYWN0aW9ucyA9IHt9O1xuICBjb25zdCBjb250ZXh0ID0gW3N0YXRlLCBhY3Rpb25zXTtcbiAgcmV0dXJuIDxDb250ZXh0Mi5Qcm92aWRlciB2YWx1ZT17Y29udGV4dH0+e3Byb3BzLmNoaWxkcmVufTwvQ29udGV4dDIuUHJvdmlkZXI+O1xufTtcbnZhciB1c2VTb3J0YWJsZUNvbnRleHQgPSAoKSA9PiB7XG4gIHJldHVybiB1c2VDb250ZXh0MihDb250ZXh0MikgfHwgbnVsbDtcbn07XG5cbi8vIHNyYy9jcmVhdGUtc29ydGFibGUudHNcbmltcG9ydCB7IGNyZWF0ZUVmZmVjdCBhcyBjcmVhdGVFZmZlY3Q1LCBvbkNsZWFudXAgYXMgb25DbGVhbnVwNCwgb25Nb3VudCBhcyBvbk1vdW50NCB9IGZyb20gXCJzb2xpZC1qc1wiO1xuXG4vLyBzcmMvY29tYmluZS1yZWZzLnRzXG52YXIgY29tYmluZVJlZnMgPSAoc2V0UmVmQSwgc2V0UmVmQikgPT4ge1xuICByZXR1cm4gKHJlZikgPT4ge1xuICAgIHNldFJlZkEocmVmKTtcbiAgICBzZXRSZWZCKHJlZik7XG4gIH07XG59O1xuXG4vLyBzcmMvY3JlYXRlLXNvcnRhYmxlLnRzXG52YXIgY3JlYXRlU29ydGFibGUgPSAoaWQsIGRhdGEgPSB7fSkgPT4ge1xuICBjb25zdCBbZG5kU3RhdGUsIHsgYWRkVHJhbnNmb3JtZXIsIHJlbW92ZVRyYW5zZm9ybWVyIH1dID0gdXNlRHJhZ0Ryb3BDb250ZXh0KCk7XG4gIGNvbnN0IFtzb3J0YWJsZVN0YXRlXSA9IHVzZVNvcnRhYmxlQ29udGV4dCgpO1xuICBjb25zdCBkcmFnZ2FibGUgPSBjcmVhdGVEcmFnZ2FibGUoaWQsIGRhdGEpO1xuICBjb25zdCBkcm9wcGFibGUgPSBjcmVhdGVEcm9wcGFibGUoaWQsIGRhdGEpO1xuICBjb25zdCBzZXROb2RlID0gY29tYmluZVJlZnMoZHJhZ2dhYmxlLnJlZiwgZHJvcHBhYmxlLnJlZik7XG4gIGNvbnN0IGluaXRpYWxJbmRleCA9ICgpID0+IHNvcnRhYmxlU3RhdGUuaW5pdGlhbElkcy5pbmRleE9mKGlkKTtcbiAgY29uc3QgY3VycmVudEluZGV4ID0gKCkgPT4gc29ydGFibGVTdGF0ZS5zb3J0ZWRJZHMuaW5kZXhPZihpZCk7XG4gIGNvbnN0IGxheW91dEJ5SWQgPSAoaWQyKSA9PiBkbmRTdGF0ZS5kcm9wcGFibGVzW2lkMl0/LmxheW91dCB8fCBudWxsO1xuICBjb25zdCBzb3J0ZWRUcmFuc2Zvcm0gPSAoKSA9PiB7XG4gICAgY29uc3QgZGVsdGEgPSBub29wVHJhbnNmb3JtKCk7XG4gICAgY29uc3QgcmVzb2x2ZWRJbml0aWFsSW5kZXggPSBpbml0aWFsSW5kZXgoKTtcbiAgICBjb25zdCByZXNvbHZlZEN1cnJlbnRJbmRleCA9IGN1cnJlbnRJbmRleCgpO1xuICAgIGlmIChyZXNvbHZlZEN1cnJlbnRJbmRleCAhPT0gcmVzb2x2ZWRJbml0aWFsSW5kZXgpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRMYXlvdXQgPSBsYXlvdXRCeUlkKGlkKTtcbiAgICAgIGNvbnN0IHRhcmdldExheW91dCA9IGxheW91dEJ5SWQoXG4gICAgICAgIHNvcnRhYmxlU3RhdGUuaW5pdGlhbElkc1tyZXNvbHZlZEN1cnJlbnRJbmRleF1cbiAgICAgICk7XG4gICAgICBpZiAoY3VycmVudExheW91dCAmJiB0YXJnZXRMYXlvdXQpIHtcbiAgICAgICAgZGVsdGEueCA9IHRhcmdldExheW91dC54IC0gY3VycmVudExheW91dC54O1xuICAgICAgICBkZWx0YS55ID0gdGFyZ2V0TGF5b3V0LnkgLSBjdXJyZW50TGF5b3V0Lnk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkZWx0YTtcbiAgfTtcbiAgY29uc3QgdHJhbnNmb3JtZXIgPSB7XG4gICAgaWQ6IFwic29ydGFibGVPZmZzZXRcIixcbiAgICBvcmRlcjogMTAwLFxuICAgIGNhbGxiYWNrOiAodHJhbnNmb3JtMikgPT4ge1xuICAgICAgY29uc3QgZGVsdGEgPSBzb3J0ZWRUcmFuc2Zvcm0oKTtcbiAgICAgIHJldHVybiB7IHg6IHRyYW5zZm9ybTIueCArIGRlbHRhLngsIHk6IHRyYW5zZm9ybTIueSArIGRlbHRhLnkgfTtcbiAgICB9XG4gIH07XG4gIG9uTW91bnQ0KCgpID0+IGFkZFRyYW5zZm9ybWVyKFwiZHJvcHBhYmxlc1wiLCBpZCwgdHJhbnNmb3JtZXIpKTtcbiAgb25DbGVhbnVwNCgoKSA9PiByZW1vdmVUcmFuc2Zvcm1lcihcImRyb3BwYWJsZXNcIiwgaWQsIHRyYW5zZm9ybWVyLmlkKSk7XG4gIGNvbnN0IHRyYW5zZm9ybSA9ICgpID0+IHtcbiAgICByZXR1cm4gKGlkID09PSBkbmRTdGF0ZS5hY3RpdmUuZHJhZ2dhYmxlSWQgJiYgIWRuZFN0YXRlLmFjdGl2ZS5vdmVybGF5ID8gZG5kU3RhdGUuZHJhZ2dhYmxlc1tpZF0/LnRyYW5zZm9ybSA6IGRuZFN0YXRlLmRyb3BwYWJsZXNbaWRdPy50cmFuc2Zvcm0pIHx8IG5vb3BUcmFuc2Zvcm0oKTtcbiAgfTtcbiAgY29uc3Qgc29ydGFibGUgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhcbiAgICAoZWxlbWVudCkgPT4ge1xuICAgICAgZHJhZ2dhYmxlKGVsZW1lbnQsICgpID0+ICh7IHNraXBUcmFuc2Zvcm06IHRydWUgfSkpO1xuICAgICAgZHJvcHBhYmxlKGVsZW1lbnQsICgpID0+ICh7IHNraXBUcmFuc2Zvcm06IHRydWUgfSkpO1xuICAgICAgY3JlYXRlRWZmZWN0NSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVHJhbnNmb3JtID0gdHJhbnNmb3JtKCk7XG4gICAgICAgIGlmICghdHJhbnNmb3Jtc0FyZUVxdWFsKHJlc29sdmVkVHJhbnNmb3JtLCBub29wVHJhbnNmb3JtKCkpKSB7XG4gICAgICAgICAgY29uc3Qgc3R5bGUgPSB0cmFuc2Zvcm1TdHlsZSh0cmFuc2Zvcm0oKSk7XG4gICAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcInRyYW5zZm9ybVwiLCBzdHlsZS50cmFuc2Zvcm0gPz8gbnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcInRyYW5zZm9ybVwiKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICB7XG4gICAgICByZWY6IHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IHNldE5vZGVcbiAgICAgIH0sXG4gICAgICB0cmFuc2Zvcm06IHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiB0cmFuc2Zvcm1cbiAgICAgIH0sXG4gICAgICBpc0FjdGl2ZURyYWdnYWJsZToge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6ICgpID0+IGRyYWdnYWJsZS5pc0FjdGl2ZURyYWdnYWJsZVxuICAgICAgfSxcbiAgICAgIGRyYWdBY3RpdmF0b3JzOiB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogKCkgPT4gZHJhZ2dhYmxlLmRyYWdBY3RpdmF0b3JzXG4gICAgICB9LFxuICAgICAgaXNBY3RpdmVEcm9wcGFibGU6IHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiAoKSA9PiBkcm9wcGFibGUuaXNBY3RpdmVEcm9wcGFibGVcbiAgICAgIH1cbiAgICB9XG4gICk7XG4gIHJldHVybiBzb3J0YWJsZTtcbn07XG5cbi8vIHNyYy9kcmFnLWRyb3AtZGVidWdnZXIudHN4XG5pbXBvcnQge1xuICBGb3IsXG4gIG1lcmdlUHJvcHMgYXMgbWVyZ2VQcm9wczIsXG4gIG9uQ2xlYW51cCBhcyBvbkNsZWFudXA1LFxuICBvbk1vdW50IGFzIG9uTW91bnQ1LFxuICBTaG93IGFzIFNob3cyXG59IGZyb20gXCJzb2xpZC1qc1wiO1xuaW1wb3J0IHsgUG9ydGFsIGFzIFBvcnRhbDIgfSBmcm9tIFwic29saWQtanMvd2ViXCI7XG52YXIgSGlnaGxpZ2h0ZXIgPSAocHJvcHMpID0+IHtcbiAgcHJvcHMgPSBtZXJnZVByb3BzMih7IGNvbG9yOiBcInJlZFwiLCBhY3RpdmU6IGZhbHNlIH0sIHByb3BzKTtcbiAgcmV0dXJuIDxkaXZcbiAgICBzdHlsZT17e1xuICAgICAgcG9zaXRpb246IFwiZml4ZWRcIixcbiAgICAgIFwicG9pbnRlci1ldmVudHNcIjogXCJub25lXCIsXG4gICAgICAuLi5sYXlvdXRTdHlsZShwcm9wcy5sYXlvdXQpLFxuICAgICAgb3V0bGluZTogXCIxcHggZGFzaGVkXCIsXG4gICAgICBcIm91dGxpbmUtd2lkdGhcIjogcHJvcHMuYWN0aXZlID8gXCI0cHhcIiA6IFwiMXB4XCIsXG4gICAgICBcIm91dGxpbmUtY29sb3JcIjogcHJvcHMuY29sb3IsXG4gICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgIGNvbG9yOiBwcm9wcy5jb2xvcixcbiAgICAgIFwiYWxpZ24taXRlbXNcIjogXCJmbGV4LWVuZFwiLFxuICAgICAgXCJqdXN0aWZ5LWNvbnRlbnRcIjogXCJmbGV4LWVuZFwiLFxuICAgICAgLi4ucHJvcHMuc3R5bGVcbiAgICB9fVxuICA+e3Byb3BzLmlkfTwvZGl2Pjtcbn07XG52YXIgRHJhZ0Ryb3BEZWJ1Z2dlciA9ICgpID0+IHtcbiAgY29uc3QgW3N0YXRlLCB7IHJlY29tcHV0ZUxheW91dHMgfV0gPSB1c2VEcmFnRHJvcENvbnRleHQoKTtcbiAgbGV0IHRpY2tpbmcgPSBmYWxzZTtcbiAgY29uc3QgdXBkYXRlID0gKCkgPT4ge1xuICAgIGlmICghdGlja2luZykge1xuICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHtcbiAgICAgICAgcmVjb21wdXRlTGF5b3V0cygpO1xuICAgICAgICB0aWNraW5nID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICAgIHRpY2tpbmcgPSB0cnVlO1xuICAgIH1cbiAgfTtcbiAgb25Nb3VudDUoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdXBkYXRlKTtcbiAgfSk7XG4gIG9uQ2xlYW51cDUoKCkgPT4ge1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdXBkYXRlKTtcbiAgfSk7XG4gIHJldHVybiA8UG9ydGFsMiBtb3VudD17ZG9jdW1lbnQuYm9keX0+XG4gICAgPEZvciBlYWNoPXtPYmplY3QudmFsdWVzKHN0YXRlLmRyb3BwYWJsZXMpfT57KGRyb3BwYWJsZSkgPT4gZHJvcHBhYmxlID8gPEhpZ2hsaWdodGVyXG4gICAgICBpZD17ZHJvcHBhYmxlLmlkfVxuICAgICAgbGF5b3V0PXtkcm9wcGFibGUubGF5b3V0fVxuICAgICAgYWN0aXZlPXtkcm9wcGFibGUuaWQgPT09IHN0YXRlLmFjdGl2ZS5kcm9wcGFibGVJZH1cbiAgICAvPiA6IG51bGx9PC9Gb3I+XG4gICAgPEZvciBlYWNoPXtPYmplY3QudmFsdWVzKHN0YXRlLmRyYWdnYWJsZXMpfT57KGRyYWdnYWJsZSkgPT4gZHJhZ2dhYmxlID8gPEhpZ2hsaWdodGVyXG4gICAgICBpZD17ZHJhZ2dhYmxlLmlkfVxuICAgICAgbGF5b3V0PXtkcmFnZ2FibGUubGF5b3V0fVxuICAgICAgYWN0aXZlPXtkcmFnZ2FibGUuaWQgPT09IHN0YXRlLmFjdGl2ZS5kcmFnZ2FibGVJZH1cbiAgICAgIGNvbG9yPVwiYmx1ZVwiXG4gICAgICBzdHlsZT17e1xuICAgICAgICBcImFsaWduLWl0ZW1zXCI6IFwiZmxleC1zdGFydFwiLFxuICAgICAgICBcImp1c3RpZnktY29udGVudFwiOiBcImZsZXgtc3RhcnRcIixcbiAgICAgICAgLi4udHJhbnNmb3JtU3R5bGUoZHJhZ2dhYmxlLnRyYW5zZm9ybSlcbiAgICAgIH19XG4gICAgLz4gOiBudWxsfTwvRm9yPlxuICAgIDxTaG93MiB3aGVuPXtzdGF0ZS5hY3RpdmUub3ZlcmxheX0ga2V5ZWQ+eyhvdmVybGF5KSA9PiA8SGlnaGxpZ2h0ZXJcbiAgICAgIGlkPXtvdmVybGF5LmlkfVxuICAgICAgbGF5b3V0PXtvdmVybGF5LmxheW91dH1cbiAgICAgIGFjdGl2ZT17dHJ1ZX1cbiAgICAgIGNvbG9yPVwib3JhbmdlXCJcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIC4uLnRyYW5zZm9ybVN0eWxlKG92ZXJsYXkudHJhbnNmb3JtKVxuICAgICAgfX1cbiAgICAvPn08L1Nob3cyPlxuICA8L1BvcnRhbDI+O1xufTtcbmV4cG9ydCB7XG4gIERyYWdEcm9wRGVidWdnZXIsXG4gIERyYWdEcm9wUHJvdmlkZXIsXG4gIERyYWdEcm9wU2Vuc29ycyxcbiAgRHJhZ092ZXJsYXksXG4gIFNvcnRhYmxlUHJvdmlkZXIsXG4gIGNsb3Nlc3RDZW50ZXIsXG4gIGNsb3Nlc3RDb3JuZXJzLFxuICBjcmVhdGVEcmFnZ2FibGUsXG4gIGNyZWF0ZURyb3BwYWJsZSxcbiAgY3JlYXRlUG9pbnRlclNlbnNvcixcbiAgY3JlYXRlU29ydGFibGUsXG4gIGxheW91dFN0eWxlLFxuICBtYXliZVRyYW5zZm9ybVN0eWxlLFxuICBtb3N0SW50ZXJzZWN0aW5nLFxuICB0cmFuc2Zvcm1TdHlsZSxcbiAgdXNlRHJhZ0Ryb3BDb250ZXh0LFxuICB1c2VTb3J0YWJsZUNvbnRleHRcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0EsU0FDRUEsS0FBSyxFQUNMQyxhQUFhLEVBQ2JDLFlBQVksRUFDWkMsVUFBVSxFQUNWQyxPQUFPLEVBQ1BDLFVBQVUsUUFDTCxVQUFVO0FBQ2pCLFNBQVNDLFdBQVcsUUFBUSxnQkFBZ0I7O0FBRTVDO0FBQ0EsSUFBSUMsTUFBTSxHQUFHLE1BQU07RUFDakJDLENBQUM7RUFDREMsQ0FBQztFQUNEQyxLQUFLO0VBQ0xDLE1BQU07RUFDTkMs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]De ÃՃ”½ÉÕáíùÁ    19AIQYaiqyÝ‰‘™¡©±¹ÁÉÑÙåáéñù    õDa4úÿÿÿ¯úþø÷h
øÅ% ú°úú±úúÃh ú¡ ø¨ øªøù0ô«ÃÂbø÷%ÀÃ¿¾    ½
¼ » º ¹øöe+÷
2ø ö%    %
% % % %    %
% % 1110ñ«Ãaø% 111
1 1 !1"1 #1$1    %1&%0ð«'Ãaø%(1) 1*!%+"1 ,#%-$1 ùªdœc%,@±eA“
                    ØA —EoúôÎH% ´ÑËA  /–xRšáAݗØý󶌗áÞқ÷„f[óØA —Eoúô