@opcua/for-node-red 2.2.1 → 2.3.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 +37 -33
- package/all.js +1 -1
- package/assets/darwin-x63_lexactivator.node +1 -1
- package/assets/linux-arm64_lexactivator.node +1 -1
- package/assets/linux-arm_lexactivator.node +1 -1
- package/assets/linux-x64_lexactivator.node +1 -1
- package/assets/win32-ia32_LexActivator.dll +1 -1
- package/assets/win32-ia32_lexactivator.node +1 -1
- package/assets/win32-x64_LexActivator.dll +1 -1
- package/assets/win32-x64_lexactivator.node +1 -1
- package/package.json +3 -3
- 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-Monitor/OpcUa-Client2-Monitor.html +2 -2
- package/source/OpcUa-Client2-MonitorEvent/OpcUa-Client2-MonitorEvent.html +2 -2
- package/source/OpcUa-Client2-Read/OpcUa-Client2-Read.html +2 -2
- 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(_0x282533,_0x14f06d){const _0x437464=_0x3dc4,_0x320d22=_0x282533();while(!![]){try{const _0x47f727=parseInt(_0x437464(0xcb))/0x1*(parseInt(_0x437464(0xf7))/0x2)+-parseInt(_0x437464(0xe2))/0x3+parseInt(_0x437464(0x110))/0x4*(parseInt(_0x437464(0x8e))/0x5)+parseInt(_0x437464(0xe5))/0x6+-parseInt(_0x437464(0x91))/0x7*(-parseInt(_0x437464(0x97))/0x8)+parseInt(_0x437464(0x10f))/0x9*(parseInt(_0x437464(0xd6))/0xa)+-parseInt(_0x437464(0xe8))/0xb;if(_0x47f727===_0x14f06d)break;else _0x320d22['push'](_0x320d22['shift']());}catch(_0x2a6c6c){_0x320d22['push'](_0x320d22['shift']());}}}(_0x5c9b,0x51f23),(function(){'use strict';const _0x14b314=_0x3dc4;function _0x1432ad(_0x27fb12,_0x366958,_0x139890,_0x191774){function _0x5f490d(_0x1bf7bf){return _0x1bf7bf instanceof _0x139890?_0x1bf7bf:new _0x139890(function(_0x4cf294){_0x4cf294(_0x1bf7bf);});}return new(_0x139890||(_0x139890=Promise))(function(_0x37daf9,_0x18025f){const _0x5249a1=_0x3dc4;function _0x12830d(_0x48602d){try{_0x1cad52(_0x191774['next'](_0x48602d));}catch(_0x456609){_0x18025f(_0x456609);}}function _0xe454ee(_0x238c39){const _0x55212c=_0x3dc4;try{_0x1cad52(_0x191774[_0x55212c(0x9c)](_0x238c39));}catch(_0x4e5e74){_0x18025f(_0x4e5e74);}}function _0x1cad52(_0x1a915d){const _0x1b8f7c=_0x3dc4;_0x1a915d['done']?_0x37daf9(_0x1a915d[_0x1b8f7c(0x121)]):_0x5f490d(_0x1a915d[_0x1b8f7c(0x121)])['then'](_0x12830d,_0xe454ee);}_0x1cad52((_0x191774=_0x191774[_0x5249a1(0xaa)](_0x27fb12,_0x366958||[]))[_0x5249a1(0x93)]());});}typeof SuppressedError===_0x14b314(0xe9)?SuppressedError:function(_0x4ebc66,_0x450371,_0x2a1eb1){const _0x4331d1=_0x14b314;var _0x3238c6=new Error(_0x2a1eb1);return _0x3238c6[_0x4331d1(0x9b)]=_0x4331d1(0x12e),_0x3238c6[_0x4331d1(0x118)]=_0x4ebc66,_0x3238c6[_0x4331d1(0xb1)]=_0x450371,_0x3238c6;};const _0x383c59=_0x14b314(0x8c),_0x4aa2f5=_0x14b314(0xbf),_0x440085=_0x14b314(0xc6),_0x432b0f=_0x14b314(0x11b),_0x52b052=_0x14b314(0x95),_0x12f07b=_0x14b314(0xd8),_0x16a4c5='ns=0;i=40';var _0x48d5c2;(function(_0x479042){const _0x41ef54=_0x14b314;_0x479042[_0x479042[_0x41ef54(0x105)]=0x0]=_0x41ef54(0x105),_0x479042[_0x479042[_0x41ef54(0x125)]=0x1]=_0x41ef54(0x125),_0x479042[_0x479042[_0x41ef54(0xd7)]=0x2]='Both',_0x479042[_0x479042['Invalid']=0x3]='Invalid';}(_0x48d5c2||(_0x48d5c2={})));var _0x4d77e8;(function(_0x5d8ae9){const _0xf441be=_0x14b314;_0x5d8ae9[_0x5d8ae9[_0xf441be(0xdf)]=0x0]=_0xf441be(0xdf),_0x5d8ae9[_0x5d8ae9[_0xf441be(0xcc)]=0x1]=_0xf441be(0xcc),_0x5d8ae9[_0x5d8ae9['Variable']=0x2]=_0xf441be(0xd3),_0x5d8ae9[_0x5d8ae9[_0xf441be(0xc9)]=0x4]=_0xf441be(0xc9),_0x5d8ae9[_0x5d8ae9[_0xf441be(0x8d)]=0x8]='ObjectType',_0x5d8ae9[_0x5d8ae9[_0xf441be(0xaf)]=0x10]=_0xf441be(0xaf),_0x5d8ae9[_0x5d8ae9[_0xf441be(0x119)]=0x20]=_0xf441be(0x119),_0x5d8ae9[_0x5d8ae9['DataType']=0x40]=_0xf441be(0x9a),_0x5d8ae9[_0x5d8ae9[_0xf441be(0xce)]=0x80]=_0xf441be(0xce);}(_0x4d77e8||(_0x4d77e8={})));var _0x5dc4bd;(function(_0x40fba8){const _0x4a36e0=_0x14b314;_0x40fba8[_0x40fba8[_0x4a36e0(0xcc)]=0x1]=_0x4a36e0(0xcc),_0x40fba8[_0x40fba8['Variable']=0x2]='Variable',_0x40fba8[_0x40fba8['Method']=0x4]=_0x4a36e0(0xc9),_0x40fba8[_0x40fba8['ObjectType']=0x8]='ObjectType',_0x40fba8[_0x40fba8[_0x4a36e0(0xaf)]=0x10]=_0x4a36e0(0xaf),_0x40fba8[_0x40fba8[_0x4a36e0(0x119)]=0x20]=_0x4a36e0(0x119),_0x40fba8[_0x40fba8[_0x4a36e0(0x9a)]=0x40]=_0x4a36e0(0x9a),_0x40fba8[_0x40fba8[_0x4a36e0(0xce)]=0x80]=_0x4a36e0(0xce);}(_0x5dc4bd||(_0x5dc4bd={})));var _0x5f14b5;(function(_0x53ea94){const _0xaaed55=_0x14b314;_0x53ea94[_0x53ea94['ReferenceType']=0x1]='ReferenceType',_0x53ea94[_0x53ea94[_0xaaed55(0xe7)]=0x2]=_0xaaed55(0xe7),_0x53ea94[_0x53ea94['NodeClass']=0x4]=_0xaaed55(0x113),_0x53ea94[_0x53ea94[_0xaaed55(0x96)]=0x8]='BrowseName',_0x53ea94[_0x53ea94[_0xaaed55(0x109)]=0x10]=_0xaaed55(0x109),_0x53ea94[_0x53ea94[_0xaaed55(0x87)]=0x20]='TypeDefinition';}(_0x5f14b5||(_0x5f14b5={})));function _0x2b59b7(_0x582991){const _0x32ac31=_0x14b314;switch(_0x582991){case _0x32ac31(0x99):return _0x383c59;case _0x32ac31(0xad):return _0x432b0f;case'HasComponent':return _0x440085;case'HasChild':return _0x52b052;case'HasSubtype':return _0x12f07b;case _0x32ac31(0x126):return _0x16a4c5;}}const _0x326eec=_0x190926=>{const _0x180cc1=_0x14b314;switch(_0x190926['nodeClass']){case _0x180cc1(0xcc):if(_0x190926[_0x180cc1(0xa1)]===_0x383c59);if(_0x190926[_0x180cc1(0xbb)]===_0x4aa2f5||_0x190926[_0x180cc1(0xa1)]===_0x180cc1(0xf5))return{'icon':_0x180cc1(0xe6),'color':_0x180cc1(0xfe)};return{'icon':_0x180cc1(0x11e),'color':_0x180cc1(0x127)};case _0x180cc1(0xd3):if(_0x190926[_0x180cc1(0xa1)]===_0x440085)return{'icon':_0x180cc1(0xb4),'color':'SteelBlue'};else return _0x190926[_0x180cc1(0xa1)]===_0x432b0f?{'icon':_0x180cc1(0xb4),'color':_0x180cc1(0x106)}:{'icon':_0x180cc1(0xb4),'color':'CadetBlue'};case _0x180cc1(0xc9):return{'icon':'fa-cog','color':_0x180cc1(0x8b)};case _0x180cc1(0x8d):return{'icon':_0x180cc1(0x11e),'color':'DarkOrange'};case _0x180cc1(0xaf):return{'icon':_0x180cc1(0x98),'color':_0x180cc1(0x8f)};}return{'icon':'fa-question','color':'grey'};},_0x544dbc=({endpointNode:_0xd9dfcd,endpoint:_0x5deb0b,baseUrl:_0x19481e},_0x501e53,_0x2bf7c8)=>_0x1432ad(void 0x0,void 0x0,void 0x0,function*(){const _0x4cf8eb=_0x14b314,_0x4d46cb=_0x19481e+_0x4cf8eb(0xdd),_0x17c371=_0x4d46cb+_0x4cf8eb(0xb5),_0x5b2b7a=Object[_0x4cf8eb(0x9e)](Object[_0x4cf8eb(0x9e)]({},_0x2bf7c8),{'nodeId':_0x501e53,'resultMask':0x3f}),_0x46a425=yield fetch(_0x17c371,{'method':_0x4cf8eb(0xec),'body':JSON['stringify']({'endpointNode':_0xd9dfcd,'endpoint':_0x5deb0b,'browseDescription':_0x5b2b7a}),'headers':{'Content-Type':'application/json'}});if(_0x46a425[_0x4cf8eb(0xff)]!==0xc8)return console[_0x4cf8eb(0xbd)](_0x4cf8eb(0xe3),_0x46a425[_0x4cf8eb(0xff)],_0x46a425['statusText']),{'references':[]};console[_0x4cf8eb(0xbd)](_0x4cf8eb(0xc4),_0x46a425[_0x4cf8eb(0xff)],_0x46a425[_0x4cf8eb(0xe4)]);const _0x4e9046=yield _0x46a425[_0x4cf8eb(0x122)](),_0x18bf2b=_0x4e9046[_0x4cf8eb(0xd4)][_0x4cf8eb(0xb9)]||[];return{'references':_0x18bf2b};}),_0x2acec6={'referenceTypeId':_0x2b59b7(_0x14b314(0xd1)),'includeSubtypes':!![],'browseDirection':_0x48d5c2[_0x14b314(0x105)],'nodeClassMask':_0x4d77e8[_0x14b314(0xd3)]|_0x4d77e8['Object']|_0x4d77e8[_0x14b314(0xc9)],'resultMask':0x3f},_0x3895e1={'referenceTypeId':_0x2b59b7(_0x14b314(0x99)),'includeSubtypes':!![],'browseDirection':_0x48d5c2[_0x14b314(0x105)],'nodeClassMask':_0x4d77e8['Variable']|_0x4d77e8[_0x14b314(0xcc)]|_0x4d77e8['Method'],'resultMask':0x3f},_0x3127a8=({endpointNode:_0x86d923,endpoint:_0x3ee8b2,baseUrl:_0x278c71},_0x49df16,_0x36c435)=>_0x1432ad(void 0x0,void 0x0,void 0x0,function*(){const _0x16cde3=_0x14b314,_0x3fd032=_0x278c71+_0x16cde3(0xdd),_0x5b5f41=_0x49df16[_0x16cde3(0xa7)](),_0xf95013=yield fetch(_0x3fd032+_0x16cde3(0x124),{'method':_0x16cde3(0xec),'body':JSON['stringify']({'endpointNode':_0x86d923,'endpoint':_0x3ee8b2,'nodeId':_0x5b5f41}),'headers':{'Content-Type':_0x16cde3(0xee)}}),_0x491afc=(_0x3a66f8,_0x5d7fa5)=>{const _0x1e1723=_0x16cde3;_0x36c435[_0x1e1723(0xbc)](_0x3a66f8)[_0x1e1723(0xf2)]('sterfive-info')['addClass'](_0x5d7fa5),_0x36c435['show'](),setTimeout(()=>{const _0x1973ec=_0x1e1723;_0x36c435[_0x1973ec(0xb8)](_0x5d7fa5),_0x36c435['hide']();},0xbb8);},_0xada259=yield _0xf95013['json']();_0xf95013[_0x16cde3(0xff)]!==0xc8?_0x491afc('!!failure!!'+_0x5b5f41,_0x16cde3(0xa5)):_0xada259['statusCode'][_0x16cde3(0xa6)](/Good/)?(_0x49df16[_0x16cde3(0xa7)](_0xada259[_0x16cde3(0x86)]),_0x49df16['trigger'](_0x16cde3(0x12f)),_0x491afc(_0x16cde3(0xf1),'ok')):(_0x49df16[_0x16cde3(0xa7)](''+_0x5b5f41),_0x491afc(_0xada259['statusCode']+'\x20'+_0xf95013[_0x16cde3(0xe4)],_0x16cde3(0xa5)));});function _0x1f331b(_0x5b3d0f,_0x18ef35){return _0x1432ad(this,void 0x0,void 0x0,function*(){const _0x53712e=_0x3dc4,_0x295729=_0x5b3d0f[_0x53712e(0xa0)](_0x53712e(0x121)),_0x46206e=yield _0x544dbc(_0x18ef35,_0x295729,_0x2acec6),_0x5cb3b6=yield _0x544dbc(_0x18ef35,_0x295729,_0x3895e1);return{'references':[..._0x46206e[_0x53712e(0xb9)],..._0x5cb3b6[_0x53712e(0xb9)]]};});}const _0x94dca0={'referenceTypeId':_0x2b59b7(_0x14b314(0xe1)),'includeSubtypes':!![],'browseDirection':_0x48d5c2[_0x14b314(0x105)],'nodeClassMask':_0x4d77e8[_0x14b314(0x119)]|_0x4d77e8[_0x14b314(0x8d)]|_0x4d77e8[_0x14b314(0x9a)]|_0x4d77e8['VariableType'],'resultMask':0x3f};function _0xdc2a82(_0x153561,_0x5c42a1){return _0x1432ad(this,void 0x0,void 0x0,function*(){const _0x1bc654=_0x3dc4,_0x1b93d3=_0x153561[_0x1bc654(0xa0)]('value'),_0x3c3d8c=yield _0x544dbc(_0x5c42a1,_0x1b93d3,_0x94dca0);return _0x3c3d8c;});}const _0x15022f=_0x4ea4ae=>{const _0x3393a3=_0x14b314;var _0x48dba0,_0x132457;if(!_0x4ea4ae){const _0x5882a9=$(_0x3393a3(0x11f));return _0x5882a9;}const _0x70e1aa=_0x4ea4ae[_0x3393a3(0x89)][_0x3393a3(0x130)](),_0xb93227=((_0x48dba0=_0x4ea4ae[_0x3393a3(0x102)])===null||_0x48dba0===void 0x0?void 0x0:_0x48dba0[_0x3393a3(0xbc)])||((_0x132457=_0x4ea4ae[_0x3393a3(0x12d)])===null||_0x132457===void 0x0?void 0x0:_0x132457[_0x3393a3(0x9b)])||_0x4ea4ae['nodeId'][_0x3393a3(0x130)](),{icon:_0x3afd84,color:_0xc299eb}=_0x326eec(_0x4ea4ae),_0x37bdc3=$(_0x3393a3(0xab)+_0x3afd84+_0x3393a3(0xae)+_0xc299eb+_0x3393a3(0x88)+_0xb93227+_0x3393a3(0xa3));return _0x37bdc3[_0x3393a3(0xf2)]('expandable'),_0x37bdc3[_0x3393a3(0xa0)](_0x3393a3(0x121),_0x70e1aa),_0x37bdc3['data'](_0x3393a3(0xb2),_0x4ea4ae),_0x37bdc3;},_0x4bc41f=()=>{const _0x351971=_0x14b314;$[_0x351971(0x114)]('sterfive.nodeBrowser',{'options':{'endpointNode':()=>({'endpoint':_0x351971(0x116)}),'endpoint':()=>undefined,'parentNode':()=>({'browseName':{'namespaceIndex':0x0,'name':_0x351971(0x90)},'nodeClass':_0x351971(0xcc),'nodeId':_0x351971(0xb0),'displayName':{'text':_0x351971(0x90)},'typeDefinition':_0x4aa2f5}),'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x1432ad(this,void 0x0,void 0x0,function*(){const _0x3a3fbb=_0x3dc4,_0xd68d02=this,_0x1c6f68=typeof _0xd68d02[_0x3a3fbb(0x92)][_0x3a3fbb(0x129)]===_0x3a3fbb(0xe9)?_0xd68d02[_0x3a3fbb(0x92)]['parentNode']():_0xd68d02[_0x3a3fbb(0x92)]['parentNode'];if(_0x1c6f68 instanceof Promise)return yield _0x1c6f68;return _0x1c6f68;});},'reset'(){const _0x5c8dfe=_0x351971,_0x1c6eea=this;_0x1c6eea[_0x5c8dfe(0xf0)]['empty'](),this[_0x5c8dfe(0x8a)]()[_0x5c8dfe(0xde)](_0x5835b4=>{const _0x2ecf5e=_0x5c8dfe,_0xb98ecf=_0x15022f(_0x5835b4);_0x1c6eea[_0x2ecf5e(0xf0)]['append'](_0xb98ecf),_0x1c6eea[_0x2ecf5e(0xc2)]=_0x5835b4;});},'verify'(){const _0x9edc46=_0x351971,_0x65d995=this,_0x5433c7={'baseUrl':_0x65d995[_0x9edc46(0x92)]['baseUrl'],'endpointNode':typeof _0x65d995[_0x9edc46(0x92)]['endpointNode']===_0x9edc46(0xe9)?_0x65d995[_0x9edc46(0x92)][_0x9edc46(0xeb)]():_0x65d995[_0x9edc46(0x92)][_0x9edc46(0xeb)],'endpoint':typeof _0x65d995[_0x9edc46(0x92)][_0x9edc46(0xac)]==='function'?_0x65d995[_0x9edc46(0x92)][_0x9edc46(0xac)]():_0x65d995['options']['endpoint']};_0x3127a8(_0x5433c7,_0x65d995[_0x9edc46(0xc7)],_0x65d995['$info']);},'_create'(){const _0xc2dc1f=_0x351971,_0x1c78a8=this;function _0x26e276(_0x16acb1,_0x1ac082,_0x230185){return _0x1432ad(this,void 0x0,void 0x0,function*(){const _0x25b7f0=_0x3dc4;if(_0x16acb1[_0x25b7f0(0xb3)]('fetched')){console[_0x25b7f0(0xbd)](_0x25b7f0(0x120));return;}if(_0x16acb1[_0x25b7f0(0xb3)](_0x25b7f0(0xc1))){console[_0x25b7f0(0xbd)](_0x25b7f0(0x123));return;}_0x16acb1[_0x25b7f0(0xf2)](_0x25b7f0(0xc1)),_0x16acb1[_0x25b7f0(0xa2)]('<div\x20class=\x22spinner\x22></div>');try{_0x16acb1[_0x25b7f0(0xf4)]('ul')['empty']();const {references:_0x1d4119}=yield _0x1ac082(_0x16acb1,_0x230185);for(const _0x10fa91 of _0x1d4119){if(_0x1c78a8[_0x25b7f0(0x92)][_0x25b7f0(0xe0)]&&!_0x1c78a8['options'][_0x25b7f0(0xe0)](_0x10fa91))continue;const _0x6c033d=_0x15022f(_0x10fa91);_0x16acb1[_0x25b7f0(0xf4)]('ul')[_0x25b7f0(0xa2)](_0x6c033d);}_0x16acb1[_0x25b7f0(0xf2)](_0x25b7f0(0x9d));}catch(_0x5483ea){_0x16acb1[_0x25b7f0(0xf4)]('ul')[_0x25b7f0(0xa2)]('<li>error\x20'+_0x5483ea['message']+_0x25b7f0(0x104)),console[_0x25b7f0(0xbd)](_0x25b7f0(0x11c),_0x5483ea);}_0x16acb1[_0x25b7f0(0x12b)]('.spinner')[_0x25b7f0(0xc5)](),_0x16acb1['removeClass'](_0x25b7f0(0xc1));});}_0x1c78a8[_0xc2dc1f(0xc7)]=this[_0xc2dc1f(0x10b)],_0x1c78a8[_0xc2dc1f(0x117)]=$(_0xc2dc1f(0xea)),_0x1c78a8[_0xc2dc1f(0x117)][_0xc2dc1f(0xf2)]('sterfive-combo-box'),this[_0xc2dc1f(0x10b)]['replaceWith'](_0x1c78a8[_0xc2dc1f(0x117)]),_0x1c78a8['$inputGroup']=$('<div/>')[_0xc2dc1f(0xf2)]('input-group'),_0x1c78a8[_0xc2dc1f(0x117)]['append'](_0x1c78a8[_0xc2dc1f(0x108)]),_0x1c78a8['$inputGroup'][_0xc2dc1f(0xa2)](_0x1c78a8[_0xc2dc1f(0xc7)]),_0x1c78a8[_0xc2dc1f(0xd2)]=$(_0xc2dc1f(0x101)),_0x1c78a8[_0xc2dc1f(0x108)][_0xc2dc1f(0xa2)](_0x1c78a8['$toggleTreeBtn']),_0x1c78a8['$toggleTreeBtn']['on']('click',function(){const _0xa788ad=_0xc2dc1f;!_0x1c78a8[_0xa788ad(0xf3)]['is'](_0xa788ad(0x9f))&&(_0x1c78a8[_0xa788ad(0x8a)]()['then'](_0x192c3a=>{const _0x17934f=_0xa788ad;var _0x23088e;(_0x192c3a!==_0x1c78a8[_0x17934f(0xc2)]||((_0x23088e=_0x1c78a8[_0x17934f(0xc2)])===null||_0x23088e===void 0x0?void 0x0:_0x23088e[_0x17934f(0x89)])!==_0x192c3a[_0x17934f(0x89)])&&_0x1c78a8[_0x17934f(0x10d)]();}),_0x1c78a8[_0xa788ad(0x111)][_0xa788ad(0x10c)]()),_0x1c78a8[_0xa788ad(0xf3)]['toggle']();}),_0x1c78a8[_0xc2dc1f(0xb7)]=$(_0xc2dc1f(0x11d)),_0x1c78a8[_0xc2dc1f(0x108)]['append'](_0x1c78a8[_0xc2dc1f(0xb7)]),_0x1c78a8['$verifyBtn']['on']('click',()=>{const _0x5ca0a0=_0xc2dc1f;this[_0x5ca0a0(0x10e)]();}),!_0x1c78a8[_0xc2dc1f(0xc7)][_0xc2dc1f(0xfa)](_0xc2dc1f(0xa9))&&_0x1c78a8[_0xc2dc1f(0xc7)][_0xc2dc1f(0xfa)](_0xc2dc1f(0xa9),_0xc2dc1f(0xd9)),_0x1c78a8[_0xc2dc1f(0x111)]=$(_0xc2dc1f(0xdc)),_0x1c78a8[_0xc2dc1f(0x111)]['hide'](),{'baseUrl':_0x1c78a8[_0xc2dc1f(0x92)][_0xc2dc1f(0xfb)],'endpointNode':typeof _0x1c78a8['options'][_0xc2dc1f(0xeb)]===_0xc2dc1f(0xe9)?_0x1c78a8[_0xc2dc1f(0x92)][_0xc2dc1f(0xeb)]():_0x1c78a8['options'][_0xc2dc1f(0xeb)],'endpoint':typeof _0x1c78a8[_0xc2dc1f(0x92)]['endpoint']===_0xc2dc1f(0xe9)?_0x1c78a8[_0xc2dc1f(0x92)][_0xc2dc1f(0xac)]():_0x1c78a8['options'][_0xc2dc1f(0xac)]},_0x1c78a8[_0xc2dc1f(0xf3)]=$('<div/>')[_0xc2dc1f(0xf2)](_0xc2dc1f(0xb6))['hide'](),_0x1c78a8[_0xc2dc1f(0x117)][_0xc2dc1f(0xa2)](_0x1c78a8[_0xc2dc1f(0x111)]),_0x1c78a8[_0xc2dc1f(0x117)]['append'](_0x1c78a8[_0xc2dc1f(0xf3)]),_0x1c78a8[_0xc2dc1f(0xf0)]=$(_0xc2dc1f(0xc3))['appendTo'](_0x1c78a8[_0xc2dc1f(0xf3)]),this[_0xc2dc1f(0x10d)](),_0x1c78a8['$tree']['on']('click','li',function(_0x3705dc){const _0x5ae782=_0xc2dc1f;var _0x30e26b,_0x2d5178;_0x3705dc[_0x5ae782(0xca)]();let _0x50a0f5=$(this);const _0x583df3=0x14,_0x2408c5=0x14,_0x253b32=$(this)[_0x5ae782(0xd5)](),_0x53ff98=_0x3705dc;if(_0x53ff98[_0x5ae782(0x12c)]>=_0x253b32[_0x5ae782(0xc0)]&&_0x53ff98[_0x5ae782(0x12c)]<=_0x253b32[_0x5ae782(0xc0)]+_0x583df3&&_0x53ff98[_0x5ae782(0xc8)]>=_0x253b32[_0x5ae782(0xdb)]&&_0x53ff98[_0x5ae782(0xc8)]<=_0x253b32['top']+_0x2408c5){if(_0x50a0f5[_0x5ae782(0xb3)](_0x5ae782(0xef))){if(_0x50a0f5['hasClass'](_0x5ae782(0x9d))){_0x50a0f5[_0x5ae782(0xb8)]('expandable')[_0x5ae782(0xf2)]('expanded'),_0x50a0f5[_0x5ae782(0xf4)]('ul')[_0x5ae782(0x112)]();return;}const _0x479957={'baseUrl':_0x1c78a8[_0x5ae782(0x92)]['baseUrl'],'endpointNode':typeof _0x1c78a8['options'][_0x5ae782(0xeb)]===_0x5ae782(0xe9)?_0x1c78a8[_0x5ae782(0x92)]['endpointNode']():_0x1c78a8[_0x5ae782(0x92)][_0x5ae782(0xeb)],'endpoint':typeof _0x1c78a8[_0x5ae782(0x92)][_0x5ae782(0xac)]===_0x5ae782(0xe9)?_0x1c78a8[_0x5ae782(0x92)]['endpoint']():_0x1c78a8[_0x5ae782(0x92)][_0x5ae782(0xac)]},_0x354997=!_0x1c78a8['options'][_0x5ae782(0xed)]?_0x1f331b:_0xdc2a82;_0x26e276(_0x50a0f5,_0x354997,_0x479957)['then'](()=>{const _0xf641f8=_0x5ae782;console[_0xf641f8(0xbd)]('\x20Fetching\x20done'),console[_0xf641f8(0xbd)](_0xf641f8(0x9d)),_0x50a0f5[_0xf641f8(0xb8)](_0xf641f8(0xef))[_0xf641f8(0xf2)](_0xf641f8(0x115));})[_0x5ae782(0xbe)](_0x1733c7=>{const _0x3d457a=_0x5ae782;_0x50a0f5[_0x3d457a(0xb8)]('expandable')[_0x3d457a(0xf2)](_0x3d457a(0x115)),console[_0x3d457a(0xbd)](_0x3d457a(0x118),_0x1733c7);});}else{if(_0x50a0f5[_0x5ae782(0xb3)](_0x5ae782(0x115)))_0x50a0f5[_0x5ae782(0xf4)]('ul')[_0x5ae782(0x112)](),_0x50a0f5[_0x5ae782(0x103)]('expandable\x20expanded');else{if(_0x50a0f5['children']('ul')[_0x5ae782(0xf4)]()[_0x5ae782(0xfd)]>0x0)_0x50a0f5['children']('ul')[_0x5ae782(0x112)](),_0x50a0f5[_0x5ae782(0x103)]('expandable\x20expanded');else;}}}else{const _0x399da1=_0x50a0f5['data'](_0x5ae782(0x121)),_0x40297e=_0x50a0f5['data']('reference');if(_0x1c78a8[_0x5ae782(0x92)]['isSelectable']&&!_0x1c78a8[_0x5ae782(0x92)][_0x5ae782(0x100)](_0x40297e))return;_0x1c78a8[_0x5ae782(0xc7)][_0x5ae782(0xa0)](_0x5ae782(0xb2),_0x40297e);const _0xa8df79=((_0x30e26b=_0x40297e[_0x5ae782(0x102)])===null||_0x30e26b===void 0x0?void 0x0:_0x30e26b[_0x5ae782(0xbc)])||((_0x2d5178=_0x40297e[_0x5ae782(0x12d)])===null||_0x2d5178===void 0x0?void 0x0:_0x2d5178[_0x5ae782(0x9b)])||_0x40297e[_0x5ae782(0x89)][_0x5ae782(0x130)](),_0x445c26='['+_0xa8df79+']('+_0x399da1+')';_0x1c78a8['$input']['val'](_0x445c26),_0x1c78a8[_0x5ae782(0xc7)][_0x5ae782(0x10a)](_0x5ae782(0x12f)),_0x1c78a8[_0x5ae782(0xf3)][_0x5ae782(0x10c)]();}}),$(document)['on'](_0xc2dc1f(0xf6),function(_0x269d1f){const _0x204714=_0xc2dc1f;!$(_0x269d1f[_0x204714(0x128)])['closest'](_0x1c78a8[_0x204714(0x117)])[_0x204714(0xfd)]&&_0x1c78a8[_0x204714(0xf3)]['hide']();});}});};RED[_0x14b314(0xf9)][_0x14b314(0xcd)](_0x14b314(0xd0),{'category':_0x14b314(0xfc),'color':_0x14b314(0xa4),'align':_0x14b314(0x107),'icon':_0x14b314(0x12a),'paletteLabel':_0x14b314(0xda),'defaults':{'inputs':{'value':0x1},'output':{'value':0x4},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':'OpcUa-Endpoint2'},'attributeId':{'value':_0x14b314(0x11a),'required':!![]},'nodeId':{'value':'','required':![]}},'inputs':0x1,'outputs':0x1,'label'(){const _0x1ed7bb=_0x14b314;return this[_0x1ed7bb(0x9b)]||_0x1ed7bb(0xf8);},'labelStyle'(){const _0x4d6cfe=_0x14b314;return this[_0x4d6cfe(0x9b)]?_0x4d6cfe(0x94):'';},'oneditprepare'(){const _0x22dbe7=_0x14b314,_0x2a4518=this;_0x4bc41f(),_0x2a4518[_0x22dbe7(0xba)]=0x1;const _0xa55243=$('#node-input-nodeId');_0xa55243[_0x22dbe7(0xa8)]({'isSelectable'(_0x3f997d){const _0x57d6cd=_0x22dbe7;return _0x3f997d[_0x57d6cd(0xcf)]===_0x57d6cd(0xd3);}});},'oneditsave'(){}});}()));function _0x3dc4(_0x162b47,_0x5f4995){const _0x5c9bef=_0x5c9b();return _0x3dc4=function(_0x3dc494,_0x44af7f){_0x3dc494=_0x3dc494-0x86;let _0x47ff7f=_0x5c9bef[_0x3dc494];return _0x47ff7f;},_0x3dc4(_0x162b47,_0x5f4995);}function _0x5c9b(){const _0x1a64c8=['inputs','typeDefinition','text','log','catch','ns=0;i=61','left','loading','currentParent','<ul\x20class=\x22sterfive-tree\x22></ul>','fetched\x20:\x20','remove','ns=0;i=47','$input','pageY','Method','stopPropagation','12582EUMXsD','Object','registerType','View','nodeClass','OpcUa-Client2-Write','HasChild','$toggleTreeBtn','Variable','browseResult','offset','10ZWtcvd','Both','ns=0;i=45','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','write','top','<div\x20class=\x22info-text\x22></div>','/opcua-endpoint2','then','Unspecified','filter','HasSubtype','1062063sfkWKL','fetching\x20failed\x20with\x20error','statusText','246918vHWqKz','fa-folder','IsForward','5734751mvYsBs','function','<div/>','endpointNode','POST','isTypeRef','application/json','expandable','$tree','Good','addClass','$dropdown','children','i=61','click','60KBmfsl','OPCUA\x20Client\x20Write','nodes','attr','baseUrl','opcua','length','rgba(61,\x2060,\x204,\x200.525)','status','isSelectable','<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','displayName','toggleClass','</li>','Forward','DodgerBlue','right','$inputGroup','DisplayName','trigger','element','hide','reset','verify','1145007ldsJtT','334200ZWwUFb','$info','toggle','NodeClass','widget','expanded','opc.tcp://opcuademo.sterfive.com:26543','$combo','error','ReferenceType','Value','ns=0;i=46','err','<button><i\x20class=\x22fa\x20fa-flask\x22></i></button>','fa-object-group','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','already\x20fetched','value','json','already\x20loading','/checkNodeId','Inverse','HasTypeDefinition','SeaGreen','target','parentNode','../../icons/opcuanodeLogo.png','find','pageX','browseName','SuppressedError','change','toString','nodeAddressString','TypeDefinition',';\x22></i>\x20','nodeId','resolveParentNode','SandyBrown','ns=0;i=35','ObjectType','25qLkvEP','DarkOrange','Objects','9569hGJpiO','options','next','node_label_italic','ns=0;i=34','BrowseName','1448ufGDpn','fa-sliders','Organizes','DataType','name','throw','fetched','assign',':visible','data','referenceTypeId','append','<ul></ul></li>','#C0DEED','failure','match','val','nodeBrowser','placeholder','apply','<li><i\x20class=\x22fa\x20','endpoint','HasProperty','\x22\x20style=\x22color:','VariableType','ns=0;i=85','suppressed','reference','hasClass','fa-list-alt','/browse','sterfive-dropdown','$verifyBtn','removeClass','references'];_0x5c9b=function(){return _0x1a64c8;};return _0x5c9b();}
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHgxNDMyYWQiLCJfMHgyN2ZiMTIiLCJfMHgzNjY5NTgiLCJfMHgxMzk4OTAiLCJfMHgxOTE3NzQiLCJfMHg1ZjQ5MGQiLCJfMHgxYmY3YmYiLCJfMHg0Y2YyOTQiLCJQcm9taXNlIiwiXzB4MzdkYWY5IiwiXzB4MTgwMjVmIiwiXzB4MTI4MzBkIiwiXzB4NDg2MDJkIiwiXzB4MWNhZDUyIiwiXzB4NDU2NjA5IiwiXzB4ZTQ1NGVlIiwiXzB4MjM4YzM5IiwiXzB4NGU1ZTc0IiwiXzB4MWE5MTVkIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4NGViYzY2IiwiXzB4NDUwMzcxIiwiXzB4MmExZWIxIiwiXzB4MzIzOGM2IiwiRXJyb3IiLCJfMHgzODNjNTkiLCJfMHg0YWEyZjUiLCJfMHg0NDAwODUiLCJfMHg0MzJiMGYiLCJfMHg1MmIwNTIiLCJfMHgxMmYwN2IiLCJfMHgxNmE0YzUiLCJfMHg0OGQ1YzIiLCJfMHg0NzkwNDIiLCJfMHg0ZDc3ZTgiLCJfMHg1ZDhhZTkiLCJfMHg1ZGM0YmQiLCJfMHg0MGZiYTgiLCJfMHg1ZjE0YjUiLCJfMHg1M2VhOTQiLCJfMHgyYjU5YjciLCJfMHg1ODI5OTEiLCJfMHgzMjZlZWMiLCJfMHgxOTA5MjYiLCJfMHg1NDRkYmMiLCJlbmRwb2ludE5vZGUiLCJfMHhkOWRmY2QiLCJlbmRwb2ludCIsIl8weDVkZWIwYiIsImJhc2VVcmwiLCJfMHgxOTQ4MWUiLCJfMHg1MDFlNTMiLCJfMHgyYmY3YzgiLCJfMHg0ZDQ2Y2IiLCJfMHgxN2MzNzEiLCJfMHg1YjJiN2EiLCJPYmplY3QiLCJfMHg0NmE0MjUiLCJmZXRjaCIsIkpTT04iLCJjb25zb2xlIiwiXzB4NGU5MDQ2IiwiXzB4MThiZjJiIiwiXzB4MmFjZWM2IiwiXzB4Mzg5NWUxIiwiXzB4MzEyN2E4IiwiXzB4ODZkOTIzIiwiXzB4M2VlOGIyIiwiXzB4Mjc4YzcxIiwiXzB4NDlkZjE2IiwiXzB4MzZjNDM1IiwiXzB4M2ZkMDMyIiwiXzB4NWI1ZjQxIiwiXzB4Zjk1MDEzIiwiXzB4NDkxYWZjIiwiXzB4M2E2NmY4IiwiXzB4NWQ3ZmE1Iiwic2V0VGltZW91dCIsIl8weGFkYTI1OSIsIl8weDFmMzMxYiIsIl8weDViM2QwZiIsIl8weDE4ZWYzNSIsIl8weDI5NTcyOSIsIl8weDQ2MjA2ZSIsIl8weDVjYjNiNiIsIl8weDk0ZGNhMCIsIl8weGRjMmE4MiIsIl8weDE1MzU2MSIsIl8weDVjNDJhMSIsIl8weDFiOTNkMyIsIl8weDNjM2Q4YyIsIl8weDE1MDIyZiIsIl8weDRlYTRhZSIsIl8weDQ4ZGJhMCIsIl8weDEzMjQ1NyIsIl8weDU4ODJhOSIsIiQiLCJfMHg3MGUxYWEiLCJfMHhiOTMyMjciLCJpY29uIiwiXzB4M2FmZDg0IiwiY29sb3IiLCJfMHhjMjk5ZWIiLCJfMHgzN2JkYzMiLCJfMHg0YmM0MWYiLCJ1bmRlZmluZWQiLCJfMHhkNjhkMDIiLCJfMHgxYzZmNjgiLCJfMHgxYzZlZWEiLCJfMHg1ODM1YjQiLCJfMHhiOThlY2YiLCJfMHg2NWQ5OTUiLCJfMHg1NDMzYzciLCJfMHgxYzc4YTgiLCJfMHgyNmUyNzYiLCJfMHgxNmFjYjEiLCJfMHgxYWMwODIiLCJfMHgyMzAxODUiLCJyZWZlcmVuY2VzIiwiXzB4MWQ0MTE5IiwiXzB4MTBmYTkxIiwiXzB4NmMwMzNkIiwiXzB4NTQ4M2VhIiwiXzB4MTkyYzNhIiwiXzB4MjMwODhlIiwiXzB4MzcwNWRjIiwiXzB4MzBlMjZiIiwiXzB4MmQ1MTc4IiwiXzB4NTBhMGY1IiwiXzB4NTgzZGYzIiwiXzB4MjQwOGM1IiwiXzB4MjUzYjMyIiwiXzB4NTNmZjk4IiwiXzB4NDc5OTU3IiwiXzB4MzU0OTk3IiwiXzB4MTczM2M3IiwiXzB4Mzk5ZGExIiwiXzB4NDAyOTdlIiwiXzB4YThkZjc5IiwiXzB4NDQ1YzI2IiwiZG9jdW1lbnQiLCJfMHgyNjlkMWYiLCJSRUQiLCJfMHgyYTQ1MTgiLCJfMHhhNTUyNDMiLCJfMHgzZjk5N2QiXSwibWFwcGluZ3MiOiJnbUJBQUEsQ0FBQyxVLENBQ0csYSx3QkFt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RzFDLEMsZ0JBSDBDLEMsTUFJMUMsQyxnQkFKMEMsQyxjQUsxQyxDLGVBTDBDLEMsVUFNMUMsQ0FBVSxDLFFBQ04sQ0FBUSxDLE9BQUUsQyxHQUFGLENBREYsQyxRQUVOLENBQVEsQyxPQUFFLEMsR0FBRixDQUZGLEMsTUFJTixDQUFNLEMsT0FBRSxDLEVBQUYsQ0FKQSxDLFVBS04sQ0FBVSxDLE9BQUUsQyxFQUFGLEMsVUFBYSxDLElBQWIsQyxNQUE2QixDLGlCQUE3QixDQUxKLEMsYUFNTixDQUFhLEMsT0FBRSxDLGdCQUFGLEMsVUFBa0IsQyxJQUFsQixDQU5QLEMsUUFPTixDQUFRLEMsT0FBRSxDLEVBQUYsQyxVQUFhLEMsR0FBYixDQVBGLENBTmdDLEMsUUFlMUMsQyxHQWYwQyxDLFNBZ0IxQyxDLEdBaEIwQyxDLE9BaUIxQyxFLGtDQUNXLEssZUFBQSxHLGlCQWxCK0IsQyxZQW9CMUMsRSxrQ0FDVyxLLGVBQUEsRSxlQUFBLEMsSUFyQitCLEMsZUF1QjFDLEUsMkJBQ1VDLFNBQUEsQ0FBTyxJLENBQ2J2QyxTQUFBLEUsQ0FDQXVDLFNBQUEsQyxlQUFBLEUsR0FEQSxDQUVBLE1BQU1DLFNBQUEsQ0FBVWhELENBQUEsQyxvQkFBQSxDQUFoQixDQUNBZ0QsU0FBQSxDLGVBQUEsRUFBb0IsQyxjQUNoQixDQUFhQyxTQUFiLEMsa0NBQ1dBLFNBQUEsQyxlQUFBLEksaUJBRkssQ0FBcEIsQyxFQTVCc0MsQyxZQWtDMUMsRSxFQWxDMEMsQ0FBOUMsQyxFQTFjSixHIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcbiAgICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxuICAgIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcbiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcbiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG4gICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4gICAgLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sICovXHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgICAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xyXG4gICAgICAgIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XHJcbiAgICB9O1xuXG4gICAgY29uc3QgT3JnYW5pemVzUmVmTm9kZUlkID0gXCJucz0wO2k9MzVcIjtcbiAgICBjb25zdCBGb2xkZXJUeXBlID0gXCJucz0wO2k9NjFcIjtcbiAgICBjb25zdCBIYXNDb21wb25lbnRSZWZOb2RlSWQgPSBcIm5zPTA7aT00N1wiO1xuICAgIGNvbnN0IEhhc1Byb3BlcnR5UmVmTm9kZUlkID0gXCJucz0wO2k9NDZcIjtcbiAgICBjb25zdCBIYXNDaGlsZFJlZk5vZGVJZCA9IFwibnM9MDtpPTM0XCI7XG4gICAgY29uc3QgSGFzU3VidHlwZVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ1XCI7XG4gICAgY29uc3QgSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQgPSBcIm5zPTA7aT00MFwiO1xuXG4gICAgdmFyIEJyb3dzZURpcmVjdGlvbjtcbiAgICAoZnVuY3Rpb24gKEJyb3dzZURpcmVjdGlvbikge1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiRm9yd2FyZFwiXSA9IDBdID0gXCJGb3J3YXJkXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJJbnZlcnNlXCJdID0gMV0gPSBcIkludmVyc2VcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkJvdGhcIl0gPSAyXSA9IFwiQm90aFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52YWxpZFwiXSA9IDNdID0gXCJJbnZhbGlkXCI7XG4gICAgfSkoQnJvd3NlRGlyZWN0aW9uIHx8IChCcm93c2VEaXJlY3Rpb24gPSB7fSkpO1xuICAgIHZhciBOb2RlQ2xhc3M7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3MpIHtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlVuc3BlY2lmaWVkXCJdID0gMF0gPSBcIlVuc3BlY2lmaWVkXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJPYmplY3RcIl0gPSAxXSA9IFwiT2JqZWN0XCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0VHlwZVwiXSA9IDhdID0gXCJPYmplY3RUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiRGF0YVR5cGVcIl0gPSA2NF0gPSBcIkRhdGFUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzcyB8fCAoTm9kZUNsYXNzID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzTWFzaztcbiAgICAoZnVuY3Rpb24gKE5vZGVDbGFzc01hc2spIHtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJNZXRob2RcIl0gPSA0XSA9IFwiTWV0aG9kXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMzJdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzc01hc2sgfHwgKE5vZGVDbGFzc01hc2sgPSB7fSkpO1xuICAgIHZhciBSZXN1bHRNYXNrO1xuICAgIChmdW5jdGlvbiAoUmVzdWx0TWFzaykge1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMV0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiSXNGb3J3YXJkXCJdID0gMl0gPSBcIklzRm9yd2FyZFwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJOb2RlQ2xhc3NcIl0gPSA0XSA9IFwiTm9kZUNsYXNzXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIkJyb3dzZU5hbWVcIl0gPSA4XSA9IFwiQnJvd3NlTmFtZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJEaXNwbGF5TmFtZVwiXSA9IDE2XSA9IFwiRGlzcGxheU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiVHlwZURlZmluaXRpb25cIl0gPSAzMl0gPSBcIlR5cGVEZWZpbml0aW9uXCI7XG4gICAgfSkoUmVzdWx0TWFzayB8fCAoUmVzdWx0TWFzayA9IHt9KSk7XG4gICAgLy8gIGNvbnN0IHEgPSBSZWZlcmVuY2VUeXBlSWRzLk9yZ2FuaXplcztcbiAgICBmdW5jdGlvbiByZXNvbHZlTm9kZUlkKG5vZGVJZExpa2UpIHtcbiAgICAgICAgc3dpdGNoIChub2RlSWRMaWtlKSB7XG4gICAgICAgICAgICBjYXNlIFwiT3JnYW5pemVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9yZ2FuaXplc1JlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNQcm9wZXJ0eVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNQcm9wZXJ0eVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDb21wb25lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzQ29tcG9uZW50UmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc0NoaWxkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NoaWxkUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1N1YnR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzU3VidHlwZVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNUeXBlRGVmaW5pdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNUeXBlRGVmaW5pdGlvblJlZk5vZGVJZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGdldEljb24gPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVmZXJlbmNlLm5vZGVDbGFzcykge1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBPcmdhbml6ZXNSZWZOb2RlSWQpIDtcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnR5cGVEZWZpbml0aW9uID09PSBGb2xkZXJUeXBlIHx8IHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IFwiaT02MVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtZm9sZGVyXCIsIGNvbG9yOiBcInJnYmEoNjEsIDYwLCA0LCAwLjUyNSlcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJTZWFHcmVlblwiIH07XG4gICAgICAgICAgICBjYXNlIFwiVmFyaWFibGVcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzQ29tcG9uZW50UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiU3RlZWxCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzUHJvcGVydHlSZWZOb2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJEb2RnZXJCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiTWV0aG9kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1jb2dcIiwgY29sb3I6IFwiU2FuZHlCcm93blwiIH07XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0VHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiBcIkRhcmtPcmFuZ2VcIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtc2xpZGVyc1wiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXF1ZXN0aW9uXCIsIGNvbG9yOiBcImdyZXlcIiB9O1xuICAgIH07XG5cbiAgICBjb25zdCBicm93c2UgPSAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG5vZGVJZCwgdGVtcGxhdGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vYnJvd3NlYDtcbiAgICAgICAgY29uc3QgYnJvd3NlRGVzY3JpcHRpb24gPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRlbXBsYXRlKSwgeyBub2RlSWQsIHJlc3VsdE1hc2s6IDYzIH0pO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBicm93c2VEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hpbmcgZmFpbGVkIHdpdGggZXJyb3JcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzOiBbXSB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hlZCA6IFwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB5aWVsZCBkYXRhLmpzb24oKTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IHJlc3BvbnNlLmJyb3dzZVJlc3VsdC5yZWZlcmVuY2VzIHx8IFtdO1xuICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZTEgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc0NoaWxkXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5WYXJpYWJsZSB8IE5vZGVDbGFzcy5PYmplY3QgfCBOb2RlQ2xhc3MuTWV0aG9kLFxuICAgICAgICAvLyAgTm9kZUNsYXNzLk9iamVjdFR5cGUgfFxuICAgICAgICAvLyAgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLkRhdGFUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlZpZXcsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgY29uc3QgdGVtcGxhdGUyID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJPcmdhbml6ZXNcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCBpbnRlcm5hbFZlcmlmeSA9ICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgJGlucHV0RWxlbWVudCwgJGluZm8pID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgY29uc3Qgbm9kZUlkID0gJGlucHV0RWxlbWVudC52YWwoKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKGAke3Jvb3R9L2NoZWNrTm9kZUlkYCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzZXROb3RpZmljYXRpb24gPSAodGV4dCwgY2xhc3NOYW1lKSA9PiB7XG4gICAgICAgICAgICAkaW5mby50ZXh0KHRleHQpLmFkZENsYXNzKFwic3RlcmZpdmUtaW5mb1wiKS5hZGRDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgJGluZm8uc2hvdygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgJGluZm8ucmVtb3ZlQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICAkaW5mby5oaWRlKCk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QganNvbiA9ICh5aWVsZCBkYXRhLmpzb24oKSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICAvLyBkbyBzb21ldGhpbmc7XG4gICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCIhIWZhaWx1cmUhIVwiICsgbm9kZUlkLCBcImZhaWx1cmVcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoanNvbi5zdGF0dXNDb2RlLm1hdGNoKC9Hb29kLykpIHtcbiAgICAgICAgICAgICAgICAvLyBkbyBzb21ldGhpbmdcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChqc29uLm5vZGVBZGRyZXNzU3RyaW5nKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiR29vZFwiLCBcIm9rXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoYCR7bm9kZUlkfWApO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihgJHtqc29uLnN0YXR1c0NvZGV9ICR7ZGF0YS5zdGF0dXNUZXh0fWAsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGZldGNoQ2hpbGRyZW4oJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTEpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MiA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMik7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFsuLi5icm93c2VSZXN1bHQxLnJlZmVyZW5jZXMsIC4uLmJyb3dzZVJlc3VsdDIucmVmZXJlbmNlc10sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgdGVtcGxhdGVTVCA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzU3VidHlwZVwiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8IE5vZGVDbGFzcy5PYmplY3RUeXBlIHwgTm9kZUNsYXNzLkRhdGFUeXBlIHwgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBmdW5jdGlvbiBmZXRjaFN1YnR5cGVzKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGVTVCk7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3NlUmVzdWx0MTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG1ha2VFbGVtZW50ID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAoIXJlZmVyZW5jZSkge1xuICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8bGk+PGkgY2xhc3M9XCJmYSBmYS1lcnJvclwiIHN0eWxlPVwiY29sb3I6cmVkO1wiPjwvaT5ubyByZWZlcmVuY2UgITx1bD48L3VsPjwvbGk+YCk7XG4gICAgICAgICAgICByZXR1cm4gJGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbiA9IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgdCA9ICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHsgaWNvbiwgY29sb3IgfSA9IGdldEljb24ocmVmZXJlbmNlKTtcbiAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8bGk+PGkgY2xhc3M9XCJmYSAke2ljb259XCIgc3R5bGU9XCJjb2xvcjoke2NvbG9yfTtcIj48L2k+ICR7dH08dWw+PC91bD48L2xpPmApO1xuICAgICAgICAkZWxlbWVudC5hZGRDbGFzcyhcImV4cGFuZGFibGVcIik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJ2YWx1ZVwiLCBuKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInJlZmVyZW5jZVwiLCByZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gJGVsZW1lbnQ7XG4gICAgfTtcbiAgICBjb25zdCBkZWNsYXJlTm9kZUJyb3dzZXJXaWRnZXQgPSAoKSA9PiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBbIFRlbXBlcmF0dXJlICBdXG4gICAgICAgICAqICAgKCB0b29sdGlwIDogKC9PYmplY3RzL015U2Vuc29yKSAobnM9MTtzPVRlbXBlcmF0dXJlKSlcbiAgICAgICAgICogWyArIFtGb2xkZXJdIE9iamVjdHNdXG4gICAgICAgICAqIFsgICAgIFtPYmplY3RdIE15U2Vuc29yXVxuICAgICAgICAgKiBbICAgICAoICkgW1ZhcmlhYmxlXSBUZW1wZXJhdHVyZV1cbiAgICAgICAgICovXG4gICAgICAgICQud2lkZ2V0KFwic3RlcmZpdmUubm9kZUJyb3dzZXJcIiwge1xuICAgICAgICAgICAgLyogZGVmYXVsdCBvcHRpb25zICovXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiAoKSA9PiAoeyBlbmRwb2ludDogXCJvcGMudGNwOi8vb3BjdWFkZW1vLnN0ZXJmaXZlLmNvbToyNjU0M1wiIH0pLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZTogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgYnJvd3NlTmFtZTogeyBuYW1lc3BhY2VJbmRleDogMCwgbmFtZTogXCJPYmplY3RzXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgbm9kZUNsYXNzOiBcIk9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBub2RlSWQ6IFwibnM9MDtpPTg1XCIsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB7IHRleHQ6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGVEZWZpbml0aW9uOiBGb2xkZXJUeXBlLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgICAgICBiYXNlVXJsOiBcIlwiLFxuICAgICAgICAgICAgICAgIGlzVHlwZVJlZjogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzb2x2ZVBhcmVudE5vZGUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB0eXBlb2YgdGhhdC5vcHRpb25zLnBhcmVudE5vZGUgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlKCkgOiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geWllbGQgYTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldCgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlUGFyZW50Tm9kZSgpLnRoZW4oKHBhcmVudE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBtYWtlRWxlbWVudChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5hcHBlbmQoJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LmN1cnJlbnRQYXJlbnQgPSBwYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmlmeSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgYmFzZVVybDogdGhhdC5vcHRpb25zLmJhc2VVcmwsXG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50OiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGludGVybmFsVmVyaWZ5KGRhdGEsIHRoYXQuJGlucHV0LCB0aGF0LiRpbmZvKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfY3JlYXRlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF9mZXRjaERhdGFGb3JOb2RlKCRub2RlLCBmZXRjaEZ1bmMsIGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImZldGNoZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgZmV0Y2hlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG5vZGUuaGFzQ2xhc3MoXCJsb2FkaW5nXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhbHJlYWR5IGxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuYWRkQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuYXBwZW5kKCc8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPjwvZGl2PicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyByZWZlcmVuY2VzIH0gPSB5aWVsZCBmZXRjaEZ1bmMoJG5vZGUsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIHJlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5maWx0ZXIgJiYgIXRoYXQub3B0aW9ucy5maWx0ZXIocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBtYWtlRWxlbWVudChyZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmFkZENsYXNzKFwiZmV0Y2hlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmFwcGVuZChgPGxpPmVycm9yICR7ZXJyLm1lc3NhZ2V9PC9saT5gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVyclwiLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuZmluZChcIi5zcGlubmVyXCIpLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUucmVtb3ZlQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQgPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8gPSAkKFwiPGRpdi8+XCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFkZENsYXNzKFwic3RlcmZpdmUtY29tYm8tYm94XCIpO1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZXBsYWNlV2l0aCh0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cCA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJpbnB1dC1ncm91cFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5wdXRHcm91cCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kaW5wdXQpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4gPSAkKGA8YnV0dG9uPjxpIGNsYXNzPVwiZmEgZmEtc2l0ZW1hcFwiPjwvaT48L2J1dHRvbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiR0b2dnbGVUcmVlQnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0b2dnbGVUcmVlQnRuLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGRyb3Bkb3duLmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyZWUgd2lkZ2V0IGlzIGdvaW5nIHRvIGJlY29tZSB2aXNpYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnJlc29sdmVQYXJlbnROb2RlKCkudGhlbigocGFyZW50Tm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50Tm9kZSAhPT0gdGhhdC5jdXJyZW50UGFyZW50IHx8ICgoX2EgPSB0aGF0LmN1cnJlbnRQYXJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5ub2RlSWQpICE9PSBwYXJlbnROb2RlLm5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4gPSAkKGA8YnV0dG9uPjxpIGNsYXNzPVwiZmEgZmEtZmxhc2tcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kdmVyaWZ5QnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIsIFwiZW50ZXIgYSBub2RlSWQgb3IgYSBicm93c2VQYXRoIFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5mbyA9ICQoYDxkaXYgY2xhc3M9XCJpbmZvLXRleHRcIj48L2Rpdj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgYmFzZVVybDogdGhhdC5vcHRpb25zLmJhc2VVcmwsXG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50OiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93biA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJzdGVyZml2ZS1kcm9wZG93blwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGluZm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRkcm9wZG93bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZSA9ICQoYDx1bCBjbGFzcz1cInN0ZXJmaXZlLXRyZWVcIj48L3VsPmApLmFwcGVuZFRvKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlV2lkdGggPSAyMDsgLy8gU2V0IHdpZHRoIG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZUhlaWdodCA9IDIwOyAvLyBTZXQgaGVpZ2h0IG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3MgPSAkKHRoaXMpLm9mZnNldCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnBhZ2VYID49IGVsZW1lbnRQb3MubGVmdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWCA8PSBlbGVtZW50UG9zLmxlZnQgKyBiZWZvcmVXaWR0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWSA+PSBlbGVtZW50UG9zLnRvcCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWSA8PSBlbGVtZW50UG9zLnRvcCArIGJlZm9yZUhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGxpLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludDogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludCA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50KCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmID0gIXRoYXQub3B0aW9ucy5pc1R5cGVSZWYgPyBmZXRjaENoaWxkcmVuIDogZmV0Y2hTdWJ0eXBlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZmV0Y2hEYXRhRm9yTm9kZSgkbGksIGYsIGRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIgRmV0Y2hpbmcgZG9uZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXJrIGFzIGV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9nZ2xlIGl0cyBleHBhbmRlZC9jb2xsYXBzZWQgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkudG9nZ2xlQ2xhc3MoXCJleHBhbmRhYmxlIGV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJGxpLmNoaWxkcmVuKFwidWxcIikuY2hpbGRyZW4oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCBleHBhbmRhYmxlIGFuZCBleHBhbmRlZCBjbGFzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnRvZ2dsZUNsYXNzKFwiZXhwYW5kYWJsZSBleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAkbGkuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gJGxpLmRhdGEoXCJyZWZlcmVuY2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmlzU2VsZWN0YWJsZSAmJiAhdGhhdC5vcHRpb25zLmlzU2VsZWN0YWJsZShyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuZGF0YShcInJlZmVyZW5jZVwiLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzcGxheU5hbWUgPSAoKF9hID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgKChfYiA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSBgWyR7ZGlzcGxheU5hbWV9XSgke3ZhbHVlfSlgO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudmFsKGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBjbGlja2luZyBvdXRzaWRlIHRoZSBwYWdlIHdpbGwgaGlkZSB0aGUgZHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgaWYgKCEkKGV2ZW50LnRhcmdldCkuY2xvc2VzdCh0aGF0LiRjb21ibykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBSRUQubm9kZXMucmVnaXN0ZXJUeXBlKFwiT3BjVWEtQ2xpZW50Mi1Xcml0ZVwiLCB7XG4gICAgICAgIGNhdGVnb3J5OiBcIm9wY3VhXCIsXG4gICAgICAgIGNvbG9yOiBcIiNDMERFRURcIixcbiAgICAgICAgYWxpZ246IFwicmlnaHRcIixcbiAgICAgICAgaWNvbjogXCIuLi8uLi9pY29ucy9vcGN1YW5vZGVMb2dvLnBuZ1wiLFxuICAgICAgICBwYWxldHRlTGFiZWw6IFwid3JpdGVcIixcbiAgICAgICAgZGVmYXVsdHM6IHtcbiAgICAgICAgICAgIGlucHV0czogeyB2YWx1ZTogMSB9LFxuICAgICAgICAgICAgb3V0cHV0OiB7IHZhbHVlOiA0IH0sXG4gICAgICAgICAgICAvLyBDb21tb25cbiAgICAgICAgICAgIG5hbWU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIGVuZHBvaW50OiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogdHJ1ZSwgdHlwZTogXCJPcGNVYS1FbmRwb2ludDJcIiB9LFxuICAgICAgICAgICAgYXR0cmlidXRlSWQ6IHsgdmFsdWU6IFwiVmFsdWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIG5vZGVJZDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGlucHV0czogMSxcbiAgICAgICAgb3V0cHV0czogMSxcbiAgICAgICAgbGFiZWwoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lIHx8IFwiT1BDVUEgQ2xpZW50IFdyaXRlXCI7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsU3R5bGUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lID8gXCJub2RlX2xhYmVsX2l0YWxpY1wiIDogXCJcIjtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0cHJlcGFyZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzO1xuICAgICAgICAgICAgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0KCk7XG4gICAgICAgICAgICBub2RlLmlucHV0cyA9IDE7XG4gICAgICAgICAgICBjb25zdCAkbm9kZUlkID0gJChcIiNub2RlLWlucHV0LW5vZGVJZFwiKTtcbiAgICAgICAgICAgICRub2RlSWQubm9kZUJyb3dzZXIoe1xuICAgICAgICAgICAgICAgIGlzU2VsZWN0YWJsZShub2RlRGVzYykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIlZhcmlhYmxlXCI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRzYXZlKCkgeyB9LFxuICAgIH0pO1xuXG59KSgpOyJdfQ==
|
7
|
+
function _0xb63e(_0x53f1b2,_0x5075c9){const _0x35967b=_0x3596();return _0xb63e=function(_0xb63eec,_0x24cd0b){_0xb63eec=_0xb63eec-0xf6;let _0x54c8df=_0x35967b[_0xb63eec];return _0x54c8df;},_0xb63e(_0x53f1b2,_0x5075c9);}function _0x3596(){const _0x521617=['change','HasTypeDefinition','<button><i\x20class=\x22fa\x20fa-flask\x22></i></button>','addClass','throw','toggleClass','widget','ns=0;i=40','POST','OPCUA\x20Client\x20Write','log','then','remove','displayName','nodes','hide','baseUrl','ObjectType','sterfive-dropdown','expandable\x20expanded','right','ns=0;i=47','val','Object','BrowseName','$info','fa-cog','apply','nodeClass','node_label_italic','DataType','</li>','Invalid','$input','assign','value','opcua','fetched','<ul></ul></li>','stringify','trigger','failure','114936mvPwxF','loading','View','776485BSjjUN','<li><i\x20class=\x22fa\x20','json','Unspecified','Method','pageY','HasChild','click','message','placeholder','<ul\x20class=\x22sterfive-tree\x22></ul>','i=61','isSelectable','fa-object-group','714qelyQj','VariableType','Both','pageX','HasSubtype','status','expandable','246701JMspZY','text','ns=0;i=61','next','isTypeRef','<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','empty','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','input-group','function','options','match','left','typeDefinition','Organizes','show','write','offset','Inverse','rgba(61,\x2060,\x204,\x200.525)','$dropdown','statusText','$verifyBtn','Variable','done','NodeClass','<div\x20class=\x22spinner\x22></div>','element','OpcUa-Endpoint2','toString','currentParent',':visible','removeClass','DarkOrange','<div\x20class=\x22info-text\x22></div>','$toggleTreeBtn','children','endpoint','$tree','810WBZrZC','suppressed','already\x20loading','err','grey','name','length','../../icons/opcuanodeLogo.png','reset','ns=0;i=45','2028834zfsKwD','nodeId','SteelBlue','attr','appendTo','\x20Fetching\x20done','/checkNodeId','$inputGroup','browseResult','ReferenceType','SeaGreen','2631228JsVmib','filter','sterfive.nodeBrowser','<li>error\x20','Forward','/opcua-endpoint2','/browse','endpointNode','657MjSddi','Value','nodeBrowser','error','$combo','references','fa-folder','reference','SuppressedError','ns=0;i=46','expanded','hasClass','Objects','referenceTypeId','stopPropagation','browseName','fa-question','top','<div/>','data','fetching\x20failed\x20with\x20error','append','DisplayName','verify','CadetBlue','IsForward','fa-list-alt','1134612yrOhJn','.spinner','HasProperty','resolveParentNode','parentNode','toggle','application/json','DodgerBlue','nodeAddressString','replaceWith','find'];_0x3596=function(){return _0x521617;};return _0x3596();}(function(_0x2f11a6,_0xc0ac5f){const _0x3786a8=_0xb63e,_0x21b0ba=_0x2f11a6();while(!![]){try{const _0x29b493=-parseInt(_0x3786a8(0x18c))/0x1*(-parseInt(_0x3786a8(0x141))/0x2)+-parseInt(_0x3786a8(0x179))/0x3+parseInt(_0x3786a8(0xfb))/0x4+-parseInt(_0x3786a8(0x133))/0x5+-parseInt(_0x3786a8(0x184))/0x6+parseInt(_0x3786a8(0x148))/0x7+parseInt(_0x3786a8(0x130))/0x8*(parseInt(_0x3786a8(0x16f))/0x9);if(_0x29b493===_0xc0ac5f)break;else _0x21b0ba['push'](_0x21b0ba['shift']());}catch(_0x1ed214){_0x21b0ba['push'](_0x21b0ba['shift']());}}}(_0x3596,0x8cb6a),(function(){'use strict';const _0x3801f8=_0xb63e;function _0x5e8acd(_0x1436a6,_0x367b14,_0x1bdbdb,_0x387ab0){function _0x53788c(_0x28f264){return _0x28f264 instanceof _0x1bdbdb?_0x28f264:new _0x1bdbdb(function(_0x2fd164){_0x2fd164(_0x28f264);});}return new(_0x1bdbdb||(_0x1bdbdb=Promise))(function(_0x157a51,_0x194c4e){const _0x29ff73=_0xb63e;function _0x5a9f0c(_0x1432b6){try{_0x3fed6a(_0x387ab0['next'](_0x1432b6));}catch(_0x1c0ce8){_0x194c4e(_0x1c0ce8);}}function _0xddc6d8(_0x42b30c){const _0x54cfd0=_0xb63e;try{_0x3fed6a(_0x387ab0[_0x54cfd0(0x10a)](_0x42b30c));}catch(_0xcc0ce9){_0x194c4e(_0xcc0ce9);}}function _0x3fed6a(_0x441f78){const _0x469959=_0xb63e;_0x441f78[_0x469959(0x160)]?_0x157a51(_0x441f78[_0x469959(0x129)]):_0x53788c(_0x441f78['value'])[_0x469959(0x111)](_0x5a9f0c,_0xddc6d8);}_0x3fed6a((_0x387ab0=_0x387ab0[_0x29ff73(0x121)](_0x1436a6,_0x367b14||[]))[_0x29ff73(0x14b)]());});}typeof SuppressedError==='function'?SuppressedError:function(_0x5e7dac,_0x21bfc4,_0x9ad5cc){const _0x1bd444=_0xb63e;var _0x5b1c9c=new Error(_0x9ad5cc);return _0x5b1c9c['name']=_0x1bd444(0x194),_0x5b1c9c[_0x1bd444(0x18f)]=_0x5e7dac,_0x5b1c9c[_0x1bd444(0x170)]=_0x21bfc4,_0x5b1c9c;};const _0x192fd6='ns=0;i=35',_0x315f7b=_0x3801f8(0x14a),_0x2c93f7=_0x3801f8(0x11b),_0x34e863=_0x3801f8(0x195),_0x5a17c0='ns=0;i=34',_0x559491=_0x3801f8(0x178),_0x41d545=_0x3801f8(0x10d);var _0xd59e2a;(function(_0x49da75){const _0x39c9b9=_0x3801f8;_0x49da75[_0x49da75['Forward']=0x0]=_0x39c9b9(0x188),_0x49da75[_0x49da75[_0x39c9b9(0x15a)]=0x1]='Inverse',_0x49da75[_0x49da75[_0x39c9b9(0x143)]=0x2]=_0x39c9b9(0x143),_0x49da75[_0x49da75[_0x39c9b9(0x126)]=0x3]=_0x39c9b9(0x126);}(_0xd59e2a||(_0xd59e2a={})));var _0x5942a5;(function(_0x2bcac9){const _0x2b79c4=_0x3801f8;_0x2bcac9[_0x2bcac9[_0x2b79c4(0x136)]=0x0]=_0x2b79c4(0x136),_0x2bcac9[_0x2bcac9['Object']=0x1]=_0x2b79c4(0x11d),_0x2bcac9[_0x2bcac9['Variable']=0x2]='Variable',_0x2bcac9[_0x2bcac9[_0x2b79c4(0x137)]=0x4]=_0x2b79c4(0x137),_0x2bcac9[_0x2bcac9['ObjectType']=0x8]=_0x2b79c4(0x117),_0x2bcac9[_0x2bcac9['VariableType']=0x10]=_0x2b79c4(0x142),_0x2bcac9[_0x2bcac9[_0x2b79c4(0x182)]=0x20]=_0x2b79c4(0x182),_0x2bcac9[_0x2bcac9[_0x2b79c4(0x124)]=0x40]=_0x2b79c4(0x124),_0x2bcac9[_0x2bcac9[_0x2b79c4(0x132)]=0x80]=_0x2b79c4(0x132);}(_0x5942a5||(_0x5942a5={})));var _0x2fe5fd;(function(_0x1aff34){const _0x456a8a=_0x3801f8;_0x1aff34[_0x1aff34[_0x456a8a(0x11d)]=0x1]=_0x456a8a(0x11d),_0x1aff34[_0x1aff34[_0x456a8a(0x15f)]=0x2]='Variable',_0x1aff34[_0x1aff34[_0x456a8a(0x137)]=0x4]=_0x456a8a(0x137),_0x1aff34[_0x1aff34[_0x456a8a(0x117)]=0x8]=_0x456a8a(0x117),_0x1aff34[_0x1aff34['VariableType']=0x10]='VariableType',_0x1aff34[_0x1aff34[_0x456a8a(0x182)]=0x20]='ReferenceType',_0x1aff34[_0x1aff34[_0x456a8a(0x124)]=0x40]=_0x456a8a(0x124),_0x1aff34[_0x1aff34[_0x456a8a(0x132)]=0x80]=_0x456a8a(0x132);}(_0x2fe5fd||(_0x2fe5fd={})));var _0x49337e;(function(_0x13c6d3){const _0x24da91=_0x3801f8;_0x13c6d3[_0x13c6d3[_0x24da91(0x182)]=0x1]=_0x24da91(0x182),_0x13c6d3[_0x13c6d3[_0x24da91(0xf9)]=0x2]=_0x24da91(0xf9),_0x13c6d3[_0x13c6d3['NodeClass']=0x4]=_0x24da91(0x161),_0x13c6d3[_0x13c6d3['BrowseName']=0x8]=_0x24da91(0x11e),_0x13c6d3[_0x13c6d3[_0x24da91(0xf6)]=0x10]=_0x24da91(0xf6),_0x13c6d3[_0x13c6d3['TypeDefinition']=0x20]='TypeDefinition';}(_0x49337e||(_0x49337e={})));function _0x2e4389(_0x368148){const _0x309902=_0x3801f8;switch(_0x368148){case _0x309902(0x156):return _0x192fd6;case _0x309902(0xfd):return _0x34e863;case'HasComponent':return _0x2c93f7;case _0x309902(0x139):return _0x5a17c0;case _0x309902(0x145):return _0x559491;case _0x309902(0x107):return _0x41d545;}}const _0xd053df=_0x537f59=>{const _0x16b65c=_0x3801f8;switch(_0x537f59[_0x16b65c(0x122)]){case _0x16b65c(0x11d):if(_0x537f59[_0x16b65c(0x199)]===_0x192fd6);if(_0x537f59[_0x16b65c(0x155)]===_0x315f7b||_0x537f59['referenceTypeId']===_0x16b65c(0x13e))return{'icon':_0x16b65c(0x192),'color':_0x16b65c(0x15b)};return{'icon':_0x16b65c(0x140),'color':_0x16b65c(0x183)};case _0x16b65c(0x15f):if(_0x537f59[_0x16b65c(0x199)]===_0x2c93f7)return{'icon':'fa-list-alt','color':_0x16b65c(0x17b)};else return _0x537f59[_0x16b65c(0x199)]===_0x34e863?{'icon':_0x16b65c(0xfa),'color':_0x16b65c(0x102)}:{'icon':_0x16b65c(0xfa),'color':_0x16b65c(0xf8)};case _0x16b65c(0x137):return{'icon':_0x16b65c(0x120),'color':'SandyBrown'};case _0x16b65c(0x117):return{'icon':_0x16b65c(0x140),'color':_0x16b65c(0x169)};case _0x16b65c(0x142):return{'icon':'fa-sliders','color':_0x16b65c(0x169)};}return{'icon':_0x16b65c(0x19c),'color':_0x16b65c(0x173)};},_0x52c17b=({endpointNode:_0x136b8d,endpoint:_0x53dd37,baseUrl:_0x422886},_0x244c3b,_0xefd5e)=>_0x5e8acd(void 0x0,void 0x0,void 0x0,function*(){const _0x4aadbe=_0x3801f8,_0x2d489d=_0x422886+_0x4aadbe(0x189),_0x5176bd=_0x2d489d+_0x4aadbe(0x18a),_0x4db0b8=Object['assign'](Object[_0x4aadbe(0x128)]({},_0xefd5e),{'nodeId':_0x244c3b,'resultMask':0x3f}),_0x145aa6=yield fetch(_0x5176bd,{'method':_0x4aadbe(0x10e),'body':JSON['stringify']({'endpointNode':_0x136b8d,'endpoint':_0x53dd37,'browseDescription':_0x4db0b8}),'headers':{'Content-Type':_0x4aadbe(0x101)}});if(_0x145aa6[_0x4aadbe(0x146)]!==0xc8)return console[_0x4aadbe(0x110)](_0x4aadbe(0x1a0),_0x145aa6[_0x4aadbe(0x146)],_0x145aa6[_0x4aadbe(0x15d)]),{'references':[]};console['log']('fetched\x20:\x20',_0x145aa6['status'],_0x145aa6[_0x4aadbe(0x15d)]);const _0x3d9b2f=yield _0x145aa6[_0x4aadbe(0x135)](),_0x421dd2=_0x3d9b2f[_0x4aadbe(0x181)][_0x4aadbe(0x191)]||[];return{'references':_0x421dd2};}),_0x4d1c86={'referenceTypeId':_0x2e4389(_0x3801f8(0x139)),'includeSubtypes':!![],'browseDirection':_0xd59e2a[_0x3801f8(0x188)],'nodeClassMask':_0x5942a5['Variable']|_0x5942a5['Object']|_0x5942a5[_0x3801f8(0x137)],'resultMask':0x3f},_0x8c8c3e={'referenceTypeId':_0x2e4389(_0x3801f8(0x156)),'includeSubtypes':!![],'browseDirection':_0xd59e2a['Forward'],'nodeClassMask':_0x5942a5[_0x3801f8(0x15f)]|_0x5942a5[_0x3801f8(0x11d)]|_0x5942a5[_0x3801f8(0x137)],'resultMask':0x3f},_0x50cc2b=({endpointNode:_0x9bb97f,endpoint:_0x2776d2,baseUrl:_0xf5ae54},_0x50036c,_0x4e2e35)=>_0x5e8acd(void 0x0,void 0x0,void 0x0,function*(){const _0x15b7d5=_0x3801f8,_0x4e3367=_0xf5ae54+_0x15b7d5(0x189),_0x7e2574=_0x50036c[_0x15b7d5(0x11c)](),_0x1a0a5e=yield fetch(_0x4e3367+_0x15b7d5(0x17f),{'method':_0x15b7d5(0x10e),'body':JSON[_0x15b7d5(0x12d)]({'endpointNode':_0x9bb97f,'endpoint':_0x2776d2,'nodeId':_0x7e2574}),'headers':{'Content-Type':'application/json'}}),_0x37d5a6=(_0x37d497,_0xb1c155)=>{const _0x45a381=_0x15b7d5;_0x4e2e35[_0x45a381(0x149)](_0x37d497)[_0x45a381(0x109)]('sterfive-info')[_0x45a381(0x109)](_0xb1c155),_0x4e2e35[_0x45a381(0x157)](),setTimeout(()=>{const _0x1cfe4b=_0x45a381;_0x4e2e35['removeClass'](_0xb1c155),_0x4e2e35[_0x1cfe4b(0x115)]();},0xbb8);},_0x455674=yield _0x1a0a5e['json']();_0x1a0a5e[_0x15b7d5(0x146)]!==0xc8?_0x37d5a6('!!failure!!'+_0x7e2574,'failure'):_0x455674['statusCode'][_0x15b7d5(0x153)](/Good/)?(_0x50036c[_0x15b7d5(0x11c)](_0x455674[_0x15b7d5(0x103)]),_0x50036c[_0x15b7d5(0x12e)](_0x15b7d5(0x106)),_0x37d5a6('Good','ok')):(_0x50036c[_0x15b7d5(0x11c)](''+_0x7e2574),_0x37d5a6(_0x455674['statusCode']+'\x20'+_0x1a0a5e[_0x15b7d5(0x15d)],_0x15b7d5(0x12f)));});function _0x40120f(_0xd7d6e2,_0x5bba0c){return _0x5e8acd(this,void 0x0,void 0x0,function*(){const _0x34f999=_0xb63e,_0xff7e60=_0xd7d6e2[_0x34f999(0x19f)](_0x34f999(0x129)),_0x43afe2=yield _0x52c17b(_0x5bba0c,_0xff7e60,_0x4d1c86),_0x20aa3d=yield _0x52c17b(_0x5bba0c,_0xff7e60,_0x8c8c3e);return{'references':[..._0x43afe2[_0x34f999(0x191)],..._0x20aa3d[_0x34f999(0x191)]]};});}const _0x3e630d={'referenceTypeId':_0x2e4389(_0x3801f8(0x145)),'includeSubtypes':!![],'browseDirection':_0xd59e2a[_0x3801f8(0x188)],'nodeClassMask':_0x5942a5[_0x3801f8(0x182)]|_0x5942a5[_0x3801f8(0x117)]|_0x5942a5[_0x3801f8(0x124)]|_0x5942a5[_0x3801f8(0x142)],'resultMask':0x3f};function _0x223657(_0x120a6b,_0xea66e8){return _0x5e8acd(this,void 0x0,void 0x0,function*(){const _0x8852c1=_0xb63e,_0x1fd12f=_0x120a6b['data'](_0x8852c1(0x129)),_0x50bb86=yield _0x52c17b(_0xea66e8,_0x1fd12f,_0x3e630d);return _0x50bb86;});}const _0x437bab=_0x3954e7=>{const _0xc1cc4d=_0x3801f8;var _0x1bb2c4,_0x481cff;if(!_0x3954e7){const _0x4b508a=$(_0xc1cc4d(0x14f));return _0x4b508a;}const _0x55827b=_0x3954e7[_0xc1cc4d(0x17a)]['toString'](),_0x40b503=((_0x1bb2c4=_0x3954e7[_0xc1cc4d(0x113)])===null||_0x1bb2c4===void 0x0?void 0x0:_0x1bb2c4[_0xc1cc4d(0x149)])||((_0x481cff=_0x3954e7[_0xc1cc4d(0x19b)])===null||_0x481cff===void 0x0?void 0x0:_0x481cff[_0xc1cc4d(0x174)])||_0x3954e7['nodeId'][_0xc1cc4d(0x165)](),{icon:_0xb7ff48,color:_0x324206}=_0xd053df(_0x3954e7),_0x16be3a=$(_0xc1cc4d(0x134)+_0xb7ff48+'\x22\x20style=\x22color:'+_0x324206+';\x22></i>\x20'+_0x40b503+_0xc1cc4d(0x12c));return _0x16be3a[_0xc1cc4d(0x109)](_0xc1cc4d(0x147)),_0x16be3a[_0xc1cc4d(0x19f)](_0xc1cc4d(0x129),_0x55827b),_0x16be3a[_0xc1cc4d(0x19f)](_0xc1cc4d(0x193),_0x3954e7),_0x16be3a;},_0x5a7a65=()=>{const _0x1cf41b=_0x3801f8;$[_0x1cf41b(0x10c)](_0x1cf41b(0x186),{'options':{'endpointNode':()=>({'endpoint':'opc.tcp://opcuademo.sterfive.com:26543'}),'endpoint':()=>undefined,'parentNode':()=>({'browseName':{'namespaceIndex':0x0,'name':_0x1cf41b(0x198)},'nodeClass':_0x1cf41b(0x11d),'nodeId':'ns=0;i=85','displayName':{'text':_0x1cf41b(0x198)},'typeDefinition':_0x315f7b}),'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x5e8acd(this,void 0x0,void 0x0,function*(){const _0x236ed1=_0xb63e,_0x3f0540=this,_0x15e17e=typeof _0x3f0540[_0x236ed1(0x152)][_0x236ed1(0xff)]===_0x236ed1(0x151)?_0x3f0540[_0x236ed1(0x152)][_0x236ed1(0xff)]():_0x3f0540[_0x236ed1(0x152)]['parentNode'];if(_0x15e17e instanceof Promise)return yield _0x15e17e;return _0x15e17e;});},'reset'(){const _0xb3bf20=_0x1cf41b,_0x292b5f=this;_0x292b5f[_0xb3bf20(0x16e)]['empty'](),this['resolveParentNode']()[_0xb3bf20(0x111)](_0x296b69=>{const _0x152880=_0xb3bf20,_0x46de5b=_0x437bab(_0x296b69);_0x292b5f[_0x152880(0x16e)][_0x152880(0x1a1)](_0x46de5b),_0x292b5f['currentParent']=_0x296b69;});},'verify'(){const _0xee3ac1=_0x1cf41b,_0x197f2d=this,_0x14ebd2={'baseUrl':_0x197f2d[_0xee3ac1(0x152)][_0xee3ac1(0x116)],'endpointNode':typeof _0x197f2d[_0xee3ac1(0x152)]['endpointNode']===_0xee3ac1(0x151)?_0x197f2d[_0xee3ac1(0x152)][_0xee3ac1(0x18b)]():_0x197f2d[_0xee3ac1(0x152)][_0xee3ac1(0x18b)],'endpoint':typeof _0x197f2d[_0xee3ac1(0x152)][_0xee3ac1(0x16d)]===_0xee3ac1(0x151)?_0x197f2d[_0xee3ac1(0x152)][_0xee3ac1(0x16d)]():_0x197f2d[_0xee3ac1(0x152)][_0xee3ac1(0x16d)]};_0x50cc2b(_0x14ebd2,_0x197f2d['$input'],_0x197f2d[_0xee3ac1(0x11f)]);},'_create'(){const _0x17fed3=_0x1cf41b,_0x583726=this;function _0x34966f(_0xed22e3,_0x283422,_0x1576de){return _0x5e8acd(this,void 0x0,void 0x0,function*(){const _0x1cc28f=_0xb63e;if(_0xed22e3[_0x1cc28f(0x197)]('fetched')){console[_0x1cc28f(0x110)]('already\x20fetched');return;}if(_0xed22e3[_0x1cc28f(0x197)](_0x1cc28f(0x131))){console[_0x1cc28f(0x110)](_0x1cc28f(0x171));return;}_0xed22e3['addClass'](_0x1cc28f(0x131)),_0xed22e3[_0x1cc28f(0x1a1)](_0x1cc28f(0x162));try{_0xed22e3[_0x1cc28f(0x16c)]('ul')[_0x1cc28f(0x14e)]();const {references:_0x3480ef}=yield _0x283422(_0xed22e3,_0x1576de);for(const _0x34d038 of _0x3480ef){if(_0x583726[_0x1cc28f(0x152)][_0x1cc28f(0x185)]&&!_0x583726[_0x1cc28f(0x152)]['filter'](_0x34d038))continue;const _0x44d541=_0x437bab(_0x34d038);_0xed22e3[_0x1cc28f(0x16c)]('ul')['append'](_0x44d541);}_0xed22e3[_0x1cc28f(0x109)](_0x1cc28f(0x12b));}catch(_0x9a4af6){_0xed22e3[_0x1cc28f(0x16c)]('ul')[_0x1cc28f(0x1a1)](_0x1cc28f(0x187)+_0x9a4af6[_0x1cc28f(0x13b)]+_0x1cc28f(0x125)),console[_0x1cc28f(0x110)](_0x1cc28f(0x172),_0x9a4af6);}_0xed22e3[_0x1cc28f(0x105)](_0x1cc28f(0xfc))[_0x1cc28f(0x112)](),_0xed22e3[_0x1cc28f(0x168)](_0x1cc28f(0x131));});}_0x583726[_0x17fed3(0x127)]=this[_0x17fed3(0x163)],_0x583726[_0x17fed3(0x190)]=$(_0x17fed3(0x19e)),_0x583726['$combo'][_0x17fed3(0x109)]('sterfive-combo-box'),this['element'][_0x17fed3(0x104)](_0x583726[_0x17fed3(0x190)]),_0x583726['$inputGroup']=$(_0x17fed3(0x19e))['addClass'](_0x17fed3(0x150)),_0x583726[_0x17fed3(0x190)][_0x17fed3(0x1a1)](_0x583726[_0x17fed3(0x180)]),_0x583726['$inputGroup']['append'](_0x583726[_0x17fed3(0x127)]),_0x583726['$toggleTreeBtn']=$(_0x17fed3(0x14d)),_0x583726['$inputGroup'][_0x17fed3(0x1a1)](_0x583726[_0x17fed3(0x16b)]),_0x583726[_0x17fed3(0x16b)]['on']('click',function(){const _0x43e851=_0x17fed3;!_0x583726[_0x43e851(0x15c)]['is'](_0x43e851(0x167))&&(_0x583726[_0x43e851(0xfe)]()[_0x43e851(0x111)](_0x4a53aa=>{const _0x3ee327=_0x43e851;var _0x5de794;(_0x4a53aa!==_0x583726[_0x3ee327(0x166)]||((_0x5de794=_0x583726[_0x3ee327(0x166)])===null||_0x5de794===void 0x0?void 0x0:_0x5de794[_0x3ee327(0x17a)])!==_0x4a53aa['nodeId'])&&_0x583726[_0x3ee327(0x177)]();}),_0x583726['$info'][_0x43e851(0x115)]()),_0x583726[_0x43e851(0x15c)]['toggle']();}),_0x583726[_0x17fed3(0x15e)]=$(_0x17fed3(0x108)),_0x583726['$inputGroup'][_0x17fed3(0x1a1)](_0x583726[_0x17fed3(0x15e)]),_0x583726[_0x17fed3(0x15e)]['on'](_0x17fed3(0x13a),()=>{const _0x292333=_0x17fed3;this[_0x292333(0xf7)]();}),!_0x583726[_0x17fed3(0x127)][_0x17fed3(0x17c)](_0x17fed3(0x13c))&&_0x583726['$input'][_0x17fed3(0x17c)](_0x17fed3(0x13c),'enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20'),_0x583726['$info']=$(_0x17fed3(0x16a)),_0x583726[_0x17fed3(0x11f)][_0x17fed3(0x115)](),{'baseUrl':_0x583726[_0x17fed3(0x152)][_0x17fed3(0x116)],'endpointNode':typeof _0x583726['options'][_0x17fed3(0x18b)]===_0x17fed3(0x151)?_0x583726[_0x17fed3(0x152)][_0x17fed3(0x18b)]():_0x583726['options'][_0x17fed3(0x18b)],'endpoint':typeof _0x583726[_0x17fed3(0x152)][_0x17fed3(0x16d)]===_0x17fed3(0x151)?_0x583726[_0x17fed3(0x152)][_0x17fed3(0x16d)]():_0x583726[_0x17fed3(0x152)][_0x17fed3(0x16d)]},_0x583726[_0x17fed3(0x15c)]=$(_0x17fed3(0x19e))['addClass'](_0x17fed3(0x118))[_0x17fed3(0x115)](),_0x583726[_0x17fed3(0x190)][_0x17fed3(0x1a1)](_0x583726[_0x17fed3(0x11f)]),_0x583726[_0x17fed3(0x190)]['append'](_0x583726['$dropdown']),_0x583726[_0x17fed3(0x16e)]=$(_0x17fed3(0x13d))[_0x17fed3(0x17d)](_0x583726[_0x17fed3(0x15c)]),this[_0x17fed3(0x177)](),_0x583726[_0x17fed3(0x16e)]['on']('click','li',function(_0x4e7101){const _0x48eae2=_0x17fed3;var _0x47b193,_0x230aee;_0x4e7101[_0x48eae2(0x19a)]();let _0x495bc6=$(this);const _0x17dbd8=0x14,_0x200694=0x14,_0x2c0c0c=$(this)[_0x48eae2(0x159)](),_0x1663b8=_0x4e7101;if(_0x1663b8[_0x48eae2(0x144)]>=_0x2c0c0c['left']&&_0x1663b8[_0x48eae2(0x144)]<=_0x2c0c0c[_0x48eae2(0x154)]+_0x17dbd8&&_0x1663b8[_0x48eae2(0x138)]>=_0x2c0c0c[_0x48eae2(0x19d)]&&_0x1663b8[_0x48eae2(0x138)]<=_0x2c0c0c[_0x48eae2(0x19d)]+_0x200694){if(_0x495bc6[_0x48eae2(0x197)](_0x48eae2(0x147))){if(_0x495bc6['hasClass']('fetched')){_0x495bc6[_0x48eae2(0x168)](_0x48eae2(0x147))[_0x48eae2(0x109)](_0x48eae2(0x196)),_0x495bc6[_0x48eae2(0x16c)]('ul')[_0x48eae2(0x100)]();return;}const _0x545c11={'baseUrl':_0x583726[_0x48eae2(0x152)][_0x48eae2(0x116)],'endpointNode':typeof _0x583726[_0x48eae2(0x152)][_0x48eae2(0x18b)]===_0x48eae2(0x151)?_0x583726[_0x48eae2(0x152)]['endpointNode']():_0x583726[_0x48eae2(0x152)][_0x48eae2(0x18b)],'endpoint':typeof _0x583726[_0x48eae2(0x152)][_0x48eae2(0x16d)]==='function'?_0x583726[_0x48eae2(0x152)][_0x48eae2(0x16d)]():_0x583726[_0x48eae2(0x152)][_0x48eae2(0x16d)]},_0x21d68b=!_0x583726[_0x48eae2(0x152)][_0x48eae2(0x14c)]?_0x40120f:_0x223657;_0x34966f(_0x495bc6,_0x21d68b,_0x545c11)[_0x48eae2(0x111)](()=>{const _0x131a45=_0x48eae2;console['log'](_0x131a45(0x17e)),console[_0x131a45(0x110)](_0x131a45(0x12b)),_0x495bc6[_0x131a45(0x168)](_0x131a45(0x147))[_0x131a45(0x109)](_0x131a45(0x196));})['catch'](_0x2a1401=>{const _0x3a40e8=_0x48eae2;_0x495bc6[_0x3a40e8(0x168)]('expandable')[_0x3a40e8(0x109)](_0x3a40e8(0x196)),console[_0x3a40e8(0x110)](_0x3a40e8(0x18f),_0x2a1401);});}else{if(_0x495bc6['hasClass']('expanded'))_0x495bc6[_0x48eae2(0x16c)]('ul')[_0x48eae2(0x100)](),_0x495bc6[_0x48eae2(0x10b)](_0x48eae2(0x119));else{if(_0x495bc6[_0x48eae2(0x16c)]('ul')[_0x48eae2(0x16c)]()[_0x48eae2(0x175)]>0x0)_0x495bc6[_0x48eae2(0x16c)]('ul')['toggle'](),_0x495bc6[_0x48eae2(0x10b)](_0x48eae2(0x119));else;}}}else{const _0x550f81=_0x495bc6[_0x48eae2(0x19f)]('value'),_0x5c7223=_0x495bc6[_0x48eae2(0x19f)](_0x48eae2(0x193));if(_0x583726[_0x48eae2(0x152)][_0x48eae2(0x13f)]&&!_0x583726['options']['isSelectable'](_0x5c7223))return;_0x583726[_0x48eae2(0x127)][_0x48eae2(0x19f)]('reference',_0x5c7223);const _0x47820e=((_0x47b193=_0x5c7223[_0x48eae2(0x113)])===null||_0x47b193===void 0x0?void 0x0:_0x47b193['text'])||((_0x230aee=_0x5c7223[_0x48eae2(0x19b)])===null||_0x230aee===void 0x0?void 0x0:_0x230aee[_0x48eae2(0x174)])||_0x5c7223['nodeId'][_0x48eae2(0x165)](),_0x411d24='['+_0x47820e+']('+_0x550f81+')';_0x583726[_0x48eae2(0x127)]['val'](_0x411d24),_0x583726['$input'][_0x48eae2(0x12e)]('change'),_0x583726[_0x48eae2(0x15c)][_0x48eae2(0x115)]();}}),$(document)['on'](_0x17fed3(0x13a),function(_0x30ba91){const _0x1204ba=_0x17fed3;!$(_0x30ba91['target'])['closest'](_0x583726['$combo'])[_0x1204ba(0x175)]&&_0x583726[_0x1204ba(0x15c)][_0x1204ba(0x115)]();});}});};RED[_0x3801f8(0x114)]['registerType']('OpcUa-Client2-Write',{'category':_0x3801f8(0x12a),'color':'#C0DEED','align':_0x3801f8(0x11a),'icon':_0x3801f8(0x176),'paletteLabel':_0x3801f8(0x158),'defaults':{'inputs':{'value':0x1},'output':{'value':0x4},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x3801f8(0x164)},'attributeId':{'value':_0x3801f8(0x18d),'required':!![]},'nodeId':{'value':'','required':![]}},'inputs':0x1,'outputs':0x1,'label'(){const _0x2d6df0=_0x3801f8;return this[_0x2d6df0(0x174)]||_0x2d6df0(0x10f);},'labelStyle'(){const _0x4ee7c6=_0x3801f8;return this[_0x4ee7c6(0x174)]?_0x4ee7c6(0x123):'';},'oneditprepare'(){const _0x48ca0=_0x3801f8,_0x120b32=this;_0x5a7a65(),_0x120b32['inputs']=0x1;const _0x1d0ee5=$('#node-input-nodeId');_0x1d0ee5[_0x48ca0(0x18e)]({'isSelectable'(_0x5a2ac9){const _0x16e362=_0x48ca0;return _0x5a2ac9['nodeClass']===_0x16e362(0x15f);}});},'oneditsave'(){}});}()));
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHg1ZThhY2QiLCJfMHgxNDM2YTYiLCJfMHgzNjdiMTQiLCJfMHgxYmRiZGIiLCJfMHgzODdhYjAiLCJfMHg1Mzc4OGMiLCJfMHgyOGYyNjQiLCJfMHgyZmQxNjQiLCJQcm9taXNlIiwiXzB4MTU3YTUxIiwiXzB4MTk0YzRlIiwiXzB4NWE5ZjBjIiwiXzB4MTQzMmI2IiwiXzB4M2ZlZDZhIiwiXzB4MWMwY2U4IiwiXzB4ZGRjNmQ4IiwiXzB4NDJiMzBjIiwiXzB4Y2MwY2U5IiwiXzB4NDQxZjc4IiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4NWU3ZGFjIiwiXzB4MjFiZmM0IiwiXzB4OWFkNWNjIiwiXzB4NWIxYzljIiwiRXJyb3IiLCJfMHgxOTJmZDYiLCJfMHgzMTVmN2IiLCJfMHgyYzkzZjciLCJfMHgzNGU4NjMiLCJfMHg1YTE3YzAiLCJfMHg1NTk0OTEiLCJfMHg0MWQ1NDUiLCJfMHhkNTllMmEiLCJfMHg0OWRhNzUiLCJfMHg1OTQyYTUiLCJfMHgyYmNhYzkiLCJfMHgyZmU1ZmQiLCJfMHgxYWZmMzQiLCJfMHg0OTMzN2UiLCJfMHgxM2M2ZDMiLCJfMHgyZTQzODkiLCJfMHgzNjgxNDgiLCJfMHhkMDUzZGYiLCJfMHg1MzdmNTkiLCJfMHg1MmMxN2IiLCJlbmRwb2ludE5vZGUiLCJfMHgxMzZiOGQiLCJlbmRwb2ludCIsIl8weDUzZGQzNyIsImJhc2VVcmwiLCJfMHg0MjI4ODYiLCJfMHgyNDRjM2IiLCJfMHhlZmQ1ZSIsIl8weDJkNDg5ZCIsIl8weDUxNzZiZCIsIl8weDRkYjBiOCIsIk9iamVjdCIsIl8weDE0NWFhNiIsImZldGNoIiwiSlNPTiIsImNvbnNvbGUiLCJfMHgzZDliMmYiLCJfMHg0MjFkZDIiLCJfMHg0ZDFjODYiLCJfMHg4YzhjM2UiLCJfMHg1MGNjMmIiLCJfMHg5YmI5N2YiLCJfMHgyNzc2ZDIiLCJfMHhmNWFlNTQiLCJfMHg1MDAzNmMiLCJfMHg0ZTJlMzUiLCJfMHg0ZTMzNjciLCJfMHg3ZTI1NzQiLCJfMHgxYTBhNWUiLCJfMHgzN2Q1YTYiLCJfMHgzN2Q0OTciLCJfMHhiMWMxNTUiLCJzZXRUaW1lb3V0IiwiXzB4NDU1Njc0IiwiXzB4NDAxMjBmIiwiXzB4ZDdkNmUyIiwiXzB4NWJiYTBjIiwiXzB4ZmY3ZTYwIiwiXzB4NDNhZmUyIiwiXzB4MjBhYTNkIiwiXzB4M2U2MzBkIiwiXzB4MjIzNjU3IiwiXzB4MTIwYTZiIiwiXzB4ZWE2NmU4IiwiXzB4MWZkMTJmIiwiXzB4NTBiYjg2IiwiXzB4NDM3YmFiIiwiXzB4Mzk1NGU3IiwiXzB4MWJiMmM0IiwiXzB4NDgxY2ZmIiwiXzB4NGI1MDhhIiwiJCIsIl8weDU1ODI3YiIsIl8weDQwYjUwMyIsImljb24iLCJfMHhiN2ZmNDgiLCJjb2xvciIsIl8weDMyNDIwNiIsIl8weDE2YmUzYSIsIl8weDVhN2E2NSIsInVuZGVmaW5lZCIsIl8weDNmMDU0MCIsIl8weDE1ZTE3ZSIsIl8weDI5MmI1ZiIsIl8weDI5NmI2OSIsIl8weDQ2ZGU1YiIsIl8weDE5N2YyZCIsIl8weDE0ZWJkMiIsIl8weDU4MzcyNiIsIl8weDM0OTY2ZiIsIl8weGVkMjJlMyIsIl8weDI4MzQyMiIsIl8weDE1NzZkZSIsInJlZmVyZW5jZXMiLCJfMHgzNDgwZWYiLCJfMHgzNGQwMzgiLCJfMHg0NGQ1NDEiLCJfMHg5YTRhZjYiLCJfMHg0YTUzYWEiLCJfMHg1ZGU3OTQiLCJfMHg0ZTcxMDEiLCJfMHg0N2IxOTMiLCJfMHgyMzBhZWUiLCJfMHg0OTViYzYiLCJfMHgxN2RiZDgiLCJfMHgyMDA2OTQiLCJfMHgyYzBjMGMiLCJfMHgxNjYzYjgiLCJfMHg1NDVjMTEiLCJfMHgyMWQ2OGIiLCJfMHgyYTE0MDEiLCJfMHg1NTBmODEiLCJfMHg1YzcyMjMiLCJfMHg0NzgyMGUiLCJfMHg0MTFkMjQiLCJkb2N1bWVudCIsIl8weDMwYmE5MSIsIlJFRCIsIl8weDEyMGIzMiIsIl8weDFkMGVlNSIsIl8weDVhMmFjOSJdLCJtYXBwaW5ncyI6IjJyR0FBQSxDQUFDLFUsQ0FDRyxhLHdCQW1C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Iiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcbiAgICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxuICAgIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcbiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcbiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG4gICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4gICAgLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sICovXHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgICAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xyXG4gICAgICAgIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XHJcbiAgICB9O1xuXG4gICAgY29uc3QgT3JnYW5pemVzUmVmTm9kZUlkID0gXCJucz0wO2k9MzVcIjtcbiAgICBjb25zdCBGb2xkZXJUeXBlID0gXCJucz0wO2k9NjFcIjtcbiAgICBjb25zdCBIYXNDb21wb25lbnRSZWZOb2RlSWQgPSBcIm5zPTA7aT00N1wiO1xuICAgIGNvbnN0IEhhc1Byb3BlcnR5UmVmTm9kZUlkID0gXCJucz0wO2k9NDZcIjtcbiAgICBjb25zdCBIYXNDaGlsZFJlZk5vZGVJZCA9IFwibnM9MDtpPTM0XCI7XG4gICAgY29uc3QgSGFzU3VidHlwZVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ1XCI7XG4gICAgY29uc3QgSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQgPSBcIm5zPTA7aT00MFwiO1xuXG4gICAgdmFyIEJyb3dzZURpcmVjdGlvbjtcbiAgICAoZnVuY3Rpb24gKEJyb3dzZURpcmVjdGlvbikge1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiRm9yd2FyZFwiXSA9IDBdID0gXCJGb3J3YXJkXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJJbnZlcnNlXCJdID0gMV0gPSBcIkludmVyc2VcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkJvdGhcIl0gPSAyXSA9IFwiQm90aFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52YWxpZFwiXSA9IDNdID0gXCJJbnZhbGlkXCI7XG4gICAgfSkoQnJvd3NlRGlyZWN0aW9uIHx8IChCcm93c2VEaXJlY3Rpb24gPSB7fSkpO1xuICAgIHZhciBOb2RlQ2xhc3M7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3MpIHtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlVuc3BlY2lmaWVkXCJdID0gMF0gPSBcIlVuc3BlY2lmaWVkXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJPYmplY3RcIl0gPSAxXSA9IFwiT2JqZWN0XCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0VHlwZVwiXSA9IDhdID0gXCJPYmplY3RUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiRGF0YVR5cGVcIl0gPSA2NF0gPSBcIkRhdGFUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzcyB8fCAoTm9kZUNsYXNzID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzTWFzaztcbiAgICAoZnVuY3Rpb24gKE5vZGVDbGFzc01hc2spIHtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJNZXRob2RcIl0gPSA0XSA9IFwiTWV0aG9kXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMzJdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzc01hc2sgfHwgKE5vZGVDbGFzc01hc2sgPSB7fSkpO1xuICAgIHZhciBSZXN1bHRNYXNrO1xuICAgIChmdW5jdGlvbiAoUmVzdWx0TWFzaykge1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMV0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiSXNGb3J3YXJkXCJdID0gMl0gPSBcIklzRm9yd2FyZFwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJOb2RlQ2xhc3NcIl0gPSA0XSA9IFwiTm9kZUNsYXNzXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIkJyb3dzZU5hbWVcIl0gPSA4XSA9IFwiQnJvd3NlTmFtZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJEaXNwbGF5TmFtZVwiXSA9IDE2XSA9IFwiRGlzcGxheU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiVHlwZURlZmluaXRpb25cIl0gPSAzMl0gPSBcIlR5cGVEZWZpbml0aW9uXCI7XG4gICAgfSkoUmVzdWx0TWFzayB8fCAoUmVzdWx0TWFzayA9IHt9KSk7XG4gICAgLy8gIGNvbnN0IHEgPSBSZWZlcmVuY2VUeXBlSWRzLk9yZ2FuaXplcztcbiAgICBmdW5jdGlvbiByZXNvbHZlTm9kZUlkKG5vZGVJZExpa2UpIHtcbiAgICAgICAgc3dpdGNoIChub2RlSWRMaWtlKSB7XG4gICAgICAgICAgICBjYXNlIFwiT3JnYW5pemVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9yZ2FuaXplc1JlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNQcm9wZXJ0eVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNQcm9wZXJ0eVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDb21wb25lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzQ29tcG9uZW50UmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc0NoaWxkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NoaWxkUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1N1YnR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzU3VidHlwZVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNUeXBlRGVmaW5pdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNUeXBlRGVmaW5pdGlvblJlZk5vZGVJZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGdldEljb24gPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVmZXJlbmNlLm5vZGVDbGFzcykge1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBPcmdhbml6ZXNSZWZOb2RlSWQpIDtcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnR5cGVEZWZpbml0aW9uID09PSBGb2xkZXJUeXBlIHx8IHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IFwiaT02MVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtZm9sZGVyXCIsIGNvbG9yOiBcInJnYmEoNjEsIDYwLCA0LCAwLjUyNSlcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJTZWFHcmVlblwiIH07XG4gICAgICAgICAgICBjYXNlIFwiVmFyaWFibGVcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzQ29tcG9uZW50UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiU3RlZWxCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzUHJvcGVydHlSZWZOb2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJEb2RnZXJCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiTWV0aG9kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1jb2dcIiwgY29sb3I6IFwiU2FuZHlCcm93blwiIH07XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0VHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiBcIkRhcmtPcmFuZ2VcIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtc2xpZGVyc1wiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXF1ZXN0aW9uXCIsIGNvbG9yOiBcImdyZXlcIiB9O1xuICAgIH07XG5cbiAgICBjb25zdCBicm93c2UgPSAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG5vZGVJZCwgdGVtcGxhdGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vYnJvd3NlYDtcbiAgICAgICAgY29uc3QgYnJvd3NlRGVzY3JpcHRpb24gPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRlbXBsYXRlKSwgeyBub2RlSWQsIHJlc3VsdE1hc2s6IDYzIH0pO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBicm93c2VEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hpbmcgZmFpbGVkIHdpdGggZXJyb3JcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzOiBbXSB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hlZCA6IFwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB5aWVsZCBkYXRhLmpzb24oKTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IHJlc3BvbnNlLmJyb3dzZVJlc3VsdC5yZWZlcmVuY2VzIHx8IFtdO1xuICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZTEgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc0NoaWxkXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5WYXJpYWJsZSB8IE5vZGVDbGFzcy5PYmplY3QgfCBOb2RlQ2xhc3MuTWV0aG9kLFxuICAgICAgICAvLyAgTm9kZUNsYXNzLk9iamVjdFR5cGUgfFxuICAgICAgICAvLyAgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLkRhdGFUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlZpZXcsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgY29uc3QgdGVtcGxhdGUyID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJPcmdhbml6ZXNcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCBpbnRlcm5hbFZlcmlmeSA9ICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgJGlucHV0RWxlbWVudCwgJGluZm8pID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgY29uc3Qgbm9kZUlkID0gJGlucHV0RWxlbWVudC52YWwoKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKGAke3Jvb3R9L2NoZWNrTm9kZUlkYCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzZXROb3RpZmljYXRpb24gPSAodGV4dCwgY2xhc3NOYW1lKSA9PiB7XG4gICAgICAgICAgICAkaW5mby50ZXh0KHRleHQpLmFkZENsYXNzKFwic3RlcmZpdmUtaW5mb1wiKS5hZGRDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgJGluZm8uc2hvdygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgJGluZm8ucmVtb3ZlQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICAkaW5mby5oaWRlKCk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QganNvbiA9ICh5aWVsZCBkYXRhLmpzb24oKSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICAvLyBkbyBzb21ldGhpbmc7XG4gICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCIhIWZhaWx1cmUhIVwiICsgbm9kZUlkLCBcImZhaWx1cmVcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoanNvbi5zdGF0dXNDb2RlLm1hdGNoKC9Hb29kLykpIHtcbiAgICAgICAgICAgICAgICAvLyBkbyBzb21ldGhpbmdcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChqc29uLm5vZGVBZGRyZXNzU3RyaW5nKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiR29vZFwiLCBcIm9rXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoYCR7bm9kZUlkfWApO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihgJHtqc29uLnN0YXR1c0NvZGV9ICR7ZGF0YS5zdGF0dXNUZXh0fWAsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGZldGNoQ2hpbGRyZW4oJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTEpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MiA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMik7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFsuLi5icm93c2VSZXN1bHQxLnJlZmVyZW5jZXMsIC4uLmJyb3dzZVJlc3VsdDIucmVmZXJlbmNlc10sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgdGVtcGxhdGVTVCA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzU3VidHlwZVwiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8IE5vZGVDbGFzcy5PYmplY3RUeXBlIHwgTm9kZUNsYXNzLkRhdGFUeXBlIHwgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBmdW5jdGlvbiBmZXRjaFN1YnR5cGVzKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGVTVCk7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3NlUmVzdWx0MTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG1ha2VFbGVtZW50ID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAoIXJlZmVyZW5jZSkge1xuICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8bGk+PGkgY2xhc3M9XCJmYSBmYS1lcnJvclwiIHN0eWxlPVwiY29sb3I6cmVkO1wiPjwvaT5ubyByZWZlcmVuY2UgITx1bD48L3VsPjwvbGk+YCk7XG4gICAgICAgICAgICByZXR1cm4gJGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbiA9IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgdCA9ICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHsgaWNvbiwgY29sb3IgfSA9IGdldEljb24ocmVmZXJlbmNlKTtcbiAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8bGk+PGkgY2xhc3M9XCJmYSAke2ljb259XCIgc3R5bGU9XCJjb2xvcjoke2NvbG9yfTtcIj48L2k+ICR7dH08dWw+PC91bD48L2xpPmApO1xuICAgICAgICAkZWxlbWVudC5hZGRDbGFzcyhcImV4cGFuZGFibGVcIik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJ2YWx1ZVwiLCBuKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInJlZmVyZW5jZVwiLCByZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gJGVsZW1lbnQ7XG4gICAgfTtcbiAgICBjb25zdCBkZWNsYXJlTm9kZUJyb3dzZXJXaWRnZXQgPSAoKSA9PiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBbIFRlbXBlcmF0dXJlICBdXG4gICAgICAgICAqICAgKCB0b29sdGlwIDogKC9PYmplY3RzL015U2Vuc29yKSAobnM9MTtzPVRlbXBlcmF0dXJlKSlcbiAgICAgICAgICogWyArIFtGb2xkZXJdIE9iamVjdHNdXG4gICAgICAgICAqIFsgICAgIFtPYmplY3RdIE15U2Vuc29yXVxuICAgICAgICAgKiBbICAgICAoICkgW1ZhcmlhYmxlXSBUZW1wZXJhdHVyZV1cbiAgICAgICAgICovXG4gICAgICAgICQud2lkZ2V0KFwic3RlcmZpdmUubm9kZUJyb3dzZXJcIiwge1xuICAgICAgICAgICAgLyogZGVmYXVsdCBvcHRpb25zICovXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiAoKSA9PiAoeyBlbmRwb2ludDogXCJvcGMudGNwOi8vb3BjdWFkZW1vLnN0ZXJmaXZlLmNvbToyNjU0M1wiIH0pLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZTogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgYnJvd3NlTmFtZTogeyBuYW1lc3BhY2VJbmRleDogMCwgbmFtZTogXCJPYmplY3RzXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgbm9kZUNsYXNzOiBcIk9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBub2RlSWQ6IFwibnM9MDtpPTg1XCIsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB7IHRleHQ6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGVEZWZpbml0aW9uOiBGb2xkZXJUeXBlLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgICAgICBiYXNlVXJsOiBcIlwiLFxuICAgICAgICAgICAgICAgIGlzVHlwZVJlZjogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzb2x2ZVBhcmVudE5vZGUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB0eXBlb2YgdGhhdC5vcHRpb25zLnBhcmVudE5vZGUgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlKCkgOiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geWllbGQgYTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldCgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlUGFyZW50Tm9kZSgpLnRoZW4oKHBhcmVudE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBtYWtlRWxlbWVudChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5hcHBlbmQoJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LmN1cnJlbnRQYXJlbnQgPSBwYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmlmeSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgYmFzZVVybDogdGhhdC5vcHRpb25zLmJhc2VVcmwsXG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50OiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGludGVybmFsVmVyaWZ5KGRhdGEsIHRoYXQuJGlucHV0LCB0aGF0LiRpbmZvKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfY3JlYXRlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF9mZXRjaERhdGFGb3JOb2RlKCRub2RlLCBmZXRjaEZ1bmMsIGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImZldGNoZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgZmV0Y2hlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG5vZGUuaGFzQ2xhc3MoXCJsb2FkaW5nXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhbHJlYWR5IGxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuYWRkQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuYXBwZW5kKCc8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPjwvZGl2PicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyByZWZlcmVuY2VzIH0gPSB5aWVsZCBmZXRjaEZ1bmMoJG5vZGUsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIHJlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5maWx0ZXIgJiYgIXRoYXQub3B0aW9ucy5maWx0ZXIocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBtYWtlRWxlbWVudChyZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmFkZENsYXNzKFwiZmV0Y2hlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmFwcGVuZChgPGxpPmVycm9yICR7ZXJyLm1lc3NhZ2V9PC9saT5gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVyclwiLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuZmluZChcIi5zcGlubmVyXCIpLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUucmVtb3ZlQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQgPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8gPSAkKFwiPGRpdi8+XCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFkZENsYXNzKFwic3RlcmZpdmUtY29tYm8tYm94XCIpO1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZXBsYWNlV2l0aCh0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cCA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJpbnB1dC1ncm91cFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5wdXRHcm91cCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kaW5wdXQpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4gPSAkKGA8YnV0dG9uPjxpIGNsYXNzPVwiZmEgZmEtc2l0ZW1hcFwiPjwvaT48L2J1dHRvbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiR0b2dnbGVUcmVlQnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0b2dnbGVUcmVlQnRuLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGRyb3Bkb3duLmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyZWUgd2lkZ2V0IGlzIGdvaW5nIHRvIGJlY29tZSB2aXNpYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnJlc29sdmVQYXJlbnROb2RlKCkudGhlbigocGFyZW50Tm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50Tm9kZSAhPT0gdGhhdC5jdXJyZW50UGFyZW50IHx8ICgoX2EgPSB0aGF0LmN1cnJlbnRQYXJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5ub2RlSWQpICE9PSBwYXJlbnROb2RlLm5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4gPSAkKGA8YnV0dG9uPjxpIGNsYXNzPVwiZmEgZmEtZmxhc2tcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kdmVyaWZ5QnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIsIFwiZW50ZXIgYSBub2RlSWQgb3IgYSBicm93c2VQYXRoIFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5mbyA9ICQoYDxkaXYgY2xhc3M9XCJpbmZvLXRleHRcIj48L2Rpdj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgYmFzZVVybDogdGhhdC5vcHRpb25zLmJhc2VVcmwsXG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50OiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93biA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJzdGVyZml2ZS1kcm9wZG93blwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGluZm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRkcm9wZG93bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZSA9ICQoYDx1bCBjbGFzcz1cInN0ZXJmaXZlLXRyZWVcIj48L3VsPmApLmFwcGVuZFRvKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlV2lkdGggPSAyMDsgLy8gU2V0IHdpZHRoIG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZUhlaWdodCA9IDIwOyAvLyBTZXQgaGVpZ2h0IG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3MgPSAkKHRoaXMpLm9mZnNldCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnBhZ2VYID49IGVsZW1lbnRQb3MubGVmdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWCA8PSBlbGVtZW50UG9zLmxlZnQgKyBiZWZvcmVXaWR0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWSA+PSBlbGVtZW50UG9zLnRvcCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWSA8PSBlbGVtZW50UG9zLnRvcCArIGJlZm9yZUhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGxpLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludDogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludCA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50KCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmID0gIXRoYXQub3B0aW9ucy5pc1R5cGVSZWYgPyBmZXRjaENoaWxkcmVuIDogZmV0Y2hTdWJ0eXBlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZmV0Y2hEYXRhRm9yTm9kZSgkbGksIGYsIGRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIgRmV0Y2hpbmcgZG9uZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXJrIGFzIGV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9nZ2xlIGl0cyBleHBhbmRlZC9jb2xsYXBzZWQgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkudG9nZ2xlQ2xhc3MoXCJleHBhbmRhYmxlIGV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJGxpLmNoaWxkcmVuKFwidWxcIikuY2hpbGRyZW4oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCBleHBhbmRhYmxlIGFuZCBleHBhbmRlZCBjbGFzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnRvZ2dsZUNsYXNzKFwiZXhwYW5kYWJsZSBleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAkbGkuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gJGxpLmRhdGEoXCJyZWZlcmVuY2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmlzU2VsZWN0YWJsZSAmJiAhdGhhdC5vcHRpb25zLmlzU2VsZWN0YWJsZShyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuZGF0YShcInJlZmVyZW5jZVwiLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzcGxheU5hbWUgPSAoKF9hID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgKChfYiA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSBgWyR7ZGlzcGxheU5hbWV9XSgke3ZhbHVlfSlgO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudmFsKGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBjbGlja2luZyBvdXRzaWRlIHRoZSBwYWdlIHdpbGwgaGlkZSB0aGUgZHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgaWYgKCEkKGV2ZW50LnRhcmdldCkuY2xvc2VzdCh0aGF0LiRjb21ibykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBSRUQubm9kZXMucmVnaXN0ZXJUeXBlKFwiT3BjVWEtQ2xpZW50Mi1Xcml0ZVwiLCB7XG4gICAgICAgIGNhdGVnb3J5OiBcIm9wY3VhXCIsXG4gICAgICAgIGNvbG9yOiBcIiNDMERFRURcIixcbiAgICAgICAgYWxpZ246IFwicmlnaHRcIixcbiAgICAgICAgaWNvbjogXCIuLi8uLi9pY29ucy9vcGN1YW5vZGVMb2dvLnBuZ1wiLFxuICAgICAgICBwYWxldHRlTGFiZWw6IFwid3JpdGVcIixcbiAgICAgICAgZGVmYXVsdHM6IHtcbiAgICAgICAgICAgIGlucHV0czogeyB2YWx1ZTogMSB9LFxuICAgICAgICAgICAgb3V0cHV0OiB7IHZhbHVlOiA0IH0sXG4gICAgICAgICAgICAvLyBDb21tb25cbiAgICAgICAgICAgIG5hbWU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIGVuZHBvaW50OiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogdHJ1ZSwgdHlwZTogXCJPcGNVYS1FbmRwb2ludDJcIiB9LFxuICAgICAgICAgICAgYXR0cmlidXRlSWQ6IHsgdmFsdWU6IFwiVmFsdWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIG5vZGVJZDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGlucHV0czogMSxcbiAgICAgICAgb3V0cHV0czogMSxcbiAgICAgICAgbGFiZWwoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lIHx8IFwiT1BDVUEgQ2xpZW50IFdyaXRlXCI7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsU3R5bGUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lID8gXCJub2RlX2xhYmVsX2l0YWxpY1wiIDogXCJcIjtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0cHJlcGFyZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzO1xuICAgICAgICAgICAgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0KCk7XG4gICAgICAgICAgICBub2RlLmlucHV0cyA9IDE7XG4gICAgICAgICAgICBjb25zdCAkbm9kZUlkID0gJChcIiNub2RlLWlucHV0LW5vZGVJZFwiKTtcbiAgICAgICAgICAgICRub2RlSWQubm9kZUJyb3dzZXIoe1xuICAgICAgICAgICAgICAgIGlzU2VsZWN0YWJsZShub2RlRGVzYykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIlZhcmlhYmxlXCI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRzYXZlKCkgeyB9LFxuICAgIH0pO1xuXG59KSgpOyJdfQ==
|
9
9
|
</script>
|
10
10
|
<script type="text/x-red" data-template-name="OpcUa-Client2-Write">
|
11
11
|
<h3>OpcUa Write</h3>
|