@opcua/for-node-red 2.12.0 → 2.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -1
- package/all.js +1 -1
- package/config-panel/assets/{index-QtyZbFyg.css → index-B2t8v8l8.css} +1 -1
- package/config-panel/assets/{index-Dqg7asGp.js → index-DWlTPfa9.js} +7 -7
- package/config-panel/index.html +2 -2
- package/package.json +31 -30
- package/source/OpcUa-Client2-Browse/OpcUa-Client2-Browse.html +2 -2
- package/source/OpcUa-Client2-Call/OpcUa-Client2-Call.html +2 -2
- package/source/OpcUa-Client2-Explore/OpcUa-Client2-Explore.html +2 -2
- package/source/OpcUa-Client2-ExtensionObject/OpcUa-Client2-ExtensionObject.html +2 -2
- package/source/OpcUa-Client2-HistoryRead/OpcUa-Client2-HistoryRead.css +2 -0
- package/source/OpcUa-Client2-HistoryRead/OpcUa-Client2-HistoryRead.html +270 -0
- package/source/OpcUa-Client2-HistoryRead/OpcUa-Client2-HistoryRead.js +2 -0
- package/source/OpcUa-Client2-Monitor/OpcUa-Client2-Monitor.html +3 -3
- package/source/OpcUa-Client2-MonitorEvent/OpcUa-Client2-MonitorEvent.html +2 -2
- package/source/OpcUa-Client2-Read/OpcUa-Client2-Read.html +3 -3
- package/source/OpcUa-Client2-Write/OpcUa-Client2-Write.html +2 -2
- package/source/OpcUa-Endpoint2/OpcUa-Endpoint2.html +2 -2
@@ -4,8 +4,8 @@
|
|
4
4
|
</style>
|
5
5
|
|
6
6
|
<script type="text/javascript">
|
7
|
-
function _0xdc91(){const _0x86115b=['assign','selected','nodeId','name','error','sterfive-dropdown','class','call','grey','find','$tree','/checkNodeId','2678184yPaEND','1rPiSaz','toggle','View','empty','DataType','node_label_italic','ns=0;i=61','log','height','text','elements','><i\x20class=\x22fa\x20','$combo','SeaGreen','sterfive-combo-box','addClass','<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','stringify','/browse','appendTo','Objects','parentNode','</li>','references','children','70jVsxJa','$verifyBtn',';\x22></i>','ns=0;i=35','opcualogobig.png','expandable','TypeDefinition','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','split','OPCUA\x20Monitor','10wRSdng','/walk-backward','statusCode','toggleClass','$input','displayName','json','/extractEventTypes','HasTypeDefinition','options','VariableType','.sterfive-tree\x20li','attr','subscription','apply','CadetBlue','scrollTop','_setInputValue','ns=0;i=46','SuppressedError','replaceChild','inputs','sort','offset',';\x22></i>\x20','data','expandable\x20expanded','replaceWith','relativePath','fa-object-group','HasComponent','<div\x20class=\x22spinner\x22></div>','expanded','append','suppressed','length','subTypes','placeholder','\x22\x20style=\x22color:','__parentNode','unchecked','subscriptions','input-group','nodeIds','span.custom-checkbox.checked','focus\x20click',':visible','fa-text-width','css','BrowseName','fetched\x20:\x20','<div\x20class=\x22info-text\x22></div>','value','Invalid','calc(100%\x20-\x20','fa-sliders','browseName','err','<li\x20key=\x22','baseUrl','endpoint','position','removeClass','.spinner','failure','IsForward','$dropdown','Unspecified','fa-question','isSelectable','verify','left','<li>','ns=0;i=85','dblclick','#node-input-whereClause','target','Object','#C0DEED','done','#node-input-startImmediately','referenceTypeId','<ul\x20class=\x22sterfive-tree\x22></ul>','<span\x20class=\x22cancel-button\x22>✖</span>','Forward','function','click','4253625tCoTry','checked','<ul></ul>','application/json','fetching\x20failed\x20with\x20error','eventFieldSelector','then','span.custom-checkbox','reference','top','ReferenceType','Good','currentParent','match','pageY','fa-cog','sterfive.eventFieldSelector','<li>error\x20','join','animate','.tree-text:first','Inverse','Organizes','#node-input-selectClauses','_updateSelectedFields','change',':first','_populate','fetched','throw','resolveParentNode','node-input-startImmediately','POST','opc.tcp://opcuademo.sterfive.com:26543','li\x20>\x20.tree-text','data-value','nodeAddressString','9640362oLtwJI','node','filter','OpcUa-Endpoint2','ns=0;i=34','/opcua-endpoint2','namespaceIndex','3348624mfuVEG','no-expandable','HasProperty','isTypeRef','loading','#node-input-endpoint','events','_installChildren','HasChild','#node-input-subscription','stopPropagation','clicked\x20on\x20','<div/>','i=61','element','Variable','typeDefinition','DisplayName','message','sterfive-info','width','3197034edjZed','Method','hasClass','widget','DarkOrange','\x22}><span\x20class=\x22tree-text\x22\x20title=','sterfive.nodeBrowser','_installTree','val','NodeClass','ns=0;i=47','statusText','closest','right','parentElement','browseResult','nodeClass','opcua','nodes','ObjectType','status','<button><i\x20class=\x22fa\x20fa-flask\x22></i></button>','#node-input-inputs','$toggleTreeBtn','2066449edtPxJ','!!failure!!','$inputGroup','reset','trigger','HasSubtype','</span><ul></ul></li>','9937512jWivfX','DodgerBlue','#node-input-nodeId','toString','pageX','next','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','$info','fa-list-alt','<div\x20class=\x22floating-buttons\x22></div>','endpointNode','_updateValues','hide'];_0xdc91=function(){return _0x86115b;};return _0xdc91();}function _0x2985(_0x4c5029,_0x2bba5f){const _0xdc911d=_0xdc91();return _0x2985=function(_0x298502,_0x50bf2d){_0x298502=_0x298502-0xf8;let _0xd5c1e8=_0xdc911d[_0x298502];return _0xd5c1e8;},_0x2985(_0x4c5029,_0x2bba5f);}(function(_0x80cb11,_0x202d13){const _0x3a4fcb=_0x2985,_0x54723d=_0x80cb11();while(!![]){try{const _0x29e540=parseInt(_0x3a4fcb(0x163))/0x1*(parseInt(_0x3a4fcb(0x162))/0x2)+parseInt(_0x3a4fcb(0x12a))/0x3+-parseInt(_0x3a4fcb(0x115))/0x4*(parseInt(_0x3a4fcb(0x186))/0x5)+-parseInt(_0x3a4fcb(0x10e))/0x6+-parseInt(_0x3a4fcb(0x142))/0x7+-parseInt(_0x3a4fcb(0x149))/0x8+-parseInt(_0x3a4fcb(0x1dd))/0x9*(-parseInt(_0x3a4fcb(0x17c))/0xa);if(_0x29e540===_0x202d13)break;else _0x54723d['push'](_0x54723d['shift']());}catch(_0x12ee4d){_0x54723d['push'](_0x54723d['shift']());}}}(_0xdc91,0xda6f6),(function(){'use strict';const _0x18e426=_0x2985;function _0x5ed626(_0x241746,_0x392ca5){const _0x3e1d75=_0x2985,_0x5578c7=$(_0x3e1d75(0x11a)),_0x342d32=$(_0x3e1d75(0x11e)),_0xae371d=()=>{const _0x3635a2=_0x3e1d75,_0x142cf4=_0x241746[_0x3635a2(0x13c)][_0x3635a2(0x10f)](_0x5578c7[_0x3635a2(0x132)]());_0x342d32[_0x3635a2(0x166)]();if(!_0x142cf4||!_0x142cf4[_0x3635a2(0x1af)])return;if(_0x142cf4[_0x3635a2(0x1af)])for(const _0x2b7cab of _0x142cf4['subscriptions']){const _0x14b290=_0x2b7cab[_0x3635a2(0x159)]||_0x2b7cab['id'];$('<option/>',{'value':_0x2b7cab['id'],'label':_0x14b290,'selected':_0x2b7cab['id']===_0x392ca5[_0x3635a2(0x193)]})[_0x3635a2(0x16c)](_0x14b290)[_0x3635a2(0x176)](_0x342d32);}};_0xae371d(),_0x342d32['on'](_0x3e1d75(0x1b3),()=>{_0xae371d();}),_0x5578c7['on'](_0x3e1d75(0x102),()=>{_0xae371d();});}function _0x30af8f(_0x44d2a8,_0x6d0944,_0x22e762,_0x1995e9){function _0x36e5a3(_0x348c81){return _0x348c81 instanceof _0x22e762?_0x348c81:new _0x22e762(function(_0x2d02f0){_0x2d02f0(_0x348c81);});}return new(_0x22e762||(_0x22e762=Promise))(function(_0x2d432e,_0x30a00a){const _0x466a7a=_0x2985;function _0xc37573(_0x1abe11){const _0x3f7681=_0x2985;try{_0x29f0e2(_0x1995e9[_0x3f7681(0x14e)](_0x1abe11));}catch(_0x544918){_0x30a00a(_0x544918);}}function _0x23bca1(_0x55abea){const _0x1a49dc=_0x2985;try{_0x29f0e2(_0x1995e9[_0x1a49dc(0x106)](_0x55abea));}catch(_0x4f60be){_0x30a00a(_0x4f60be);}}function _0x29f0e2(_0x5a13de){const _0x3d52d3=_0x2985;_0x5a13de[_0x3d52d3(0x1d5)]?_0x2d432e(_0x5a13de[_0x3d52d3(0x1ba)]):_0x36e5a3(_0x5a13de[_0x3d52d3(0x1ba)])[_0x3d52d3(0x1e3)](_0xc37573,_0x23bca1);}_0x29f0e2((_0x1995e9=_0x1995e9[_0x466a7a(0x194)](_0x44d2a8,_0x6d0944||[]))['next']());});}typeof SuppressedError===_0x18e426(0x1db)?SuppressedError:function(_0x586409,_0x5f1ff8,_0x43edbd){const _0x44f1e3=_0x18e426;var _0x54be8b=new Error(_0x43edbd);return _0x54be8b[_0x44f1e3(0x159)]=_0x44f1e3(0x199),_0x54be8b[_0x44f1e3(0x15a)]=_0x586409,_0x54be8b[_0x44f1e3(0x1a8)]=_0x5f1ff8,_0x54be8b;};const _0x30f6c4=_0x18e426(0x17f),_0x295ee6=_0x18e426(0x169),_0x4f9ebb=_0x18e426(0x134),_0x426adb=_0x18e426(0x198),_0x5e955f=_0x18e426(0x112),_0x26a21d='ns=0;i=45',_0x4f3afe='ns=0;i=40';var _0x1eaffd;(function(_0x2ce145){const _0x233c75=_0x18e426;_0x2ce145[_0x2ce145['Forward']=0x0]=_0x233c75(0x1da),_0x2ce145[_0x2ce145[_0x233c75(0xfe)]=0x1]='Inverse',_0x2ce145[_0x2ce145['Both']=0x2]='Both',_0x2ce145[_0x2ce145[_0x233c75(0x1bb)]=0x3]='Invalid';}(_0x1eaffd||(_0x1eaffd={})));var _0x26c65b;(function(_0x58e343){const _0x5de4cf=_0x18e426;_0x58e343[_0x58e343[_0x5de4cf(0x1c9)]=0x0]=_0x5de4cf(0x1c9),_0x58e343[_0x58e343[_0x5de4cf(0x1d3)]=0x1]=_0x5de4cf(0x1d3),_0x58e343[_0x58e343[_0x5de4cf(0x124)]=0x2]=_0x5de4cf(0x124),_0x58e343[_0x58e343[_0x5de4cf(0x12b)]=0x4]='Method',_0x58e343[_0x58e343[_0x5de4cf(0x13d)]=0x8]=_0x5de4cf(0x13d),_0x58e343[_0x58e343[_0x5de4cf(0x190)]=0x10]='VariableType',_0x58e343[_0x58e343[_0x5de4cf(0x1e7)]=0x20]='ReferenceType',_0x58e343[_0x58e343[_0x5de4cf(0x167)]=0x40]=_0x5de4cf(0x167),_0x58e343[_0x58e343[_0x5de4cf(0x165)]=0x80]='View';}(_0x26c65b||(_0x26c65b={})));var _0x3ca0a3;(function(_0x3e08a8){const _0x5c45a0=_0x18e426;_0x3e08a8[_0x3e08a8['Object']=0x1]=_0x5c45a0(0x1d3),_0x3e08a8[_0x3e08a8[_0x5c45a0(0x124)]=0x2]=_0x5c45a0(0x124),_0x3e08a8[_0x3e08a8[_0x5c45a0(0x12b)]=0x4]=_0x5c45a0(0x12b),_0x3e08a8[_0x3e08a8['ObjectType']=0x8]=_0x5c45a0(0x13d),_0x3e08a8[_0x3e08a8[_0x5c45a0(0x190)]=0x10]=_0x5c45a0(0x190),_0x3e08a8[_0x3e08a8[_0x5c45a0(0x1e7)]=0x20]=_0x5c45a0(0x1e7),_0x3e08a8[_0x3e08a8['DataType']=0x40]=_0x5c45a0(0x167),_0x3e08a8[_0x3e08a8[_0x5c45a0(0x165)]=0x80]='View';}(_0x3ca0a3||(_0x3ca0a3={})));var _0x3ac1a2;(function(_0x6ef90f){const _0x25e0da=_0x18e426;_0x6ef90f[_0x6ef90f[_0x25e0da(0x1e7)]=0x1]=_0x25e0da(0x1e7),_0x6ef90f[_0x6ef90f[_0x25e0da(0x1c7)]=0x2]=_0x25e0da(0x1c7),_0x6ef90f[_0x6ef90f[_0x25e0da(0x133)]=0x4]=_0x25e0da(0x133),_0x6ef90f[_0x6ef90f[_0x25e0da(0x1b7)]=0x8]=_0x25e0da(0x1b7),_0x6ef90f[_0x6ef90f[_0x25e0da(0x126)]=0x10]=_0x25e0da(0x126),_0x6ef90f[_0x6ef90f['TypeDefinition']=0x20]=_0x25e0da(0x182);}(_0x3ac1a2||(_0x3ac1a2={})));function _0x363a15(_0x22448b){const _0x5aaab7=_0x18e426;switch(_0x22448b){case'Organizes':return _0x30f6c4;case _0x5aaab7(0x117):return _0x426adb;case _0x5aaab7(0x1a4):return _0x4f9ebb;case _0x5aaab7(0x11d):return _0x5e955f;case _0x5aaab7(0x147):return _0x26a21d;case _0x5aaab7(0x18e):return _0x4f3afe;}}const _0x44ca59=_0x427623=>{const _0x4a7958=_0x18e426;switch(_0x427623['nodeClass']){case _0x4a7958(0x1d3):if(_0x427623[_0x4a7958(0x1d7)]===_0x30f6c4);if(_0x427623[_0x4a7958(0x125)]===_0x295ee6||_0x427623[_0x4a7958(0x1d7)]===_0x4a7958(0x122))return{'icon':'fa-folder','color':'rgba(61,\x2060,\x204,\x200.525)'};return{'icon':_0x4a7958(0x1a3),'color':_0x4a7958(0x170)};case _0x4a7958(0x124):if(_0x427623['referenceTypeId']===_0x4f9ebb)return{'icon':_0x4a7958(0x151),'color':'SteelBlue'};else return _0x427623['referenceTypeId']===_0x426adb?{'icon':'fa-list-alt','color':_0x4a7958(0x14a)}:{'icon':_0x4a7958(0x151),'color':_0x4a7958(0x195)};case _0x4a7958(0x12b):return{'icon':_0x4a7958(0xf8),'color':'SandyBrown'};case _0x4a7958(0x13d):return{'icon':_0x4a7958(0x1a3),'color':_0x4a7958(0x12e)};case _0x4a7958(0x190):return{'icon':_0x4a7958(0x1bd),'color':_0x4a7958(0x12e)};case _0x4a7958(0x167):return{'icon':_0x4a7958(0x1b5),'color':_0x4a7958(0x195)};}return{'icon':_0x4a7958(0x1ca),'color':_0x4a7958(0x15e)};},_0x107df4=(_0x55c761,_0x2f413c,_0xfe24e6)=>_0x30af8f(void 0x0,[_0x55c761,_0x2f413c,_0xfe24e6],void 0x0,function*({endpointNode:_0x3dd2fb,endpoint:_0x366078,baseUrl:_0x301ea5},_0x1df096,_0x37011c){const _0x1383d0=_0x18e426,_0x493fdf=_0x301ea5+_0x1383d0(0x113),_0xf001a4=_0x493fdf+_0x1383d0(0x175),_0x5fab1b=Object['assign'](Object[_0x1383d0(0x156)]({},_0x37011c),{'nodeId':_0x1df096,'resultMask':0x3f}),_0xc6e9cf=yield fetch(_0xf001a4,{'method':_0x1383d0(0x109),'body':JSON[_0x1383d0(0x174)]({'endpointNode':_0x3dd2fb,'endpoint':_0x366078,'browseDescription':_0x5fab1b}),'headers':{'Content-Type':_0x1383d0(0x1e0)}});if(_0xc6e9cf[_0x1383d0(0x13e)]!==0xc8)return console[_0x1383d0(0x16a)]('fetching\x20failed\x20with\x20error',_0xc6e9cf['status'],_0xc6e9cf['statusText']),{'references':[]};const _0xedf3d=yield _0xc6e9cf[_0x1383d0(0x18c)](),_0x3b6aca=_0xedf3d[_0x1383d0(0x139)]['references']||[];return{'references':_0x3b6aca};}),_0x34e76e={'referenceTypeId':_0x363a15(_0x18e426(0x11d)),'includeSubtypes':!![],'browseDirection':_0x1eaffd['Forward'],'nodeClassMask':_0x26c65b['Variable']|_0x26c65b['Object']|_0x26c65b[_0x18e426(0x12b)],'resultMask':0x3f},_0x54c85b={'referenceTypeId':_0x363a15(_0x18e426(0xff)),'includeSubtypes':!![],'browseDirection':_0x1eaffd['Forward'],'nodeClassMask':_0x26c65b[_0x18e426(0x124)]|_0x26c65b[_0x18e426(0x1d3)]|_0x26c65b[_0x18e426(0x12b)],'resultMask':0x3f},_0x4c51d6=(_0x5b0779,_0x3aaf32)=>_0x30af8f(void 0x0,[_0x5b0779,_0x3aaf32],void 0x0,function*({endpointNode:_0x16bef9,endpoint:_0x22c0e9,baseUrl:_0x4363b6},{nodeId:_0x1286d1,rootNodeId:_0x6627dd,isType:_0x43c06a}){const _0x609582=_0x18e426,_0x36cdf1=_0x4363b6+_0x609582(0x113),_0x1e0110=_0x36cdf1+_0x609582(0x187),_0x1bd303=yield fetch(_0x1e0110,{'method':_0x609582(0x109),'body':JSON['stringify']({'endpointNode':_0x16bef9,'endpoint':_0x22c0e9,'nodeId':_0x1286d1,'rootNodeId':_0x6627dd,'isType':_0x43c06a}),'headers':{'Content-Type':_0x609582(0x1e0)}});if(_0x1bd303['status']!==0xc8)return null;const _0x58c7e7=yield _0x1bd303[_0x609582(0x18c)]();return _0x58c7e7['browsePath'];}),_0x119297=(_0x2a4947,_0x3c954a,_0x55a706)=>_0x30af8f(void 0x0,[_0x2a4947,_0x3c954a,_0x55a706],void 0x0,function*({endpointNode:_0xac9c82,endpoint:_0x51ec63,baseUrl:_0x5a1241},_0x1e778d,_0x3f967b){const _0x3368e1=_0x18e426,_0x35a1bf=_0x5a1241+'/opcua-endpoint2',_0xf8be9c=_0x35a1bf+_0x3368e1(0x161),_0x168d21=_0x1e778d[_0x3368e1(0x132)](),_0x192523=yield fetch(_0xf8be9c,{'method':_0x3368e1(0x109),'body':JSON[_0x3368e1(0x174)]({'endpointNode':_0xac9c82,'endpoint':_0x51ec63,'nodeId':_0x168d21}),'headers':{'Content-Type':_0x3368e1(0x1e0)}}),_0x14879e=(_0x596134,_0x254ae1)=>{const _0x39aa8d=_0x3368e1;_0x3f967b[_0x39aa8d(0x16c)](_0x596134)[_0x39aa8d(0x172)](_0x39aa8d(0x128))[_0x39aa8d(0x172)](_0x254ae1),_0x3f967b['show'](),setTimeout(()=>{const _0x1dac00=_0x39aa8d;_0x3f967b[_0x1dac00(0x1c4)](_0x254ae1),_0x3f967b[_0x1dac00(0x155)]();},0xbb8);},_0x183aac=yield _0x192523[_0x3368e1(0x18c)]();_0x192523[_0x3368e1(0x13e)]!==0xc8?_0x14879e(_0x3368e1(0x143)+_0x168d21,_0x3368e1(0x1c6)):_0x183aac[_0x3368e1(0x188)][_0x3368e1(0x1ea)](/Good/)?(_0x1e778d[_0x3368e1(0x132)](_0x183aac[_0x3368e1(0x10d)]),_0x1e778d[_0x3368e1(0x146)](_0x3368e1(0x102)),_0x14879e(_0x3368e1(0x1e8),'ok')):(_0x1e778d['val'](''+_0x168d21),_0x14879e(_0x183aac[_0x3368e1(0x188)]+'\x20'+_0x192523[_0x3368e1(0x135)],_0x3368e1(0x1c6)));});function _0x4863f7(_0x460038,_0x1f3822){return _0x30af8f(this,void 0x0,void 0x0,function*(){const _0x49f50d=_0x2985,_0x2f097d=_0x460038[_0x49f50d(0x19f)](_0x49f50d(0x1ba)),_0x31a632=yield _0x107df4(_0x1f3822,_0x2f097d,_0x34e76e),_0x3c0c4a=yield _0x107df4(_0x1f3822,_0x2f097d,_0x54c85b);return{'references':[..._0x31a632['references'],..._0x3c0c4a[_0x49f50d(0x17a)]]};});}const _0x4e7c87={'referenceTypeId':_0x363a15(_0x18e426(0x147)),'includeSubtypes':!![],'browseDirection':_0x1eaffd['Forward'],'nodeClassMask':_0x26c65b['ReferenceType']|_0x26c65b['ObjectType']|_0x26c65b[_0x18e426(0x167)]|_0x26c65b[_0x18e426(0x190)],'resultMask':0x3f};function _0x4c17df(_0x53c668,_0x303db5){return _0x30af8f(this,void 0x0,void 0x0,function*(){const _0x28737d=_0x53c668['data']('value'),_0x163b9d=yield _0x107df4(_0x303db5,_0x28737d,_0x4e7c87);return _0x163b9d;});}const _0x515fc6=_0x48097d=>{const _0x1890ac=_0x18e426;var _0xf0789c,_0x31f674,_0x53e9c4,_0x538040;if(!_0x48097d||!_0x48097d['nodeId']){const _0x48ac2d=$(_0x1890ac(0x183));return _0x48ac2d;}const _0x4da879=_0x48097d[_0x1890ac(0x158)][_0x1890ac(0x14c)](),_0xb18f09=((_0xf0789c=_0x48097d['displayName'])===null||_0xf0789c===void 0x0?void 0x0:_0xf0789c['text'])||((_0x31f674=_0x48097d[_0x1890ac(0x1be)])===null||_0x31f674===void 0x0?void 0x0:_0x31f674['name'])||_0x48097d[_0x1890ac(0x158)][_0x1890ac(0x14c)](),{icon:_0x517b20,color:_0x3bfcc8}=_0x44ca59(_0x48097d),_0x29edd6='('+_0x48097d[_0x1890ac(0x158)][_0x1890ac(0x14c)]()+')\x20'+(((_0x53e9c4=_0x48097d[_0x1890ac(0x1be)])===null||_0x53e9c4===void 0x0?void 0x0:_0x53e9c4[_0x1890ac(0x159)])||((_0x538040=_0x48097d['displayName'])===null||_0x538040===void 0x0?void 0x0:_0x538040[_0x1890ac(0x16c)])||''),_0x42ae90=$(_0x1890ac(0x1c0)+_0x48097d[_0x1890ac(0x158)][_0x1890ac(0x14c)]()+_0x1890ac(0x12f)+_0x29edd6+_0x1890ac(0x16e)+_0x517b20+_0x1890ac(0x1ac)+_0x3bfcc8+_0x1890ac(0x19e)+_0xb18f09+_0x1890ac(0x148));return _0x42ae90['addClass']('expandable'),_0x42ae90[_0x1890ac(0x19f)]('value',_0x4da879),_0x42ae90[_0x1890ac(0x19f)](_0x1890ac(0x1e5),_0x48097d),_0x42ae90;},_0x3f7d67=(_0x4c4728,_0xcdf156)=>{return _0xcdf156['find']('li[key=\x22'+_0x4c4728+'\x22]');},_0x3b1586=(_0x2b49c0,_0x2de9f1)=>{const _0x1436d9=_0x18e426;_0x2b49c0[_0x1436d9(0x160)]['find'](_0x1436d9(0x10b))[_0x1436d9(0x1c4)](_0x1436d9(0x157)),_0x2de9f1[_0x1436d9(0x15f)](_0x1436d9(0xfd))['addClass'](_0x1436d9(0x157));},_0x2e481d=(_0x40f796,_0x4c7c7f,_0x37b52a)=>_0x30af8f(void 0x0,void 0x0,void 0x0,function*(){const _0x22dc15=_0x18e426;let _0x372baa=_0x37b52a[_0x22dc15(0x17b)](_0x22dc15(0x103));_0x4c7c7f[_0x22dc15(0x1a2)][_0x22dc15(0x16d)]||[];const _0x41bab7=_0x4c7c7f[_0x22dc15(0x1b1)]||[];if(_0x41bab7[_0x22dc15(0x1a9)]===0x0)return;for(const _0x11c790 of _0x41bab7){_0x372baa[_0x22dc15(0x12c)](_0x22dc15(0x181))&&(yield _0x4c5cd7(_0x40f796,_0x372baa));const _0x4c6a22=_0x3f7d67(_0x11c790,_0x372baa);if(_0x4c6a22[_0x22dc15(0x1a9)]===0x0)return;_0x372baa=_0x4c6a22;}_0x3b1586(_0x40f796,_0x372baa),_0x31315e(_0x40f796[_0x22dc15(0x1c8)],_0x372baa);});function _0x31315e(_0x67ca40,_0x124fd0){const _0x51feb0=_0x18e426,_0x921e7c=_0x124fd0[_0x51feb0(0x1c3)]()[_0x51feb0(0x1e6)],_0x17e6cb=_0x67ca40[_0x51feb0(0x196)]();if(_0x17e6cb==undefined)return;const _0x31bfec=_0x17e6cb+_0x921e7c-_0x67ca40[_0x51feb0(0x16b)]()/0x2+_0x124fd0[_0x51feb0(0x16b)]()/0x2;_0x67ca40[_0x51feb0(0xfc)]({'scrollTop':_0x31bfec},0x1f4);}const _0x7b9cf9=(_0x3c179e,_0x2861cf)=>_0x30af8f(void 0x0,void 0x0,void 0x0,function*(){const _0x5f379f=_0x18e426,_0x463381=_0x3c179e['$input']['val'](),_0x3f51e5={'nodeId':_0x463381,'rootNodeId':_0x2861cf[_0x5f379f(0x158)],'isType':_0x3c179e['options'][_0x5f379f(0x118)]||![]},_0x297893=_0x291d2e(_0x3c179e),_0x23cc57=yield _0x4c51d6(_0x297893,_0x3f51e5);if(!_0x23cc57)return;yield _0x2e481d(_0x3c179e,_0x23cc57,_0x3c179e[_0x5f379f(0x160)]);});function _0x163d87(_0x3ea3d0,_0x36ebeb,_0x31dcbd,_0x3114be){return _0x30af8f(this,void 0x0,void 0x0,function*(){const _0x528983=_0x2985;if(_0x36ebeb[_0x528983(0x12c)](_0x528983(0x105))){console[_0x528983(0x16a)]('already\x20fetched');return;}if(_0x36ebeb[_0x528983(0x12c)](_0x528983(0x119))){console['log']('already\x20loading');return;}_0x36ebeb[_0x528983(0x172)]('loading'),_0x36ebeb['append'](_0x528983(0x1a5));try{_0x36ebeb[_0x528983(0x17b)]('ul')[_0x528983(0x166)]();const {references:_0x5dfe1c}=yield _0x31dcbd(_0x36ebeb,_0x3114be);for(const _0x4d049c of _0x5dfe1c){if(_0x3ea3d0[_0x528983(0x18f)][_0x528983(0x110)]&&!_0x3ea3d0[_0x528983(0x18f)][_0x528983(0x110)](_0x4d049c))continue;const _0x1abab4=_0x515fc6(_0x4d049c);_0x36ebeb['children']('ul')[_0x528983(0x1a7)](_0x1abab4);}_0x36ebeb[_0x528983(0x172)](_0x528983(0x105));}catch(_0x3edb2e){_0x36ebeb['children']('ul')[_0x528983(0x1a7)](_0x528983(0xfa)+_0x3edb2e[_0x528983(0x127)]+_0x528983(0x179)),console[_0x528983(0x16a)](_0x528983(0x1bf),_0x3edb2e);}_0x36ebeb[_0x528983(0x15f)](_0x528983(0x1c5))['remove'](),_0x36ebeb[_0x528983(0x1c4)]('loading');});}function _0x291d2e(_0x494b17){const _0x320d58=_0x18e426,_0x10feb3={'baseUrl':_0x494b17[_0x320d58(0x18f)][_0x320d58(0x1c1)],'endpointNode':typeof _0x494b17['options'][_0x320d58(0x153)]===_0x320d58(0x1db)?_0x494b17['options'][_0x320d58(0x153)]():_0x494b17[_0x320d58(0x18f)][_0x320d58(0x153)],'endpoint':typeof _0x494b17[_0x320d58(0x18f)][_0x320d58(0x1c2)]===_0x320d58(0x1db)?_0x494b17['options']['endpoint']():_0x494b17[_0x320d58(0x18f)][_0x320d58(0x1c2)]};return _0x10feb3;}function _0x4c5cd7(_0x1ce03b,_0x2e865f){return _0x30af8f(this,void 0x0,void 0x0,function*(){const _0x104e7a=_0x2985;if(_0x2e865f[_0x104e7a(0x12c)](_0x104e7a(0x105))){_0x2e865f['removeClass']('expandable')[_0x104e7a(0x172)](_0x104e7a(0x1a6)),_0x2e865f[_0x104e7a(0x17b)]('ul')[_0x104e7a(0x164)]();return;}const _0x50ba07=_0x291d2e(_0x1ce03b),_0x52cbf5=!_0x1ce03b[_0x104e7a(0x18f)]['isTypeRef']?_0x4863f7:_0x4c17df;try{yield _0x163d87(_0x1ce03b,_0x2e865f,_0x52cbf5,_0x50ba07),_0x2e865f[_0x104e7a(0x1c4)](_0x104e7a(0x181))[_0x104e7a(0x172)](_0x104e7a(0x1a6));}catch(_0x799b6){_0x2e865f[_0x104e7a(0x1c4)](_0x104e7a(0x181))['addClass'](_0x104e7a(0x1a6)),console['log'](_0x104e7a(0x15a),_0x799b6);}});}const _0x298c40=()=>{const _0x7f960a=_0x18e426;$[_0x7f960a(0x12d)](_0x7f960a(0x130),{'options':{'endpointNode':()=>({'endpoint':_0x7f960a(0x10a)}),'endpoint':()=>undefined,'parentNode':()=>({'browseName':{'namespaceIndex':0x0,'name':_0x7f960a(0x177)},'nodeClass':_0x7f960a(0x1d3),'nodeId':_0x7f960a(0x1cf),'displayName':{'text':_0x7f960a(0x177)},'typeDefinition':_0x295ee6}),'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x30af8f(this,void 0x0,void 0x0,function*(){const _0xe90889=_0x2985,_0x266275=this;if(!_0x266275[_0xe90889(0x1ad)]){const _0x181a50=typeof _0x266275[_0xe90889(0x18f)][_0xe90889(0x178)]===_0xe90889(0x1db)?_0x266275[_0xe90889(0x18f)][_0xe90889(0x178)][_0xe90889(0x15d)](_0x266275):_0x266275[_0xe90889(0x18f)][_0xe90889(0x178)];if(_0x181a50 instanceof Promise){const _0x66698d=yield _0x181a50;_0x266275['__parentNode']=_0x66698d;}else _0x266275['__parentNode']=_0x181a50;}return _0x266275[_0xe90889(0x1ad)];});},'reset'(){return _0x30af8f(this,void 0x0,void 0x0,function*(){const _0x391da6=_0x2985,_0x2247c1=this,_0x11a424=_0x2247c1;_0x11a424[_0x391da6(0x1ad)]=undefined,_0x2247c1[_0x391da6(0x160)][_0x391da6(0x166)]();const _0x1ba408=yield this[_0x391da6(0x107)](),_0x1ce4ab=_0x515fc6(_0x1ba408);_0x2247c1[_0x391da6(0x160)]['append'](_0x1ce4ab),_0x2247c1['currentParent']=_0x1ba408;});},'verify'(){const _0x29ec3e=_0x7f960a,_0x2689fd=this,_0x5978c9=_0x291d2e(_0x2689fd);_0x119297(_0x5978c9,_0x2689fd['$input'],_0x2689fd[_0x29ec3e(0x150)]);},'_create'(){const _0x571ead=_0x7f960a,_0x3ce4d0=this;_0x3ce4d0['$input']=this[_0x571ead(0x123)],_0x3ce4d0[_0x571ead(0x16f)]=$(_0x571ead(0x121)),_0x3ce4d0[_0x571ead(0x16f)][_0x571ead(0x172)](_0x571ead(0x171)),this['element'][_0x571ead(0x1a1)](_0x3ce4d0[_0x571ead(0x16f)]),_0x3ce4d0[_0x571ead(0x144)]=$('<div/>')[_0x571ead(0x172)](_0x571ead(0x1b0)),_0x3ce4d0['$combo'][_0x571ead(0x1a7)](_0x3ce4d0[_0x571ead(0x144)]),_0x3ce4d0[_0x571ead(0x144)][_0x571ead(0x1a7)](_0x3ce4d0['$input']),_0x3ce4d0[_0x571ead(0x141)]=$(_0x571ead(0x173)),_0x3ce4d0[_0x571ead(0x144)][_0x571ead(0x1a7)](_0x3ce4d0['$toggleTreeBtn']),_0x3ce4d0[_0x571ead(0x141)]['on'](_0x571ead(0x1dc),function(){return _0x30af8f(this,void 0x0,void 0x0,function*(){const _0x590ab1=_0x2985;var _0x5d1d99;let _0x1ec6e0=![],_0x337d06;!_0x3ce4d0[_0x590ab1(0x1c8)]['is'](_0x590ab1(0x1b4))&&(_0x3ce4d0[_0x590ab1(0x150)][_0x590ab1(0x155)](),_0x337d06=yield _0x3ce4d0[_0x590ab1(0x107)](),(_0x337d06!==_0x3ce4d0[_0x590ab1(0x1e9)]||((_0x5d1d99=_0x3ce4d0[_0x590ab1(0x1e9)])===null||_0x5d1d99===void 0x0?void 0x0:_0x5d1d99[_0x590ab1(0x158)])!==_0x337d06['nodeId'])&&(yield _0x3ce4d0[_0x590ab1(0x145)]()),_0x1ec6e0=!![]),_0x3ce4d0[_0x590ab1(0x1c8)][_0x590ab1(0x164)](),_0x1ec6e0&&(yield _0x7b9cf9(_0x3ce4d0,_0x337d06));});}),_0x3ce4d0[_0x571ead(0x17d)]=$(_0x571ead(0x13f)),_0x3ce4d0[_0x571ead(0x144)][_0x571ead(0x1a7)](_0x3ce4d0[_0x571ead(0x17d)]),_0x3ce4d0[_0x571ead(0x17d)]['on'](_0x571ead(0x1dc),()=>{const _0x105208=_0x571ead;this[_0x105208(0x1cc)]();});!_0x3ce4d0[_0x571ead(0x18a)][_0x571ead(0x192)](_0x571ead(0x1ab))&&_0x3ce4d0[_0x571ead(0x18a)][_0x571ead(0x192)](_0x571ead(0x1ab),_0x571ead(0x14f));_0x3ce4d0[_0x571ead(0x150)]=$(_0x571ead(0x1b9)),_0x3ce4d0[_0x571ead(0x150)]['hide'](),_0x3ce4d0[_0x571ead(0x1c8)]=$(_0x571ead(0x121))['addClass'](_0x571ead(0x15b))[_0x571ead(0x155)](),_0x3ce4d0['$combo']['append'](_0x3ce4d0[_0x571ead(0x150)]),_0x3ce4d0['$combo'][_0x571ead(0x1a7)](_0x3ce4d0['$dropdown']),_0x3ce4d0[_0x571ead(0x160)]=$('<ul\x20class=\x22sterfive-tree\x22></ul>')[_0x571ead(0x176)](_0x3ce4d0[_0x571ead(0x1c8)]),this[_0x571ead(0x145)]();const _0x587262=(_0x54e97b,_0x7bb0c0)=>{const _0x4ca01a=_0x571ead,_0x2dd31b=0x14,_0x4ac1d5=0x14,_0xac4d8=_0x54e97b[_0x4ca01a(0x19d)](),_0x39f772=_0x7bb0c0;if(_0x39f772[_0x4ca01a(0x14d)]>=_0xac4d8['left']&&_0x39f772[_0x4ca01a(0x14d)]<=_0xac4d8[_0x4ca01a(0x1cd)]+_0x2dd31b&&_0x39f772['pageY']>=_0xac4d8[_0x4ca01a(0x1e6)]&&_0x39f772[_0x4ca01a(0x1eb)]<=_0xac4d8['top']+_0x4ac1d5)return!![];return![];},_0x166eee=_0xe225f7=>_0x30af8f(this,void 0x0,void 0x0,function*(){const _0x48fd32=_0x571ead;if(_0xe225f7[_0x48fd32(0x12c)](_0x48fd32(0x181)))_0x4c5cd7(_0x3ce4d0,_0xe225f7);else{if(_0xe225f7[_0x48fd32(0x12c)](_0x48fd32(0x1a6)))_0xe225f7[_0x48fd32(0x17b)]('ul')[_0x48fd32(0x164)](),_0xe225f7[_0x48fd32(0x189)](_0x48fd32(0x1a0));else{if(_0xe225f7[_0x48fd32(0x17b)]('ul')[_0x48fd32(0x17b)]()[_0x48fd32(0x1a9)]>0x0)_0xe225f7[_0x48fd32(0x17b)]('ul')[_0x48fd32(0x164)](),_0xe225f7['toggleClass'](_0x48fd32(0x1a0));else;}}});_0x3ce4d0[_0x571ead(0x160)]['on'](_0x571ead(0x1d0),'li',function(_0x3e720c){const _0x59613f=_0x571ead;var _0xe9e91a,_0x1473a4;_0x3e720c[_0x59613f(0x11f)]();let _0x5df816=$(this);if(_0x587262(_0x5df816,_0x3e720c))_0x166eee(_0x5df816);else{const _0x35cb18=_0x5df816[_0x59613f(0x19f)](_0x59613f(0x1ba)),_0x11a5dc=_0x5df816['data'](_0x59613f(0x1e5));if(_0x3ce4d0[_0x59613f(0x18f)][_0x59613f(0x1cb)]&&!_0x3ce4d0[_0x59613f(0x18f)][_0x59613f(0x1cb)](_0x11a5dc))return;_0x3ce4d0['$input'][_0x59613f(0x19f)](_0x59613f(0x1e5),_0x11a5dc);const _0x927e2a=((_0xe9e91a=_0x11a5dc[_0x59613f(0x18b)])===null||_0xe9e91a===void 0x0?void 0x0:_0xe9e91a[_0x59613f(0x16c)])||((_0x1473a4=_0x11a5dc[_0x59613f(0x1be)])===null||_0x1473a4===void 0x0?void 0x0:_0x1473a4[_0x59613f(0x159)])||_0x11a5dc['nodeId']['toString'](),_0xe30c4c='['+_0x927e2a+']('+_0x35cb18+')';_0x3ce4d0[_0x59613f(0x18a)][_0x59613f(0x132)](_0xe30c4c),_0x3ce4d0['$input'][_0x59613f(0x146)]('change'),_0x3ce4d0[_0x59613f(0x1c8)][_0x59613f(0x155)]();}}),_0x3ce4d0['$tree']['on'](_0x571ead(0x1dc),'li',function(_0x309f4e){const _0x8bf6bb=_0x571ead;_0x309f4e[_0x8bf6bb(0x11f)]();let _0xc43514=$(this);_0x587262(_0xc43514,_0x309f4e)&&_0x166eee(_0xc43514),_0x3b1586(_0x3ce4d0,_0xc43514);}),$(document)['on']('click',function(_0x2adf56){const _0x2b8731=_0x571ead;!$(_0x2adf56['target'])['closest'](_0x3ce4d0[_0x2b8731(0x16f)])['length']&&_0x3ce4d0['$dropdown']['hide']();});}});},_0x197b17=_0x317080=>{const _0x117afc=_0x18e426;var _0x598b11,_0x2c5f60,_0x5bf912;if(!_0x317080){const _0xc74ebb=$(_0x117afc(0x183));return _0xc74ebb;}const _0x4acb92=_0x317080[_0x117afc(0x158)][_0x117afc(0x14c)]();let _0x54c915=((_0x598b11=_0x317080[_0x117afc(0x18b)])===null||_0x598b11===void 0x0?void 0x0:_0x598b11[_0x117afc(0x16c)])||((_0x2c5f60=_0x317080[_0x117afc(0x1be)])===null||_0x2c5f60===void 0x0?void 0x0:_0x2c5f60[_0x117afc(0x159)])||_0x317080[_0x117afc(0x158)][_0x117afc(0x14c)](),_0x673877=(_0x5bf912=_0x317080[_0x117afc(0x1be)])===null||_0x5bf912===void 0x0?void 0x0:_0x5bf912[_0x117afc(0x114)];_0x54c915+=_0x673877!==undefined&&_0x317080['nodeClass']['match'](/Type/)?'\x20(ns='+_0x673877+')':'';const {icon:_0x53fc8e,color:_0xbe44fc}=_0x44ca59(_0x317080),_0x110e49=$(_0x117afc(0x1ce));if(_0x317080[_0x117afc(0x13a)]===_0x117afc(0x124)){const _0x5d1103=$('<span\x20class=\x22custom-checkbox\x20unchecked\x22></span>');_0x110e49[_0x117afc(0x1a7)](_0x5d1103),_0x5d1103['on'](_0x117afc(0x1dc),function(){const _0x1fd7ac=_0x117afc;_0x5d1103[_0x1fd7ac(0x12c)](_0x1fd7ac(0x1ae))?_0x5d1103[_0x1fd7ac(0x1c4)](_0x1fd7ac(0x1ae))[_0x1fd7ac(0x172)](_0x1fd7ac(0x1de)):_0x5d1103[_0x1fd7ac(0x1c4)](_0x1fd7ac(0x1de))[_0x1fd7ac(0x172)]('unchecked');});}return _0x110e49[_0x117afc(0x1a7)]($('<i\x20class=\x22fa\x20'+_0x53fc8e+_0x117afc(0x1ac)+_0xbe44fc+_0x117afc(0x17e)+_0x54c915+_0x117afc(0x1df))),_0x110e49['addClass'](_0x117afc(0x181)),_0x110e49[_0x117afc(0x19f)]('value',_0x4acb92),_0x110e49['data'](_0x117afc(0x1e5),_0x317080),_0x110e49;},_0x1e1aea=()=>{const _0x33a736=_0x18e426;$[_0x33a736(0x12d)](_0x33a736(0xf9),{'options':{'endpointNode':()=>({'endpoint':_0x33a736(0x10a)}),'endpoint':()=>undefined,'baseUrl':''},'_populate'(){return _0x30af8f(this,void 0x0,void 0x0,function*(){const _0x43303c=_0x2985;var _0x17988a;const _0x459dfb=this,_0x1185fb=new Set((_0x17988a=_0x459dfb['$input'][_0x43303c(0x132)]())===null||_0x17988a===void 0x0?void 0x0:_0x17988a['toString']()[_0x43303c(0x184)](';')),_0x34d0ac={'baseUrl':_0x459dfb['options'][_0x43303c(0x1c1)],'endpointNode':typeof _0x459dfb[_0x43303c(0x18f)][_0x43303c(0x153)]===_0x43303c(0x1db)?_0x459dfb[_0x43303c(0x18f)]['endpointNode']():_0x459dfb[_0x43303c(0x18f)][_0x43303c(0x153)],'endpoint':typeof _0x459dfb[_0x43303c(0x18f)]['endpoint']==='function'?_0x459dfb[_0x43303c(0x18f)][_0x43303c(0x1c2)]():_0x459dfb[_0x43303c(0x18f)]['endpoint']},_0x32ba24=yield _0x3bf6a4(_0x34d0ac);this[_0x43303c(0x131)](_0x32ba24,_0x1185fb);});},'_installTree'(_0x3cb5de,_0x40edd3){const _0x5a303d=_0x33a736,_0x2fca6e=this;_0x2fca6e[_0x5a303d(0x160)][_0x5a303d(0x166)]();if(!_0x3cb5de[_0x5a303d(0x11b)])return;const _0x5d6655=_0x3cb5de[_0x5a303d(0x11b)],_0x27251a=_0x197b17(_0x5d6655);_0x2fca6e[_0x5a303d(0x160)][_0x5a303d(0x1a7)](_0x27251a);const _0x52eea0='';this['_installChildren'](_0x27251a[_0x5a303d(0x17b)]('ul'),_0x5d6655,_0x52eea0,_0x40edd3),_0x27251a[_0x5a303d(0x1c4)](_0x5a303d(0x181))['addClass'](_0x5a303d(0x1a6)),this[_0x5a303d(0x154)](_0x40edd3);},'_installChildren'(_0x35e51e,_0x8b2b8e,_0x5ddb7f,_0x57d58a){const _0x4f9634=_0x33a736,_0xd0ef27=({name:_0x2b4b6f,namespaceIndex:_0x533c87})=>{if(_0x533c87===0x0)return _0x2b4b6f;return _0x533c87+':'+_0x2b4b6f;},_0x2ccc03=_0x8b2b8e[_0x4f9634(0x17b)]||[],_0x1bc58c=_0x8b2b8e[_0x4f9634(0x1aa)]||[],_0x48ee24=[..._0x2ccc03,..._0x1bc58c];for(const _0x52a4fc of _0x48ee24){const _0x3ff868=_0x197b17(_0x52a4fc);_0x35e51e['append'](_0x3ff868);let _0x32e2ba='';_0x52a4fc['nodeClass']===_0x4f9634(0x124)&&(_0x5ddb7f?_0x32e2ba=_0x5ddb7f+'.'+_0xd0ef27(_0x52a4fc[_0x4f9634(0x1be)]):_0x32e2ba=_0xd0ef27(_0x52a4fc[_0x4f9634(0x1be)]),_0x3ff868[_0x4f9634(0x192)]('data-value',_0x32e2ba));const _0x5b9a15=_0x52a4fc[_0x4f9634(0x17b)]&&_0x52a4fc['children']['length'],_0x4aa847=_0x52a4fc[_0x4f9634(0x1aa)]&&_0x52a4fc[_0x4f9634(0x1aa)]['length'];!_0x5b9a15&&!_0x4aa847?_0x3ff868['removeClass'](_0x4f9634(0x181))[_0x4f9634(0x172)](_0x4f9634(0x116)):(this[_0x4f9634(0x11c)](_0x3ff868[_0x4f9634(0x17b)]('ul'),_0x52a4fc,_0x32e2ba,_0x57d58a),_0x3ff868['removeClass'](_0x4f9634(0x181))['addClass'](_0x4f9634(0x1a6)));}},'_updateSelectedFields'(){const _0x2c8020=_0x33a736;var _0xa316e7;const _0x20cfdc=this,_0x151243=new Set((_0xa316e7=_0x20cfdc[_0x2c8020(0x18a)][_0x2c8020(0x132)]())===null||_0xa316e7===void 0x0?void 0x0:_0xa316e7['toString']()[_0x2c8020(0x184)](';'));this[_0x2c8020(0x154)](_0x151243);},'_updateValues'(_0x46cb41){const _0x1ace67=_0x33a736;$(_0x1ace67(0x191))['each'](function(){const _0x5314cd=_0x1ace67,_0x2b9d44=$(this),_0x4c211c=_0x2b9d44['attr'](_0x5314cd(0x10c));_0x4c211c&&_0x46cb41['has'](_0x4c211c)&&_0x2b9d44[_0x5314cd(0x17b)](_0x5314cd(0x1e4))[_0x5314cd(0x1c4)](_0x5314cd(0x1ae))['addClass'](_0x5314cd(0x1de));});},'_setInputValue'(){const _0x2bf9e4=_0x33a736,_0x483322=this,_0x3b6f77=[];$(_0x2bf9e4(0x191))['each'](function(){const _0x44d0cc=_0x2bf9e4,_0xf61f15=$(this);if(_0xf61f15['children'](_0x44d0cc(0x1b2))['length']>0x0){const _0x26f249=_0xf61f15[_0x44d0cc(0x192)](_0x44d0cc(0x10c));if(_0x26f249)_0x3b6f77['push'](_0x26f249);}});const _0x127a45=[...new Set(_0x3b6f77)][_0x2bf9e4(0x19c)]()[_0x2bf9e4(0xfb)](';');_0x483322[_0x2bf9e4(0x18a)][_0x2bf9e4(0x132)](_0x127a45),_0x483322['$input'][_0x2bf9e4(0x146)]('change');},'_create'(){const _0x457aef=_0x33a736,_0x5f5644=this;_0x5f5644[_0x457aef(0x18a)]=this[_0x457aef(0x123)],_0x5f5644['$combo']=$('<div/>'),_0x5f5644[_0x457aef(0x16f)][_0x457aef(0x172)](_0x457aef(0x171)),this[_0x457aef(0x123)][0x0][_0x457aef(0x138)][_0x457aef(0x19a)](_0x5f5644[_0x457aef(0x16f)][0x0],this[_0x457aef(0x123)][0x0]),_0x5f5644[_0x457aef(0x144)]=$(_0x457aef(0x121))[_0x457aef(0x172)]('input-group'),_0x5f5644[_0x457aef(0x16f)][_0x457aef(0x1a7)](_0x5f5644[_0x457aef(0x144)]),_0x5f5644['$inputGroup'][_0x457aef(0x1a7)](_0x5f5644[_0x457aef(0x18a)]),_0x5f5644['$toggleTreeBtn']=$('<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>'),_0x5f5644[_0x457aef(0x144)][_0x457aef(0x1a7)](_0x5f5644[_0x457aef(0x141)]),_0x5f5644[_0x457aef(0x141)]['on'](_0x457aef(0x1dc),function(){const _0x465ce4=_0x457aef;_0x5f5644[_0x465ce4(0x1c8)][_0x465ce4(0x164)](),_0x5f5644['$info'][_0x465ce4(0x164)]();if(_0x5f5644[_0x465ce4(0x1c8)]['is'](_0x465ce4(0x1b4))){_0x24a60c['show']();const _0x2342b3=_0x5f5644[_0x465ce4(0x1c8)]['offset']();_0x24a60c[_0x465ce4(0x1b6)]({'top':_0x2342b3['top']+'px','right':_0x465ce4(0x1bc)+(_0x2342b3[_0x465ce4(0x1cd)]+_0x5f5644[_0x465ce4(0x1c8)][_0x465ce4(0x129)]())+'px)'}),_0x5f5644[_0x465ce4(0x104)](),_0x5f5644[_0x465ce4(0x101)]();}else _0x24a60c[_0x465ce4(0x155)]();});!_0x5f5644[_0x457aef(0x18a)]['attr']('placeholder')&&_0x5f5644[_0x457aef(0x18a)][_0x457aef(0x192)]('placeholder',_0x457aef(0x14f));_0x5f5644[_0x457aef(0x150)]=$('<div\x20class=\x22info-text\x22></div>'),_0x5f5644[_0x457aef(0x150)]['hide'](),_0x5f5644[_0x457aef(0x1c8)]=$(_0x457aef(0x121))[_0x457aef(0x172)](_0x457aef(0x15b))[_0x457aef(0x155)]();const _0xab06c7=$('<span\x20class=\x22validate-button\x22>✔</span>'),_0x4aa87d=$(_0x457aef(0x1d9)),_0x24a60c=$(_0x457aef(0x152))[_0x457aef(0x1a7)](_0xab06c7,_0x4aa87d);_0x24a60c[_0x457aef(0x155)](),_0xab06c7['on']('click',()=>{const _0x5eb65e=_0x457aef;_0x5f5644[_0x5eb65e(0x197)](),_0x5f5644[_0x5eb65e(0x1c8)][_0x5eb65e(0x155)]();}),_0x4aa87d['on'](_0x457aef(0x1dc),()=>{const _0x4702a4=_0x457aef;_0x5f5644[_0x4702a4(0x1c8)][_0x4702a4(0x155)]();}),_0x5f5644['$combo'][_0x457aef(0x1a7)](_0x5f5644[_0x457aef(0x150)]),_0x5f5644[_0x457aef(0x16f)][_0x457aef(0x1a7)](_0x5f5644[_0x457aef(0x1c8)]),_0x5f5644['$tree']=$(_0x457aef(0x1d8)),_0x5f5644[_0x457aef(0x1c8)][_0x457aef(0x166)]()['append'](_0x5f5644[_0x457aef(0x160)],_0x24a60c),_0x5f5644[_0x457aef(0x160)]['on'](_0x457aef(0x1dc),'li',function(_0x414bec){const _0x276ff6=_0x457aef;_0x414bec[_0x276ff6(0x11f)]();let _0x9fbc78=$(this);const _0x385769=0x14,_0x28d839=0x14,_0x5a1f66=$(this)[_0x276ff6(0x19d)](),_0x1d42c7=_0x414bec;if(_0x1d42c7[_0x276ff6(0x14d)]>=_0x5a1f66['left']&&_0x1d42c7[_0x276ff6(0x14d)]<=_0x5a1f66[_0x276ff6(0x1cd)]+_0x385769&&_0x1d42c7[_0x276ff6(0x1eb)]>=_0x5a1f66[_0x276ff6(0x1e6)]&&_0x1d42c7['pageY']<=_0x5a1f66[_0x276ff6(0x1e6)]+_0x28d839){console['log']('clicked\x20on\x20icon'),console[_0x276ff6(0x16a)](_0x276ff6(0x120),_0x9fbc78['data'](_0x276ff6(0x1ba)),_0x9fbc78[_0x276ff6(0x192)](_0x276ff6(0x15c)));if(_0x9fbc78[_0x276ff6(0x12c)](_0x276ff6(0x181)))_0x9fbc78[_0x276ff6(0x1c4)](_0x276ff6(0x181))['addClass'](_0x276ff6(0x1a6)),_0x9fbc78[_0x276ff6(0x17b)]('ul')['toggle']();else{if(_0x9fbc78[_0x276ff6(0x12c)](_0x276ff6(0x1a6)))_0x9fbc78[_0x276ff6(0x17b)]('ul')[_0x276ff6(0x164)](),_0x9fbc78[_0x276ff6(0x189)]('expandable\x20expanded');else{if(_0x9fbc78[_0x276ff6(0x17b)]('ul')[_0x276ff6(0x17b)]()['length']>0x0)_0x9fbc78['children']('ul')[_0x276ff6(0x164)](),_0x9fbc78[_0x276ff6(0x189)](_0x276ff6(0x1a0));else;}}}}),$(document)['on']('click',function(_0x5a015d){const _0x305eb3=_0x457aef;!$(_0x5a015d[_0x305eb3(0x1d2)])[_0x305eb3(0x136)](_0x5f5644[_0x305eb3(0x16f)])[_0x305eb3(0x1a9)]&&_0x5f5644[_0x305eb3(0x1c8)][_0x305eb3(0x155)]();}),this[_0x457aef(0x104)]();}});},_0x3bf6a4=_0x5dda1d=>_0x30af8f(void 0x0,[_0x5dda1d],void 0x0,function*({endpointNode:_0x51bfb7,endpoint:_0xfd7b17,baseUrl:_0x13f155}){const _0x3c364a=_0x18e426,_0x3a77a1=_0x13f155+_0x3c364a(0x113),_0x5daa71=_0x3a77a1+_0x3c364a(0x18d),_0x1a9b19=yield fetch(_0x5daa71,{'method':_0x3c364a(0x109),'body':JSON[_0x3c364a(0x174)]({'endpointNode':_0x51bfb7,'endpoint':_0xfd7b17}),'headers':{'Content-Type':_0x3c364a(0x1e0)}});if(_0x1a9b19[_0x3c364a(0x13e)]!==0xc8)return console[_0x3c364a(0x16a)](_0x3c364a(0x1e1),_0x1a9b19[_0x3c364a(0x13e)],_0x1a9b19['statusText']),{'events':null};console['log'](_0x3c364a(0x1b8),_0x1a9b19[_0x3c364a(0x13e)],_0x1a9b19[_0x3c364a(0x135)]);const _0x56e56e=yield _0x1a9b19[_0x3c364a(0x18c)](),_0x4c1893=_0x56e56e['events'];return{'events':_0x4c1893};}),_0x461eea=()=>{const _0x55e85f=_0x18e426,_0x23a40d=$('#node-input-endpoint'),_0x5db582=_0x23a40d[_0x55e85f(0x132)](),_0x3cedcf=RED[_0x55e85f(0x13c)][_0x55e85f(0x10f)](_0x5db582);if(!_0x3cedcf)return undefined;const {endpoint:_0x952fcf,securityMode:_0x879337,securityPolicy:_0x2a4843,userIdentityType:_0x30e7b0,credentials:_0xa0a943}=_0x3cedcf,_0x265ab4={'endpoint':_0x952fcf,'securityMode':_0x879337,'securityPolicy':_0x2a4843,'userIdentityType':_0x30e7b0,'credentials':_0xa0a943};return _0x265ab4;},_0x514517=()=>{return{'endpointNode':_0x1fa6d5};},_0x1fa6d5=()=>{const _0x20eb1c=_0x18e426,_0x381bfd=$(_0x20eb1c(0x11a)),_0x185fd6=_0x381bfd['val'](),_0x11b00d=_0x461eea();if(!_0x11b00d)return undefined;return{'id':_0x185fd6};};RED['nodes']['registerType']('OpcUa-Client2-MonitorEvent',{'category':_0x18e426(0x13b),'color':_0x18e426(0x1d4),'align':_0x18e426(0x137),'icon':_0x18e426(0x180),'paletteLabel':'monitor\x20events','defaults':{'inputs':{'value':0x1},'output':{'value':0x4},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x18e426(0x111)},'subscription':{'value':'','required':!![],'validate':_0x13576e=>{if(_0x13576e==='')return![];return!![];}},'startImmediately':{'value':!![],'required':!![]},'nodeId':{'value':'','required':![],'validate':()=>!![]},'samplingInterval':{'value':0x3e8,'required':!![]},'discardOldest':{'value':!![],'required':!![]},'queueSize':{'value':0xa,'required':!![]},'selectClauses':{'value':'','required':!![]},'whereClause':{'value':'','required':![]}},'outputs':0x2,'label'(){const _0x43706c=_0x18e426;return this['name']||_0x43706c(0x185);},'labelStyle'(){const _0x3d7660=_0x18e426;return this['name']?_0x3d7660(0x168):'';},'oneditprepare'(){const _0x28d1b9=_0x18e426;_0x298c40(),_0x1e1aea(),_0x5ed626(RED,this),$(_0x28d1b9(0x108))['on'](_0x28d1b9(0x102),()=>{const _0x29bd33=_0x28d1b9,_0x58880f=$('#node-input-startImmediately')['prop'](_0x29bd33(0x1de));_0x58880f?$(_0x29bd33(0x140))['val'](0x0):$(_0x29bd33(0x140))[_0x29bd33(0x132)](0x1);});const _0x51d904=$(_0x28d1b9(0x14b));_0x51d904['nodeBrowser'](Object[_0x28d1b9(0x156)](Object[_0x28d1b9(0x156)]({},_0x514517()),{'filter'(_0x1b2ea1){const _0x1c4bfa=_0x28d1b9;return _0x1b2ea1['nodeClass']===_0x1c4bfa(0x1d3);},'isSelectable'(_0x1e8cec){const _0x82f67=_0x28d1b9;return _0x1e8cec[_0x82f67(0x13a)]==='Object';}})),$(_0x28d1b9(0x1d1));const _0x57e4f9=$(_0x28d1b9(0x100));_0x57e4f9[_0x28d1b9(0x1e2)](Object['assign']({},_0x514517()));},'oneditsave'(){const _0x461f7e=_0x18e426,_0x59b83c=$(_0x461f7e(0x1d6))['prop'](_0x461f7e(0x1de));_0x59b83c?($('#node-input-startImmediately')['val'](_0x59b83c?0x0:0x1),this[_0x461f7e(0x19b)]=_0x59b83c?0x0:0x1):($('#node-input-startImmediately')[_0x461f7e(0x132)](0x1),this[_0x461f7e(0x19b)]=0x1);}});}()));
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHg1ZWQ2MjYiLCJfMHgyNDE3NDYiLCJfMHgzOTJjYTUiLCJfMHg1NTc4YzciLCIkIiwiXzB4MzQyZDMyIiwiXzB4YWUzNzFkIiwiXzB4MTQyY2Y0IiwiXzB4MmI3Y2FiIiwiXzB4MTRiMjkwIiwiXzB4MzBhZjhmIiwiXzB4NDRkMmE4IiwiXzB4NmQwOTQ0IiwiXzB4MjJlNzYyIiwiXzB4MTk5NWU5IiwiXzB4MzZlNWEzIiwiXzB4MzQ4YzgxIiwiXzB4MmQwMmYwIiwiUHJvbWlzZSIsIl8weDJkNDMyZSIsIl8weDMwYTAwYSIsIl8weGMzNzU3MyIsIl8weDFhYmUxMSIsIl8weDI5ZjBlMiIsIl8weDU0NDkxOCIsIl8weDIzYmNhMSIsIl8weDU1YWJlYSIsIl8weDRmNjBiZSIsIl8weDVhMTNkZSIsIlN1cHByZXNzZWRFcnJvciIsIl8weDU4NjQwOSIsIl8weDVmMWZmOCIsIl8weDQzZWRiZCIsIl8weDU0YmU4YiIsIkVycm9yIiwiXzB4MzBmNmM0IiwiXzB4Mjk1ZWU2IiwiXzB4NGY5ZWJiIiwiXzB4NDI2YWRiIiwiXzB4NWU5NTVmIiwiXzB4MjZhMjFkIiwiXzB4NGYzYWZlIiwiXzB4MWVhZmZkIiwiXzB4MmNlMTQ1IiwiXzB4MjZjNjViIiwiXzB4NThlMzQzIiwiXzB4M2NhMGEzIiwiXzB4M2UwOGE4IiwiXzB4M2FjMWEyIiwiXzB4NmVmOTBmIiwiXzB4MzYzYTE1IiwiXzB4MjI0NDhiIiwiXzB4NDRjYTU5IiwiXzB4NDI3NjIzIiwiXzB4MTA3ZGY0IiwiXzB4NTVjNzYxIiwiXzB4MmY0MTNjIiwiXzB4ZmUyNGU2IiwiZW5kcG9pbnROb2RlIiwiXzB4M2RkMmZiIiwiZW5kcG9pbnQiLCJfMHgzNjYwNzgiLCJiYXNlVXJsIiwiXzB4MzAxZWE1IiwiXzB4MWRmMDk2IiwiXzB4MzcwMTFjIiwiXzB4NDkzZmRmIiwiXzB4ZjAwMWE0IiwiXzB4NWZhYjFiIiwiT2JqZWN0IiwiXzB4YzZlOWNmIiwiZmV0Y2giLCJKU09OIiwiY29uc29sZSIsIl8weGVkZjNkIiwiXzB4M2I2YWNhIiwiXzB4MzRlNzZlIiwiXzB4NTRjODViIiwiXzB4NGM1MWQ2IiwiXzB4NWIwNzc5IiwiXzB4M2FhZjMyIiwiXzB4MTZiZWY5IiwiXzB4MjJjMGU5IiwiXzB4NDM2M2I2Iiwibm9kZUlkIiwiXzB4MTI4NmQxIiwicm9vdE5vZGVJZCIsIl8weDY2MjdkZCIsImlzVHlwZSIsIl8weDQzYzA2YSIsIl8weDM2Y2RmMSIsIl8weDFlMDExMCIsIl8weDFiZDMwMyIsIl8weDU4YzdlNyIsIl8weDExOTI5NyIsIl8weDJhNDk0NyIsIl8weDNjOTU0YSIsIl8weDU1YTcwNiIsIl8weGFjOWM4MiIsIl8weDUxZWM2MyIsIl8weDVhMTI0MSIsIl8weDFlNzc4ZCIsIl8weDNmOTY3YiIsIl8weDM1YTFiZiIsIl8weGY4YmU5YyIsIl8weDE2OGQyMSIsIl8weDE5MjUyMyIsIl8weDE0ODc5ZSIsIl8weDU5NjEzNCIsIl8weDI1NGFlMSIsInNldFRpbWVvdXQiLCJfMHgxODNhYWMiLCJfMHg0ODYzZjciLCJfMHg0NjAwMzgiLCJfMHgxZjM4MjIiLCJfMHgyZjA5N2QiLCJfMHgzMWE2MzIiLCJfMHgzYzBjNGEiLCJfMHg0ZTdjODciLCJfMHg0YzE3ZGYiLCJfMHg1M2M2NjgiLCJfMHgzMDNkYjUiLCJfMHgyODczN2QiLCJfMHgxNjNiOWQiLCJfMHg1MTVmYzYiLCJfMHg0ODA5N2QiLCJfMHhmMDc4OWMiLCJfMHgzMWY2NzQiLCJfMHg1M2U5YzQiLCJfMHg1MzgwNDAiLCJfMHg0OGFjMmQiLCJfMHg0ZGE4NzkiLCJfMHhiMThmMDkiLCJpY29uIiwiXzB4NTE3YjIwIiwiY29sb3IiLCJfMHgzYmZjYzgiLCJfMHgyOWVkZDYiLCJfMHg0MmFlOTAiLCJfMHgzZjdkNjciLCJfMHg0YzQ3MjgiLCJfMHhjZGYxNTYiLCJfMHgzYjE1ODYiLCJfMHgyYjQ5YzAiLCJfMHgyZGU5ZjEiLCJfMHgyZTQ4MWQiLCJfMHg0MGY3OTYiLCJfMHg0YzdjN2YiLCJfMHgzN2I1MmEiLCJfMHgzNzJiYWEiLCJfMHg0MWJhYjciLCJfMHgxMWM3OTAiLCJfMHg0YzVjZDciLCJfMHg0YzZhMjIiLCJfMHgzMTMxNWUiLCJfMHg2N2NhNDAiLCJfMHgxMjRmZDAiLCJfMHg5MjFlN2MiLCJfMHgxN2U2Y2IiLCJ1bmRlZmluZWQiLCJfMHgzMWJmZWMiLCJfMHg3YjljZjkiLCJfMHgzYzE3OWUiLCJfMHgyODYxY2YiLCJfMHg0NjMzODEiLCJfMHgzZjUxZTUiLCJfMHgyOTc4OTMiLCJfMHgyOTFkMmUiLCJfMHgyM2NjNTciLCJfMHgxNjNkODciLCJfMHgzZWEzZDAiLCJfMHgzNmViZWIiLCJfMHgzMWRjYmQiLCJfMHgzMTE0YmUiLCJyZWZlcmVuY2VzIiwiXzB4NWRmZTFjIiwiXzB4NGQwNDljIiwiXzB4MWFiYWI0IiwiXzB4M2VkYjJlIiwiXzB4NDk0YjE3IiwiXzB4MTBmZWIzIiwiXzB4MWNlMDNiIiwiXzB4MmU4NjVmIiwiXzB4NTBiYTA3IiwiXzB4NTJjYmY1IiwiXzB4Nzk5YjYiLCJfMHgyOThjNDAiLCJfMHgyNjYyNzUiLCJfMHgxODFhNTAiLCJfMHg2NjY5OGQiLCJfMHgyMjQ3YzEiLCJfMHgxMWE0MjQiLCJfMHgxYmE0MDgiLCJfMHgxY2U0YWIiLCJfMHgyNjg5ZmQiLCJfMHg1OTc4YzkiLCJfMHgzY2U0ZDAiLCJfMHg1ZDFkOTkiLCJfMHgxZWM2ZTAiLCJfMHgzMzdkMDYiLCJfMHg1ODcyNjIiLCJfMHg1NGU5N2IiLCJfMHg3YmIwYzAiLCJfMHgyZGQzMWIiLCJfMHg0YWMxZDUiLCJfMHhhYzRkOCIsIl8weDM5Zjc3MiIsIl8weDE2NmVlZSIsIl8weGUyMjVmNyIsIl8weDNlNzIwYyIsIl8weGU5ZTkxYSIsIl8weDE0NzNhNCIsIl8weDVkZjgxNiIsIl8weDM1Y2IxOCIsIl8weDExYTVkYyIsIl8weDkyN2UyYSIsIl8weGUzMGM0YyIsIl8weDMwOWY0ZSIsIl8weGM0MzUxNCIsImRvY3VtZW50IiwiXzB4MmFkZjU2IiwiXzB4MTk3YjE3IiwiXzB4MzE3MDgwIiwiXzB4NTk4YjExIiwiXzB4MmM1ZjYwIiwiXzB4NWJmOTEyIiwiXzB4Yzc0ZWJiIiwiXzB4NGFjYjkyIiwiXzB4NTRjOTE1IiwiXzB4NjczODc3IiwiXzB4NTNmYzhlIiwiXzB4YmU0NGZjIiwiXzB4MTEwZTQ5IiwiXzB4NWQxMTAzIiwiXzB4MWUxYWVhIiwiXzB4MTc5ODhhIiwiXzB4NDU5ZGZiIiwiXzB4MTE4NWZiIiwiU2V0IiwiXzB4MzRkMGFjIiwiXzB4MzJiYTI0IiwiXzB4M2JmNmE0IiwiXzB4M2NiNWRlIiwiXzB4NDBlZGQzIiwiXzB4MmZjYTZlIiwiXzB4NWQ2NjU1IiwiXzB4MjcyNTFhIiwiXzB4NTJlZWEwIiwiXzB4MzVlNTFlIiwiXzB4OGIyYjhlIiwiXzB4NWRkYjdmIiwiXzB4NTdkNThhIiwiXzB4ZDBlZjI3IiwibmFtZSIsIl8weDJiNGI2ZiIsIm5hbWVzcGFjZUluZGV4IiwiXzB4NTMzYzg3IiwiXzB4MmNjYzAzIiwiXzB4MWJjNThjIiwiXzB4NDhlZTI0IiwiXzB4NTJhNGZjIiwiXzB4M2ZmODY4IiwiXzB4MzJlMmJhIiwiXzB4NWI5YTE1IiwiXzB4NGFhODQ3IiwiXzB4YTMxNmU3IiwiXzB4MjBjZmRjIiwiXzB4MTUxMjQzIiwiXzB4NDZjYjQxIiwiXzB4MmI5ZDQ0IiwiXzB4NGMyMTFjIiwiXzB4NDgzMzIyIiwiXzB4M2I2Zjc3IiwiXzB4ZjYxZjE1IiwiXzB4MjZmMjQ5IiwiXzB4MTI3YTQ1IiwiXzB4NWY1NjQ0IiwiXzB4MjRhNjBjIiwiXzB4MjM0MmIzIiwiXzB4YWIwNmM3IiwiXzB4NGFhODdkIiwiXzB4NDE0YmVjIiwiXzB4OWZiYzc4IiwiXzB4Mzg1NzY5IiwiXzB4MjhkODM5IiwiXzB4NWExZjY2IiwiXzB4MWQ0MmM3IiwiXzB4NWEwMTVkIiwiXzB4NWRkYTFkIiwiXzB4NTFiZmI3IiwiXzB4ZmQ3YjE3IiwiXzB4MTNmMTU1IiwiXzB4M2E3N2ExIiwiXzB4NWRhYTcxIiwiXzB4MWE5YjE5IiwiXzB4NTZlNTZlIiwiXzB4NGMxODkzIiwiXzB4NDYxZWVhIiwiXzB4MjNhNDBkIiwiXzB4NWRiNTgyIiwiXzB4M2NlZGNmIiwiUkVEIiwiXzB4OTUyZmNmIiwic2VjdXJpdHlNb2RlIiwiXzB4ODc5MzM3Iiwic2VjdXJpdHlQb2xpY3kiLCJfMHgyYTQ4NDMiLCJ1c2VySWRlbnRpdHlUeXBlIiwiXzB4MzBlN2IwIiwiY3JlZGVudGlhbHMiLCJfMHhhMGE5NDMiLCJfMHgyNjVhYjQiLCJfMHg1MTQ1MTciLCJfMHgxZmE2ZDUiLCJfMHgzODFiZmQiLCJfMHgxODVmZDYiLCJfMHgxMWIwMGQiLCJfMHgxMzU3NmUiLCJfMHg1ODg4MGYiLCJfMHg1MWQ5MDQiLCJfMHgxYjJlYTEiLCJfMHgxZThjZWMiLCJfMHg1N2U0ZjkiLCJfMHg1OWI4M2MiXSwibWFwcGluZ3MiOiJxK0lBQUEsQ0FBQyxVLENBQ0csYSx3QkFFQSxTQUFTQSxTQUFULENBQXFDQyxTQUFyQyxDQUEwQ0MsU0FBMUMsQyx5QkFDVUMsU0FBQSxDQUFZQyxDQUFBLEMsZ0JBQUEsQyxDQUNaQyxTQUFBLENBQWdCRCxDQUFBLEMsZ0JBQUEsQyxDQUNoQkUsU0FBQSxDQUE2QixJLDJCQUN6QkMsU0FBQSxDQUFXTixTQUFBLEMsZ0JBQUEsRSxnQkFBQSxFQUFlRSxTQUFBLEMsZ0JBQUEsR0FBZixDLENBQ2pCRSxTQUFBLEMsZ0JBQUEsSSxHQUNJLENBQUNFLFNBQUQsRUFBYSxDQUFDQSxTQUFBLEMsZ0JBQUEsQyxDQUNkLE8sR0FFQUEsU0FBQSxDLGdCQUFBLEMsQ0FDQSxVQUFXQyxTQUFYLElBQWdCRCxTQUFBLEMsZUFBQSxDQUFoQixDLENBQ0ksTUFBTUUsU0FBQSxDQUFRRCxTQUFBLEMsZ0JBQUEsR0FBVUEsU0FBQSxDLElBQUEsQ0FBeEIsQ0FDQUosQ0FBQSxDLFdBQUEsQ0FBZSxDLE9BQ1gsQ0FBT0ksU0FBQSxDLElBQUEsQ0FESSxDLE9BRVgsQ0FBT0MsU0FGSSxDLFVBR1gsQ0FBVUQsU0FBQSxDLElBQUEsSUFBU04sU0FBQSxDLGdCQUFBLENBSFIsQ0FBZixFLGdCQUFBLEVBS1VPLFNBTFYsRSxnQkFBQSxFQU1jSixTQU5kLEMsSUFVWkMsU0FB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LGdCQUFBLEVBQWMsRUFBZCxDQUFrQm1QLFNBQUEsRUFBbEIsQ0FBZCxDQUFpRSxDLFFBQUUsQ0FBT1EsU0FBUCxDLGtDQUN4RUEsU0FBQSxDLFdBQUEsSSxrQkFEc0UsQyxjQUdqRixDQUFhQyxTQUFiLEMsaUNBQ1dBLFNBQUEsQyxlQUFBLEksVUFKc0UsQ0FBakUsQ0FBcEIsQyxDQU9BN1QsQ0FBQSxDLGdCQUFBLENBUEEsQ0FRQSxNQUFNOFQsU0FBQSxDQUFpQjlULENBQUEsQyxnQkFBQSxDQUF2QixDQUNBOFQsU0FBQSxDLGdCQUFBLEVBQWtDN1AsTUFBQSxDLFFBQUEsRUFBYyxFQUFkLENBQWtCbVAsU0FBQSxFQUFsQixDQUFsQyxDLEVBcEU2QyxDLFlBc0VqRCxFLDJCQUNVVyxTQUFBLENBQW1CL1QsQ0FBQSxDLGdCQUFBLEUsTUFBQSxFLGdCQUFBLEMsQ0FDckIrVCxTLEVBQ0EvVCxDQUFBLEMsOEJBQUEsRSxLQUFBLEVBQXNDK1QsU0FBQSxDLEdBQUEsQyxHQUF0QyxDLENBQ0EsSyxnQkFBQSxFQUFjQSxTQUFBLEMsR0FBQSxDLE1BR2QvVCxDQUFBLEMsOEJBQUEsRSxnQkFBQSxFLEdBQUEsQyxDQUNBLEssZ0JBQUEsRSxNQTlFeUMsQ0FBckQsQyxFQTc0QkosRyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgZnVuY3Rpb24gaW5zdGFsbFN1YnNjcmlwdGlvblNlbGVjdG9yKFJFRCwgbm9kZSkge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0ICRzdWJzY3JpcHRpb24gPSAkKFwiI25vZGUtaW5wdXQtc3Vic2NyaXB0aW9uXCIpO1xuICAgICAgICBjb25zdCBpbnN0YWxsU3Vic2NyaXB0aW9uT3B0aW9ucyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVuZHBvaW50ID0gUkVELm5vZGVzLm5vZGUoJGVuZHBvaW50LnZhbCgpKTtcbiAgICAgICAgICAgICRzdWJzY3JpcHRpb24uZW1wdHkoKTtcbiAgICAgICAgICAgIGlmICghZW5kcG9pbnQgfHwgIWVuZHBvaW50LnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZW5kcG9pbnQuc3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcyBvZiBlbmRwb2ludC5zdWJzY3JpcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gcy5uYW1lIHx8IHMuaWQ7XG4gICAgICAgICAgICAgICAgICAgICQoXCI8b3B0aW9uLz5cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHMuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogcy5pZCA9PT0gbm9kZS5zdWJzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAudGV4dChsYWJlbClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbygkc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGluc3RhbGxTdWJzY3JpcHRpb25PcHRpb25zKCk7XG4gICAgICAgIC8vIGhhY2tcbiAgICAgICAgLy8gJGlucHV0QWN0aW9uLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgLy8gICAgICRlbmRwb2ludC5vbihcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgaW5zdGFsbFN1YnNjcmlwdGlvbk9wdGlvbnMoKTtcbiAgICAgICAgLy8gICAgIH0pO1xuICAgICAgICAvLyB9KTtcbiAgICAgICAgJHN1YnNjcmlwdGlvbi5vbihcImZvY3VzIGNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgIGluc3RhbGxTdWJzY3JpcHRpb25PcHRpb25zKCk7XG4gICAgICAgIH0pO1xuICAgICAgICAkZW5kcG9pbnQub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAgICAgaW5zdGFsbFN1YnNjcmlwdGlvbk9wdGlvbnMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG4gICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbiAgICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG4gICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG4gICAgUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbiAgICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuICAgIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcbiAgICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuICAgIC8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCAqL1xyXG5cclxuXHJcbiAgICBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgICAgICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xyXG4gICAgfTtcblxuICAgIGNvbnN0IE9yZ2FuaXplc1JlZk5vZGVJZCA9IFwibnM9MDtpPTM1XCI7XG4gICAgY29uc3QgRm9sZGVyVHlwZSA9IFwibnM9MDtpPTYxXCI7XG4gICAgY29uc3QgSGFzQ29tcG9uZW50UmVmTm9kZUlkID0gXCJucz0wO2k9NDdcIjtcbiAgICBjb25zdCBIYXNQcm9wZXJ0eVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ2XCI7XG4gICAgY29uc3QgSGFzQ2hpbGRSZWZOb2RlSWQgPSBcIm5zPTA7aT0zNFwiO1xuICAgIGNvbnN0IEhhc1N1YnR5cGVSZWZOb2RlSWQgPSBcIm5zPTA7aT00NVwiO1xuICAgIGNvbnN0IEhhc1R5cGVEZWZpbml0aW9uUmVmTm9kZUlkID0gXCJucz0wO2k9NDBcIjtcblxuICAgIHZhciBCcm93c2VEaXJlY3Rpb247XG4gICAgKGZ1bmN0aW9uIChCcm93c2VEaXJlY3Rpb24pIHtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkZvcndhcmRcIl0gPSAwXSA9IFwiRm9yd2FyZFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52ZXJzZVwiXSA9IDFdID0gXCJJbnZlcnNlXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJCb3RoXCJdID0gMl0gPSBcIkJvdGhcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkludmFsaWRcIl0gPSAzXSA9IFwiSW52YWxpZFwiO1xuICAgIH0pKEJyb3dzZURpcmVjdGlvbiB8fCAoQnJvd3NlRGlyZWN0aW9uID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzO1xuICAgIChmdW5jdGlvbiAoTm9kZUNsYXNzKSB7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJVbnNwZWNpZmllZFwiXSA9IDBdID0gXCJVbnNwZWNpZmllZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk1ldGhvZFwiXSA9IDRdID0gXCJNZXRob2RcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAzMl0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3MgfHwgKE5vZGVDbGFzcyA9IHt9KSk7XG4gICAgdmFyIE5vZGVDbGFzc01hc2s7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3NNYXNrKSB7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFwiXSA9IDFdID0gXCJPYmplY3RcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJPYmplY3RUeXBlXCJdID0gOF0gPSBcIk9iamVjdFR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJEYXRhVHlwZVwiXSA9IDY0XSA9IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3NNYXNrIHx8IChOb2RlQ2xhc3NNYXNrID0ge30pKTtcbiAgICB2YXIgUmVzdWx0TWFzaztcbiAgICAoZnVuY3Rpb24gKFJlc3VsdE1hc2spIHtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDFdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIklzRm9yd2FyZFwiXSA9IDJdID0gXCJJc0ZvcndhcmRcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiTm9kZUNsYXNzXCJdID0gNF0gPSBcIk5vZGVDbGFzc1wiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJCcm93c2VOYW1lXCJdID0gOF0gPSBcIkJyb3dzZU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiRGlzcGxheU5hbWVcIl0gPSAxNl0gPSBcIkRpc3BsYXlOYW1lXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIlR5cGVEZWZpbml0aW9uXCJdID0gMzJdID0gXCJUeXBlRGVmaW5pdGlvblwiO1xuICAgIH0pKFJlc3VsdE1hc2sgfHwgKFJlc3VsdE1hc2sgPSB7fSkpO1xuICAgIC8vICBjb25zdCBxID0gUmVmZXJlbmNlVHlwZUlkcy5Pcmdhbml6ZXM7XG4gICAgZnVuY3Rpb24gcmVzb2x2ZU5vZGVJZChub2RlSWRMaWtlKSB7XG4gICAgICAgIHN3aXRjaCAobm9kZUlkTGlrZSkge1xuICAgICAgICAgICAgY2FzZSBcIk9yZ2FuaXplc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBPcmdhbml6ZXNSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzUHJvcGVydHlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzUHJvcGVydHlSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzQ29tcG9uZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NvbXBvbmVudFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDaGlsZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNDaGlsZFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNTdWJ0eXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1N1YnR5cGVSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzVHlwZURlZmluaXRpb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBnZXRJY29uID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHJlZmVyZW5jZS5ub2RlQ2xhc3MpIHtcbiAgICAgICAgICAgIGNhc2UgXCJPYmplY3RcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gT3JnYW5pemVzUmVmTm9kZUlkKSA7XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS50eXBlRGVmaW5pdGlvbiA9PT0gRm9sZGVyVHlwZSB8fCByZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBcImk9NjFcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWZvbGRlclwiLCBjb2xvcjogXCJyZ2JhKDYxLCA2MCwgNCwgMC41MjUpXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6IFwiU2VhR3JlZW5cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlXCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc0NvbXBvbmVudFJlZk5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIlN0ZWVsQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc1Byb3BlcnR5UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiRG9kZ2VyQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIkNhZGV0Qmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIk1ldGhvZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtY29nXCIsIGNvbG9yOiBcIlNhbmR5QnJvd25cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJWYXJpYWJsZVR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXNsaWRlcnNcIiwgY29sb3I6IFwiRGFya09yYW5nZVwiIH07XG4gICAgICAgICAgICBjYXNlIFwiRGF0YVR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXRleHQtd2lkdGhcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXF1ZXN0aW9uXCIsIGNvbG9yOiBcImdyZXlcIiB9O1xuICAgIH07XG5cbiAgICBjb25zdCBicm93c2UgPSAoX2EsIG5vZGVJZF8xLCB0ZW1wbGF0ZV8xKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIG5vZGVJZF8xLCB0ZW1wbGF0ZV8xXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBub2RlSWQsIHRlbXBsYXRlKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1lbmRwb2ludDJgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS9icm93c2VgO1xuICAgICAgICBjb25zdCBicm93c2VEZXNjcmlwdGlvbiA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGVtcGxhdGUpLCB7IG5vZGVJZCwgcmVzdWx0TWFzazogNjMgfSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIGJyb3dzZURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGluZyBmYWlsZWQgd2l0aCBlcnJvclwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXM6IFtdIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJicm93c2UgZmV0Y2hlZCA6IFwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB5aWVsZCBkYXRhLmpzb24oKTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IHJlc3BvbnNlLmJyb3dzZVJlc3VsdC5yZWZlcmVuY2VzIHx8IFtdO1xuICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZTEgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc0NoaWxkXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5WYXJpYWJsZSB8IE5vZGVDbGFzcy5PYmplY3QgfCBOb2RlQ2xhc3MuTWV0aG9kLFxuICAgICAgICAvLyAgTm9kZUNsYXNzLk9iamVjdFR5cGUgfFxuICAgICAgICAvLyAgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLkRhdGFUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlZpZXcsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgY29uc3QgdGVtcGxhdGUyID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJPcmdhbml6ZXNcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCB3YWxrQmFja3dhcmQgPSAoX2EsIF9iKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIF9iXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCB7IG5vZGVJZCwgcm9vdE5vZGVJZCwgaXNUeXBlIH0pIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWVuZHBvaW50MmA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L3dhbGstYmFja3dhcmRgO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICAgICAgcm9vdE5vZGVJZCxcbiAgICAgICAgICAgICAgICBpc1R5cGUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uID0gKHlpZWxkIGRhdGEuanNvbigpKTtcbiAgICAgICAgcmV0dXJuIGpzb24uYnJvd3NlUGF0aDtcbiAgICB9KTtcbiAgICBjb25zdCBpbnRlcm5hbFZlcmlmeSA9IChfYywgJGlucHV0RWxlbWVudF8xLCAkaW5mb18xKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2MsICRpbnB1dEVsZW1lbnRfMSwgJGluZm9fMV0sIHZvaWQgMCwgZnVuY3Rpb24qICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgJGlucHV0RWxlbWVudCwgJGluZm8pIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWVuZHBvaW50MmA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2NoZWNrTm9kZUlkYDtcbiAgICAgICAgY29uc3Qgbm9kZUlkID0gJGlucHV0RWxlbWVudC52YWwoKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzZXROb3RpZmljYXRpb24gPSAodGV4dCwgY2xhc3NOYW1lKSA9PiB7XG4gICAgICAgICAgICAkaW5mby50ZXh0KHRleHQpLmFkZENsYXNzKFwic3RlcmZpdmUtaW5mb1wiKS5hZGRDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgJGluZm8uc2hvdygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgJGluZm8ucmVtb3ZlQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICAkaW5mby5oaWRlKCk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QganNvbiA9ICh5aWVsZCBkYXRhLmpzb24oKSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICAvLyBkbyBzb21ldGhpbmc7XG4gICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCIhIWZhaWx1cmUhIVwiICsgbm9kZUlkLCBcImZhaWx1cmVcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoanNvbi5zdGF0dXNDb2RlLm1hdGNoKC9Hb29kLykpIHtcbiAgICAgICAgICAgICAgICAvLyBkbyBzb21ldGhpbmdcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChqc29uLm5vZGVBZGRyZXNzU3RyaW5nKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiR29vZFwiLCBcIm9rXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoYCR7bm9kZUlkfWApO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihgJHtqc29uLnN0YXR1c0NvZGV9ICR7ZGF0YS5zdGF0dXNUZXh0fWAsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGZldGNoQ2hpbGRyZW4oJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTEpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MiA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMik7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFsuLi5icm93c2VSZXN1bHQxLnJlZmVyZW5jZXMsIC4uLmJyb3dzZVJlc3VsdDIucmVmZXJlbmNlc10sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgdGVtcGxhdGVTVCA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzU3VidHlwZVwiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8IE5vZGVDbGFzcy5PYmplY3RUeXBlIHwgTm9kZUNsYXNzLkRhdGFUeXBlIHwgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBmdW5jdGlvbiBmZXRjaFN1YnR5cGVzKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGVTVCk7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3NlUmVzdWx0MTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG1ha2VFbGVtZW50JDEgPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgaWYgKCFyZWZlcmVuY2UgfHwgIXJlZmVyZW5jZS5ub2RlSWQpIHtcbiAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpPjxpIGNsYXNzPVwiZmEgZmEtZXJyb3JcIiBzdHlsZT1cImNvbG9yOnJlZDtcIj48L2k+bm8gcmVmZXJlbmNlICE8dWw+PC91bD48L2xpPmApO1xuICAgICAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG4gPSByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHQgPSAoKF9hID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgKChfYiA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB7IGljb24sIGNvbG9yIH0gPSBnZXRJY29uKHJlZmVyZW5jZSk7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gYCgke3JlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKX0pICR7KChfYyA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubmFtZSkgfHwgKChfZCA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnRleHQpIHx8IFwiXCJ9YDtcbiAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8bGkga2V5PVwiJHtyZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCl9XCJ9PjxzcGFuIGNsYXNzPVwidHJlZS10ZXh0XCIgdGl0bGU9JHt0aXRsZX0+PGkgY2xhc3M9XCJmYSAke2ljb259XCIgc3R5bGU9XCJjb2xvcjoke2NvbG9yfTtcIj48L2k+ICR7dH08L3NwYW4+PHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgJGVsZW1lbnQuYWRkQ2xhc3MoXCJleHBhbmRhYmxlXCIpO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwidmFsdWVcIiwgbik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgIH07XG4gICAgY29uc3QgZmluZEVsZW1lbnQgPSAobm9kZUlkLCAkdHJlZSkgPT4ge1xuICAgICAgICByZXR1cm4gJHRyZWUuZmluZChgbGlba2V5PVwiJHtub2RlSWR9XCJdYCk7XG4gICAgfTtcbiAgICBjb25zdCBzZWxlY3RTaW5nbGUgPSAodGhhdCwgJGxpKSA9PiB7XG4gICAgICAgIHRoYXQuJHRyZWUuZmluZChcImxpID4gLnRyZWUtdGV4dFwiKS5yZW1vdmVDbGFzcyhcInNlbGVjdGVkXCIpO1xuICAgICAgICAvLyBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXNcbiAgICAgICAgJGxpLmZpbmQoXCIudHJlZS10ZXh0OmZpcnN0XCIpLmFkZENsYXNzKFwic2VsZWN0ZWRcIik7XG4gICAgfTtcbiAgICBjb25zdCBhdXRvRXhwYW5kID0gKHRoYXQsIGJyb3dzZVBhdGgsICR0cmVlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgLy8gZXhwYW5kIHRoZSB0cmVlIHRvIHNob3cgdGhlIG5vZGVJZFxuICAgICAgICBsZXQgJGN1cnJlbnQgPSAkdHJlZS5jaGlsZHJlbihcIjpmaXJzdFwiKTtcbiAgICAgICAgYnJvd3NlUGF0aC5yZWxhdGl2ZVBhdGguZWxlbWVudHMgfHwgW107XG4gICAgICAgIGNvbnN0IG5vZGVJZHMgPSBicm93c2VQYXRoLm5vZGVJZHMgfHwgW107XG4gICAgICAgIGlmIChub2RlSWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgbiBvZiBub2RlSWRzKSB7XG4gICAgICAgICAgICBpZiAoJGN1cnJlbnQuaGFzQ2xhc3MoXCJleHBhbmRhYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgLy8gbmVlZCB0byBleHBhbmQgYW5kIHNlbGVjdCB0aGUgcmlnaHQgZWxlbWVudFxuICAgICAgICAgICAgICAgIHlpZWxkIF9leHBhbmRMaSh0aGF0LCAkY3VycmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IGZpbmRFbGVtZW50KG4sICRjdXJyZW50KTtcbiAgICAgICAgICAgIGlmICgkZWxlbWVudC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkY3VycmVudCA9ICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIHNlbGVjdFNpbmdsZSh0aGF0LCAkY3VycmVudCk7XG4gICAgICAgIHNjcm9sbFRvTGkodGhhdC4kZHJvcGRvd24sICRjdXJyZW50KTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBzY3JvbGxUb0xpKCRjb250YWluZXIsICR0YXJnZXRMaSkge1xuICAgICAgICAvLyBHZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSB0YXJnZXQgaXRlbSByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyXG4gICAgICAgIGNvbnN0IGxpUG9zID0gJHRhcmdldExpLnBvc2l0aW9uKCkudG9wO1xuICAgICAgICAvLyBHZXQgdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBjb250YWluZXJcbiAgICAgICAgY29uc3QgY29udGFpbmVyU2Nyb2xsVG9wID0gJGNvbnRhaW5lci5zY3JvbGxUb3AoKTtcbiAgICAgICAgaWYgKGNvbnRhaW5lclNjcm9sbFRvcCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHBvc2l0aW9uIHRvIHNjcm9sbCB0byAoY3VycmVudCBzY3JvbGwgKyBpdGVtJ3MgcG9zaXRpb24pXG4gICAgICAgIC8vIEFkanVzdCB0aGlzIGNhbGN1bGF0aW9uIGJhc2VkIG9uIHlvdXIgbmVlZHNcbiAgICAgICAgY29uc3Qgc2Nyb2xsVG8gPSBjb250YWluZXJTY3JvbGxUb3AgKyBsaVBvcyAtICRjb250YWluZXIuaGVpZ2h0KCkgLyAyICsgJHRhcmdldExpLmhlaWdodCgpIC8gMjtcbiAgICAgICAgLy8gU2Nyb2xsIHRoZSBjb250YWluZXIgdG8gZW5zdXJlIHRoZSBpdGVtIGlzIHZpc2libGVcbiAgICAgICAgJGNvbnRhaW5lci5hbmltYXRlKHtcbiAgICAgICAgICAgIHNjcm9sbFRvcDogc2Nyb2xsVG8sXG4gICAgICAgIH0sIDUwMCk7IC8vIEFkanVzdCB0aGUgZHVyYXRpb24gKDUwMG1zKSBhcyBuZWVkZWRcbiAgICB9XG4gICAgY29uc3QgcmVhY2hTZWxlY3Rpb24gPSAodGhhdCwgcGFyZW50Tm9kZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IG5vZGVJZCA9IHRoYXQuJGlucHV0LnZhbCgpO1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgcm9vdE5vZGVJZDogcGFyZW50Tm9kZS5ub2RlSWQsXG4gICAgICAgICAgICBpc1R5cGU6IHRoYXQub3B0aW9ucy5pc1R5cGVSZWYgfHwgZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgY29uc3QgYnJvd3NlUGF0aCA9IHlpZWxkIHdhbGtCYWNrd2FyZChkYXRhLCBvcHRpb25zKTtcbiAgICAgICAgaWYgKCFicm93c2VQYXRoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgeWllbGQgYXV0b0V4cGFuZCh0aGF0LCBicm93c2VQYXRoLCB0aGF0LiR0cmVlKTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBfZmV0Y2hEYXRhRm9yTm9kZSh0aGF0LCAkbm9kZSwgZmV0Y2hGdW5jLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoJG5vZGUuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhbHJlYWR5IGZldGNoZWRcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwibG9hZGluZ1wiKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBsb2FkaW5nXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRub2RlLmFkZENsYXNzKFwibG9hZGluZ1wiKTtcbiAgICAgICAgICAgICRub2RlLmFwcGVuZCgnPGRpdiBjbGFzcz1cInNwaW5uZXJcIj48L2Rpdj4nKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcmVmZXJlbmNlcyB9ID0geWllbGQgZmV0Y2hGdW5jKCRub2RlLCBkYXRhKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlZmVyZW5jZSBvZiByZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuZmlsdGVyICYmICF0aGF0Lm9wdGlvbnMuZmlsdGVyKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQkMShyZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICRub2RlLmFkZENsYXNzKFwiZmV0Y2hlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmFwcGVuZChgPGxpPmVycm9yICR7ZXJyLm1lc3NhZ2V9PC9saT5gKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVyclwiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJG5vZGUuZmluZChcIi5zcGlubmVyXCIpLnJlbW92ZSgpO1xuICAgICAgICAgICAgJG5vZGUucmVtb3ZlQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbWFrZUNvbm5lY3Rpb24odGhhdCkge1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgYmFzZVVybDogdGhhdC5vcHRpb25zLmJhc2VVcmwsXG4gICAgICAgICAgICBlbmRwb2ludE5vZGU6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlKCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgZnVuY3Rpb24gX2V4cGFuZExpKHRoYXQsICRsaSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImZldGNoZWRcIikpIHtcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICAgICAgY29uc3QgZiA9ICF0aGF0Lm9wdGlvbnMuaXNUeXBlUmVmID8gZmV0Y2hDaGlsZHJlbiA6IGZldGNoU3VidHlwZXM7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHlpZWxkIF9mZXRjaERhdGFGb3JOb2RlKHRoYXQsICRsaSwgZiwgZGF0YSk7XG4gICAgICAgICAgICAgICAgLy8gbWFyayBhcyBleHBhbmRlZFxuICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0ID0gKCkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogWyBUZW1wZXJhdHVyZSAgXVxuICAgICAgICAgKiAgICggdG9vbHRpcCA6ICgvT2JqZWN0cy9NeVNlbnNvcikgKG5zPTE7cz1UZW1wZXJhdHVyZSkpXG4gICAgICAgICAqIFsgKyBbRm9sZGVyXSBPYmplY3RzXVxuICAgICAgICAgKiBbICAgICBbT2JqZWN0XSBNeVNlbnNvcl1cbiAgICAgICAgICogWyAgICAgKCApIFtWYXJpYWJsZV0gVGVtcGVyYXR1cmVdXG4gICAgICAgICAqL1xuICAgICAgICAkLndpZGdldChcInN0ZXJmaXZlLm5vZGVCcm93c2VyXCIsIHtcbiAgICAgICAgICAgIC8qIGRlZmF1bHQgb3B0aW9ucyAqL1xuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogKCkgPT4gKHsgZW5kcG9pbnQ6IFwib3BjLnRjcDovL29wY3VhZGVtby5zdGVyZml2ZS5jb206MjY1NDNcIiB9KSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludDogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGJyb3dzZU5hbWU6IHsgbmFtZXNwYWNlSW5kZXg6IDAsIG5hbWU6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vZGVDbGFzczogXCJPYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgbm9kZUlkOiBcIm5zPTA7aT04NVwiLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogeyB0ZXh0OiBcIk9iamVjdHNcIiB9LFxuICAgICAgICAgICAgICAgICAgICB0eXBlRGVmaW5pdGlvbjogRm9sZGVyVHlwZSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgYmFzZVVybDogXCJcIixcbiAgICAgICAgICAgICAgICBpc1R5cGVSZWY6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc29sdmVQYXJlbnROb2RlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoYXQuX19wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gdHlwZW9mIHRoYXQub3B0aW9ucy5wYXJlbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZS5jYWxsKHRoYXQpIDogdGhhdC5vcHRpb25zLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXNjID0geWllbGQgYTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9fcGFyZW50Tm9kZSA9IGRlc2M7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9fcGFyZW50Tm9kZSA9IGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoYXQuX19wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAvLyBhbHNvIHJlc2V0IHBhcmVudCBub2RlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB0aGF0O1xuICAgICAgICAgICAgICAgICAgICBhLl9fcGFyZW50Tm9kZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0geWllbGQgdGhpcy5yZXNvbHZlUGFyZW50Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50JDEocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5jdXJyZW50UGFyZW50ID0gcGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2ZXJpZnkoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbFZlcmlmeShkYXRhLCB0aGF0LiRpbnB1dCwgdGhhdC4kaW5mbyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2NyZWF0ZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21ibyA9ICQoXCI8ZGl2Lz5cIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJzdGVyZml2ZS1jb21iby1ib3hcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlcGxhY2VXaXRoKHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcImlucHV0LWdyb3VwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbnB1dEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiRpbnB1dCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1zaXRlbWFwXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJHRvZ2dsZVRyZWVCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4ub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmVlZFRvUmVhY2hTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRkcm9wZG93bi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJlZSB3aWRnZXQgaXMgZ29pbmcgdG8gYmVjb21lIHZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0geWllbGQgdGhhdC5yZXNvbHZlUGFyZW50Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlICE9PSB0aGF0LmN1cnJlbnRQYXJlbnQgfHwgKChfYSA9IHRoYXQuY3VycmVudFBhcmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGVJZCkgIT09IHBhcmVudE5vZGUubm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRoYXQucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZFRvUmVhY2hTZWxlY3Rpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24udG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkVG9SZWFjaFNlbGVjdGlvbiAmJiAoeWllbGQgcmVhY2hTZWxlY3Rpb24odGhhdCwgcGFyZW50Tm9kZSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4gPSAkKGA8YnV0dG9uPjxpIGNsYXNzPVwiZmEgZmEtZmxhc2tcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kdmVyaWZ5QnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIsIFwiZW50ZXIgYSBub2RlSWQgb3IgYSBicm93c2VQYXRoIFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5mbyA9ICQoYDxkaXYgY2xhc3M9XCJpbmZvLXRleHRcIj48L2Rpdj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93biA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJzdGVyZml2ZS1kcm9wZG93blwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGluZm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRkcm9wZG93bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZSA9ICQoYDx1bCBjbGFzcz1cInN0ZXJmaXZlLXRyZWVcIj48L3VsPmApLmFwcGVuZFRvKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNPbkxlZnRTaXplID0gKCRsaSwgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlV2lkdGggPSAyMDsgLy8gU2V0IHdpZHRoIG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZUhlaWdodCA9IDIwOyAvLyBTZXQgaGVpZ2h0IG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3MgPSAkbGkub2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUucGFnZVggPj0gZWxlbWVudFBvcy5sZWZ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VYIDw9IGVsZW1lbnRQb3MubGVmdCArIGJlZm9yZVdpZHRoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZID49IGVsZW1lbnRQb3MudG9wICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZIDw9IGVsZW1lbnRQb3MudG9wICsgYmVmb3JlSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b2dnbGVFeHBhbnNpb24gPSAoJGxpKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRhYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfZXhwYW5kTGkodGhhdCwgJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9nZ2xlIGl0cyBleHBhbmRlZC9jb2xsYXBzZWQgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCBleHBhbmRhYmxlIGFuZCBleHBhbmRlZCBjbGFzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkudG9nZ2xlQ2xhc3MoXCJleHBhbmRhYmxlIGV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5jaGlsZHJlbihcInVsXCIpLmNoaWxkcmVuKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImRibGNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT25MZWZ0U2l6ZSgkbGksIGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlRXhwYW5zaW9uKCRsaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICRsaS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZlcmVuY2UgPSAkbGkuZGF0YShcInJlZmVyZW5jZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlICYmICF0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5TmFtZSA9ICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IGBbJHtkaXNwbGF5TmFtZX1dKCR7dmFsdWV9KWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC52YWwoaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUub24oXCJjbGlja1wiLCBcImxpXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0ICRsaSA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09uTGVmdFNpemUoJGxpLCBldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUV4cGFuc2lvbigkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdFNpbmdsZSh0aGF0LCAkbGkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsaWNraW5nIG91dHNpZGUgdGhlIHBhZ2Ugd2lsbCBoaWRlIHRoZSBkcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHRoYXQuJGNvbWJvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG1ha2VFbGVtZW50ID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgaWYgKCFyZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpPjxpIGNsYXNzPVwiZmEgZmEtZXJyb3JcIiBzdHlsZT1cImNvbG9yOnJlZDtcIj48L2k+bm8gcmVmZXJlbmNlICE8dWw+PC91bD48L2xpPmApO1xuICAgICAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG4gPSByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGxldCB0ID0gKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgbGV0IG5zID0gKF9jID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5uYW1lc3BhY2VJbmRleDtcbiAgICAgICAgdCArPSBucyAhPT0gdW5kZWZpbmVkICYmIHJlZmVyZW5jZS5ub2RlQ2xhc3MubWF0Y2goL1R5cGUvKSA/IGAgKG5zPSR7bnN9KWAgOiBcIlwiO1xuICAgICAgICBjb25zdCB7IGljb24sIGNvbG9yIH0gPSBnZXRJY29uKHJlZmVyZW5jZSk7XG4gICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpPmApO1xuICAgICAgICBpZiAocmVmZXJlbmNlLm5vZGVDbGFzcyA9PT0gXCJWYXJpYWJsZVwiKSB7XG4gICAgICAgICAgICBjb25zdCBjaGVja0JveCA9ICQoJzxzcGFuIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94IHVuY2hlY2tlZFwiPjwvc3Bhbj4nKTtcbiAgICAgICAgICAgICRlbGVtZW50LmFwcGVuZChjaGVja0JveCk7XG4gICAgICAgICAgICAvLyBUb2dnbGUgY2hlY2tib3ggc3RhdGUgd2hlbiBjbGlja2VkXG4gICAgICAgICAgICBjaGVja0JveC5vbihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tCb3guaGFzQ2xhc3MoXCJ1bmNoZWNrZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tCb3gucmVtb3ZlQ2xhc3MoXCJ1bmNoZWNrZWRcIikuYWRkQ2xhc3MoXCJjaGVja2VkXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tCb3gucmVtb3ZlQ2xhc3MoXCJjaGVja2VkXCIpLmFkZENsYXNzKFwidW5jaGVja2VkXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgICRlbGVtZW50LmFwcGVuZCgkKGA8aSBjbGFzcz1cImZhICR7aWNvbn1cIiBzdHlsZT1cImNvbG9yOiR7Y29sb3J9O1wiPjwvaT4ke3R9PHVsPjwvdWw+YCkpO1xuICAgICAgICAkZWxlbWVudC5hZGRDbGFzcyhcImV4cGFuZGFibGVcIik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJ2YWx1ZVwiLCBuKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInJlZmVyZW5jZVwiLCByZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gJGVsZW1lbnQ7XG4gICAgfTtcbiAgICBjb25zdCBkZWNsYXJlRXZlbnRGaWVsZFNlbGVjdG9yV2lkZ2V0ID0gKCkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogWyBUZW1wZXJhdHVyZSAgXVxuICAgICAgICAgKiAgICggdG9vbHRpcCA6ICgvT2JqZWN0cy9NeVNlbnNvcikgKG5zPTE7cz1UZW1wZXJhdHVyZSkpXG4gICAgICAgICAqIFsgKyBbRm9sZGVyXSBPYmplY3RzXVxuICAgICAgICAgKiBbICAgICBbT2JqZWN0XSBNeVNlbnNvcl1cbiAgICAgICAgICogWyAgICAgKCApIFtWYXJpYWJsZV0gVGVtcGVyYXR1cmVdXG4gICAgICAgICAqL1xuICAgICAgICAkLndpZGdldChcInN0ZXJmaXZlLmV2ZW50RmllbGRTZWxlY3RvclwiLCB7XG4gICAgICAgICAgICAvKiBkZWZhdWx0IG9wdGlvbnMgKi9cbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6ICgpID0+ICh7IGVuZHBvaW50OiBcIm9wYy50Y3A6Ly9vcGN1YWRlbW8uc3RlcmZpdmUuY29tOjI2NTQzXCIgfSksXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBiYXNlVXJsOiBcIlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9wb3B1bGF0ZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEZpZWxkID0gbmV3IFNldCgoX2EgPSB0aGF0LiRpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgLnZhbCgpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudG9TdHJpbmcoKS5zcGxpdChcIjtcIiApKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VVcmw6IHRoYXQub3B0aW9ucy5iYXNlVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50OiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geWllbGQgZXh0cmFjdEV2ZW50RmllbGRJbmZvKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnN0YWxsVHJlZShyZXN1bHQsIHNlbGVjdGVkRmllbGQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9pbnN0YWxsVHJlZShyZXN1bHQsIHNlbGVjdEZpZWxkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmV2ZW50cykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJvb3QgPSByZXN1bHQuZXZlbnRzO1xuICAgICAgICAgICAgICAgIGNvbnN0ICRyb290RWxlbWVudCA9IG1ha2VFbGVtZW50KHJvb3QpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuYXBwZW5kKCRyb290RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZml4ID0gXCJcIjtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnN0YWxsQ2hpbGRyZW4oJHJvb3RFbGVtZW50LmNoaWxkcmVuKFwidWxcIiksIHJvb3QsIHByZWZpeCwgc2VsZWN0RmllbGQpO1xuICAgICAgICAgICAgICAgICRyb290RWxlbWVudC5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVWYWx1ZXMoc2VsZWN0RmllbGQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9pbnN0YWxsQ2hpbGRyZW4oJHBhcmVudCwgcGFyZW50LCBwcmVmaXgsIHNlbGVjdGVkRmllbGQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBiID0gKHsgbmFtZSwgbmFtZXNwYWNlSW5kZXggfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmFtZXNwYWNlSW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lc3BhY2VJbmRleH06JHtuYW1lfWA7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudC5jaGlsZHJlbiB8fCBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJUeXBlcyA9IHBhcmVudC5zdWJUeXBlcyB8fCBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbkFuZFN1YlR5cGVzID0gWy4uLmNoaWxkcmVuLCAuLi5zdWJUeXBlc107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbkFuZFN1YlR5cGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQoY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAkcGFyZW50LmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmVmaXgyID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLm5vZGVDbGFzcyA9PT0gXCJWYXJpYWJsZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlZml4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4MiA9IHByZWZpeCArIFwiLlwiICsgYihjaGlsZC5icm93c2VOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDIgPSBiKGNoaWxkLmJyb3dzZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQuYXR0cihcImRhdGEtdmFsdWVcIiwgcHJlZml4Mik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzQ2hpbGRyZW4gPSBjaGlsZC5jaGlsZHJlbiAmJiBjaGlsZC5jaGlsZHJlbi5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1N1YlR5cGVzID0gY2hpbGQuc3ViVHlwZXMgJiYgY2hpbGQuc3ViVHlwZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0NoaWxkcmVuICYmICFoYXNTdWJUeXBlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwibm8tZXhwYW5kYWJsZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luc3RhbGxDaGlsZHJlbigkZWxlbWVudC5jaGlsZHJlbihcInVsXCIpLCBjaGlsZCwgcHJlZml4Miwgc2VsZWN0ZWRGaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkZWxlbWVudC5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfdXBkYXRlU2VsZWN0ZWRGaWVsZHMoKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRmllbGRzID0gbmV3IFNldCgoX2EgPSB0aGF0LiRpbnB1dFxuICAgICAgICAgICAgICAgICAgICAudmFsKCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1N0cmluZygpLnNwbGl0KFwiO1wiICkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVZhbHVlcyhzZWxlY3RlZEZpZWxkcyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX3VwZGF0ZVZhbHVlcyhzZWxlY3RlZEZpZWxkcykge1xuICAgICAgICAgICAgICAgICQoXCIuc3RlcmZpdmUtdHJlZSBsaVwiKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJHRoaXMgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2ID0gJHRoaXMuYXR0cihcImRhdGEtdmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2ICYmIHNlbGVjdGVkRmllbGRzLmhhcyh2KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuY2hpbGRyZW4oXCJzcGFuLmN1c3RvbS1jaGVja2JveFwiKS5yZW1vdmVDbGFzcyhcInVuY2hlY2tlZFwiKS5hZGRDbGFzcyhcImNoZWNrZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfc2V0SW5wdXRWYWx1ZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICBjb25zdCBsaXN0ID0gW107XG4gICAgICAgICAgICAgICAgLy8gY3Jhd2wgdGhlIHRyZWUgdG8gZmluZCBzZWxlY3RlZCBlbGVtZW50cyBhbmQgY3JlYXRlIGEgbGlzdCBvZiBCcm93c2VQYXRoXG4gICAgICAgICAgICAgICAgJChcIi5zdGVyZml2ZS10cmVlIGxpXCIpLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkdGhpcyA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBlbGVtZW50IGlzIHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy5jaGlsZHJlbihcInNwYW4uY3VzdG9tLWNoZWNrYm94LmNoZWNrZWRcIikubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdiA9ICR0aGlzLmF0dHIoXCJkYXRhLXZhbHVlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5wdXNoKHYpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBbLi4ubmV3IFNldChsaXN0KV0uc29ydCgpLmpvaW4oXCI7XCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnZhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfY3JlYXRlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0ID0gdGhpcy5lbGVtZW50O1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvID0gJChcIjxkaXYvPlwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hZGRDbGFzcyhcInN0ZXJmaXZlLWNvbWJvLWJveFwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRbMF0ucGFyZW50RWxlbWVudC5yZXBsYWNlQ2hpbGQodGhhdC4kY29tYm9bMF0sIHRoaXMuZWxlbWVudFswXSk7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5lbGVtZW50LnJlcGxhY2VXaXRoKHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcImlucHV0LWdyb3VwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbnB1dEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiRpbnB1dCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1zaXRlbWFwXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJHRvZ2dsZVRyZWVCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4ub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC4kZHJvcGRvd24uaXMoXCI6dmlzaWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGZsb2F0aW5nQnV0dG9ucy5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGF0LiRkcm9wZG93bi5vZmZzZXQoKTsgLy8gR2V0IHRoZSB0b3AtbGVmdCBjb3JuZXIgcG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICRmbG9hdGluZ0J1dHRvbnMuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGAke29mZnNldC50b3B9cHhgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBgY2FsYygxMDAlIC0gJHtvZmZzZXQubGVmdCArIHRoYXQuJGRyb3Bkb3duLndpZHRoKCl9cHgpYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fcG9wdWxhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3VwZGF0ZVNlbGVjdGVkRmllbGRzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkZmxvYXRpbmdCdXR0b25zLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiLCBcImVudGVyIGEgbm9kZUlkIG9yIGEgYnJvd3NlUGF0aCBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8gPSAkKGA8ZGl2IGNsYXNzPVwiaW5mby10ZXh0XCI+PC9kaXY+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24gPSAkKFwiPGRpdi8+XCIpLmFkZENsYXNzKFwic3RlcmZpdmUtZHJvcGRvd25cIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0ICRzY3JvbGxhYmxlQ29udGVudCA9ICQoJzxkaXYgY2xhc3M9XCJzdGVyZml2ZS1kcm9wZG93bi1zY3JvbGxhYmxlLWNvbnRlbnRcIj48L2Rpdj4nKTtcbiAgICAgICAgICAgICAgICBjb25zdCAkdmFsaWRhdGVCdXR0b24gPSAkKCc8c3BhbiBjbGFzcz1cInZhbGlkYXRlLWJ1dHRvblwiPuKclDwvc3Bhbj4nKTsgLy8gVXNlIGFueSBpY29uIG9yIHRleHQgaGVyZVxuICAgICAgICAgICAgICAgIGNvbnN0ICRjYW5jZWxCdXR0b24gPSAkKCc8c3BhbiBjbGFzcz1cImNhbmNlbC1idXR0b25cIj7inJY8L3NwYW4+Jyk7IC8vIFVzZSBhbnkgaWNvbiBvciB0ZXh0IGhlcmVcbiAgICAgICAgICAgICAgICBjb25zdCAkZmxvYXRpbmdCdXR0b25zID0gJCgnPGRpdiBjbGFzcz1cImZsb2F0aW5nLWJ1dHRvbnNcIj48L2Rpdj4nKS5hcHBlbmQoJHZhbGlkYXRlQnV0dG9uLCAkY2FuY2VsQnV0dG9uKTtcbiAgICAgICAgICAgICAgICAkZmxvYXRpbmdCdXR0b25zLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAvLyBEZWZpbmUgeW91ciB2YWxpZGF0aW9uIGFuZCBjYW5jZWxsYXRpb24gbG9naWNcbiAgICAgICAgICAgICAgICAkdmFsaWRhdGVCdXR0b24ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuX3NldElucHV0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICRjYW5jZWxCdXR0b24ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5mbyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlID0gJChgPHVsIGNsYXNzPVwic3RlcmZpdmUtdHJlZVwiPjwvdWw+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uZW1wdHkoKS5hcHBlbmQodGhhdC4kdHJlZSwgJGZsb2F0aW5nQnV0dG9ucyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlV2lkdGggPSAyMDsgLy8gU2V0IHdpZHRoIG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZUhlaWdodCA9IDIwOyAvLyBTZXQgaGVpZ2h0IG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3MgPSAkKHRoaXMpLm9mZnNldCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnBhZ2VYID49IGVsZW1lbnRQb3MubGVmdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWCA8PSBlbGVtZW50UG9zLmxlZnQgKyBiZWZvcmVXaWR0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWSA+PSBlbGVtZW50UG9zLnRvcCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWSA8PSBlbGVtZW50UG9zLnRvcCArIGJlZm9yZUhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJjbGlja2VkIG9uIGljb25cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImNsaWNrZWQgb24gXCIsICRsaS5kYXRhKFwidmFsdWVcIiksICRsaS5hdHRyKFwiY2xhc3NcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvZ2dsZSBpdHMgZXhwYW5kZWQvY29sbGFwc2VkIHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCBleHBhbmRhYmxlIGFuZCBleHBhbmRlZCBjbGFzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnRvZ2dsZUNsYXNzKFwiZXhwYW5kYWJsZSBleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5jaGlsZHJlbihcInVsXCIpLmNoaWxkcmVuKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsaWNraW5nIG91dHNpZGUgdGhlIHBhZ2Ugd2lsbCBoaWRlIHRoZSBkcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHRoYXQuJGNvbWJvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIGNvbnN0IGV4dHJhY3RFdmVudEZpZWxkSW5mbyA9IChfYSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgW19hXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCwgfSkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vZXh0cmFjdEV2ZW50VHlwZXNgO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hpbmcgZmFpbGVkIHdpdGggZXJyb3JcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICByZXR1cm4geyBldmVudHM6IG51bGwgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoZWQgOiBcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0geWllbGQgZGF0YS5qc29uKCk7XG4gICAgICAgIGNvbnN0IGV2ZW50cyA9IHJlc3BvbnNlLmV2ZW50cztcbiAgICAgICAgcmV0dXJuIHsgZXZlbnRzIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBnZXRFbmRQb2ludEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0ICRlbmRwb2ludCA9ICQoXCIjbm9kZS1pbnB1dC1lbmRwb2ludFwiKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnRJZCA9ICRlbmRwb2ludC52YWwoKTtcbiAgICAgICAgY29uc3QgcmVkTm9kZSA9IFJFRC5ub2Rlcy5ub2RlKGVuZHBvaW50SWQpO1xuICAgICAgICBpZiAoIXJlZE5vZGUpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAvLyBjb25zdCBjcmVkZW50aWFscyA9IFJFRC4oZW5kcG9pbnRJZCk7XG4gICAgICAgIC8vIHdlIG5lZWQgdG8gc2FuaXRpemUgYW5kIGV4dHJhY3QgdGhlIGVuZHBvaW50IGF0dHJpYnV0ZXMgb25seSAoIG5vdCB0aGUgbm9kZS1yZWQgc3R1ZmYpXG4gICAgICAgIGNvbnN0IHsgZW5kcG9pbnQsIHNlY3VyaXR5TW9kZSwgc2VjdXJpdHlQb2xpY3ksIHVzZXJJZGVudGl0eVR5cGUsIGNyZWRlbnRpYWxzIH0gPSByZWROb2RlO1xuICAgICAgICBjb25zdCByZXRWYWx1ZSA9IHtcbiAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgc2VjdXJpdHlNb2RlLFxuICAgICAgICAgICAgc2VjdXJpdHlQb2xpY3ksXG4gICAgICAgICAgICB1c2VySWRlbnRpdHlUeXBlLFxuICAgICAgICAgICAgY3JlZGVudGlhbHMsXG4gICAgICAgIH07XG4gICAgICAgIC8vIHh4IGNvbnNvbGUubG9nKFwieHh4XCIsIHJldFZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHJldFZhbHVlO1xuICAgIH07XG4gICAgY29uc3QgZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzSGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgY29uc3QgZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50SWQgPSAkZW5kcG9pbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50TnIgPSBnZXRFbmRQb2ludEF0dHJpYnV0ZXMoKTtcbiAgICAgICAgaWYgKCFlbmRwb2ludE5yKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDogZW5kcG9pbnRJZCxcbiAgICAgICAgICAgIC8vIGVuZHBvaW50OiBlbmRwb2ludE5yLmVuZHBvaW50LFxuICAgICAgICAgICAgLy8gc2VjdXJpdHlNb2RlOiBlbmRwb2ludE5yLnNlY3VyaXR5TW9kZSxcbiAgICAgICAgICAgIC8vIHNlY3VyaXR5UG9saWN5OiBlbmRwb2ludE5yLnNlY3VyaXR5UG9saWN5LFxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIHVzZXJJZGVudGl0eVR5cGU6IGVuZHBvaW50TnIudXNlcklkZW50aXR5VHlwZSxcbiAgICAgICAgICAgIC8vIGNyZWRlbnRpYWw6IGVuZHBvaW50TnIuY3JlZGVudGlhbHMsXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gdXNlck5hbWU6IGVuZHBvaW50TnIudXNlcklkZW50aXR5VHlwZSA9PT0gXCJVc2VyTmFtZVwiID8gZW5kcG9pbnROci5jcmVkZW50aWFscy51c2VyTmFtZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIC8vIHBhc3N3b3JkOiBlbmRwb2ludE5yLnVzZXJJZGVudGl0eVR5cGUgPT09IFwiVXNlck5hbWVcIiA/IGVuZHBvaW50TnIuY3JlZGVudGlhbHMucGFzc3dvcmQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAvLyB1c2VyQ2VydGlmaWNhdGU6IGVuZHBvaW50TnIuY3JlZGVudGlhbHMudXNlckNlcnRpZmljYXRlLFxuICAgICAgICAgICAgLy8gdXNlclByaXZhdGVrZXk6IGVuZHBvaW50TnIuY3JlZGVudGlhbHMudXNlclByaXZhdGVrZXksXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIFJFRC5ub2Rlcy5yZWdpc3RlclR5cGUoXCJPcGNVYS1DbGllbnQyLU1vbml0b3JFdmVudFwiLCB7XG4gICAgICAgIGNhdGVnb3J5OiBcIm9wY3VhXCIsXG4gICAgICAgIGNvbG9yOiBcIiNDMERFRURcIixcbiAgICAgICAgYWxpZ246IFwicmlnaHRcIixcbiAgICAgICAgaWNvbjogXCJvcGN1YWxvZ29iaWcucG5nXCIsXG4gICAgICAgIHBhbGV0dGVMYWJlbDogXCJtb25pdG9yIGV2ZW50c1wiLFxuICAgICAgICBkZWZhdWx0czoge1xuICAgICAgICAgICAgaW5wdXRzOiB7IHZhbHVlOiAxIH0sXG4gICAgICAgICAgICBvdXRwdXQ6IHsgdmFsdWU6IDQgfSxcbiAgICAgICAgICAgIG5hbWU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIGVuZHBvaW50OiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogdHJ1ZSwgdHlwZTogXCJPcGNVYS1FbmRwb2ludDJcIiB9LFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uOiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiXCIsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGU6ICh2YWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gXCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdGFydEltbWVkaWF0ZWx5OiB7IHZhbHVlOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgLy8gd2UgdXNlIGEgZGlmZmVyZW50IHdpZGdldCBmb3IgZWRpdGluZyB0aGUgbm9kZUlkLCBiZWNhdXNlIHRoZSBiZWhhdmlvclxuICAgICAgICAgICAgLy8gaXMgc3BlY2lmaWMgdG8gbW9uaXRvciwgaG93ZXZlciBwcm9wZXJ0eSB3aWxsIGJlIHN0b3JlZCBpbiBub2RlSWRcbiAgICAgICAgICAgIG5vZGVJZDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IGZhbHNlLCB2YWxpZGF0ZTogKCkgPT4gdHJ1ZSB9LFxuICAgICAgICAgICAgc2FtcGxpbmdJbnRlcnZhbDogeyB2YWx1ZTogMTAwMCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIGRpc2NhcmRPbGRlc3Q6IHsgdmFsdWU6IHRydWUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICBxdWV1ZVNpemU6IHsgdmFsdWU6IDEwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgc2VsZWN0Q2xhdXNlczogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHdoZXJlQ2xhdXNlOiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gaW5wdXRzOixcbiAgICAgICAgb3V0cHV0czogMiwgLy8gMiBvdXRwdXQsIHNlY29uZCBmb3IgcmF3IG5vZGUtb3BjdWEgZGlhZ25vc3RpY3Mgb3IgbW9yZSBjb21wbGV0ZSBtZXNzYWdlXG4gICAgICAgIGxhYmVsKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSB8fCBcIk9QQ1VBIE1vbml0b3JcIjtcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWxTdHlsZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgPyBcIm5vZGVfbGFiZWxfaXRhbGljXCIgOiBcIlwiO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRwcmVwYXJlKCkge1xuICAgICAgICAgICAgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0KCk7XG4gICAgICAgICAgICBkZWNsYXJlRXZlbnRGaWVsZFNlbGVjdG9yV2lkZ2V0KCk7XG4gICAgICAgICAgICBpbnN0YWxsU3Vic2NyaXB0aW9uU2VsZWN0b3IoUkVELCB0aGlzKTtcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBoYW5kbGUgQWN0aW9uIE1vbml0b3IgQ29tbW9uXG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgLy8gLS0gaW5zdGFsbCBzdWJzY3JpcHRpb24gc2VsZWN0aW9uXG4gICAgICAgICAgICAkKFwibm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGVja2VkID0gJChcIiNub2RlLWlucHV0LXN0YXJ0SW1tZWRpYXRlbHlcIikucHJvcChcImNoZWNrZWRcIik7XG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LWlucHV0c1wiKS52YWwoMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtaW5wdXRzXCIpLnZhbCgxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBoYW5kbGUgQWN0aW9uIE1vbml0b3JcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICBjb25zdCAkbm9kZUlkID0gJChcIiNub2RlLWlucHV0LW5vZGVJZFwiKTtcbiAgICAgICAgICAgICRub2RlSWQubm9kZUJyb3dzZXIoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBnZXRFbmRwb2ludFBhcmFtZXRlcnNIYW5kbGVyKCkpLCB7IGZpbHRlcihub2RlRGVzYykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIk9iamVjdFwiO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaXNTZWxlY3RhYmxlKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiT2JqZWN0XCIgLyogdG8gZG8gfHwgbm9kZURlc2MuZXZlbnROb3RpZmllciA9PT0gMSAqLztcbiAgICAgICAgICAgICAgICB9IH0pKTtcbiAgICAgICAgICAgIC8vIC0tLS0tLSBpbnN0YWxsIGV2ZW50IGZpZWxkIHNlbGVjdG9yXG4gICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtd2hlcmVDbGF1c2VcIik7XG4gICAgICAgICAgICBjb25zdCAkc2VsZWN0Q2xhdXNlcyA9ICQoXCIjbm9kZS1pbnB1dC1zZWxlY3RDbGF1c2VzXCIpO1xuICAgICAgICAgICAgJHNlbGVjdENsYXVzZXMuZXZlbnRGaWVsZFNlbGVjdG9yKE9iamVjdC5hc3NpZ24oe30sIGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIoKSkpO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRzYXZlKCkge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRJbW1lZGlhdGVseSA9ICQoXCIjbm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLnByb3AoXCJjaGVja2VkXCIpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0SW1tZWRpYXRlbHkpIHtcbiAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtc3RhcnRJbW1lZGlhdGVseVwiKS52YWwoc3RhcnRJbW1lZGlhdGVseSA/IDAgOiAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0cyA9IHN0YXJ0SW1tZWRpYXRlbHkgPyAwIDogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICQoXCIjbm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLnZhbCgxKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0cyA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbn0pKCk7Il19
|
7
|
+
function _0x5277(_0x1d1c6d,_0x565035){const _0x54a974=_0x54a9();return _0x5277=function(_0x527700,_0x5d92f3){_0x527700=_0x527700-0x14d;let _0x5821a4=_0x54a974[_0x527700];return _0x5821a4;},_0x5277(_0x1d1c6d,_0x565035);}function _0x54a9(){const _0x51f22c=['<option/>','left','sterfive-info','css','fetched\x20:\x20','registerType','call','OpcUa-Client2-MonitorEvent','clicked\x20on\x20','trigger','relativePath','ns=0;i=47','IsForward','$dropdown','pageY','toggleClass','px)','filter','$tree','i=61','CadetBlue','already\x20loading','li[key=\x22','log','events','ObjectType','apply','2vFPOHM','Variable','parentNode','6DBbFWk','\x22}><span\x20class=\x22tree-text\x22\x20title=','no-expandable','hide','show','ns=0;i=46','OpcUa-Endpoint2','click','#C0DEED','HasProperty','.spinner','hasClass','Object','pageX','__parentNode','loading','#node-input-selectClauses','\x22\x20style=\x22color:','21716244pMOWOZ','Inverse','$input','each','inputs','failure','err','target','isTypeRef','unchecked','references','1093590WJudkX','name','node','options','Both',':first','NodeClass','POST','.tree-text:first','append','<div\x20class=\x22floating-buttons\x22></div>','SteelBlue','endpoint','DataType','nodeClass','length','SandyBrown','browsePath','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','namespaceIndex','$verifyBtn','.sterfive-tree\x20li','element','displayName','then','!!failure!!','nodes','DodgerBlue','text','$combo','appendTo','browseName','_populate','top','node-input-startImmediately',';\x22></i>','next','widget','734152hPkMxm','Organizes','reference','referenceTypeId','find','<li>error\x20','currentParent','1081237bAxSuR','<li>','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','$toggleTreeBtn','_installChildren','right','change','#node-input-subscription','prop','has','json','sterfive-combo-box','match','closest','status','parentElement','nodeId','VariableType','eventFieldSelector','$inputGroup','<ul></ul>','/extractEventTypes','throw','TypeDefinition','class','isSelectable','animate','input-group','3627211SewkSh','30GmNcRR','fetching\x20failed\x20with\x20error','/checkNodeId','</span><ul></ul></li>','subscriptions','offset','/walk-backward','scrollTop','<div\x20class=\x22info-text\x22></div>','1052919Gpjuig','Method','val','fa-sliders','endpointNode','420wlqAYY','_setInputValue','join','attr','reset','$info','ns=0;i=34','application/json','DisplayName','value','sterfive.eventFieldSelector','replaceWith','ns=0;i=85','fa-cog','expandable','Invalid','BrowseName','View','expandable\x20expanded','checked','toggle','message','<span\x20class=\x22validate-button\x22>✔</span>','children','addClass','fa-question','HasChild','already\x20fetched','HasTypeDefinition','fetched','monitor\x20events','li\x20>\x20.tree-text','DarkOrange','<span\x20class=\x22cancel-button\x22>✖</span>','ReferenceType','resolveParentNode','elements','</li>','node_label_italic','assign','width','span.custom-checkbox.checked','SeaGreen','rgba(61,\x2060,\x204,\x200.525)','subTypes','error','typeDefinition','11124QXtDxK','stopPropagation','data','placeholder','<div/>','fa-object-group','statusCode','opc.tcp://opcuademo.sterfive.com:26543','toString','selected','Good','grey','#node-input-nodeId','verify','expanded','fa-list-alt',':visible','#node-input-endpoint','_updateValues','stringify','Forward','#node-input-whereClause','#node-input-startImmediately','<i\x20class=\x22fa\x20','removeClass','baseUrl','sterfive-dropdown','empty','statusText','/opcua-endpoint2','calc(100%\x20-\x20','function','#node-input-inputs'];_0x54a9=function(){return _0x51f22c;};return _0x54a9();}(function(_0x1b093c,_0x6975e3){const _0x2b8113=_0x5277,_0x1567dc=_0x1b093c();while(!![]){try{const _0x15e37b=-parseInt(_0x2b8113(0x19a))/0x1*(parseInt(_0x2b8113(0x14d))/0x2)+-parseInt(_0x2b8113(0x1f4))/0x3*(parseInt(_0x2b8113(0x1c5))/0x4)+parseInt(_0x2b8113(0x16d))/0x5+-parseInt(_0x2b8113(0x150))/0x6*(-parseInt(_0x2b8113(0x1b6))/0x7)+-parseInt(_0x2b8113(0x193))/0x8+-parseInt(_0x2b8113(0x1c0))/0x9*(parseInt(_0x2b8113(0x1b7))/0xa)+parseInt(_0x2b8113(0x162))/0xb;if(_0x15e37b===_0x6975e3)break;else _0x1567dc['push'](_0x1567dc['shift']());}catch(_0x2319c6){_0x1567dc['push'](_0x1567dc['shift']());}}}(_0x54a9,0xc2c50),(function(){'use strict';const _0x1a2cb8=_0x5277;function _0xc3ff79(_0x2e7c85,_0xff1e8){const _0x40593f=_0x5277,_0x31fd41=$(_0x40593f(0x205)),_0x59e1e8=$(_0x40593f(0x1a1)),_0x232d7d=()=>{const _0x451577=_0x40593f,_0x2edb03=_0x2e7c85[_0x451577(0x187)][_0x451577(0x16f)](_0x31fd41[_0x451577(0x1c2)]());_0x59e1e8[_0x451577(0x20f)]();if(!_0x2edb03||!_0x2edb03[_0x451577(0x1bb)])return;if(_0x2edb03['subscriptions'])for(const _0x4b7019 of _0x2edb03['subscriptions']){const _0x1c51b3=_0x4b7019[_0x451577(0x16e)]||_0x4b7019['id'];$(_0x451577(0x215),{'value':_0x4b7019['id'],'label':_0x1c51b3,'selected':_0x4b7019['id']===_0xff1e8['subscription']})[_0x451577(0x189)](_0x1c51b3)[_0x451577(0x18b)](_0x59e1e8);}};_0x232d7d(),_0x59e1e8['on']('focus\x20click',()=>{_0x232d7d();}),_0x31fd41['on'](_0x40593f(0x1a0),()=>{_0x232d7d();});}function _0x3834a4(_0x178338,_0x5be7bf,_0x4891ea,_0x3b71c2){function _0x464367(_0x290033){return _0x290033 instanceof _0x4891ea?_0x290033:new _0x4891ea(function(_0xbc93b4){_0xbc93b4(_0x290033);});}return new(_0x4891ea||(_0x4891ea=Promise))(function(_0xa46cc,_0xca44e4){const _0x576f=_0x5277;function _0x1fece0(_0x5492d1){const _0x471a1e=_0x5277;try{_0x96b91f(_0x3b71c2[_0x471a1e(0x191)](_0x5492d1));}catch(_0xc7851b){_0xca44e4(_0xc7851b);}}function _0x20a5e7(_0x2ce40e){const _0x5b8086=_0x5277;try{_0x96b91f(_0x3b71c2[_0x5b8086(0x1b0)](_0x2ce40e));}catch(_0x3c129f){_0xca44e4(_0x3c129f);}}function _0x96b91f(_0x5c15ed){const _0x59f32c=_0x5277;_0x5c15ed['done']?_0xa46cc(_0x5c15ed[_0x59f32c(0x1ce)]):_0x464367(_0x5c15ed['value'])[_0x59f32c(0x185)](_0x1fece0,_0x20a5e7);}_0x96b91f((_0x3b71c2=_0x3b71c2[_0x576f(0x22f)](_0x178338,_0x5be7bf||[]))['next']());});}typeof SuppressedError===_0x1a2cb8(0x213)?SuppressedError:function(_0x492b56,_0x38d721,_0x3d4a9e){const _0x3b156c=_0x1a2cb8;var _0x303617=new Error(_0x3d4a9e);return _0x303617[_0x3b156c(0x16e)]='SuppressedError',_0x303617[_0x3b156c(0x1f2)]=_0x492b56,_0x303617['suppressed']=_0x38d721,_0x303617;};const _0x266e9d='ns=0;i=35',_0x364de9='ns=0;i=61',_0x548ca2=_0x1a2cb8(0x220),_0x252520=_0x1a2cb8(0x155),_0x41d386=_0x1a2cb8(0x1cb),_0x770bfd='ns=0;i=45',_0x5bdbb3='ns=0;i=40';var _0x43c1e9;(function(_0x176547){const _0xb2a286=_0x1a2cb8;_0x176547[_0x176547['Forward']=0x0]=_0xb2a286(0x208),_0x176547[_0x176547[_0xb2a286(0x163)]=0x1]='Inverse',_0x176547[_0x176547[_0xb2a286(0x171)]=0x2]='Both',_0x176547[_0x176547[_0xb2a286(0x1d4)]=0x3]=_0xb2a286(0x1d4);}(_0x43c1e9||(_0x43c1e9={})));var _0x21750e;(function(_0x40b92d){const _0x5732a2=_0x1a2cb8;_0x40b92d[_0x40b92d['Unspecified']=0x0]='Unspecified',_0x40b92d[_0x40b92d[_0x5732a2(0x15c)]=0x1]=_0x5732a2(0x15c),_0x40b92d[_0x40b92d['Variable']=0x2]='Variable',_0x40b92d[_0x40b92d[_0x5732a2(0x1c1)]=0x4]=_0x5732a2(0x1c1),_0x40b92d[_0x40b92d[_0x5732a2(0x22e)]=0x8]='ObjectType',_0x40b92d[_0x40b92d[_0x5732a2(0x1ab)]=0x10]='VariableType',_0x40b92d[_0x40b92d[_0x5732a2(0x1e7)]=0x20]=_0x5732a2(0x1e7),_0x40b92d[_0x40b92d[_0x5732a2(0x17a)]=0x40]='DataType',_0x40b92d[_0x40b92d[_0x5732a2(0x1d6)]=0x80]=_0x5732a2(0x1d6);}(_0x21750e||(_0x21750e={})));var _0x14f570;(function(_0x2a563b){const _0x16c7f9=_0x1a2cb8;_0x2a563b[_0x2a563b[_0x16c7f9(0x15c)]=0x1]=_0x16c7f9(0x15c),_0x2a563b[_0x2a563b[_0x16c7f9(0x14e)]=0x2]=_0x16c7f9(0x14e),_0x2a563b[_0x2a563b[_0x16c7f9(0x1c1)]=0x4]='Method',_0x2a563b[_0x2a563b[_0x16c7f9(0x22e)]=0x8]=_0x16c7f9(0x22e),_0x2a563b[_0x2a563b[_0x16c7f9(0x1ab)]=0x10]='VariableType',_0x2a563b[_0x2a563b[_0x16c7f9(0x1e7)]=0x20]='ReferenceType',_0x2a563b[_0x2a563b[_0x16c7f9(0x17a)]=0x40]=_0x16c7f9(0x17a),_0x2a563b[_0x2a563b['View']=0x80]='View';}(_0x14f570||(_0x14f570={})));var _0x46cc78;(function(_0x257ea4){const _0x3a9ec6=_0x1a2cb8;_0x257ea4[_0x257ea4[_0x3a9ec6(0x1e7)]=0x1]=_0x3a9ec6(0x1e7),_0x257ea4[_0x257ea4[_0x3a9ec6(0x221)]=0x2]=_0x3a9ec6(0x221),_0x257ea4[_0x257ea4['NodeClass']=0x4]=_0x3a9ec6(0x173),_0x257ea4[_0x257ea4[_0x3a9ec6(0x1d5)]=0x8]=_0x3a9ec6(0x1d5),_0x257ea4[_0x257ea4[_0x3a9ec6(0x1cd)]=0x10]=_0x3a9ec6(0x1cd),_0x257ea4[_0x257ea4[_0x3a9ec6(0x1b1)]=0x20]=_0x3a9ec6(0x1b1);}(_0x46cc78||(_0x46cc78={})));function _0x53b969(_0x428ccb){const _0xc29fda=_0x1a2cb8;switch(_0x428ccb){case _0xc29fda(0x194):return _0x266e9d;case _0xc29fda(0x159):return _0x252520;case'HasComponent':return _0x548ca2;case _0xc29fda(0x1df):return _0x41d386;case'HasSubtype':return _0x770bfd;case _0xc29fda(0x1e1):return _0x5bdbb3;}}const _0x151e30=_0x14edae=>{const _0x393217=_0x1a2cb8;switch(_0x14edae[_0x393217(0x17b)]){case _0x393217(0x15c):if(_0x14edae[_0x393217(0x196)]===_0x266e9d);if(_0x14edae[_0x393217(0x1f3)]===_0x364de9||_0x14edae['referenceTypeId']===_0x393217(0x228))return{'icon':'fa-folder','color':_0x393217(0x1f0)};return{'icon':'fa-object-group','color':_0x393217(0x1ef)};case _0x393217(0x14e):if(_0x14edae[_0x393217(0x196)]===_0x548ca2)return{'icon':_0x393217(0x203),'color':_0x393217(0x178)};else return _0x14edae['referenceTypeId']===_0x252520?{'icon':_0x393217(0x203),'color':_0x393217(0x188)}:{'icon':_0x393217(0x203),'color':_0x393217(0x229)};case _0x393217(0x1c1):return{'icon':_0x393217(0x1d2),'color':_0x393217(0x17d)};case _0x393217(0x22e):return{'icon':_0x393217(0x1f9),'color':_0x393217(0x1e5)};case _0x393217(0x1ab):return{'icon':_0x393217(0x1c3),'color':'DarkOrange'};case'DataType':return{'icon':'fa-text-width','color':_0x393217(0x229)};}return{'icon':_0x393217(0x1de),'color':_0x393217(0x1ff)};},_0xca03ee=(_0x35b16d,_0x4b99f3,_0x1e9317)=>_0x3834a4(void 0x0,[_0x35b16d,_0x4b99f3,_0x1e9317],void 0x0,function*({endpointNode:_0x425c7d,endpoint:_0x4f2603,baseUrl:_0x2c0ed5},_0x186208,_0x163c77){const _0x343d22=_0x1a2cb8,_0x3a48bc=_0x2c0ed5+_0x343d22(0x211),_0x25573e=_0x3a48bc+'/browse',_0x5b3942=Object[_0x343d22(0x1ec)](Object[_0x343d22(0x1ec)]({},_0x163c77),{'nodeId':_0x186208,'resultMask':0x3f}),_0x6532c6=yield fetch(_0x25573e,{'method':_0x343d22(0x174),'body':JSON[_0x343d22(0x207)]({'endpointNode':_0x425c7d,'endpoint':_0x4f2603,'browseDescription':_0x5b3942}),'headers':{'Content-Type':_0x343d22(0x1cc)}});if(_0x6532c6[_0x343d22(0x1a8)]!==0xc8)return console[_0x343d22(0x22c)](_0x343d22(0x1b8),_0x6532c6['status'],_0x6532c6['statusText']),{'references':[]};const _0x12d375=yield _0x6532c6['json'](),_0x10a3a3=_0x12d375['browseResult'][_0x343d22(0x16c)]||[];return{'references':_0x10a3a3};}),_0x363940={'referenceTypeId':_0x53b969(_0x1a2cb8(0x1df)),'includeSubtypes':!![],'browseDirection':_0x43c1e9[_0x1a2cb8(0x208)],'nodeClassMask':_0x21750e[_0x1a2cb8(0x14e)]|_0x21750e[_0x1a2cb8(0x15c)]|_0x21750e[_0x1a2cb8(0x1c1)],'resultMask':0x3f},_0x7db240={'referenceTypeId':_0x53b969(_0x1a2cb8(0x194)),'includeSubtypes':!![],'browseDirection':_0x43c1e9[_0x1a2cb8(0x208)],'nodeClassMask':_0x21750e[_0x1a2cb8(0x14e)]|_0x21750e[_0x1a2cb8(0x15c)]|_0x21750e[_0x1a2cb8(0x1c1)],'resultMask':0x3f},_0x51885c=(_0x39fbd9,_0xcf6f53)=>_0x3834a4(void 0x0,[_0x39fbd9,_0xcf6f53],void 0x0,function*({endpointNode:_0x38c953,endpoint:_0x3af57d,baseUrl:_0x467864},{nodeId:_0x31716e,rootNodeId:_0xb5027a,isType:_0x1cdcb4}){const _0xb30ebf=_0x1a2cb8,_0x13be41=_0x467864+_0xb30ebf(0x211),_0x514a13=_0x13be41+_0xb30ebf(0x1bd),_0xf46efb=yield fetch(_0x514a13,{'method':_0xb30ebf(0x174),'body':JSON['stringify']({'endpointNode':_0x38c953,'endpoint':_0x3af57d,'nodeId':_0x31716e,'rootNodeId':_0xb5027a,'isType':_0x1cdcb4}),'headers':{'Content-Type':_0xb30ebf(0x1cc)}});if(_0xf46efb[_0xb30ebf(0x1a8)]!==0xc8)return null;const _0x174cf7=yield _0xf46efb[_0xb30ebf(0x1a4)]();return _0x174cf7[_0xb30ebf(0x17e)];}),_0x218e81=(_0x2fc9e8,_0x38e266,_0x183c3d)=>_0x3834a4(void 0x0,[_0x2fc9e8,_0x38e266,_0x183c3d],void 0x0,function*({endpointNode:_0x18e604,endpoint:_0x9fd19c,baseUrl:_0x2a1ccc},_0x31cca8,_0x32b4b0){const _0x2de605=_0x1a2cb8,_0x2042a9=_0x2a1ccc+_0x2de605(0x211),_0x345964=_0x2042a9+_0x2de605(0x1b9),_0x5b4e53=_0x31cca8[_0x2de605(0x1c2)](),_0x884f2c=yield fetch(_0x345964,{'method':'POST','body':JSON[_0x2de605(0x207)]({'endpointNode':_0x18e604,'endpoint':_0x9fd19c,'nodeId':_0x5b4e53}),'headers':{'Content-Type':_0x2de605(0x1cc)}}),_0x2f68e2=(_0x2bd351,_0x1e7aa6)=>{const _0x4b2dc8=_0x2de605;_0x32b4b0[_0x4b2dc8(0x189)](_0x2bd351)[_0x4b2dc8(0x1dd)](_0x4b2dc8(0x217))[_0x4b2dc8(0x1dd)](_0x1e7aa6),_0x32b4b0[_0x4b2dc8(0x154)](),setTimeout(()=>{const _0x3d7cbd=_0x4b2dc8;_0x32b4b0['removeClass'](_0x1e7aa6),_0x32b4b0[_0x3d7cbd(0x153)]();},0xbb8);},_0x405cd0=yield _0x884f2c[_0x2de605(0x1a4)]();_0x884f2c[_0x2de605(0x1a8)]!==0xc8?_0x2f68e2(_0x2de605(0x186)+_0x5b4e53,_0x2de605(0x167)):_0x405cd0[_0x2de605(0x1fa)][_0x2de605(0x1a6)](/Good/)?(_0x31cca8['val'](_0x405cd0['nodeAddressString']),_0x31cca8[_0x2de605(0x21e)](_0x2de605(0x1a0)),_0x2f68e2(_0x2de605(0x1fe),'ok')):(_0x31cca8[_0x2de605(0x1c2)](''+_0x5b4e53),_0x2f68e2(_0x405cd0[_0x2de605(0x1fa)]+'\x20'+_0x884f2c[_0x2de605(0x210)],_0x2de605(0x167)));});function _0x5d138a(_0x476102,_0x1782ad){return _0x3834a4(this,void 0x0,void 0x0,function*(){const _0x5aabc7=_0x5277,_0x3a594d=_0x476102[_0x5aabc7(0x1f6)](_0x5aabc7(0x1ce)),_0x37acc3=yield _0xca03ee(_0x1782ad,_0x3a594d,_0x363940),_0x2a5c8d=yield _0xca03ee(_0x1782ad,_0x3a594d,_0x7db240);return{'references':[..._0x37acc3['references'],..._0x2a5c8d[_0x5aabc7(0x16c)]]};});}const _0xce85d5={'referenceTypeId':_0x53b969('HasSubtype'),'includeSubtypes':!![],'browseDirection':_0x43c1e9[_0x1a2cb8(0x208)],'nodeClassMask':_0x21750e[_0x1a2cb8(0x1e7)]|_0x21750e[_0x1a2cb8(0x22e)]|_0x21750e[_0x1a2cb8(0x17a)]|_0x21750e[_0x1a2cb8(0x1ab)],'resultMask':0x3f};function _0x1e4f0a(_0x3f417c,_0x2dd6a8){return _0x3834a4(this,void 0x0,void 0x0,function*(){const _0x19ce40=_0x3f417c['data']('value'),_0x1510f2=yield _0xca03ee(_0x2dd6a8,_0x19ce40,_0xce85d5);return _0x1510f2;});}const _0x5449ab=_0x471017=>{const _0x58a04a=_0x1a2cb8;var _0x11015a,_0x452892,_0x5aa837,_0x7f9c67;if(!_0x471017||!_0x471017[_0x58a04a(0x1aa)]){const _0x5cc3f1=$(_0x58a04a(0x19c));return _0x5cc3f1;}const _0x4dd425=_0x471017[_0x58a04a(0x1aa)][_0x58a04a(0x1fc)](),_0xffed06=((_0x11015a=_0x471017[_0x58a04a(0x184)])===null||_0x11015a===void 0x0?void 0x0:_0x11015a[_0x58a04a(0x189)])||((_0x452892=_0x471017[_0x58a04a(0x18c)])===null||_0x452892===void 0x0?void 0x0:_0x452892[_0x58a04a(0x16e)])||_0x471017[_0x58a04a(0x1aa)][_0x58a04a(0x1fc)](),{icon:_0x6b4217,color:_0x2ceb62}=_0x151e30(_0x471017),_0x179ee2='('+_0x471017[_0x58a04a(0x1aa)][_0x58a04a(0x1fc)]()+')\x20'+(((_0x5aa837=_0x471017['browseName'])===null||_0x5aa837===void 0x0?void 0x0:_0x5aa837[_0x58a04a(0x16e)])||((_0x7f9c67=_0x471017[_0x58a04a(0x184)])===null||_0x7f9c67===void 0x0?void 0x0:_0x7f9c67[_0x58a04a(0x189)])||''),_0x77d1be=$('<li\x20key=\x22'+_0x471017[_0x58a04a(0x1aa)][_0x58a04a(0x1fc)]()+_0x58a04a(0x151)+_0x179ee2+'><i\x20class=\x22fa\x20'+_0x6b4217+_0x58a04a(0x161)+_0x2ceb62+';\x22></i>\x20'+_0xffed06+_0x58a04a(0x1ba));return _0x77d1be[_0x58a04a(0x1dd)](_0x58a04a(0x1d3)),_0x77d1be[_0x58a04a(0x1f6)](_0x58a04a(0x1ce),_0x4dd425),_0x77d1be[_0x58a04a(0x1f6)](_0x58a04a(0x195),_0x471017),_0x77d1be;},_0x3c228b=(_0x1900c5,_0x229d66)=>{const _0xfb0957=_0x1a2cb8;return _0x229d66[_0xfb0957(0x197)](_0xfb0957(0x22b)+_0x1900c5+'\x22]');},_0x1d75f9=(_0x4ee9c7,_0x529846)=>{const _0x40c33e=_0x1a2cb8;_0x4ee9c7[_0x40c33e(0x227)][_0x40c33e(0x197)](_0x40c33e(0x1e4))['removeClass'](_0x40c33e(0x1fd)),_0x529846['find'](_0x40c33e(0x175))[_0x40c33e(0x1dd)](_0x40c33e(0x1fd));},_0x3de566=(_0x1b70f0,_0x10c6e6,_0x5ae0de)=>_0x3834a4(void 0x0,void 0x0,void 0x0,function*(){const _0xcf5f65=_0x1a2cb8;let _0x69dc41=_0x5ae0de[_0xcf5f65(0x1dc)](_0xcf5f65(0x172));_0x10c6e6[_0xcf5f65(0x21f)][_0xcf5f65(0x1e9)]||[];const _0x4bc054=_0x10c6e6['nodeIds']||[];if(_0x4bc054['length']===0x0)return;for(const _0x4e234a of _0x4bc054){_0x69dc41[_0xcf5f65(0x15b)](_0xcf5f65(0x1d3))&&(yield _0x1e2b23(_0x1b70f0,_0x69dc41));const _0x27929c=_0x3c228b(_0x4e234a,_0x69dc41);if(_0x27929c[_0xcf5f65(0x17c)]===0x0)return;_0x69dc41=_0x27929c;}_0x1d75f9(_0x1b70f0,_0x69dc41),_0x1e3de6(_0x1b70f0[_0xcf5f65(0x222)],_0x69dc41);});function _0x1e3de6(_0x508d14,_0x24b3cd){const _0x197faf=_0x1a2cb8,_0x487580=_0x24b3cd['position']()[_0x197faf(0x18e)],_0x45f7c3=_0x508d14[_0x197faf(0x1be)]();if(_0x45f7c3==undefined)return;const _0x35365d=_0x45f7c3+_0x487580-_0x508d14['height']()/0x2+_0x24b3cd['height']()/0x2;_0x508d14[_0x197faf(0x1b4)]({'scrollTop':_0x35365d},0x1f4);}const _0x5b1082=(_0x5a8821,_0x14d988)=>_0x3834a4(void 0x0,void 0x0,void 0x0,function*(){const _0x4b7d38=_0x1a2cb8,_0x57fbe1=_0x5a8821[_0x4b7d38(0x164)][_0x4b7d38(0x1c2)](),_0x19c3ad={'nodeId':_0x57fbe1,'rootNodeId':_0x14d988[_0x4b7d38(0x1aa)],'isType':_0x5a8821['options'][_0x4b7d38(0x16a)]||![]},_0x3c8326=_0x25f226(_0x5a8821),_0x59c3da=yield _0x51885c(_0x3c8326,_0x19c3ad);if(!_0x59c3da)return;yield _0x3de566(_0x5a8821,_0x59c3da,_0x5a8821['$tree']);});function _0x6106d3(_0x4a632b,_0x48715d,_0x4cf7ba,_0x3b5d5b){return _0x3834a4(this,void 0x0,void 0x0,function*(){const _0x594967=_0x5277;if(_0x48715d['hasClass']('fetched')){console[_0x594967(0x22c)](_0x594967(0x1e0));return;}if(_0x48715d[_0x594967(0x15b)](_0x594967(0x15f))){console[_0x594967(0x22c)](_0x594967(0x22a));return;}_0x48715d[_0x594967(0x1dd)](_0x594967(0x15f)),_0x48715d['append']('<div\x20class=\x22spinner\x22></div>');try{_0x48715d[_0x594967(0x1dc)]('ul')[_0x594967(0x20f)]();const {references:_0x24e2ff}=yield _0x4cf7ba(_0x48715d,_0x3b5d5b);for(const _0x681426 of _0x24e2ff){if(_0x4a632b[_0x594967(0x170)][_0x594967(0x226)]&&!_0x4a632b[_0x594967(0x170)]['filter'](_0x681426))continue;const _0x3dc720=_0x5449ab(_0x681426);_0x48715d['children']('ul')[_0x594967(0x176)](_0x3dc720);}_0x48715d[_0x594967(0x1dd)](_0x594967(0x1e2));}catch(_0x18792a){_0x48715d[_0x594967(0x1dc)]('ul')[_0x594967(0x176)](_0x594967(0x198)+_0x18792a[_0x594967(0x1da)]+_0x594967(0x1ea)),console[_0x594967(0x22c)](_0x594967(0x168),_0x18792a);}_0x48715d[_0x594967(0x197)](_0x594967(0x15a))['remove'](),_0x48715d[_0x594967(0x20c)](_0x594967(0x15f));});}function _0x25f226(_0x36aed8){const _0x48522d=_0x1a2cb8,_0x14c706={'baseUrl':_0x36aed8[_0x48522d(0x170)][_0x48522d(0x20d)],'endpointNode':typeof _0x36aed8['options'][_0x48522d(0x1c4)]===_0x48522d(0x213)?_0x36aed8[_0x48522d(0x170)][_0x48522d(0x1c4)]():_0x36aed8[_0x48522d(0x170)][_0x48522d(0x1c4)],'endpoint':typeof _0x36aed8[_0x48522d(0x170)][_0x48522d(0x179)]===_0x48522d(0x213)?_0x36aed8[_0x48522d(0x170)]['endpoint']():_0x36aed8[_0x48522d(0x170)]['endpoint']};return _0x14c706;}function _0x1e2b23(_0x512c2d,_0x31f26c){return _0x3834a4(this,void 0x0,void 0x0,function*(){const _0x2a5def=_0x5277;if(_0x31f26c['hasClass']('fetched')){_0x31f26c[_0x2a5def(0x20c)](_0x2a5def(0x1d3))[_0x2a5def(0x1dd)]('expanded'),_0x31f26c['children']('ul')['toggle']();return;}const _0xd3c2bb=_0x25f226(_0x512c2d),_0x238289=!_0x512c2d[_0x2a5def(0x170)]['isTypeRef']?_0x5d138a:_0x1e4f0a;try{yield _0x6106d3(_0x512c2d,_0x31f26c,_0x238289,_0xd3c2bb),_0x31f26c[_0x2a5def(0x20c)](_0x2a5def(0x1d3))[_0x2a5def(0x1dd)](_0x2a5def(0x202));}catch(_0x54e668){_0x31f26c['removeClass']('expandable')[_0x2a5def(0x1dd)](_0x2a5def(0x202)),console[_0x2a5def(0x22c)](_0x2a5def(0x1f2),_0x54e668);}});}const _0x32f0e3=()=>{const _0x586a26=_0x1a2cb8;$[_0x586a26(0x192)]('sterfive.nodeBrowser',{'options':{'endpointNode':()=>({'endpoint':_0x586a26(0x1fb)}),'endpoint':()=>undefined,'parentNode':()=>({'browseName':{'namespaceIndex':0x0,'name':'Objects'},'nodeClass':_0x586a26(0x15c),'nodeId':_0x586a26(0x1d1),'displayName':{'text':'Objects'},'typeDefinition':_0x364de9}),'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x3834a4(this,void 0x0,void 0x0,function*(){const _0x5eef6e=_0x5277,_0x32a0ef=this;if(!_0x32a0ef[_0x5eef6e(0x15e)]){const _0x15cb6f=typeof _0x32a0ef['options'][_0x5eef6e(0x14f)]===_0x5eef6e(0x213)?_0x32a0ef[_0x5eef6e(0x170)][_0x5eef6e(0x14f)][_0x5eef6e(0x21b)](_0x32a0ef):_0x32a0ef[_0x5eef6e(0x170)][_0x5eef6e(0x14f)];if(_0x15cb6f instanceof Promise){const _0x3772f8=yield _0x15cb6f;_0x32a0ef[_0x5eef6e(0x15e)]=_0x3772f8;}else _0x32a0ef['__parentNode']=_0x15cb6f;}return _0x32a0ef[_0x5eef6e(0x15e)];});},'reset'(){return _0x3834a4(this,void 0x0,void 0x0,function*(){const _0x47040f=_0x5277,_0x50a17c=this,_0x1570b0=_0x50a17c;_0x1570b0[_0x47040f(0x15e)]=undefined,_0x50a17c[_0x47040f(0x227)][_0x47040f(0x20f)]();const _0x4b2f68=yield this['resolveParentNode'](),_0x1d9692=_0x5449ab(_0x4b2f68);_0x50a17c[_0x47040f(0x227)]['append'](_0x1d9692),_0x50a17c[_0x47040f(0x199)]=_0x4b2f68;});},'verify'(){const _0x31ccd0=_0x586a26,_0x200ea0=this,_0x188620=_0x25f226(_0x200ea0);_0x218e81(_0x188620,_0x200ea0['$input'],_0x200ea0[_0x31ccd0(0x1ca)]);},'_create'(){const _0x384a32=_0x586a26,_0x56cdc1=this;_0x56cdc1[_0x384a32(0x164)]=this[_0x384a32(0x183)],_0x56cdc1['$combo']=$(_0x384a32(0x1f8)),_0x56cdc1[_0x384a32(0x18a)][_0x384a32(0x1dd)](_0x384a32(0x1a5)),this[_0x384a32(0x183)][_0x384a32(0x1d0)](_0x56cdc1['$combo']),_0x56cdc1['$inputGroup']=$(_0x384a32(0x1f8))[_0x384a32(0x1dd)](_0x384a32(0x1b5)),_0x56cdc1['$combo'][_0x384a32(0x176)](_0x56cdc1['$inputGroup']),_0x56cdc1[_0x384a32(0x1ad)][_0x384a32(0x176)](_0x56cdc1['$input']),_0x56cdc1[_0x384a32(0x19d)]=$('<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>'),_0x56cdc1[_0x384a32(0x1ad)][_0x384a32(0x176)](_0x56cdc1[_0x384a32(0x19d)]),_0x56cdc1['$toggleTreeBtn']['on'](_0x384a32(0x157),function(){return _0x3834a4(this,void 0x0,void 0x0,function*(){const _0x31702b=_0x5277;var _0x2451b3;let _0x441fe5=![],_0x5bf808;!_0x56cdc1[_0x31702b(0x222)]['is'](_0x31702b(0x204))&&(_0x56cdc1[_0x31702b(0x1ca)]['hide'](),_0x5bf808=yield _0x56cdc1[_0x31702b(0x1e8)](),(_0x5bf808!==_0x56cdc1[_0x31702b(0x199)]||((_0x2451b3=_0x56cdc1[_0x31702b(0x199)])===null||_0x2451b3===void 0x0?void 0x0:_0x2451b3[_0x31702b(0x1aa)])!==_0x5bf808[_0x31702b(0x1aa)])&&(yield _0x56cdc1[_0x31702b(0x1c9)]()),_0x441fe5=!![]),_0x56cdc1[_0x31702b(0x222)][_0x31702b(0x1d9)](),_0x441fe5&&(yield _0x5b1082(_0x56cdc1,_0x5bf808));});}),_0x56cdc1[_0x384a32(0x181)]=$('<button><i\x20class=\x22fa\x20fa-flask\x22></i></button>'),_0x56cdc1[_0x384a32(0x1ad)][_0x384a32(0x176)](_0x56cdc1[_0x384a32(0x181)]),_0x56cdc1[_0x384a32(0x181)]['on'](_0x384a32(0x157),()=>{const _0xfa38dd=_0x384a32;this[_0xfa38dd(0x201)]();});!_0x56cdc1[_0x384a32(0x164)][_0x384a32(0x1c8)](_0x384a32(0x1f7))&&_0x56cdc1[_0x384a32(0x164)][_0x384a32(0x1c8)](_0x384a32(0x1f7),_0x384a32(0x17f));_0x56cdc1[_0x384a32(0x1ca)]=$(_0x384a32(0x1bf)),_0x56cdc1[_0x384a32(0x1ca)][_0x384a32(0x153)](),_0x56cdc1['$dropdown']=$('<div/>')[_0x384a32(0x1dd)]('sterfive-dropdown')[_0x384a32(0x153)](),_0x56cdc1[_0x384a32(0x18a)][_0x384a32(0x176)](_0x56cdc1[_0x384a32(0x1ca)]),_0x56cdc1[_0x384a32(0x18a)][_0x384a32(0x176)](_0x56cdc1[_0x384a32(0x222)]),_0x56cdc1[_0x384a32(0x227)]=$('<ul\x20class=\x22sterfive-tree\x22></ul>')[_0x384a32(0x18b)](_0x56cdc1[_0x384a32(0x222)]),this[_0x384a32(0x1c9)]();const _0x4be68d=(_0x33b0b2,_0x345554)=>{const _0x1057e3=_0x384a32,_0x508079=0x14,_0x27acd0=0x14,_0x138d15=_0x33b0b2['offset'](),_0x33d2f7=_0x345554;if(_0x33d2f7[_0x1057e3(0x15d)]>=_0x138d15[_0x1057e3(0x216)]&&_0x33d2f7[_0x1057e3(0x15d)]<=_0x138d15[_0x1057e3(0x216)]+_0x508079&&_0x33d2f7[_0x1057e3(0x223)]>=_0x138d15[_0x1057e3(0x18e)]&&_0x33d2f7[_0x1057e3(0x223)]<=_0x138d15[_0x1057e3(0x18e)]+_0x27acd0)return!![];return![];},_0x161801=_0x29caf0=>_0x3834a4(this,void 0x0,void 0x0,function*(){const _0x3c1e36=_0x384a32;if(_0x29caf0[_0x3c1e36(0x15b)](_0x3c1e36(0x1d3)))_0x1e2b23(_0x56cdc1,_0x29caf0);else{if(_0x29caf0['hasClass'](_0x3c1e36(0x202)))_0x29caf0[_0x3c1e36(0x1dc)]('ul')[_0x3c1e36(0x1d9)](),_0x29caf0[_0x3c1e36(0x224)](_0x3c1e36(0x1d7));else{if(_0x29caf0[_0x3c1e36(0x1dc)]('ul')[_0x3c1e36(0x1dc)]()[_0x3c1e36(0x17c)]>0x0)_0x29caf0[_0x3c1e36(0x1dc)]('ul')[_0x3c1e36(0x1d9)](),_0x29caf0['toggleClass'](_0x3c1e36(0x1d7));else;}}});_0x56cdc1[_0x384a32(0x227)]['on']('dblclick','li',function(_0x6231c8){const _0x3b4843=_0x384a32;var _0x24d01c,_0x72a894;_0x6231c8[_0x3b4843(0x1f5)]();let _0x324926=$(this);if(_0x4be68d(_0x324926,_0x6231c8))_0x161801(_0x324926);else{const _0x5bef27=_0x324926[_0x3b4843(0x1f6)]('value'),_0xe99034=_0x324926[_0x3b4843(0x1f6)]('reference');if(_0x56cdc1[_0x3b4843(0x170)][_0x3b4843(0x1b3)]&&!_0x56cdc1[_0x3b4843(0x170)][_0x3b4843(0x1b3)](_0xe99034))return;_0x56cdc1['$input'][_0x3b4843(0x1f6)](_0x3b4843(0x195),_0xe99034);const _0x322321=((_0x24d01c=_0xe99034[_0x3b4843(0x184)])===null||_0x24d01c===void 0x0?void 0x0:_0x24d01c['text'])||((_0x72a894=_0xe99034['browseName'])===null||_0x72a894===void 0x0?void 0x0:_0x72a894[_0x3b4843(0x16e)])||_0xe99034[_0x3b4843(0x1aa)][_0x3b4843(0x1fc)](),_0x8f788d='['+_0x322321+']('+_0x5bef27+')';_0x56cdc1[_0x3b4843(0x164)][_0x3b4843(0x1c2)](_0x8f788d),_0x56cdc1[_0x3b4843(0x164)]['trigger'](_0x3b4843(0x1a0)),_0x56cdc1[_0x3b4843(0x222)][_0x3b4843(0x153)]();}}),_0x56cdc1[_0x384a32(0x227)]['on'](_0x384a32(0x157),'li',function(_0x783404){const _0x51a00c=_0x384a32;_0x783404[_0x51a00c(0x1f5)]();let _0x517b88=$(this);_0x4be68d(_0x517b88,_0x783404)&&_0x161801(_0x517b88),_0x1d75f9(_0x56cdc1,_0x517b88);}),$(document)['on'](_0x384a32(0x157),function(_0x2d42e4){const _0xd28404=_0x384a32;!$(_0x2d42e4['target'])[_0xd28404(0x1a7)](_0x56cdc1[_0xd28404(0x18a)])[_0xd28404(0x17c)]&&_0x56cdc1[_0xd28404(0x222)][_0xd28404(0x153)]();});}});},_0x2dddf7=_0x4b6885=>{const _0x2b79dc=_0x1a2cb8;var _0x2a519f,_0x14be57,_0x4b76a2;if(!_0x4b6885){const _0x18ebe5=$(_0x2b79dc(0x19c));return _0x18ebe5;}const _0x3fa91e=_0x4b6885[_0x2b79dc(0x1aa)][_0x2b79dc(0x1fc)]();let _0x12bfaf=((_0x2a519f=_0x4b6885['displayName'])===null||_0x2a519f===void 0x0?void 0x0:_0x2a519f[_0x2b79dc(0x189)])||((_0x14be57=_0x4b6885[_0x2b79dc(0x18c)])===null||_0x14be57===void 0x0?void 0x0:_0x14be57[_0x2b79dc(0x16e)])||_0x4b6885[_0x2b79dc(0x1aa)][_0x2b79dc(0x1fc)](),_0x13e79e=(_0x4b76a2=_0x4b6885[_0x2b79dc(0x18c)])===null||_0x4b76a2===void 0x0?void 0x0:_0x4b76a2[_0x2b79dc(0x180)];_0x12bfaf+=_0x13e79e!==undefined&&_0x4b6885[_0x2b79dc(0x17b)][_0x2b79dc(0x1a6)](/Type/)?'\x20(ns='+_0x13e79e+')':'';const {icon:_0x186565,color:_0x3b40d3}=_0x151e30(_0x4b6885),_0xa03bca=$(_0x2b79dc(0x19b));if(_0x4b6885['nodeClass']===_0x2b79dc(0x14e)){const _0x4f09ab=$('<span\x20class=\x22custom-checkbox\x20unchecked\x22></span>');_0xa03bca[_0x2b79dc(0x176)](_0x4f09ab),_0x4f09ab['on'](_0x2b79dc(0x157),function(){const _0x1c00ec=_0x2b79dc;_0x4f09ab[_0x1c00ec(0x15b)](_0x1c00ec(0x16b))?_0x4f09ab[_0x1c00ec(0x20c)](_0x1c00ec(0x16b))['addClass'](_0x1c00ec(0x1d8)):_0x4f09ab[_0x1c00ec(0x20c)](_0x1c00ec(0x1d8))[_0x1c00ec(0x1dd)](_0x1c00ec(0x16b));});}return _0xa03bca['append']($(_0x2b79dc(0x20b)+_0x186565+_0x2b79dc(0x161)+_0x3b40d3+_0x2b79dc(0x190)+_0x12bfaf+_0x2b79dc(0x1ae))),_0xa03bca[_0x2b79dc(0x1dd)](_0x2b79dc(0x1d3)),_0xa03bca['data'](_0x2b79dc(0x1ce),_0x3fa91e),_0xa03bca['data']('reference',_0x4b6885),_0xa03bca;},_0xb4791c=()=>{const _0x2e4534=_0x1a2cb8;$[_0x2e4534(0x192)](_0x2e4534(0x1cf),{'options':{'endpointNode':()=>({'endpoint':_0x2e4534(0x1fb)}),'endpoint':()=>undefined,'baseUrl':''},'_populate'(){return _0x3834a4(this,void 0x0,void 0x0,function*(){const _0x2c041b=_0x5277;var _0x40ea8a;const _0x2ed9f4=this,_0x1aea9f=new Set((_0x40ea8a=_0x2ed9f4['$input'][_0x2c041b(0x1c2)]())===null||_0x40ea8a===void 0x0?void 0x0:_0x40ea8a['toString']()['split'](';')),_0x322be7={'baseUrl':_0x2ed9f4[_0x2c041b(0x170)][_0x2c041b(0x20d)],'endpointNode':typeof _0x2ed9f4['options'][_0x2c041b(0x1c4)]===_0x2c041b(0x213)?_0x2ed9f4[_0x2c041b(0x170)][_0x2c041b(0x1c4)]():_0x2ed9f4[_0x2c041b(0x170)][_0x2c041b(0x1c4)],'endpoint':typeof _0x2ed9f4[_0x2c041b(0x170)][_0x2c041b(0x179)]===_0x2c041b(0x213)?_0x2ed9f4[_0x2c041b(0x170)][_0x2c041b(0x179)]():_0x2ed9f4[_0x2c041b(0x170)]['endpoint']},_0xdea52f=yield _0x1e0d42(_0x322be7);this['_installTree'](_0xdea52f,_0x1aea9f);});},'_installTree'(_0xfaf15,_0x22ee70){const _0xb3db40=_0x2e4534,_0x28ab6f=this;_0x28ab6f[_0xb3db40(0x227)]['empty']();if(!_0xfaf15[_0xb3db40(0x22d)])return;const _0x3627a7=_0xfaf15[_0xb3db40(0x22d)],_0x35d025=_0x2dddf7(_0x3627a7);_0x28ab6f[_0xb3db40(0x227)][_0xb3db40(0x176)](_0x35d025);const _0x56d005='';this[_0xb3db40(0x19e)](_0x35d025['children']('ul'),_0x3627a7,_0x56d005,_0x22ee70),_0x35d025[_0xb3db40(0x20c)](_0xb3db40(0x1d3))[_0xb3db40(0x1dd)](_0xb3db40(0x202)),this['_updateValues'](_0x22ee70);},'_installChildren'(_0x1163bd,_0x45fba8,_0x19279d,_0x2ffb23){const _0x4ffcba=_0x2e4534,_0x2252a6=({name:_0x3e88d8,namespaceIndex:_0x56554c})=>{if(_0x56554c===0x0)return _0x3e88d8;return _0x56554c+':'+_0x3e88d8;},_0x46e0a7=_0x45fba8[_0x4ffcba(0x1dc)]||[],_0x52f808=_0x45fba8[_0x4ffcba(0x1f1)]||[],_0x18b787=[..._0x46e0a7,..._0x52f808];for(const _0x38fd69 of _0x18b787){const _0x2e76f3=_0x2dddf7(_0x38fd69);_0x1163bd[_0x4ffcba(0x176)](_0x2e76f3);let _0x46e160='';_0x38fd69[_0x4ffcba(0x17b)]===_0x4ffcba(0x14e)&&(_0x19279d?_0x46e160=_0x19279d+'.'+_0x2252a6(_0x38fd69[_0x4ffcba(0x18c)]):_0x46e160=_0x2252a6(_0x38fd69['browseName']),_0x2e76f3[_0x4ffcba(0x1c8)]('data-value',_0x46e160));const _0x40d7b8=_0x38fd69['children']&&_0x38fd69['children']['length'],_0x5dff02=_0x38fd69[_0x4ffcba(0x1f1)]&&_0x38fd69['subTypes'][_0x4ffcba(0x17c)];!_0x40d7b8&&!_0x5dff02?_0x2e76f3[_0x4ffcba(0x20c)](_0x4ffcba(0x1d3))[_0x4ffcba(0x1dd)](_0x4ffcba(0x152)):(this[_0x4ffcba(0x19e)](_0x2e76f3[_0x4ffcba(0x1dc)]('ul'),_0x38fd69,_0x46e160,_0x2ffb23),_0x2e76f3[_0x4ffcba(0x20c)](_0x4ffcba(0x1d3))['addClass'](_0x4ffcba(0x202)));}},'_updateSelectedFields'(){const _0xd084b6=_0x2e4534;var _0x416d61;const _0x5f421c=this,_0x511a11=new Set((_0x416d61=_0x5f421c['$input'][_0xd084b6(0x1c2)]())===null||_0x416d61===void 0x0?void 0x0:_0x416d61[_0xd084b6(0x1fc)]()['split'](';'));this[_0xd084b6(0x206)](_0x511a11);},'_updateValues'(_0x5cf27f){const _0x5ac0ed=_0x2e4534;$(_0x5ac0ed(0x182))[_0x5ac0ed(0x165)](function(){const _0x5f37c6=_0x5ac0ed,_0x4d4c5f=$(this),_0x296c48=_0x4d4c5f[_0x5f37c6(0x1c8)]('data-value');_0x296c48&&_0x5cf27f[_0x5f37c6(0x1a3)](_0x296c48)&&_0x4d4c5f[_0x5f37c6(0x1dc)]('span.custom-checkbox')['removeClass'](_0x5f37c6(0x16b))[_0x5f37c6(0x1dd)](_0x5f37c6(0x1d8));});},'_setInputValue'(){const _0x2ac201=_0x2e4534,_0x4ba82b=this,_0x3ead98=[];$(_0x2ac201(0x182))[_0x2ac201(0x165)](function(){const _0x3c94ef=_0x2ac201,_0x274a1e=$(this);if(_0x274a1e['children'](_0x3c94ef(0x1ee))['length']>0x0){const _0x38d0d7=_0x274a1e[_0x3c94ef(0x1c8)]('data-value');if(_0x38d0d7)_0x3ead98['push'](_0x38d0d7);}});const _0x1b1581=[...new Set(_0x3ead98)]['sort']()[_0x2ac201(0x1c7)](';');_0x4ba82b['$input'][_0x2ac201(0x1c2)](_0x1b1581),_0x4ba82b[_0x2ac201(0x164)][_0x2ac201(0x21e)](_0x2ac201(0x1a0));},'_create'(){const _0x370d07=_0x2e4534,_0x26a2b9=this;_0x26a2b9[_0x370d07(0x164)]=this[_0x370d07(0x183)],_0x26a2b9[_0x370d07(0x18a)]=$(_0x370d07(0x1f8)),_0x26a2b9[_0x370d07(0x18a)][_0x370d07(0x1dd)](_0x370d07(0x1a5)),this[_0x370d07(0x183)][0x0][_0x370d07(0x1a9)]['replaceChild'](_0x26a2b9[_0x370d07(0x18a)][0x0],this[_0x370d07(0x183)][0x0]),_0x26a2b9[_0x370d07(0x1ad)]=$(_0x370d07(0x1f8))[_0x370d07(0x1dd)](_0x370d07(0x1b5)),_0x26a2b9[_0x370d07(0x18a)][_0x370d07(0x176)](_0x26a2b9['$inputGroup']),_0x26a2b9[_0x370d07(0x1ad)]['append'](_0x26a2b9[_0x370d07(0x164)]),_0x26a2b9['$toggleTreeBtn']=$('<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>'),_0x26a2b9[_0x370d07(0x1ad)]['append'](_0x26a2b9[_0x370d07(0x19d)]),_0x26a2b9[_0x370d07(0x19d)]['on'](_0x370d07(0x157),function(){const _0x253738=_0x370d07;_0x26a2b9[_0x253738(0x222)][_0x253738(0x1d9)](),_0x26a2b9[_0x253738(0x1ca)]['toggle']();if(_0x26a2b9[_0x253738(0x222)]['is'](_0x253738(0x204))){_0x4c689c[_0x253738(0x154)]();const _0x20dbc6=_0x26a2b9[_0x253738(0x222)][_0x253738(0x1bc)]();_0x4c689c[_0x253738(0x218)]({'top':_0x20dbc6['top']+'px','right':_0x253738(0x212)+(_0x20dbc6[_0x253738(0x216)]+_0x26a2b9[_0x253738(0x222)][_0x253738(0x1ed)]())+_0x253738(0x225)}),_0x26a2b9[_0x253738(0x18d)](),_0x26a2b9['_updateSelectedFields']();}else _0x4c689c[_0x253738(0x153)]();});!_0x26a2b9[_0x370d07(0x164)][_0x370d07(0x1c8)](_0x370d07(0x1f7))&&_0x26a2b9[_0x370d07(0x164)]['attr'](_0x370d07(0x1f7),'enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20');_0x26a2b9['$info']=$(_0x370d07(0x1bf)),_0x26a2b9[_0x370d07(0x1ca)]['hide'](),_0x26a2b9['$dropdown']=$(_0x370d07(0x1f8))['addClass'](_0x370d07(0x20e))[_0x370d07(0x153)]();const _0x59d4a8=$(_0x370d07(0x1db)),_0x51e1d5=$(_0x370d07(0x1e6)),_0x4c689c=$(_0x370d07(0x177))['append'](_0x59d4a8,_0x51e1d5);_0x4c689c[_0x370d07(0x153)](),_0x59d4a8['on'](_0x370d07(0x157),()=>{const _0x3f09df=_0x370d07;_0x26a2b9[_0x3f09df(0x1c6)](),_0x26a2b9[_0x3f09df(0x222)][_0x3f09df(0x153)]();}),_0x51e1d5['on']('click',()=>{const _0x439fc1=_0x370d07;_0x26a2b9['$dropdown'][_0x439fc1(0x153)]();}),_0x26a2b9['$combo'][_0x370d07(0x176)](_0x26a2b9[_0x370d07(0x1ca)]),_0x26a2b9['$combo'][_0x370d07(0x176)](_0x26a2b9['$dropdown']),_0x26a2b9['$tree']=$('<ul\x20class=\x22sterfive-tree\x22></ul>'),_0x26a2b9['$dropdown']['empty']()['append'](_0x26a2b9[_0x370d07(0x227)],_0x4c689c),_0x26a2b9[_0x370d07(0x227)]['on']('click','li',function(_0x31e347){const _0x5ad559=_0x370d07;_0x31e347[_0x5ad559(0x1f5)]();let _0x12bf40=$(this);const _0x391dac=0x14,_0x1faab9=0x14,_0x2435ab=$(this)[_0x5ad559(0x1bc)](),_0x37b5bf=_0x31e347;if(_0x37b5bf[_0x5ad559(0x15d)]>=_0x2435ab[_0x5ad559(0x216)]&&_0x37b5bf[_0x5ad559(0x15d)]<=_0x2435ab[_0x5ad559(0x216)]+_0x391dac&&_0x37b5bf['pageY']>=_0x2435ab[_0x5ad559(0x18e)]&&_0x37b5bf[_0x5ad559(0x223)]<=_0x2435ab[_0x5ad559(0x18e)]+_0x1faab9){console[_0x5ad559(0x22c)]('clicked\x20on\x20icon'),console['log'](_0x5ad559(0x21d),_0x12bf40[_0x5ad559(0x1f6)]('value'),_0x12bf40[_0x5ad559(0x1c8)](_0x5ad559(0x1b2)));if(_0x12bf40[_0x5ad559(0x15b)]('expandable'))_0x12bf40[_0x5ad559(0x20c)](_0x5ad559(0x1d3))['addClass'](_0x5ad559(0x202)),_0x12bf40['children']('ul')[_0x5ad559(0x1d9)]();else{if(_0x12bf40[_0x5ad559(0x15b)](_0x5ad559(0x202)))_0x12bf40[_0x5ad559(0x1dc)]('ul')[_0x5ad559(0x1d9)](),_0x12bf40['toggleClass'](_0x5ad559(0x1d7));else{if(_0x12bf40[_0x5ad559(0x1dc)]('ul')[_0x5ad559(0x1dc)]()[_0x5ad559(0x17c)]>0x0)_0x12bf40['children']('ul')[_0x5ad559(0x1d9)](),_0x12bf40['toggleClass'](_0x5ad559(0x1d7));else;}}}}),$(document)['on'](_0x370d07(0x157),function(_0x2f01af){const _0x5f5134=_0x370d07;!$(_0x2f01af[_0x5f5134(0x169)])[_0x5f5134(0x1a7)](_0x26a2b9[_0x5f5134(0x18a)])[_0x5f5134(0x17c)]&&_0x26a2b9[_0x5f5134(0x222)][_0x5f5134(0x153)]();}),this[_0x370d07(0x18d)]();}});},_0x1e0d42=_0x447be0=>_0x3834a4(void 0x0,[_0x447be0],void 0x0,function*({endpointNode:_0x3b0fa9,endpoint:_0x36f9c1,baseUrl:_0x4c1905}){const _0x2a1f01=_0x1a2cb8,_0x107067=_0x4c1905+_0x2a1f01(0x211),_0x132501=_0x107067+_0x2a1f01(0x1af),_0x4619a3=yield fetch(_0x132501,{'method':_0x2a1f01(0x174),'body':JSON[_0x2a1f01(0x207)]({'endpointNode':_0x3b0fa9,'endpoint':_0x36f9c1}),'headers':{'Content-Type':'application/json'}});if(_0x4619a3[_0x2a1f01(0x1a8)]!==0xc8)return console[_0x2a1f01(0x22c)]('fetching\x20failed\x20with\x20error',_0x4619a3[_0x2a1f01(0x1a8)],_0x4619a3[_0x2a1f01(0x210)]),{'events':null};console['log'](_0x2a1f01(0x219),_0x4619a3[_0x2a1f01(0x1a8)],_0x4619a3[_0x2a1f01(0x210)]);const _0x3c7f48=yield _0x4619a3[_0x2a1f01(0x1a4)](),_0x27cada=_0x3c7f48[_0x2a1f01(0x22d)];return{'events':_0x27cada};}),_0x2d899e=()=>{const _0x59fd3b=_0x1a2cb8,_0x30d92f=$(_0x59fd3b(0x205)),_0x23d3b8=_0x30d92f[_0x59fd3b(0x1c2)](),_0xcbe048=RED['nodes'][_0x59fd3b(0x16f)](_0x23d3b8);if(!_0xcbe048)return undefined;const {endpoint:_0x3c0c72,securityMode:_0xb7e90c,securityPolicy:_0x576304,userIdentityType:_0x22892a,credentials:_0x44c2fb}=_0xcbe048,_0x4a12c0={'endpoint':_0x3c0c72,'securityMode':_0xb7e90c,'securityPolicy':_0x576304,'userIdentityType':_0x22892a,'credentials':_0x44c2fb};return _0x4a12c0;},_0x4469d4=()=>{return{'endpointNode':_0x32cc13};},_0x32cc13=()=>{const _0x3f56ed=_0x1a2cb8,_0x4e447a=$(_0x3f56ed(0x205)),_0x55296a=_0x4e447a[_0x3f56ed(0x1c2)](),_0xe113d3=_0x2d899e();if(!_0xe113d3)return undefined;return{'id':_0x55296a};};RED[_0x1a2cb8(0x187)][_0x1a2cb8(0x21a)](_0x1a2cb8(0x21c),{'category':'opcua','color':_0x1a2cb8(0x158),'align':_0x1a2cb8(0x19f),'icon':'opcualogobig.png','paletteLabel':_0x1a2cb8(0x1e3),'defaults':{'inputs':{'value':0x1},'output':{'value':0x4},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x1a2cb8(0x156)},'subscription':{'value':'','required':!![],'validate':_0x52d9e6=>{if(_0x52d9e6==='')return![];return!![];}},'startImmediately':{'value':!![],'required':!![]},'nodeId':{'value':'','required':![],'validate':()=>!![]},'samplingInterval':{'value':0x3e8,'required':!![]},'discardOldest':{'value':!![],'required':!![]},'queueSize':{'value':0xa,'required':!![]},'selectClauses':{'value':'','required':!![]},'whereClause':{'value':'','required':![]}},'outputs':0x2,'label'(){const _0x4320a7=_0x1a2cb8;return this[_0x4320a7(0x16e)]||'OPCUA\x20Monitor';},'labelStyle'(){const _0x4e9211=_0x1a2cb8;return this['name']?_0x4e9211(0x1eb):'';},'oneditprepare'(){const _0x286b42=_0x1a2cb8;_0x32f0e3(),_0xb4791c(),_0xc3ff79(RED,this),$(_0x286b42(0x18f))['on'](_0x286b42(0x1a0),()=>{const _0x5a6725=_0x286b42,_0x528c54=$(_0x5a6725(0x20a))[_0x5a6725(0x1a2)](_0x5a6725(0x1d8));_0x528c54?$(_0x5a6725(0x214))[_0x5a6725(0x1c2)](0x0):$(_0x5a6725(0x214))[_0x5a6725(0x1c2)](0x1);});const _0x41592e=$(_0x286b42(0x200));_0x41592e['nodeBrowser'](Object['assign'](Object['assign']({},_0x4469d4()),{'filter'(_0x4a1d8b){const _0x464787=_0x286b42;return _0x4a1d8b[_0x464787(0x17b)]==='Object';},'isSelectable'(_0x110bf0){const _0x2a42ae=_0x286b42;return _0x110bf0[_0x2a42ae(0x17b)]===_0x2a42ae(0x15c);}})),$(_0x286b42(0x209));const _0x207a7f=$(_0x286b42(0x160));_0x207a7f[_0x286b42(0x1ac)](Object[_0x286b42(0x1ec)]({},_0x4469d4()));},'oneditsave'(){const _0x176612=_0x1a2cb8,_0x5803ef=$(_0x176612(0x20a))[_0x176612(0x1a2)](_0x176612(0x1d8));_0x5803ef?($(_0x176612(0x20a))[_0x176612(0x1c2)](_0x5803ef?0x0:0x1),this[_0x176612(0x166)]=_0x5803ef?0x0:0x1):($(_0x176612(0x20a))[_0x176612(0x1c2)](0x1),this[_0x176612(0x166)]=0x1);}});}()));
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHhjM2ZmNzkiLCJfMHgyZTdjODUiLCJfMHhmZjFlOCIsIl8weDMxZmQ0MSIsIiQiLCJfMHg1OWUxZTgiLCJfMHgyMzJkN2QiLCJfMHgyZWRiMDMiLCJfMHg0YjcwMTkiLCJfMHgxYzUxYjMiLCJfMHgzODM0YTQiLCJfMHgxNzgzMzgiLCJfMHg1YmU3YmYiLCJfMHg0ODkxZWEiLCJfMHgzYjcxYzIiLCJfMHg0NjQzNjciLCJfMHgyOTAwMzMiLCJfMHhiYzkzYjQiLCJQcm9taXNlIiwiXzB4YTQ2Y2MiLCJfMHhjYTQ0ZTQiLCJfMHgxZmVjZTAiLCJfMHg1NDkyZDEiLCJfMHg5NmI5MWYiLCJfMHhjNzg1MWIiLCJfMHgyMGE1ZTciLCJfMHgyY2U0MGUiLCJfMHgzYzEyOWYiLCJfMHg1YzE1ZWQiLCJTdXBwcmVzc2VkRXJyb3IiLCJfMHg0OTJiNTYiLCJfMHgzOGQ3MjEiLCJfMHgzZDRhOWUiLCJfMHgzMDM2MTciLCJFcnJvciIsIl8weDI2NmU5ZCIsIl8weDM2NGRlOSIsIl8weDU0OGNhMiIsIl8weDI1MjUyMCIsIl8weDQxZDM4NiIsIl8weDc3MGJmZCIsIl8weDViZGJiMyIsIl8weDQzYzFlOSIsIl8weDE3NjU0NyIsIl8weDIxNzUwZSIsIl8weDQwYjkyZCIsIl8weDE0ZjU3MCIsIl8weDJhNTYzYiIsIl8weDQ2Y2M3OCIsIl8weDI1N2VhNCIsIl8weDUzYjk2OSIsIl8weDQyOGNjYiIsIl8weDE1MWUzMCIsIl8weDE0ZWRhZSIsIl8weGNhMDNlZSIsIl8weDM1YjE2ZCIsIl8weDRiOTlmMyIsIl8weDFlOTMxNyIsImVuZHBvaW50Tm9kZSIsIl8weDQyNWM3ZCIsImVuZHBvaW50IiwiXzB4NGYyNjAzIiwiYmFzZVVybCIsIl8weDJjMGVkNSIsIl8weDE4NjIwOCIsIl8weDE2M2M3NyIsIl8weDNhNDhiYyIsIl8weDI1NTczZSIsIl8weDViMzk0MiIsIk9iamVjdCIsIl8weDY1MzJjNiIsImZldGNoIiwiSlNPTiIsImNvbnNvbGUiLCJfMHgxMmQzNzUiLCJfMHgxMGEzYTMiLCJfMHgzNjM5NDAiLCJfMHg3ZGIyNDAiLCJfMHg1MTg4NWMiLCJfMHgzOWZiZDkiLCJfMHhjZjZmNTMiLCJfMHgzOGM5NTMiLCJfMHgzYWY1N2QiLCJfMHg0Njc4NjQiLCJub2RlSWQiLCJfMHgzMTcxNmUiLCJyb290Tm9kZUlkIiwiXzB4YjUwMjdhIiwiaXNUeXBlIiwiXzB4MWNkY2I0IiwiXzB4MTNiZTQxIiwiXzB4NTE0YTEzIiwiXzB4ZjQ2ZWZiIiwiXzB4MTc0Y2Y3IiwiXzB4MjE4ZTgxIiwiXzB4MmZjOWU4IiwiXzB4MzhlMjY2IiwiXzB4MTgzYzNkIiwiXzB4MThlNjA0IiwiXzB4OWZkMTljIiwiXzB4MmExY2NjIiwiXzB4MzFjY2E4IiwiXzB4MzJiNGIwIiwiXzB4MjA0MmE5IiwiXzB4MzQ1OTY0IiwiXzB4NWI0ZTUzIiwiXzB4ODg0ZjJjIiwiXzB4MmY2OGUyIiwiXzB4MmJkMzUxIiwiXzB4MWU3YWE2Iiwic2V0VGltZW91dCIsIl8weDQwNWNkMCIsIl8weDVkMTM4YSIsIl8weDQ3NjEwMiIsIl8weDE3ODJhZCIsIl8weDNhNTk0ZCIsIl8weDM3YWNjMyIsIl8weDJhNWM4ZCIsIl8weGNlODVkNSIsIl8weDFlNGYwYSIsIl8weDNmNDE3YyIsIl8weDJkZDZhOCIsIl8weDE5Y2U0MCIsIl8weDE1MTBmMiIsIl8weDU0NDlhYiIsIl8weDQ3MTAxNyIsIl8weDExMDE1YSIsIl8weDQ1Mjg5MiIsIl8weDVhYTgzNyIsIl8weDdmOWM2NyIsIl8weDVjYzNmMSIsIl8weDRkZDQyNSIsIl8weGZmZWQwNiIsImljb24iLCJfMHg2YjQyMTciLCJjb2xvciIsIl8weDJjZWI2MiIsIl8weDE3OWVlMiIsIl8weDc3ZDFiZSIsIl8weDNjMjI4YiIsIl8weDE5MDBjNSIsIl8weDIyOWQ2NiIsIl8weDFkNzVmOSIsIl8weDRlZTljNyIsIl8weDUyOTg0NiIsIl8weDNkZTU2NiIsIl8weDFiNzBmMCIsIl8weDEwYzZlNiIsIl8weDVhZTBkZSIsIl8weDY5ZGM0MSIsIl8weDRiYzA1NCIsIl8weDRlMjM0YSIsIl8weDFlMmIyMyIsIl8weDI3OTI5YyIsIl8weDFlM2RlNiIsIl8weDUwOGQxNCIsIl8weDI0YjNjZCIsIl8weDQ4NzU4MCIsIl8weDQ1ZjdjMyIsInVuZGVmaW5lZCIsIl8weDM1MzY1ZCIsIl8weDViMTA4MiIsIl8weDVhODgyMSIsIl8weDE0ZDk4OCIsIl8weDU3ZmJlMSIsIl8weDE5YzNhZCIsIl8weDNjODMyNiIsIl8weDI1ZjIyNiIsIl8weDU5YzNkYSIsIl8weDYxMDZkMyIsIl8weDRhNjMyYiIsIl8weDQ4NzE1ZCIsIl8weDRjZjdiYSIsIl8weDNiNWQ1YiIsInJlZmVyZW5jZXMiLCJfMHgyNGUyZmYiLCJfMHg2ODE0MjYiLCJfMHgzZGM3MjAiLCJfMHgxODc5MmEiLCJfMHgzNmFlZDgiLCJfMHgxNGM3MDYiLCJfMHg1MTJjMmQiLCJfMHgzMWYyNmMiLCJfMHhkM2MyYmIiLCJfMHgyMzgyODkiLCJfMHg1NGU2NjgiLCJfMHgzMmYwZTMiLCJfMHgzMmEwZWYiLCJfMHgxNWNiNmYiLCJfMHgzNzcyZjgiLCJfMHg1MGExN2MiLCJfMHgxNTcwYjAiLCJfMHg0YjJmNjgiLCJfMHgxZDk2OTIiLCJfMHgyMDBlYTAiLCJfMHgxODg2MjAiLCJfMHg1NmNkYzEiLCJfMHgyNDUxYjMiLCJfMHg0NDFmZTUiLCJfMHg1YmY4MDgiLCJfMHg0YmU2OGQiLCJfMHgzM2IwYjIiLCJfMHgzNDU1NTQiLCJfMHg1MDgwNzkiLCJfMHgyN2FjZDAiLCJfMHgxMzhkMTUiLCJfMHgzM2QyZjciLCJfMHgxNjE4MDEiLCJfMHgyOWNhZjAiLCJfMHg2MjMxYzgiLCJfMHgyNGQwMWMiLCJfMHg3MmE4OTQiLCJfMHgzMjQ5MjYiLCJfMHg1YmVmMjciLCJfMHhlOTkwMzQiLCJfMHgzMjIzMjEiLCJfMHg4Zjc4OGQiLCJfMHg3ODM0MDQiLCJfMHg1MTdiODgiLCJkb2N1bWVudCIsIl8weDJkNDJlNCIsIl8weDJkZGRmNyIsIl8weDRiNjg4NSIsIl8weDJhNTE5ZiIsIl8weDE0YmU1NyIsIl8weDRiNzZhMiIsIl8weDE4ZWJlNSIsIl8weDNmYTkxZSIsIl8weDEyYmZhZiIsIl8weDEzZTc5ZSIsIl8weDE4NjU2NSIsIl8weDNiNDBkMyIsIl8weGEwM2JjYSIsIl8weDRmMDlhYiIsIl8weGI0NzkxYyIsIl8weDQwZWE4YSIsIl8weDJlZDlmNCIsIl8weDFhZWE5ZiIsIlNldCIsIl8weDMyMmJlNyIsIl8weGRlYTUyZiIsIl8weDFlMGQ0MiIsIl8weGZhZjE1IiwiXzB4MjJlZTcwIiwiXzB4MjhhYjZmIiwiXzB4MzYyN2E3IiwiXzB4MzVkMDI1IiwiXzB4NTZkMDA1IiwiXzB4MTE2M2JkIiwiXzB4NDVmYmE4IiwiXzB4MTkyNzlkIiwiXzB4MmZmYjIzIiwiXzB4MjI1MmE2IiwibmFtZSIsIl8weDNlODhkOCIsIm5hbWVzcGFjZUluZGV4IiwiXzB4NTY1NTRjIiwiXzB4NDZlMGE3IiwiXzB4NTJmODA4IiwiXzB4MThiNzg3IiwiXzB4MzhmZDY5IiwiXzB4MmU3NmYzIiwiXzB4NDZlMTYwIiwiXzB4NDBkN2I4IiwiXzB4NWRmZjAyIiwiXzB4NDE2ZDYxIiwiXzB4NWY0MjFjIiwiXzB4NTExYTExIiwiXzB4NWNmMjdmIiwiXzB4NGQ0YzVmIiwiXzB4Mjk2YzQ4IiwiXzB4NGJhODJiIiwiXzB4M2VhZDk4IiwiXzB4Mjc0YTFlIiwiXzB4MzhkMGQ3IiwiXzB4MWIxNTgxIiwiXzB4MjZhMmI5IiwiXzB4NGM2ODljIiwiXzB4MjBkYmM2IiwiXzB4NTlkNGE4IiwiXzB4NTFlMWQ1IiwiXzB4MzFlMzQ3IiwiXzB4MTJiZjQwIiwiXzB4MzkxZGFjIiwiXzB4MWZhYWI5IiwiXzB4MjQzNWFiIiwiXzB4MzdiNWJmIiwiXzB4MmYwMWFmIiwiXzB4NDQ3YmUwIiwiXzB4M2IwZmE5IiwiXzB4MzZmOWMxIiwiXzB4NGMxOTA1IiwiXzB4MTA3MDY3IiwiXzB4MTMyNTAxIiwiXzB4NDYxOWEzIiwiXzB4M2M3ZjQ4IiwiXzB4MjdjYWRhIiwiXzB4MmQ4OTllIiwiXzB4MzBkOTJmIiwiXzB4MjNkM2I4IiwiXzB4Y2JlMDQ4IiwiUkVEIiwiXzB4M2MwYzcyIiwic2VjdXJpdHlNb2RlIiwiXzB4YjdlOTBjIiwic2VjdXJpdHlQb2xpY3kiLCJfMHg1NzYzMDQiLCJ1c2VySWRlbnRpdHlUeXBlIiwiXzB4MjI4OTJhIiwiY3JlZGVudGlhbHMiLCJfMHg0NGMyZmIiLCJfMHg0YTEyYzAiLCJfMHg0NDY5ZDQiLCJfMHgzMmNjMTMiLCJfMHg0ZTQ0N2EiLCJfMHg1NTI5NmEiLCJfMHhlMTEzZDMiLCJfMHg1MmQ5ZTYiLCJfMHg1MjhjNTQiLCJfMHg0MTU5MmUiLCJfMHg0YTFkOGIiLCJfMHgxMTBiZjAiLCJfMHgyMDdhN2YiLCJfMHg1ODAzZWYiXSwibWFwcGluZ3MiOiJrcUlBQUEsQ0FBQyxVLENBQ0csYSx3QkFFQSxTQUFTQSxTQUFULENBQXFDQyxTQUFyQyxDQUEwQ0MsUUFBMUMsQyx5QkFDVUMsU0FBQSxDQUFZQyxDQUFBLEMsZ0JBQUEsQyxDQUNaQyxTQUFBLENBQWdCRCxDQUFBLEMsZ0JBQUEsQyxDQUNoQkUsU0FBQSxDQUE2QixJLDJCQUN6QkMsU0FBQSxDQUFXTixTQUFBLEMsZ0JBQUEsRSxnQkFBQSxFQUFlRSxTQUFBLEMsZ0JBQUEsR0FBZixDLENBQ2pCRSxTQUFBLEMsZ0JBQUEsSSxHQUNJLENBQUNFLFNBQUQsRUFBYSxDQUFDQSxTQUFBLEMsZ0JBQUEsQyxDQUNkLE8sR0FFQUEsU0FBQSxDLGVBQUEsQyxDQUNBLFVBQVdDLFNBQVgsSUFBZ0JELFNBQUEsQyxlQUFBLENBQWhCLEMsQ0FDSSxNQUFNRSxTQUFBLENBQVFELFNBQUEsQyxnQkFBQSxHQUFVQSxTQUFBLEMsSUFBQSxDQUF4QixDQUNBSixDQUFBLEMsZ0JBQUEsQ0FBZSxDLE9BQ1gsQ0FBT0ksU0FBQSxDLElBQUEsQ0FESSxDLE9BRVgsQ0FBT0MsU0FGSSxDLFVBR1gsQ0FBVUQsU0FBQSxDLElBQUEsSUFBU04sUUFBQSxDLGNBQUEsQ0FIUixDQUFmLEUsZ0JBQUEsRUFLVU8sU0FMVixFLGdCQUFBLEVBTWNKLFNBTmQsQyxJQVVaQyxTQUFB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LGdCQUFBLEUsR0FBVixFLGFBQ0FBLFNBQUEsQ0FBVUEsU0FBQSxDLGdCQUFBLEUsSUFBVixFLGVBQ0FBLFNBQUEsQ0FBVUEsU0FBQSxDLGdCQUFBLEUsSUFBVixFLGlCQUNBQSxTQUFBLENBQVVBLFNBQUEsQyxnQkFBQSxFLElBQVYsRSxXQUNBQSxTQUFBLENBQVVBLFNBQUEsQyxnQkFBQSxFLElBQVYsRSxrQkFUSixDQVVHRCxTQUFBLEVBQWMsQ0FBQUEsU0FBQSxDQUFZLEVBQVosQ0FWakIsR0FXQSxJQUFJRSxTQUFKLENBQ0EsQ0FBQyxTQUFVQyxTQUFWLEMsMkJBQ0dBLFNBQUEsQ0FBY0EsU0FBQSxDLGdCQUFBLEUsR0FBZCxFLGlCQUNBQSxTQUFBLENBQWNBLFNBQUEsQyxnQkFBQSxFLEdBQWQsRSxpQkFDQUEsU0FBQSxDQUFjQSxTQUFBLEMsZ0JBQUEsRSxHQUFkLEUsU0FDQUEsU0FBQSxDQUFjQSxTQUFBLEMsZ0JBQUEsRSxHQUFkLEUsaUJBQ0FBLFNBQUEsQ0FBY0EsU0FBQSxDLGdCQUFBLEUsSUFBZCxFLGVBQ0FBLFNBQUEsQ0FBY0EsU0FBQSxDLGdCQUFBLEUsSUFBZCxFLGdCQUNBQSxTQUFBLENBQWNBLFNBQUEsQyxnQkFBQSxFLElBQWQsRSxpQkFDQUEsU0FBQSxDQUFjQSxTQUFBLEMsTUFBQSxFLElBQWQsRSxRQVJKLENBU0dELFNBQUEsRUFBa0IsQ0FBQUEsU0FBQSxDQUFnQixFQUFoQixDQVRyQixHQVVBLElBQUlFLFNBQUosQ0FDQSxDQUFDLFNBQVVDLFNBQVYsQywyQkFDR0EsU0FBQSxDQUFXQSxTQUFBLEMsZ0JBQUEsRSxHQUFYLEUsaUJBQ0FBLFNBQUEsQ0FBV0EsU0FBQSxDLGdCQUFBLEUsR0FBWCxFLGlCQUNBQSxTQUFBLENBQVdBLFNBQUEsQyxXQUFBLEUsR0FBWCxFLGlCQUNBQSxTQUFBLENBQVdBLFNBQUEsQyxnQkFBQSxFLEdBQVgsRSxpQkFDQUEsU0FBQSxDQUFXQSxTQUFBLEMsZ0JBQUEsRSxJQUFYLEUsaUJBQ0FBLFNBQUEsQ0FBV0EsU0FBQSxDLGdCQUFBLEUs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UUFBQSxFQUFjQSxNQUFBLEMsUUFBQSxFQUFjLEVBQWQsQ0FBa0JtUCxTQUFBLEVBQWxCLENBQWQsQ0FBaUUsQyxRQUFFLENBQU9RLFNBQVAsQyxrQ0FDeEVBLFNBQUEsQyxnQkFBQSxJLFVBRHNFLEMsY0FHakYsQ0FBYUMsU0FBYixDLGtDQUNXQSxTQUFBLEMsZ0JBQUEsSSxrQkFKc0UsQ0FBakUsQ0FBcEIsQyxDQU9BN1QsQ0FBQSxDLGdCQUFBLENBUEEsQ0FRQSxNQUFNOFQsU0FBQSxDQUFpQjlULENBQUEsQyxnQkFBQSxDQUF2QixDQUNBOFQsU0FBQSxDLGdCQUFBLEVBQWtDN1AsTUFBQSxDLGdCQUFBLEVBQWMsRUFBZCxDQUFrQm1QLFNBQUEsRUFBbEIsQ0FBbEMsQyxFQXBFNkMsQyxZQXNFakQsRSwyQkFDVVcsU0FBQSxDQUFtQi9ULENBQUEsQyxnQkFBQSxFLGdCQUFBLEUsZ0JBQUEsQyxDQUNyQitULFMsRUFDQS9ULENBQUEsQyxnQkFBQSxFLGdCQUFBLEVBQXNDK1QsU0FBQSxDLEdBQUEsQyxHQUF0QyxDLENBQ0EsSyxnQkFBQSxFQUFjQSxTQUFBLEMsR0FBQSxDLE1BR2QvVCxDQUFBLEMsZ0JBQUEsRSxnQkFBQSxFLEdBQUEsQyxDQUNBLEssZ0JBQUEsRSxNQTlFeUMsQ0FBckQsQyxFQTc0QkosRyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgZnVuY3Rpb24gaW5zdGFsbFN1YnNjcmlwdGlvblNlbGVjdG9yKFJFRCwgbm9kZSkge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0ICRzdWJzY3JpcHRpb24gPSAkKFwiI25vZGUtaW5wdXQtc3Vic2NyaXB0aW9uXCIpO1xuICAgICAgICBjb25zdCBpbnN0YWxsU3Vic2NyaXB0aW9uT3B0aW9ucyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVuZHBvaW50ID0gUkVELm5vZGVzLm5vZGUoJGVuZHBvaW50LnZhbCgpKTtcbiAgICAgICAgICAgICRzdWJzY3JpcHRpb24uZW1wdHkoKTtcbiAgICAgICAgICAgIGlmICghZW5kcG9pbnQgfHwgIWVuZHBvaW50LnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZW5kcG9pbnQuc3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcyBvZiBlbmRwb2ludC5zdWJzY3JpcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gcy5uYW1lIHx8IHMuaWQ7XG4gICAgICAgICAgICAgICAgICAgICQoXCI8b3B0aW9uLz5cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHMuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogcy5pZCA9PT0gbm9kZS5zdWJzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAudGV4dChsYWJlbClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbygkc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGluc3RhbGxTdWJzY3JpcHRpb25PcHRpb25zKCk7XG4gICAgICAgIC8vIGhhY2tcbiAgICAgICAgLy8gJGlucHV0QWN0aW9uLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgLy8gICAgICRlbmRwb2ludC5vbihcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgaW5zdGFsbFN1YnNjcmlwdGlvbk9wdGlvbnMoKTtcbiAgICAgICAgLy8gICAgIH0pO1xuICAgICAgICAvLyB9KTtcbiAgICAgICAgJHN1YnNjcmlwdGlvbi5vbihcImZvY3VzIGNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgIGluc3RhbGxTdWJzY3JpcHRpb25PcHRpb25zKCk7XG4gICAgICAgIH0pO1xuICAgICAgICAkZW5kcG9pbnQub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAgICAgaW5zdGFsbFN1YnNjcmlwdGlvbk9wdGlvbnMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG4gICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbiAgICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG4gICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG4gICAgUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbiAgICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuICAgIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcbiAgICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuICAgIC8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCAqL1xyXG5cclxuXHJcbiAgICBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgICAgICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xyXG4gICAgfTtcblxuICAgIGNvbnN0IE9yZ2FuaXplc1JlZk5vZGVJZCA9IFwibnM9MDtpPTM1XCI7XG4gICAgY29uc3QgRm9sZGVyVHlwZSA9IFwibnM9MDtpPTYxXCI7XG4gICAgY29uc3QgSGFzQ29tcG9uZW50UmVmTm9kZUlkID0gXCJucz0wO2k9NDdcIjtcbiAgICBjb25zdCBIYXNQcm9wZXJ0eVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ2XCI7XG4gICAgY29uc3QgSGFzQ2hpbGRSZWZOb2RlSWQgPSBcIm5zPTA7aT0zNFwiO1xuICAgIGNvbnN0IEhhc1N1YnR5cGVSZWZOb2RlSWQgPSBcIm5zPTA7aT00NVwiO1xuICAgIGNvbnN0IEhhc1R5cGVEZWZpbml0aW9uUmVmTm9kZUlkID0gXCJucz0wO2k9NDBcIjtcblxuICAgIHZhciBCcm93c2VEaXJlY3Rpb247XG4gICAgKGZ1bmN0aW9uIChCcm93c2VEaXJlY3Rpb24pIHtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkZvcndhcmRcIl0gPSAwXSA9IFwiRm9yd2FyZFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52ZXJzZVwiXSA9IDFdID0gXCJJbnZlcnNlXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJCb3RoXCJdID0gMl0gPSBcIkJvdGhcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkludmFsaWRcIl0gPSAzXSA9IFwiSW52YWxpZFwiO1xuICAgIH0pKEJyb3dzZURpcmVjdGlvbiB8fCAoQnJvd3NlRGlyZWN0aW9uID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzO1xuICAgIChmdW5jdGlvbiAoTm9kZUNsYXNzKSB7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJVbnNwZWNpZmllZFwiXSA9IDBdID0gXCJVbnNwZWNpZmllZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk1ldGhvZFwiXSA9IDRdID0gXCJNZXRob2RcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAzMl0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3MgfHwgKE5vZGVDbGFzcyA9IHt9KSk7XG4gICAgdmFyIE5vZGVDbGFzc01hc2s7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3NNYXNrKSB7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFwiXSA9IDFdID0gXCJPYmplY3RcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJPYmplY3RUeXBlXCJdID0gOF0gPSBcIk9iamVjdFR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJEYXRhVHlwZVwiXSA9IDY0XSA9IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3NNYXNrIHx8IChOb2RlQ2xhc3NNYXNrID0ge30pKTtcbiAgICB2YXIgUmVzdWx0TWFzaztcbiAgICAoZnVuY3Rpb24gKFJlc3VsdE1hc2spIHtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDFdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIklzRm9yd2FyZFwiXSA9IDJdID0gXCJJc0ZvcndhcmRcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiTm9kZUNsYXNzXCJdID0gNF0gPSBcIk5vZGVDbGFzc1wiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJCcm93c2VOYW1lXCJdID0gOF0gPSBcIkJyb3dzZU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiRGlzcGxheU5hbWVcIl0gPSAxNl0gPSBcIkRpc3BsYXlOYW1lXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIlR5cGVEZWZpbml0aW9uXCJdID0gMzJdID0gXCJUeXBlRGVmaW5pdGlvblwiO1xuICAgIH0pKFJlc3VsdE1hc2sgfHwgKFJlc3VsdE1hc2sgPSB7fSkpO1xuICAgIC8vICBjb25zdCBxID0gUmVmZXJlbmNlVHlwZUlkcy5Pcmdhbml6ZXM7XG4gICAgZnVuY3Rpb24gcmVzb2x2ZU5vZGVJZChub2RlSWRMaWtlKSB7XG4gICAgICAgIHN3aXRjaCAobm9kZUlkTGlrZSkge1xuICAgICAgICAgICAgY2FzZSBcIk9yZ2FuaXplc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBPcmdhbml6ZXNSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzUHJvcGVydHlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzUHJvcGVydHlSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzQ29tcG9uZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NvbXBvbmVudFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDaGlsZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNDaGlsZFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNTdWJ0eXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1N1YnR5cGVSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzVHlwZURlZmluaXRpb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBnZXRJY29uID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHJlZmVyZW5jZS5ub2RlQ2xhc3MpIHtcbiAgICAgICAgICAgIGNhc2UgXCJPYmplY3RcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gT3JnYW5pemVzUmVmTm9kZUlkKSA7XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS50eXBlRGVmaW5pdGlvbiA9PT0gRm9sZGVyVHlwZSB8fCByZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBcImk9NjFcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWZvbGRlclwiLCBjb2xvcjogXCJyZ2JhKDYxLCA2MCwgNCwgMC41MjUpXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6IFwiU2VhR3JlZW5cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlXCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc0NvbXBvbmVudFJlZk5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIlN0ZWVsQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc1Byb3BlcnR5UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiRG9kZ2VyQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIkNhZGV0Qmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIk1ldGhvZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtY29nXCIsIGNvbG9yOiBcIlNhbmR5QnJvd25cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJWYXJpYWJsZVR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXNsaWRlcnNcIiwgY29sb3I6IFwiRGFya09yYW5nZVwiIH07XG4gICAgICAgICAgICBjYXNlIFwiRGF0YVR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXRleHQtd2lkdGhcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXF1ZXN0aW9uXCIsIGNvbG9yOiBcImdyZXlcIiB9O1xuICAgIH07XG5cbiAgICBjb25zdCBicm93c2UgPSAoX2EsIG5vZGVJZF8xLCB0ZW1wbGF0ZV8xKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIG5vZGVJZF8xLCB0ZW1wbGF0ZV8xXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBub2RlSWQsIHRlbXBsYXRlKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1lbmRwb2ludDJgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS9icm93c2VgO1xuICAgICAgICBjb25zdCBicm93c2VEZXNjcmlwdGlvbiA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGVtcGxhdGUpLCB7IG5vZGVJZCwgcmVzdWx0TWFzazogNjMgfSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIGJyb3dzZURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGluZyBmYWlsZWQgd2l0aCBlcnJvclwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXM6IFtdIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJicm93c2UgZmV0Y2hlZCA6IFwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB5aWVsZCBkYXRhLmpzb24oKTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IHJlc3BvbnNlLmJyb3dzZVJlc3VsdC5yZWZlcmVuY2VzIHx8IFtdO1xuICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZTEgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc0NoaWxkXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5WYXJpYWJsZSB8IE5vZGVDbGFzcy5PYmplY3QgfCBOb2RlQ2xhc3MuTWV0aG9kLFxuICAgICAgICAvLyAgTm9kZUNsYXNzLk9iamVjdFR5cGUgfFxuICAgICAgICAvLyAgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLkRhdGFUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlZpZXcsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgY29uc3QgdGVtcGxhdGUyID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJPcmdhbml6ZXNcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCB3YWxrQmFja3dhcmQgPSAoX2EsIF9iKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIF9iXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCB7IG5vZGVJZCwgcm9vdE5vZGVJZCwgaXNUeXBlIH0pIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWVuZHBvaW50MmA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L3dhbGstYmFja3dhcmRgO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICAgICAgcm9vdE5vZGVJZCxcbiAgICAgICAgICAgICAgICBpc1R5cGUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uID0gKHlpZWxkIGRhdGEuanNvbigpKTtcbiAgICAgICAgcmV0dXJuIGpzb24uYnJvd3NlUGF0aDtcbiAgICB9KTtcbiAgICBjb25zdCBpbnRlcm5hbFZlcmlmeSA9IChfYSwgJGlucHV0RWxlbWVudF8xLCAkaW5mb18xKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsICRpbnB1dEVsZW1lbnRfMSwgJGluZm9fMV0sIHZvaWQgMCwgZnVuY3Rpb24qICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgJGlucHV0RWxlbWVudCwgJGluZm8pIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWVuZHBvaW50MmA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2NoZWNrTm9kZUlkYDtcbiAgICAgICAgY29uc3Qgbm9kZUlkID0gJGlucHV0RWxlbWVudC52YWwoKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzZXROb3RpZmljYXRpb24gPSAodGV4dCwgY2xhc3NOYW1lKSA9PiB7XG4gICAgICAgICAgICAkaW5mby50ZXh0KHRleHQpLmFkZENsYXNzKFwic3RlcmZpdmUtaW5mb1wiKS5hZGRDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgJGluZm8uc2hvdygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgJGluZm8ucmVtb3ZlQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICAkaW5mby5oaWRlKCk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QganNvbiA9ICh5aWVsZCBkYXRhLmpzb24oKSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICAvLyBkbyBzb21ldGhpbmc7XG4gICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCIhIWZhaWx1cmUhIVwiICsgbm9kZUlkLCBcImZhaWx1cmVcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoanNvbi5zdGF0dXNDb2RlLm1hdGNoKC9Hb29kLykpIHtcbiAgICAgICAgICAgICAgICAvLyBkbyBzb21ldGhpbmdcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChqc29uLm5vZGVBZGRyZXNzU3RyaW5nKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiR29vZFwiLCBcIm9rXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoYCR7bm9kZUlkfWApO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihgJHtqc29uLnN0YXR1c0NvZGV9ICR7ZGF0YS5zdGF0dXNUZXh0fWAsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGZldGNoQ2hpbGRyZW4oJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTEpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MiA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMik7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFsuLi5icm93c2VSZXN1bHQxLnJlZmVyZW5jZXMsIC4uLmJyb3dzZVJlc3VsdDIucmVmZXJlbmNlc10sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgdGVtcGxhdGVTVCA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzU3VidHlwZVwiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8IE5vZGVDbGFzcy5PYmplY3RUeXBlIHwgTm9kZUNsYXNzLkRhdGFUeXBlIHwgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBmdW5jdGlvbiBmZXRjaFN1YnR5cGVzKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGVTVCk7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3NlUmVzdWx0MTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG1ha2VFbGVtZW50JDEgPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgaWYgKCFyZWZlcmVuY2UgfHwgIXJlZmVyZW5jZS5ub2RlSWQpIHtcbiAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpPjxpIGNsYXNzPVwiZmEgZmEtZXJyb3JcIiBzdHlsZT1cImNvbG9yOnJlZDtcIj48L2k+bm8gcmVmZXJlbmNlICE8dWw+PC91bD48L2xpPmApO1xuICAgICAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG4gPSByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHQgPSAoKF9hID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgKChfYiA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB7IGljb24sIGNvbG9yIH0gPSBnZXRJY29uKHJlZmVyZW5jZSk7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gYCgke3JlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKX0pICR7KChfYyA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubmFtZSkgfHwgKChfZCA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnRleHQpIHx8IFwiXCJ9YDtcbiAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8bGkga2V5PVwiJHtyZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCl9XCJ9PjxzcGFuIGNsYXNzPVwidHJlZS10ZXh0XCIgdGl0bGU9JHt0aXRsZX0+PGkgY2xhc3M9XCJmYSAke2ljb259XCIgc3R5bGU9XCJjb2xvcjoke2NvbG9yfTtcIj48L2k+ICR7dH08L3NwYW4+PHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgJGVsZW1lbnQuYWRkQ2xhc3MoXCJleHBhbmRhYmxlXCIpO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwidmFsdWVcIiwgbik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgIH07XG4gICAgY29uc3QgZmluZEVsZW1lbnQgPSAobm9kZUlkLCAkdHJlZSkgPT4ge1xuICAgICAgICByZXR1cm4gJHRyZWUuZmluZChgbGlba2V5PVwiJHtub2RlSWR9XCJdYCk7XG4gICAgfTtcbiAgICBjb25zdCBzZWxlY3RTaW5nbGUgPSAodGhhdCwgJGxpKSA9PiB7XG4gICAgICAgIHRoYXQuJHRyZWUuZmluZChcImxpID4gLnRyZWUtdGV4dFwiKS5yZW1vdmVDbGFzcyhcInNlbGVjdGVkXCIpO1xuICAgICAgICAvLyBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXNcbiAgICAgICAgJGxpLmZpbmQoXCIudHJlZS10ZXh0OmZpcnN0XCIpLmFkZENsYXNzKFwic2VsZWN0ZWRcIik7XG4gICAgfTtcbiAgICBjb25zdCBhdXRvRXhwYW5kID0gKHRoYXQsIGJyb3dzZVBhdGgsICR0cmVlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgLy8gZXhwYW5kIHRoZSB0cmVlIHRvIHNob3cgdGhlIG5vZGVJZFxuICAgICAgICBsZXQgJGN1cnJlbnQgPSAkdHJlZS5jaGlsZHJlbihcIjpmaXJzdFwiKTtcbiAgICAgICAgYnJvd3NlUGF0aC5yZWxhdGl2ZVBhdGguZWxlbWVudHMgfHwgW107XG4gICAgICAgIGNvbnN0IG5vZGVJZHMgPSBicm93c2VQYXRoLm5vZGVJZHMgfHwgW107XG4gICAgICAgIGlmIChub2RlSWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgbiBvZiBub2RlSWRzKSB7XG4gICAgICAgICAgICBpZiAoJGN1cnJlbnQuaGFzQ2xhc3MoXCJleHBhbmRhYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgLy8gbmVlZCB0byBleHBhbmQgYW5kIHNlbGVjdCB0aGUgcmlnaHQgZWxlbWVudFxuICAgICAgICAgICAgICAgIHlpZWxkIF9leHBhbmRMaSh0aGF0LCAkY3VycmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IGZpbmRFbGVtZW50KG4sICRjdXJyZW50KTtcbiAgICAgICAgICAgIGlmICgkZWxlbWVudC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkY3VycmVudCA9ICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIHNlbGVjdFNpbmdsZSh0aGF0LCAkY3VycmVudCk7XG4gICAgICAgIHNjcm9sbFRvTGkodGhhdC4kZHJvcGRvd24sICRjdXJyZW50KTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBzY3JvbGxUb0xpKCRjb250YWluZXIsICR0YXJnZXRMaSkge1xuICAgICAgICAvLyBHZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSB0YXJnZXQgaXRlbSByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyXG4gICAgICAgIGNvbnN0IGxpUG9zID0gJHRhcmdldExpLnBvc2l0aW9uKCkudG9wO1xuICAgICAgICAvLyBHZXQgdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBjb250YWluZXJcbiAgICAgICAgY29uc3QgY29udGFpbmVyU2Nyb2xsVG9wID0gJGNvbnRhaW5lci5zY3JvbGxUb3AoKTtcbiAgICAgICAgaWYgKGNvbnRhaW5lclNjcm9sbFRvcCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHBvc2l0aW9uIHRvIHNjcm9sbCB0byAoY3VycmVudCBzY3JvbGwgKyBpdGVtJ3MgcG9zaXRpb24pXG4gICAgICAgIC8vIEFkanVzdCB0aGlzIGNhbGN1bGF0aW9uIGJhc2VkIG9uIHlvdXIgbmVlZHNcbiAgICAgICAgY29uc3Qgc2Nyb2xsVG8gPSBjb250YWluZXJTY3JvbGxUb3AgKyBsaVBvcyAtICRjb250YWluZXIuaGVpZ2h0KCkgLyAyICsgJHRhcmdldExpLmhlaWdodCgpIC8gMjtcbiAgICAgICAgLy8gU2Nyb2xsIHRoZSBjb250YWluZXIgdG8gZW5zdXJlIHRoZSBpdGVtIGlzIHZpc2libGVcbiAgICAgICAgJGNvbnRhaW5lci5hbmltYXRlKHtcbiAgICAgICAgICAgIHNjcm9sbFRvcDogc2Nyb2xsVG8sXG4gICAgICAgIH0sIDUwMCk7IC8vIEFkanVzdCB0aGUgZHVyYXRpb24gKDUwMG1zKSBhcyBuZWVkZWRcbiAgICB9XG4gICAgY29uc3QgcmVhY2hTZWxlY3Rpb24gPSAodGhhdCwgcGFyZW50Tm9kZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IG5vZGVJZCA9IHRoYXQuJGlucHV0LnZhbCgpO1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgcm9vdE5vZGVJZDogcGFyZW50Tm9kZS5ub2RlSWQsXG4gICAgICAgICAgICBpc1R5cGU6IHRoYXQub3B0aW9ucy5pc1R5cGVSZWYgfHwgZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgY29uc3QgYnJvd3NlUGF0aCA9IHlpZWxkIHdhbGtCYWNrd2FyZChkYXRhLCBvcHRpb25zKTtcbiAgICAgICAgaWYgKCFicm93c2VQYXRoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgeWllbGQgYXV0b0V4cGFuZCh0aGF0LCBicm93c2VQYXRoLCB0aGF0LiR0cmVlKTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBfZmV0Y2hEYXRhRm9yTm9kZSh0aGF0LCAkbm9kZSwgZmV0Y2hGdW5jLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoJG5vZGUuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhbHJlYWR5IGZldGNoZWRcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwibG9hZGluZ1wiKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBsb2FkaW5nXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRub2RlLmFkZENsYXNzKFwibG9hZGluZ1wiKTtcbiAgICAgICAgICAgICRub2RlLmFwcGVuZCgnPGRpdiBjbGFzcz1cInNwaW5uZXJcIj48L2Rpdj4nKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcmVmZXJlbmNlcyB9ID0geWllbGQgZmV0Y2hGdW5jKCRub2RlLCBkYXRhKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlZmVyZW5jZSBvZiByZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuZmlsdGVyICYmICF0aGF0Lm9wdGlvbnMuZmlsdGVyKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQkMShyZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICRub2RlLmFkZENsYXNzKFwiZmV0Y2hlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmFwcGVuZChgPGxpPmVycm9yICR7ZXJyLm1lc3NhZ2V9PC9saT5gKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVyclwiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJG5vZGUuZmluZChcIi5zcGlubmVyXCIpLnJlbW92ZSgpO1xuICAgICAgICAgICAgJG5vZGUucmVtb3ZlQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbWFrZUNvbm5lY3Rpb24odGhhdCkge1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgYmFzZVVybDogdGhhdC5vcHRpb25zLmJhc2VVcmwsXG4gICAgICAgICAgICBlbmRwb2ludE5vZGU6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlKCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgZnVuY3Rpb24gX2V4cGFuZExpKHRoYXQsICRsaSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImZldGNoZWRcIikpIHtcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICAgICAgY29uc3QgZiA9ICF0aGF0Lm9wdGlvbnMuaXNUeXBlUmVmID8gZmV0Y2hDaGlsZHJlbiA6IGZldGNoU3VidHlwZXM7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHlpZWxkIF9mZXRjaERhdGFGb3JOb2RlKHRoYXQsICRsaSwgZiwgZGF0YSk7XG4gICAgICAgICAgICAgICAgLy8gbWFyayBhcyBleHBhbmRlZFxuICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0ID0gKCkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogWyBUZW1wZXJhdHVyZSAgXVxuICAgICAgICAgKiAgICggdG9vbHRpcCA6ICgvT2JqZWN0cy9NeVNlbnNvcikgKG5zPTE7cz1UZW1wZXJhdHVyZSkpXG4gICAgICAgICAqIFsgKyBbRm9sZGVyXSBPYmplY3RzXVxuICAgICAgICAgKiBbICAgICBbT2JqZWN0XSBNeVNlbnNvcl1cbiAgICAgICAgICogWyAgICAgKCApIFtWYXJpYWJsZV0gVGVtcGVyYXR1cmVdXG4gICAgICAgICAqL1xuICAgICAgICAkLndpZGdldChcInN0ZXJmaXZlLm5vZGVCcm93c2VyXCIsIHtcbiAgICAgICAgICAgIC8qIGRlZmF1bHQgb3B0aW9ucyAqL1xuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogKCkgPT4gKHsgZW5kcG9pbnQ6IFwib3BjLnRjcDovL29wY3VhZGVtby5zdGVyZml2ZS5jb206MjY1NDNcIiB9KSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludDogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGJyb3dzZU5hbWU6IHsgbmFtZXNwYWNlSW5kZXg6IDAsIG5hbWU6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vZGVDbGFzczogXCJPYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgbm9kZUlkOiBcIm5zPTA7aT04NVwiLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogeyB0ZXh0OiBcIk9iamVjdHNcIiB9LFxuICAgICAgICAgICAgICAgICAgICB0eXBlRGVmaW5pdGlvbjogRm9sZGVyVHlwZSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgYmFzZVVybDogXCJcIixcbiAgICAgICAgICAgICAgICBpc1R5cGVSZWY6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc29sdmVQYXJlbnROb2RlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoYXQuX19wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gdHlwZW9mIHRoYXQub3B0aW9ucy5wYXJlbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZS5jYWxsKHRoYXQpIDogdGhhdC5vcHRpb25zLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXNjID0geWllbGQgYTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9fcGFyZW50Tm9kZSA9IGRlc2M7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9fcGFyZW50Tm9kZSA9IGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoYXQuX19wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAvLyBhbHNvIHJlc2V0IHBhcmVudCBub2RlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB0aGF0O1xuICAgICAgICAgICAgICAgICAgICBhLl9fcGFyZW50Tm9kZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0geWllbGQgdGhpcy5yZXNvbHZlUGFyZW50Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50JDEocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5jdXJyZW50UGFyZW50ID0gcGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2ZXJpZnkoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbFZlcmlmeShkYXRhLCB0aGF0LiRpbnB1dCwgdGhhdC4kaW5mbyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2NyZWF0ZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21ibyA9ICQoXCI8ZGl2Lz5cIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJzdGVyZml2ZS1jb21iby1ib3hcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlcGxhY2VXaXRoKHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcImlucHV0LWdyb3VwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbnB1dEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiRpbnB1dCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1zaXRlbWFwXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJHRvZ2dsZVRyZWVCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4ub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmVlZFRvUmVhY2hTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRkcm9wZG93bi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJlZSB3aWRnZXQgaXMgZ29pbmcgdG8gYmVjb21lIHZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0geWllbGQgdGhhdC5yZXNvbHZlUGFyZW50Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlICE9PSB0aGF0LmN1cnJlbnRQYXJlbnQgfHwgKChfYSA9IHRoYXQuY3VycmVudFBhcmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGVJZCkgIT09IHBhcmVudE5vZGUubm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRoYXQucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZFRvUmVhY2hTZWxlY3Rpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24udG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkVG9SZWFjaFNlbGVjdGlvbiAmJiAoeWllbGQgcmVhY2hTZWxlY3Rpb24odGhhdCwgcGFyZW50Tm9kZSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4gPSAkKGA8YnV0dG9uPjxpIGNsYXNzPVwiZmEgZmEtZmxhc2tcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kdmVyaWZ5QnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIsIFwiZW50ZXIgYSBub2RlSWQgb3IgYSBicm93c2VQYXRoIFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5mbyA9ICQoYDxkaXYgY2xhc3M9XCJpbmZvLXRleHRcIj48L2Rpdj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93biA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJzdGVyZml2ZS1kcm9wZG93blwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGluZm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRkcm9wZG93bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZSA9ICQoYDx1bCBjbGFzcz1cInN0ZXJmaXZlLXRyZWVcIj48L3VsPmApLmFwcGVuZFRvKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNPbkxlZnRTaXplID0gKCRsaSwgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlV2lkdGggPSAyMDsgLy8gU2V0IHdpZHRoIG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZUhlaWdodCA9IDIwOyAvLyBTZXQgaGVpZ2h0IG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3MgPSAkbGkub2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUucGFnZVggPj0gZWxlbWVudFBvcy5sZWZ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VYIDw9IGVsZW1lbnRQb3MubGVmdCArIGJlZm9yZVdpZHRoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZID49IGVsZW1lbnRQb3MudG9wICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZIDw9IGVsZW1lbnRQb3MudG9wICsgYmVmb3JlSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b2dnbGVFeHBhbnNpb24gPSAoJGxpKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRhYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfZXhwYW5kTGkodGhhdCwgJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9nZ2xlIGl0cyBleHBhbmRlZC9jb2xsYXBzZWQgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCBleHBhbmRhYmxlIGFuZCBleHBhbmRlZCBjbGFzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkudG9nZ2xlQ2xhc3MoXCJleHBhbmRhYmxlIGV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5jaGlsZHJlbihcInVsXCIpLmNoaWxkcmVuKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImRibGNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT25MZWZ0U2l6ZSgkbGksIGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlRXhwYW5zaW9uKCRsaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICRsaS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZlcmVuY2UgPSAkbGkuZGF0YShcInJlZmVyZW5jZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlICYmICF0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5TmFtZSA9ICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IGBbJHtkaXNwbGF5TmFtZX1dKCR7dmFsdWV9KWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC52YWwoaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUub24oXCJjbGlja1wiLCBcImxpXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0ICRsaSA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09uTGVmdFNpemUoJGxpLCBldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUV4cGFuc2lvbigkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdFNpbmdsZSh0aGF0LCAkbGkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsaWNraW5nIG91dHNpZGUgdGhlIHBhZ2Ugd2lsbCBoaWRlIHRoZSBkcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHRoYXQuJGNvbWJvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG1ha2VFbGVtZW50ID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgaWYgKCFyZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpPjxpIGNsYXNzPVwiZmEgZmEtZXJyb3JcIiBzdHlsZT1cImNvbG9yOnJlZDtcIj48L2k+bm8gcmVmZXJlbmNlICE8dWw+PC91bD48L2xpPmApO1xuICAgICAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG4gPSByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGxldCB0ID0gKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgbGV0IG5zID0gKF9jID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5uYW1lc3BhY2VJbmRleDtcbiAgICAgICAgdCArPSBucyAhPT0gdW5kZWZpbmVkICYmIHJlZmVyZW5jZS5ub2RlQ2xhc3MubWF0Y2goL1R5cGUvKSA/IGAgKG5zPSR7bnN9KWAgOiBcIlwiO1xuICAgICAgICBjb25zdCB7IGljb24sIGNvbG9yIH0gPSBnZXRJY29uKHJlZmVyZW5jZSk7XG4gICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpPmApO1xuICAgICAgICBpZiAocmVmZXJlbmNlLm5vZGVDbGFzcyA9PT0gXCJWYXJpYWJsZVwiKSB7XG4gICAgICAgICAgICBjb25zdCBjaGVja0JveCA9ICQoJzxzcGFuIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94IHVuY2hlY2tlZFwiPjwvc3Bhbj4nKTtcbiAgICAgICAgICAgICRlbGVtZW50LmFwcGVuZChjaGVja0JveCk7XG4gICAgICAgICAgICAvLyBUb2dnbGUgY2hlY2tib3ggc3RhdGUgd2hlbiBjbGlja2VkXG4gICAgICAgICAgICBjaGVja0JveC5vbihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tCb3guaGFzQ2xhc3MoXCJ1bmNoZWNrZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tCb3gucmVtb3ZlQ2xhc3MoXCJ1bmNoZWNrZWRcIikuYWRkQ2xhc3MoXCJjaGVja2VkXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tCb3gucmVtb3ZlQ2xhc3MoXCJjaGVja2VkXCIpLmFkZENsYXNzKFwidW5jaGVja2VkXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgICRlbGVtZW50LmFwcGVuZCgkKGA8aSBjbGFzcz1cImZhICR7aWNvbn1cIiBzdHlsZT1cImNvbG9yOiR7Y29sb3J9O1wiPjwvaT4ke3R9PHVsPjwvdWw+YCkpO1xuICAgICAgICAkZWxlbWVudC5hZGRDbGFzcyhcImV4cGFuZGFibGVcIik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJ2YWx1ZVwiLCBuKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInJlZmVyZW5jZVwiLCByZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gJGVsZW1lbnQ7XG4gICAgfTtcbiAgICBjb25zdCBkZWNsYXJlRXZlbnRGaWVsZFNlbGVjdG9yV2lkZ2V0ID0gKCkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogWyBUZW1wZXJhdHVyZSAgXVxuICAgICAgICAgKiAgICggdG9vbHRpcCA6ICgvT2JqZWN0cy9NeVNlbnNvcikgKG5zPTE7cz1UZW1wZXJhdHVyZSkpXG4gICAgICAgICAqIFsgKyBbRm9sZGVyXSBPYmplY3RzXVxuICAgICAgICAgKiBbICAgICBbT2JqZWN0XSBNeVNlbnNvcl1cbiAgICAgICAgICogWyAgICAgKCApIFtWYXJpYWJsZV0gVGVtcGVyYXR1cmVdXG4gICAgICAgICAqL1xuICAgICAgICAkLndpZGdldChcInN0ZXJmaXZlLmV2ZW50RmllbGRTZWxlY3RvclwiLCB7XG4gICAgICAgICAgICAvKiBkZWZhdWx0IG9wdGlvbnMgKi9cbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6ICgpID0+ICh7IGVuZHBvaW50OiBcIm9wYy50Y3A6Ly9vcGN1YWRlbW8uc3RlcmZpdmUuY29tOjI2NTQzXCIgfSksXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBiYXNlVXJsOiBcIlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9wb3B1bGF0ZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEZpZWxkID0gbmV3IFNldCgoX2EgPSB0aGF0LiRpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgLnZhbCgpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudG9TdHJpbmcoKS5zcGxpdChcIjtcIiApKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VVcmw6IHRoYXQub3B0aW9ucy5iYXNlVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50OiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geWllbGQgZXh0cmFjdEV2ZW50RmllbGRJbmZvKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnN0YWxsVHJlZShyZXN1bHQsIHNlbGVjdGVkRmllbGQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9pbnN0YWxsVHJlZShyZXN1bHQsIHNlbGVjdEZpZWxkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmV2ZW50cykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJvb3QgPSByZXN1bHQuZXZlbnRzO1xuICAgICAgICAgICAgICAgIGNvbnN0ICRyb290RWxlbWVudCA9IG1ha2VFbGVtZW50KHJvb3QpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuYXBwZW5kKCRyb290RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZml4ID0gXCJcIjtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnN0YWxsQ2hpbGRyZW4oJHJvb3RFbGVtZW50LmNoaWxkcmVuKFwidWxcIiksIHJvb3QsIHByZWZpeCwgc2VsZWN0RmllbGQpO1xuICAgICAgICAgICAgICAgICRyb290RWxlbWVudC5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVWYWx1ZXMoc2VsZWN0RmllbGQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9pbnN0YWxsQ2hpbGRyZW4oJHBhcmVudCwgcGFyZW50LCBwcmVmaXgsIHNlbGVjdGVkRmllbGQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBiID0gKHsgbmFtZSwgbmFtZXNwYWNlSW5kZXggfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmFtZXNwYWNlSW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lc3BhY2VJbmRleH06JHtuYW1lfWA7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudC5jaGlsZHJlbiB8fCBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJUeXBlcyA9IHBhcmVudC5zdWJUeXBlcyB8fCBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbkFuZFN1YlR5cGVzID0gWy4uLmNoaWxkcmVuLCAuLi5zdWJUeXBlc107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbkFuZFN1YlR5cGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQoY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAkcGFyZW50LmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmVmaXgyID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLm5vZGVDbGFzcyA9PT0gXCJWYXJpYWJsZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlZml4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4MiA9IHByZWZpeCArIFwiLlwiICsgYihjaGlsZC5icm93c2VOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDIgPSBiKGNoaWxkLmJyb3dzZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQuYXR0cihcImRhdGEtdmFsdWVcIiwgcHJlZml4Mik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzQ2hpbGRyZW4gPSBjaGlsZC5jaGlsZHJlbiAmJiBjaGlsZC5jaGlsZHJlbi5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1N1YlR5cGVzID0gY2hpbGQuc3ViVHlwZXMgJiYgY2hpbGQuc3ViVHlwZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0NoaWxkcmVuICYmICFoYXNTdWJUeXBlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwibm8tZXhwYW5kYWJsZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luc3RhbGxDaGlsZHJlbigkZWxlbWVudC5jaGlsZHJlbihcInVsXCIpLCBjaGlsZCwgcHJlZml4Miwgc2VsZWN0ZWRGaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkZWxlbWVudC5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfdXBkYXRlU2VsZWN0ZWRGaWVsZHMoKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRmllbGRzID0gbmV3IFNldCgoX2EgPSB0aGF0LiRpbnB1dFxuICAgICAgICAgICAgICAgICAgICAudmFsKCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1N0cmluZygpLnNwbGl0KFwiO1wiICkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVZhbHVlcyhzZWxlY3RlZEZpZWxkcyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX3VwZGF0ZVZhbHVlcyhzZWxlY3RlZEZpZWxkcykge1xuICAgICAgICAgICAgICAgICQoXCIuc3RlcmZpdmUtdHJlZSBsaVwiKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJHRoaXMgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2ID0gJHRoaXMuYXR0cihcImRhdGEtdmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2ICYmIHNlbGVjdGVkRmllbGRzLmhhcyh2KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuY2hpbGRyZW4oXCJzcGFuLmN1c3RvbS1jaGVja2JveFwiKS5yZW1vdmVDbGFzcyhcInVuY2hlY2tlZFwiKS5hZGRDbGFzcyhcImNoZWNrZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfc2V0SW5wdXRWYWx1ZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICBjb25zdCBsaXN0ID0gW107XG4gICAgICAgICAgICAgICAgLy8gY3Jhd2wgdGhlIHRyZWUgdG8gZmluZCBzZWxlY3RlZCBlbGVtZW50cyBhbmQgY3JlYXRlIGEgbGlzdCBvZiBCcm93c2VQYXRoXG4gICAgICAgICAgICAgICAgJChcIi5zdGVyZml2ZS10cmVlIGxpXCIpLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkdGhpcyA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBlbGVtZW50IGlzIHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy5jaGlsZHJlbihcInNwYW4uY3VzdG9tLWNoZWNrYm94LmNoZWNrZWRcIikubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdiA9ICR0aGlzLmF0dHIoXCJkYXRhLXZhbHVlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5wdXNoKHYpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBbLi4ubmV3IFNldChsaXN0KV0uc29ydCgpLmpvaW4oXCI7XCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnZhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfY3JlYXRlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0ID0gdGhpcy5lbGVtZW50O1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvID0gJChcIjxkaXYvPlwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hZGRDbGFzcyhcInN0ZXJmaXZlLWNvbWJvLWJveFwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRbMF0ucGFyZW50RWxlbWVudC5yZXBsYWNlQ2hpbGQodGhhdC4kY29tYm9bMF0sIHRoaXMuZWxlbWVudFswXSk7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5lbGVtZW50LnJlcGxhY2VXaXRoKHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcImlucHV0LWdyb3VwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbnB1dEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiRpbnB1dCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1zaXRlbWFwXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJHRvZ2dsZVRyZWVCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4ub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC4kZHJvcGRvd24uaXMoXCI6dmlzaWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGZsb2F0aW5nQnV0dG9ucy5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGF0LiRkcm9wZG93bi5vZmZzZXQoKTsgLy8gR2V0IHRoZSB0b3AtbGVmdCBjb3JuZXIgcG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICRmbG9hdGluZ0J1dHRvbnMuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGAke29mZnNldC50b3B9cHhgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBgY2FsYygxMDAlIC0gJHtvZmZzZXQubGVmdCArIHRoYXQuJGRyb3Bkb3duLndpZHRoKCl9cHgpYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fcG9wdWxhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3VwZGF0ZVNlbGVjdGVkRmllbGRzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkZmxvYXRpbmdCdXR0b25zLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiLCBcImVudGVyIGEgbm9kZUlkIG9yIGEgYnJvd3NlUGF0aCBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8gPSAkKGA8ZGl2IGNsYXNzPVwiaW5mby10ZXh0XCI+PC9kaXY+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24gPSAkKFwiPGRpdi8+XCIpLmFkZENsYXNzKFwic3RlcmZpdmUtZHJvcGRvd25cIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0ICRzY3JvbGxhYmxlQ29udGVudCA9ICQoJzxkaXYgY2xhc3M9XCJzdGVyZml2ZS1kcm9wZG93bi1zY3JvbGxhYmxlLWNvbnRlbnRcIj48L2Rpdj4nKTtcbiAgICAgICAgICAgICAgICBjb25zdCAkdmFsaWRhdGVCdXR0b24gPSAkKCc8c3BhbiBjbGFzcz1cInZhbGlkYXRlLWJ1dHRvblwiPuKclDwvc3Bhbj4nKTsgLy8gVXNlIGFueSBpY29uIG9yIHRleHQgaGVyZVxuICAgICAgICAgICAgICAgIGNvbnN0ICRjYW5jZWxCdXR0b24gPSAkKCc8c3BhbiBjbGFzcz1cImNhbmNlbC1idXR0b25cIj7inJY8L3NwYW4+Jyk7IC8vIFVzZSBhbnkgaWNvbiBvciB0ZXh0IGhlcmVcbiAgICAgICAgICAgICAgICBjb25zdCAkZmxvYXRpbmdCdXR0b25zID0gJCgnPGRpdiBjbGFzcz1cImZsb2F0aW5nLWJ1dHRvbnNcIj48L2Rpdj4nKS5hcHBlbmQoJHZhbGlkYXRlQnV0dG9uLCAkY2FuY2VsQnV0dG9uKTtcbiAgICAgICAgICAgICAgICAkZmxvYXRpbmdCdXR0b25zLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAvLyBEZWZpbmUgeW91ciB2YWxpZGF0aW9uIGFuZCBjYW5jZWxsYXRpb24gbG9naWNcbiAgICAgICAgICAgICAgICAkdmFsaWRhdGVCdXR0b24ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuX3NldElucHV0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICRjYW5jZWxCdXR0b24ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5mbyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlID0gJChgPHVsIGNsYXNzPVwic3RlcmZpdmUtdHJlZVwiPjwvdWw+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uZW1wdHkoKS5hcHBlbmQodGhhdC4kdHJlZSwgJGZsb2F0aW5nQnV0dG9ucyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlV2lkdGggPSAyMDsgLy8gU2V0IHdpZHRoIG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZUhlaWdodCA9IDIwOyAvLyBTZXQgaGVpZ2h0IG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3MgPSAkKHRoaXMpLm9mZnNldCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnBhZ2VYID49IGVsZW1lbnRQb3MubGVmdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWCA8PSBlbGVtZW50UG9zLmxlZnQgKyBiZWZvcmVXaWR0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWSA+PSBlbGVtZW50UG9zLnRvcCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWSA8PSBlbGVtZW50UG9zLnRvcCArIGJlZm9yZUhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJjbGlja2VkIG9uIGljb25cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImNsaWNrZWQgb24gXCIsICRsaS5kYXRhKFwidmFsdWVcIiksICRsaS5hdHRyKFwiY2xhc3NcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvZ2dsZSBpdHMgZXhwYW5kZWQvY29sbGFwc2VkIHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCBleHBhbmRhYmxlIGFuZCBleHBhbmRlZCBjbGFzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnRvZ2dsZUNsYXNzKFwiZXhwYW5kYWJsZSBleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5jaGlsZHJlbihcInVsXCIpLmNoaWxkcmVuKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsaWNraW5nIG91dHNpZGUgdGhlIHBhZ2Ugd2lsbCBoaWRlIHRoZSBkcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHRoYXQuJGNvbWJvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIGNvbnN0IGV4dHJhY3RFdmVudEZpZWxkSW5mbyA9IChfYSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgW19hXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCwgfSkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vZXh0cmFjdEV2ZW50VHlwZXNgO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hpbmcgZmFpbGVkIHdpdGggZXJyb3JcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICByZXR1cm4geyBldmVudHM6IG51bGwgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoZWQgOiBcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0geWllbGQgZGF0YS5qc29uKCk7XG4gICAgICAgIGNvbnN0IGV2ZW50cyA9IHJlc3BvbnNlLmV2ZW50cztcbiAgICAgICAgcmV0dXJuIHsgZXZlbnRzIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBnZXRFbmRQb2ludEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0ICRlbmRwb2ludCA9ICQoXCIjbm9kZS1pbnB1dC1lbmRwb2ludFwiKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnRJZCA9ICRlbmRwb2ludC52YWwoKTtcbiAgICAgICAgY29uc3QgcmVkTm9kZSA9IFJFRC5ub2Rlcy5ub2RlKGVuZHBvaW50SWQpO1xuICAgICAgICBpZiAoIXJlZE5vZGUpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAvLyBjb25zdCBjcmVkZW50aWFscyA9IFJFRC4oZW5kcG9pbnRJZCk7XG4gICAgICAgIC8vIHdlIG5lZWQgdG8gc2FuaXRpemUgYW5kIGV4dHJhY3QgdGhlIGVuZHBvaW50IGF0dHJpYnV0ZXMgb25seSAoIG5vdCB0aGUgbm9kZS1yZWQgc3R1ZmYpXG4gICAgICAgIGNvbnN0IHsgZW5kcG9pbnQsIHNlY3VyaXR5TW9kZSwgc2VjdXJpdHlQb2xpY3ksIHVzZXJJZGVudGl0eVR5cGUsIGNyZWRlbnRpYWxzIH0gPSByZWROb2RlO1xuICAgICAgICBjb25zdCByZXRWYWx1ZSA9IHtcbiAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgc2VjdXJpdHlNb2RlLFxuICAgICAgICAgICAgc2VjdXJpdHlQb2xpY3ksXG4gICAgICAgICAgICB1c2VySWRlbnRpdHlUeXBlLFxuICAgICAgICAgICAgY3JlZGVudGlhbHMsXG4gICAgICAgIH07XG4gICAgICAgIC8vIHh4IGNvbnNvbGUubG9nKFwieHh4XCIsIHJldFZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHJldFZhbHVlO1xuICAgIH07XG4gICAgY29uc3QgZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzSGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgY29uc3QgZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50SWQgPSAkZW5kcG9pbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50TnIgPSBnZXRFbmRQb2ludEF0dHJpYnV0ZXMoKTtcbiAgICAgICAgaWYgKCFlbmRwb2ludE5yKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDogZW5kcG9pbnRJZCxcbiAgICAgICAgICAgIC8vIGVuZHBvaW50OiBlbmRwb2ludE5yLmVuZHBvaW50LFxuICAgICAgICAgICAgLy8gc2VjdXJpdHlNb2RlOiBlbmRwb2ludE5yLnNlY3VyaXR5TW9kZSxcbiAgICAgICAgICAgIC8vIHNlY3VyaXR5UG9saWN5OiBlbmRwb2ludE5yLnNlY3VyaXR5UG9saWN5LFxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIHVzZXJJZGVudGl0eVR5cGU6IGVuZHBvaW50TnIudXNlcklkZW50aXR5VHlwZSxcbiAgICAgICAgICAgIC8vIGNyZWRlbnRpYWw6IGVuZHBvaW50TnIuY3JlZGVudGlhbHMsXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gdXNlck5hbWU6IGVuZHBvaW50TnIudXNlcklkZW50aXR5VHlwZSA9PT0gXCJVc2VyTmFtZVwiID8gZW5kcG9pbnROci5jcmVkZW50aWFscy51c2VyTmFtZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIC8vIHBhc3N3b3JkOiBlbmRwb2ludE5yLnVzZXJJZGVudGl0eVR5cGUgPT09IFwiVXNlck5hbWVcIiA/IGVuZHBvaW50TnIuY3JlZGVudGlhbHMucGFzc3dvcmQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAvLyB1c2VyQ2VydGlmaWNhdGU6IGVuZHBvaW50TnIuY3JlZGVudGlhbHMudXNlckNlcnRpZmljYXRlLFxuICAgICAgICAgICAgLy8gdXNlclByaXZhdGVrZXk6IGVuZHBvaW50TnIuY3JlZGVudGlhbHMudXNlclByaXZhdGVrZXksXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIFJFRC5ub2Rlcy5yZWdpc3RlclR5cGUoXCJPcGNVYS1DbGllbnQyLU1vbml0b3JFdmVudFwiLCB7XG4gICAgICAgIGNhdGVnb3J5OiBcIm9wY3VhXCIsXG4gICAgICAgIGNvbG9yOiBcIiNDMERFRURcIixcbiAgICAgICAgYWxpZ246IFwicmlnaHRcIixcbiAgICAgICAgaWNvbjogXCJvcGN1YWxvZ29iaWcucG5nXCIsXG4gICAgICAgIHBhbGV0dGVMYWJlbDogXCJtb25pdG9yIGV2ZW50c1wiLFxuICAgICAgICBkZWZhdWx0czoge1xuICAgICAgICAgICAgaW5wdXRzOiB7IHZhbHVlOiAxIH0sXG4gICAgICAgICAgICBvdXRwdXQ6IHsgdmFsdWU6IDQgfSxcbiAgICAgICAgICAgIG5hbWU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIGVuZHBvaW50OiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogdHJ1ZSwgdHlwZTogXCJPcGNVYS1FbmRwb2ludDJcIiB9LFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uOiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiXCIsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGU6ICh2YWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gXCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdGFydEltbWVkaWF0ZWx5OiB7IHZhbHVlOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgLy8gd2UgdXNlIGEgZGlmZmVyZW50IHdpZGdldCBmb3IgZWRpdGluZyB0aGUgbm9kZUlkLCBiZWNhdXNlIHRoZSBiZWhhdmlvclxuICAgICAgICAgICAgLy8gaXMgc3BlY2lmaWMgdG8gbW9uaXRvciwgaG93ZXZlciBwcm9wZXJ0eSB3aWxsIGJlIHN0b3JlZCBpbiBub2RlSWRcbiAgICAgICAgICAgIG5vZGVJZDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IGZhbHNlLCB2YWxpZGF0ZTogKCkgPT4gdHJ1ZSB9LFxuICAgICAgICAgICAgc2FtcGxpbmdJbnRlcnZhbDogeyB2YWx1ZTogMTAwMCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIGRpc2NhcmRPbGRlc3Q6IHsgdmFsdWU6IHRydWUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICBxdWV1ZVNpemU6IHsgdmFsdWU6IDEwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgc2VsZWN0Q2xhdXNlczogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHdoZXJlQ2xhdXNlOiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gaW5wdXRzOixcbiAgICAgICAgb3V0cHV0czogMiwgLy8gMiBvdXRwdXQsIHNlY29uZCBmb3IgcmF3IG5vZGUtb3BjdWEgZGlhZ25vc3RpY3Mgb3IgbW9yZSBjb21wbGV0ZSBtZXNzYWdlXG4gICAgICAgIGxhYmVsKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSB8fCBcIk9QQ1VBIE1vbml0b3JcIjtcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWxTdHlsZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgPyBcIm5vZGVfbGFiZWxfaXRhbGljXCIgOiBcIlwiO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRwcmVwYXJlKCkge1xuICAgICAgICAgICAgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0KCk7XG4gICAgICAgICAgICBkZWNsYXJlRXZlbnRGaWVsZFNlbGVjdG9yV2lkZ2V0KCk7XG4gICAgICAgICAgICBpbnN0YWxsU3Vic2NyaXB0aW9uU2VsZWN0b3IoUkVELCB0aGlzKTtcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBoYW5kbGUgQWN0aW9uIE1vbml0b3IgQ29tbW9uXG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgLy8gLS0gaW5zdGFsbCBzdWJzY3JpcHRpb24gc2VsZWN0aW9uXG4gICAgICAgICAgICAkKFwibm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGVja2VkID0gJChcIiNub2RlLWlucHV0LXN0YXJ0SW1tZWRpYXRlbHlcIikucHJvcChcImNoZWNrZWRcIik7XG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LWlucHV0c1wiKS52YWwoMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtaW5wdXRzXCIpLnZhbCgxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBoYW5kbGUgQWN0aW9uIE1vbml0b3JcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICBjb25zdCAkbm9kZUlkID0gJChcIiNub2RlLWlucHV0LW5vZGVJZFwiKTtcbiAgICAgICAgICAgICRub2RlSWQubm9kZUJyb3dzZXIoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBnZXRFbmRwb2ludFBhcmFtZXRlcnNIYW5kbGVyKCkpLCB7IGZpbHRlcihub2RlRGVzYykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIk9iamVjdFwiO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaXNTZWxlY3RhYmxlKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiT2JqZWN0XCIgLyogdG8gZG8gfHwgbm9kZURlc2MuZXZlbnROb3RpZmllciA9PT0gMSAqLztcbiAgICAgICAgICAgICAgICB9IH0pKTtcbiAgICAgICAgICAgIC8vIC0tLS0tLSBpbnN0YWxsIGV2ZW50IGZpZWxkIHNlbGVjdG9yXG4gICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtd2hlcmVDbGF1c2VcIik7XG4gICAgICAgICAgICBjb25zdCAkc2VsZWN0Q2xhdXNlcyA9ICQoXCIjbm9kZS1pbnB1dC1zZWxlY3RDbGF1c2VzXCIpO1xuICAgICAgICAgICAgJHNlbGVjdENsYXVzZXMuZXZlbnRGaWVsZFNlbGVjdG9yKE9iamVjdC5hc3NpZ24oe30sIGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIoKSkpO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRzYXZlKCkge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRJbW1lZGlhdGVseSA9ICQoXCIjbm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLnByb3AoXCJjaGVja2VkXCIpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0SW1tZWRpYXRlbHkpIHtcbiAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtc3RhcnRJbW1lZGlhdGVseVwiKS52YWwoc3RhcnRJbW1lZGlhdGVseSA/IDAgOiAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0cyA9IHN0YXJ0SW1tZWRpYXRlbHkgPyAwIDogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICQoXCIjbm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLnZhbCgxKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0cyA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbn0pKCk7Il19
|
9
9
|
</script>
|
10
10
|
<script type="text/x-red" data-template-name="OpcUa-Client2-MonitorEvent">
|
11
11
|
<style>
|