### SYNC-TRANSFER 3/5 -- mit sync-entpacken.bat entpacken ### Base64 - NICHT von Hand bearbeiten. ### FILE: js/import_excel.js | 91225 Ly8gPT09IGltcG9ydC9leGNlbC1pbXBvcnQuanMgPT09Ci8vIEV4Y2VsLUltcG9ydC1XaXphcmQg ZnVlciBwbGFudW5nLmpzb24gKyBwZXJzb25lbi5qc29uLiBOdXR6dCBTaGVldEpTCi8vICh4bHN4 LmZ1bGwubWluLmpzLCBsb2thbCBpbiBWSTMvKS4gRHJlaS1QaGFzZW4tU2NocmVpYnZvcmdhbmcg bWl0Ci8vIEF1dG8tQmFja3VwIHZvciBQaGFzZSAxLgoKaW1wb3J0IHsgWiB9IGZyb20gJy4vY29y ZV9zdGF0ZS5qcyc7CmltcG9ydCB7IGVzY2FwZUhUTUwsIGVzY2FwZUF0dHIsIGRhdHVtU3RyLCBw aWRLZXkgfSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CmltcG9ydCB7IGFwaVBvc3QsIGFwaVB1dCB9 IGZyb20gJy4vY29yZV9hcGkuanMnOwppbXBvcnQgeyB0b2FzdCwgbW9kYWxaZWlnZW4sIG1vZGFs U2NobGllc3NlbiwgYmVzdGFldGlnZW4sIGhpbGZlSWNvbiB9IGZyb20gJy4vdWlfZGlhbG9nLmpz JzsKaW1wb3J0IHsgYWRtaW5MaXN0ZW5Ob3JtYWxpc2llcmVuIH0gZnJvbSAnLi9jb3JlX2RhdGVu TGFkZW4uanMnOwppbXBvcnQgeyB0YWdlRXJ6ZXVnZW4sIHRhZ0luZm9zQmVyZWNobmVuLCBncmlk UmVuZGVybiwga29wZlJlbmRlcm4gfSBmcm9tICcuL2dyaWRfcmVuZGVyLmpzJzsKaW1wb3J0IHsg aXN0Q29kZUFrdGl2IH0gZnJvbSAnLi9hZG1pbl9jb2Rlcy5qcyc7CmltcG9ydCB7IG1haWxUcmln Z2VyRmV1ZXJuIH0gZnJvbSAnLi9lbWFpbF92b3JsYWdlbi5qcyc7CgogICAgLy8gPT09PT0gRXhj ZWwtSW1wb3J0ZXIgPT09PT0KCiAgICAvLyBTdGF0ZSBkZXMgSW1wb3J0ZXJzIHp3aXNjaGVuIERh dGVpLUF1c3dhaGwgdW5kIGVpZ2VudGxpY2hlbSBJbXBvcnQuCiAgICAvLyBXaXJkIGJlaW0gV2Vj aHNlbCBkZXIgRGF0ZWkgdmVyd29yZmVuLgogICAgdmFyIGltcFN0YXRlID0gbnVsbDsKCiAgICAv LyBPcHRpbWlzdGlzY2hlIE5lYmVubGFldWZpZ2tlaXQ6IFZlcnNpb24gKG10aW1lLVRpY2tzKSB2 b24gcGxhbnVuZy5qc29uLAogICAgLy8gYXVmIGRlciBkZXIgVHJhbnNmb3JtIGF1ZmdlYmF1dCBo YXQuIFdpcmQgYmVpbSBmcmlzY2hlbiBHRVQgdW5taXR0ZWxiYXIKICAgIC8vIHZvciBkZW0gVHJh bnNmb3JtIGdlc2V0enQgdW5kIGJlaW0gYWJzY2hsaWVzc2VuZGVuIFBVVCBhbHMKICAgIC8vIElm LVBsYW51bmctVmVyc2lvbiBtaXRnZXNjaGlja3QuIEhhdCBlaW4gYW5kZXJlciBOdXR6ZXIgd2Fl aHJlbmQgZGVzCiAgICAvLyBJbXBvcnRzIGdlc2NocmllYmVuLCBsZWhudCBkZXIgU2VydmVyIG1p dCA0MDkgYWIgc3RhdHQgZGVzc2VuIEFlbmRlcnVuZwogICAgLy8genUgdWViZXJzY2hyZWliZW4u IG51bGwgPSBTZXJ2ZXIgbGllZmVydCBrZWluZSBWZXJzaW9uIChBYndhZXJ0cy1Lb21wYXQsCiAg ICAvLyBkYW5uIGtlaW4gQ2hlY2spLgogICAgdmFyIGltcExldHp0ZVZlcnNpb24gPSBudWxsOwoK ICAgIC8vIEdFVCAvYXBpL3BsYW51bmcgaW5rbC4gVmVyc2lvbnMtSGVhZGVyLiBhcGkoKSB2ZXJ3 aXJmdCBIZWFkZXIsIGRhaGVyCiAgICAvLyByYXcgZmV0Y2guCiAgICBmdW5jdGlvbiBpbXBHZXRQ bGFudW5nTWl0VmVyc2lvbigpIHsKICAgICAgICByZXR1cm4gZmV0Y2goJy9hcGkvcGxhbnVuZycp LnRoZW4oZnVuY3Rpb24ocikgewogICAgICAgICAgICBpZiAoIXIub2spIHRocm93IG5ldyBFcnJv cignSFRUUCAnICsgci5zdGF0dXMpOwogICAgICAgICAgICBpbXBMZXR6dGVWZXJzaW9uID0gci5o ZWFkZXJzLmdldCgnWC1QbGFudW5nLVZlcnNpb24nKSB8fCBudWxsOwogICAgICAgICAgICByZXR1 cm4gci5qc29uKCk7CiAgICAgICAgfSk7CiAgICB9CgogICAgLy8gUmFuZ29yZG51bmcgYXVzIGVp bmVtIEV4Y2VsLVplbGx3ZXJ0IGV4dHJhaGllcmVuLiBBa3plcHRpZXJ0ICIjMTExIiwKICAgIC8v ICIxMTEiLCByZWluZSBaYWhsZW4sIGFiZXIgYXVjaCBUZXh0IHdpZSAiIzQyIFZlcnRyZXR1bmci IChlcnN0ZSBaaWZmZXJuLQogICAgLy8gZ3J1cHBlIHdpcmQgZ2Vub21tZW4pLiBSdWVja2dhYmU6 IGludGVnZXIgb2RlciBudWxsIHdlbm4gbmljaHRzIGxlc2Jhci4KICAgIGZ1bmN0aW9uIGltcFJh bmdQYXJzZW4ocmF3KSB7CiAgICAgICAgdmFyIHMgPSBTdHJpbmcocmF3ID09IG51bGwgPyAnJyA6 IHJhdykudHJpbSgpOwogICAgICAgIGlmICghcykgcmV0dXJuIG51bGw7CiAgICAgICAgdmFyIG0g PSBzLm1hdGNoKC8oXGQrKS8pOwogICAgICAgIHJldHVybiBtID8gcGFyc2VJbnQobVsxXSwgMTAp IDogbnVsbDsKICAgIH0KCiAgICAvLyBFeGNlbC1TZXJpYWwtTnVtYmVyIC0+IFlZWVktTU0tREQu IEV4Y2VsLUVwb2NoZSBpc3QgMTg5OS0xMi0zMAogICAgLy8gKGtvbXBlbnNpZXJ0IGRpZSBQc2V1 ZG8tMTkwMC1TY2hhbHRqYWhyLUJlc29uZGVyaGVpdCkuCiAgICBmdW5jdGlvbiBpbXBFeGNlbFNl cmlhbFRvSXNvKHNlcmlhbCkgewogICAgICAgIHZhciBuID0gcGFyc2VGbG9hdChzZXJpYWwpOwog ICAgICAgIGlmIChpc05hTihuKSkgcmV0dXJuIG51bGw7CiAgICAgICAgdmFyIG1zID0gKG4gLSAy NTU2OSkgKiA4NjQwMDAwMDsgIC8vIDI1NTY5ID0gVGFnZSB2b24gMTg5OS0xMi0zMCB6dSAxOTcw LTAxLTAxCiAgICAgICAgdmFyIGQgPSBuZXcgRGF0ZShtcyk7CiAgICAgICAgaWYgKGlzTmFOKGQu Z2V0VGltZSgpKSkgcmV0dXJuIG51bGw7CiAgICAgICAgLy8gVVRDLURhdHVtIHp1cnVlY2sgYXVm IGxva2FsZSBEYXR1bXN0ZWlsZSB1bXJlY2huZW4gKEV4Y2VsLVNlcmlhbCBpc3QKICAgICAgICAv LyBkYXR1bXNsb3Mg4oCUIHdpciBuZWhtZW4gZGFzIHJlaW5lIERhdHVtIG9obmUgWmVpdHpvbmUp LgogICAgICAgIHZhciB5ID0gZC5nZXRVVENGdWxsWWVhcigpLCBtID0gZC5nZXRVVENNb250aCgp ICsgMSwgZGQgPSBkLmdldFVUQ0RhdGUoKTsKICAgICAgICB2YXIgcGFkID0gZnVuY3Rpb24oeCkg eyByZXR1cm4gKHggPCAxMCA/ICcwJyA6ICcnKSArIHg7IH07CiAgICAgICAgcmV0dXJuIHkgKyAn LScgKyBwYWQobSkgKyAnLScgKyBwYWQoZGQpOwogICAgfQoKICAgIC8vIEhhdXB0ZWluc3RpZWc6 IERhdGVpIC0+IFBhcnNlIC0+IEFuYWx5c2UgLT4gU3RhdHVzLUthcnRlIHJlbmRlcm4uCiAgICBm dW5jdGlvbiBpbXBEYXRlaVZlcmFyYmVpdGVuKGZpbGUpIHsKICAgICAgICB2YXIgc3RhdHVzRWwg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1wLXN0YXR1cycpOwogICAgICAgIHZhciBuYW1l RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1wLWRhdGVpLW5hbWUnKTsKICAgICAgICBp ZiAobmFtZUVsKSBuYW1lRWwudGV4dENvbnRlbnQgPSBmaWxlLm5hbWUgKyAnICgnICsgTWF0aC5y b3VuZChmaWxlLnNpemUgLyAxMDI0KSArICcgS0IpJzsKICAgICAgICBzdGF0dXNFbC5pbm5lckhU TUwgPSAnPGRpdiBjbGFzcz0iaW1wLXN0YXR1cy1rYXJ0ZSI+RGF0ZWkgd2lyZCBnZWxlc2VuIOKA pjwvZGl2Pic7CiAgICAgICAgaW1wU3RhdGUgPSBudWxsOwoKICAgICAgICBpZiAodHlwZW9mIFhM U1ggPT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgIHN0YXR1c0VsLmlubmVySFRNTCA9ICc8 ZGl2IGNsYXNzPSJpbXAtc3RhdHVzLWthcnRlIiBzdHlsZT0iYm9yZGVyLWNvbG9yOnZhcigtLWZh cmJlLWZlaGxlcikiPjxiPkZlaGxlcjo8L2I+IHhsc3gtQmlibGlvdGhlayBuaWNodCBnZWxhZGVu LiBCaXR0ZSBTZWl0ZSBuZXUgbGFkZW4uPC9kaXY+JzsKICAgICAgICAgICAgcmV0dXJuOwogICAg ICAgIH0KCiAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgICAgcmVh ZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAg ICAgIHN0YXR1c0VsLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJpbXAtc3RhdHVzLWthcnRlIj5F eGNlbCB3aXJkIGFuYWx5c2llcnQg4oCmPC9kaXY+JzsKICAgICAgICAgICAgICAgIHNldFRpbWVv dXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsgaW1wQW5hbHlzaWVyZW4o ZS50YXJnZXQucmVzdWx0LCBzdGF0dXNFbCk7IH0KICAgICAgICAgICAgICAgICAgICBjYXRjaCAo ZXJyKSB7IGltcEZlaGxlcihzdGF0dXNFbCwgZXJyKTsgfQogICAgICAgICAgICAgICAgfSwgNDAp OwogICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsgaW1wRmVobGVyKHN0YXR1c0VsLCBlcnIpOyB9 CiAgICAgICAgfTsKICAgICAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBpbXBGZWhs ZXIoc3RhdHVzRWwsIG5ldyBFcnJvcignRGF0ZWkga29ubnRlIG5pY2h0IGdlbGVzZW4gd2VyZGVu LicpKTsgfTsKICAgICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7CiAgICB9Cgog ICAgZnVuY3Rpb24gaW1wRmVobGVyKHN0YXR1c0VsLCBlcnIpIHsKICAgICAgICBjb25zb2xlLmVy cm9yKCdJbXBvcnQtRmVobGVyOicsIGVycik7CiAgICAgICAgc3RhdHVzRWwuaW5uZXJIVE1MID0g JzxkaXYgY2xhc3M9ImltcC1zdGF0dXMta2FydGUiIHN0eWxlPSJib3JkZXItY29sb3I6dmFyKC0t ZmFyYmUtZmVobGVyKSI+JyArCiAgICAgICAgICAgICc8Yj5GZWhsZXIgYmVpbSBJbXBvcnQ6PC9i PiAnICsgZXNjYXBlSFRNTChlcnIubWVzc2FnZSB8fCBTdHJpbmcoZXJyKSkgKyAnPC9kaXY+JzsK ICAgIH0KCiAgICBmdW5jdGlvbiBpbXBBbmFseXNpZXJlbihhcnJheUJ1ZmZlciwgc3RhdHVzRWwp IHsKICAgICAgICB2YXIgd2IgPSBYTFNYLnJlYWQoYXJyYXlCdWZmZXIsIHsgdHlwZTogJ2FycmF5 JywgY2VsbERhdGVzOiBmYWxzZSwgY2VsbFN0eWxlczogZmFsc2UsIHNoZWV0Um93czogMjAwIH0p OwogICAgICAgIHZhciBzaGVldE5hbWUgPSB3Yi5TaGVldE5hbWVzLmluZGV4T2YoJ1BsYW51bmcn KSA+PSAwID8gJ1BsYW51bmcnIDogd2IuU2hlZXROYW1lc1swXTsKICAgICAgICB2YXIgc2hlZXQg PSB3Yi5TaGVldHNbc2hlZXROYW1lXTsKICAgICAgICBpZiAoIXNoZWV0KSB0aHJvdyBuZXcgRXJy b3IoJ0tlaW4gU2hlZXQgIlBsYW51bmciIGluIGRlciBEYXRlaS4nKTsKCiAgICAgICAgLy8gUmFu Z2UgaW4gYW9hIChhcnJheSBvZiBhcnJheXMpIGxlc2VuLCBkYW1pdCB3aXIgZ2V6aWVsdCBhdWYg WmVpbGVuL1NwYWx0ZW4genVncmVpZmVuLgogICAgICAgIHZhciBhb2EgPSBYTFNYLnV0aWxzLnNo ZWV0X3RvX2pzb24oc2hlZXQsIHsgaGVhZGVyOiAxLCBibGFua3Jvd3M6IHRydWUsIHJhdzogdHJ1 ZSwgZGVmdmFsOiAnJyB9KTsKCiAgICAgICAgLy8gRGF0dW1zLVNwYWx0ZW4gYXVzIFplaWxlIDEg KEluZGV4IDApOiBhYiBTcGFsdGUgSiA9IEluZGV4IDkuCiAgICAgICAgdmFyIHJvdzEgPSBhb2Fb MF0gfHwgW107CiAgICAgICAgdmFyIGRhdHVtU3BhbHRlbiA9IFtdOyAgLy8gW3sgaWR4OiA5LCBk YXR1bTogJzIwMjYtMDEtMDEnIH0sIC4uLl0KICAgICAgICBmb3IgKHZhciBjID0gOTsgYyA8IHJv dzEubGVuZ3RoOyBjKyspIHsKICAgICAgICAgICAgdmFyIGlzbyA9IGltcEV4Y2VsU2VyaWFsVG9J c28ocm93MVtjXSk7CiAgICAgICAgICAgIGlmIChpc28pIGRhdHVtU3BhbHRlbi5wdXNoKHsgaWR4 OiBjLCBkYXR1bTogaXNvIH0pOwogICAgICAgIH0KCiAgICAgICAgLy8gUGVyc29uZW4gZmluZGVu OiBhYiBaZWlsZSAyMSAoSW5kZXggMjApLCBOYWNobmFtZSBpbiBTcGFsdGUgQyAoSW5kZXggMiks CiAgICAgICAgLy8gc3RvcHBlIGJlaSBlcnN0ZW4gNSBsZWVyZW4gWmVpbGVuIGluIEZvbGdlLgog ICAgICAgIHZhciBleGNlbFBlcnNvbmVuID0gW107ICAvLyBbeyB6ZWlsZUlkeCwgbmFjaG5hbWUs IG9lLCBncnVwcGUsIGRpZW5zdG51bW1lciwgdGVsZWZvbiwgemVsbGVuOiB7ZGF0dW06Y29kZX0s IGtvbW1lbnRhcmU6IHtkYXR1bTp0ZXh0fSB9XQogICAgICAgIHZhciBsZWVyID0gMDsKICAgICAg ICBmb3IgKHZhciByID0gMjA7IHIgPCBhb2EubGVuZ3RoOyByKyspIHsKICAgICAgICAgICAgdmFy IHJvdyA9IGFvYVtyXSB8fCBbXTsKICAgICAgICAgICAgdmFyIG5hbWUgPSBTdHJpbmcocm93WzJd IHx8ICcnKS50cmltKCk7CiAgICAgICAgICAgIGlmICghbmFtZSkgeyBsZWVyKys7IGlmIChsZWVy ID49IDUpIGJyZWFrOyBjb250aW51ZTsgfQogICAgICAgICAgICBsZWVyID0gMDsKICAgICAgICAg ICAgdmFyIGVpbnRyYWVnZSA9IHt9OwogICAgICAgICAgICBkYXR1bVNwYWx0ZW4uZm9yRWFjaChm dW5jdGlvbihkcykgewogICAgICAgICAgICAgICAgdmFyIHYgPSByb3dbZHMuaWR4XTsKICAgICAg ICAgICAgICAgIGlmICh2ID09PSBudWxsIHx8IHYgPT09IHVuZGVmaW5lZCkgcmV0dXJuOwogICAg ICAgICAgICAgICAgdiA9IFN0cmluZyh2KS50cmltKCk7CiAgICAgICAgICAgICAgICBpZiAoIXYp IHJldHVybjsKICAgICAgICAgICAgICAgIGVpbnRyYWVnZVtkcy5kYXR1bV0gPSB2OwogICAgICAg ICAgICB9KTsKICAgICAgICAgICAgZXhjZWxQZXJzb25lbi5wdXNoKHsKICAgICAgICAgICAgICAg IHplaWxlSWR4OiByLAogICAgICAgICAgICAgICAgbmFjaG5hbWU6IG5hbWUsCiAgICAgICAgICAg ICAgICBvZTogICAgICAgU3RyaW5nKHJvd1szXSB8fCAnJykudHJpbSgpLAogICAgICAgICAgICAg ICAgZ3J1cHBlOiAgIFN0cmluZyhyb3dbNF0gfHwgJycpLnRyaW0oKSwKICAgICAgICAgICAgICAg IC8vIFNwYWx0ZSBGIGVudGhhZWx0IGRpZSBSYW5nb3JkbnVuZyAoei5CLiAiIzExMSIpLiBXaXIg ZnVlaHJlbgogICAgICAgICAgICAgICAgLy8gc293b2hsIGRlbiBSb2h0ZXh0IGFscyBhdWNoIGRp ZSBnZXBhcnN0ZSBaYWhsIG1pdCwgZGFtaXQgZGVyCiAgICAgICAgICAgICAgICAvLyBNYXBwaW5n LURpYWxvZyBkZW4gT3JpZ2luYWx3ZXJ0IGFuemVpZ2VuIGthbm4uCiAgICAgICAgICAgICAgICBy YW5nUm9oOiAgU3RyaW5nKHJvd1s1XSB8fCAnJykudHJpbSgpLAogICAgICAgICAgICAgICAgcmFu ZzogICAgIGltcFJhbmdQYXJzZW4ocm93WzVdKSwKICAgICAgICAgICAgICAgIHRlbGVmb246ICBT dHJpbmcocm93WzZdIHx8ICcnKS50cmltKCksCiAgICAgICAgICAgICAgICBlaW50cmFlZ2U6IGVp bnRyYWVnZQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIC8vIEtvbW1lbnRhcmUg YXVzIGRlbiBTaGVldC1Db21tZW50cyBleHRyYWhpZXJlbi4gU2hlZXRKUyBzcGVpY2hlcnQKICAg ICAgICAvLyBLb21tZW50YXJlIGFuIHNoZWV0W3plbGxBZGRyXS5jOyBkYXMgZnVua3Rpb25pZXJ0 IG51ciB3ZW5uIGNlbGxTdHlsZXMKICAgICAgICAvLyBvZGVyIGJvb2tGaWxlcyBha3RpdiB3YXJl bi4gRnVlciB4bHNtL3hsc3ggcmVpY2hlbiBTdGFuZGFyZG9wdGlvbmVuLgogICAgICAgIC8vIFdp ciBpdGVyaWVyZW4gYWxsZSBaZWxsZW4gaW0gZ2VsZXNlbmVuIEJlcmVpY2ggdW5kIHNhbW1lbG4g S29tbWVudGFyZS4KICAgICAgICB2YXIga29tbWVudGFyZSA9IHt9OyAgLy8geyB6ZWlsZTogeyBk YXR1bTogWyB7IHRleHQsIGF1dG9yIH0gXSB9IH0KICAgICAgICB2YXIgcmVmID0gc2hlZXRbJyFy ZWYnXTsKICAgICAgICBpZiAocmVmKSB7CiAgICAgICAgICAgIHZhciByYW5nZSA9IFhMU1gudXRp bHMuZGVjb2RlX3JhbmdlKHJlZik7CiAgICAgICAgICAgIGZvciAodmFyIFIgPSAyMDsgUiA8PSBy YW5nZS5lLnIgJiYgUiA8IGFvYS5sZW5ndGg7IFIrKykgewogICAgICAgICAgICAgICAgZm9yICh2 YXIgQyA9IDk7IEMgPD0gcmFuZ2UuZS5jOyBDKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIg YWRkciA9IFhMU1gudXRpbHMuZW5jb2RlX2NlbGwoeyByOiBSLCBjOiBDIH0pOwogICAgICAgICAg ICAgICAgICAgIHZhciB6ZWxsID0gc2hlZXRbYWRkcl07CiAgICAgICAgICAgICAgICAgICAgaWYg KCF6ZWxsIHx8ICF6ZWxsLmMpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIC8vIFBybyBF eGNlbC1Ob3RpeiBFSU4gTGlzdGVuLUVpbnRyYWcgbWl0IGVpZ2VuZW0gQXV0b3Ig4oCUCiAgICAg ICAgICAgICAgICAgICAgLy8gYmVpIG1laHJlcmVuIE5vdGl6ZW4vQW50d29ydGVuICh0aHJlYWRl ZCkgYmxlaWJ0IGRpZQogICAgICAgICAgICAgICAgICAgIC8vIFp1b3JkbnVuZyBlcmhhbHRlbi4g QXV0b3IgYmV2b3J6dWd0IGF1cyBkZW0gTm90aXotQXV0b3ItCiAgICAgICAgICAgICAgICAgICAg Ly8gRmVsZCAoY2MuYSk7IGtsYXNzaXNjaGUgRXhjZWwtTm90aXplbiBiZXR0ZW4gIkF1dG9yOlxu IgogICAgICAgICAgICAgICAgICAgIC8vIHp1c2FldHpsaWNoIGluIGRlbiBUZXh0IGVpbiDigJQg bnVyIEdFTkFVIGRpZXNlcyBQcmFlZml4CiAgICAgICAgICAgICAgICAgICAgLy8gc3RyaXBwZW4g KG5pY2h0IGplZGVzICJXb3J0OiIsIHNvbnN0IHplcmxlZ3QgZXMgei5CLgogICAgICAgICAgICAg ICAgICAgIC8vICJBY2h0dW5nOiAuLi4iKS4gRWluIFplaXRzdGVtcGVsIHdpcmQgYmV3dXNzdCBO SUNIVAogICAgICAgICAgICAgICAgICAgIC8vIGdlc2V0enQg4oCUIEV4Y2VsLU5vdGl6ZW4gbGll ZmVybiBrZWluZW4gdmVybGFlc3NsaWNoZW4uCiAgICAgICAgICAgICAgICAgICAgdmFyIGNsaXN0 ZSA9ICh6ZWxsLmMgfHwgW10pLm1hcChmdW5jdGlvbihjYykgewogICAgICAgICAgICAgICAgICAg ICAgICB2YXIgcmF3ID0gU3RyaW5nKGNjLnQgfHwgJycpOwogICAgICAgICAgICAgICAgICAgICAg ICB2YXIgYXV0b3IgPSBTdHJpbmcoY2MuYSB8fCAnJykudHJpbSgpOwogICAgICAgICAgICAgICAg ICAgICAgICB2YXIgdCA9IHJhdzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG9yICYm IHJhdy5zbGljZSgwLCBhdXRvci5sZW5ndGggKyAxKS50b0xvd2VyQ2FzZSgpID09PSAoYXV0b3Ig KyAnOicpLnRvTG93ZXJDYXNlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBy YXcuc2xpY2UoYXV0b3IubGVuZ3RoICsgMSkucmVwbGFjZSgvXlxzKlxuPy8sICcnKTsKICAgICAg ICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghYXV0b3IpIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZhciBwbSA9IHJhdy5tYXRjaCgvXihbXjpcbl17MSw0MH0pOlxzKlxuLyk7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG0pIHsgYXV0b3IgPSBwbVsxXS50cmltKCk7 IHQgPSByYXcuc2xpY2UocG1bMF0ubGVuZ3RoKTsgfQogICAgICAgICAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHRleHQ6IHQudHJpbSgpLCBhdXRvcjog YXV0b3IgfTsKICAgICAgICAgICAgICAgICAgICB9KS5maWx0ZXIoZnVuY3Rpb24oeCkgeyByZXR1 cm4geC50ZXh0OyB9KTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWNsaXN0ZS5sZW5ndGgpIGNv bnRpbnVlOwogICAgICAgICAgICAgICAgICAgIHZhciBkc3AgPSBkYXR1bVNwYWx0ZW4uZmluZChm dW5jdGlvbih4KSB7IHJldHVybiB4LmlkeCA9PT0gQzsgfSk7CiAgICAgICAgICAgICAgICAgICAg aWYgKCFkc3ApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIGlmICgha29tbWVudGFyZVtS XSkga29tbWVudGFyZVtSXSA9IHt9OwogICAgICAgICAgICAgICAgICAgIGtvbW1lbnRhcmVbUl1b ZHNwLmRhdHVtXSA9IGNsaXN0ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAg ICAgIH0KICAgICAgICBleGNlbFBlcnNvbmVuLmZvckVhY2goZnVuY3Rpb24ocCkgeyBwLmtvbW1l bnRhcmUgPSBrb21tZW50YXJlW3AuemVpbGVJZHhdIHx8IHt9OyB9KTsKCiAgICAgICAgLy8gQWJn bGVpY2g6IFBlcnNvbmVuIHBlciBOYWNobmFtZSBtYXRjaGVuLiBLb252ZW50aW9uOiBXaXIgYmxl bmRlbgogICAgICAgIC8vIG5pZW1hbHMgRGF0ZW4gd2VnLCBzb25kZXJuIHplaWdlbiBLb25mbGlr dGUgc2ljaHRiYXIgYW4gdW5kIGJpZXRlbgogICAgICAgIC8vIE9wdGlvbmVuLiBQYXBpZXJrb3Ji LVBlcnNvbmVuIChnZWxvZXNjaHRBbSBnZXNldHp0KSB0YXVjaGVuIGFsc28KICAgICAgICAvLyBh dWYsIGJla29tbWVuIGFiZXIgZWluZW4gZWlnZW5lbiBTdGF0dXMgYHBhcGllcmtvcmJgIHBsdXMg ZGllCiAgICAgICAgLy8gRGVmYXVsdC1FbXBmZWhsdW5nICJXaWVkZXJoZXJzdGVsbGVuICsgenVv cmRuZW4iLiBNZWhyZGV1dGlna2VpdAogICAgICAgIC8vIHdpcmQgcHJpb3Jpc2llcnQ6IGVpbiBl aW5kZXV0aWdlciBha3RpdmVyIFRyZWZmZXIgc2NobGFlZ3QgZWluZW4KICAgICAgICAvLyBQYXBp ZXJrb3JiLVRyZWZmZXI7IG51ciB3ZW5uIGF1c3NjaGxpZXNzbGljaCBQYXBpZXJrb3JiLVRyZWZm ZXIKICAgICAgICAvLyBleGlzdGllcmVuLCBnaWJ0J3MgZGVuIGBwYXBpZXJrb3JiYC1Lb25mbGlr dC4KICAgICAgICAvLwogICAgICAgIC8vIE5hY2huYW1lLU5vcm1hbGlzaWVydW5nOiBzZW5rdCBF eGNlbC1BZW5kZXJ1bmdlbiBvZGVyIEVuY29kaW5nLQogICAgICAgIC8vIFBhdHplciBhdWYgZWlu ZSBrYW5vbmlzY2hlIEZvcm0uIEJlaXNwaWVsZSBhdXMgZGVtIEJlc3RhbmQ6CiAgICAgICAgLy8g ICAiU2NoaWXDnyIgIC8gIlNjaGllc3MiICAvICJTY2hpZcOfw7giIC8gIlNjaGllw59vZSIgIC0+ ICJzY2hpZXNzIgogICAgICAgIC8vICAgIk3DvGxsZXIiIC8gIk11ZWxsZXIiICAgLyAiTcOcTExF UiIgICAgICAgICAgICAgICAtPiAibXVlbGxlciIKICAgICAgICAvLyBEYW1pdCBncmVpZnQgZGVy IE1hdGNoIGF1Y2ggd2VubiBkYXMgRXhjZWwgVW1sYXV0ZSBvZGVyIGRhcwogICAgICAgIC8vIEVz emV0dCBkdXJjaCBTdWJzdGl0dXRpb25zLVplaWNoZW4gZXJzZXR6dCBoYXQgKGhhZXVmaWcKICAg ICAgICAvLyBiZW9iYWNodGV0OiBvLW1pdC1TdHJpY2ggVSswMEY4IHN0YXR0IMOfKS4KICAgICAg ICBmdW5jdGlvbiBfaW1wTmFtZU5vcm1hbGlzaWVyZW4ocykgewogICAgICAgICAgICBpZiAoIXMp IHJldHVybiAnJzsKICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhzKS5ub3JtYWxpemUoJ05GQycp LnRyaW0oKS50b0xvd2VyQ2FzZSgpCiAgICAgICAgICAgICAgICAucmVwbGFjZSgvw6QvZywgJ2Fl JykucmVwbGFjZSgvw7YvZywgJ29lJykucmVwbGFjZSgvw7wvZywgJ3VlJykKICAgICAgICAgICAg ICAgIC5yZXBsYWNlKC/Dny9nLCAnc3MnKQogICAgICAgICAgICAgICAgLnJlcGxhY2UoL8O4L2cs ICdzcycpICAgLy8gYmVrYW5udGUgRW5jb2RpbmctRmFsbGUgYXVzIGRlbSBMaXZlLVRlc3QKICAg ICAgICAgICAgICAgIC5yZXBsYWNlKC9ccysvZywgJyAnKTsKICAgICAgICB9CiAgICAgICAgLy8g RWRpdGllcmRpc3RhbnogKExldmVuc2h0ZWluKSBmdWVyIGRlbiBUaXBwZmVobGVyLVNjaHV0eiB1 bnRlbi4KICAgICAgICAvLyBLbGVpbiBnZWhhbHRlbiwgRVM1LWtvbXBhdGliZWwuIFp3ZWkgcm9s bGVuZGUgWmVpbGVuIHN0YXR0IHZvbGxlcgogICAgICAgIC8vIE1hdHJpeCDigJQgcmVpY2h0IGZ1 ZXIgTmFjaG5hbWVuLUxhZW5nZW4gdm9lbGxpZy4KICAgICAgICBmdW5jdGlvbiBfaW1wTGV2ZW5z aHRlaW4oYSwgYikgewogICAgICAgICAgICBhID0gYSB8fCAnJzsgYiA9IGIgfHwgJyc7CiAgICAg ICAgICAgIGlmIChhID09PSBiKSByZXR1cm4gMDsKICAgICAgICAgICAgdmFyIGxhID0gYS5sZW5n dGgsIGxiID0gYi5sZW5ndGg7CiAgICAgICAgICAgIGlmICghbGEpIHJldHVybiBsYjsKICAgICAg ICAgICAgaWYgKCFsYikgcmV0dXJuIGxhOwogICAgICAgICAgICB2YXIgdm9yaGVyID0gW10sIGpl dHp0ID0gW10sIGksIGo7CiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPD0gbGI7IGorKykgdm9y aGVyW2pdID0gajsKICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8PSBsYTsgaSsrKSB7CiAgICAg ICAgICAgICAgICBqZXR6dFswXSA9IGk7CiAgICAgICAgICAgICAgICBmb3IgKGogPSAxOyBqIDw9 IGxiOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIga29zdGVuID0gYS5jaGFyQXQoaSAt IDEpID09PSBiLmNoYXJBdChqIC0gMSkgPyAwIDogMTsKICAgICAgICAgICAgICAgICAgICBqZXR6 dFtqXSA9IE1hdGgubWluKGpldHp0W2ogLSAxXSArIDEsIHZvcmhlcltqXSArIDEsIHZvcmhlcltq IC0gMV0gKyBrb3N0ZW4pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChq ID0gMDsgaiA8PSBsYjsgaisrKSB2b3JoZXJbal0gPSBqZXR6dFtqXTsKICAgICAgICAgICAgfQog ICAgICAgICAgICByZXR1cm4gdm9yaGVyW2xiXTsKICAgICAgICB9CiAgICAgICAgdmFyIGJlc3Rh bmROYW1lID0ge307CiAgICAgICAgKFoucGxhbnVuZy5wZXJzb25lbiB8fCBbXSkuZm9yRWFjaChm dW5jdGlvbihwKSB7CiAgICAgICAgICAgIHZhciBuID0gX2ltcE5hbWVOb3JtYWxpc2llcmVuKHAu bmFtZSk7CiAgICAgICAgICAgIGlmICghbikgcmV0dXJuOwogICAgICAgICAgICBpZiAoIWJlc3Rh bmROYW1lW25dKSBiZXN0YW5kTmFtZVtuXSA9IFtdOwogICAgICAgICAgICBiZXN0YW5kTmFtZVtu XS5wdXNoKHApOwogICAgICAgIH0pOwogICAgICAgIC8vIEFrdGl2ZSBCZXN0YW5kc3BlcnNvbmVu IG1pdCBOb3JtYWxmb3JtIGZ1ZXIgZGllIEZ1enp5LUFlaG5saWNoa2VpdHMtCiAgICAgICAgLy8g c3VjaGUuIFBvc2l0aW9uL1RlbGVmb24gdGF1Z2VuIE5JQ0hUIGFscyBad2VpdHNjaGx1ZXNzZWwg KFBvc2l0aW9uCiAgICAgICAgLy8gZHJpZnRldCB6d2lzY2hlbiBFeGNlbCB1bmQgQmVzdGFuZCwg VGVsZWZvbiBpc3QgZWluZSBTY2hpY2h0LVNhbW1lbC0KICAgICAgICAvLyBudW1tZXIpIOKAlCBk YWhlciBUaXBwZmVobGVyLUVya2VubnVuZyB1ZWJlciBkaWUgTmFtZW5zLUVkaXRpZXJkaXN0YW56 LgogICAgICAgIHZhciBha3RpdkJlc3RhbmQgPSAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKQog ICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKHApIHsgcmV0dXJuICFwLmdlbG9lc2NodEFtOyB9 KQogICAgICAgICAgICAubWFwKGZ1bmN0aW9uKHApIHsgcmV0dXJuIHsgcDogcCwgbjogX2ltcE5h bWVOb3JtYWxpc2llcmVuKHAubmFtZSkgfTsgfSk7CiAgICAgICAgdmFyIHBlcnNvbmVuTWF0Y2hl cyA9IGV4Y2VsUGVyc29uZW4ubWFwKGZ1bmN0aW9uKHhwKSB7CiAgICAgICAgICAgIHZhciBrZXkg PSBfaW1wTmFtZU5vcm1hbGlzaWVyZW4oeHAubmFjaG5hbWUpOwogICAgICAgICAgICB2YXIgdHJl ZmZlciAgICAgICA9IGJlc3RhbmROYW1lW2tleV0gfHwgW107CiAgICAgICAgICAgIHZhciBha3Rp dlRyZWZmZXIgID0gdHJlZmZlci5maWx0ZXIoZnVuY3Rpb24ocCkgeyByZXR1cm4gIXAuZ2Vsb2Vz Y2h0QW07IH0pOwogICAgICAgICAgICB2YXIgcGtUcmVmZmVyICAgICA9IHRyZWZmZXIuZmlsdGVy KGZ1bmN0aW9uKHApIHsgcmV0dXJuICBwLmdlbG9lc2NodEFtOyB9KTsKICAgICAgICAgICAgdmFy IHN0YXR1cywgemllbElkID0gbnVsbCwgd2llZGVyaGVyc3RlbGxlbiA9IGZhbHNlLCBuZXVBbmxl Z2VuID0gZmFsc2UsIGFlaG5saWNoID0gW107CiAgICAgICAgICAgIGlmIChha3RpdlRyZWZmZXIu bGVuZ3RoID09PSAxKSB7CiAgICAgICAgICAgICAgICBzdGF0dXMgPSAnb2snOwogICAgICAgICAg ICAgICAgemllbElkID0gYWt0aXZUcmVmZmVyWzBdLmlkOwogICAgICAgICAgICB9IGVsc2UgaWYg KGFrdGl2VHJlZmZlci5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICBzdGF0dXMgPSAnbWVo cmRldXRpZyc7CiAgICAgICAgICAgIH0gZWxzZSBpZiAocGtUcmVmZmVyLmxlbmd0aCA9PT0gMSkg ewogICAgICAgICAgICAgICAgLy8gTnVyIFBhcGllcmtvcmItVHJlZmZlciAtPiBLb25mbGlrdCwg RGVmYXVsdDogd2llZGVyaGVyc3RlbGxlbgogICAgICAgICAgICAgICAgc3RhdHVzID0gJ3BhcGll cmtvcmInOwogICAgICAgICAgICAgICAgemllbElkID0gcGtUcmVmZmVyWzBdLmlkOwogICAgICAg ICAgICAgICAgd2llZGVyaGVyc3RlbGxlbiA9IHRydWU7CiAgICAgICAgICAgIH0gZWxzZSBpZiAo cGtUcmVmZmVyLmxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgICAgIHN0YXR1cyA9ICdtZWhyZGV1 dGlnJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIE5pY2h0IGltIEJl c3RhbmQ6IERlZmF1bHQtVm9yc2NobGFnICJuZXUgYW5sZWdlbiIuIERpZSBFeGNlbC0KICAgICAg ICAgICAgICAgIC8vIERhdGVuIChOYWNobmFtZSwgT0UsIEdydXBwZSwgVGVsZWZvbiwgUmFuZykg d2FuZGVybiBpbiBlaW5lCiAgICAgICAgICAgICAgICAvLyBmcmlzY2hlIFBlcnNvbiBtaXQgTWFy a2VyIGBpbXBvcnROZXVBbWAuIFBlcnNvbmFsdmVyd2FsdHVuZwogICAgICAgICAgICAgICAgLy8g YmxlbmRldCBkaWVzZSBpbSBOZXVpbXBvcnQtQmxvY2sgb2JlbiBlaW4sIGJpcyBkZXIgVXNlcgog ICAgICAgICAgICAgICAgLy8gc2llIG5hY2hwZmxlZ3QgdW5kIGVybGVkaWd0LgogICAgICAgICAg ICAgICAgc3RhdHVzID0gJ25ldSc7CiAgICAgICAgICAgICAgICBuZXVBbmxlZ2VuID0gdHJ1ZTsK ICAgICAgICAgICAgICAgIC8vIFRpcHBmZWhsZXItU2NodXR6OiBhZWhubGljaGUgYWt0aXZlIEJl c3RhbmRzbmFtZW4gKEVkaXRpZXItCiAgICAgICAgICAgICAgICAvLyBkaXN0YW56IDw9IDIsIGFi ZXIgbmljaHQgMCkgYWxzIFVOVkVSQklORExJQ0hFTiBIaW53ZWlzCiAgICAgICAgICAgICAgICAv LyBzYW1tZWxuLCBkYW1pdCBkZXIgVXNlciBuaWNodCB2ZXJzZWhlbnRsaWNoIGVpbiBEdXBsaWth dAogICAgICAgICAgICAgICAgLy8gZWluZXIgYmVzdGVoZW5kZW4gUGVyc29uIGFubGVndCAoei5C LiAiTWVubmVrZVMiIC0+ICJNZW5uZWtlIikuCiAgICAgICAgICAgICAgICAvLyBCZXd1c3N0IGtl aW4gQXV0by1NYXRjaDogYmVpIGVpbmVtIEZ1enp5LVRyZWZmZXIgZW50c2NoZWlkZXQKICAgICAg ICAgICAgICAgIC8vIGRlciBNZW5zY2gsIG5pZSBkZXIgQWxnb3JpdGhtdXMuCiAgICAgICAgICAg ICAgICBpZiAoa2V5Lmxlbmd0aCA+PSA0KSB7CiAgICAgICAgICAgICAgICAgICAgYWVobmxpY2gg PSBha3RpdkJlc3RhbmQubWFwKGZ1bmN0aW9uKGFiKSB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBFcnN0ZXIgQnVjaHN0YWJlIGFscyBBbmtlcjogZWNodGUgVGlwcGZlaGxlcgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXJoYWx0ZW4gaWhuIGZhc3QgaW1tZXIuIERhcyB1 bnRlcmRydWVja3Qgd2VpY2hlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGZWhsdHJl ZmZlciB3aWUgIk5ldW1hbm4iIHZzICJIZXltYW5uIiAoZ2xlaWNoZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgLy8gRW5kdW5nLCBEaXN0YW56IDIpLCB3YWVocmVuZCAiTWVubmVrZVMiIHZz CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiTWVubmVrZSIgKERpc3RhbnogMSkgZXJo YWx0ZW4gYmxlaWJ0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFua2VyID0gYWIu bi5jaGFyQXQoMCkgPT09IGtleS5jaGFyQXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4geyBpZDogYWIucC5pZCwgbmFtZTogYWIucC5uYW1lLCBkaXN0OiBfaW1wTGV2ZW5z aHRlaW4oa2V5LCBhYi5uKSwgYW5rZXI6IGFua2VyIH07CiAgICAgICAgICAgICAgICAgICAgICAg IH0pCiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24oeCkgeyByZXR1cm4g eC5kaXN0ID4gMCAmJiAoeC5kaXN0IDw9IDEgfHwgKHguZGlzdCA8PSAyICYmIHguYW5rZXIpKTsg fSkKICAgICAgICAgICAgICAgICAgICAgICAgLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4g YS5kaXN0IC0gYi5kaXN0OyB9KQogICAgICAgICAgICAgICAgICAgICAgICAuc2xpY2UoMCwgMyk7 CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgZXhj ZWw6IHhwLCB0cmVmZmVyOiB0cmVmZmVyLCBzdGF0dXM6IHN0YXR1cywgemllbElkOiB6aWVsSWQs IHdpZWRlcmhlcnN0ZWxsZW46IHdpZWRlcmhlcnN0ZWxsZW4sIG5ldUFubGVnZW46IG5ldUFubGVn ZW4sIGFlaG5saWNoOiBhZWhubGljaCB9OwogICAgICAgIH0pOwoKICAgICAgICAvLyBDb2RlLUFu YWx5c2U6IGFsbGUgQ29kZXMgYXVzIGRlbiBFaW50cmFlZ2VuIHNhbW1lbG4sIGdlZ2VuIGFrdGl2 ZQogICAgICAgIC8vIENvZGVzIHVuZCBpbXBvcnRBbGlhc2UgYWJnbGVpY2hlbi4KICAgICAgICB2 YXIgYWxpYXNlID0gWi5hZG1pbi5pbXBvcnRBbGlhc2UgfHwge307CiAgICAgICAgdmFyIGFrdGl2 ZUNvZGVzID0ge307CiAgICAgICAgKFouYWRtaW4uc2NoaWNodGNvZGVzIHx8IFtdKS5mb3JFYWNo KGZ1bmN0aW9uKHNjKSB7CiAgICAgICAgICAgIGlmIChpc3RDb2RlQWt0aXYoc2MpKSBha3RpdmVD b2Rlc1tzYy5jb2RlXSA9IHRydWU7CiAgICAgICAgfSk7CiAgICAgICAgdmFyIGNvZGVWZXJ3ZW5k dW5nID0ge307ICAvLyB7IGNvZGU6IGFuemFobCB9CiAgICAgICAgZXhjZWxQZXJzb25lbi5mb3JF YWNoKGZ1bmN0aW9uKHhwKSB7CiAgICAgICAgICAgIE9iamVjdC5rZXlzKHhwLmVpbnRyYWVnZSku Zm9yRWFjaChmdW5jdGlvbihkKSB7CiAgICAgICAgICAgICAgICB2YXIgYyA9IHhwLmVpbnRyYWVn ZVtkXTsKICAgICAgICAgICAgICAgIGNvZGVWZXJ3ZW5kdW5nW2NdID0gKGNvZGVWZXJ3ZW5kdW5n W2NdIHx8IDApICsgMTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgICAgdmFyIGNv ZGVNYXRjaGVzID0gT2JqZWN0LmtleXMoY29kZVZlcndlbmR1bmcpLnNvcnQoKS5tYXAoZnVuY3Rp b24oYykgewogICAgICAgICAgICB2YXIgYW56YWhsID0gY29kZVZlcndlbmR1bmdbY107CiAgICAg ICAgICAgIGlmIChjIGluIGFsaWFzZSkgewogICAgICAgICAgICAgICAgdmFyIHppZWwgPSBhbGlh c2VbY107CiAgICAgICAgICAgICAgICBpZiAoemllbCA9PT0gbnVsbCkgcmV0dXJuIHsgY29kZTog YywgYW56YWhsOiBhbnphaGwsIHN0YXR1czogJ2lnbm9yZScsIHppZWw6IG51bGwsIGhpbndlaXM6 ICdBbGlhczogd2lyZCB2ZXJ3b3JmZW4nIH07CiAgICAgICAgICAgICAgICByZXR1cm4geyBjb2Rl OiBjLCBhbnphaGw6IGFuemFobCwgc3RhdHVzOiAnYWxpYXMnLCB6aWVsOiB6aWVsLCBoaW53ZWlz OiAnQWxpYXM6IOKGkiAnICsgemllbCB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChh a3RpdmVDb2Rlc1tjXSkgcmV0dXJuIHsgY29kZTogYywgYW56YWhsOiBhbnphaGwsIHN0YXR1czog J29rJywgemllbDogYywgaGlud2VpczogJ0Jla2FubnRlciBha3RpdmVyIENvZGUnIH07CiAgICAg ICAgICAgIHJldHVybiB7IGNvZGU6IGMsIGFuemFobDogYW56YWhsLCBzdGF0dXM6ICd1bmJla2Fu bnQnLCB6aWVsOiBudWxsLCBoaW53ZWlzOiAnVW5iZWthbm50IOKAlCBtYW51ZWxsIG1hcHBlbicg fTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gSmFocmVzLVBsYXVzaWJpbGl0YWV0OiBkYXMgR3Jp ZCB6ZWlndCBbUGxhbnVuZ3NqYWhyLTAxLTAxIC4uIEZvbGdlLQogICAgICAgIC8vIGphaHItMDEt MzFdIChKYW51YXIgZGVzIEZvbGdlamFocmVzIGFscyBQdWZmZXIsIHNpZWhlIHRhZ2VFcnpldWdl bikuCiAgICAgICAgLy8gRGF0dW1zc3BhbHRlbiBhdXNzZXJoYWxiIGRpZXNlcyBGZW5zdGVycyB3 dWVyZGVuIGltcG9ydGllcnQsIGFiZXIgbmllCiAgICAgICAgLy8gYW5nZXplaWd0IChUb3RlLURh dGVuKSDigJQgdHlwaXNjaCBiZWltIHZlcnNlaGVudGxpY2hlbiBJbXBvcnQgZWluZXIKICAgICAg ICAvLyBWb3JqYWhyZXMtIG9kZXIgRm9sZ2VqYWhyZXMtRGF0ZWkuIFdpciB3YXJuZW4gc3RhdHQg aGFydCB6dSBibG9ja2VuLgogICAgICAgIHZhciBqYWhySW5mbyA9IG51bGw7CiAgICAgICAgaWYg KGRhdHVtU3BhbHRlbi5sZW5ndGgpIHsKICAgICAgICAgICAgdmFyIHBvcnRhbEphaHIgPSAoWi5h ZG1pbiAmJiBaLmFkbWluLmphaHIpIHx8IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTsKICAgICAg ICAgICAgdmFyIGZlbnN0ZXJWb24gPSBwb3J0YWxKYWhyICsgJy0wMS0wMSc7CiAgICAgICAgICAg IHZhciBmZW5zdGVyQmlzID0gKHBvcnRhbEphaHIgKyAxKSArICctMDEtMzEnOyAgLy8gaW5rbC4g UHVmZmVyLUphbnVhcgogICAgICAgICAgICB2YXIgamFoclphZWhsZXIgPSB7fTsKICAgICAgICAg ICAgdmFyIGF1c3NlcmhhbGIgPSAwOwogICAgICAgICAgICBkYXR1bVNwYWx0ZW4uZm9yRWFjaChm dW5jdGlvbihkKSB7CiAgICAgICAgICAgICAgICB2YXIgaiA9IGQuZGF0dW0uc3Vic3RyKDAsIDQp OwogICAgICAgICAgICAgICAgamFoclphZWhsZXJbal0gPSAoamFoclphZWhsZXJbal0gfHwgMCkg KyAxOwogICAgICAgICAgICAgICAgaWYgKGQuZGF0dW0gPCBmZW5zdGVyVm9uIHx8IGQuZGF0dW0g PiBmZW5zdGVyQmlzKSBhdXNzZXJoYWxiKys7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB2 YXIgZG9taW5hbnRKYWhyID0gT2JqZWN0LmtleXMoamFoclphZWhsZXIpLnNvcnQoZnVuY3Rpb24o YSwgYikgeyByZXR1cm4gamFoclphZWhsZXJbYl0gLSBqYWhyWmFlaGxlclthXTsgfSlbMF07CiAg ICAgICAgICAgIGphaHJJbmZvID0gewogICAgICAgICAgICAgICAgcG9ydGFsSmFocjogICBwb3J0 YWxKYWhyLAogICAgICAgICAgICAgICAgZG9taW5hbnRKYWhyOiBwYXJzZUludChkb21pbmFudEph aHIsIDEwKSwKICAgICAgICAgICAgICAgIGRhdGVpVm9uOiAgICAgZGF0dW1TcGFsdGVuWzBdLmRh dHVtLAogICAgICAgICAgICAgICAgZGF0ZWlCaXM6ICAgICBkYXR1bVNwYWx0ZW5bZGF0dW1TcGFs dGVuLmxlbmd0aCAtIDFdLmRhdHVtLAogICAgICAgICAgICAgICAgYXVzc2VyaGFsYjogICBhdXNz ZXJoYWxiLAogICAgICAgICAgICAgICAgZ2VzYW10OiAgICAgICBkYXR1bVNwYWx0ZW4ubGVuZ3Ro CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBpbXBTdGF0ZSA9IHsKICAgICAgICAg ICAgZGF0ZWlOYW1lOiBudWxsLAogICAgICAgICAgICBkYXR1bVNwYWx0ZW46IGRhdHVtU3BhbHRl biwKICAgICAgICAgICAgZXhjZWxQZXJzb25lbjogZXhjZWxQZXJzb25lbiwKICAgICAgICAgICAg cGVyc29uZW5NYXRjaGVzOiBwZXJzb25lbk1hdGNoZXMsCiAgICAgICAgICAgIGNvZGVNYXRjaGVz OiBjb2RlTWF0Y2hlcywKICAgICAgICAgICAgamFockluZm86IGphaHJJbmZvLAogICAgICAgICAg ICBrb21tZW50YXJBbnphaGw6IE9iamVjdC52YWx1ZXMoa29tbWVudGFyZSkucmVkdWNlKGZ1bmN0 aW9uKHMsIG9iaikgewogICAgICAgICAgICAgICAgcmV0dXJuIHMgKyBPYmplY3QudmFsdWVzKG9i aikucmVkdWNlKGZ1bmN0aW9uKHMyLCBsaXN0ZSkgeyByZXR1cm4gczIgKyAobGlzdGUgPyBsaXN0 ZS5sZW5ndGggOiAwKTsgfSwgMCk7CiAgICAgICAgICAgIH0sIDApCiAgICAgICAgfTsKICAgICAg ICBpbXBTdGF0dXNSZW5kZXJuKCk7CiAgICB9CgogICAgZnVuY3Rpb24gaW1wU3RhdHVzUmVuZGVy bigpIHsKICAgICAgICB2YXIgcyA9IGltcFN0YXRlOwogICAgICAgIGlmICghcykgcmV0dXJuOwog ICAgICAgIHZhciBzdGF0dXNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAtc3RhdHVz Jyk7CiAgICAgICAgLy8gT0sgPSBhdXRvbWF0aXNjaCBvayBPREVSIHZvbSBVc2VyIG1hbnVlbGwg enVnZW9yZG5ldCAobWl0IHppZWxJZCkKICAgICAgICB2YXIgcE9rICAgID0gcy5wZXJzb25lbk1h dGNoZXMuZmlsdGVyKGZ1bmN0aW9uKG0pIHsgcmV0dXJuIChtLnN0YXR1cyA9PT0gJ29rJyB8fCBt LnN0YXR1cyA9PT0gJ21hbnVlbGwnKSAmJiBtLnppZWxJZDsgfSkubGVuZ3RoOwogICAgICAgIC8v IE5ldSA9IHdpcmQgbWl0IEV4Y2VsLURhdGVuIGZyaXNjaCBhbmdlbGVndCAoRGVmYXVsdCBmdWVy IHVuYmVrYW5udGUKICAgICAgICAvLyBOYWNobmFtZW4pLiBLZWluIEtvbmZsaWt0IOKAlCBsYWV1 ZnQgb2huZSBNYXBwaW5nLUVpbmdyaWZmLgogICAgICAgIHZhciBwTmV1ICAgPSBzLnBlcnNvbmVu TWF0Y2hlcy5maWx0ZXIoZnVuY3Rpb24obSkgeyByZXR1cm4gbS5zdGF0dXMgPT09ICduZXUnICYm IG0ubmV1QW5sZWdlbjsgfSkubGVuZ3RoOwogICAgICAgIHZhciBwSWduICAgPSBzLnBlcnNvbmVu TWF0Y2hlcy5maWx0ZXIoZnVuY3Rpb24obSkgeyByZXR1cm4gbS5zdGF0dXMgPT09ICdpZ25vcmll cnQnOyB9KS5sZW5ndGg7CiAgICAgICAgLy8gT2ZmZW4gPSBudXIgIm1laHJkZXV0aWciIChtZWhy ZXJlIEJlc3RhbmRzLVRyZWZmZXIgcHJvIE5hY2huYW1lKS4KICAgICAgICAvLyAidW5iZWthbm50 IiBnaWJ0J3MgbmljaHQgbWVociDigJQgd2lyZCBqZXR6dCBhdXRvbWF0aXNjaCB6dSAibmV1Ii4K ICAgICAgICB2YXIgcE9mZmVuID0gcy5wZXJzb25lbk1hdGNoZXMuZmlsdGVyKGZ1bmN0aW9uKG0p IHsgcmV0dXJuIG0uc3RhdHVzID09PSAnbWVocmRldXRpZyc7IH0pLmxlbmd0aDsKICAgICAgICAv LyBQYXBpZXJrb3JiLVRyZWZmZXIgc2luZCBlaW4gIndlaWNoZXIgS29uZmxpa3QiIOKAlCBEZWZh dWx0dm9yc2NobGFnIGlzdAogICAgICAgIC8vICJXaWVkZXJoZXJzdGVsbGVuICsgenVvcmRuZW4i LCBkZXIgSW1wb3J0IGxhZXVmdCBhdWNoIG9obmUgTWFwcGluZy0KICAgICAgICAvLyBFaW5ncmlm Zi4gV2lyIHphZWhsZW4gc2llIHRyb3R6ZGVtIGV4dHJhLCBkYW1pdCBkZXIgVXNlciBkaWUgU3Rl bGxlCiAgICAgICAgLy8gYmV3dXNzdCBwcnVlZmVuIGthbm4uCiAgICAgICAgdmFyIHBQSyAgICA9 IHMucGVyc29uZW5NYXRjaGVzLmZpbHRlcihmdW5jdGlvbihtKSB7IHJldHVybiBtLnN0YXR1cyA9 PT0gJ3BhcGllcmtvcmInOyB9KS5sZW5ndGg7CiAgICAgICAgLy8gVGlwcGZlaGxlci1WZXJkYWNo dDogIm5ldSItUGVyc29uZW4sIGRpZSBlaW5lciBiZXN0ZWhlbmRlbiBQZXJzb24KICAgICAgICAv LyB2ZXJkYWVjaHRpZyBhZWhubGljaCBzaW5kIChFZGl0aWVyZGlzdGFueiA8PSAyKS4gS2VpbiBC bG9ja2VyLCBhYmVyCiAgICAgICAgLy8gZWluIEhpbndlaXMsIGRhcyBNYXBwaW5nIHp1IHBydWVm ZW4sIGJldm9yIGVpbiBEdXBsaWthdCBlbnRzdGVodC4KICAgICAgICB2YXIgcEFlaG5saWNoID0g cy5wZXJzb25lbk1hdGNoZXMuZmlsdGVyKGZ1bmN0aW9uKG0pIHsgcmV0dXJuIG0uc3RhdHVzID09 PSAnbmV1JyAmJiBtLmFlaG5saWNoICYmIG0uYWVobmxpY2gubGVuZ3RoOyB9KS5sZW5ndGg7CiAg ICAgICAgdmFyIGNPayAgICA9IHMuY29kZU1hdGNoZXMuZmlsdGVyKGZ1bmN0aW9uKG0pIHsgcmV0 dXJuIChtLnN0YXR1cyA9PT0gJ29rJyB8fCBtLnN0YXR1cyA9PT0gJ2FsaWFzJyB8fCBtLnN0YXR1 cyA9PT0gJ21hbnVlbGwnKSAmJiBtLnppZWw7IH0pLmxlbmd0aDsKICAgICAgICB2YXIgY0lnbiAg ID0gcy5jb2RlTWF0Y2hlcy5maWx0ZXIoZnVuY3Rpb24obSkgeyByZXR1cm4gbS5zdGF0dXMgPT09 ICdpZ25vcmUnOyB9KS5sZW5ndGg7CiAgICAgICAgdmFyIGNPZmZlbiA9IHMuY29kZU1hdGNoZXMu ZmlsdGVyKGZ1bmN0aW9uKG0pIHsgcmV0dXJuIG0uc3RhdHVzID09PSAndW5iZWthbm50JzsgfSku bGVuZ3RoOwoKICAgICAgICAvLyBKYWhyZXMtV2FybnVuZzogRGF0ZWkgcGFzc3QgbmljaHQgenVt IGFuZ2V6ZWlndGVuIFBsYW51bmdzamFociBvZGVyCiAgICAgICAgLy8gcmFndCBhdXMgZGVtIHNp Y2h0YmFyZW4gRmVuc3RlciBoZXJhdXMgKFRvdGUtRGF0ZW4tR2VmYWhyKS4KICAgICAgICB2YXIg amFocldhcm5IdG1sID0gJyc7CiAgICAgICAgaWYgKHMuamFockluZm8gJiYgKHMuamFockluZm8u YXVzc2VyaGFsYiA+IDAgfHwgcy5qYWhySW5mby5kb21pbmFudEphaHIgIT09IHMuamFockluZm8u cG9ydGFsSmFocikpIHsKICAgICAgICAgICAgdmFyIGppID0gcy5qYWhySW5mbzsKICAgICAgICAg ICAgdmFyIGtlcm4gPSBqaS5kb21pbmFudEphaHIgIT09IGppLnBvcnRhbEphaHIKICAgICAgICAg ICAgICAgID8gJ0RpZXNlIERhdGVpIGlzdCDDvGJlcndpZWdlbmQgZsO8ciA8c3Ryb25nPicgKyBq aS5kb21pbmFudEphaHIgKyAnPC9zdHJvbmc+LCBkYXMgUG9ydGFsIHplaWd0IGFiZXIgUGxhbnVu Z3NqYWhyIDxzdHJvbmc+JyArIGppLnBvcnRhbEphaHIgKyAnPC9zdHJvbmc+LicKICAgICAgICAg ICAgICAgIDogamkuYXVzc2VyaGFsYiArICcgdm9uICcgKyBqaS5nZXNhbXQgKyAnIFRhZ2Vzc3Bh bHRlbiBsaWVnZW4gPHN0cm9uZz5hdcOfZXJoYWxiPC9zdHJvbmc+IGRlcyBhbmdlemVpZ3RlbiBa ZWl0cmF1bXMgKCcgKyBqaS5wb3J0YWxKYWhyICsgJy0wMS0wMSBiaXMgJyArIChqaS5wb3J0YWxK YWhyICsgMSkgKyAnLTAxLTMxKS4nOwogICAgICAgICAgICBqYWhyV2Fybkh0bWwgPSAnPGRpdiBj bGFzcz0iaW1wLXN0YXR1cy1rYXJ0ZSIgc3R5bGU9ImJvcmRlci1jb2xvcjp2YXIoLS1mYXJiZS13 YXJudW5nKTtiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KSI+JyArCiAgICAgICAgICAgICAg ICAn4pqgIDxzdHJvbmc+SmFocmVzLUhpbndlaXM6PC9zdHJvbmc+ICcgKyBrZXJuICsKICAgICAg ICAgICAgICAgICcgRGF0ZWktWmVpdHJhdW06ICcgKyBlc2NhcGVIVE1MKGppLmRhdGVpVm9uKSAr ICcgYmlzICcgKyBlc2NhcGVIVE1MKGppLmRhdGVpQmlzKSArICcuJyArCiAgICAgICAgICAgICAg ICAnIEF1w59lcmhhbGIgbGllZ2VuZGUgVGFnZSB3ZXJkZW4gZ2VzY2hyaWViZW4sIGFiZXIgaW0g UGxhbiBuaWNodCBhbmdlemVpZ3QuIEJpdHRlIHByw7xmZW4sIG9iIGRpZSByaWNodGlnZSBEYXRl aSB1bmQgZGFzIHJpY2h0aWdlIFBsYW51bmdzamFociBnZXfDpGhsdCBzaW5kLicgKwogICAgICAg ICAgICAnPC9kaXY+JzsKICAgICAgICB9CgogICAgICAgIHZhciBodG1sID0gamFocldhcm5IdG1s ICsgJzxkaXYgY2xhc3M9ImltcC1zdGF0dXMta2FydGUiPicgKwogICAgICAgICAgICAnPGgzIHN0 eWxlPSJtYXJnaW46MCAwIDhweCAwIj5BbmFseXNlLUVyZ2VibmlzPC9oMz4nICsKICAgICAgICAg ICAgJzxkaXYgY2xhc3M9ImltcC1rcGktemVpbGUiPicgKwogICAgICAgICAgICAgICAgJzxkaXYg Y2xhc3M9ImltcC1rcGkiPjxkaXYgY2xhc3M9ImltcC1rcGktemFobCI+JyArIHMuZGF0dW1TcGFs dGVuLmxlbmd0aCArICc8L2Rpdj48ZGl2IGNsYXNzPSJpbXAta3BpLWxhYmVsIj5UYWdlc3NwYWx0 ZW48L2Rpdj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJpbXAta3BpIj48 ZGl2IGNsYXNzPSJpbXAta3BpLXphaGwiPicgKyBzLmV4Y2VsUGVyc29uZW4ubGVuZ3RoICsgJzwv ZGl2PjxkaXYgY2xhc3M9ImltcC1rcGktbGFiZWwiPlBlcnNvbmVuIGluIEV4Y2VsPC9kaXY+PC9k aXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iaW1wLWtwaSI+PGRpdiBjbGFzcz0i aW1wLWtwaS16YWhsIj4nICsgcy5rb21tZW50YXJBbnphaGwgKyAnPC9kaXY+PGRpdiBjbGFzcz0i aW1wLWtwaS1sYWJlbCI+S29tbWVudGFyZTwvZGl2PjwvZGl2PicgKwogICAgICAgICAgICAnPC9k aXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJpbXAta3BpLXplaWxlIj4nICsKICAgICAg ICAgICAgICAgICc8ZGl2IGNsYXNzPSJpbXAta3BpIGltcC1rcGktb2siPjxkaXYgY2xhc3M9Imlt cC1rcGktemFobCI+JyArIHBPayArICc8L2Rpdj48ZGl2IGNsYXNzPSJpbXAta3BpLWxhYmVsIj5Q ZXJzb25lbiB6dWdlb3JkbmV0PC9kaXY+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAocE5ldSAg ID8gJzxkaXYgY2xhc3M9ImltcC1rcGkgaW1wLWtwaS1uZXUiIHRpdGxlPSJOaWNodCBpbSBCZXN0 YW5kIOKAlCB3ZXJkZW4gbWl0IGRlbiBFeGNlbC1EYXRlbiBuZXUgYW5nZWxlZ3QgdW5kIGVyc2No ZWluZW4gYW5zY2hsaWVzc2VuZCBpbSBOZXVpbXBvcnQtQmxvY2sgZGVyIFBlcnNvbmFsdmVyd2Fs dHVuZyB6dXIgTmFjaHBmbGVnZS4iPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn PGRpdiBjbGFzcz0iaW1wLWtwaS16YWhsIj4nICsgcE5ldSArICc8L2Rpdj48ZGl2IGNsYXNzPSJp bXAta3BpLWxhYmVsIj5QZXJzb25lbiBuZXUgYW5sZWdlbjwvZGl2PjwvZGl2PicgOiAnJykgKwog ICAgICAgICAgICAgICAgKHBQSyAgICA/ICc8ZGl2IGNsYXNzPSJpbXAta3BpIGltcC1rcGktd2Fy biIgdGl0bGU9IkVpbmRldXRpZ2VyIFRyZWZmZXIsIGFiZXIgaW0gUGFwaWVya29yYi4gV2lyZCBw ZXIgRGVmYXVsdCB3aWVkZXJoZXJnZXN0ZWxsdCDigJQgaW0gTWFwcGluZyBwcnVlZmJhci4iPicg KwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iaW1wLWtwaS16YWhs Ij4nICsgcFBLICsgJzwvZGl2PjxkaXYgY2xhc3M9ImltcC1rcGktbGFiZWwiPlBhcGllcmtvcmIt VHJlZmZlcjwvZGl2PjwvZGl2PicgOiAnJykgKwogICAgICAgICAgICAgICAgKHBJZ24gICA/ICc8 ZGl2IGNsYXNzPSJpbXAta3BpIj48ZGl2IGNsYXNzPSJpbXAta3BpLXphaGwiPicgKyBwSWduICsg JzwvZGl2PjxkaXYgY2xhc3M9ImltcC1rcGktbGFiZWwiPlBlcnNvbmVuIGlnbm9yaWVydDwvZGl2 PjwvZGl2PicgOiAnJykgKwogICAgICAgICAgICAgICAgKHBBZWhubGljaCA/ICc8ZGl2IGNsYXNz PSJpbXAta3BpIGltcC1rcGktd2FybiIgdGl0bGU9IkRpZXNlIG5ldSBhbnp1bGVnZW5kZW4gUGVy c29uZW4gw6RobmVsbiBzdGFyayBlaW5lciBiZXN0ZWhlbmRlbiBQZXJzb24g4oCUIHZlcm11dGxp Y2ggVGlwcGZlaGxlci4gSW0gTWFwcGluZyBwcsO8ZmVuLCBzb25zdCBlbnRzdGVoZW4gRHVwbGlr YXRlLiI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJpbXAt a3BpLXphaGwiPicgKyBwQWVobmxpY2ggKyAnPC9kaXY+PGRpdiBjbGFzcz0iaW1wLWtwaS1sYWJl bCI+VGlwcGZlaGxlci1WZXJkYWNodDwvZGl2PjwvZGl2PicgOiAnJykgKwogICAgICAgICAgICAg ICAgKHBPZmZlbiA/ICc8ZGl2IGNsYXNzPSJpbXAta3BpIGltcC1rcGktZmVobGVyIj48ZGl2IGNs YXNzPSJpbXAta3BpLXphaGwiPicgKyBwT2ZmZW4gKyAnPC9kaXY+PGRpdiBjbGFzcz0iaW1wLWtw aS1sYWJlbCI+UGVyc29uZW4gb2ZmZW48L2Rpdj48L2Rpdj4nIDogJycpICsKICAgICAgICAgICAg JzwvZGl2PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iaW1wLWtwaS16ZWlsZSI+JyArCiAg ICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iaW1wLWtwaSBpbXAta3BpLW9rIj48ZGl2IGNsYXNz PSJpbXAta3BpLXphaGwiPicgKyBjT2sgKyAnPC9kaXY+PGRpdiBjbGFzcz0iaW1wLWtwaS1sYWJl bCI+Q29kZXMgZ2VtYXBwdDwvZGl2PjwvZGl2PicgKwogICAgICAgICAgICAgICAgKGNJZ24gICA/ ICc8ZGl2IGNsYXNzPSJpbXAta3BpIj48ZGl2IGNsYXNzPSJpbXAta3BpLXphaGwiPicgKyBjSWdu ICsgJzwvZGl2PjxkaXYgY2xhc3M9ImltcC1rcGktbGFiZWwiPkNvZGVzIGlnbm9yaWVydDwvZGl2 PjwvZGl2PicgOiAnJykgKwogICAgICAgICAgICAgICAgKGNPZmZlbiA/ICc8ZGl2IGNsYXNzPSJp bXAta3BpIGltcC1rcGktd2FybiI+PGRpdiBjbGFzcz0iaW1wLWtwaS16YWhsIj4nICsgY09mZmVu ICsgJzwvZGl2PjxkaXYgY2xhc3M9ImltcC1rcGktbGFiZWwiPkNvZGVzIG9mZmVuPC9kaXY+PC9k aXY+JyA6ICcnKSArCiAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgc3R5 bGU9Im1hcmdpbi10b3A6MTRweDtkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2Vu dGVyIj4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlayIgaWQ9 ImltcC1tYXBwaW5nLW9lZmZuZW4iPk1hcHBpbmcgw7ZmZm5lbicgKwogICAgICAgICAgICAgICAg ICAgIChwT2ZmZW4gKyBjT2ZmZW4gPiAwID8gJyAoJyArIChwT2ZmZW4gKyBjT2ZmZW4pICsgJyBv ZmZlbiknIDogKHBQSyA/ICcgKCcgKyBwUEsgKyAnIFBhcGllcmtvcmItVHJlZmZlciBwcsO8ZmVu KScgOiAnJykpICsKICAgICAgICAgICAgICAgICc8L2J1dHRvbj4nICsKICAgICAgICAgICAgICAg IGhpbGZlSWNvbignTWFwcGluZzogSGllciBvcmRuZXN0IGR1IGplZGUgRXhjZWwtUGVyc29uIGVp bmVyIFBsYW4tUGVyc29uIHp1IChvZnQgcGVyIE5hY2huYW1lIGF1dG9tYXRpc2NoIGVya2FubnQp IHVuZCBlbnRzY2hlaWRlc3QgZnVlciB1bmJla2FubnRlIEV4Y2VsLVNjaGljaHRjb2Rlcywgb2Ig c2llIGVpbmVtIGJlc3RlaGVuZGVuIENvZGUgenVnZW9yZG5ldCwgbmV1IGFuZ2VsZWd0IG9kZXIg aWdub3JpZXJ0IHdlcmRlbi4gRXJzdCB3ZW5uIGFsbGUgS29uZmxpa3RlIGF1ZmdlbG9lc3Qgc2lu ZCwgd2lyZCBkZXIgSW1wb3J0LUJ1dHRvbiBmcmVpZ2VnZWJlbi4nKSArCiAgICAgICAgICAgICAg ICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsiIGlkPSJpbXAtdHJvY2tlbmxhdWYiJyArICgo cE9mZmVuICsgY09mZmVuKSA+IDAgPyAnIGRpc2FibGVkIHRpdGxlPSJFcnN0IG9mZmVuZSBLb25m bGlrdGUgaW0gTWFwcGluZy1EaWFsb2cgYXVmbMO2c2VuIicgOiAnJykgKyAnPlZvcnNjaGF1IC8g VHJvY2tlbmxhdWY8L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJi dG4gYnRuLXByaW1hZXIiIGlkPSJpbXAtc3RhcnRlbiInICsgKChwT2ZmZW4gKyBjT2ZmZW4pID4g MCA/ICcgZGlzYWJsZWQgdGl0bGU9IkVyc3Qgb2ZmZW5lIEtvbmZsaWt0ZSBpbSBNYXBwaW5nLURp YWxvZyBhdWZsw7ZzZW4iJyA6ICcnKSArICc+SW1wb3J0IHN0YXJ0ZW48L2J1dHRvbj4nICsKICAg ICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICc8L2Rpdj4nOwoKICAgICAgICBzdGF0dXNFbC5p bm5lckhUTUwgPSBodG1sOwogICAgICAgIHZhciBtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J2ltcC1tYXBwaW5nLW9lZmZuZW4nKTsKICAgICAgICBpZiAobSkgbS5hZGRFdmVudExpc3RlbmVy KCdjbGljaycsIGltcE1hcHBpbmdNb2RhbCk7CiAgICAgICAgdmFyIHRsID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2ltcC10cm9ja2VubGF1ZicpOwogICAgICAgIGlmICh0bCkgdGwuYWRkRXZl bnRMaXN0ZW5lcignY2xpY2snLCBpbXBUcm9ja2VubGF1Zk1vZGFsKTsKICAgICAgICB2YXIgaWIg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1wLXN0YXJ0ZW4nKTsKICAgICAgICBpZiAoaWIp IGliLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaW1wU2NocmVpYmVuU3RhcnRlbik7CiAgICB9 CgogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CiAgICAvLyBUcm9ja2VubGF1ZiAvIFZvcnNjaGF1CiAgICAvLyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAg IC8vIEJlcmVjaG5ldCBkaWUgRGlmZi1MaXN0ZSwgZGllIGVpbiBlY2h0ZXIgSW1wb3J0IGVyemV1 Z2VuIHd1ZXJkZSwKICAgIC8vIE9ITkUgaW4gWi5wbGFudW5nIHp1IHNjaHJlaWJlbiBvZGVyIEFQ SS1DYWxscyB6dSBtYWNoZW4uIExvZ2lrCiAgICAvLyBnZXNwaWVnZWx0IGF1cyBpbXBTY2hyZWli ZW5QaGFzZTJUcmFuc2Zvcm0g4oCUIHdlbm4gZGllIGJlaWRlbgogICAgLy8gamVtYWxzIGF1c2Vp bmFuZGVyZHJpZnRlbiwgd2FuZGVybiBGZWhsZXIgdW5lbnRkZWNrdCBpbiBkZW4gSW1wb3J0Lgog ICAgLy8gUHJvIFplbGwtUG9zaXRpb24gKGRhdHVtLCBwZXJzb25JZCkgd2lyZCBlaW4gRWludHJh ZyBtaXQgYWx0L25ldS8KICAgIC8vIGFydCBlcnpldWd0OyBkYXJhdXMgYmF1dCBkYXMgTW9kYWwg ZWluZSBmaWx0ZXItIHVuZCBzb3J0aWVyYmFyZQogICAgLy8gVGFiZWxsZS4gRGllbnQgYWxzIERp YWdub3NlLCB3ZW5uIGRlciBVc2VyIGJlaGF1cHRldCAiRGF0ZW4gbGFuZGVuCiAgICAvLyBhbSBm YWxzY2hlbiBUYWcgLyBiZWkgZGVyIGZhbHNjaGVuIFBlcnNvbiIuCiAgICBmdW5jdGlvbiBpbXBU cm9ja2VubGF1ZkJlcmVjaG5lbihzKSB7CiAgICAgICAgdmFyIGJlc3RhbmQgPSBaLnBsYW51bmcg fHwge307CiAgICAgICAgdmFyIGJlc3RhbmRFaW50cmFlZ2UgPSBiZXN0YW5kLmVpbnRyYWVnZSB8 fCB7fTsKICAgICAgICB2YXIgcGVyc29uZW5BdXNaID0gYmVzdGFuZC5wZXJzb25lbiB8fCBbXTsK ICAgICAgICB2YXIgcGlkWnVOYW1lID0ge307CiAgICAgICAgcGVyc29uZW5BdXNaLmZvckVhY2go ZnVuY3Rpb24ocCkgewogICAgICAgICAgICBwaWRadU5hbWVbU3RyaW5nKHAuaWQpXSA9ICgocC52 b3JuYW1lIHx8ICcnKSArICcgJyArIChwLm5hbWUgfHwgJycpKS50cmltKCk7CiAgICAgICAgfSk7 CgogICAgICAgIHZhciBleGNlbERhdHVtU2V0ID0ge307CiAgICAgICAgcy5kYXR1bVNwYWx0ZW4u Zm9yRWFjaChmdW5jdGlvbihkKSB7IGV4Y2VsRGF0dW1TZXRbZC5kYXR1bV0gPSB0cnVlOyB9KTsK CiAgICAgICAgdmFyIGNvZGVNYXAgPSB7fTsKICAgICAgICBzLmNvZGVNYXRjaGVzLmZvckVhY2go ZnVuY3Rpb24obSkgeyBjb2RlTWFwW20uY29kZV0gPSBtLnppZWw7IH0pOwoKICAgICAgICAvLyBQ SUQgLT4gRXhjZWwtTmFtZS4gUGFyaXRhZXQgenVtIGVjaHRlbiBTY2hyZWlidm9yZ2FuZyAoTTEt U2NodXR6KToKICAgICAgICAvLyBudXIgUGVyc29uZW4gbWl0IG1pbmRlc3RlbnMgZWluZW0gRXhj ZWwtRWludHJhZyBnZWx0ZW4gYWxzICJFeGNlbC0KICAgICAgICAvLyBQZXJzb24iIOKAlCBlaW5l IGtvbXBsZXR0IGxlZXJlIEV4Y2VsLVplaWxlIGxlZXJ0IGRlbiBCZXN0YW5kIG5pY2h0LgogICAg ICAgIHZhciBleGNlbFBpZHMgPSB7fTsKICAgICAgICBzLnBlcnNvbmVuTWF0Y2hlcy5mb3JFYWNo KGZ1bmN0aW9uKG0pIHsKICAgICAgICAgICAgaWYgKG0uemllbElkICYmIE9iamVjdC5rZXlzKG0u ZXhjZWwuZWludHJhZWdlIHx8IHt9KS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICBleGNl bFBpZHNbU3RyaW5nKG0uemllbElkKV0gPSBtLmV4Y2VsLm5hY2huYW1lOwogICAgICAgICAgICB9 CiAgICAgICAgfSk7CgogICAgICAgIC8vIFBoYXNlIEE6IEV4Y2VsLVBlcnNvbmVuLUVpbnRyYWVn ZSBzaW11bGllcmVuIChkYXR1bSAtPiBwaWQgLT4gbmV1ZXJDb2RlKQogICAgICAgIHZhciBzaW1O ZXUgPSB7fTsgIC8vIHsgZGF0dW06IHsgcGlkOiBjb2RlIH0gfQogICAgICAgIHZhciBzdGF0c0Nv ZGVJZ25vcmUgPSAwOwogICAgICAgIHMucGVyc29uZW5NYXRjaGVzLmZvckVhY2goZnVuY3Rpb24o bSkgewogICAgICAgICAgICBpZiAoIW0uemllbElkKSByZXR1cm47CiAgICAgICAgICAgIHZhciBw aWQgPSBTdHJpbmcobS56aWVsSWQpOwogICAgICAgICAgICBPYmplY3Qua2V5cyhtLmV4Y2VsLmVp bnRyYWVnZSkuZm9yRWFjaChmdW5jdGlvbihkYXR1bSkgewogICAgICAgICAgICAgICAgdmFyIHNy YyA9IG0uZXhjZWwuZWludHJhZWdlW2RhdHVtXTsKICAgICAgICAgICAgICAgIHZhciB6aWVsID0g Y29kZU1hcFtzcmNdOwogICAgICAgICAgICAgICAgaWYgKCF6aWVsKSB7IHN0YXRzQ29kZUlnbm9y ZSsrOyByZXR1cm47IH0KICAgICAgICAgICAgICAgIGlmICghc2ltTmV1W2RhdHVtXSkgc2ltTmV1 W2RhdHVtXSA9IHt9OwogICAgICAgICAgICAgICAgc2ltTmV1W2RhdHVtXVtwaWRdID0gemllbDsK ICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIFBoYXNlIEI6IFBybyBaZWxs ZSBpbSBFeGNlbC1aZWl0cmF1bSBkZW4gVmVyZ2xlaWNoIHp1c2FtbWVuc3RlbGxlbi4KICAgICAg ICAvLyBXaXIgZ2VoZW4gdWViZXIgQUxMRSAoZGF0dW0sIHBpZCkgaW0gQmVzdGFuZCBVTkQgaW4g RXhjZWwgaW5uZXJoYWxiCiAgICAgICAgLy8gZGVzIFplaXRyYXVtcywgZGFtaXQgYXVjaCAidmVy c2Nod2luZGVuZGUiIEVpbnRyYWVnZSAoVGFnIHZvcmhlcgogICAgICAgIC8vIGJlbGVndCwgRXhj ZWwgbGFlc3N0IGxlZXIpIHNpY2h0YmFyIHdlcmRlbi4KICAgICAgICB2YXIgZGlmZiA9IFtdOwog ICAgICAgIC8vIFNldCBhbGxlciByZWxldmFudGVuIChkYXR1bSwgcGlkKS1Lb21iaW5hdGlvbmVu CiAgICAgICAgdmFyIHNjaGx1ZXNzZWwgPSB7fTsKICAgICAgICBPYmplY3Qua2V5cyhzaW1OZXUp LmZvckVhY2goZnVuY3Rpb24oZCkgewogICAgICAgICAgICBPYmplY3Qua2V5cyhzaW1OZXVbZF0p LmZvckVhY2goZnVuY3Rpb24ocGlkKSB7CiAgICAgICAgICAgICAgICBzY2hsdWVzc2VsW2QgKyAn fCcgKyBwaWRdID0gdHJ1ZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgICAgT2Jq ZWN0LmtleXMoYmVzdGFuZEVpbnRyYWVnZSkuZm9yRWFjaChmdW5jdGlvbihkKSB7CiAgICAgICAg ICAgIGlmICghZXhjZWxEYXR1bVNldFtkXSkgcmV0dXJuOwogICAgICAgICAgICBPYmplY3Qua2V5 cyhiZXN0YW5kRWludHJhZWdlW2RdIHx8IHt9KS5mb3JFYWNoKGZ1bmN0aW9uKHBpZCkgewogICAg ICAgICAgICAgICAgc2NobHVlc3NlbFtkICsgJ3wnICsgcGlkXSA9IHRydWU7CiAgICAgICAgICAg IH0pOwogICAgICAgIH0pOwoKICAgICAgICBPYmplY3Qua2V5cyhzY2hsdWVzc2VsKS5mb3JFYWNo KGZ1bmN0aW9uKGspIHsKICAgICAgICAgICAgdmFyIHRlaWxlID0gay5zcGxpdCgnfCcpOwogICAg ICAgICAgICB2YXIgZGF0dW0gPSB0ZWlsZVswXTsKICAgICAgICAgICAgdmFyIHBpZCA9IHRlaWxl WzFdOwogICAgICAgICAgICB2YXIgYWx0ID0gKGJlc3RhbmRFaW50cmFlZ2VbZGF0dW1dICYmIGJl c3RhbmRFaW50cmFlZ2VbZGF0dW1dW3BpZF0pIHx8ICcnOwogICAgICAgICAgICB2YXIgbmV1UmF3 ID0gKHNpbU5ldVtkYXR1bV0gJiYgc2ltTmV1W2RhdHVtXVtwaWRdKSB8fCAnJzsKICAgICAgICAg ICAgLy8gU2NobHVlcm1hbm4tU2NodXR6OiB3ZW5uIGRpZSBQZXJzb24gTklDSFQgaW4gZGVyIEV4 Y2VsIGlzdCwgYmxlaWJ0CiAgICAgICAgICAgIC8vIGlociBiZXN0ZWhlbmRlciBFaW50cmFnIGVy aGFsdGVuLiBBdXMgRGlmZi1TaWNodCBlbnRzcHJpY2h0IGRhcwogICAgICAgICAgICAvLyAibmV1 ID0gYWx0IiDigJQga2VpbiBBZW5kZXJ1bmdzLUl0ZW0sIHdhbmRlcnQgbmFjaCAnZ2xlaWNoJy4K ICAgICAgICAgICAgdmFyIG5ldSA9IGV4Y2VsUGlkc1twaWRdID8gbmV1UmF3IDogYWx0OwoKICAg ICAgICAgICAgdmFyIGFydCA9IG51bGw7CiAgICAgICAgICAgIGlmIChhbHQgPT09IG5ldSkgewog ICAgICAgICAgICAgICAgYXJ0ID0gJ2dsZWljaCc7ICAgLy8gS2VpbiBVcGRhdGUg4oCUIHdpcmQg bmljaHQgYW5nZXplaWd0IChEZWZhdWx0LUZpbHRlcikKICAgICAgICAgICAgfSBlbHNlIGlmICgh YWx0ICYmIG5ldSkgewogICAgICAgICAgICAgICAgYXJ0ID0gJ25ldSc7ICAgICAgLy8gTmV1IGVp bmdldHJhZ2VuCiAgICAgICAgICAgIH0gZWxzZSBpZiAoYWx0ICYmICFuZXUpIHsKICAgICAgICAg ICAgICAgIC8vIFZlcnNjaHdpbmRldDogRXhjZWwtWmVsbGUgbGVlciBvZGVyIENvZGUgd2VnZW4g QWxpYXMgdmVyd29yZmVuLgogICAgICAgICAgICAgICAgLy8gKEJlc3RhbmQtb25seS1QZXJzb25l biBsYW5kZW4gb2JlbiBpbiAnZ2xlaWNoJyBkYW5rIGRlcyBTY2h1dHplcy4pCiAgICAgICAgICAg ICAgICBhcnQgPSAndmVybG9yZW4tbGVlcic7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg ICAgICAgICBhcnQgPSAnZ2VhZW5kZXJ0JzsgIC8vIGFsdCAhPSBuZXUsIGJlaWRlIGdlZnVlbGx0 CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGlmZi5wdXNoKHsKICAgICAgICAgICAgICAgIGRh dHVtOiBkYXR1bSwgcGlkOiBwaWQsCiAgICAgICAgICAgICAgICBuYW1lOiBwaWRadU5hbWVbcGlk XSB8fCAoJ1BJRCAnICsgcGlkKSwKICAgICAgICAgICAgICAgIGlzdEV4Y2VsUGVyc29uOiAhIWV4 Y2VsUGlkc1twaWRdLAogICAgICAgICAgICAgICAgZXhjZWxOYW1lOiBleGNlbFBpZHNbcGlkXSB8 fCBudWxsLAogICAgICAgICAgICAgICAgYWx0OiBhbHQsIG5ldTogbmV1LCBhcnQ6IGFydAogICAg ICAgICAgICB9KTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gU29ydGllcnVuZzogenVlcnN0IG5h Y2ggRGF0dW0gKGNocm9ub2xvZ2lzY2gpLCBkYW5uIG5hY2ggTmFtZQogICAgICAgIGRpZmYuc29y dChmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIGlmIChhLmRhdHVtICE9PSBiLmRhdHVtKSBy ZXR1cm4gYS5kYXR1bSA8IGIuZGF0dW0gPyAtMSA6IDE7CiAgICAgICAgICAgIHJldHVybiBhLm5h bWUubG9jYWxlQ29tcGFyZShiLm5hbWUsICdkZScpOwogICAgICAgIH0pOwoKICAgICAgICByZXR1 cm4gewogICAgICAgICAgICBkaWZmOiBkaWZmLAogICAgICAgICAgICBzdGF0czogewogICAgICAg ICAgICAgICAgZ2VzYW10OiAgICAgICAgICAgZGlmZi5sZW5ndGgsCiAgICAgICAgICAgICAgICBu ZXU6ICAgICAgICAgICAgICBkaWZmLmZpbHRlcihmdW5jdGlvbihkKSB7IHJldHVybiBkLmFydCA9 PT0gJ25ldSc7IH0pLmxlbmd0aCwKICAgICAgICAgICAgICAgIGdlYWVuZGVydDogICAgICAgIGRp ZmYuZmlsdGVyKGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQuYXJ0ID09PSAnZ2VhZW5kZXJ0JzsgfSku bGVuZ3RoLAogICAgICAgICAgICAgICAgZ2xlaWNoOiAgICAgICAgICAgZGlmZi5maWx0ZXIoZnVu Y3Rpb24oZCkgeyByZXR1cm4gZC5hcnQgPT09ICdnbGVpY2gnOyB9KS5sZW5ndGgsCiAgICAgICAg ICAgICAgICB2ZXJsb3JlbkxlZXI6ICAgICBkaWZmLmZpbHRlcihmdW5jdGlvbihkKSB7IHJldHVy biBkLmFydCA9PT0gJ3ZlcmxvcmVuLWxlZXInOyB9KS5sZW5ndGgsCiAgICAgICAgICAgICAgICBj b2RlSWdub3JlOiAgICAgICBzdGF0c0NvZGVJZ25vcmUKICAgICAgICAgICAgfQogICAgICAgIH07 CiAgICB9CgogICAgZnVuY3Rpb24gaW1wVHJvY2tlbmxhdWZNb2RhbCgpIHsKICAgICAgICBpZiAo IWltcFN0YXRlKSByZXR1cm47CiAgICAgICAgdmFyIHJlcyA9IGltcFRyb2NrZW5sYXVmQmVyZWNo bmVuKGltcFN0YXRlKTsKICAgICAgICAvLyBEZWZhdWx0LUZpbHRlcjogbnVyIEFlbmRlcnVuZ2Vu LCAnZ2xlaWNoJyAoPSB1bnZlcmFlbmRlcnQpIGF1c2dlYmxlbmRldC4KICAgICAgICB2YXIgYWt0 aXZBcnRlbiA9IHsgJ25ldSc6IHRydWUsICdnZWFlbmRlcnQnOiB0cnVlLCAndmVybG9yZW4tbGVl cic6IHRydWUsICdnbGVpY2gnOiBmYWxzZSB9OwogICAgICAgIHZhciBzdWNoZSA9ICcnOwoKICAg ICAgICBmdW5jdGlvbiByZW5kZXJuKCkgewogICAgICAgICAgICB2YXIgZ2VmaWx0ZXJ0ID0gcmVz LmRpZmYuZmlsdGVyKGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgICAgIGlmICghYWt0aXZBcnRl bltkLmFydF0pIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIGlmIChzdWNoZSkgewogICAg ICAgICAgICAgICAgICAgIHZhciBzID0gc3VjaGUudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAg ICAgICAgICBpZiAoKGQubmFtZXx8JycpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzKSA8IDAgJiYK ICAgICAgICAgICAgICAgICAgICAgICAgKGQuZGF0dW18fCcnKS5pbmRleE9mKHMpIDwgMCAmJgog ICAgICAgICAgICAgICAgICAgICAgICAoZC5hbHR8fCcnKS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yo cykgPCAwICYmCiAgICAgICAgICAgICAgICAgICAgICAgIChkLm5ldXx8JycpLnRvTG93ZXJDYXNl KCkuaW5kZXhPZihzKSA8IDApIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdmFyIHJv d3MgPSBnZWZpbHRlcnQuc2xpY2UoMCwgNTAwKS5tYXAoZnVuY3Rpb24oZCkgewogICAgICAgICAg ICAgICAgdmFyIGFydExhYmVsID0gewogICAgICAgICAgICAgICAgICAgICduZXUnOiAgICAgICAg ICAgICc8c3BhbiBzdHlsZT0iY29sb3I6IzFmN2ExZiI+bmV1PC9zcGFuPicsCiAgICAgICAgICAg ICAgICAgICAgJ2dlYWVuZGVydCc6ICAgICAgJzxzcGFuIHN0eWxlPSJjb2xvcjojYjA2MDAwIj5n ZcOkbmRlcnQ8L3NwYW4+JywKICAgICAgICAgICAgICAgICAgICAnZ2xlaWNoJzogICAgICAgICAn PHNwYW4gc3R5bGU9ImNvbG9yOiM4ODgiPmdsZWljaDwvc3Bhbj4nLAogICAgICAgICAgICAgICAg ICAgICd2ZXJsb3Jlbi1sZWVyJzogICc8c3BhbiBzdHlsZT0iY29sb3I6I2IwMjAyMCIgdGl0bGU9 IkV4Y2VsLVplbGxlIGxlZXIgb2RlciBDb2RlIOKAni4iIOKAlCBFaW50cmFnIHdpcmQgZW50ZmVy bnQiPmxlZXIgaW4gRXhjZWw8L3NwYW4+JwogICAgICAgICAgICAgICAgfVtkLmFydF0gfHwgZC5h cnQ7CiAgICAgICAgICAgICAgICByZXR1cm4gJzx0cj4nICsKICAgICAgICAgICAgICAgICAgICAn PHRkPicgKyBlc2NhcGVIVE1MKGQuZGF0dW0pICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAg ICAgJzx0ZD4nICsgZXNjYXBlSFRNTChkLm5hbWUpICsgKGQuaXN0RXhjZWxQZXJzb24gPyAnJyA6 ICcgPHNwYW4gc3R5bGU9ImNvbG9yOiNiMDYwMDA7Zm9udC1zaXplOjEwcHgiIHRpdGxlPSJOaWNo dCBpbiBkZXIgRXhjZWwiPuKaoDwvc3Bhbj4nKSArICc8L3RkPicgKwogICAgICAgICAgICAgICAg ICAgICc8dGQgc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZTtjb2xvcjojNjY2Ij4nICsgZXNj YXBlSFRNTChkLmFsdCB8fCAn4oCUJykgKyAnPC90ZD4nICsKICAgICAgICAgICAgICAgICAgICAn PHRkIHN0eWxlPSJmb250LWZhbWlseTptb25vc3BhY2UiPicgKyBlc2NhcGVIVE1MKGQubmV1IHx8 ICfigJQnKSArICc8L3RkPicgKwogICAgICAgICAgICAgICAgICAgICc8dGQ+JyArIGFydExhYmVs ICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAnPC90cj4nOwogICAgICAgICAgICB9KS5qb2lu KCcnKTsKICAgICAgICAgICAgdmFyIGhpbndlaXNHZWt1ZXJ6dCA9IGdlZmlsdGVydC5sZW5ndGgg PiA1MDAKICAgICAgICAgICAgICAgID8gJzxkaXYgc3R5bGU9InBhZGRpbmc6NnB4IDhweDtjb2xv cjojYjA2MDAwO2ZvbnQtc2l6ZToxMXB4Ij7igKYgJyArIChnZWZpbHRlcnQubGVuZ3RoIC0gNTAw KSArICcgd2VpdGVyZSBaZWlsZW4gYXVzZ2VibGVuZGV0IChGaWx0ZXIgZWluZ3JlbnplbikuPC9k aXY+JwogICAgICAgICAgICAgICAgOiAnJzsKICAgICAgICAgICAgdmFyIHRib2R5ID0gZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ2ltcC10bC10Ym9keScpOwogICAgICAgICAgICB2YXIgbWV0YSA9 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAtdGwtbWV0YScpOwogICAgICAgICAgICBpZiAo dGJvZHkpIHRib2R5LmlubmVySFRNTCA9IHJvd3M7CiAgICAgICAgICAgIGlmIChtZXRhKSBtZXRh LmlubmVySFRNTCA9ICdaZWlnZSAnICsgTWF0aC5taW4oZ2VmaWx0ZXJ0Lmxlbmd0aCwgNTAwKSAr ICcgdm9uICcgKyBnZWZpbHRlcnQubGVuZ3RoICsgJyBnZWZpbHRlcnRlbiBaZWlsZW4gKGdlc2Ft dCAnICsgcmVzLmRpZmYubGVuZ3RoICsgJykuJyArIGhpbndlaXNHZWt1ZXJ6dDsKICAgICAgICB9 CgogICAgICAgIGZ1bmN0aW9uIGNoayhhcnQsIGxhYmVsLCBjb3VudCwgY29sb3IpIHsKICAgICAg ICAgICAgdmFyIGNoZWNrZWQgPSBha3RpdkFydGVuW2FydF0gPyAnIGNoZWNrZWQnIDogJyc7CiAg ICAgICAgICAgIHJldHVybiAnPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmlubGluZS1mbGV4O2FsaWdu LWl0ZW1zOmNlbnRlcjtnYXA6NHB4O21hcmdpbi1yaWdodDoxMnB4O2N1cnNvcjpwb2ludGVyIj4n ICsKICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGRhdGEtYXJ0PSInICsg YXJ0ICsgJyInICsgY2hlY2tlZCArICc+ICcgKwogICAgICAgICAgICAgICAgJzxzcGFuIHN0eWxl PSJjb2xvcjonICsgY29sb3IgKyAnIj4nICsgbGFiZWwgKyAnPC9zcGFuPicgKwogICAgICAgICAg ICAgICAgJyA8c3BhbiBzdHlsZT0iY29sb3I6Izg4OCI+KCcgKyBjb3VudCArICcpPC9zcGFuPicg KwogICAgICAgICAgICAnPC9sYWJlbD4nOwogICAgICAgIH0KCiAgICAgICAgdmFyIGtvZXJwZXIg PQogICAgICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNv bHVtbjtnYXA6OHB4O21pbi13aWR0aDo3NjBweDttYXgtd2lkdGg6MTAwMHB4Ij4nICsKICAgICAg ICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZw eDtmb250LXNpemU6MTJweDtiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KTtwYWRkaW5nOjhw eDtib3JkZXItcmFkaXVzOjZweCI+JyArCiAgICAgICAgICAgICAgICAgICAgY2hrKCduZXUnLCAg ICAgICAgICAgICduZXUnLCAgICAgICAgICAgIHJlcy5zdGF0cy5uZXUsICAgICAgICAgICAnIzFm N2ExZicpICsKICAgICAgICAgICAgICAgICAgICBjaGsoJ2dlYWVuZGVydCcsICAgICAgJ2dlw6Ru ZGVydCcsICAgICAgIHJlcy5zdGF0cy5nZWFlbmRlcnQsICAgICAnI2IwNjAwMCcpICsKICAgICAg ICAgICAgICAgICAgICBjaGsoJ3ZlcmxvcmVuLWxlZXInLCAgJ2xlZXIgaW4gRXhjZWwnLCAgcmVz LnN0YXRzLnZlcmxvcmVuTGVlciwgICcjYjAyMDIwJykgKwogICAgICAgICAgICAgICAgICAgIGNo aygnZ2xlaWNoJywgICAgICAgICAndW52ZXLDpG5kZXJ0JywgICAgcmVzLnN0YXRzLmdsZWljaCwg ICAgICAgICcjODg4JykgKwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAg ICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW1wLXRsLXN1Y2hlIiBwbGFjZWhvbGRlcj0iRmls dGVyIChOYW1lLCBEYXR1bSwgQ29kZSkg4oCmIiBzdHlsZT0icGFkZGluZzo1cHggOHB4O2ZvbnQt c2l6ZToxMnB4O3dpZHRoOjEwMCU7Ym94LXNpemluZzpib3JkZXItYm94Ij4nICsKICAgICAgICAg ICAgICAgICc8ZGl2IGlkPSJpbXAtdGwtbWV0YSIgc3R5bGU9ImZvbnQtc2l6ZToxMS41cHg7Y29s b3I6IzY2NiI+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0ibWF4LWhlaWdo dDo1MjBweDtvdmVyZmxvdzphdXRvO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0 KTtib3JkZXItcmFkaXVzOjRweCI+JyArCiAgICAgICAgICAgICAgICAgICAgJzx0YWJsZSBzdHls ZT0id2lkdGg6MTAwJTtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Zm9udC1zaXplOjEycHgiPicg KwogICAgICAgICAgICAgICAgICAgICAgICAnPHRoZWFkIHN0eWxlPSJwb3NpdGlvbjpzdGlja3k7 dG9wOjA7YmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkKSI+JyArCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnPHRyPjx0aCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0O3BhZGRpbmc6NnB4IDhweDti b3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkIj5EYXR1bTwvdGg+JyArCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJzx0aCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0O3BhZGRpbmc6NnB4 IDhweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkIj5QZXJzb248L3RoPicgKwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICc8dGggc3R5bGU9InRleHQtYWxpZ246bGVmdDtwYWRk aW5nOjZweCA4cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZCI+dm9yaGVyPC90aD4nICsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHRoIHN0eWxlPSJ0ZXh0LWFsaWduOmxl ZnQ7cGFkZGluZzo2cHggOHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGQiPm5hY2hoZXI8 L3RoPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8dGggc3R5bGU9InRleHQt YWxpZ246bGVmdDtwYWRkaW5nOjZweCA4cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZCI+ QXJ0PC90aD48L3RyPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPC90aGVhZD4nICsKICAg ICAgICAgICAgICAgICAgICAgICAgJzx0Ym9keSBpZD0iaW1wLXRsLXRib2R5Ij48L3Rib2R5Picg KwogICAgICAgICAgICAgICAgICAgICc8L3RhYmxlPicgKwogICAgICAgICAgICAgICAgJzwvZGl2 PicgKwogICAgICAgICAgICAgICAgKHJlcy5zdGF0cy5jb2RlSWdub3JlID8gJzxkaXYgc3R5bGU9 ImZvbnQtc2l6ZToxMXB4O2NvbG9yOiNiMDYwMDAiPkhpbndlaXM6ICcgKyByZXMuc3RhdHMuY29k ZUlnbm9yZSArICcgWmVsbGVuIHd1cmRlbiB3ZWdlbiBDb2RlLU1hcHBpbmcgdmVyd29yZmVuICh6 LkIuIOKAni4iIOKGkiBpZ25vcmllcmVuKS48L2Rpdj4nIDogJycpICsKICAgICAgICAgICAgJzwv ZGl2Pic7CgogICAgICAgIG1vZGFsWmVpZ2VuKCdUcm9ja2VubGF1ZiDigJQgVm9yc2NoYXUgZGVy IMOEbmRlcnVuZ2VuJywKICAgICAgICAgICAga29lcnBlciwKICAgICAgICAgICAgJzxidXR0b24g Y2xhc3M9ImJ0biBidG4tcHJpbWFlciIgaWQ9ImltcC10bC1zY2hsaWVzc2VuIj5TY2hsaWXDn2Vu PC9idXR0b24+JywKICAgICAgICAgICAgbnVsbCwgbnVsbCwgeyByZWluZXJEaWFsb2c6IHRydWUg fSk7CgogICAgICAgIC8vIEV2ZW50LUJpbmRpbmdzIG5hY2ggUmVuZGVyCiAgICAgICAgcmVuZGVy bigpOwogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W2RhdGEtYXJ0XScp LmZvckVhY2goZnVuY3Rpb24oY2IpIHsKICAgICAgICAgICAgY2IuYWRkRXZlbnRMaXN0ZW5lcign Y2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBha3RpdkFydGVuW3RoaXMuZ2V0 QXR0cmlidXRlKCdkYXRhLWFydCcpXSA9IHRoaXMuY2hlY2tlZDsKICAgICAgICAgICAgICAgIHJl bmRlcm4oKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgICAgdmFyIHN1Y2hlRWwg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1wLXRsLXN1Y2hlJyk7CiAgICAgICAgaWYgKHN1 Y2hlRWwpIHN1Y2hlRWwuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbigpIHsKICAg ICAgICAgICAgc3VjaGUgPSB0aGlzLnZhbHVlLnRyaW0oKTsKICAgICAgICAgICAgcmVuZGVybigp OwogICAgICAgIH0pOwogICAgICAgIHZhciBzY2hsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J2ltcC10bC1zY2hsaWVzc2VuJyk7CiAgICAgICAgaWYgKHNjaGwpIHNjaGwuYWRkRXZlbnRMaXN0 ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgbW9kYWxTY2hsaWVzc2VuKHRy dWUpOwogICAgICAgICAgICAvLyBVWC1BdWRpdCBTcHJpbnQgMi44ICgyMDI2LTA1LTI5KTogbmFj aCBUcm9ja2VubGF1Zi1TY2hsaWVzc2VuCiAgICAgICAgICAgIC8vIGRlbiBGb2t1cyB6dXJ1ZWNr IGF1ZiAiSW1wb3J0IHN0YXJ0ZW4iIGltIFN0YXR1cy1CaWxkc2NoaXJtLAogICAgICAgICAgICAv LyBkYW1pdCBkZXIgbmFlY2hzdGUgU2Nocml0dCBkaXJla3Qga2xhciBpc3QgKFRhc3RhdHVyLVVz ZXIpLgogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg dmFyIGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAtc3RhcnRlbicpOwogICAgICAg ICAgICAgICAgaWYgKGJ0bikgeyBidG4uZm9jdXMoKTsgYnRuLnNjcm9sbEludG9WaWV3KHsgYmxv Y2s6ICdjZW50ZXInLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7IH0KICAgICAgICAgICAgfSwgMTAw KTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvLyBJbXBvcnR2b3JnYW5nIGFibGF1ZmVuOiBCYWNr dXAgLT4gVHJhbnNmb3JtYXRpb24gLT4gU2NocmVpYmVuLgogICAgLy8gVmVyd2VuZGV0IGVpbiBQ cm9ncmVzcy1Nb2RhbCBtaXQgZHJlaSBQaGFzZW4uIEJld3Vzc3QgbGFuZ3NhbSB1bmQgaW4KICAg IC8vIEV0YXBwZW4sIGRhbWl0IGRlciBVc2VyIHZpc3VlbGwgdmVyZm9sZ2VuIGthbm4gd2FzIHBh c3NpZXJ0LgogICAgZnVuY3Rpb24gaW1wU2NocmVpYmVuU3RhcnRlbigpIHsKICAgICAgICBpZiAo IWltcFN0YXRlKSByZXR1cm47CiAgICAgICAgdmFyIHMgPSBpbXBTdGF0ZTsKCiAgICAgICAgLy8g S29uc2VxdWVuei1adXNhbW1lbmZhc3N1bmc6IGRlbSBVc2VyIHZvciBkZW0gU2NocmVpYmVuIHZv ciBBdWdlbgogICAgICAgIC8vIGZ1ZWhyZW4sIHdhcyBkZXIgSW1wb3J0IGtvbmtyZXQgYmV3aXJr dCDigJQgaW5zYmVzb25kZXJlIG5ldWUgUGVyc29uZW4KICAgICAgICAvLyAoRHVwbGlrYXQtUmlz aWtvKSB1bmQgWmVsbGVuLCBkaWUgZ2VsZWVydCBzdGF0dCBiZWZ1ZWxsdCB3ZXJkZW4KICAgICAg ICAvLyAoQ29kZSB1bmJla2FubnQvaWdub3JpZXJ0IG9kZXIgRXhjZWwtWmVsbGUgbGVlcikuIFF1 ZWxsZSBpc3QgZXhha3QKICAgICAgICAvLyBkaWVzZWxiZSBEaWZmLUJlcmVjaG51bmcgd2llIGlt IFRyb2NrZW5sYXVmLgogICAgICAgIHZhciBwTmV1ICAgICAgPSBzLnBlcnNvbmVuTWF0Y2hlcy5m aWx0ZXIoZnVuY3Rpb24obSkgeyByZXR1cm4gbS5uZXVBbmxlZ2VuICYmICFtLnppZWxJZDsgfSku bGVuZ3RoOwogICAgICAgIHZhciBwQWVobmxpY2ggPSBzLnBlcnNvbmVuTWF0Y2hlcy5maWx0ZXIo ZnVuY3Rpb24obSkgeyByZXR1cm4gbS5zdGF0dXMgPT09ICduZXUnICYmIG0uYWVobmxpY2ggJiYg bS5hZWhubGljaC5sZW5ndGg7IH0pLmxlbmd0aDsKICAgICAgICB2YXIgdGwgICAgICAgID0gaW1w VHJvY2tlbmxhdWZCZXJlY2huZW4ocyk7CgogICAgICAgIC8vIE0yOiBSYW5nL1Bvc2l0aW9uLUFl bmRlcnVuZ2VuIHNpY2h0YmFyIG1hY2hlbi4gRGVyIEltcG9ydCB6aWVodCBkZW4KICAgICAgICAv LyBFeGNlbC1SYW5nIChTcGFsdGUgRikgYXVmIGRpZSBnZW1hdGNodGUgUGVyc29uIOKAlCBkYXMg a2FubiBkaWUKICAgICAgICAvLyBSZWloZW5mb2xnZSBkZXIgUGVyc29uYWxsaXN0ZSB1bXNvcnRp ZXJlbiwgZWluIGxlaWNodCB1ZWJlcnNlaGVuZXIKICAgICAgICAvLyBOZWJlbmVmZmVrdCBlaW5l cyByZWluZW4gU2NoaWNodC1JbXBvcnRzLgogICAgICAgIHZhciBwaWRQb3MgPSB7fTsKICAgICAg ICAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHApIHsgcGlkUG9z W1N0cmluZyhwLmlkKV0gPSBwLnBvc2l0aW9uOyB9KTsKICAgICAgICB2YXIgcmFlbmdlID0gcy5w ZXJzb25lbk1hdGNoZXMuZmlsdGVyKGZ1bmN0aW9uKG0pIHsKICAgICAgICAgICAgcmV0dXJuIG0u emllbElkICYmIG0uZXhjZWwucmFuZyAhPSBudWxsICYmIHBpZFBvc1tTdHJpbmcobS56aWVsSWQp XSAhPT0gbS5leGNlbC5yYW5nOwogICAgICAgIH0pLmxlbmd0aDsKCiAgICAgICAgdmFyIHplaWxl biA9IFsKICAgICAgICAgICAgJ0RpZSBFaW50csOkZ2UgaW0gRXhjZWwtWmVpdHJhdW0gKCcgKwog ICAgICAgICAgICBzLmRhdHVtU3BhbHRlblswXS5kYXR1bSArICcgYmlzICcgKwogICAgICAgICAg ICBzLmRhdHVtU3BhbHRlbltzLmRhdHVtU3BhbHRlbi5sZW5ndGggLSAxXS5kYXR1bSArCiAgICAg ICAgICAgICcpIHdlcmRlbiBmw7xyIGRpZSBpbXBvcnRpZXJ0ZW4gUGVyc29uZW4gZHVyY2ggZGll IEV4Y2VsLVdlcnRlIEVSU0VUWlQuICcgKwogICAgICAgICAgICAnS29tbWVudGFyZSBhdXMgZGVy IEV4Y2VsIHdlcmRlbiBlcmfDpG56dCDigJQgdm9yaGFuZGVuZSBibGVpYmVuIGVyaGFsdGVuLiAn ICsKICAgICAgICAgICAgJ1BlcnNvbmVuLCBkaWUgbmljaHQgaW4gZGVyIEV4Y2VsIHN0ZWhlbiwg YmVoYWx0ZW4gaWhyZSBFaW50csOkZ2UgdW52ZXLDpG5kZXJ0LicKICAgICAgICBdOwoKICAgICAg ICB2YXIgYmlsYW56ID0gW107CiAgICAgICAgaWYgKHRsLnN0YXRzLm5ldSkgICAgICAgICAgYmls YW56LnB1c2goJ+KAoiAnICsgdGwuc3RhdHMubmV1ICsgJyBaZWxsZShuKSBuZXUgZWluZ2V0cmFn ZW4nKTsKICAgICAgICBpZiAodGwuc3RhdHMuZ2VhZW5kZXJ0KSAgICBiaWxhbnoucHVzaCgn4oCi ICcgKyB0bC5zdGF0cy5nZWFlbmRlcnQgKyAnIFplbGxlKG4pIGdlw6RuZGVydCcpOwogICAgICAg IGlmICh0bC5zdGF0cy52ZXJsb3JlbkxlZXIpIGJpbGFuei5wdXNoKCfigKIgJyArIHRsLnN0YXRz LnZlcmxvcmVuTGVlciArICcgWmVsbGUobikgd2VyZGVuIEdFTEVFUlQgKGluIEV4Y2VsIGxlZXIg b2RlciBDb2RlIG5pY2h0IHp1Z2VvcmRuZXQpJyk7CiAgICAgICAgaWYgKHBOZXUpICAgICAgICAg ICAgICAgICAgYmlsYW56LnB1c2goJ+KAoiAnICsgcE5ldSArICcgUGVyc29uKGVuKSB3ZXJkZW4g TkVVIGFuZ2VsZWd0JyArIChwQWVobmxpY2ggPyAnIOKAlCBkYXZvbiAnICsgcEFlaG5saWNoICsg JyBtaXQgVGlwcGZlaGxlci1WZXJkYWNodCEnIDogJycpKTsKICAgICAgICBpZiAocmFlbmdlKSAg ICAgICAgICAgICAgICBiaWxhbnoucHVzaCgn4oCiICcgKyByYWVuZ2UgKyAnIFBlcnNvbihlbikg YmVrb21tZW4gZWluZSBuZXVlIFJlaWhlbmZvbGdlLVBvc2l0aW9uIGF1cyBkZXIgRXhjZWwgKFNw YWx0ZSBGKScpOwogICAgICAgIGlmIChiaWxhbnoubGVuZ3RoKSB6ZWlsZW4ucHVzaCgnRGFzIGJl d2lya3Q6XG4nICsgYmlsYW56LmpvaW4oJ1xuJykpOwoKICAgICAgICBpZiAocEFlaG5saWNoKSB7 CiAgICAgICAgICAgIHplaWxlbi5wdXNoKCfimqAgJyArIHBBZWhubGljaCArICcgbmV1IGFuenVs ZWdlbmRlIFBlcnNvbihlbikgw6RobmVsbiBlaW5lciBiZXN0ZWhlbmRlbiBQZXJzb24uIEJpdHRl IHZvcmhlciBpbSBNYXBwaW5nIHByw7xmZW4sIHNvbnN0IGVudHN0ZWhlbiBEdXBsaWthdGUuJyk7 CiAgICAgICAgfQogICAgICAgIGlmIChzLmphaHJJbmZvICYmIChzLmphaHJJbmZvLmF1c3Nlcmhh bGIgPiAwIHx8IHMuamFockluZm8uZG9taW5hbnRKYWhyICE9PSBzLmphaHJJbmZvLnBvcnRhbEph aHIpKSB7CiAgICAgICAgICAgIHplaWxlbi5wdXNoKCfimqAgSmFocmVzLUhpbndlaXM6IERhdGVp LVplaXRyYXVtICcgKyBzLmphaHJJbmZvLmRhdGVpVm9uICsgJyBiaXMgJyArIHMuamFockluZm8u ZGF0ZWlCaXMgKwogICAgICAgICAgICAgICAgJywgUG9ydGFsIHplaWd0IFBsYW51bmdzamFociAn ICsgcy5qYWhySW5mby5wb3J0YWxKYWhyICsgJy4gJyArCiAgICAgICAgICAgICAgICAocy5qYWhy SW5mby5hdXNzZXJoYWxiID8gcy5qYWhySW5mby5hdXNzZXJoYWxiICsgJyBUYWcoZSkgYXXDn2Vy aGFsYiBkZXMgYW5nZXplaWd0ZW4gWmVpdHJhdW1zIHdlcmRlbiBnZXNjaHJpZWJlbiwgYWJlciBu aWNodCBhbmdlemVpZ3QuICcgOiAnJykgKwogICAgICAgICAgICAgICAgJ0JpdHRlIHNpY2hlcnN0 ZWxsZW4sIGRhc3MgRGF0ZWkgdW5kIFBsYW51bmdzamFociB6dXNhbW1lbnBhc3Nlbi4nKTsKICAg ICAgICB9CgogICAgICAgIHplaWxlbi5wdXNoKCdFaW4gU2ljaGVyaGVpdHMtQmFja3VwIGRlciBh a3R1ZWxsZW4gUGxhbnVuZyB3aXJkIHZvcmhlciBhdXRvbWF0aXNjaCBhbmdlbGVndC4nKTsKICAg ICAgICB6ZWlsZW4ucHVzaCgnRm9ydHNldHplbj8nKTsKCiAgICAgICAgYmVzdGFldGlnZW4oCiAg ICAgICAgICAgIHplaWxlbi5qb2luKCdcblxuJyksCiAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBp bXBTY2hyZWliZW5BdXNmdWVocmVuKCk7IH0sCiAgICAgICAgICAgIHsgdGl0ZWw6ICdFeGNlbC1J bXBvcnQgYmVzdMOkdGlnZW4nLCBqYVRleHQ6ICdGb3J0c2V0emVuJywgamFEYW5nZXI6IHRydWUg fQogICAgICAgICk7CiAgICB9CgogICAgZnVuY3Rpb24gaW1wUHJvZ3Jlc3NNb2RhbE9lZmZuZW4o KSB7CiAgICAgICAgdmFyIGtvZXJwZXIgPQogICAgICAgICAgICAnPGRpdiBjbGFzcz0iaW1wLXBy b2dyZXNzLWtvbnRleHQiPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImltcC1wcm9n cmVzcy1waGFzZSIgaWQ9ImltcC1wcm9nLXBoYXNlIj5Wb3JiZXJlaXRlbiDigKY8L2Rpdj4nICsK ICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJpbXAtcHJvZ3Jlc3MtYmFyIj48ZGl2IGNsYXNz PSJpbXAtcHJvZ3Jlc3MtZmlsbCIgaWQ9ImltcC1wcm9nLWZpbGwiPjwvZGl2PjwvZGl2PicgKwog ICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImltcC1wcm9ncmVzcy10ZXh0IiBpZD0iaW1wLXBy b2ctdGV4dCI+Jm5ic3A7PC9kaXY+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIG1v ZGFsWmVpZ2VuKCdFeGNlbC1JbXBvcnQgbMOkdWZ0Jywga29lcnBlciwgJycsIG51bGwpOwogICAg ICAgIC8vIFNjaGxpZcOfZW4tS3JldXogdmVyc3RlY2tlbiDigJQgSW1wb3J0IGRhcmYgbmljaHQg YWJnZWJyb2NoZW4gd2VyZGVuCiAgICAgICAgdmFyIG1vZCA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdtb2RhbC1vdmVybGF5Jyk7CiAgICAgICAgaWYgKG1vZCkgbW9kLnNldEF0dHJpYnV0ZSgn ZGF0YS1uby1jbG9zZScsICcxJyk7CiAgICB9CiAgICBmdW5jdGlvbiBpbXBQcm9ncmVzc1VwZGF0 ZShwaGFzZSwgcHJvemVudCwgdGV4dCkgewogICAgICAgIHZhciBwaCA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdpbXAtcHJvZy1waGFzZScpOwogICAgICAgIHZhciBmbCA9IGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdpbXAtcHJvZy1maWxsJyk7CiAgICAgICAgdmFyIHR4ID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ2ltcC1wcm9nLXRleHQnKTsKICAgICAgICBpZiAocGggJiYgcGhhc2Up IHBoLnRleHRDb250ZW50ID0gcGhhc2U7CiAgICAgICAgaWYgKGZsKSBmbC5zdHlsZS53aWR0aCA9 IE1hdGgubWF4KDAsIE1hdGgubWluKDEwMCwgcHJvemVudCkpICsgJyUnOwogICAgICAgIGlmICh0 eCkgdHgudGV4dENvbnRlbnQgPSB0ZXh0IHx8ICcnOwogICAgfQogICAgZnVuY3Rpb24gaW1wUHJv Z3Jlc3NGZWhsZXIobXNnKSB7CiAgICAgICAgdmFyIHBoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ2ltcC1wcm9nLXBoYXNlJyk7CiAgICAgICAgdmFyIHR4ID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ2ltcC1wcm9nLXRleHQnKTsKICAgICAgICB2YXIgZmwgPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnaW1wLXByb2ctZmlsbCcpOwogICAgICAgIGlmIChwaCkgeyBwaC50ZXh0Q29udGVu dCA9ICfinYwgRmVobGVyJzsgcGguc3R5bGUuY29sb3IgPSAndmFyKC0tZmFyYmUtZmVobGVyKSc7 IH0KICAgICAgICBpZiAoZmwpIHsgZmwuc3R5bGUuYmFja2dyb3VuZCA9ICd2YXIoLS1mYXJiZS1m ZWhsZXIpJzsgfQogICAgICAgIGlmICh0eCkgdHgudGV4dENvbnRlbnQgPSBtc2c7CiAgICAgICAg Ly8gU2NobGllw59lbi1CdXR0b24gYW5oYWVuZ2VuCiAgICAgICAgdmFyIGZ1c3MgPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtZnVzcycpOwogICAgICAgIGlmIChmdXNzKSB7CiAgICAg ICAgICAgIGZ1c3MuaW5uZXJIVE1MID0gJzxidXR0b24gY2xhc3M9ImJ0biIgaWQ9ImltcC1wcm9n LWNsb3NlIj5TY2hsaWXDn2VuPC9idXR0b24+JzsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ2ltcC1wcm9nLWNsb3NlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBtb2Rh bFNjaGxpZXNzZW4pOwogICAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIGltcFByb2dyZXNzRXJm b2xnKGVpbnRyYWVnZSwga29tbWVudGFyZSwgYmFja3VwTmFtZSkgewogICAgICAgIGltcFByb2dy ZXNzVXBkYXRlKCfinJMgSW1wb3J0IGFiZ2VzY2hsb3NzZW4nLCAxMDAsCiAgICAgICAgICAgIGVp bnRyYWVnZSArICcgRWludHLDpGdlIHVuZCAnICsga29tbWVudGFyZSArICcgS29tbWVudGFyZSDD vGJlcm5vbW1lbi4gQmFja3VwOiAnICsgKGJhY2t1cE5hbWUgfHwgJ+KAkycpKTsKICAgICAgICB2 YXIgcGggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1wLXByb2ctcGhhc2UnKTsKICAgICAg ICBpZiAocGgpIHBoLnN0eWxlLmNvbG9yID0gJ3ZhcigtLWZhcmJlLWVyZm9sZyknOwogICAgICAg IHZhciBmdXNzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLWZ1c3MnKTsKICAgICAg ICBpZiAoZnVzcykgewogICAgICAgICAgICBmdXNzLmlubmVySFRNTCA9ICc8YnV0dG9uIGNsYXNz PSJidG4gYnRuLXByaW1hZXIiIGlkPSJpbXAtcHJvZy1jbG9zZSI+U2VpdGUgbmV1IGxhZGVuPC9i dXR0b24+JzsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltcC1wcm9nLWNs b3NlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAg ICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQog ICAgfQoKICAgIGZ1bmN0aW9uIGltcFNjaHJlaWJlbkF1c2Z1ZWhyZW4oKSB7CiAgICAgICAgdmFy IHMgPSBpbXBTdGF0ZTsKICAgICAgICBpZiAoIXMpIHJldHVybjsKICAgICAgICBpbXBQcm9ncmVz c01vZGFsT2VmZm5lbigpOwoKICAgICAgICAvLyA9PT0gUGhhc2UgMTogQmFja3VwID09PQogICAg ICAgIGltcFByb2dyZXNzVXBkYXRlKCdTaWNoZXJoZWl0cy1CYWNrdXAgd2lyZCBhbmdlbGVndCDi gKYnLCA1LCAnUE9TVCAvYXBpL3BsYW51bmcvYmFja3VwJyk7CiAgICAgICAgdmFyIGJhY2t1cE5h bWUgPSAnJzsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICBhcGlQ b3N0KCcvYXBpL3BsYW51bmcvYmFja3VwJywge30pLnRoZW4oZnVuY3Rpb24ocikgewogICAgICAg ICAgICAgICAgYmFja3VwTmFtZSA9IHIuZGF0ZWluYW1lIHx8ICcnOwogICAgICAgICAgICAgICAg aW1wUHJvZ3Jlc3NVcGRhdGUoJ1NpY2hlcmhlaXRzLUJhY2t1cDogJyArIChiYWNrdXBOYW1lIHx8 ICdPSycpLCAyMCwgJ0JhY2t1cCBlcnN0ZWxsdCcpOwogICAgICAgICAgICAgICAgc2V0VGltZW91 dChmdW5jdGlvbigpIHsgaW1wU2NocmVpYmVuUGhhc2UyKHMsIGJhY2t1cE5hbWUpOyB9LCAzNTAp OwogICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpbXBQ cm9ncmVzc0ZlaGxlcignQmFja3VwIGZlaGxnZXNjaGxhZ2VuOiAnICsgZS5tZXNzYWdlKTsKICAg ICAgICAgICAgfSk7CiAgICAgICAgfSwgMjAwKTsKICAgIH0KCiAgICBmdW5jdGlvbiBpbXBTY2hy ZWliZW5QaGFzZTIocywgYmFja3VwTmFtZSkgewogICAgICAgIC8vID09PSBQaGFzZSAyYTogTmV1 ZSBQZXJzb25lbiBhbmxlZ2VuID09PQogICAgICAgIC8vIEZ1ZXIgamVkZXMgTWF0Y2ggbWl0IGBu ZXVBbmxlZ2VuPXRydWVgIGVpbmVuIFBPU1QgL2FwaS9wZXJzb25lbgogICAgICAgIC8vIHNlcXVl bnppZWxsIGFic2V0emVuLiBTZXJ2ZXIgdmVyZ2lidCBkaWUgbmV1ZSBJRCArIE1hcmtlcgogICAg ICAgIC8vIGBpbXBvcnROZXVBbWAsIGRhbWl0IGRpZSBQZXJzb25hbHZlcndhbHR1bmcgc2llIHNw YWV0ZXIgaW0KICAgICAgICAvLyBOZXVpbXBvcnQtQmxvY2sgb2JlbiBzYW1tZWx0LiBOYWNoIGFs bGVuIFBPU1RzIGhvbGVuIHdpciBkZW4KICAgICAgICAvLyBmcmlzY2hlbiBQbGFudW5ncy1TdGFu ZCB2b20gU2VydmVyIChHRVQgL2FwaS9wbGFudW5nKSwgYmV2b3Igd2lyIGluCiAgICAgICAgLy8g UGhhc2UgMmIgZGllIEVpbnRyYWVnZSB0cmFuc2Zvcm1pZXJlbiDigJQgc29uc3QgZmVobHRlbiBk aWUgbmV1ZW4KICAgICAgICAvLyBQZXJzb25lbiBpbSBuZXVlUGxhbnVuZy1Cb2R5LgogICAgICAg IHZhciBuZXVBbnp1bGVnZW4gPSBzLnBlcnNvbmVuTWF0Y2hlcy5maWx0ZXIoZnVuY3Rpb24obSkg eyByZXR1cm4gbS5uZXVBbmxlZ2VuICYmICFtLnppZWxJZDsgfSk7CiAgICAgICAgaWYgKG5ldUFu enVsZWdlbi5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgLy8gQXVjaCBvaG5lIG5ldWUgUGVy c29uZW4gZGVuIEZSSVNDSEVOIFN0YW5kIHZvbSBTZXJ2ZXIgaG9sZW4sIGJldm9yCiAgICAgICAg ICAgIC8vIHdpciB0cmFuc2Zvcm1pZXJlbi4gRGVyIG5hY2hmb2xnZW5kZSBWb2xsLVBVVCB1ZWJl cnNjaHJlaWJ0CiAgICAgICAgICAgIC8vIHBsYW51bmcuanNvbiBrb21wbGV0dCDigJQgYmF1dCBl ciBhdWYgZWluZW0gdmVyYWx0ZXRlbiBaLnBsYW51bmcgYXVmCiAgICAgICAgICAgIC8vICh6LkIu IHNlaXQgU2VpdGVuYXVmcnVmIGhhdCBqZW1hbmQgYW5kZXJlcyBaZWxsZW4gZWRpdGllcnQpLCBn aW5nZW4KICAgICAgICAgICAgLy8gZGllc2UgQWVuZGVydW5nZW4gdmVybG9yZW4gdW5kIEJlc3Rh bmQtb25seS1QZXJzb25lbiB3dWVyZGVuIG1pdAogICAgICAgICAgICAvLyBBbHRzdGFuZCB6dXJ1 ZWNrZ2VzY2hyaWViZW4uIEVpbiBHRVQgdW5taXR0ZWxiYXIgdm9yIGRlbSBUcmFuc2Zvcm0KICAg ICAgICAgICAgLy8gdmVya2xlaW5lcnQgZGllc2VzIEZlbnN0ZXIgYXVmIGRlbiBlaWdlbnRsaWNo ZW4gU2NocmVpYnZvcmdhbmcuCiAgICAgICAgICAgIGltcFByb2dyZXNzVXBkYXRlKCdBa3R1ZWxs ZW4gUGxhbnVuZ3NzdGFuZCBsYWRlbiDigKYnLCAyNCwgJ0dFVCAvYXBpL3BsYW51bmcnKTsKICAg ICAgICAgICAgaW1wR2V0UGxhbnVuZ01pdFZlcnNpb24oKS50aGVuKGZ1bmN0aW9uKHApIHsKICAg ICAgICAgICAgICAgIFoucGxhbnVuZyA9IHA7CiAgICAgICAgICAgICAgICBpbXBTY2hyZWliZW5Q aGFzZTJUcmFuc2Zvcm0ocywgYmFja3VwTmFtZSk7CiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0 aW9uKGUpIHsKICAgICAgICAgICAgICAgIGltcFByb2dyZXNzRmVobGVyKCdBa3R1ZWxsZXIgUGxh bnVuZ3NzdGFuZCBrb25udGUgbmljaHQgZ2VsYWRlbiB3ZXJkZW46ICcgKyBlLm1lc3NhZ2UpOwog ICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB2YXIg bnJKZXR6dCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTsKICAgICAgICB2YXIgYW56QW5nZWxl Z3QgPSAwOwogICAgICAgIGZ1bmN0aW9uIG5hZWNoc3RlUGVyc29uKCkgewogICAgICAgICAgICBp ZiAoYW56QW5nZWxlZ3QgPj0gbmV1QW56dWxlZ2VuLmxlbmd0aCkgewogICAgICAgICAgICAgICAg Ly8gQWxsZSBhbmdlbGVndCDigJQgUGxhbnVuZyBuZXUgbGFkZW4sIGRhbWl0IGRpZSBuZXVlbiBJ RHMgaW4KICAgICAgICAgICAgICAgIC8vIFoucGxhbnVuZy5wZXJzb25lbiB2ZXJmdWVnYmFyIHNp bmQuCiAgICAgICAgICAgICAgICBpbXBQcm9ncmVzc1VwZGF0ZSgnUGVyc29uZW4tTGlzdGUgd2ly ZCBha3R1YWxpc2llcnQg4oCmJywgMjQsICdGcmlzY2hlIElEcyB2b20gU2VydmVyIGxhZGVuJyk7 CiAgICAgICAgICAgICAgICBpbXBHZXRQbGFudW5nTWl0VmVyc2lvbigpLnRoZW4oZnVuY3Rpb24o cCkgewogICAgICAgICAgICAgICAgICAgIFoucGxhbnVuZyA9IHA7CiAgICAgICAgICAgICAgICAg ICAgaW1wU2NocmVpYmVuUGhhc2UyVHJhbnNmb3JtKHMsIGJhY2t1cE5hbWUpOwogICAgICAgICAg ICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGltcFByb2dy ZXNzRmVobGVyKCdQbGFudW5nIGtvbm50ZSBuYWNoIFBlcnNvbmVuLUFubGFnZSBuaWNodCBuZXUg Z2VsYWRlbiB3ZXJkZW46ICcgKyBlLm1lc3NhZ2UpOwogICAgICAgICAgICAgICAgfSk7CiAgICAg ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIG0gPSBuZXVB bnp1bGVnZW5bYW56QW5nZWxlZ3RdOwogICAgICAgICAgICB2YXIgZGF0ZW4gPSB7CiAgICAgICAg ICAgICAgICBuYW1lOiBtLmV4Y2VsLm5hY2huYW1lLAogICAgICAgICAgICAgICAgdm9ybmFtZTog JycsICAvLyBFeGNlbCBrZW5udCBudXIgZGVuIE5hY2huYW1lbiDigJQgd2lyZCBpbSBOZXVpbXBv cnQtQmxvY2sgbmFjaGdlcGZsZWd0CiAgICAgICAgICAgICAgICBncnVwcGU6IG0uZXhjZWwuZ3J1 cHBlIHx8ICcnLAogICAgICAgICAgICAgICAgb2U6IG0uZXhjZWwub2UgfHwgJycsCiAgICAgICAg ICAgICAgICB0ZWxlZm9uOiBtLmV4Y2VsLnRlbGVmb24gfHwgJycsCiAgICAgICAgICAgICAgICBl aW5yZWloZW46ICd1bnRlbicsCiAgICAgICAgICAgICAgICBpbXBvcnROZXVBbTogbnJKZXR6dAog ICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgaWR4ID0gYW56QW5nZWxlZ3QgKyAxOwogICAg ICAgICAgICBpbXBQcm9ncmVzc1VwZGF0ZSgnTmV1ZSBQZXJzb25lbiB3ZXJkZW4gYW5nZWxlZ3Qg 4oCmJywKICAgICAgICAgICAgICAgIDIxICsgTWF0aC5mbG9vcigzICogYW56QW5nZWxlZ3QgLyBu ZXVBbnp1bGVnZW4ubGVuZ3RoKSwKICAgICAgICAgICAgICAgICdBbmxlZ2VuOiAnICsgbS5leGNl bC5uYWNobmFtZSArICcgKCcgKyBpZHggKyAnLycgKyBuZXVBbnp1bGVnZW4ubGVuZ3RoICsgJykn KTsKICAgICAgICAgICAgYXBpUG9zdCgnL2FwaS9wZXJzb25lbicsIGRhdGVuKS50aGVuKGZ1bmN0 aW9uKHIpIHsKICAgICAgICAgICAgICAgIG0uemllbElkID0gci5pZDsKICAgICAgICAgICAgICAg IGFuekFuZ2VsZWd0Kys7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KG5hZWNoc3RlUGVyc29u LCAzMCk7CiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAg IGltcFByb2dyZXNzRmVobGVyKCdQZXJzb24gIicgKyBtLmV4Y2VsLm5hY2huYW1lICsgJyIga29u bnRlIG5pY2h0IGFuZ2VsZWd0IHdlcmRlbjogJyArIGUubWVzc2FnZSk7CiAgICAgICAgICAgIH0p OwogICAgICAgIH0KICAgICAgICBzZXRUaW1lb3V0KG5hZWNoc3RlUGVyc29uLCAxMDApOwogICAg fQoKICAgIGZ1bmN0aW9uIGltcFNjaHJlaWJlblBoYXNlMlRyYW5zZm9ybShzLCBiYWNrdXBOYW1l KSB7CiAgICAgICAgLy8gPT09IFBoYXNlIDJiOiBUcmFuc2Zvcm1hdGlvbiA9PT0KICAgICAgICBp bXBQcm9ncmVzc1VwZGF0ZSgnRGF0ZW4gd2VyZGVuIHRyYW5zZm9ybWllcnQg4oCmJywgMjUsICdL b3BpZSBkZXIgYmVzdGVoZW5kZW4gUGxhbnVuZyB3aXJkIHZvcmJlcmVpdGV0Jyk7CgogICAgICAg IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBuZXVlUGxhbnVuZyA9IEpT T04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoWi5wbGFudW5nKSk7CiAgICAgICAgICAgIHZhciBleGNl bERhdHVtU2V0ID0ge307CiAgICAgICAgICAgIHMuZGF0dW1TcGFsdGVuLmZvckVhY2goZnVuY3Rp b24oZCkgeyBleGNlbERhdHVtU2V0W2QuZGF0dW1dID0gdHJ1ZTsgfSk7CgogICAgICAgICAgICAv LyBBbHRlIEVpbnRyYWVnZSBpbSBFeGNlbC1aZWl0cmF1bSBlbnRmZXJuZW4g4oCUIGFiZXIgTlVS IGZ1ZXIKICAgICAgICAgICAgLy8gUGVyc29uZW4sIGRpZSBpbiBkZXIgRXhjZWwgYXVmdGF1Y2hl biBVTkQgZG9ydCBtaW5kZXN0ZW5zIGVpbmVuCiAgICAgICAgICAgIC8vIEVpbnRyYWcgaGFiZW4u IFBlcnNvbmVuLCBkaWUgbnVyIGltIEJlc3RhbmQgc2luZCAobmV1ZSBNaXRhcmJlaXRlciwKICAg ICAgICAgICAgLy8gbm9jaCBuaWNodCBpbiBkZXIgRXhjZWwtVm9ybGFnZSksIGJlaGFsdGVuIGlo cmUgRWludHJhZWdlLgogICAgICAgICAgICAvLyBWb3JoZXIgaGFiZW4gd2lyIGhpZXIgZGVuIGdh bnplbiBUYWcgZ2VsZWVydCDigJQgZGFzIGhhdCBmdWVyCiAgICAgICAgICAgIC8vIEJlc3RhbmQt b25seS1QZXJzb25lbiBhbGxlIFNjaGljaHRlbiBpbSBJbXBvcnR6ZWl0cmF1bQogICAgICAgICAg ICAvLyB1bmJlYWJzaWNodGlndCBlbnRmZXJudC4KICAgICAgICAgICAgLy8KICAgICAgICAgICAg Ly8gTTEtU2NodXR6OiBFaW5lIGdlbWF0Y2h0ZSBQZXJzb24gbWl0IEtPTVBMRVRUIGxlZXJlciBF eGNlbC1aZWlsZQogICAgICAgICAgICAvLyAoMCBFaW50cmFlZ2UpIHdpcmQgTklDSFQgZ2VsZWVy dC4gU29uc3Qgd3VlcmRlIGVpbmUgUGVyc29uLCBkaWUgaW4KICAgICAgICAgICAgLy8gZGVyIFZv cmxhZ2UgbnVyIGdlbGlzdGV0LCBhYmVyIGltIFplaXRyYXVtIGdhciBuaWNodCBlaW5nZXBsYW50 CiAgICAgICAgICAgIC8vIGlzdCwgaWhyZSBrb21wbGV0dGVuIGJlc3RlaGVuZGVuIFNjaGljaHRl biB2ZXJsaWVyZW4uIEhhdCBkaWUKICAgICAgICAgICAgLy8gWmVpbGUgYXVjaCBudXIgRUlORU4g RWludHJhZywgZ2lsdCBkaWUgRXhjZWwgYWxzIHZlcmJpbmRsaWNoIHVuZAogICAgICAgICAgICAv LyBsZWVyZSBaZWxsZW4gbG9lc2NoZW4gd2llIGdld29sbHQuCiAgICAgICAgICAgIG5ldWVQbGFu dW5nLmVpbnRyYWVnZSA9IG5ldWVQbGFudW5nLmVpbnRyYWVnZSB8fCB7fTsKICAgICAgICAgICAg dmFyIGV4Y2VsUGlkU2V0ID0ge307CiAgICAgICAgICAgIHMucGVyc29uZW5NYXRjaGVzLmZvckVh Y2goZnVuY3Rpb24obSkgewogICAgICAgICAgICAgICAgaWYgKG0uemllbElkICYmIE9iamVjdC5r ZXlzKG0uZXhjZWwuZWludHJhZWdlIHx8IHt9KS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAg ICAgICAgZXhjZWxQaWRTZXRbU3RyaW5nKG0uemllbElkKV0gPSB0cnVlOwogICAgICAgICAgICAg ICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgT2JqZWN0LmtleXMobmV1ZVBsYW51bmcu ZWludHJhZWdlKS5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgICAgIGlmICghZXhj ZWxEYXR1bVNldFtkXSkgcmV0dXJuOwogICAgICAgICAgICAgICAgdmFyIGJ1Y2tldCA9IG5ldWVQ bGFudW5nLmVpbnRyYWVnZVtkXTsKICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGJ1Y2tldCku Zm9yRWFjaChmdW5jdGlvbihwaWQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZXhjZWxQaWRT ZXRbcGlkXSkgZGVsZXRlIGJ1Y2tldFtwaWRdOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAg ICAgIH0pOwogICAgICAgICAgICBuZXVlUGxhbnVuZy5rb21tZW50YXJlID0gbmV1ZVBsYW51bmcu a29tbWVudGFyZSB8fCB7fTsKCiAgICAgICAgICAgIGltcFByb2dyZXNzVXBkYXRlKCdEYXRlbiB3 ZXJkZW4gdHJhbnNmb3JtaWVydCDigKYnLCA0MCwgJ0FsdGUgRWludHLDpGdlIGltIFppZWx6ZWl0 cmF1bSBlbnRmZXJudCcpOwoKICAgICAgICAgICAgLy8gQ29kZS1NYXBwaW5nIHZvcmJlcmVpdGVu CiAgICAgICAgICAgIHZhciBjb2RlTWFwID0ge307CiAgICAgICAgICAgIHMuY29kZU1hdGNoZXMu Zm9yRWFjaChmdW5jdGlvbihtKSB7IGNvZGVNYXBbbS5jb2RlXSA9IG0uemllbDsgfSk7CgogICAg ICAgICAgICAvLyBOZXVlIEVpbnRyYWVnZSArIEtvbW1lbnRhcmUgZWluc2NocmVpYmVuLiBLb21t ZW50YXJlIGJlaGFsdGVuCiAgICAgICAgICAgIC8vIGlocmVuIE9SSUdJTkFMLUF1dG9yIGF1cyBk ZXIgRXhjZWwtTm90aXogdW5kIGJla29tbWVuIGJld3Vzc3QKICAgICAgICAgICAgLy8gS0VJTkVO IFplaXRzdGVtcGVsIChFeGNlbCBsaWVmZXJ0IGtlaW5lbiB2ZXJsYWVzc2xpY2hlbikg4oCUIGRh aGVyCiAgICAgICAgICAgIC8vIGhpZXIga2VpbiAiYWJzZW5kZXIiLyJqZXR6dCIgbWVoci4KICAg ICAgICAgICAgdmFyIGVpbnRyYWVnZUdlc2FtdCA9IDAsIGtvbW1lbnRhcmVHZXNhbXQgPSAwOwoK ICAgICAgICAgICAgdmFyIGlnbm9yaWVydENvZGVzID0gMDsKICAgICAgICAgICAgdmFyIGlnbm9y aWVydFBlcnNvbmVuID0gMDsKICAgICAgICAgICAgdmFyIHJhZW5nZVVlYmVybm9tbWVuID0gMDsK ICAgICAgICAgICAgdmFyIHdpZWRlcmhlcmdlc3RlbGx0ID0gMDsKICAgICAgICAgICAgdmFyIGRl ZHVwVWViZXJzcHJ1bmdlbiA9IDA7CiAgICAgICAgICAgIC8vIExpZWZlcnQgZGllIGJlc3RlaGVu ZGUgS29tbWVudGFybGlzdGUgZnVlciAoZGF0dW0scGlkKSBhbHMgQXJyYXkKICAgICAgICAgICAg Ly8g4oCUIG1pZ3JpZXJ0IGRhYmVpIGV2dGwuIG5vY2ggdm9yaGFuZGVuZSBBbHQtRm9ybWF0ZSAo U3RyaW5nIG9kZXIKICAgICAgICAgICAgLy8gU2luZ2xlLU9iamVjdCkgaW5zIG5ldWUgTGlzdGVu LVNjaGVtYSwgZGFtaXQgZGVyIEFwcGVuZCBuaWNodAogICAgICAgICAgICAvLyBlaW5lbiBNaXgg ZGVyIEZvcm1hdGUgaGludGVybGFlc3N0LgogICAgICAgICAgICBmdW5jdGlvbiBiZXN0ZWhlbmRl S29tbWVudGFyTGlzdGUoZGF0dW0sIHBpZCkgewogICAgICAgICAgICAgICAgdmFyIGJ1Y2tldCA9 IG5ldWVQbGFudW5nLmtvbW1lbnRhcmVbZGF0dW1dOwogICAgICAgICAgICAgICAgaWYgKCFidWNr ZXQpIHJldHVybiBbXTsKICAgICAgICAgICAgICAgIHZhciB2b3JoID0gYnVja2V0W3BpZF07CiAg ICAgICAgICAgICAgICBpZiAoIXZvcmgpIHJldHVybiBbXTsKICAgICAgICAgICAgICAgIGlmICh0 eXBlb2Ygdm9yaCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9y aC50cmltKCkKICAgICAgICAgICAgICAgICAgICAgICAgPyBbeyBpZDogJ2tfbGVnYWN5XycgKyBN YXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA5OTk5OSksIHRleHQ6IHZvcmgsIGdlYWVuZGVydEFt OiBudWxsLCBnZWFlbmRlcnRWb246IG51bGwgfV0KICAgICAgICAgICAgICAgICAgICAgICAgOiBb XTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZv cmgpKSByZXR1cm4gdm9yaC5zbGljZSgpOwogICAgICAgICAgICAgICAgaWYgKHZvcmgudGV4dCkg ewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbewogICAgICAgICAgICAgICAgICAgICAgICBp ZDogICAgICAgICAgIHZvcmguaWQgfHwgKCdrX2xlZ2FjeV8nICsgTWF0aC5mbG9vcihNYXRoLnJh bmRvbSgpICogOTk5OTkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogICAgICAgICB2 b3JoLnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGdlYWVuZGVydEFtOiAgdm9yaC5nZWFl bmRlcnRBbSB8fCBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBnZWFlbmRlcnRWb246IHZv cmguZ2VhZW5kZXJ0Vm9uIHx8IG51bGwKICAgICAgICAgICAgICAgICAgICB9XTsKICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgICAgfQogICAgICAg ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcy5wZXJzb25lbk1h dGNoZXMuZm9yRWFjaChmdW5jdGlvbihtKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFtLnpp ZWxJZCkgeyBpZ25vcmllcnRQZXJzb25lbisrOyByZXR1cm47IH0KICAgICAgICAgICAgICAgICAg ICB2YXIgcGlkID0gU3RyaW5nKG0uemllbElkKTsKICAgICAgICAgICAgICAgICAgICB2YXIgemll bFAgPSAobmV1ZVBsYW51bmcucGVyc29uZW4gfHwgW10pLmZpbmQoZnVuY3Rpb24ocCkgeyByZXR1 cm4gU3RyaW5nKHAuaWQpID09PSBwaWQ7IH0pOwogICAgICAgICAgICAgICAgICAgIC8vIFdpZWRl cmhlcnN0ZWxsdW5nIGF1cyBQYXBpZXJrb3JiIChLb252ZW50aW9uOiBEYXRlbiBsaWViZXIKICAg ICAgICAgICAgICAgICAgICAvLyBhZG1pbmlzdHJpZXJlbiBhbHMgd2Vnd2VyZmVuKS4gR3JlaWZ0 IGJlaSBzdGF0dXM9J3BhcGllcmtvcmInCiAgICAgICAgICAgICAgICAgICAgLy8gbWl0IERlZmF1 bHQtVm9yc2NobGFnIG9kZXIgd2VubiBkZXIgVXNlciBpbSBNYXBwaW5nIGVpbmUKICAgICAgICAg ICAgICAgICAgICAvLyBQYXBpZXJrb3JiLVBlcnNvbiBtYW51ZWxsIHVlYmVyIGRlbiBgcmVzdG9y ZTo8aWQ+YC1FaW50cmFnCiAgICAgICAgICAgICAgICAgICAgLy8gYXVzZ2V3YWVobHQgaGF0Lgog ICAgICAgICAgICAgICAgICAgIGlmIChtLndpZWRlcmhlcnN0ZWxsZW4gJiYgemllbFAgJiYgemll bFAuZ2Vsb2VzY2h0QW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHppZWxQLmdl bG9lc2NodEFtOwogICAgICAgICAgICAgICAgICAgICAgICB6aWVsUC5ha3RpdiA9IHRydWU7CiAg ICAgICAgICAgICAgICAgICAgICAgIHdpZWRlcmhlcmdlc3RlbGx0Kys7CiAgICAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgICAgIC8vIFJhbmdvcmRudW5nIGF1cyBFeGNlbC1TcGFs dGUgRiBhdWYgZGllIGdlbWF0Y2h0ZSBQZXJzb24KICAgICAgICAgICAgICAgICAgICAvLyB1ZWJl cnRyYWdlbiDigJQgd2lya3QgZGlyZWt0IGF1ZiBwZXJzb25lbk5ldUF1ZmJhdWVuKCkuCiAgICAg ICAgICAgICAgICAgICAgaWYgKG0uZXhjZWwucmFuZyAhPSBudWxsKSB7CiAgICAgICAgICAgICAg ICAgICAgICAgIGlmICh6aWVsUCAmJiB6aWVsUC5wb3NpdGlvbiAhPT0gbS5leGNlbC5yYW5nKSB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aWVsUC5wb3NpdGlvbiA9IG0uZXhjZWwucmFu ZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhZW5nZVVlYmVybm9tbWVuKys7CiAgICAg ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICAgICAgT2JqZWN0LmtleXMobS5leGNlbC5laW50cmFlZ2UpLmZvckVhY2goZnVuY3Rpb24oZGF0 dW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNyYyA9IG0uZXhjZWwuZWludHJhZWdl W2RhdHVtXTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHppZWwgPSBjb2RlTWFwW3NyY107 CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghemllbCkgeyBpZ25vcmllcnRDb2RlcysrOyBy ZXR1cm47IH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXVlUGxhbnVuZy5laW50cmFl Z2VbZGF0dW1dKSBuZXVlUGxhbnVuZy5laW50cmFlZ2VbZGF0dW1dID0ge307CiAgICAgICAgICAg ICAgICAgICAgICAgIG5ldWVQbGFudW5nLmVpbnRyYWVnZVtkYXR1bV1bcGlkXSA9IHppZWw7CiAg ICAgICAgICAgICAgICAgICAgICAgIGVpbnRyYWVnZUdlc2FtdCsrOwogICAgICAgICAgICAgICAg ICAgIH0pOwogICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG0uZXhjZWwua29tbWVudGFy ZSB8fCB7fSkuZm9yRWFjaChmdW5jdGlvbihkYXR1bSkgewogICAgICAgICAgICAgICAgICAgICAg ICB2YXIgY2xpc3RlID0gbS5leGNlbC5rb21tZW50YXJlW2RhdHVtXSB8fCBbXTsKICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKCFjbGlzdGUubGVuZ3RoKSByZXR1cm47CiAgICAgICAgICAgICAg ICAgICAgICAgIGlmICghbmV1ZVBsYW51bmcua29tbWVudGFyZVtkYXR1bV0pIG5ldWVQbGFudW5n LmtvbW1lbnRhcmVbZGF0dW1dID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiZXN0 YW5kID0gYmVzdGVoZW5kZUtvbW1lbnRhckxpc3RlKGRhdHVtLCBwaWQpOwogICAgICAgICAgICAg ICAgICAgICAgICB2YXIgaWR4ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgY2xpc3RlLmZv ckVhY2goZnVuY3Rpb24oa2MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0eHQg PSAoa2MudGV4dCB8fCAnJykudHJpbSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KCF0eHQpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZHVwOiBnbGVp Y2hlciBUZXh0IGJlcmVpdHMgaW0gVmVybGF1ZiAtPiBuaWNodAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgLy8gZXJuZXV0IGFuaGFlbmdlbiAoUmUtSW1wb3J0IGR1cGxpemllcnQgc29uc3Qp LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjaG9uRGEgPSBiZXN0YW5kLnNvbWUo ZnVuY3Rpb24oaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoay50 ZXh0IHx8ICcnKS50cmltKCkgPT09IHR4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0p OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjaG9uRGEpIHsgZGVkdXBVZWJlcnNw cnVuZ2VuKys7IHJldHVybjsgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdGFuZC5w dXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogICAgICAgICAgICdrX2lt cF8nICsgRGF0ZS5ub3coKSArICdfJyArIChpZHgrKykgKyAnXycgKyBNYXRoLmZsb29yKE1hdGgu cmFuZG9tKCkgKiA5OTk5OSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDog ICAgICAgICB0eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gS0VJTiBaZWl0 c3RlbXBlbDogRXhjZWwtTm90aXplbiBsaWVmZXJuIGtlaW5lbgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIHZlcmxhZXNzbGljaGVuIFplaXRwdW5rdC4gVmVyZmFzc2VyID0gT3Jp Z2luYWwtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXV0b3IgYXVzIGRlciBO b3RpeiAobmljaHQgZGVyIEltcG9ydGV1cikuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2VhZW5kZXJ0QW06ICBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdl YWVuZGVydFZvbjogKGtjLmF1dG9yIHx8ICcnKS50cmltKCkgfHwgbnVsbAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrb21tZW50YXJl R2VzYW10Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAg ICAgICBpZiAoYmVzdGFuZC5sZW5ndGgpIG5ldWVQbGFudW5nLmtvbW1lbnRhcmVbZGF0dW1dW3Bp ZF0gPSBiZXN0YW5kOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7 CiAgICAgICAgICAgICAgICB2YXIgcmFuZ0luZm8gPSByYWVuZ2VVZWJlcm5vbW1lbiA/ICcsICcg KyByYWVuZ2VVZWJlcm5vbW1lbiArICcgUmFlbmdlIGFrdHVhbGlzaWVydCcgOiAnJzsKICAgICAg ICAgICAgICAgIHZhciB3aWVkZXJJbmZvID0gd2llZGVyaGVyZ2VzdGVsbHQgPyAnLCAnICsgd2ll ZGVyaGVyZ2VzdGVsbHQgKyAnIFBlcnNvbmVuIGF1cyBQYXBpZXJrb3JiIHdpZWRlcmhlcmdlc3Rl bGx0JyA6ICcnOwogICAgICAgICAgICAgICAgdmFyIGRlZHVwSW5mbyA9IGRlZHVwVWViZXJzcHJ1 bmdlbiA/ICcsICcgKyBkZWR1cFVlYmVyc3BydW5nZW4gKyAnIEtvbW1lbnRhci1EdXBsaWthdGUg w7xiZXJzcHJ1bmdlbicgOiAnJzsKICAgICAgICAgICAgICAgIGltcFByb2dyZXNzVXBkYXRlKCdE YXRlbiB3ZXJkZW4gdHJhbnNmb3JtaWVydCDigKYnLCA2MCwKICAgICAgICAgICAgICAgICAgICBl aW50cmFlZ2VHZXNhbXQgKyAnIEVpbnRyw6RnZSArICcgKyBrb21tZW50YXJlR2VzYW10ICsgJyBL b21tZW50YXJlIGdlc2FtbWVsdCcgKyByYW5nSW5mbyArIHdpZWRlckluZm8gKyBkZWR1cEluZm8p OwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgaW1wU2NocmVpYmVuUGhh c2UzKG5ldWVQbGFudW5nLCBiYWNrdXBOYW1lLCBlaW50cmFlZ2VHZXNhbXQsIGtvbW1lbnRhcmVH ZXNhbXQpOyB9LCAzNTApOwogICAgICAgICAgICB9LCAzMDApOwogICAgICAgIH0sIDI1MCk7CiAg ICB9CgogICAgZnVuY3Rpb24gaW1wU2NocmVpYmVuUGhhc2UzKG5ldWVQbGFudW5nLCBiYWNrdXBO YW1lLCBlaW50cmFlZ2VHZXNhbXQsIGtvbW1lbnRhcmVHZXNhbXQpIHsKICAgICAgICAvLyA9PT0g UGhhc2UgMzogU2NocmVpYmVuID09PQogICAgICAgIGltcFByb2dyZXNzVXBkYXRlKCdQbGFudW5n IHdpcmQgZ2VzY2hyaWViZW4g4oCmJywgNzAsICdQVVQgL2FwaS9wbGFudW5nJyk7CiAgICAgICAg c2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGhlYWRlcnMgPSB7ICdDb250 ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfTsKICAgICAgICAgICAgLy8gT3B0aW1pc3Rp c2NoZSBTcGVycmU6IG51ciBzY2hyZWliZW4sIHdlbm4gcGxhbnVuZy5qc29uIHNlaXQgZGVtCiAg ICAgICAgICAgIC8vIEdFVCB1bm1pdHRlbGJhciB2b3IgZGVtIFRyYW5zZm9ybSB1bnZlcmFlbmRl cnQgaXN0LgogICAgICAgICAgICBpZiAoaW1wTGV0enRlVmVyc2lvbikgaGVhZGVyc1snSWYtUGxh bnVuZy1WZXJzaW9uJ10gPSBpbXBMZXR6dGVWZXJzaW9uOwogICAgICAgICAgICBmZXRjaCgnL2Fw aS9wbGFudW5nJywgewogICAgICAgICAgICAgICAgbWV0aG9kOiAnUFVUJywKICAgICAgICAgICAg ICAgIGhlYWRlcnM6IGhlYWRlcnMsCiAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lm eShuZXVlUGxhbnVuZykKICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbihyKSB7CiAgICAgICAg ICAgICAgICBpZiAoci5zdGF0dXMgPT09IDQwOSkgewogICAgICAgICAgICAgICAgICAgIC8vIEpl bWFuZCBhbmRlcmVzIGhhdCB3YWVocmVuZCBkZXMgSW1wb3J0cyBnZXNjaHJpZWJlbiDigJQgZGVy CiAgICAgICAgICAgICAgICAgICAgLy8gU2VydmVyIGhhdCBOSUNIVFMgdWViZXJzY2hyaWViZW4u IFdpciBicmVjaGVuIHNhdWJlciBhYiwKICAgICAgICAgICAgICAgICAgICAvLyBvaG5lIGRlc3Nl biBBZW5kZXJ1bmcgenUgdmVybGllcmVuLgogICAgICAgICAgICAgICAgICAgIHJldHVybiByLmpz b24oKS50aGVuKGZ1bmN0aW9uKGJvZHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cg bmV3IEVycm9yKCdLb25mbGlrdDogJyArIChib2R5Lm1lbGR1bmcgfHwgJ0RpZSBQbGFudW5nIHd1 cmRlIHfDpGhyZW5kIGRlcyBJbXBvcnRzIHZvbiBlaW5lciBhbmRlcmVuIFBlcnNvbiBnZcOkbmRl cnQuJykgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuXG5FcyB3dXJkZSBOSUNIVFMg w7xiZXJzY2hyaWViZW4uIEJpdHRlIGRpZSBTZWl0ZSBuZXUgbGFkZW4gdW5kIGRlbiBJbXBvcnQg ZXJuZXV0IHN0YXJ0ZW4uJyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICBpZiAoIXIub2spIHJldHVybiByLmpzb24oKS50aGVuKGZ1bmN0 aW9uKGJvZHkpIHsgdGhyb3cgbmV3IEVycm9yKGJvZHkuZmVobGVyIHx8ICgnSFRUUCAnICsgci5z dGF0dXMpKTsgfSk7CiAgICAgICAgICAgICAgICBpbXBQcm9ncmVzc1VwZGF0ZSgnUGxhbnVuZyB3 aXJkIGdlc2NocmllYmVuIOKApicsIDkwLCAnQW50d29ydCB2b20gU2VydmVyIGVyaGFsdGVuJyk7 CiAgICAgICAgICAgICAgICBaLnBsYW51bmcgPSBuZXVlUGxhbnVuZzsKICAgICAgICAgICAgICAg IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaW1wUHJvZ3Jlc3NF cmZvbGcoZWludHJhZWdlR2VzYW10LCBrb21tZW50YXJlR2VzYW10LCBiYWNrdXBOYW1lKTsKICAg ICAgICAgICAgICAgIH0sIDQwMCk7CiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsK ICAgICAgICAgICAgICAgIGltcFByb2dyZXNzRmVobGVyKCdTY2hyZWliZW4gZmVobGdlc2NobGFn ZW46ICcgKyBlLm1lc3NhZ2UgKyAnXG5cbkRhcyBCYWNrdXAgIicgKyAoYmFja3VwTmFtZSB8fCAn JykgKyAnIiBlbnRow6RsdCBkZW4gU3RhbmQgdm9yIGRlbSBJbXBvcnQuJyk7CiAgICAgICAgICAg IH0pOwogICAgICAgIH0sIDMwMCk7CiAgICB9CgogICAgLy8gTWFwcGluZy1Nb2RhbDogendlaSBU YWJzIChQZXJzb25lbiwgQ29kZXMpLiBEZXIgVXNlciBrYW5uIG9mZmVuZQogICAgLy8gS29uZmxp a3RlIG1hbnVlbGwgYXVmbG9lc2VuLiBBZW5kZXJ1bmdlbiB3ZXJkZW4gZGlyZWt0IGluIGltcFN0 YXRlCiAgICAvLyBwZXJzaXN0aWVydCDigJQgZGFzIFN0YXR1cy1QYW5lbCB3aXJkIGJlaW0gU2No bGllc3NlbiBuZXUgZ2VyZW5kZXJ0LgogICAgZnVuY3Rpb24gaW1wTWFwcGluZ01vZGFsKCkgewog ICAgICAgIGlmICghaW1wU3RhdGUpIHJldHVybjsKICAgICAgICAvLyBBa3RpdmUgQ29kZXMgKyBE ZWZhdWx0LUF1c3dhaGwuIGFrdGl2ZUNvZGVzIGlzdCBsZXQtYWVobmxpY2g6CiAgICAgICAgLy8g d2lyZCBuYWNoIGVyZm9sZ3JlaWNoZXIgTmV1YW5sYWdlIChzaWVoZSBuZXVlckNvZGVGb3JtWmVp Z2VuKQogICAgICAgIC8vIG5ldSB6dWdld2llc2VuLCBkYW1pdCBkaWUgUmUtUmVuZGVyLVNjaGxl aWZlIGRlbiBmcmlzY2hlbiBDb2RlCiAgICAgICAgLy8gYmVydWVja3NpY2h0aWd0LgogICAgICAg IHZhciBha3RpdmVDb2RlcyA9IChaLmFkbWluLnNjaGljaHRjb2RlcyB8fCBbXSkuZmlsdGVyKGlz dENvZGVBa3RpdikKICAgICAgICAgICAgLnNsaWNlKCkuc29ydChmdW5jdGlvbihhLCBiKSB7IHJl dHVybiAoYS5jb2RlIHx8ICcnKS5sb2NhbGVDb21wYXJlKGIuY29kZSB8fCAnJywgJ2RlJyk7IH0p OwogICAgICAgIGZ1bmN0aW9uIGNvZGVPcHRzKHppZWwpIHsKICAgICAgICAgICAgcmV0dXJuICc8 b3B0aW9uIHZhbHVlPSJfX25ld19fIj7inpUgQWxzIG5ldWVuIENvZGUgYW5sZWdlbiDigKY8L29w dGlvbj4nICsKICAgICAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSIiPuKAlCBpZ25vcmllcmVu IOKAlDwvb3B0aW9uPicgKwogICAgICAgICAgICAgICAgYWt0aXZlQ29kZXMubWFwKGZ1bmN0aW9u KHNjKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbCA9IHppZWwgPT09IHNjLmNvZGUgPyAn IHNlbGVjdGVkJyA6ICcnOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAnPG9wdGlvbiB2YWx1 ZT0iJyArIGVzY2FwZUF0dHIoc2MuY29kZSkgKyAnIicgKyBzZWwgKyAnPicgKyBlc2NhcGVIVE1M KHNjLmNvZGUpICsgJyDigJQgJyArIGVzY2FwZUhUTUwoc2MuYmV6ZWljaG51bmcgfHwgJycpICsg Jzwvb3B0aW9uPic7CiAgICAgICAgICAgICAgICB9KS5qb2luKCcnKTsKICAgICAgICB9CgogICAg ICAgIC8vIFN0YXR1cy1JY29uLU1hcCBwcm8gTWFwcGluZy1aZWlsZS4gRmFyYmVuIGtvbW1lbiBp bmxpbmUsIGRhbWl0IGRhcwogICAgICAgIC8vIENTUyAoLmltcC1tYXBwaW5nLXN0YXR1cykgbnVy IExheW91dCAoQnJlaXRlL0JvbGQpIHRyYWVndCDigJQgYW5hbG9nCiAgICAgICAgLy8genVtIGJl c3RlaGVuZGVuIFN0aWwgZGVyIGltcC1tYXBwaW5nLXplaWxlLUhpbnRlcmdydWVuZGUuCiAgICAg ICAgLy8gQnVja2V0czoKICAgICAgICAvLyAgIG9rL2FsaWFzL21hbnVlbGwgICAgIC0+IOKckyBn cnVlbgogICAgICAgIC8vICAgbmV1ICAgICAgICAgICAgICAgICAgLT4g4p6VIGJsYXUKICAgICAg ICAvLyAgIHBhcGllcmtvcmIgICAgICAgICAgIC0+IOKGuyBvcmFuZ2UgKEtvbmZsaWt0LURlZmF1 bHQpCiAgICAgICAgLy8gICBtZWhyZGV1dGlnL3VuYmVrYW5udCAtPiA/IHdhcm51bmcKICAgICAg ICAvLyAgIGlnbm9yaWVydC9pZ25vcmUgICAgIC0+IOKclyBncmF1CiAgICAgICAgZnVuY3Rpb24g c3RhdHVzSWNvbkh0bWwobSkgewogICAgICAgICAgICB2YXIgc3QgPSBtICYmIG0uc3RhdHVzOwog ICAgICAgICAgICB2YXIgaWMgPSAn4pyXJywgYyA9ICd2YXIoLS10ZXh0LW11dGVkKSc7CiAgICAg ICAgICAgIGlmIChzdCA9PT0gJ29rJyB8fCBzdCA9PT0gJ2FsaWFzJyB8fCBzdCA9PT0gJ21hbnVl bGwnKSB7IGljID0gJ+Kckyc7IGMgPSAndmFyKC0tZmFyYmUtZXJmb2xnKSc7IH0KICAgICAgICAg ICAgZWxzZSBpZiAoc3QgPT09ICduZXUnKSB7IGljID0gJ+KelSc7IGMgPSAndmFyKC0tZmFyYmUt cHJpbWFlciknOyB9CiAgICAgICAgICAgIGVsc2UgaWYgKHN0ID09PSAncGFwaWVya29yYicpIHsg aWMgPSAn4oa7JzsgYyA9ICcjY2E2ZjFlJzsgfQogICAgICAgICAgICBlbHNlIGlmIChzdCA9PT0g J21laHJkZXV0aWcnIHx8IHN0ID09PSAndW5iZWthbm50JykgeyBpYyA9ICc/JzsgYyA9ICd2YXIo LS1mYXJiZS13YXJudW5nKSc7IH0KICAgICAgICAgICAgcmV0dXJuICc8c3BhbiBjbGFzcz0iaW1w LW1hcHBpbmctc3RhdHVzIiBzdHlsZT0iY29sb3I6JyArIGMgKyAnIj4nICsgaWMgKyAnPC9zcGFu Pic7CiAgICAgICAgfQoKICAgICAgICAvLyBMaXZlLUFnZ3JlZ2F0LVplaWxlIGltIE1vZGFsLUhl YWRlci4gWmFlaGx0IGJlaWRlIE1hdGNoLUxpc3RlbgogICAgICAgIC8vIChQZXJzb25lbiArIENv ZGVzKSB6dXNhbW1lbiB1bmQgcmVuZGVydCBudXIgZGllIG5pY2h0LWxlZXJlbiBCdWNrZXRzLgog ICAgICAgIGZ1bmN0aW9uIHN0YXR1c1phZWhsZXJVcGRhdGVuKCkgewogICAgICAgICAgICBpZiAo IWltcFN0YXRlKSByZXR1cm47CiAgICAgICAgICAgIHZhciB6ID0geyBvazogMCwgbmV1OiAwLCBw azogMCwgZnJhZzogMCwgaWc6IDAgfTsKICAgICAgICAgICAgZnVuY3Rpb24gYnVja2V0RWluc29y dGllcmVuKHN0KSB7CiAgICAgICAgICAgICAgICBpZiAoc3QgPT09ICdvaycgfHwgc3QgPT09ICdh bGlhcycgfHwgc3QgPT09ICdtYW51ZWxsJykgei5vaysrOwogICAgICAgICAgICAgICAgZWxzZSBp ZiAoc3QgPT09ICduZXUnKSB6Lm5ldSsrOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoc3QgPT09 ICdwYXBpZXJrb3JiJykgei5waysrOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoc3QgPT09ICdt ZWhyZGV1dGlnJyB8fCBzdCA9PT0gJ3VuYmVrYW5udCcpIHouZnJhZysrOwogICAgICAgICAgICAg ICAgZWxzZSB6LmlnKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW1wU3RhdGUucGVyc29u ZW5NYXRjaGVzLmZvckVhY2goZnVuY3Rpb24obSkgeyBidWNrZXRFaW5zb3J0aWVyZW4obS5zdGF0 dXMpOyB9KTsKICAgICAgICAgICAgaW1wU3RhdGUuY29kZU1hdGNoZXMuZm9yRWFjaChmdW5jdGlv bihtKSB7IGJ1Y2tldEVpbnNvcnRpZXJlbihtLnN0YXR1cyk7IH0pOwogICAgICAgICAgICB2YXIg dGVpbGUgPSBbXTsKICAgICAgICAgICAgaWYgKHoub2spICAgdGVpbGUucHVzaCgnPHNwYW4gc3R5 bGU9ImNvbG9yOnZhcigtLWZhcmJlLWVyZm9sZykiPuKckyAnICAgKyB6Lm9rICsgJzwvc3Bhbj4n KTsKICAgICAgICAgICAgaWYgKHoubmV1KSAgdGVpbGUucHVzaCgnPHNwYW4gc3R5bGU9ImNvbG9y OnZhcigtLWZhcmJlLXByaW1hZXIpIj7inpUgJyArIHoubmV1ICsgJzwvc3Bhbj4nKTsKICAgICAg ICAgICAgaWYgKHoucGspICAgdGVpbGUucHVzaCgnPHNwYW4gc3R5bGU9ImNvbG9yOiNjYTZmMWUi PuKGuyAnICAgICAgICAgICAgICAgICsgei5wayArICc8L3NwYW4+Jyk7CiAgICAgICAgICAgIGlm ICh6LmZyYWcpIHRlaWxlLnB1c2goJzxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS1mYXJiZS13YXJu dW5nKSI+PyAnICAgKyB6LmZyYWcgKyAnPC9zcGFuPicpOwogICAgICAgICAgICBpZiAoei5pZykg ICB0ZWlsZS5wdXNoKCc8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPuKclyAn ICAgICAgKyB6LmlnICsgJzwvc3Bhbj4nKTsKICAgICAgICAgICAgdmFyIGFnID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ2ltcC1zdGF0dXMtYWdncmVnYXQnKTsKICAgICAgICAgICAgaWYgKGFn KSBhZy5pbm5lckhUTUwgPSB0ZWlsZS5qb2luKCcgICcpOwogICAgICAgIH0KCiAgICAgICAgLy8g UGVyc29uZW4tS2FuZGlkYXRlbiBmdWVyIE1laHJkZXV0aWctL1VuYmVrYW5udC0vUGFwaWVya29y Yi1BdXN3YWhsLgogICAgICAgIC8vIEtvbnZlbnRpb246IG5pY2h0cyB3ZWdibGVuZGVuIOKAlCBk ZXIgQWRtaW4gc29sbCBkaWUgRGF0ZW4gbGllYmVyCiAgICAgICAgLy8gc2ljaHRiYXIgaGFiZW4g dW5kIGVudHNjaGVpZGVuLCBzdGF0dCBzaWUgenUgdmVybGllcmVuLiBQYXBpZXJrb3JiLQogICAg ICAgIC8vIFBlcnNvbmVuIGVyc2NoZWluZW4gc29ydGllcnQgYW5zIEVuZGUgdW5kIHdlcmRlbiBt aXQgYOKGuyAuLi4KICAgICAgICAvLyAoUGFwaWVya29yYiDigJQgd2lyZCB3aWVkZXJoZXJnZXN0 ZWxsdClgIG1hcmtpZXJ0LiBJaHIgPG9wdGlvbj4tV2VydAogICAgICAgIC8vIGlzdCBgcmVzdG9y ZTo8aWQ+YCwgZGFtaXQgZGVyIFNhdmUtUGZhZCBzaWUgYXV0b21hdGlzY2ggd2llZGVyCiAgICAg ICAgLy8gYWt0aXYgc2NoYWx0ZXQg4oCUIGVpbmUgdmVyc2VoZW50bGljaGUgWnVvcmRudW5nIGF1 ZiBlaW5lcgogICAgICAgIC8vIGF1c3JhbmdpZXJ0ZW4gUGVyc29uIG9obmUgV2llZGVyaGVyc3Rl bGx1bmcgaXN0IHNvIG5pY2h0IG1vZWdsaWNoLgogICAgICAgIHZhciBhbGxlQmVzdGFuZCA9ICha LnBsYW51bmcucGVyc29uZW4gfHwgW10pLnNsaWNlKCkKICAgICAgICAgICAgLnNvcnQoZnVuY3Rp b24oYSwgYikgewogICAgICAgICAgICAgICAgdmFyIGFQSyA9ICEhYS5nZWxvZXNjaHRBbSwgYlBL ID0gISFiLmdlbG9lc2NodEFtOwogICAgICAgICAgICAgICAgaWYgKGFQSyAhPT0gYlBLKSByZXR1 cm4gYVBLID8gMSA6IC0xOwogICAgICAgICAgICAgICAgcmV0dXJuIChhLm5hbWUgfHwgJycpLmxv Y2FsZUNvbXBhcmUoYi5uYW1lIHx8ICcnLCAnZGUnKTsKICAgICAgICAgICAgfSk7CiAgICAgICAg ZnVuY3Rpb24gcGVyc29uT3B0cyhtKSB7CiAgICAgICAgICAgIC8vIERyb3Bkb3duLVdlcnRlOgog ICAgICAgICAgICAvLyAgICJuZXciICAgICAgICAgICAgIC0+IFBlcnNvbiBuZXUgYW5sZWdlbiAo RXhjZWwtRGF0ZW4pCiAgICAgICAgICAgIC8vICAgIiIgICAgICAgICAgICAgICAgLT4gaWdub3Jp ZXJlbgogICAgICAgICAgICAvLyAgICI8aWQ+IiAgICAgICAgICAgIC0+IGFrdGl2ZSBCZXN0YW5k cy1QZXJzb24genVvcmRuZW4KICAgICAgICAgICAgLy8gICAicmVzdG9yZTo8aWQ+IiAgICAtPiBQ YXBpZXJrb3JiLVBlcnNvbiB3aWVkZXJoZXJzdGVsbGVuICsgenVvcmRuZW4KICAgICAgICAgICAg dmFyIGFrdGl2ZVZhbHVlOwogICAgICAgICAgICBpZiAobS5uZXVBbmxlZ2VuKSBha3RpdmVWYWx1 ZSA9ICduZXcnOwogICAgICAgICAgICBlbHNlIGlmIChtLnppZWxJZCAhPSBudWxsKSBha3RpdmVW YWx1ZSA9IG0ud2llZGVyaGVyc3RlbGxlbiA/ICdyZXN0b3JlOicgKyBtLnppZWxJZCA6IFN0cmlu ZyhtLnppZWxJZCk7CiAgICAgICAgICAgIGVsc2UgYWt0aXZlVmFsdWUgPSAnJzsKICAgICAgICAg ICAgdmFyIG9wdHNLb3BmID0gJzxvcHRpb24gdmFsdWU9Im5ldyInICsgKGFrdGl2ZVZhbHVlID09 PSAnbmV3JyA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz7inpUgTmV1IGFubGVnZW4g4oCUIG1pdCBF eGNlbC1EYXRlbiAoTmFjaG5hbWUsIE9FLCBHcnVwcGUsIFRlbGVmb24sIFJhbmcpPC9vcHRpb24+ JyArCiAgICAgICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iIicgKyAoYWt0aXZlVmFsdWUgPT09 ICcnID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPuKAlCBpZ25vcmllcmVuIOKAlDwvb3B0aW9uPic7 CiAgICAgICAgICAgIHJldHVybiBvcHRzS29wZiArCiAgICAgICAgICAgICAgICBhbGxlQmVzdGFu ZC5tYXAoZnVuY3Rpb24ocCkgewogICAgICAgICAgICAgICAgICAgIHZhciBvcHRWYWx1ZSwgbGFi ZWw7CiAgICAgICAgICAgICAgICAgICAgaWYgKHAuZ2Vsb2VzY2h0QW0pIHsKICAgICAgICAgICAg ICAgICAgICAgICAgb3B0VmFsdWUgPSAncmVzdG9yZTonICsgcC5pZDsKICAgICAgICAgICAgICAg ICAgICAgICAgbGFiZWwgPSAn4oa7ICcgKyAoKHAudm9ybmFtZSB8fCAnJykgKyAnICcgKyAocC5u YW1lIHx8ICcnKSkudHJpbSgpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIMK3 ICcgKyAocC5vZSB8fCAnPycpICsgJyDCtyAnICsgKHAuZ3J1cHBlIHx8ICc/JykgKwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICcgKFBhcGllcmtvcmIg4oCUIHdpcmQgd2llZGVyaGVy Z2VzdGVsbHQpJzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg ICAgICAgICBvcHRWYWx1ZSA9IFN0cmluZyhwLmlkKTsKICAgICAgICAgICAgICAgICAgICAgICAg bGFiZWwgPSAoKHAudm9ybmFtZSB8fCAnJykgKyAnICcgKyAocC5uYW1lIHx8ICcnKSkudHJpbSgp ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIMK3ICcgKyAocC5vZSB8fCAnPycp ICsgJyDCtyAnICsgKHAuZ3J1cHBlIHx8ICc/Jyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgICAgIHZhciBzZWwgPSBvcHRWYWx1ZSA9PT0gYWt0aXZlVmFsdWUgPyAnIHNl bGVjdGVkJyA6ICcnOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAnPG9wdGlvbiB2YWx1ZT0i JyArIGVzY2FwZUF0dHIob3B0VmFsdWUpICsgJyInICsgc2VsICsgJz4nICsgZXNjYXBlSFRNTChs YWJlbCkgKyAnPC9vcHRpb24+JzsKICAgICAgICAgICAgICAgIH0pLmpvaW4oJycpOwogICAgICAg IH0KCiAgICAgICAgLy8gUGVyc29uZW4tUGFuZWwKICAgICAgICB2YXIgcGVyc0h0bWwgPSAnPHAg c3R5bGU9Im1hcmdpbjowIDAgOHB4IDA7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1t dXRlZCkiPlBlcnNvbmVuIGF1cyBkZXIgRXhjZWwtRGF0ZWkgKCcgKyBpbXBTdGF0ZS5leGNlbFBl cnNvbmVuLmxlbmd0aCArICcpLiBHcsO8biA9IGVpbmRldXRpZyB6dWdlb3JkbmV0LCBibGF1ID0g d2lyZCBuZXUgYW5nZWxlZ3QsIG9yYW5nZSA9IFBhcGllcmtvcmItVHJlZmZlciAoRGVmYXVsdDog d2llZGVyaGVyc3RlbGxlbiksIGdlbGIgPSBtZWhyZGV1dGlnLjwvcD4nICsKICAgICAgICAgICAg JzxkaXYgY2xhc3M9ImltcC1tYXBwaW5nLWxpc3RlIj4nOwogICAgICAgIGltcFN0YXRlLnBlcnNv bmVuTWF0Y2hlcy5mb3JFYWNoKGZ1bmN0aW9uKG0sIGkpIHsKICAgICAgICAgICAgdmFyIHN0ID0g bS5zdGF0dXM7CiAgICAgICAgICAgIHZhciBjbHMgPSBzdCA9PT0gJ29rJyA/ICdpbXAtb2snCiAg ICAgICAgICAgICAgICAgICAgOiBzdCA9PT0gJ3BhcGllcmtvcmInID8gJ2ltcC1wYXBpZXJrb3Ji JwogICAgICAgICAgICAgICAgICAgIDogc3QgPT09ICduZXUnID8gJ2ltcC1uZXUnCiAgICAgICAg ICAgICAgICAgICAgOiAnaW1wLXdhcm4nOwogICAgICAgICAgICB2YXIgYW56YWhsRWludHIgPSBP YmplY3Qua2V5cyhtLmV4Y2VsLmVpbnRyYWVnZSkubGVuZ3RoOwogICAgICAgICAgICB2YXIgcXVl bGxlID0gJzxkaXY+PHNwYW4gY2xhc3M9ImltcC1tYXBwaW5nLXF1ZWxsZSI+JyArIGVzY2FwZUhU TUwobS5leGNlbC5uYWNobmFtZSkgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgJzxzcGFu IGNsYXNzPSJpbXAtbWFwcGluZy1hbnphaGwiPsK3ICcgKyBhbnphaGxFaW50ciArICcgWmVsbGVu LCBPRSAnICsgZXNjYXBlSFRNTChtLmV4Y2VsLm9lIHx8ICc/JykgKyAnLCBHcnAgJyArIGVzY2Fw ZUhUTUwobS5leGNlbC5ncnVwcGUgfHwgJz8nKSArCiAgICAgICAgICAgICAgICAobS5leGNlbC5y YW5nICE9IG51bGwgPyAnLCBSYW5nICcgKyBtLmV4Y2VsLnJhbmcgOiAnJykgKyAnPC9zcGFuPjwv ZGl2Pic7CiAgICAgICAgICAgIHZhciB6aWVsOwogICAgICAgICAgICBpZiAoc3QgPT09ICdvaycp IHsKICAgICAgICAgICAgICAgIHppZWwgPSAnPGRpdiBzdHlsZT0iY29sb3I6dmFyKC0tZmFyYmUt ZXJmb2xnKTtmb250LXNpemU6MTJweCI+4pyTICcgKyBlc2NhcGVIVE1MKG0udHJlZmZlclswXS52 b3JuYW1lIHx8ICcnKSArICcgJyArIGVzY2FwZUhUTUwobS50cmVmZmVyWzBdLm5hbWUpICsgJyAo SUQgJyArIG0udHJlZmZlclswXS5pZCArICcpPC9kaXY+JzsKICAgICAgICAgICAgfSBlbHNlIGlm IChzdCA9PT0gJ3BhcGllcmtvcmInKSB7CiAgICAgICAgICAgICAgICAvLyBLb25mbGlrdC1IaW53 ZWlzICsgRHJvcGRvd24gbWl0IFdpZWRlcmhlcnN0ZWxsZW4tRGVmYXVsdC4KICAgICAgICAgICAg ICAgIC8vIERlciBVc2VyIGthbm4gaGllciBhdWNoIGVpbmUgYW5kZXJlIGFrdGl2ZSBQZXJzb24g d2FlaGxlbiBvZGVyCiAgICAgICAgICAgICAgICAvLyBpZ25vcmllcmVuIOKAlCBkZXIgRGVmYXVs dCAiV2llZGVyaGVyc3RlbGxlbiArIHp1b3JkbmVuIgogICAgICAgICAgICAgICAgLy8gc2ljaGVy dCBkaWUgRXhjZWwtRGF0ZW4gaW4gamVkZW0gRmFsbCBhYi4KICAgICAgICAgICAgICAgIC8vIHBp ZEtleS1XcmFwcGVyOiBtLnppZWxJZCBpc3QgbmFjaCBwYXJzZUludCgpIG9kZXIgQVBJLUFubGFn ZQogICAgICAgICAgICAgICAgLy8gZWluIE51bWJlciwgcC5pZCBpc3QgaW4gZGVyIFByYXhpcyBh dWNoIE51bWJlciDigJQgYWJlciB3ZW5uCiAgICAgICAgICAgICAgICAvLyBqZW1hbmQgbWFsIGVp bmUgcGxhbnVuZy5qc29uIG1pdCBTdHJpbmctSURzIGVkaXRpZXJ0LCBzY2hsYWVndAogICAgICAg ICAgICAgICAgLy8gZGVyID09PSBWZXJnbGVpY2ggZmVobC4gU3RyaW5nLXp1LVN0cmluZyBpc3Qg cm9idXN0ZXIuCiAgICAgICAgICAgICAgICB2YXIgcGtwID0gbS50cmVmZmVyLmZpbmQoZnVuY3Rp b24ocCkgeyByZXR1cm4gcGlkS2V5KHAuaWQpID09PSBwaWRLZXkobS56aWVsSWQpOyB9KTsKICAg ICAgICAgICAgICAgIHZhciBwa05hbWUgPSBwa3AgPyAoKChwa3Audm9ybmFtZSB8fCAnJykgKyAn ICcgKyAocGtwLm5hbWUgfHwgJycpKS50cmltKCkgfHwgKCdJRCAnICsgcGtwLmlkKSkgOiAnJzsK ICAgICAgICAgICAgICAgIHZhciBwa1NlaXQgPSAocGtwICYmIHBrcC5nZWxvZXNjaHRBbSkgPyBT dHJpbmcocGtwLmdlbG9lc2NodEFtKS5zdWJzdHIoMCwgMTApIDogJyc7CiAgICAgICAgICAgICAg ICB6aWVsID0gJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47 Z2FwOjRweDttaW4td2lkdGg6MjgwcHgiPicgKwogICAgICAgICAgICAgICAgICAgICc8c2VsZWN0 IGNsYXNzPSJmb3JtLWlucHV0IGltcC1wZXJzLXNlbCIgZGF0YS1pPSInICsgaSArICciPicgKyBw ZXJzb25PcHRzKG0pICsgJzwvc2VsZWN0PicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNs YXNzPSJpbXAtcGFwaWVya29yYi1oaW53ZWlzIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAg J+KGuyBFaW5kZXV0aWdlciBUcmVmZmVyIGltIFBhcGllcmtvcmI6IDxzdHJvbmc+JyArIGVzY2Fw ZUhUTUwocGtOYW1lKSArICc8L3N0cm9uZz4nICsKICAgICAgICAgICAgICAgICAgICAgICAgKHBr U2VpdCA/ICcsIGdlbMO2c2NodCAnICsgZXNjYXBlSFRNTChwa1NlaXQpIDogJycpICsKICAgICAg ICAgICAgICAgICAgICAgICAgJy4gRGVmYXVsdDogUGVyc29uIHdpZWRlcmhlcnN0ZWxsZW4gdW5k IERhdGVuIMO8YmVybmVobWVuLicgKwogICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAg ICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgICAgICB9IGVsc2UgaWYgKHN0ID09PSAnbmV1 JykgewogICAgICAgICAgICAgICAgLy8gVGlwcGZlaGxlci1XYXJudW5nOiBhZWhubGljaGUgQmVz dGFuZHNuYW1lbiBwcm9taW5lbnQgemVpZ2VuLAogICAgICAgICAgICAgICAgLy8gZGFtaXQgZGVy IFVzZXIgbmljaHQgdmVyc2VoZW50bGljaCBlaW4gRHVwbGlrYXQgYW5sZWd0LiBEaWUKICAgICAg ICAgICAgICAgIC8vIEthbmRpZGF0ZW4gc3RlaGVuIG9obmVoaW4gaW0gRHJvcGRvd24g4oCUIGRl ciBIaW53ZWlzIG5lbm50IHNpZQogICAgICAgICAgICAgICAgLy8gYmVpbSBOYW1lbiwgZGFtaXQg bWFuIHNpZSBmaW5kZXQgdW5kIGJld3Vzc3QgenVvcmRuZW4ga2Fubi4KICAgICAgICAgICAgICAg IHZhciBhZWhubGljaEh0bWwgPSAnJzsKICAgICAgICAgICAgICAgIGlmIChtLmFlaG5saWNoICYm IG0uYWVobmxpY2gubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWVuID0gbS5h ZWhubGljaC5tYXAoZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g JzxzdHJvbmc+JyArIGVzY2FwZUhUTUwoKChhLm5hbWUgfHwgJycpKS50cmltKCkpICsgJzwvc3Ry b25nPic7CiAgICAgICAgICAgICAgICAgICAgfSkuam9pbignLCAnKTsKICAgICAgICAgICAgICAg ICAgICBhZWhubGljaEh0bWwgPSAnPGRpdiBjbGFzcz0iaW1wLWFlaG5saWNoLXdhcm51bmciIHN0 eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1mYXJiZS13YXJudW5nKTtib3JkZXI6MXB4 IHNvbGlkIHZhcigtLWZhcmJlLXdhcm51bmcpO2JvcmRlci1yYWRpdXM6NHB4O3BhZGRpbmc6NHB4 IDZweCI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICfimqAgw4RobmxpY2ggenUgYmVzdGVo ZW5kZXIgUGVyc29uOiAnICsgbmFtZW4gKyAnLiBGYWxscyBkYXMgZGllc2VsYmUgUGVyc29uIGlz dCAoei5CLiBUaXBwZmVobGVyKSwgYml0dGUgb2JlbiB6dW9yZG5lbiBzdGF0dCBuZXUgYW56dWxl Z2VuIOKAlCBzb25zdCBlbnRzdGVodCBlaW4gRHVwbGlrYXQuJyArCiAgICAgICAgICAgICAgICAg ICAgJzwvZGl2Pic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB6aWVsID0gJzxk aXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjRweDttaW4t d2lkdGg6MjgwcHgiPicgKwogICAgICAgICAgICAgICAgICAgICc8c2VsZWN0IGNsYXNzPSJmb3Jt LWlucHV0IGltcC1wZXJzLXNlbCIgZGF0YS1pPSInICsgaSArICciPicgKyBwZXJzb25PcHRzKG0p ICsgJzwvc2VsZWN0PicgKwogICAgICAgICAgICAgICAgICAgIGFlaG5saWNoSHRtbCArCiAgICAg ICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImltcC1uZXUtaGlud2VpcyI+JyArCiAgICAgICAg ICAgICAgICAgICAgICAgICfinpUgTmljaHQgaW0gQmVzdGFuZC4gRGVmYXVsdDogPHN0cm9uZz5O ZXUgYW5sZWdlbjwvc3Ryb25nPiBtaXQgRXhjZWwtRGF0ZW4g4oCUIE5hY2hwZmxlZ2UgKFZvcm5h bWUsIEZ1bmt0aW9uLCDigKYpIGFuc2NobGllc3NlbmQgaW0gTmV1aW1wb3J0LUJsb2NrLicgKwog ICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nOwog ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgemllbCA9ICc8c2VsZWN0IGNsYXNz PSJmb3JtLWlucHV0IGltcC1wZXJzLXNlbCIgZGF0YS1pPSInICsgaSArICciPicgKyBwZXJzb25P cHRzKG0pICsgJzwvc2VsZWN0Pic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcGVyc0h0bWwg Kz0gJzxkaXYgY2xhc3M9ImltcC1tYXBwaW5nLXplaWxlICcgKyBjbHMgKyAnIiBkYXRhLXBlcnMt aT0iJyArIGkgKyAnIj4nICsgc3RhdHVzSWNvbkh0bWwobSkgKyBxdWVsbGUgKyAnPHNwYW4gY2xh c3M9ImltcC1wZmVpbCI+4oaSPC9zcGFuPicgKyB6aWVsICsgJzwvZGl2Pic7CiAgICAgICAgfSk7 CiAgICAgICAgcGVyc0h0bWwgKz0gJzwvZGl2Pic7CgogICAgICAgIC8vIENvZGUtUGFuZWwKICAg ICAgICB2YXIgY29kZUh0bWwgPSAnPHAgc3R5bGU9Im1hcmdpbjowIDAgOHB4IDA7Zm9udC1zaXpl OjEycHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPkFsbGUgU2NoaWNodGNvZGVzIGF1cyBkZXIg RXhjZWwtRGF0ZWkgKCcgKyBpbXBTdGF0ZS5jb2RlTWF0Y2hlcy5sZW5ndGggKyAnKS4gQWxpYXNl IHVuZCBiZWthbm50ZSBDb2RlcyBzaW5kIHZvcmJlbGVndCDigJQgb2ZmZW5lIENvZGVzIG3DvHNz ZW4genVnZW9yZG5ldCBvZGVyIGF1ZiDigJ5pZ25vcmllcmVuIiBnZXNldHp0IHdlcmRlbi48L3A+ JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJpbXAtbWFwcGluZy1saXN0ZSI+JzsKICAgICAg ICBpbXBTdGF0ZS5jb2RlTWF0Y2hlcy5mb3JFYWNoKGZ1bmN0aW9uKG0sIGkpIHsKICAgICAgICAg ICAgdmFyIGNscyA9IG0uc3RhdHVzID09PSAnb2snIHx8IG0uc3RhdHVzID09PSAnYWxpYXMnID8g J2ltcC1vaycgOiBtLnN0YXR1cyA9PT0gJ2lnbm9yZScgPyAnJyA6ICdpbXAtd2Fybic7CiAgICAg ICAgICAgIHZhciBxdWVsbGUgPSAnPGRpdj48c3BhbiBjbGFzcz0iaW1wLW1hcHBpbmctcXVlbGxl Ij48Y29kZT4nICsgZXNjYXBlSFRNTChtLmNvZGUpICsgJzwvY29kZT48L3NwYW4+JyArCiAgICAg ICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImltcC1tYXBwaW5nLWFuemFobCI+wrcgJyArIG0uYW56 YWhsICsgJ8OXIGluIGRlciBEYXRlaTwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IHN0 eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKSI+JyArIGVzY2FwZUhU TUwobS5oaW53ZWlzIHx8ICcnKSArICc8L2Rpdj48L2Rpdj4nOwogICAgICAgICAgICB2YXIgemll bCA9ICc8c2VsZWN0IGNsYXNzPSJmb3JtLWlucHV0IGltcC1jb2RlLXNlbCIgZGF0YS1pPSInICsg aSArICciPicgKyBjb2RlT3B0cyhtLnppZWwpICsgJzwvc2VsZWN0Pic7CiAgICAgICAgICAgIGNv ZGVIdG1sICs9ICc8ZGl2IGNsYXNzPSJpbXAtbWFwcGluZy16ZWlsZSAnICsgY2xzICsgJyIgZGF0 YS1jb2RlLWk9IicgKyBpICsgJyI+JyArIHN0YXR1c0ljb25IdG1sKG0pICsgcXVlbGxlICsgJzxz cGFuIGNsYXNzPSJpbXAtcGZlaWwiPuKGkjwvc3Bhbj4nICsgemllbCArICc8L2Rpdj4nOwogICAg ICAgIH0pOwogICAgICAgIGNvZGVIdG1sICs9ICc8L2Rpdj4nOwoKICAgICAgICAvLyBBZ2dyZWdh dC1aZWlsZSAoTGl2ZS1aYWVobGVyKSB1ZWJlciBkZW4gVGFiLUJ1dHRvbnMuIFdpcmQgZHVyY2gK ICAgICAgICAvLyBzdGF0dXNaYWVobGVyVXBkYXRlbigpIG5hY2ggbW9kYWxaZWlnZW4gKyBuYWNo IGplZGVtIFNlbGVjdC1DaGFuZ2UKICAgICAgICAvLyBiZWZ1ZWxsdC4gQmxlaWJ0IGxlZXIgKENT UzogOmVtcHR5IHsgZGlzcGxheTpub25lIH0pIHdlbm4gYmVpZGUKICAgICAgICAvLyBNYXRjaC1M aXN0ZW4gbGVlciBzaW5kLgogICAgICAgIHZhciBrb2VycGVyID0gJzxkaXYgY2xhc3M9ImltcC1z dGF0dXMtYWdncmVnYXQiIGlkPSJpbXAtc3RhdHVzLWFnZ3JlZ2F0Ij48L2Rpdj4nICsKICAgICAg ICAnPGRpdiBjbGFzcz0ibW9kYWwtdGFicyIgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6OHB4O21h cmdpbi1ib3R0b206MTRweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGln aHQpIj4nICsKICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tc2VrIiBkYXRhLWlt cC10YWI9InBlcnNvbmVuIiBzdHlsZT0iYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMCI+UGVyc29u ZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tc2VrIiBk YXRhLWltcC10YWI9ImNvZGVzIiBzdHlsZT0iYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMCI+Q29k ZXM8L2J1dHRvbj4nICsKICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgaWQ9ImltcC10 YWItcGVyc29uZW4iPicgKyBwZXJzSHRtbCArICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBpZD0i aW1wLXRhYi1jb2RlcyIgY2xhc3M9InZlcnN0ZWNrdCI+JyArIGNvZGVIdG1sICsgJzwvZGl2Pic7 CgogICAgICAgIC8vIFNuYXBzaG90IGRlciBNYXBwaW5nLVppZWx3ZXJ0ZSB2b3IgZGVtIE9lZmZu ZW4g4oCUIGRpZSBMaXZlLUJpbmRpbmdzCiAgICAgICAgLy8gKFouIH42ODUsIH43MTMpIG11dGll cmVuIGltcFN0YXRlIGRpcmVrdCBiZWkgamVkZXIgU2VsZWN0LUFlbmRlcnVuZy4KICAgICAgICAv LyBCZWkgIkFiYnJlY2hlbiIgcm9sbGVuIHdpciBhdWYgZGVuIFNuYXBzaG90IHp1cnVlY2suCiAg ICAgICAgdmFyIG1hcHBpbmdTbmFwc2hvdCA9IHsKICAgICAgICAgICAgcG06IEpTT04ucGFyc2Uo SlNPTi5zdHJpbmdpZnkoaW1wU3RhdGUucGVyc29uZW5NYXRjaGVzKSksCiAgICAgICAgICAgIGNt OiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGltcFN0YXRlLmNvZGVNYXRjaGVzKSkKICAgICAg ICB9OwoKICAgICAgICB2YXIgZnVzcyA9ICc8YnV0dG9uIGNsYXNzPSJidG4iIGlkPSJpbXAtbW9k YWwtYWJicmVjaGVuIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OmF1dG8iPkFiYnJlY2hlbjwvYnV0dG9u PicgKwogICAgICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFlciIg aWQ9ImltcC1tb2RhbC11ZWJlcm5laG1lbiIgdGl0bGU9Ik9mZmVuZSBNYXBwaW5ncyBpZ25vcmll cmVuLCByZXN0bGljaGUgQXVzd2FobCB1ZWJlcm5laG1lbiI+w5xiZXJuZWhtZW48L2J1dHRvbj4n OwogICAgICAgIG1vZGFsWmVpZ2VuKCdFeGNlbC1JbXBvcnQ6IE1hcHBpbmcgcHLDvGZlbicsIGtv ZXJwZXIsIGZ1c3MsIG51bGwpOwoKICAgICAgICAvLyBEaXNjYXJkLUhvb2s6IGJlaSAiVmVyd2Vy ZmVuIiBpbSBEaXJ0eS1CZXN0YWV0aWd1bmdzLURpYWxvZwogICAgICAgIC8vICh1aV9kaWFsb2cu anM6MjMwKSB3aXJkIGRpZXNlciBDYWxsYmFjayBhdWZnZXJ1ZmVuLCBiZXZvciBkYXMgTW9kYWwK ICAgICAgICAvLyBmb3JjaWVydCBnZXNjaGxvc3NlbiB3aXJkLiBHcmVpZnQgYXVjaCB3ZW5uIGRl ciBVc2VyIHBlciBFU0MgLwogICAgICAgIC8vIE92ZXJsYXktS2xpY2sgc2NobGllc3N0IHVuZCBp bSBCZXN0YWV0aWd1bmdzLURpYWxvZyAiVmVyd2VyZmVuIiB3YWVobHQuCiAgICAgICAgWi5tb2Rh bE9uRGlzY2FyZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpbXBTdGF0ZS5wZXJzb25lbk1h dGNoZXMgPSBtYXBwaW5nU25hcHNob3QucG07CiAgICAgICAgICAgIGltcFN0YXRlLmNvZGVNYXRj aGVzID0gbWFwcGluZ1NuYXBzaG90LmNtOwogICAgICAgICAgICBpbXBTdGF0dXNSZW5kZXJuKCk7 CiAgICAgICAgfTsKCiAgICAgICAgLy8gVGFiLVN3aXRjaAogICAgICAgIHZhciB0YWJzID0gZG9j dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtaW1wLXRhYl0nKTsKICAgICAgICBmdW5jdGlv biB0YWJaZWlnZW4obmFtZSkgewogICAgICAgICAgICB0YWJzLmZvckVhY2goZnVuY3Rpb24odCkg eyB0LmNsYXNzTGlzdC50b2dnbGUoJ2FrdGl2JywgdC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaW1wLXRh YicpID09PSBuYW1lKTsgfSk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp bXAtdGFiLXBlcnNvbmVuJykuY2xhc3NMaXN0LnRvZ2dsZSgndmVyc3RlY2t0JywgbmFtZSAhPT0g J3BlcnNvbmVuJyk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAtdGFi LWNvZGVzJykuY2xhc3NMaXN0LnRvZ2dsZSgndmVyc3RlY2t0JywgbmFtZSAhPT0gJ2NvZGVzJyk7 CiAgICAgICAgfQogICAgICAgIHRhYnMuZm9yRWFjaChmdW5jdGlvbih0KSB7IHQuYWRkRXZlbnRM aXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsgdGFiWmVpZ2VuKHQuZ2V0QXR0cmlidXRlKCdk YXRhLWltcC10YWInKSk7IH0pOyB9KTsKICAgICAgICB0YWJaZWlnZW4oJ3BlcnNvbmVuJyk7Cgog ICAgICAgIC8vIEluaXRpYWxlcyBSZW5kZXJuIGRlciBBZ2dyZWdhdC1aZWlsZS4KICAgICAgICBz dGF0dXNaYWVobGVyVXBkYXRlbigpOwoKICAgICAgICAvLyBMaXZlLUJpbmRpbmdzOiBBdXN3YWhs IGFlbmRlcm4gLT4gaW1wU3RhdGUtWmllbHdlcnRlIHVwZGF0ZW4uCiAgICAgICAgLy8gU3Blemlh bGZhZWxsZTogYG5ld2AgLT4gbmV1IGFubGVnZW4sIGByZXN0b3JlOjxpZD5gIC0+IFBhcGllcmtv cmItCiAgICAgICAgLy8gV2llZGVyaGVyc3RlbGxlbi4gQmVpZGUgRmxhZ3Mgd2VyZGVuIGluIFBo YXNlIDJhIChBbmxhZ2UgbmV1ZXIKICAgICAgICAvLyBQZXJzb25lbikgYnp3LiBQaGFzZSAyYiAo V2llZGVyaGVyc3RlbGx1bmcpIGF1c2dld2VydGV0LgogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2Vs ZWN0b3JBbGwoJy5pbXAtcGVycy1zZWwnKS5mb3JFYWNoKGZ1bmN0aW9uKHNlbCkgewogICAgICAg ICAgICBzZWwuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAg ICAgICAgICB2YXIgaSA9IHBhcnNlSW50KHNlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaScpLCAxMCk7 CiAgICAgICAgICAgICAgICB2YXIgdiA9IHNlbC52YWx1ZTsKICAgICAgICAgICAgICAgIHZhciBt ID0gaW1wU3RhdGUucGVyc29uZW5NYXRjaGVzW2ldOwogICAgICAgICAgICAgICAgaWYgKCF2KSB7 CiAgICAgICAgICAgICAgICAgICAgbS56aWVsSWQgPSBudWxsOwogICAgICAgICAgICAgICAgICAg IG0ud2llZGVyaGVyc3RlbGxlbiA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIG0ubmV1QW5s ZWdlbiA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIG0uc3RhdHVzID0gJ2lnbm9yaWVydCc7 CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHYgPT09ICduZXcnKSB7CiAgICAgICAgICAgICAg ICAgICAgbS56aWVsSWQgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIG0ud2llZGVyaGVyc3Rl bGxlbiA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIG0ubmV1QW5sZWdlbiA9IHRydWU7CiAg ICAgICAgICAgICAgICAgICAgbS5zdGF0dXMgPSAnbmV1JzsKICAgICAgICAgICAgICAgIH0gZWxz ZSBpZiAodi5pbmRleE9mKCdyZXN0b3JlOicpID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAg bS56aWVsSWQgPSBwYXJzZUludCh2LnN1YnN0cig4KSwgMTApOwogICAgICAgICAgICAgICAgICAg IG0ud2llZGVyaGVyc3RlbGxlbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgbS5uZXVBbmxl Z2VuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgbS5zdGF0dXMgPSAnbWFudWVsbCc7CiAg ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIG0uemllbElkID0gcGFy c2VJbnQodiwgMTApOwogICAgICAgICAgICAgICAgICAgIG0ud2llZGVyaGVyc3RlbGxlbiA9IGZh bHNlOwogICAgICAgICAgICAgICAgICAgIG0ubmV1QW5sZWdlbiA9IGZhbHNlOwogICAgICAgICAg ICAgICAgICAgIG0uc3RhdHVzID0gJ21hbnVlbGwnOwogICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgLy8gU3RhdHVzLUljb24gaW4gZGVyIFplaWxlICsgQWdncmVnYXQtSGVhZGVyIGFr dHVhbGlzaWVyZW4uCiAgICAgICAgICAgICAgICB2YXIgcGVyc1JvdyA9IGRvY3VtZW50LnF1ZXJ5 U2VsZWN0b3IoJ1tkYXRhLXBlcnMtaT0iJyArIGkgKyAnIl0nKTsKICAgICAgICAgICAgICAgIGlm IChwZXJzUm93KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFsdCA9IHBlcnNSb3cucXVlcnlT ZWxlY3RvcignLmltcC1tYXBwaW5nLXN0YXR1cycpOwogICAgICAgICAgICAgICAgICAgIGlmIChh bHQpIGFsdC5vdXRlckhUTUwgPSBzdGF0dXNJY29uSHRtbChtKTsKICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgIHN0YXR1c1phZWhsZXJVcGRhdGVuKCk7CiAgICAgICAgICAgIH0pOwog ICAgICAgIH0pOwogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbXAtY29kZS1z ZWwnKS5mb3JFYWNoKGZ1bmN0aW9uKHNlbCkgewogICAgICAgICAgICBzZWwuYWRkRXZlbnRMaXN0 ZW5lcignY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHBhcnNl SW50KHNlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaScpLCAxMCk7CiAgICAgICAgICAgICAgICB2YXIg diA9IHNlbC52YWx1ZTsKICAgICAgICAgICAgICAgIHZhciBtID0gaW1wU3RhdGUuY29kZU1hdGNo ZXNbaV07CiAgICAgICAgICAgICAgICAvLyBTcGV6aWFsZmFsbCAi4p6VIEFscyBuZXVlbiBDb2Rl IGFubGVnZW4iOiBTZWxlY3QtV2VydCBOSUNIVAogICAgICAgICAgICAgICAgLy8gY29tbWl0dGVu IChTbmFwc2hvdC1SZXN0b3JlIHZpYSBtLnppZWwpLCBzdGF0dGRlc3NlbiBJbmxpbmUtCiAgICAg ICAgICAgICAgICAvLyBGb3JtIHVudGVyIGRlciBaZWlsZSBhdWZrbGFwcGVuLiBNb2RhbC1TdGFj ayB2ZXJtZWlkZW4uCiAgICAgICAgICAgICAgICBpZiAodiA9PT0gJ19fbmV3X18nKSB7CiAgICAg ICAgICAgICAgICAgICAgc2VsLnZhbHVlID0gbS56aWVsIHx8ICcnOwogICAgICAgICAgICAgICAg ICAgIG5ldWVyQ29kZUZvcm1aZWlnZW4oaSwgc2VsKTsKICAgICAgICAgICAgICAgICAgICByZXR1 cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBtLnppZWwgPSB2IHx8IG51bGw7 CiAgICAgICAgICAgICAgICBtLnN0YXR1cyA9IHYgPyAnbWFudWVsbCcgOiAnaWdub3JlJzsKICAg ICAgICAgICAgICAgIG0uaGlud2VpcyA9IHYgPyAnTWFudWVsbDog4oaSICcgKyB2IDogJ0lnbm9y aWVydCc7CiAgICAgICAgICAgICAgICAvLyBaZWlsZSB2aXN1ZWxsIHVtZsOkcmJlbiArIFN0YXR1 cy1JY29uICsgQWdncmVnYXQgdXBkYXRlbgogICAgICAgICAgICAgICAgdmFyIHJvdyA9IGRvY3Vt ZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWNvZGUtaT0iJyArIGkgKyAnIl0nKTsKICAgICAgICAg ICAgICAgIGlmIChyb3cpIHsKICAgICAgICAgICAgICAgICAgICByb3cuY2xhc3NMaXN0LnJlbW92 ZSgnaW1wLW9rJywnaW1wLXdhcm4nKTsKICAgICAgICAgICAgICAgICAgICBpZiAodikgcm93LmNs YXNzTGlzdC5hZGQoJ2ltcC1vaycpOwogICAgICAgICAgICAgICAgICAgIHZhciBhbHQgPSByb3cu cXVlcnlTZWxlY3RvcignLmltcC1tYXBwaW5nLXN0YXR1cycpOwogICAgICAgICAgICAgICAgICAg IGlmIChhbHQpIGFsdC5vdXRlckhUTUwgPSBzdGF0dXNJY29uSHRtbChtKTsKICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgIHN0YXR1c1phZWhsZXJVcGRhdGVuKCk7CiAgICAgICAgICAg IH0pOwogICAgICAgIH0pOwoKICAgICAgICAvLyBJbmxpbmUtRm9ybSAiTmV1ZW4gU2NoaWNodGNv ZGUgYW5sZWdlbiI6IGtsYXBwdCB1bnRlciBkZXIgWmVpbGUKICAgICAgICAvLyBhdWYsIGtlaW4g TW9kYWwtU3RhY2sgKEhhdXB0LU1vZGFsIGJsZWlidCBvZmZlbikuIEZlbGRlciBhbmFsb2cKICAg ICAgICAvLyB6dSBhZG1pbi5qczoyNTgyLTI1OTMsIGFiZXIga29tcGFrdC4gQmVpIEVyZm9sZyB3 aXJkIGRlciBuZXVlCiAgICAgICAgLy8gQ29kZSBkaXJla3QgaW4gWi5hZG1pbi5zY2hpY2h0Y29k ZXMgZ2VzY2hyaWViZW4gKGFwaVB1dCAvYXBpL2FkbWluKSwKICAgICAgICAvLyBhbGxlIC5pbXAt Y29kZS1zZWwgd2VyZGVuIG5ldSBnZXJlbmRlcnQsIG0uemllbCB3aXJkIGF1ZiBkZW4KICAgICAg ICAvLyBuZXVlbiBDb2RlIGdlc2V0enQgKyBTdGF0dXMgLT4gbWFudWVsbC4KICAgICAgICBmdW5j dGlvbiBuZXVlckNvZGVGb3JtWmVpZ2VuKGksIGF1c2xvZXNlclNlbCkgewogICAgICAgICAgICAv LyBGYWxscyBiZXJlaXRzIGVpbmUgRm9ybSBvZmZlbiBpc3Q6IHNjaGxpZXNzZW4gKG1heC4gZWlu ZQogICAgICAgICAgICAvLyBJbmxpbmUtRm9ybSBnbGVpY2h6ZWl0aWcpLgogICAgICAgICAgICB2 YXIgYWx0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmltcC1uZXVlci1jb2RlLWZvcm0nKTsK ICAgICAgICAgICAgaWYgKGFsdCkgYWx0LnJlbW92ZSgpOwoKICAgICAgICAgICAgdmFyIHJvdyA9 IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWNvZGUtaT0iJyArIGkgKyAnIl0nKTsKICAg ICAgICAgICAgaWYgKCFyb3cpIHJldHVybjsKICAgICAgICAgICAgdmFyIG0gPSBpbXBTdGF0ZS5j b2RlTWF0Y2hlc1tpXTsKICAgICAgICAgICAgdmFyIHF1ZWxsQ29kZSA9IG0uY29kZSB8fCAnJzsK CiAgICAgICAgICAgIHZhciBmb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAg ICAgICAgICAgIGZvcm0uY2xhc3NOYW1lID0gJ2ltcC1uZXVlci1jb2RlLWZvcm0nOwogICAgICAg ICAgICBmb3JtLnNldEF0dHJpYnV0ZSgnZGF0YS1jb2RlLWknLCBTdHJpbmcoaSkpOwogICAgICAg ICAgICBmb3JtLmlubmVySFRNTCA9CiAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxh eTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6ZmxleC1lbmQiPicgKwog ICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSIgc3R5bGU9ImZsZXg6 MTttaW4td2lkdGg6MTEwcHgiPjxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHgiPkNvZGUgKFNj aGzDvHNzZWwpPC9sYWJlbD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBl PSJ0ZXh0IiBpZD0iaW1wLW5jLWNvZGUiIGNsYXNzPSJmb3JtLWlucHV0IiB2YWx1ZT0iJyArIGVz Y2FwZUF0dHIocXVlbGxDb2RlKSArICciIG1heGxlbmd0aD0iMTAiPjwvZGl2PicgKwogICAgICAg ICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSIgc3R5bGU9ImZsZXg6MTttaW4t d2lkdGg6MTEwcHgiPjxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHgiPkvDvHJ6ZWwgKEFuemVp Z2UpPC9sYWJlbD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0 IiBpZD0iaW1wLW5jLWt1ZXJ6ZWwiIGNsYXNzPSJmb3JtLWlucHV0IiB2YWx1ZT0iJyArIGVzY2Fw ZUF0dHIocXVlbGxDb2RlKSArICciIG1heGxlbmd0aD0iMTAiPjwvZGl2PicgKwogICAgICAgICAg ICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSIgc3R5bGU9ImZsZXg6MjttaW4td2lk dGg6MTgwcHgiPjxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHgiPkJlemVpY2hudW5nPC9sYWJl bD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW1w LW5jLWJleiIgY2xhc3M9ImZvcm0taW5wdXQiIHZhbHVlPSIiIG1heGxlbmd0aD0iNjAiIHBsYWNl aG9sZGVyPSJ6LkIuIEZyw7xoZGllbnN0IFNvbmRlcmF1ZmdhYmUiPjwvZGl2PicgKwogICAgICAg ICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSIgc3R5bGU9Im1pbi13aWR0aDo2 NHB4Ij48bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMXB4Ij5IZ3IuPC9sYWJlbD4nICsKICAgICAg ICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJjb2xvciIgaWQ9ImltcC1uYy1oZyIgY2xh c3M9ImZvcm0taW5wdXQiIHZhbHVlPSIjQjcxQzFDIiBzdHlsZT0iaGVpZ2h0OjM0cHg7cGFkZGlu ZzoycHggNHB4O2N1cnNvcjpwb2ludGVyO3dpZHRoOjU0cHgiPjwvZGl2PicgKwogICAgICAgICAg ICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSIgc3R5bGU9Im1pbi13aWR0aDo2NHB4 Ij48bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMXB4Ij5TY2hyLjwvbGFiZWw+JyArCiAgICAgICAg ICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0iY29sb3IiIGlkPSJpbXAtbmMtc2YiIGNsYXNz PSJmb3JtLWlucHV0IiB2YWx1ZT0iI0ZGRkZGRiIgc3R5bGU9ImhlaWdodDozNHB4O3BhZGRpbmc6 MnB4IDRweDtjdXJzb3I6cG9pbnRlcjt3aWR0aDo1NHB4Ij48L2Rpdj4nICsKICAgICAgICAgICAg ICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiIHN0eWxlPSJtaW4td2lkdGg6ODBweCI+ PGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTFweCI+Vm9yc2NoYXU8L2xhYmVsPicgKwogICAgICAg ICAgICAgICAgICAgICAgICAnPGRpdiBpZD0iaW1wLW5jLXZvciIgc3R5bGU9InBhZGRpbmc6NnB4 IDEwcHg7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC13ZWlnaHQ6NzAwO3RleHQtYWxpZ246Y2VudGVy O2JhY2tncm91bmQ6I0I3MUMxQztjb2xvcjojRkZGRkZGIj4nICsgZXNjYXBlSFRNTChxdWVsbENv ZGUgfHwgJz8nKSArICc8L2Rpdj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nICsK ICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjZweDtqdXN0aWZ5 LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luLXRvcDo4cHgiPicgKwogICAgICAgICAgICAgICAgICAg ICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWtsZWluIiBpZD0iaW1wLW5jLWFiYnJlY2hlbiIgdHlw ZT0iYnV0dG9uIj5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICAgICAnPGJ1 dHRvbiBjbGFzcz0iYnRuIGJ0bi1rbGVpbiBidG4tcHJpbWFlciIgaWQ9ImltcC1uYy1hbmxlZ2Vu IiB0eXBlPSJidXR0b24iPkFubGVnZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICc8L2Rp dj4nOwogICAgICAgICAgICByb3cuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCdhZnRlcmVuZCcsIGZv cm0pOwoKICAgICAgICAgICAgLy8gTGl2ZS1Wb3JzY2hhdSB3aWUgaW0gU2NoaWNodGNvZGUtRWRp dC1Nb2RhbAogICAgICAgICAgICBmdW5jdGlvbiB2b3JzY2hhdVVwZGF0ZSgpIHsKICAgICAgICAg ICAgICAgIHZhciBoZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAtbmMtaGcnKS52YWx1 ZTsKICAgICAgICAgICAgICAgIHZhciBzZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAt bmMtc2YnKS52YWx1ZTsKICAgICAgICAgICAgICAgIHZhciBrdSA9IGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdpbXAtbmMta3VlcnplbCcpLnZhbHVlIHx8IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdpbXAtbmMtY29kZScpLnZhbHVlIHx8ICc/JzsKICAgICAgICAgICAgICAgIHZhciB2ID0gZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltcC1uYy12b3InKTsKICAgICAgICAgICAgICAgIHYuc3R5 bGUuYmFja2dyb3VuZCA9IGhnOyB2LnN0eWxlLmNvbG9yID0gc2Y7IHYudGV4dENvbnRlbnQgPSBr dTsKICAgICAgICAgICAgfQogICAgICAgICAgICBbJ2ltcC1uYy1oZycsJ2ltcC1uYy1zZicsJ2lt cC1uYy1rdWVyemVsJywnaW1wLW5jLWNvZGUnXS5mb3JFYWNoKGZ1bmN0aW9uKGlkKSB7CiAgICAg ICAgICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7IGlmIChlbCkg ZWwuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCB2b3JzY2hhdVVwZGF0ZSk7CiAgICAgICAgICAg IH0pOwogICAgICAgICAgICAvLyBGb2t1cyBhdWYgQmV6ZWljaG51bmcg4oCUIENvZGUvS3Vlcnpl bCBzaW5kIHZvcmJlbGVndAogICAgICAgICAgICB2YXIgYmV6RWwgPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnaW1wLW5jLWJleicpOwogICAgICAgICAgICBpZiAoYmV6RWwpIGJlekVsLmZvY3Vz KCk7CgogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1wLW5jLWFiYnJlY2hl bicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg ICBmb3JtLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgLy8gU2VsZWN0IHdhciBvYmVuIGJlcmVp dHMgYXVmIG0uemllbCB6dXJ1ZWNrZ2VzZXR6dCwgbmljaHRzIHdlaXRlciB6dSB0dW4uCiAgICAg ICAgICAgIH0pOwoKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltcC1uYy1h bmxlZ2VuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAg ICAgICAgIHZhciBkYXRlbiA9IHsKICAgICAgICAgICAgICAgICAgICBjb2RlOiBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnaW1wLW5jLWNvZGUnKS52YWx1ZS50cmltKCksCiAgICAgICAgICAgICAg ICAgICAga3VlcnplbDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltcC1uYy1rdWVyemVsJyku dmFsdWUudHJpbSgpIHx8IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAtbmMtY29kZScpLnZh bHVlLnRyaW0oKSwKICAgICAgICAgICAgICAgICAgICBiZXplaWNobnVuZzogZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2ltcC1uYy1iZXonKS52YWx1ZS50cmltKCksCiAgICAgICAgICAgICAgICAg ICAgaGludGVyZ3J1bmQ6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAtbmMtaGcnKS52YWx1 ZSwKICAgICAgICAgICAgICAgICAgICBzY2hyaWZ0OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn aW1wLW5jLXNmJykudmFsdWUKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBpZiAo IWRhdGVuLmNvZGUpIHsgdG9hc3QoJ0NvZGUgaXN0IFBmbGljaHRmZWxkJywgJ3dhcm51bmcnKTsg cmV0dXJuOyB9CiAgICAgICAgICAgICAgICBpZiAoIWRhdGVuLmJlemVpY2hudW5nKSB7IHRvYXN0 KCdCZXplaWNobnVuZyBpc3QgUGZsaWNodGZlbGQnLCAnd2FybnVuZycpOyByZXR1cm47IH0KICAg ICAgICAgICAgICAgIGlmICgoWi5hZG1pbi5zY2hpY2h0Y29kZXMgfHwgW10pLnNvbWUoZnVuY3Rp b24oYykgeyByZXR1cm4gYy5jb2RlID09PSBkYXRlbi5jb2RlOyB9KSkgewogICAgICAgICAgICAg ICAgICAgIHRvYXN0KCdDb2RlIOKAnicgKyBkYXRlbi5jb2RlICsgJyIgZXhpc3RpZXJ0IGJlcmVp dHMnLCAnd2FybnVuZycpOyByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICB2YXIgbGlzdGUgPSAoWi5hZG1pbi5zY2hpY2h0Y29kZXMgfHwgW10pLnNsaWNlKCk7CiAgICAg ICAgICAgICAgICBsaXN0ZS5wdXNoKGRhdGVuKTsKICAgICAgICAgICAgICAgIGFwaVB1dCgnL2Fw aS9hZG1pbicsIE9iamVjdC5hc3NpZ24oe30sIFouYWRtaW4sIHsgc2NoaWNodGNvZGVzOiBsaXN0 ZSB9KSkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBaLmFkbWluLnNjaGlj aHRjb2RlcyA9IGxpc3RlOwogICAgICAgICAgICAgICAgICAgIC8vIGNvZGVNYXAgZnVlciBkYXMg SGF1cHRncmlkIHN5bmNocm9uIGhhbHRlbgogICAgICAgICAgICAgICAgICAgIFouY29kZU1hcCA9 IFouY29kZU1hcCB8fCB7fTsKICAgICAgICAgICAgICAgICAgICBaLmNvZGVNYXBbZGF0ZW4uY29k ZV0gPSB7IGhpbnRlcmdydW5kOiBkYXRlbi5oaW50ZXJncnVuZCwgc2NocmlmdDogZGF0ZW4uc2No cmlmdCwga3VlcnplbDogZGF0ZW4ua3VlcnplbCB8fCBkYXRlbi5jb2RlIH07CiAgICAgICAgICAg ICAgICAgICAgLy8gQWt0aXZlLUNvZGVzLUNsb3N1cmUtTGlzdGUgYWt0dWFsaXNpZXJlbiB1bmQg YWxsZQogICAgICAgICAgICAgICAgICAgIC8vIENvZGUtU2VsZWN0cyBpbSBNb2RhbCBuZXUgcmVu ZGVybiwgZGFtaXQgZGVyIG5ldWUKICAgICAgICAgICAgICAgICAgICAvLyBDb2RlIGluIGplZGVt IERyb3Bkb3duIGF1ZnRhdWNodC4KICAgICAgICAgICAgICAgICAgICBha3RpdmVDb2RlcyA9ICha LmFkbWluLnNjaGljaHRjb2RlcyB8fCBbXSkuZmlsdGVyKGlzdENvZGVBa3RpdikKICAgICAgICAg ICAgICAgICAgICAgICAgLnNsaWNlKCkuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiAoYS5j b2RlIHx8ICcnKS5sb2NhbGVDb21wYXJlKGIuY29kZSB8fCAnJywgJ2RlJyk7IH0pOwogICAgICAg ICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbXAtY29kZS1zZWwnKS5m b3JFYWNoKGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNpID0gcGFy c2VJbnQocy5nZXRBdHRyaWJ1dGUoJ2RhdGEtaScpLCAxMCk7CiAgICAgICAgICAgICAgICAgICAg ICAgIHZhciBzbSA9IGltcFN0YXRlLmNvZGVNYXRjaGVzW3NpXTsKICAgICAgICAgICAgICAgICAg ICAgICAgLy8gU2VsZWt0aW9uIGluIGRpZXNlciBaZWlsZSBhdWYgZGVuIG5ldWVuIENvZGUgc2V0 emVuLAogICAgICAgICAgICAgICAgICAgICAgICAvLyBzb25zdCBkaWUgYmVzdGVoZW5kZSB6aWVs LUF1c3dhaGwgYmVpYmVoYWx0ZW4uCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB6aWVsRnVl ciA9IChzaSA9PT0gaSkgPyBkYXRlbi5jb2RlIDogKHNtICYmIHNtLnppZWwpIHx8ICcnOwogICAg ICAgICAgICAgICAgICAgICAgICBzLmlubmVySFRNTCA9IGNvZGVPcHRzKHppZWxGdWVyKTsKICAg ICAgICAgICAgICAgICAgICAgICAgcy52YWx1ZSA9IHppZWxGdWVyOwogICAgICAgICAgICAgICAg ICAgIH0pOwogICAgICAgICAgICAgICAgICAgIC8vIG0tU3RhdGUgZGVyIEF1c2xvZXNlci1aZWls ZSBha3R1YWxpc2llcmVuCiAgICAgICAgICAgICAgICAgICAgbS56aWVsID0gZGF0ZW4uY29kZTsK ICAgICAgICAgICAgICAgICAgICBtLnN0YXR1cyA9ICdtYW51ZWxsJzsKICAgICAgICAgICAgICAg ICAgICBtLmhpbndlaXMgPSAnTmV1IGFuZ2VsZWd0OiAnICsgZGF0ZW4uY29kZTsKICAgICAgICAg ICAgICAgICAgICAvLyBaZWlsZSB2aXN1ZWxsIHVtZmFlcmJlbiArIEljb24gYXVzdGF1c2NoZW4K ICAgICAgICAgICAgICAgICAgICByb3cuY2xhc3NMaXN0LnJlbW92ZSgnaW1wLXdhcm4nKTsKICAg ICAgICAgICAgICAgICAgICByb3cuY2xhc3NMaXN0LmFkZCgnaW1wLW9rJyk7CiAgICAgICAgICAg ICAgICAgICAgdmFyIGFsdEljID0gcm93LnF1ZXJ5U2VsZWN0b3IoJy5pbXAtbWFwcGluZy1zdGF0 dXMnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoYWx0SWMpIGFsdEljLm91dGVySFRNTCA9IHN0 YXR1c0ljb25IdG1sKG0pOwogICAgICAgICAgICAgICAgICAgIC8vIEFnZ3JlZ2F0LVphZWhsZXIg YWt0dWFsaXNpZXJlbgogICAgICAgICAgICAgICAgICAgIHN0YXR1c1phZWhsZXJVcGRhdGVuKCk7 CiAgICAgICAgICAgICAgICAgICAgZm9ybS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICB0 b2FzdCgnU2NoaWNodGNvZGUg4oCeJyArIGRhdGVuLmNvZGUgKyAnIiBhbmdlbGVndCcsICdlcmZv bGcnKTsKICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxl cjogJyArIChlICYmIGUubWVzc2FnZSB8fCBlKSwgJ2ZlaGxlcicpOyB9KTsKICAgICAgICAgICAg fSk7CiAgICAgICAgfQoKICAgICAgICAvLyAiQWJicmVjaGVuIjogcm9sbHQgaW1wU3RhdGUgYXVm IFNuYXBzaG90IHp1cnVlY2suIEJlaSB2b3JoYW5kZW5lbgogICAgICAgIC8vIEFlbmRlcnVuZ2Vu IChaLm1vZGFsRGlydHk9dHJ1ZSkgZnJhZ3QgZGllIERpcnR5LUJlc3RhZXRpZ3VuZwogICAgICAg IC8vIGF1dG9tYXRpc2NoIG5hY2gg4oCUIGRlciBEaXNjYXJkLUhvb2sgb2JlbiBydWZ0IGRhbm4g ZGVuIFJvbGxiYWNrIGF1Zi4KICAgICAgICAvLyBPaG5lIEFlbmRlcnVuZ2VuIGRpcmVrdCBzY2hs aWVzc2VuLgogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAtbW9kYWwtYWJicmVj aGVuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAg aWYgKFoubW9kYWxEaXJ0eSkgewogICAgICAgICAgICAgICAgbW9kYWxTY2hsaWVzc2VuKCk7CiAg ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7 CiAgICAgICAgICAgICAgICBpbXBTdGF0dXNSZW5kZXJuKCk7CiAgICAgICAgICAgIH0KICAgICAg ICB9KTsKCiAgICAgICAgLy8gIsOcYmVybmVobWVuIjogYWxsZSBub2NoIG9mZmVuZW4gKG1laHJk ZXV0aWcpIGFscyBpZ25vcmllcnQgbWFya2llcmVuLgogICAgICAgIC8vIERhbWl0IGtvbW10IGRl ciBVc2VyIGF1cyBkZXIgU2Fja2dhc3NlLCB3ZW5uIGVyIE1laHJmYWNodHJlZmZlciBvaG5lCiAg ICAgICAgLy8gRW50c2NoZWlkdW5nIGxhc3NlbiB3aWxsLiAibmV1IiB1bmQgInBhcGllcmtvcmIi IGhhYmVuIERlZmF1bHQtCiAgICAgICAgLy8gVm9yc2NobGFlZ2UgdW5kIHdlcmRlbiBuaWNodCBh bmdlZmFzc3QuIERpcnR5LUJlc3RhZXRpZ3VuZyB3aXJkCiAgICAgICAgLy8gYmV3dXNzdCB1bWdh bmdlbiAobW9kYWxTY2hsaWVzc2VuKHRydWUpKSDigJQgVWViZXJuZWhtZW4gaXN0IGRpZQogICAg ICAgIC8vIGdld3VlbnNjaHRlIENvbW1pdC1Ba3Rpb24uCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ2ltcC1tb2RhbC11ZWJlcm5laG1lbicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNr JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIC8vIFdhcyB3dWVyZGUgIlVlYmVybmVobWVuIiBz dGlsbCB2ZXJ3ZXJmZW4/IE9mZmVuZSBtZWhyZGV1dGlnZQogICAgICAgICAgICAvLyBQZXJzb25l biArIHVuYmVrYW5udGUgQ29kZXMgd2VyZGVuIGF1ZiBpZ25vcmllcnQgZ2VzZXR6dCDigJQgaWhy ZQogICAgICAgICAgICAvLyBEYXRlbiBsYW5kZW4gTklDSFQgaW0gSW1wb3J0LiBGcnVlaGVyIHBh c3NpZXJ0ZSBkYXMgb2huZSBSdWVjay0KICAgICAgICAgICAgLy8gZnJhZ2U7IGpldHp0IHplaWdl biB3aXIgdm9yaGVyIGV4cGxpeml0LCB3YXMgdmVybG9yZW4gZ2VodC4KICAgICAgICAgICAgdmFy IG9mZmVuZVBlcnMgPSBpbXBTdGF0ZS5wZXJzb25lbk1hdGNoZXMuZmlsdGVyKGZ1bmN0aW9uKG0p IHsgcmV0dXJuIG0uc3RhdHVzID09PSAnbWVocmRldXRpZyc7IH0pOwogICAgICAgICAgICB2YXIg b2ZmZW5lQ29kZXMgPSBpbXBTdGF0ZS5jb2RlTWF0Y2hlcy5maWx0ZXIoZnVuY3Rpb24obSkgeyBy ZXR1cm4gbS5zdGF0dXMgPT09ICd1bmJla2FubnQnOyB9KTsKCiAgICAgICAgICAgIGZ1bmN0aW9u IGFud2VuZGVuKCkgewogICAgICAgICAgICAgICAgb2ZmZW5lUGVycy5mb3JFYWNoKGZ1bmN0aW9u KG0pIHsKICAgICAgICAgICAgICAgICAgICBtLnppZWxJZCA9IG51bGw7CiAgICAgICAgICAgICAg ICAgICAgbS5uZXVBbmxlZ2VuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgbS5zdGF0dXMg PSAnaWdub3JpZXJ0JzsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgb2ZmZW5l Q29kZXMuZm9yRWFjaChmdW5jdGlvbihtKSB7CiAgICAgICAgICAgICAgICAgICAgbS56aWVsID0g bnVsbDsKICAgICAgICAgICAgICAgICAgICBtLnN0YXR1cyA9ICdpZ25vcmUnOwogICAgICAgICAg ICAgICAgICAgIG0uaGlud2VpcyA9ICdJZ25vcmllcnQnOwogICAgICAgICAgICAgICAgfSk7CiAg ICAgICAgICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICAgICAgICAgICAgICBpbXBT dGF0dXNSZW5kZXJuKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIE5pY2h0cyBPZmZl bmVzIC0+IGRpcmVrdCB1ZWJlcm5laG1lbiAoa2VpbmUgdWViZXJmbHVlc3NpZ2UgUnVlY2tmcmFn ZSkuCiAgICAgICAgICAgIGlmICghb2ZmZW5lUGVycy5sZW5ndGggJiYgIW9mZmVuZUNvZGVzLmxl bmd0aCkgeyBhbndlbmRlbigpOyByZXR1cm47IH0KCiAgICAgICAgICAgIHZhciB0ZWlsZSA9IFtd OwogICAgICAgICAgICBpZiAob2ZmZW5lUGVycy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHZh ciBwTmFtZW4gPSBvZmZlbmVQZXJzLm1hcChmdW5jdGlvbihtKSB7IHJldHVybiBtLmV4Y2VsLm5h Y2huYW1lOyB9KS5qb2luKCcsICcpOwogICAgICAgICAgICAgICAgdGVpbGUucHVzaChvZmZlbmVQ ZXJzLmxlbmd0aCArICcgUGVyc29uKGVuKSBibGVpYmVuIHVuenVnZW9yZG5ldCB1bmQgd2VyZGVu IE5JQ0hUIGltcG9ydGllcnQ6XG4nICsgcE5hbWVuKTsKICAgICAgICAgICAgfQogICAgICAgICAg ICBpZiAob2ZmZW5lQ29kZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICB2YXIgemVsbGVuID0g b2ZmZW5lQ29kZXMucmVkdWNlKGZ1bmN0aW9uKHN1bSwgbSkgeyByZXR1cm4gc3VtICsgKG0uYW56 YWhsIHx8IDApOyB9LCAwKTsKICAgICAgICAgICAgICAgIHZhciBjTmFtZW4gPSBvZmZlbmVDb2Rl cy5tYXAoZnVuY3Rpb24obSkgeyByZXR1cm4gbS5jb2RlOyB9KS5qb2luKCcsICcpOwogICAgICAg ICAgICAgICAgdGVpbGUucHVzaChvZmZlbmVDb2Rlcy5sZW5ndGggKyAnIENvZGUocykgYmxlaWJl biB1bnp1Z2VvcmRuZXQg4oCUIGRpZSBiZXRyb2ZmZW5lbiAnICsgemVsbGVuICsgJyBaZWxsZShu KSB3ZXJkZW4gZ2VsZWVydCBzdGF0dCBiZWbDvGxsdDpcbicgKyBjTmFtZW4pOwogICAgICAgICAg ICB9CiAgICAgICAgICAgIGJlc3RhZXRpZ2VuKAogICAgICAgICAgICAgICAgdGVpbGUuam9pbign XG5cbicpICsgJ1xuXG5Ucm90emRlbSDDvGJlcm5laG1lbiB1bmQgZGllc2UgUHVua3RlIGlnbm9y aWVyZW4/JywKICAgICAgICAgICAgICAgIGFud2VuZGVuLAogICAgICAgICAgICAgICAgeyB0aXRl bDogJ09mZmVuZSBadW9yZG51bmdlbiB2ZXJ3ZXJmZW4/JywgamFUZXh0OiAnVHJvdHpkZW0gw7xi ZXJuZWhtZW4nLCBqYURhbmdlcjogdHJ1ZSB9CiAgICAgICAgICAgICk7CiAgICAgICAgfSk7CiAg ICB9CgovLyA9PT09PSBFeHBvcnRzID09PT09CmV4cG9ydCB7CiAgICBpbXBSYW5nUGFyc2VuLCBp bXBFeGNlbFNlcmlhbFRvSXNvLAogICAgaW1wRGF0ZWlWZXJhcmJlaXRlbiwgaW1wRmVobGVyLCBp bXBBbmFseXNpZXJlbiwKICAgIGltcFN0YXR1c1JlbmRlcm4sIGltcFNjaHJlaWJlblN0YXJ0ZW4s CiAgICBpbXBQcm9ncmVzc01vZGFsT2VmZm5lbiwgaW1wUHJvZ3Jlc3NVcGRhdGUsIGltcFByb2dy ZXNzRmVobGVyLCBpbXBQcm9ncmVzc0VyZm9sZywKICAgIGltcFNjaHJlaWJlbkF1c2Z1ZWhyZW4s IGltcFNjaHJlaWJlblBoYXNlMiwgaW1wU2NocmVpYmVuUGhhc2UyVHJhbnNmb3JtLCBpbXBTY2hy ZWliZW5QaGFzZTMsCiAgICBpbXBNYXBwaW5nTW9kYWwsIGltcFRyb2NrZW5sYXVmQmVyZWNobmVu LCBpbXBUcm9ja2VubGF1Zk1vZGFsCn07Cg== ### FILE: js/logbuch.js | 36868 Ly8gPT09IGxvZ2J1Y2guanMgPT09Ci8vIEFlbmRlcnVuZ3MtSGlzdG9yaWUgZGVyIFBsYW51bmcu IFNlcnZlciBzY2hyZWlidCB0ZWNobmlzY2gta29tcGFrdGUKLy8gRWludHJhZWdlICh7YWt0aW9u LCBkZXRhaWxzfSk7IGRpZXNlcyBNb2R1bCBodW1hbmlzaWVydCBzaWUgZnVlciBkaWUKLy8gQW56 ZWlnZSAoQWt0aW9ucy1MYWJlbCwgRGV0YWlsLVRleHQsIEtsYXJuYW1lIHN0YXR0IE5XLUtlbm51 bmcpLgoKaW1wb3J0IHsgWiB9IGZyb20gJy4vY29yZV9zdGF0ZS5qcyc7CmltcG9ydCB7IGVzY2Fw ZUhUTUwsIGVzY2FwZUF0dHIsIGRhdHVtRm9ybWF0REUsIHJlbmRlckVycm9yQm94IH0gZnJvbSAn Li9jb3JlX3V0aWwuanMnOwppbXBvcnQgeyB0b2FzdCwgYmVzdGFldGlnZW4gfSBmcm9tICcuL3Vp X2RpYWxvZy5qcyc7CmltcG9ydCB7IGFwaSwgYXBpUG9zdCwgYXBpUHV0IH0gZnJvbSAnLi9jb3Jl X2FwaS5qcyc7CgovLyBIb29rczogYXBwLmpzIHZlcmRyYWh0ZXQgYGFmdGVyUmVzdG9yZWAgbWl0 IGRhdGVuTGFkZW4oKSwgZGFtaXQgbmFjaAovLyBlaW5lciBXaWVkZXJoZXJzdGVsbHVuZyBkZXIg Z2xvYmFsZSBTdGF0ZSAoWi5wbGFudW5nIGV0Yy4pIHJlZnJlc2hlZCB3aXJkLgpleHBvcnQgdmFy IGxvZ2J1Y2hIb29rcyA9IHsKICAgIGFmdGVyUmVzdG9yZTogbnVsbAp9OwoKLy8gPT09PT0gQWt0 aW9ucy1MYWJlbCA9PT09PQovLyBNYXBwaW5nIHRlY2huaXNjaGVyIEFrdGlvbi1Db2RlcyBhdWYg bWVuc2NoZW5sZXNiYXJlIGRldXRzY2hlIEJlc2NocmlmdHVuZy4KLy8gVW5iZWthbm50ZSBDb2Rl cyB3ZXJkZW4gZ2VuZXJpc2NoIHZvbiAnKi5nZWFlbmRlcnQnIC8gJyouYW5nZWxlZ3QnIGV0Yy4K Ly8gZ2VmYW5nZW4gKHNpZWhlIGFrdGlvbkxhYmVsKCkpLgp2YXIgQUtUSU9OX0xBQkVMID0gewog ICAgJ3plbGxlLmdlYWVuZGVydCc6ICAgICAgICAgICAgICAgICdTY2hpY2h0IGdlw6RuZGVydCcs CiAgICAnemVsbGVuLmJ1bGsuZ2VhZW5kZXJ0JzogICAgICAgICAgJ01laHJlcmUgU2NoaWNodGVu IGdlc2V0enQgKERyYWctRmlsbCknLAogICAgJ2tvbW1lbnRhci5nZWFlbmRlcnQnOiAgICAgICAg ICAgICdLb21tZW50YXIgZ2XDpG5kZXJ0JywKICAgICdwZXJzb24uYW5nZWxlZ3QnOiAgICAgICAg ICAgICAgICAnUGVyc29uIGFuZ2VsZWd0JywKICAgICdwZXJzb24uZ2VhZW5kZXJ0JzogICAgICAg ICAgICAgICAnUGVyc29uIGdlw6RuZGVydCcsCiAgICAncGVyc29uZW4ucmVpaGVuZm9sZ2UuZ2Vh ZW5kZXJ0JzogJ1BlcnNvbmVuLVJlaWhlbmZvbGdlIGdlw6RuZGVydCcsCiAgICAnYWRtaW4uZ2Vh ZW5kZXJ0JzogICAgICAgICAgICAgICAgJ0FkbWluLUtvbmZpZ3VyYXRpb24gZ2XDpG5kZXJ0JywK ICAgICdhZG1pbi5jb25maWcuZ2VhZW5kZXJ0JzogICAgICAgICAnQWRtaW4tS29uZmlndXJhdGlv biBnZcOkbmRlcnQnLAogICAgJ3N1cGVyVXNlci5nZWFlbmRlcnQnOiAgICAgICAgICAgICdTdXBl clVzZXItTGlzdGUgZ2XDpG5kZXJ0JywKICAgICdzdXBlcnVzZXIuZ2VhZW5kZXJ0JzogICAgICAg ICAgICAnU3VwZXJVc2VyLUxpc3RlIGdlw6RuZGVydCcsCiAgICAnZmFjaGF1ZnNpY2h0LmdlYWVu ZGVydCc6ICAgICAgICAgJ0ZhY2hhdWZzaWNodC1MaXN0ZSBnZcOkbmRlcnQnLAogICAgJ2RpcmVr dGlvbnNsZWl0dW5nLmdlYWVuZGVydCc6ICAgICdEaXJla3Rpb25zbGVpdHVuZy1MaXN0ZSBnZcOk bmRlcnQnLAogICAgJ2Z1ZWhydW5nc3N0ZWxsZS5nZWFlbmRlcnQnOiAgICAgICdGw7xocnVuZ3Nz dGVsbGUtTGlzdGUgZ2XDpG5kZXJ0JywKICAgICdiZXplaWNobnVuZ2VuLmdlYWVuZGVydCc6ICAg ICAgICAnQmV6ZWljaG51bmdlbiBnZcOkbmRlcnQnLAogICAgJ2VtYWlsdm9ybGFnZW4uZ2VhZW5k ZXJ0JzogICAgICAgICdFLU1haWwtVm9ybGFnZW4gZ2XDpG5kZXJ0JywKICAgICdlbWFpbHRyaWdn ZXIuZ2VhZW5kZXJ0JzogICAgICAgICAnRS1NYWlsLVRyaWdnZXIgZ2XDpG5kZXJ0JywKICAgICdl aW5zdGVsbHVuZ2VuLmdlYWVuZGVydCc6ICAgICAgICAnRWluc3RlbGx1bmdlbiBnZcOkbmRlcnQn LAogICAgJ2ZlaWVydGFnZS5nZWFlbmRlcnQnOiAgICAgICAgICAgICdGZWllcnRhZ2UgZ2XDpG5k ZXJ0JywKICAgICdmZXJpZW4uZ2VhZW5kZXJ0JzogICAgICAgICAgICAgICAnU2NodWxmZXJpZW4g Z2XDpG5kZXJ0JywKICAgICdzb25kZXJ0ZXJtaW5lLmdlYWVuZGVydCc6ICAgICAgICAnSGlud2Vp c2UgLyBTb25kZXJ0ZXJtaW5lIGdlw6RuZGVydCcsCiAgICAnc3RhbmRvcnRlLmdlYWVuZGVydCc6 ICAgICAgICAgICAgJ1N0YW5kb3J0ZSBnZcOkbmRlcnQnLAogICAgJ3NjaGljaHRjb2Rlcy5nZWFl bmRlcnQnOiAgICAgICAgICdTY2hpY2h0Y29kZXMgZ2XDpG5kZXJ0JywKICAgICdncnVwcGVuLmdl YWVuZGVydCc6ICAgICAgICAgICAgICAnRGllbnN0Z3J1cHBlbiBnZcOkbmRlcnQnLAogICAgJ2Z1 bmt0aW9uZW4uZ2VhZW5kZXJ0JzogICAgICAgICAgICdGdW5rdGlvbmVuIGdlw6RuZGVydCcsCiAg ICAnc2NoaWNodGZvbGdlbi5nZWFlbmRlcnQnOiAgICAgICAgJ1NjaGljaHRmb2xnZW4gZ2XDpG5k ZXJ0JywKICAgICdyb2xsZW4uZ2VhZW5kZXJ0JzogICAgICAgICAgICAgICAnUm9sbGVuIGdlw6Ru ZGVydCcsCiAgICAnYmFja3VwLmVyc3RlbGx0JzogICAgICAgICAgICAgICAgJ0JhY2t1cCBlcnN0 ZWxsdCcsCiAgICAnYmFja3VwLndpZWRlcmhlcmdlc3RlbGx0JzogICAgICAgJ0JhY2t1cCB3aWVk ZXJoZXJnZXN0ZWxsdCcsCiAgICAnYmFja3VwLmdlbG9lc2NodCc6ICAgICAgICAgICAgICAgJ0Jh Y2t1cCBnZWzDtnNjaHQnLAogICAgJ3BsYW51bmcucmVzZXQnOiAgICAgICAgICAgICAgICAgICdQ bGFudW5nIHp1csO8Y2tnZXNldHp0JywKICAgICdwbGFudW5nLmtvbXBsZXR0LWVyc2V0enQnOiAg ICAgICAnUGxhbnVuZyBrb21wbGV0dCBlcnNldHp0IChJbXBvcnQpJywKICAgICdkdW1teWRhdGVu LmVpbmdlc3BpZWx0JzogICAgICAgICAnRHVtbXlkYXRlbiBlaW5nZXNwaWVsdCcsCiAgICAndW50 ZXJiZXNldHp1bmcucXVpdHRpZXJ0JzogICAgICAgJ1VudGVyYmVzZXR6dW5nIHF1aXR0aWVydCcs CiAgICAnbG9jay5mb3JjZSc6ICAgICAgICAgICAgICAgICAgICAgJ0VkaXQtTG9jayDDvGJlcm5v bW1lbicsCiAgICAnaGlud2Vpcy5lcnpldWd0JzogICAgICAgICAgICAgICAgJ0hpbndlaXMgZXJ6 ZXVndCcsCiAgICAnaGlud2Vpcy5rZW5udG5pcyc6ICAgICAgICAgICAgICAgJ0hpbndlaXMgenVy IEtlbm50bmlzIGdlbm9tbWVuJywKICAgICd2ZXJhbnR3b3J0dW5nLmVpbmdlc3BydW5nZW4nOiAg ICAnQXXDn2VycGxhbm3DpMOfaWcgZWluZ2VzcHJ1bmdlbicsCiAgICAvLyBLb21tZW50YXJlOiBT ZXJ2ZXIgc2NocmVpYnQgaGluenVnZWZ1ZWd0L2dlbG9lc2NodCAoTklDSFQgZ2VhZW5kZXJ0KSDi gJQKICAgIC8vIG9obmUgZGllc2UgTGFiZWxzIGxhbmRldGVuIGRpZSBoYWV1Zmlnc3RlbiBLb21t ZW50YXItRWludHJhZWdlIGltCiAgICAvLyBnZW5lcmlzY2hlbiBSb2gtRmFsbGJhY2sgbWl0IHRl Y2huaXNjaGVuIEZlbGRuYW1lbi4KICAgICdrb21tZW50YXIuaGluenVnZWZ1ZWd0JzogICAgICAg ICAnS29tbWVudGFyIGhpbnp1Z2Vmw7xndCcsCiAgICAna29tbWVudGFyLmdlbG9lc2NodCc6ICAg ICAgICAgICAgJ0tvbW1lbnRhciBnZWzDtnNjaHQnLAogICAgJ3BlcnNvbi5pbi5wYXBpZXJrb3Ji JzogICAgICAgICAgICdQZXJzb24gaW4gUGFwaWVya29yYiB2ZXJzY2hvYmVuJywKICAgICdwZXJz b24uZW5kZ3VlbHRpZy5nZWxvZXNjaHQnOiAgICAnUGVyc29uIGVuZGfDvGx0aWcgZ2Vsw7ZzY2h0 JywKICAgICdwcm90b2tvbGwuZ2Vsb2VzY2h0JzogICAgICAgICAgICAnTG9nYnVjaC1Qcm90b2tv bGwgZ2Vsw7ZzY2h0JywKICAgICdtaXR0ZWlsdW5nLmFuZ2VsZWd0JzogICAgICAgICAgICAnTWl0 dGVpbHVuZyBhbmdlbGVndCcsCiAgICAnbWl0dGVpbHVuZy5nZWFlbmRlcnQnOiAgICAgICAgICAg J01pdHRlaWx1bmcgZ2XDpG5kZXJ0JywKICAgICdtaXR0ZWlsdW5nLmdlbG9lc2NodCc6ICAgICAg ICAgICAnTWl0dGVpbHVuZyBnZWzDtnNjaHQnLAogICAgJ21pdHRlaWx1bmcudXBsb2FkJzogICAg ICAgICAgICAgICdNaXR0ZWlsdW5nIOKAlCBEYXRlaSBob2NoZ2VsYWRlbicsCiAgICAnYXZhdGFy Lmdlc2V0enQnOiAgICAgICAgICAgICAgICAgJ0F2YXRhciBnZXNldHp0JywKICAgICdhdmF0YXIu ZW50ZmVybnQnOiAgICAgICAgICAgICAgICAnQXZhdGFyIGVudGZlcm50Jwp9OwoKLy8gTGVzYmFy ZSBCZXplaWNobnVuZ2VuIHBybyBIaW53ZWlzLVR5cCAoU3BpZWdlbCB2b24ganMvaGlud2Vpc2Uu anMKLy8gVFlQX0xBQkVMLCBoaWVyIG1pdCBVbWxhdXRlbiBmdWVyIGRpZSBMb2didWNoLUFuemVp Z2UpLgp2YXIgSElOV0VJU19UWVBfTEFCRUwgPSB7CiAgICBpZGVudGl0YWV0X2dlYWVuZGVydDog ICAgICdJZGVudGl0w6R0IGdlw6RuZGVydCcsCiAgICByb2xsZV9nZWFlbmRlcnQ6ICAgICAgICAg ICdSb2xsZSBnZcOkbmRlcnQnLAogICAgcm9sbGVfdmVyYW50d29ydHVuZzogICAgICAnVmVyYW50 d29ydHVuZ3MtV2VjaHNlbCAoUm9sbGUpJywKICAgIGJhY2t1cF93aWVkZXJoZXJnZXN0ZWxsdDog J0JhY2t1cCB3aWVkZXJoZXJnZXN0ZWxsdCcsCiAgICBwbGFudW5nX3Jlc2V0OiAgICAgICAgICAg ICdQbGFudW5nIHp1csO8Y2tnZXNldHp0JywKICAgIGtyYW5rbWVsZHVuZzogICAgICAgICAgICAg J0tyYW5rbWVsZHVuZycsCiAgICBwZXJzb25fbmV1OiAgICAgICAgICAgICAgICdQZXJzb24gbmV1 IGFuZ2VsZWd0JywKICAgIHBlcnNvbl9pbmFrdGl2OiAgICAgICAgICAgJ1BlcnNvbiBpbmFrdGl2 IGdlc2V0enQnLAogICAgZ2VidXJ0c3RhZzogICAgICAgICAgICAgICAnR2VidXJ0c3RhZycsCiAg ICBzY2hpY2h0X2VkaXRfbmFoZTogICAgICAgICdTY2hpY2h0LcOEbmRlcnVuZyBuYWhlIGFtIERh dHVtJwp9OwpmdW5jdGlvbiBfaGlud2Vpc1R5cExhYmVsKHQpIHsgcmV0dXJuIEhJTldFSVNfVFlQ X0xBQkVMW3RdIHx8ICh0IHx8ICcnKTsgfQoKZnVuY3Rpb24gYWt0aW9uTGFiZWwoY29kZSkgewog ICAgaWYgKCFjb2RlKSByZXR1cm4gJyhvaG5lKSc7CiAgICBpZiAoQUtUSU9OX0xBQkVMW2NvZGVd KSByZXR1cm4gQUtUSU9OX0xBQkVMW2NvZGVdOwogICAgLy8gR2VuZXJpc2NoZXIgRmFsbGJhY2s6 ICdmb28uZ2VhZW5kZXJ0JyAtPiAnRm9vIGdlw6RuZGVydCcKICAgIHZhciB0ZWlsZSA9IGNvZGUu c3BsaXQoJy4nKTsKICAgIGlmICh0ZWlsZS5sZW5ndGggPj0gMikgewogICAgICAgIHZhciBiYXNp cyA9IHRlaWxlWzBdLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGVpbGVbMF0uc2xpY2UoMSk7 CiAgICAgICAgdmFyIHJlc3QgPSB0ZWlsZS5zbGljZSgxKS5qb2luKCcuJykKICAgICAgICAgICAg LnJlcGxhY2UoJ2dlYWVuZGVydCcsICdnZcOkbmRlcnQnKQogICAgICAgICAgICAucmVwbGFjZSgn Z2Vsb2VzY2h0JywgJ2dlbMO2c2NodCcpCiAgICAgICAgICAgIC5yZXBsYWNlKCd6dXJ1ZWNrZ2Vz ZXR6dCcsICd6dXLDvGNrZ2VzZXR6dCcpCiAgICAgICAgICAgIC5yZXBsYWNlKCdxdWl0dGllcnQn LCAncXVpdHRpZXJ0Jyk7CiAgICAgICAgcmV0dXJuIGJhc2lzICsgJyAnICsgcmVzdDsKICAgIH0K ICAgIHJldHVybiBjb2RlOwp9CgovLyBBa3Rpb24gLT4gS2F0ZWdvcmllLVNsdWcgZnVlciBkYXMg RmFyYi1QaWxsIGluIGRlciBBa3Rpb24tU3BhbHRlLgovLyBLYXRlZ29yaWVuIGdlYmVuIGVpbmVu IFNjaG5lbGwtTGVzZWZsdXNzOiBncnVlbmUgUGlsbHMgPSBQbGFudW5nLAovLyBibGF1ZSA9IFBl cnNvbiwgb3JhbmdlID0gQWRtaW4tS29uZmlnLCB2aW9sZXR0ID0gSGlud2VpcyB1c3cuCnZhciBB S1RJT05fS0FURUdPUklFID0gewogICAgJ3plbGxlLmdlYWVuZGVydCc6ICAgICAgICAgICAgICAg ICdwbGFudW5nJywKICAgICd6ZWxsZW4uYnVsay5nZWFlbmRlcnQnOiAgICAgICAgICAncGxhbnVu ZycsCiAgICAna29tbWVudGFyLmdlYWVuZGVydCc6ICAgICAgICAgICAgJ3BsYW51bmcnLAogICAg J3VudGVyYmVzZXR6dW5nLnF1aXR0aWVydCc6ICAgICAgICdwbGFudW5nJywKICAgICdsb2NrLmZv cmNlJzogICAgICAgICAgICAgICAgICAgICAnc3lzdGVtJywKICAgICdwZXJzb24uYW5nZWxlZ3Qn OiAgICAgICAgICAgICAgICAncGVyc29uJywKICAgICdwZXJzb24uZ2VhZW5kZXJ0JzogICAgICAg ICAgICAgICAncGVyc29uJywKICAgICdwZXJzb25lbi5yZWloZW5mb2xnZS5nZWFlbmRlcnQnOiAn cGVyc29uJywKICAgICdhZG1pbi5nZWFlbmRlcnQnOiAgICAgICAgICAgICAgICAnYWRtaW4nLAog ICAgJ2FkbWluLmNvbmZpZy5nZWFlbmRlcnQnOiAgICAgICAgICdhZG1pbicsCiAgICAnYWRtaW4u Z3J1cHBlLnVtYmVuYW5udCc6ICAgICAgICAgJ2FkbWluJywKICAgICdhZG1pbi5taWtyb3RlYW1z LmFuZ2VsZWd0JzogICAgICAnYWRtaW4nLAogICAgJ2FkbWluLm1pa3JvdGVhbXMubmV1JzogICAg ICAgICAgICdhZG1pbicsCiAgICAnYmV6ZWljaG51bmdlbi5nZWFlbmRlcnQnOiAgICAgICAgJ2Fk bWluJywKICAgICdlbWFpbHZvcmxhZ2VuLmdlYWVuZGVydCc6ICAgICAgICAnYWRtaW4nLAogICAg J2VtYWlsdHJpZ2dlci5nZWFlbmRlcnQnOiAgICAgICAgICdhZG1pbicsCiAgICAnZWluc3RlbGx1 bmdlbi5nZWFlbmRlcnQnOiAgICAgICAgJ2FkbWluJywKICAgICdmZWllcnRhZ2UuZ2VhZW5kZXJ0 JzogICAgICAgICAgICAnYWRtaW4nLAogICAgJ2Zlcmllbi5nZWFlbmRlcnQnOiAgICAgICAgICAg ICAgICdhZG1pbicsCiAgICAnc29uZGVydGVybWluZS5nZWFlbmRlcnQnOiAgICAgICAgJ2FkbWlu JywKICAgICdzdGFuZG9ydGUuZ2VhZW5kZXJ0JzogICAgICAgICAgICAnYWRtaW4nLAogICAgJ3Nj aGljaHRjb2Rlcy5nZWFlbmRlcnQnOiAgICAgICAgICdhZG1pbicsCiAgICAnZ3J1cHBlbi5nZWFl bmRlcnQnOiAgICAgICAgICAgICAgJ2FkbWluJywKICAgICdmdW5rdGlvbmVuLmdlYWVuZGVydCc6 ICAgICAgICAgICAnYWRtaW4nLAogICAgJ3NjaGljaHRmb2xnZW4uZ2VhZW5kZXJ0JzogICAgICAg ICdhZG1pbicsCiAgICAncm9sbGVuLmdlYWVuZGVydCc6ICAgICAgICAgICAgICAgJ2FkbWluJywK ICAgICdzdXBlclVzZXIuZ2VhZW5kZXJ0JzogICAgICAgICAgICAncm9sbGUnLAogICAgJ3N1cGVy dXNlci5nZWFlbmRlcnQnOiAgICAgICAgICAgICdyb2xsZScsCiAgICAnZmFjaGF1ZnNpY2h0Lmdl YWVuZGVydCc6ICAgICAgICAgJ3JvbGxlJywKICAgICdkaXJla3Rpb25zbGVpdHVuZy5nZWFlbmRl cnQnOiAgICAncm9sbGUnLAogICAgJ2Z1ZWhydW5nc3N0ZWxsZS5nZWFlbmRlcnQnOiAgICAgICdy b2xsZScsCiAgICAnd2FjaGxlaXR1bmcuZ2VhZW5kZXJ0JzogICAgICAgICAgJ3JvbGxlJywKICAg ICdoaW53ZWlzLmVyemV1Z3QnOiAgICAgICAgICAgICAgICAnaGlud2VpcycsCiAgICAnaGlud2Vp cy5rZW5udG5pcyc6ICAgICAgICAgICAgICAgJ2hpbndlaXMnLAogICAgJ3ZlcmFudHdvcnR1bmcu ZWluZ2VzcHJ1bmdlbic6ICAgICdwbGFudW5nJywKICAgICdiYWNrdXAuZXJzdGVsbHQnOiAgICAg ICAgICAgICAgICAnYmFja3VwJywKICAgICdiYWNrdXAud2llZGVyaGVyZ2VzdGVsbHQnOiAgICAg ICAnc3lzdGVtJywKICAgICdiYWNrdXAuZ2Vsb2VzY2h0JzogICAgICAgICAgICAgICAnYmFja3Vw JywKICAgICdwbGFudW5nLnJlc2V0JzogICAgICAgICAgICAgICAgICAnc3lzdGVtJywKICAgICdw bGFudW5nLmtvbXBsZXR0LWVyc2V0enQnOiAgICAgICAnc3lzdGVtJywKICAgICdkdW1teWRhdGVu LmVpbmdlc3BpZWx0JzogICAgICAgICAnc3lzdGVtJywKICAgICdrb21tZW50YXIuaGluenVnZWZ1 ZWd0JzogICAgICAgICAncGxhbnVuZycsCiAgICAna29tbWVudGFyLmdlbG9lc2NodCc6ICAgICAg ICAgICAgJ3BsYW51bmcnLAogICAgJ3BlcnNvbi5pbi5wYXBpZXJrb3JiJzogICAgICAgICAgICdw ZXJzb24nLAogICAgJ3BlcnNvbi5lbmRndWVsdGlnLmdlbG9lc2NodCc6ICAgICdwZXJzb24nLAog ICAgJ3Byb3Rva29sbC5nZWxvZXNjaHQnOiAgICAgICAgICAgICdzeXN0ZW0nLAogICAgJ21pdHRl aWx1bmcuYW5nZWxlZ3QnOiAgICAgICAgICAgICdhZG1pbicsCiAgICAnbWl0dGVpbHVuZy5nZWFl bmRlcnQnOiAgICAgICAgICAgJ2FkbWluJywKICAgICdtaXR0ZWlsdW5nLmdlbG9lc2NodCc6ICAg ICAgICAgICAnYWRtaW4nLAogICAgJ21pdHRlaWx1bmcudXBsb2FkJzogICAgICAgICAgICAgICdh ZG1pbicsCiAgICAnYXZhdGFyLmdlc2V0enQnOiAgICAgICAgICAgICAgICAgJ3BlcnNvbicsCiAg ICAnYXZhdGFyLmVudGZlcm50JzogICAgICAgICAgICAgICAgJ3BlcnNvbicKfTsKZnVuY3Rpb24g YWt0aW9uS2F0ZWdvcmllKGNvZGUpIHsKICAgIGlmIChBS1RJT05fS0FURUdPUklFW2NvZGVdKSBy ZXR1cm4gQUtUSU9OX0tBVEVHT1JJRVtjb2RlXTsKICAgIC8vIEhldXJpc3RpazogcHJhZWZpeCB2 b3IgZGVtIFB1bmt0IGVudHNjaGVpZGV0LgogICAgdmFyIHByZWYgPSAoY29kZSB8fCAnJykuc3Bs aXQoJy4nKVswXTsKICAgIGlmIChwcmVmID09PSAnemVsbGUnIHx8IHByZWYgPT09ICd6ZWxsZW4n IHx8IHByZWYgPT09ICdrb21tZW50YXInKSByZXR1cm4gJ3BsYW51bmcnOwogICAgaWYgKHByZWYg PT09ICdwZXJzb24nIHx8IHByZWYgPT09ICdwZXJzb25lbicpIHJldHVybiAncGVyc29uJzsKICAg IGlmIChwcmVmID09PSAnaGlud2VpcycpIHJldHVybiAnaGlud2Vpcyc7CiAgICBpZiAocHJlZiA9 PT0gJ2JhY2t1cCcpIHJldHVybiAnYmFja3VwJzsKICAgIGlmIChwcmVmID09PSAncGxhbnVuZycg fHwgcHJlZiA9PT0gJ2xvY2snKSByZXR1cm4gJ3N5c3RlbSc7CiAgICByZXR1cm4gJ2FkbWluJzsK fQoKLy8gSW5pdGlhbGVuIGZ1ZXIgZGVuIFVzZXItQXZhdGFyIGltIExvZ2J1Y2guIEFremVwdGll cnQgZGllIGJlcmVpdHMgenVtCi8vIEtsYXJuYW1lbiBhdWZnZWxvZXN0ZSBGb3JtICgiUGhpbGlw cCBSb2VzZ2VuIChGYWNoYXVmc2ljaHQpIiBvZGVyCi8vICJTYW5kcmEgTWVubmVrZSAoZWhlbWFs aWcpIikgdW5kIGZpbHRlcnQgZGllIEtsYW1tZXItQW5ub3RhdGlvbiByYXVzLgpmdW5jdGlvbiBf dXNlckluaXRpYWxlbihuYW1lKSB7CiAgICBpZiAoIW5hbWUpIHJldHVybiAnPyc7CiAgICB2YXIg Y2xlYW4gPSBuYW1lLnJlcGxhY2UoL1xzKlwoLio/XClccyovZywgJycpLnRyaW0oKTsKICAgIHZh ciB0ZWlsZSA9IGNsZWFuLnNwbGl0KC9ccysvKS5maWx0ZXIoQm9vbGVhbik7CiAgICBpZiAoIXRl aWxlLmxlbmd0aCkgcmV0dXJuICc/JzsKICAgIHZhciBpID0gdGVpbGVbMF0uY2hhckF0KDApLnRv VXBwZXJDYXNlKCk7CiAgICBpZiAodGVpbGUubGVuZ3RoID4gMSkgaSArPSB0ZWlsZVt0ZWlsZS5s ZW5ndGggLSAxXS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKTsKICAgIHJldHVybiBpOwp9CgovLyBa ZXJsZWd0ICJZWVlZLU1NLUREIEhIOm1tOnNzIiBpbiB7IGRhdHVtOiAiREQuTU0uWVlZWSIsIHpl aXQ6ICJISDptbSIgfS4KLy8gRnVlciBkYXMgendlaXplaWxpZ2UgVGltZXN0YW1wLUxheW91dCBp biBkZXIgVGFiZWxsZS4KZnVuY3Rpb24gX3plaXRzdGVtcGVsVGVpbGUodHMpIHsKICAgIGlmICgh dHMpIHJldHVybiB7IGRhdHVtOiAnJywgemVpdDogJycgfTsKICAgIHZhciBtID0gU3RyaW5nKHRz KS5tYXRjaCgvXihcZHs0fSktKFxkezJ9KS0oXGR7Mn0pW1xzVF0oXGR7Mn0pOihcZHsyfSkvKTsK ICAgIGlmICghbSkgcmV0dXJuIHsgZGF0dW06IHRzLCB6ZWl0OiAnJyB9OwogICAgcmV0dXJuIHsg ZGF0dW06IG1bM10gKyAnLicgKyBtWzJdICsgJy4nICsgbVsxXSwgemVpdDogbVs0XSArICc6JyAr IG1bNV0gfTsKfQoKLy8gPT09PT0gQmVudXR6ZXItS2xhcm5hbWUgPT09PT0KLy8gU2VydmVyIHNj aHJlaWJ0ICJET01BSU5cXHVzZXJuYW1lIi4gV2lyIGxvZXNlbiBkaWVzZSBOVy1LZW5udW5nIGdl Z2VuIGRpZQovLyBQZXJzb25hbHZlcndhbHR1bmcgYXVmIOKAlCB1bmQgZmFsbHMgZG9ydCBuaWNo dCBnZWZ1bmRlbiwgZ2VnZW4gZGllIEFkbWluLQovLyBMaXN0ZW4gKGZhY2hhdWZzaWNodCwgc3Vw ZXJVc2VyKS4gQXVjaCBpbmFrdGl2ZS9laGVtYWxpZ2UgUGVyc29uZW4gd2VyZGVuCi8vIGJlcnVl Y2tzaWNodGlndC4KCmZ1bmN0aW9uIF9rZW5udW5nVmFyaWFudGVuKHMpIHsKICAgIHZhciBvdXQg PSBbXTsKICAgIGlmICghcykgcmV0dXJuIG91dDsKICAgIHZhciBsID0gcy50b0xvd2VyQ2FzZSgp OwogICAgb3V0LnB1c2gobCk7CiAgICBpZiAobC5pbmRleE9mKCdcXCcpID49IDApIG91dC5wdXNo KGwuc3BsaXQoJ1xcJykucG9wKCkpOwogICAgcmV0dXJuIG91dDsKfQoKZnVuY3Rpb24gYmVudXR6 ZXJLbGFybmFtZShzZXJ2ZXJCZW51dHplcikgewogICAgaWYgKCFzZXJ2ZXJCZW51dHplcikgcmV0 dXJuICcodW5iZWthbm50KSc7CiAgICB2YXIgdmFyaWFudGVuID0gX2tlbm51bmdWYXJpYW50ZW4o c2VydmVyQmVudXR6ZXIpOwoKICAgIC8vIDEpIFBlcnNvbmFsdmVyd2FsdHVuZyDigJQgYXVjaCBp bmFrdGl2ZS9laGVtYWxpZ2UgYmVydWVja3NpY2h0aWdlbi4KICAgIHZhciBwZXJzb25lbiA9ICha LnBsYW51bmcgJiYgWi5wbGFudW5nLnBlcnNvbmVuKSB8fCBbXTsKICAgIGZvciAodmFyIGkgPSAw OyBpIDwgcGVyc29uZW4ubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgcCA9IHBlcnNvbmVuW2ld OwogICAgICAgIGlmICghcC5ud0tlbm51bmcpIGNvbnRpbnVlOwogICAgICAgIHZhciBwSyA9IFN0 cmluZyhwLm53S2VubnVuZykudG9Mb3dlckNhc2UoKTsKICAgICAgICBpZiAodmFyaWFudGVuLmlu ZGV4T2YocEspID49IDApIHsKICAgICAgICAgICAgdmFyIG5hbWUgPSAoKHAudm9ybmFtZSA/IHAu dm9ybmFtZSArICcgJyA6ICcnKSArIChwLm5hbWUgfHwgJycpKS50cmltKCk7CiAgICAgICAgICAg IGlmICghbmFtZSkgbmFtZSA9IHAubndLZW5udW5nOwogICAgICAgICAgICByZXR1cm4gbmFtZSAr IChwLmFrdGl2ID09PSBmYWxzZSA/ICcgKGVoZW1hbGlnKScgOiAnJyk7CiAgICAgICAgfQogICAg fQogICAgLy8gMikgQWRtaW4tTGlzdGVuIEZhY2hhdWZzaWNodCAvIFN1cGVyVXNlcgogICAgdmFy IGZhID0gKFouYWRtaW4gJiYgWi5hZG1pbi5mYWNoYXVmc2ljaHQpIHx8IFtdOwogICAgZm9yICh2 YXIgaiA9IDA7IGogPCBmYS5sZW5ndGg7IGorKykgewogICAgICAgIGlmIChmYVtqXS5ud0tlbm51 bmcgJiYgdmFyaWFudGVuLmluZGV4T2YoU3RyaW5nKGZhW2pdLm53S2VubnVuZykudG9Mb3dlckNh c2UoKSkgPj0gMCkgewogICAgICAgICAgICByZXR1cm4gKGZhW2pdLm5hbWUgfHwgZmFbal0ubndL ZW5udW5nKSArICcgKEZhY2hhdWZzaWNodCknOwogICAgICAgIH0KICAgIH0KICAgIHZhciBzdSA9 IChaLmFkbWluICYmIFouYWRtaW4uc3VwZXJVc2VyKSB8fCBbXTsKICAgIGZvciAodmFyIGsgPSAw OyBrIDwgc3UubGVuZ3RoOyBrKyspIHsKICAgICAgICBpZiAoc3Vba10ubndLZW5udW5nICYmIHZh cmlhbnRlbi5pbmRleE9mKFN0cmluZyhzdVtrXS5ud0tlbm51bmcpLnRvTG93ZXJDYXNlKCkpID49 IDApIHsKICAgICAgICAgICAgcmV0dXJuIChzdVtrXS5uYW1lIHx8IHN1W2tdLm53S2VubnVuZykg KyAnIChTdXBlclVzZXIpJzsKICAgICAgICB9CiAgICB9CiAgICAvLyAzKSBGYWxsYmFjazogUm9o LUtlbm51bmcgYW56ZWlnZW4sIGFiZXIgRG9tYWluIGFic2NobmVpZGVuCiAgICB2YXIgbCA9IHNl cnZlckJlbnV0emVyLnRvTG93ZXJDYXNlKCk7CiAgICByZXR1cm4gbC5pbmRleE9mKCdcXCcpID49 IDAgPyBzZXJ2ZXJCZW51dHplci5zcGxpdCgnXFwnKS5wb3AoKSA6IHNlcnZlckJlbnV0emVyOwp9 CgovLyA9PT09PSBEZXRhaWxzLUZvcm1hdHRlciA9PT09PQoKLy8gTWFwcGluZyB0ZWNobmlzY2hl ciBQZXJzb25lbmZlbGQtS2V5cyBhdWYgZGV1dHNjaGUgTGFiZWxzIGZ1ZXIgZGVuIERpZmYuCnZh ciBGRUxEX0xBQkVMID0gewogICAgbmFtZTogICAgICAgICAnTmFjaG5hbWUnLAogICAgdm9ybmFt ZTogICAgICAnVm9ybmFtZScsCiAgICBkaWVuc3RncmFkOiAgICdEaWVuc3RncmFkJywKICAgIGZ1 bmt0aW9uOiAgICAgJ0Z1bmt0aW9uJywKICAgIHJhbmc6ICAgICAgICAgJ1JhbmcnLAogICAgZ3J1 cHBlOiAgICAgICAnRGllbnN0Z3J1cHBlJywKICAgIG9lOiAgICAgICAgICAgJ09FJywKICAgIGRp ZW5zdG51bW1lcjogJ0RpZW5zdG51bW1lcicsCiAgICB0ZWxlZm9uOiAgICAgICdUZWxlZm9uJywK ICAgIGVtYWlsOiAgICAgICAgJ0UtTWFpbCcsCiAgICBud0tlbm51bmc6ICAgICdOVy1LZW5udW5n JywKICAgIGdlYnVydHNkYXR1bTogJ0dlYnVydHNkYXR1bScsCiAgICBha3RpdjogICAgICAgICdB a3RpdicsCiAgICBwb3NpdGlvbjogICAgICdQb3NpdGlvbicsCiAgICBlZGl0UmVjaHRlOiAgICdF ZGl0LVJlY2h0ZScKfTsKCmZ1bmN0aW9uIF9kaWZmQW56ZWlnZSh2KSB7CiAgICBpZiAodiA9PSBu dWxsIHx8IHYgPT09ICcnKSByZXR1cm4gJyhsZWVyKSc7CiAgICBpZiAodHlwZW9mIHYgPT09ICdi b29sZWFuJykgcmV0dXJuIHYgPyAnSmEnIDogJ05laW4nOwogICAgaWYgKHR5cGVvZiB2ID09PSAn b2JqZWN0JykgewogICAgICAgIHRyeSB7IHJldHVybiBKU09OLnN0cmluZ2lmeSh2KTsgfSBjYXRj aCAoXykgeyByZXR1cm4gU3RyaW5nKHYpOyB9CiAgICB9CiAgICByZXR1cm4gU3RyaW5nKHYpOwp9 CgpmdW5jdGlvbiBfcGVyc29uTGFiZWwocGVyc29uSWQsIHBNYXApIHsKICAgIGlmICghcGVyc29u SWQpIHJldHVybiAnJzsKICAgIHJldHVybiBwTWFwW1N0cmluZyhwZXJzb25JZCldIHx8ICgnUGVy c29uIElEICcgKyBwZXJzb25JZCk7Cn0KCmZ1bmN0aW9uIF9rdWVyemVUZXh0KHMsIG1heCkgewog ICAgaWYgKCFzKSByZXR1cm4gJyc7CiAgICBzID0gU3RyaW5nKHMpLnJlcGxhY2UoL1xzKy9nLCAn ICcpOwogICAgaWYgKHMubGVuZ3RoIDw9IG1heCkgcmV0dXJuIHM7CiAgICByZXR1cm4gcy5zbGlj ZSgwLCBtYXggLSAxKSArICfigKYnOwp9CgovLyBGb3JtYXRpZXJ0IGVpbiBlZGl0UmVjaHRlLU9i amVrdCAoe3BlcnNvbmVuSWRzOltdLGRpZW5zdGdydXBwZW46W10sc3RhbmRvcnRlOltdfSkKLy8g YWxzIEtsYXJ0ZXh0LUxpc3RlLCBzdGF0dCByb2hlbiBKU09OLUR1bXAgenUgemVpZ2VuLiBQZXJz b25lbi1JRHMgd2VyZGVuCi8vIGdlZ2VuIGRpZSBQZXJzb25hbHZlcndhbHR1bmcgYXVmZ2Vsb2Vz dC4gTGVlcmVyIEluaGFsdCA9ICLigJQiLgpmdW5jdGlvbiBfZWRpdFJlY2h0ZUt1cnoob2JqLCBw TWFwKSB7CiAgICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JykgcmV0dXJuICc8 aT7igJQ8L2k+JzsKICAgIHZhciB0ZWlsZSA9IFtdOwogICAgdmFyIHBJZHMgPSBBcnJheS5pc0Fy cmF5KG9iai5wZXJzb25lbklkcykgPyBvYmoucGVyc29uZW5JZHMgOiBbXTsKICAgIHZhciBnciAg ID0gQXJyYXkuaXNBcnJheShvYmouZGllbnN0Z3J1cHBlbikgPyBvYmouZGllbnN0Z3J1cHBlbiA6 IFtdOwogICAgdmFyIHN0ICAgPSBBcnJheS5pc0FycmF5KG9iai5zdGFuZG9ydGUpID8gb2JqLnN0 YW5kb3J0ZSA6IFtdOwogICAgaWYgKHBJZHMubGVuZ3RoKSB7CiAgICAgICAgdmFyIG5hbWVuID0g cElkcy5tYXAoZnVuY3Rpb24oaWQpIHsKICAgICAgICAgICAgdmFyIG4gPSAocE1hcCB8fCB7fSlb U3RyaW5nKGlkKV07CiAgICAgICAgICAgIHJldHVybiBuID8gbi5zcGxpdCgnLCcpWzBdLnRyaW0o KSA6ICcjJyArIGlkOyAgIC8vIG51ciBOYWNobmFtZSwga29tcGFrdAogICAgICAgIH0pOwogICAg ICAgIHRlaWxlLnB1c2gocElkcy5sZW5ndGggKyAnIFBlcnNvbicgKyAocElkcy5sZW5ndGggPT09 IDEgPyAnJyA6ICdlbicpICsKICAgICAgICAgICAgICAgICAgICcgKCcgKyBlc2NhcGVIVE1MKG5h bWVuLmpvaW4oJywgJykpICsgJyknKTsKICAgIH0KICAgIGlmIChnci5sZW5ndGgpIHRlaWxlLnB1 c2goZ3IubGVuZ3RoICsgJyBEaWVuc3RncnVwcGUnICsgKGdyLmxlbmd0aCA9PT0gMSA/ICcnIDog J24nKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKCcgKyBlc2NhcGVIVE1MKGdy LmpvaW4oJywgJykpICsgJyknKTsKICAgIGlmIChzdC5sZW5ndGgpIHRlaWxlLnB1c2goc3QubGVu Z3RoICsgJyBTdGFuZG9ydCcgKyAoc3QubGVuZ3RoID09PSAxID8gJ2UnIDogJ2UnKSArCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICcgKCcgKyBlc2NhcGVIVE1MKHN0LmpvaW4oJywgJykp ICsgJyknKTsKICAgIGlmICghdGVpbGUubGVuZ3RoKSByZXR1cm4gJzxpPuKAlDwvaT4nOwogICAg cmV0dXJuIHRlaWxlLmpvaW4oJywgJyk7Cn0KZnVuY3Rpb24gX2VkaXRSZWNodGVEaWZmKGFsdCwg bmV1LCBwTWFwKSB7CiAgICByZXR1cm4gX2VkaXRSZWNodGVLdXJ6KGFsdCwgcE1hcCkgKyAnICZy YXJyOyAnICsgX2VkaXRSZWNodGVLdXJ6KG5ldSwgcE1hcCk7Cn0KCi8vIEhlbGZlcjogUGx1cmFs ICJFaW50cmFnL0VpbnRyw6RnZSIgbWl0IGtvcnJla3RlbSBkZXV0c2NoZW4gUGx1cmFsLgpmdW5j dGlvbiBfZWludHJhZ1BsdXJhbChuKSB7CiAgICBpZiAobiA9PSBudWxsKSByZXR1cm4gJyc7CiAg ICBuID0gTnVtYmVyKG4pOwogICAgaWYgKG4gPT09IDEpIHJldHVybiAnMSBFaW50cmFnJzsKICAg IHJldHVybiBuICsgJyBFaW50csOkZ2UnOwp9CgpmdW5jdGlvbiBkZXRhaWxzSHRtbChlLCBwTWFw KSB7CiAgICB2YXIgYWt0aW9uID0gZS5ha3Rpb24gfHwgJyc7CiAgICBpZiAoYWt0aW9uID09PSAn emVsbGUuZ2VhZW5kZXJ0JykgewogICAgICAgIHJldHVybiBfcGVyc29uTGFiZWwoZS5wZXJzb25J ZCwgcE1hcCkgKyAnIGFtICcgKyBkYXR1bUZvcm1hdERFKGUuZGF0dW0pICsKICAgICAgICAgICAg JzogPGNvZGU+JyArIGVzY2FwZUhUTUwoZS5hbHRlcldlcnQgfHwgJyhsZWVyKScpICsgJzwvY29k ZT4gJnJhcnI7IDxjb2RlPicgKyBlc2NhcGVIVE1MKGUubmV1ZXJXZXJ0IHx8ICcobGVlciknKSAr ICc8L2NvZGU+JzsKICAgIH0KICAgIGlmIChha3Rpb24gPT09ICdrb21tZW50YXIuZ2VhZW5kZXJ0 JykgewogICAgICAgIHZhciBhbHQgPSBlLmFsdGVyVGV4dCB8fCBlLnRleHQgfHwgJyc7ICAgLy8g J3RleHQnID0gYWx0ZXMgU2NoZW1hCiAgICAgICAgdmFyIG5ldSA9IGUubmV1ZXJUZXh0IHx8ICcn OwogICAgICAgIHZhciB6aWVsID0gX3BlcnNvbkxhYmVsKGUucGVyc29uSWQsIHBNYXApICsgJyBh bSAnICsgZGF0dW1Gb3JtYXRERShlLmRhdHVtKTsKICAgICAgICBpZiAoIWFsdCAmJiBuZXUpIHJl dHVybiB6aWVsICsgJzogbmV1IOKAnicgKyBlc2NhcGVIVE1MKF9rdWVyemVUZXh0KG5ldSwgODAp KSArICciJzsKICAgICAgICBpZiAoYWx0ICYmICFuZXUpIHJldHVybiB6aWVsICsgJzogZ2Vsw7Zz Y2h0ICh3YXIg4oCeJyArIGVzY2FwZUhUTUwoX2t1ZXJ6ZVRleHQoYWx0LCA4MCkpICsgJyIpJzsK ICAgICAgICBpZiAoYWx0ICYmIG5ldSkgIHJldHVybiB6aWVsICsgJzog4oCeJyArIGVzY2FwZUhU TUwoX2t1ZXJ6ZVRleHQoYWx0LCA2MCkpICsgJyIgJnJhcnI7IOKAnicgKyBlc2NhcGVIVE1MKF9r dWVyemVUZXh0KG5ldSwgNjApKSArICciJzsKICAgICAgICByZXR1cm4gemllbCArICcg4oCUIEtv bW1lbnRhcic7CiAgICB9CiAgICBpZiAoYWt0aW9uID09PSAna29tbWVudGFyLmhpbnp1Z2VmdWVn dCcgfHwgYWt0aW9uID09PSAna29tbWVudGFyLmdlbG9lc2NodCcpIHsKICAgICAgICAvLyBTZXJ2 ZXIgc2NocmVpYnQgbnVyIGVpbmUgVm9yc2NoYXUgKFZvbGx0ZXh0IGJsZWlidCBpbiBwbGFudW5n Lmpzb24pLgogICAgICAgIHZhciBremllbCA9IF9wZXJzb25MYWJlbChlLnBlcnNvbklkLCBwTWFw KSArIChlLmRhdHVtID8gJyBhbSAnICsgZGF0dW1Gb3JtYXRERShlLmRhdHVtKSA6ICcnKTsKICAg ICAgICB2YXIgdm9yc2NoYXUgPSBlLnRleHRWb3JzY2hhdSA/ICfigJ4nICsgZXNjYXBlSFRNTChl LnRleHRWb3JzY2hhdSkgKyAnIicgOiAnJzsKICAgICAgICBpZiAoYWt0aW9uID09PSAna29tbWVu dGFyLmdlbG9lc2NodCcpIHsKICAgICAgICAgICAgcmV0dXJuIGt6aWVsICsgJzogS29tbWVudGFy IGdlbMO2c2NodCcgKyAodm9yc2NoYXUgPyAnICh3YXIgJyArIHZvcnNjaGF1ICsgJyknIDogJycp OwogICAgICAgIH0KICAgICAgICByZXR1cm4ga3ppZWwgKyAnOiBuZXVlciBLb21tZW50YXInICsg KHZvcnNjaGF1ID8gJyAnICsgdm9yc2NoYXUgOiAnJyk7CiAgICB9CiAgICBpZiAoYWt0aW9uID09 PSAncGVyc29uLmluLnBhcGllcmtvcmInKSB7CiAgICAgICAgdmFyIHBrTGFiZWwgPSBlLm5hbWUg PyBlc2NhcGVIVE1MKGUubmFtZSkgOiBfcGVyc29uTGFiZWwoZS5wZXJzb25JZCwgcE1hcCk7CiAg ICAgICAgcmV0dXJuIHBrTGFiZWwgKyAnIGluIGRlbiBQYXBpZXJrb3JiIHZlcnNjaG9iZW4gKHdp ZWRlcmhlcnN0ZWxsYmFyKSc7CiAgICB9CiAgICBpZiAoYWt0aW9uID09PSAncGVyc29uLmVuZGd1 ZWx0aWcuZ2Vsb2VzY2h0JykgewogICAgICAgIHZhciBlZ0xhYmVsID0gZS5uYW1lID8gZXNjYXBl SFRNTChlLm5hbWUpIDogX3BlcnNvbkxhYmVsKGUucGVyc29uSWQsIHBNYXApOwogICAgICAgIHJl dHVybiBlZ0xhYmVsICsgJyBlbmRnw7xsdGlnIGdlbMO2c2NodCc7CiAgICB9CiAgICBpZiAoYWt0 aW9uID09PSAncHJvdG9rb2xsLmdlbG9lc2NodCcpIHsKICAgICAgICB2YXIgYW56ID0gKGUuYW56 YWhsICE9IG51bGwpID8gZS5hbnphaGwgOiAoZS5nZWxvZXNjaHQgIT0gbnVsbCA/IGUuZ2Vsb2Vz Y2h0IDogbnVsbCk7CiAgICAgICAgcmV0dXJuIGFueiAhPSBudWxsID8gKGFueiArICcgUHJvdG9r b2xsLUVpbnRyw6RnZSBnZWzDtnNjaHQnKSA6ICdMb2didWNoLVByb3Rva29sbCBnZWxlZXJ0JzsK ICAgIH0KICAgIGlmIChha3Rpb24gPT09ICdtaXR0ZWlsdW5nLmFuZ2VsZWd0JyB8fCBha3Rpb24g PT09ICdtaXR0ZWlsdW5nLmdlYWVuZGVydCcgfHwgYWt0aW9uID09PSAnbWl0dGVpbHVuZy5nZWxv ZXNjaHQnKSB7CiAgICAgICAgdmFyIG1UaXRlbCA9IGUudGl0ZWwgPyAn4oCeJyArIGVzY2FwZUhU TUwoZS50aXRlbCkgKyAnIicgOiAoZS5pZCAhPSBudWxsID8gJyMnICsgZXNjYXBlSFRNTChTdHJp bmcoZS5pZCkpIDogJycpOwogICAgICAgIHJldHVybiBtVGl0ZWwgfHwgJ01pdHRlaWx1bmcnOwog ICAgfQogICAgaWYgKGFrdGlvbiA9PT0gJ21pdHRlaWx1bmcudXBsb2FkJykgewogICAgICAgIHJl dHVybiAoZS5hcnQgPyBlc2NhcGVIVE1MKGUuYXJ0KSArICc6ICcgOiAnJykgKyBlc2NhcGVIVE1M KGUuZGF0ZWkgfHwgJycpICsKICAgICAgICAgICAgKGUuYnl0ZXMgIT0gbnVsbCA/ICcgKCcgKyBN YXRoLnJvdW5kKGUuYnl0ZXMgLyAxMDI0KSArICcgS0IpJyA6ICcnKTsKICAgIH0KICAgIGlmIChh a3Rpb24gPT09ICdhdmF0YXIuZ2VzZXR6dCcgfHwgYWt0aW9uID09PSAnYXZhdGFyLmVudGZlcm50 JykgewogICAgICAgIHZhciBhdkxhYmVsID0gX3BlcnNvbkxhYmVsKGUucGVyc29uSWQsIHBNYXAp OwogICAgICAgIHJldHVybiBhdkxhYmVsICsgKGFrdGlvbiA9PT0gJ2F2YXRhci5nZXNldHp0JyA/ ICcg4oCUIEF2YXRhciBnZXNldHp0JyA6ICcg4oCUIEF2YXRhciBlbnRmZXJudCcpOwogICAgfQog ICAgaWYgKGFrdGlvbiA9PT0gJ3BlcnNvbi5hbmdlbGVndCcpIHsKICAgICAgICB2YXIgZWlucmVp aHR4dCA9ICcnOwogICAgICAgIGlmIChlLmVpbnJlaWhlbiAmJiBlLmVpbnJlaWhlbiAhPT0gJ3Vu dGVuJykgZWlucmVpaHR4dCA9ICcgKCcgKyBlLmVpbnJlaWhlbiArIChlLnBvc2l0aW9uICE9IG51 bGwgPyAnIFBvc2l0aW9uICcgKyBlLnBvc2l0aW9uIDogJycpICsgJyknOwogICAgICAgIHJldHVy biAnTmV1ZSBQZXJzb246ICcgKyBlc2NhcGVIVE1MKGUubmFtZSB8fCAnKG9obmUgTmFtZW4pJykg KyBlaW5yZWlodHh0OwogICAgfQogICAgaWYgKGFrdGlvbiA9PT0gJ3BlcnNvbi5nZWFlbmRlcnQn KSB7CiAgICAgICAgdmFyIGxhYmVsID0gZS5uYW1lID8gZXNjYXBlSFRNTChlLm5hbWUpIDogX3Bl cnNvbkxhYmVsKGUucGVyc29uSWQsIHBNYXApOwogICAgICAgIGlmIChlLmdlYWVuZGVydCAmJiB0 eXBlb2YgZS5nZWFlbmRlcnQgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKGUuZ2VhZW5kZXJ0 KS5sZW5ndGgpIHsKICAgICAgICAgICAgdmFyIHRlaWxlID0gT2JqZWN0LmtleXMoZS5nZWFlbmRl cnQpLm1hcChmdW5jdGlvbihmZWxkKSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IGUuZ2VhZW5k ZXJ0W2ZlbGRdIHx8IHt9OwogICAgICAgICAgICAgICAgdmFyIGZsID0gRkVMRF9MQUJFTFtmZWxk XSB8fCBmZWxkOwogICAgICAgICAgICAgICAgLy8gZWRpdFJlY2h0ZSBpc3QgZWluIE9iamVrdCBt aXQgcGVyc29uZW5JZHMvZGllbnN0Z3J1cHBlbi9zdGFuZG9ydGUg4oCUCiAgICAgICAgICAgICAg ICAvLyBlaW4gcm9oZXIgSlNPTi1EdW1wIHdhZXJlIHVubGVzZXJsaWNoLiBXaXIgdWViZXJzZXR6 ZW4gZGVuCiAgICAgICAgICAgICAgICAvLyBEaWZmIGluIGVpbmUgS2xhcnRleHQtWnVzYW1tZW5m YXNzdW5nIG1pdCBQZXJzb25lbi1OYW1lbi4KICAgICAgICAgICAgICAgIGlmIChmZWxkID09PSAn ZWRpdFJlY2h0ZScpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxiPicgKyBlc2NhcGVI VE1MKGZsKSArICc6PC9iPiAnICsgX2VkaXRSZWNodGVEaWZmKGQuYWx0LCBkLm5ldSwgcE1hcCk7 CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gJzxiPicgKyBlc2NhcGVI VE1MKGZsKSArICc6PC9iPiA8Y29kZT4nICsKICAgICAgICAgICAgICAgICAgICBlc2NhcGVIVE1M KF9kaWZmQW56ZWlnZShkLmFsdCkpICsgJzwvY29kZT4gJnJhcnI7IDxjb2RlPicgKwogICAgICAg ICAgICAgICAgICAgIGVzY2FwZUhUTUwoX2RpZmZBbnplaWdlKGQubmV1KSkgKyAnPC9jb2RlPic7 CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gbGFiZWwgKyAnICZtZGFzaDsgJyAr IHRlaWxlLmpvaW4oJyAmbWlkZG90OyAnKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICdQZXJz b24gJyArIGxhYmVsICsgJyBnZcOkbmRlcnQnOwogICAgfQogICAgaWYgKGFrdGlvbiA9PT0gJ2hp bndlaXMuZXJ6ZXVndCcpIHsKICAgICAgICB2YXIgdHlwTGFiZWwgPSBfaGlud2Vpc1R5cExhYmVs KGUudHlwKTsKICAgICAgICB2YXIgZW1wZlRleHQgPSAnJzsKICAgICAgICBpZiAodHlwZW9mIGUu ZW1wZmFlbmdlciA9PT0gJ251bWJlcicpIHsKICAgICAgICAgICAgZW1wZlRleHQgPSBlLmVtcGZh ZW5nZXIgKyAnIEVtcGbDpG5nZXInOwogICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShl LmVtcGZhZW5nZXIpKSB7CiAgICAgICAgICAgIGVtcGZUZXh0ID0gZS5lbXBmYWVuZ2VyLmxlbmd0 aCArICcgRW1wZsOkbmdlcic7CiAgICAgICAgfQogICAgICAgIHZhciB0ZWlsZSA9IFtdOwogICAg ICAgIGlmICh0eXBMYWJlbCkgdGVpbGUucHVzaCgnPGI+JyArIGVzY2FwZUhUTUwodHlwTGFiZWwp ICsgJzwvYj4nKTsKICAgICAgICBpZiAoZW1wZlRleHQpIHRlaWxlLnB1c2goZW1wZlRleHQpOwog ICAgICAgIHJldHVybiB0ZWlsZS5qb2luKCcgJm1kYXNoOyAnKTsKICAgIH0KICAgIGlmIChha3Rp b24gPT09ICd2ZXJhbnR3b3J0dW5nLmVpbmdlc3BydW5nZW4nKSB7CiAgICAgICAgdmFyIHBBdWZy dWVjayA9IF9wZXJzb25MYWJlbChlLnBlcnNvbklkLCBwTWFwKTsKICAgICAgICB2YXIgc0xldHRl ciA9IChlLnNjaGljaHQgfHwgJycpLmNoYXJBdCgwKTsKICAgICAgICB2YXIgc05hbWUgPSB7IEY6 ICdGcsO8aHNjaGljaHQnLCBTOiAnU3DDpHRzY2hpY2h0JywgTjogJ05hY2h0c2NoaWNodCcgfVtz TGV0dGVyXSB8fCBzTGV0dGVyOwogICAgICAgIHZhciBzdHVmZVR4dCA9IGUuc3R1ZmUgPyAoZS5z dHVmZSArICcuIFZlcmFudHdvcnR1bmcnKSA6ICdWZXJhbnR3b3J0dW5nJzsKICAgICAgICB2YXIg ZGF0dW1UeHQgPSBlLmRhdHVtID8gZGF0dW1Gb3JtYXRERShlLmRhdHVtKSA6ICcnOwogICAgICAg IHZhciB2b3JoaW5UeHQgPSAoZS52b3JoZXJXZXJ0ICE9IG51bGwgJiYgZS52b3JoZXJXZXJ0ICE9 PSAnJykKICAgICAgICAgICAgPyAnICh2b3JoZXIgPGNvZGU+JyArIGVzY2FwZUhUTUwoZS52b3Jo ZXJXZXJ0KSArICc8L2NvZGU+KScKICAgICAgICAgICAgOiAnICh2b3JoZXIgbmljaHRzIGVpbmdl dHJhZ2VuKSc7CiAgICAgICAgdmFyIHRlaWxlID0gWyc8Yj4nICsgZXNjYXBlSFRNTChwQXVmcnVl Y2spICsgJzwvYj4nXTsKICAgICAgICB0ZWlsZS5wdXNoKCdhdWZnZXLDvGNrdCBpbiAnICsgc3R1 ZmVUeHQgKyAnICcgKyBlc2NhcGVIVE1MKHNOYW1lKSk7CiAgICAgICAgaWYgKGRhdHVtVHh0KSB0 ZWlsZS5wdXNoKCdhbSAnICsgZXNjYXBlSFRNTChkYXR1bVR4dCkpOwogICAgICAgIHJldHVybiB0 ZWlsZS5qb2luKCcgJykgKyB2b3JoaW5UeHQ7CiAgICB9CiAgICBpZiAoYWt0aW9uID09PSAnaGlu d2Vpcy5rZW5udG5pcycpIHsKICAgICAgICAvLyBXaXIgdmVyc3VjaGVuLCBkZW4gaGlud2Vpc0lk IG5vY2ggaW4gWi5oaW53ZWlzZSAoYWt0dWVsbGUgTGlzdGUpCiAgICAgICAgLy8gYXVmenVsb2Vz ZW4uIFdlbm4gc2Nob24gd2VnZ2VwcnVudCwgZmFsbGVuIHdpciBhdWYgIkhpbndlaXMgI04iIHp1 cnVlY2suCiAgICAgICAgdmFyIHR5cExhYmVsMiA9IF9oaW53ZWlzVHlwTGFiZWwoZS50eXApOwog ICAgICAgIHZhciBoaWQgPSBlLmhpbndlaXNJZCAhPSBudWxsID8gZS5oaW53ZWlzSWQgOiAnJzsK ICAgICAgICBpZiAoIXR5cExhYmVsMiAmJiBoaWQgIT09ICcnKSB7CiAgICAgICAgICAgIHZhciBs aXN0ZSA9IChaLmhpbndlaXNlIHx8IFtdKTsKICAgICAgICAgICAgZm9yICh2YXIgaWggPSAwOyBp aCA8IGxpc3RlLmxlbmd0aDsgaWgrKykgewogICAgICAgICAgICAgICAgaWYgKFN0cmluZyhsaXN0 ZVtpaF0uaWQpID09PSBTdHJpbmcoaGlkKSkgeyB0eXBMYWJlbDIgPSBfaGlud2Vpc1R5cExhYmVs KGxpc3RlW2loXS50eXApOyBicmVhazsgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAg IHZhciBiYXNpcyA9IHR5cExhYmVsMiA/ICgnPGI+JyArIGVzY2FwZUhUTUwodHlwTGFiZWwyKSAr ICc8L2I+JykgOiAnJzsKICAgICAgICBpZiAoaGlkICE9PSAnJykgYmFzaXMgKz0gKGJhc2lzID8g JyAmbWRhc2g7ICcgOiAnJykgKyAnSGlud2VpcyAjJyArIGVzY2FwZUhUTUwoU3RyaW5nKGhpZCkp OwogICAgICAgIHJldHVybiBiYXNpcyB8fCAnSGlud2VpcyBxdWl0dGllcnQnOwogICAgfQogICAg aWYgKGFrdGlvbiA9PT0gJ3plbGxlbi5idWxrLmdlYWVuZGVydCcpIHsKICAgICAgICB2YXIgd2hv ID0gX3BlcnNvbkxhYmVsKGUucGVyc29uSWQsIHBNYXApOwogICAgICAgIHZhciB3ZXJ0VHh0ID0g ZS53ZXJ0ID8gJzxjb2RlPicgKyBlc2NhcGVIVE1MKGUud2VydCkgKyAnPC9jb2RlPicgOiAnPGk+ KGxlZXIpPC9pPic7CiAgICAgICAgdmFyIHNwYW5uZSA9ICcnOwogICAgICAgIGlmIChlLmVyc3Rl clRhZyAmJiBlLmxldHp0ZXJUYWcpIHsKICAgICAgICAgICAgc3Bhbm5lID0gKGUuZXJzdGVyVGFn ID09PSBlLmxldHp0ZXJUYWcpCiAgICAgICAgICAgICAgICA/IGRhdHVtRm9ybWF0REUoZS5lcnN0 ZXJUYWcpCiAgICAgICAgICAgICAgICA6IGRhdHVtRm9ybWF0REUoZS5lcnN0ZXJUYWcpICsgJyBi aXMgJyArIGRhdHVtRm9ybWF0REUoZS5sZXR6dGVyVGFnKTsKICAgICAgICB9CiAgICAgICAgdmFy IHRlaWxlID0gW107CiAgICAgICAgaWYgKHdobykgdGVpbGUucHVzaCh3aG8pOwogICAgICAgIGlm IChlLmFuemFobCAhPSBudWxsKSB0ZWlsZS5wdXNoKGUuYW56YWhsICsgJyBUYWcnICsgKGUuYW56 YWhsICE9PSAxID8gJ2UnIDogJycpKTsKICAgICAgICBpZiAoc3Bhbm5lKSB0ZWlsZS5wdXNoKHNw YW5uZSk7CiAgICAgICAgdGVpbGUucHVzaCgn4oaSICcgKyB3ZXJ0VHh0KTsKICAgICAgICBpZiAo ZS5hYmdlbGVobnQpIHRlaWxlLnB1c2goZS5hYmdlbGVobnQgKyAnIGFiZ2VsZWhudCcpOwogICAg ICAgIHJldHVybiB0ZWlsZS5qb2luKCcgwrcgJyk7CiAgICB9CiAgICBpZiAoYWt0aW9uID09PSAn dW50ZXJiZXNldHp1bmcucXVpdHRpZXJ0JykgewogICAgICAgIHZhciBwID0gX3BlcnNvbkxhYmVs KGUucGVyc29uSWQsIHBNYXApOwogICAgICAgIHZhciBzID0gZS5zY2hpY2h0IHx8ICcnOwogICAg ICAgIHJldHVybiBwICsgJyBhbSAnICsgZGF0dW1Gb3JtYXRERShlLmRhdHVtKSArICcgKCcgKyBl c2NhcGVIVE1MKHMpICsgJykg4oCUICcgKwogICAgICAgICAgICAnPGNvZGU+JyArIGVzY2FwZUhU TUwoZS5hbHRlcldlcnQgfHwgJyhsZWVyKScpICsgJzwvY29kZT4gJnJhcnI7IDxjb2RlPicgKyBl c2NhcGVIVE1MKGUubmV1ZXJXZXJ0IHx8ICcobGVlciknKSArICc8L2NvZGU+JzsKICAgIH0KICAg IGlmIChha3Rpb24gPT09ICdsb2NrLmZvcmNlJykgewogICAgICAgIHJldHVybiBfcGVyc29uTGFi ZWwoZS5wZXJzb25JZCwgcE1hcCkgKyAnIGFtICcgKyBkYXR1bUZvcm1hdERFKGUuZGF0dW0pICsg JyDigJQgRWRpdC1Mb2NrIHBlciAnICsgZXNjYXBlSFRNTChlLnJvbGxlIHx8ICdGb3JjZScpICsg JyDDvGJlcm5vbW1lbic7CiAgICB9CiAgICBpZiAoYWt0aW9uID09PSAnYmFja3VwLmVyc3RlbGx0 JykgewogICAgICAgIHJldHVybiBlc2NhcGVIVE1MKGUuZGF0ZWluYW1lIHx8ICcnKSArIChlLmlu aGFsdCA/ICcgKCcgKyBlc2NhcGVIVE1MKGUuaW5oYWx0KSArICcpJyA6ICcnKTsKICAgIH0KICAg IGlmIChha3Rpb24gPT09ICdiYWNrdXAud2llZGVyaGVyZ2VzdGVsbHQnKSB7CiAgICAgICAgcmV0 dXJuICdBdXMg4oCeJyArIGVzY2FwZUhUTUwoZS5xdWVsbGUgfHwgJycpICsgJyIg4oCUIFNpY2hl cnVuZyDigJ4nICsgZXNjYXBlSFRNTChlLnNpY2hlcnVuZyB8fCAnJykgKyAnIiDigJQgSW5oYWx0 OiAnICsgZXNjYXBlSFRNTChlLmluaGFsdCB8fCAnJyk7CiAgICB9CiAgICBpZiAoYWt0aW9uID09 PSAnYmFja3VwLmdlbG9lc2NodCcpIHsKICAgICAgICByZXR1cm4gZXNjYXBlSFRNTChlLmRhdGVp bmFtZSB8fCAnJyk7CiAgICB9CiAgICBpZiAoYWt0aW9uID09PSAnZmFjaGF1ZnNpY2h0LmdlYWVu ZGVydCcgfHwgYWt0aW9uID09PSAnZGlyZWt0aW9uc2xlaXR1bmcuZ2VhZW5kZXJ0JyB8fAogICAg ICAgIGFrdGlvbiA9PT0gJ2Z1ZWhydW5nc3N0ZWxsZS5nZWFlbmRlcnQnIHx8IGFrdGlvbiA9PT0g J3dhY2hsZWl0dW5nLmdlYWVuZGVydCcpIHsKICAgICAgICBpZiAoZS5hbnphaGwgPT0gbnVsbCkg cmV0dXJuICcnOwogICAgICAgIHJldHVybiBlLmFuemFobCA9PT0gMCA/ICdMaXN0ZSBrb21wbGV0 dCBnZWxlZXJ0JyA6ICdMaXN0ZSBnZXNwZWljaGVydDogJyArIF9laW50cmFnUGx1cmFsKGUuYW56 YWhsKTsKICAgIH0KICAgIGlmIChha3Rpb24gPT09ICdzdXBlclVzZXIuZ2VhZW5kZXJ0JyB8fCBh a3Rpb24gPT09ICdzdXBlcnVzZXIuZ2VhZW5kZXJ0JykgewogICAgICAgIGlmIChlLmFuemFobCA9 PSBudWxsKSByZXR1cm4gJyc7CiAgICAgICAgcmV0dXJuIGUuYW56YWhsID09PSAwID8gJ0xpc3Rl IGtvbXBsZXR0IGdlbGVlcnQnIDogJ0xpc3RlIGdlc3BlaWNoZXJ0OiAnICsgX2VpbnRyYWdQbHVy YWwoZS5hbnphaGwpOwogICAgfQogICAgaWYgKGFrdGlvbiA9PT0gJ2VtYWlsdHJpZ2dlci5nZWFl bmRlcnQnKSB7CiAgICAgICAgaWYgKGUuYW56YWhsX3RyaWdnZXIgPT0gbnVsbCkgcmV0dXJuICcn OwogICAgICAgIHJldHVybiBlLmFuemFobF90cmlnZ2VyICsgJyBUcmlnZ2VyIGdlc3BlaWNoZXJ0 JzsKICAgIH0KICAgIGlmIChha3Rpb24gPT09ICdwbGFudW5nLmtvbXBsZXR0LWVyc2V0enQnKSB7 CiAgICAgICAgdmFyIHRlaWxlID0gW107CiAgICAgICAgaWYgKGUuZWludHJhZWdlICE9IG51bGwp IHRlaWxlLnB1c2goZS5laW50cmFlZ2UgKyAnIEVpbnRyw6RnZScpOwogICAgICAgIGlmIChlLmtv bW1lbnRhcmUgIT0gbnVsbCkgdGVpbGUucHVzaChlLmtvbW1lbnRhcmUgKyAnIEtvbW1lbnRhcmUn KTsKICAgICAgICBpZiAoZS5iYWNrdXApIHRlaWxlLnB1c2goJ1NpY2hlcnVuZzogJyArIGVzY2Fw ZUhUTUwoZS5iYWNrdXApKTsKICAgICAgICByZXR1cm4gdGVpbGUuam9pbignIMK3ICcpOwogICAg fQogICAgaWYgKGFrdGlvbiA9PT0gJ2R1bW15ZGF0ZW4uZWluZ2VzcGllbHQnKSB7CiAgICAgICAg dmFyIHQyID0gW107CiAgICAgICAgaWYgKGUuZWludHJhZWdlICE9IG51bGwpIHQyLnB1c2goZS5l aW50cmFlZ2UgKyAnIEVpbnRyw6RnZScpOwogICAgICAgIGlmIChlLmJhY2t1cCkgdDIucHVzaCgn U2ljaGVydW5nOiAnICsgZXNjYXBlSFRNTChlLmJhY2t1cCkpOwogICAgICAgIHJldHVybiB0Mi5q b2luKCcgwrcgJyk7CiAgICB9CiAgICBpZiAoYWt0aW9uID09PSAncGxhbnVuZy5yZXNldCcpIHsK ICAgICAgICByZXR1cm4gZS5iYWNrdXAgPyAnU2ljaGVydW5nOiAnICsgZXNjYXBlSFRNTChlLmJh Y2t1cCkgOiAnJzsKICAgIH0KICAgIC8vIEdlbmVyaXNjaGVyIEZhbGxiYWNrOiBnZXplaWd0ZSBG ZWxkZXIgYXVzc2VyIGRlbiBTdGFuZGFyZC1XcmFwcGVyLUZlbGRlcm4KICAgIHZhciBza2lwID0g eyBha3Rpb246IDEsIHplaXRzdGVtcGVsOiAxLCBiZW51dHplcjogMSB9OwogICAgdmFyIHBhaXJz ID0gW107CiAgICBPYmplY3Qua2V5cyhlIHx8IHt9KS5mb3JFYWNoKGZ1bmN0aW9uKGspIHsKICAg ICAgICBpZiAoc2tpcFtrXSkgcmV0dXJuOwogICAgICAgIHZhciB2ID0gZVtrXTsKICAgICAgICBp ZiAodiA9PSBudWxsIHx8IHYgPT09ICcnKSByZXR1cm47CiAgICAgICAgaWYgKHR5cGVvZiB2ID09 PSAnb2JqZWN0JykgcmV0dXJuOwogICAgICAgIHBhaXJzLnB1c2goZXNjYXBlSFRNTChrKSArICc6 ICcgKyBlc2NhcGVIVE1MKFN0cmluZyh2KSkpOwogICAgfSk7CiAgICByZXR1cm4gcGFpcnMuam9p bignIMK3ICcpOwp9CgovLyA9PT09PSBSZW5kZXIgPT09PT0KCi8vIEJhY2t3YXJkLUtvbXBhdDog YWVsdGVyZSBQb3dlclNoZWxsLUVpbnRyYWVnZSBoYWJlbiBpaHJlIERldGFpbC1GZWxkZXIKLy8g dW50ZXIgYGRldGFpbHM6IHsgLi4uIH1gIGdlbmVzdGVkLiBXaXIgZmxhY2hlbiBkYXMgYmVpbSBM YWRlbiwgZGFtaXQgZGVyCi8vIERldGFpbC1SZW5kZXJlciBlaW5oZWl0bGljaCBhdWYgZS5mZWxk bmFtZSB6dWdyZWlmZW4ga2Fubi4KZnVuY3Rpb24gX2VpbnRyYWdOb3JtYWxpc2llcmVuKGUpIHsK ICAgIGlmIChlICYmIGUuZGV0YWlscyAmJiB0eXBlb2YgZS5kZXRhaWxzID09PSAnb2JqZWN0JyAm JiAhQXJyYXkuaXNBcnJheShlLmRldGFpbHMpKSB7CiAgICAgICAgT2JqZWN0LmtleXMoZS5kZXRh aWxzKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHsKICAgICAgICAgICAgaWYgKCEoayBpbiBlKSkgZVtr XSA9IGUuZGV0YWlsc1trXTsKICAgICAgICB9KTsKICAgIH0KICAgIHJldHVybiBlOwp9CgovLyBM aWVmZXJ0IEhUTUwgZnVlciBlaW5lbiBXaWVkZXJoZXJzdGVsbGVuLUJ1dHRvbiDigJQgb2RlciBM ZWVyc3RyaW5nLAovLyB3ZW5uIGRlciBFaW50cmFnIG5pY2h0IChzaW5udm9sbCkgenVydWVja2dl bm9tbWVuIHdlcmRlbiBrYW5uLgpmdW5jdGlvbiBfcmVzdG9yZUJ1dHRvbkh0bWwoZSkgewogICAg dmFyIGFrdGlvbiA9IGUuYWt0aW9uOwogICAgdmFyIHJlc3QgPSBudWxsOwogICAgaWYgKGFrdGlv biA9PT0gJ3plbGxlLmdlYWVuZGVydCcgJiYgZS5wZXJzb25JZCAmJiBlLmRhdHVtICYmIGUuYWx0 ZXJXZXJ0ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICByZXN0ID0geyB0eXA6ICd6ZWxsZScsIHBl cnNvbklkOiBlLnBlcnNvbklkLCBkYXR1bTogZS5kYXR1bSwgd2VydDogZS5hbHRlcldlcnQgPT0g bnVsbCA/ICcnIDogU3RyaW5nKGUuYWx0ZXJXZXJ0KSB9OwogICAgfSBlbHNlIGlmIChha3Rpb24g PT09ICd6ZWxsZW4uYnVsay5nZWFlbmRlcnQnICYmIGUuYWx0ZVdlcnRlICYmIHR5cGVvZiBlLmFs dGVXZXJ0ZSA9PT0gJ29iamVjdCcpIHsKICAgICAgICAvLyBhbHRlV2VydGUgPSB7ICI8ZGF0dW0+ fDxwZXJzb25JZD4iOiAiPGFsdGVyV2VydD4iIH0uIEluIGVpbiBBcnJheQogICAgICAgIC8vIHZv biB7IGRhdHVtLCBwZXJzb25JZCwgd2VydCB9IHVtcGFja2VuIOKAlCBkYXMgaXN0IGRlciBCb2R5 LCBkZW4KICAgICAgICAvLyAvYXBpL3BsYW51bmcvemVsbGVuLWJ1bGsgZnJpc3N0LiBMZWVyZSBh bHRlcldlcnQtU3RyaW5ncyBibGVpYmVuCiAgICAgICAgLy8gbGVlciwgZGFtaXQgZGllIFJlc3Rv cmUtTG9naWsgZGllIFplbGxlIHdpZWRlciBsZWVydC4KICAgICAgICB2YXIgZWludHJhZWdlID0g W107CiAgICAgICAgT2JqZWN0LmtleXMoZS5hbHRlV2VydGUpLmZvckVhY2goZnVuY3Rpb24oaykg ewogICAgICAgICAgICB2YXIgc2VwID0gay5pbmRleE9mKCd8Jyk7CiAgICAgICAgICAgIGlmIChz ZXAgPCAwKSByZXR1cm47CiAgICAgICAgICAgIHZhciBkYXR1bSA9IGsuc3Vic3RyaW5nKDAsIHNl cCk7CiAgICAgICAgICAgIHZhciBwaWQgPSBrLnN1YnN0cmluZyhzZXAgKyAxKTsKICAgICAgICAg ICAgdmFyIGFsdGVyV2VydCA9IGUuYWx0ZVdlcnRlW2tdOwogICAgICAgICAgICBlaW50cmFlZ2Uu cHVzaCh7IGRhdHVtOiBkYXR1bSwgcGVyc29uSWQ6IHBpZCwgd2VydDogYWx0ZXJXZXJ0ID09IG51 bGwgPyAnJyA6IFN0cmluZyhhbHRlcldlcnQpIH0pOwogICAgICAgIH0pOwogICAgICAgIGlmIChl aW50cmFlZ2UubGVuZ3RoKSB7CiAgICAgICAgICAgIHJlc3QgPSB7IHR5cDogJ3plbGxlbi1idWxr JywgZWludHJhZWdlOiBlaW50cmFlZ2UsIGFuemFobDogZWludHJhZWdlLmxlbmd0aCB9OwogICAg ICAgIH0KICAgIH0gZWxzZSBpZiAoYWt0aW9uID09PSAna29tbWVudGFyLmdlYWVuZGVydCcgJiYg ZS5wZXJzb25JZCAmJiBlLmRhdHVtKSB7CiAgICAgICAgLy8gJ2FsdGVyVGV4dCcgaXN0IGRhcyBh a3R1ZWxsZSBTY2hlbWEsICd0ZXh0JyBkYXMgYWx0ZSAodm9yIGRlbSBEaWZmLVBhdGNoKS4KICAg ICAgICB2YXIgYWx0VCA9IChlLmFsdGVyVGV4dCAhPT0gdW5kZWZpbmVkKSA/IGUuYWx0ZXJUZXh0 IDogKGUudGV4dCAhPT0gdW5kZWZpbmVkID8gZS50ZXh0IDogbnVsbCk7CiAgICAgICAgaWYgKGFs dFQgPT09IG51bGwpIHJldHVybiAnJzsKICAgICAgICByZXN0ID0geyB0eXA6ICdrb21tZW50YXIn LCBwZXJzb25JZDogZS5wZXJzb25JZCwgZGF0dW06IGUuZGF0dW0sIHRleHQ6IFN0cmluZyhhbHRU IHx8ICcnKSB9OwogICAgfSBlbHNlIGlmIChha3Rpb24gPT09ICdwZXJzb24uZ2VhZW5kZXJ0JyAm JiBlLnBlcnNvbklkICYmIGUuZ2VhZW5kZXJ0ICYmCiAgICAgICAgICAgICAgIHR5cGVvZiBlLmdl YWVuZGVydCA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoZS5nZWFlbmRlcnQpLmxlbmd0aCkg ewogICAgICAgIHZhciBhbHQgPSB7fTsKICAgICAgICBPYmplY3Qua2V5cyhlLmdlYWVuZGVydCku Zm9yRWFjaChmdW5jdGlvbihrKSB7IGFsdFtrXSA9IGUuZ2VhZW5kZXJ0W2tdLmFsdDsgfSk7CiAg ICAgICAgcmVzdCA9IHsgdHlwOiAncGVyc29uJywgcGVyc29uSWQ6IGUucGVyc29uSWQsIGRhdGVu OiBhbHQgfTsKICAgIH0KICAgIGlmICghcmVzdCkgcmV0dXJuICcnOwogICAgcmV0dXJuICc8YnV0 dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImxvZy1yZXN0b3JlLWJ0biIgJyArCiAgICAgICAgICAg J2RhdGEtcmVzdD0iJyArIGVzY2FwZUF0dHIoSlNPTi5zdHJpbmdpZnkocmVzdCkpICsgJyIgJyAr CiAgICAgICAgICAgJ3RpdGxlPSJEaWVzZW4gU3RhbmQgd2llZGVyaGVyc3RlbGxlbiI+PHNwYW4g Y2xhc3M9ImxvZy1yZXN0b3JlLWljb24iPuKGujwvc3Bhbj48c3BhbiBjbGFzcz0ibG9nLXJlc3Rv cmUtdGV4dCI+V2llZGVyaGVyc3RlbGxlbjwvc3Bhbj48L2J1dHRvbj4nOwp9CgpmdW5jdGlvbiBf cmVzdG9yZUNsaWNrKGV2KSB7CiAgICB2YXIgYnRuID0gZXYudGFyZ2V0LmNsb3Nlc3QgJiYgZXYu dGFyZ2V0LmNsb3Nlc3QoJy5sb2ctcmVzdG9yZS1idG4nKTsKICAgIGlmICghYnRuKSByZXR1cm47 CiAgICB2YXIgcmVzdDsKICAgIHRyeSB7IHJlc3QgPSBKU09OLnBhcnNlKGJ0bi5nZXRBdHRyaWJ1 dGUoJ2RhdGEtcmVzdCcpIHx8ICcnKTsgfSBjYXRjaCAoXykgeyByZXR1cm47IH0KICAgIGlmICgh cmVzdCB8fCAhcmVzdC50eXApIHJldHVybjsKCiAgICB2YXIgZnJhZ2U7CiAgICBpZiAocmVzdC50 eXAgPT09ICd6ZWxsZScpICAgICAgICAgICAgICBmcmFnZSA9ICdTY2hpY2h0emVsbGUgd2lya2xp Y2ggYXVmIGRlbiBhbHRlbiBXZXJ0IHp1csO8Y2tzZXR6ZW4/JzsKICAgIGVsc2UgaWYgKHJlc3Qu dHlwID09PSAnemVsbGVuLWJ1bGsnKSAgIGZyYWdlID0gKHJlc3QuYW56YWhsIHx8IHJlc3QuZWlu dHJhZWdlLmxlbmd0aCkgKyAnIFplbGxlbiB3aXJrbGljaCBhdWYgZGllIGFsdGVuIFdlcnRlIHp1 csO8Y2tzZXR6ZW4/XG5cbkplZGUgZWluemVsbmUgWmVsbGUgYmVrb21tdCBkZW4gV2VydCwgZGVu IHNpZSB1bm1pdHRlbGJhciB2b3IgZGllc2VtIERyYWctRmlsbCBoYXR0ZS4gRGllIEFrdGlvbiBz ZWxic3Qgd2FuZGVydCB3aWVkZXIgaW5zIExvZ2J1Y2ggdW5kIGthbm4gZG9ydCBlcm5ldXQgcsO8 Y2tnw6RuZ2lnIGdlbWFjaHQgd2VyZGVuLic7CiAgICBlbHNlIGlmIChyZXN0LnR5cCA9PT0gJ2tv bW1lbnRhcicpICAgICBmcmFnZSA9ICdLb21tZW50YXIgd2lya2xpY2ggYXVmIGRlbiBhbHRlbiBU ZXh0IHp1csO8Y2tzZXR6ZW4/JzsKICAgIGVsc2UgaWYgKHJlc3QudHlwID09PSAncGVyc29uJykg ICAgICAgIGZyYWdlID0gJ1BlcnNvbmVuZGF0ZW4gd2lya2xpY2ggYXVmIGRlbiBhbHRlbiBTdGFu ZCB6dXLDvGNrc2V0emVuPyc7CiAgICBlbHNlIHJldHVybjsKCiAgICBiZXN0YWV0aWdlbihmcmFn ZSwgZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHA7CiAgICAgICAgaWYgKHJlc3QudHlwID09PSAn emVsbGUnKSB7CiAgICAgICAgICAgIHAgPSBhcGlQb3N0KCcvYXBpL3BsYW51bmcvemVsbGUnLCB7 IHBlcnNvbklkOiByZXN0LnBlcnNvbklkLCBkYXR1bTogcmVzdC5kYXR1bSwgd2VydDogcmVzdC53 ZXJ0IH0pOwogICAgICAgIH0gZWxzZSBpZiAocmVzdC50eXAgPT09ICd6ZWxsZW4tYnVsaycpIHsK ICAgICAgICAgICAgLy8gRWluIGVpbnppZ2VyIFBPU1QgYW4gL2FwaS9wbGFudW5nL3plbGxlbi1i dWxrIG1pdCBhbGxlbiBhbHRlbgogICAgICAgICAgICAvLyBXZXJ0ZW4gYWxzIEJvZHkg4oCUIGRl ciBFbmRwb2ludCBsb2d0IGF1dG9tYXRpc2NoIGVpbiBuZXVlcwogICAgICAgICAgICAvLyB6ZWxs ZW4uYnVsay5nZWFlbmRlcnQgbWl0IEZSSVNDSEVOIGFsdGVXZXJ0ZSwgZGFkdXJjaCBpc3QgZGll CiAgICAgICAgICAgIC8vIFdpZWRlcmhlcnN0ZWxsdW5nIHNlbGJzdCB3aWVkZXIgcnVlY2tnYWVu Z2lnIHp1IG1hY2hlbi4KICAgICAgICAgICAgcCA9IGFwaVBvc3QoJy9hcGkvcGxhbnVuZy96ZWxs ZW4tYnVsaycsIHsgZWludHJhZWdlOiByZXN0LmVpbnRyYWVnZSB9KTsKICAgICAgICB9IGVsc2Ug aWYgKHJlc3QudHlwID09PSAna29tbWVudGFyJykgewogICAgICAgICAgICBwID0gYXBpUG9zdCgn L2FwaS9wbGFudW5nL2tvbW1lbnRhcicsIHsgcGVyc29uSWQ6IHJlc3QucGVyc29uSWQsIGRhdHVt OiByZXN0LmRhdHVtLCB0ZXh0OiByZXN0LnRleHQgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAg ICAgICAgcCA9IGFwaVB1dCgnL2FwaS9wZXJzb25lbi8nICsgcmVzdC5wZXJzb25JZCwgcmVzdC5k YXRlbik7CiAgICAgICAgfQogICAgICAgIHAudGhlbihmdW5jdGlvbihyZXNwKSB7CiAgICAgICAg ICAgIC8vIEJ1bGstUmVzdG9yZTogU2VydmVyIGxpZWZlcnQgeyBvaywgYWJnZWxlaG50IH0uIFdl bm4gZWluIFRlaWwKICAgICAgICAgICAgLy8gYWJnZWxlaG50IHd1cmRlIChQZXJzb24tVmVybHVz dCwgUmVjaHRlLVZlcmx1c3Qgc2VpdCBkZXIKICAgICAgICAgICAgLy8gT3JpZ2luYWwtQWVuZGVy dW5nKSwgVG9hc3QgYWxzIFdhcm51bmcgbWl0IGJlaWRlbiBaYWhsZW4uCiAgICAgICAgICAgIGlm IChyZXN0LnR5cCA9PT0gJ3plbGxlbi1idWxrJyAmJiByZXNwICYmIHR5cGVvZiByZXNwLm9rID09 PSAnbnVtYmVyJykgewogICAgICAgICAgICAgICAgdmFyIG9rWiA9IHJlc3Aub2s7CiAgICAgICAg ICAgICAgICB2YXIgYWJnWiA9IChyZXNwLmFiZ2VsZWhudCAmJiByZXNwLmFiZ2VsZWhudC5sZW5n dGgpIHx8IDA7CiAgICAgICAgICAgICAgICBpZiAoYWJnWiA+IDApIHsKICAgICAgICAgICAgICAg ICAgICB0b2FzdChva1ogKyAnIFplbGxlbiB3aWVkZXJoZXJnZXN0ZWxsdCwgJyArIGFiZ1ogKyAn IGFiZ2VsZWhudCcsICd3YXJudW5nJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg ICAgICAgICAgICAgIHRvYXN0KG9rWiArICcgWmVsbGVuIHdpZWRlcmhlcmdlc3RlbGx0JywgJ2Vy Zm9sZycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg ICAgICAgdG9hc3QoJ1dpZWRlcmhlcmdlc3RlbGx0JywgJ2VyZm9sZycpOwogICAgICAgICAgICB9 CiAgICAgICAgICAgIGlmICh0eXBlb2YgbG9nYnVjaEhvb2tzLmFmdGVyUmVzdG9yZSA9PT0gJ2Z1 bmN0aW9uJykgbG9nYnVjaEhvb2tzLmFmdGVyUmVzdG9yZSgpOwogICAgICAgICAgICBsb2didWNo TGFkZW4oKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHsKICAgICAgICAgICAgdG9h c3QoJ0ZlaGxlcjogJyArIChlcnIgJiYgZXJyLm1lc3NhZ2UgPyBlcnIubWVzc2FnZSA6ICd1bmJl a2FubnQnKSwgJ2ZlaGxlcicpOwogICAgICAgIH0pOwogICAgfSwgeyB0aXRlbDogJ1dpZWRlcmhl cnN0ZWxsZW4/JywgamFUZXh0OiAnV2llZGVyaGVyc3RlbGxlbicgfSk7Cn0KCi8vIEthdGVnb3Jp ZS1GaWx0ZXItQ2hpcHMgKGZydWVoZXIgd2FyZW4gZGllIEFrdGlvbi1QaWxscyByZWluIGRla29y YXRpdikuCi8vIFNsdWctUmVpaGVuZm9sZ2Ugc3BpZWdlbHQgZGllIExlc2UtUHJpb3JpdGFldCBp bSBQcm90b2tvbGwuCnZhciBMT0dfS0FURUdPUklFTiA9IFsKICAgIHsga2F0OiAnJywgICAgICAg IGxhYmVsOiAnQWxsZScgfSwKICAgIHsga2F0OiAncGxhbnVuZycsIGxhYmVsOiAnUGxhbnVuZycg fSwKICAgIHsga2F0OiAncGVyc29uJywgIGxhYmVsOiAnUGVyc29uJyB9LAogICAgeyBrYXQ6ICdh ZG1pbicsICAgbGFiZWw6ICdLb25maWd1cmF0aW9uJyB9LAogICAgeyBrYXQ6ICdyb2xsZScsICAg bGFiZWw6ICdSb2xsZW4nIH0sCiAgICB7IGthdDogJ2hpbndlaXMnLCBsYWJlbDogJ0hpbndlaXNl JyB9LAogICAgeyBrYXQ6ICdiYWNrdXAnLCAgbGFiZWw6ICdCYWNrdXBzJyB9LAogICAgeyBrYXQ6 ICdzeXN0ZW0nLCAgbGFiZWw6ICdTeXN0ZW0nIH0KXTsKdmFyIF9sb2dBa3RpdmVLYXQgPSAnJzsK Ci8vIENoaXAtTGVpc3RlIGVpbm1hbGlnIGluIGRlbiBMb2didWNoLUtvcGYgaW5qaXppZXJlbiAo ZGFzIFZpZXctTWFya3VwIGluCi8vIGRhdGEvc2FuaXRpemVyLmh0bWwgYmxlaWJ0IHVuYW5nZXRh c3RldCDigJQgd2lyIGhhZW5nZW4gbnVyIGVpbiBLaW5kIGFuKS4KZnVuY3Rpb24gX2xvZ0NoaXBC YXJTaWNoZXJzdGVsbGVuKCkgewogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2ct a2F0LWNoaXBzJykpIHJldHVybjsKICAgIHZhciBrb3BmID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv cignI2Fuc2ljaHQtbG9nYnVjaCAuYWRtaW4ta29wZicpOwogICAgaWYgKCFrb3BmKSByZXR1cm47 CiAgICB2YXIgYmFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBiYXIuaWQg PSAnbG9nLWthdC1jaGlwcyc7CiAgICBiYXIuY2xhc3NOYW1lID0gJ2xvZy1rYXQtY2hpcHMnOwog ICAgYmFyLmlubmVySFRNTCA9IExPR19LQVRFR09SSUVOLm1hcChmdW5jdGlvbihrKSB7CiAgICAg ICAgcmV0dXJuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImxvZy1rYXQtY2hpcCcgKwog ICAgICAgICAgICAoay5rYXQgPT09IF9sb2dBa3RpdmVLYXQgPyAnIGFrdGl2JyA6ICcnKSArICci IGRhdGEta2F0PSInICsgZXNjYXBlQXR0cihrLmthdCkgKyAnIj4nICsKICAgICAgICAgICAgZXNj YXBlSFRNTChrLmxhYmVsKSArICc8L2J1dHRvbj4nOwogICAgfSkuam9pbignJyk7CiAgICBiYXIu YWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIGNoaXAg PSBlLnRhcmdldC5jbG9zZXN0KCcubG9nLWthdC1jaGlwJyk7CiAgICAgICAgaWYgKCFjaGlwKSBy ZXR1cm47CiAgICAgICAgX2xvZ0FrdGl2ZUthdCA9IGNoaXAuZ2V0QXR0cmlidXRlKCdkYXRhLWth dCcpIHx8ICcnOwogICAgICAgIGJhci5xdWVyeVNlbGVjdG9yQWxsKCcubG9nLWthdC1jaGlwJyku Zm9yRWFjaChmdW5jdGlvbihjKSB7CiAgICAgICAgICAgIGMuY2xhc3NMaXN0LnRvZ2dsZSgnYWt0 aXYnLCAoYy5nZXRBdHRyaWJ1dGUoJ2RhdGEta2F0JykgfHwgJycpID09PSBfbG9nQWt0aXZlS2F0 KTsKICAgICAgICB9KTsKICAgICAgICBfbG9nYnVjaEZpbHRlcm5KZXR6dCgpOwogICAgfSk7CiAg ICBrb3BmLmFwcGVuZENoaWxkKGJhcik7Cn0KCmZ1bmN0aW9uIGxvZ2J1Y2hMYWRlbigpIHsKICAg IHZhciB0Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2ctdGJvZHknKTsKICAgIHRi b2R5LmlubmVySFRNTCA9ICc8dHI+PHRkIGNvbHNwYW49IjUiIHN0eWxlPSJ0ZXh0LWFsaWduOmNl bnRlcjtwYWRkaW5nOjIwcHgiPkxhZGUuLi48L3RkPjwvdHI+JzsKICAgIF9sb2dDaGlwQmFyU2lj aGVyc3RlbGxlbigpOwoKICAgIGFwaSgnL2FwaS9sb2didWNoJykudGhlbihmdW5jdGlvbihkYXRl bikgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIF9sb2didWNoUmVuZGVySW50ZXJuKHRib2R5 LCBkYXRlbik7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICByZW5kZXJFcnJvckJv eChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zaWNodC1sb2didWNoJyksIGUsICdMb2didWNo Jyk7CiAgICAgICAgfQogICAgfSkuY2F0Y2goZnVuY3Rpb24oKSB7CiAgICAgICAgdGJvZHkuaW5u ZXJIVE1MID0gJzx0cj48dGQgY29sc3Bhbj0iNSIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3Bh ZGRpbmc6MjBweCI+RmVobGVyIGJlaW0gTGFkZW48L3RkPjwvdHI+JzsKICAgIH0pOwp9CgpmdW5j dGlvbiBfbG9nYnVjaFJlbmRlckludGVybih0Ym9keSwgZGF0ZW4pIHsKICAgICAgICBpZiAoIWRh dGVuIHx8ICFkYXRlbi5sZW5ndGgpIHsKICAgICAgICAgICAgdGJvZHkuaW5uZXJIVE1MID0gJzx0 cj48dGQgY29sc3Bhbj0iNSI+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iYWRtaW4t ZW1wdHkiPicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJhZG1pbi1lbXB0eS10 aXRlbCI+S2VpbmUgTG9nYnVjaC1FaW50csOkZ2U8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAg ICAnPGRpdiBjbGFzcz0iYWRtaW4tZW1wdHktdGV4dCI+U29iYWxkIGplbWFuZCBldHdhcyDDpG5k ZXJ0LCBlcnNjaGVpbnQgaGllciBkaWUgSGlzdG9yaWUuIEZpbHRlciB6dXLDvGNrc2V0emVuLCBm YWxscyBha3Rpdi48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAg ICAgICAgICc8L3RkPjwvdHI+JzsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAg ICAvLyBQZXJzb25lbi1NYXAgIk5hY2huYW1lLCBWb3JuYW1lIiDigJQgYXVjaCBpbmFrdGl2ZSBQ ZXJzb25lbiBhdWZuZWhtZW4sCiAgICAgICAgLy8gZGFtaXQgZGllIEFuemVpZ2UgYXVjaCBmdWVy IGhpc3RvcmlzY2hlIEVpbnRyYWVnZSBiZXN0ZWhlbiBibGVpYnQuCiAgICAgICAgdmFyIHBNYXAg PSB7fTsKICAgICAgICAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9u KHApIHsKICAgICAgICAgICAgdmFyIG4gPSAocC5uYW1lIHx8ICcnKSArIChwLnZvcm5hbWUgPyAn LCAnICsgcC52b3JuYW1lIDogJycpOwogICAgICAgICAgICBwTWFwW1N0cmluZyhwLmlkKV0gPSBu ICsgKHAuYWt0aXYgPT09IGZhbHNlID8gJyAoZWhlbWFsaWcpJyA6ICcnKTsKICAgICAgICB9KTsK CiAgICAgICAgLy8gU2VydmVyIHNjaHJlaWJ0IG5ldWUgRWludHJhZWdlIGFtIEtvcGYgZGVyIExp c3RlIChwcmVwZW5kKSwKICAgICAgICAvLyBhbHNvIGlzdCBkYXRlbiBiZXJlaXRzICJuZXVlc3Rl IHp1ZXJzdCIg4oCUIGRpcmVrdCBzbyByZW5kZXJuLgogICAgICAgIHZhciBodG1sID0gJyc7CiAg ICAgICAgZGF0ZW4uZm9yRWFjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUgPSBfZWludHJh Z05vcm1hbGlzaWVyZW4oZSk7CiAgICAgICAgICAgIHZhciB0cyA9IF96ZWl0c3RlbXBlbFRlaWxl KGUuemVpdHN0ZW1wZWwpOwogICAgICAgICAgICB2YXIga2F0ID0gYWt0aW9uS2F0ZWdvcmllKGUu YWt0aW9uIHx8ICcnKTsKICAgICAgICAgICAgdmFyIGxibCA9IGFrdGlvbkxhYmVsKGUuYWt0aW9u IHx8ICcnKTsKICAgICAgICAgICAgdmFyIHVzZXIgPSBiZW51dHplcktsYXJuYW1lKGUuYmVudXR6 ZXIpOwogICAgICAgICAgICB2YXIgaW5pdGlhbGVuID0gX3VzZXJJbml0aWFsZW4odXNlcik7CiAg ICAgICAgICAgIGh0bWwgKz0gJzx0ciBjbGFzcz0ibG9nLXplaWxlIiBkYXRhLWthdD0iJyArIGVz Y2FwZUF0dHIoa2F0KSArICciPicgKwogICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz0ibG9nLXpl aXQtemVsbGUiPicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJsb2ctemVpdC1k YXR1bSI+JyArIGVzY2FwZUhUTUwodHMuZGF0dW0pICsgJzwvZGl2PicgKwogICAgICAgICAgICAg ICAgICAgICc8ZGl2IGNsYXNzPSJsb2ctemVpdC11aHJ6ZWl0Ij4nICsgZXNjYXBlSFRNTCh0cy56 ZWl0KSArICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L3RkPicgKwogICAgICAgICAgICAg ICAgJzx0ZCBjbGFzcz0ibG9nLWFrdGlvbi16ZWxsZSI+PHNwYW4gY2xhc3M9ImxvZy1waWxsIGxv Zy1waWxsLScgKyBrYXQgKyAnIj4nICsgZXNjYXBlSFRNTChsYmwpICsgJzwvc3Bhbj48L3RkPicg KwogICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz0ibG9nLWJlbnV0emVyLXplbGxlIj4nICsKICAg ICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImxvZy1iZW51dHplci1hdmF0YXIiPicgKyBl c2NhcGVIVE1MKGluaXRpYWxlbikgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICc8 c3BhbiBjbGFzcz0ibG9nLWJlbnV0emVyLW5hbWUiPicgKyBlc2NhcGVIVE1MKHVzZXIpICsgJzwv c3Bhbj4nICsKICAgICAgICAgICAgICAgICc8L3RkPicgKwogICAgICAgICAgICAgICAgJzx0ZCBj bGFzcz0ibG9nLWRldGFpbHMtemVsbGUiPicgKyAoZGV0YWlsc0h0bWwoZSwgcE1hcCkgfHwgJzxz cGFuIGNsYXNzPSJsb2ctZGV0YWlscy1sZWVyIj7igJQ8L3NwYW4+JykgKyAnPC90ZD4nICsKICAg ICAgICAgICAgICAgICc8dGQgY2xhc3M9ImxvZy1yZXN0b3JlLXplbGxlIj4nICsgX3Jlc3RvcmVC dXR0b25IdG1sKGUpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAnPC90cj4nOwogICAgICAg IH0pOwogICAgICAgIHRib2R5LmlubmVySFRNTCA9IGh0bWw7CiAgICAgICAgLy8gaWRlbXBvdGVu dCDigJQgb25jbGljayB1ZWJlcnNjaHJlaWJ0IHZvcmlnZW4gSGFuZGxlcgogICAgICAgIHRib2R5 Lm9uY2xpY2sgPSBfcmVzdG9yZUNsaWNrOwp9Cgp2YXIgX2xvZ0ZpbHRlclRpbWVyID0gbnVsbDsK ZnVuY3Rpb24gbG9nYnVjaEZpbHRlcm4oKSB7CiAgICAvLyBEZWJvdW5jZTogYmVpIGJpcyB6dSAx MDAwIFplaWxlbiB3dWVyZGUgZWluIEZpbHRlci1EdXJjaGxhdWYgcHJvCiAgICAvLyBUYXN0ZW5k cnVjayAocXVlcnlTZWxlY3RvckFsbCArIHRleHRDb250ZW50IHVlYmVyIGFsbGUgWmVpbGVuKSBy dWNrZWxuLgogICAgLy8gMTIwIG1zIFZlcnpvZWdlcnVuZyBmYXNzdCBzY2huZWxsZSBUYXN0ZW5m b2xnZW4genVzYW1tZW4uCiAgICBpZiAoX2xvZ0ZpbHRlclRpbWVyKSBjbGVhclRpbWVvdXQoX2xv Z0ZpbHRlclRpbWVyKTsKICAgIF9sb2dGaWx0ZXJUaW1lciA9IHNldFRpbWVvdXQoX2xvZ2J1Y2hG aWx0ZXJuSmV0enQsIDEyMCk7Cn0KZnVuY3Rpb24gX2xvZ2J1Y2hGaWx0ZXJuSmV0enQoKSB7CiAg ICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nLXN1Y2hlJyk7CiAgICBpZiAo IWVsKSByZXR1cm47ICAvLyBhbmRlcmVyIFZpZXctWnVzdGFuZCDigJQgcm9idXN0IHN0YXR0IEV4 Y2VwdGlvbgogICAgdmFyIHN1Y2hlID0gKGVsLnZhbHVlIHx8ICcnKS50b0xvd2VyQ2FzZSgpOwog ICAgdmFyIHplaWxlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNsb2ctdGJvZHkgdHIn KTsKICAgIHplaWxlbi5mb3JFYWNoKGZ1bmN0aW9uKHRyKSB7CiAgICAgICAgLy8gS2F0ZWdvcmll LUNoaXAgVU5EIFRleHRzdWNoZSBrb21iaW5pZXJ0IChiZWlkZSBtdWVzc2VuIHBhc3NlbikuCiAg ICAgICAgdmFyIGthdE9rID0gIV9sb2dBa3RpdmVLYXQgfHwgdHIuZ2V0QXR0cmlidXRlKCdkYXRh LWthdCcpID09PSBfbG9nQWt0aXZlS2F0OwogICAgICAgIHZhciB0ZXh0T2sgPSAhc3VjaGUgfHwg dHIudGV4dENvbnRlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHN1Y2hlKSA+PSAwOwogICAgICAg IHRyLnN0eWxlLmRpc3BsYXkgPSAoa2F0T2sgJiYgdGV4dE9rKSA/ICcnIDogJ25vbmUnOwogICAg fSk7Cn0KCi8vIEFjaHR1bmc6IGxvZ2J1Y2hIb29rcyBpc3QgYmVyZWl0cyBvYmVuIHZpYSBgZXhw b3J0IHZhciBsb2didWNoSG9va3NgCi8vIGV4cG9ydGllcnQg4oCUIGhpZXIgTklDSFQgZXJuZXV0 IGF1Zmxpc3Rlbiwgc29uc3QgU3ludGF4RXJyb3IuCmV4cG9ydCB7IGxvZ2J1Y2hMYWRlbiwgbG9n YnVjaEZpbHRlcm4sIGFrdGlvbkxhYmVsLCBiZW51dHplcktsYXJuYW1lIH07Cg== ### FILE: js/schichtteam.js | 6164 Ly8gPT09IHNjaGljaHR0ZWFtLmpzID09PQovLyAiTWVpbiBTY2hpY2h0LVRlYW0iIOKAlCAxNC1U YWdlLVVlYmVyc2ljaHQgYWxzIHJlYWQtb25seSBNb2RhbCwgZ2VvZWZmbmV0Ci8vIHVlYmVyIGRl biAiVGVhbSItQnV0dG9uIGltIEhldXRlLUthc3RlbiBkZXIgUGxhbnVuZ3NhbnNpY2h0LgovLwov LyBJZGVlOiBFaW4gREdML01BIHdpbGwgc2NobmVsbCBzZWhlbiwgd2VyIGluIFNFSU5FUiBTY2hp Y2h0IGFyYmVpdGV0LCBvaG5lCi8vIGR1cmNoIGFsbGUgfjQ2IFBlcnNvbmVuIHp1IHNjcm9sbGVu LiBEYXMgVGVhbSB3aXJkIEVJTk1BTCBhbmhhbmQgSEVVVEUKLy8gYmVzdGltbXQgKGFsbGUsIGRp ZSBsYXV0IFJvdGF0aW9uIGhldXRlIGluIGRlcnNlbGJlbiBGL1MvTi1TY2hpY2h0IHNpbmQgd2ll Ci8vIGljaCDigJQgc3RhbmRvcnR1ZWJlcmdyZWlmZW5kLCBpbmtsLiB3ZnIvZGZyLUtvbGxlZ2Vu KSB1bmQgZGFubiB1ZWJlciB2b2xsZQovLyAxNCBUYWdlIG1pdCBkZW4gamV3ZWlsaWdlbiBFaW50 cmFlZ2VuIGdlemVpZ3Qg4oCUIGF1Y2ggd2VubiBkaWUgUm90YXRpb24KLy8gendpc2NoZW5kcmlu IGtpcHB0IChmZXN0ZXMgVGVhbSwgcnVoaWdlIERhcnN0ZWxsdW5nOyBVc2VyLVd1bnNjaCAyMDI2 LTA1LTI3KS4KLy8KLy8gV0QtU29uZGVyZmFsbCAoTm90dGVib2htL0dvdG90LCBQb29sLVN0YW5k b3J0ZSBvaG5lIHNjaGljaHRmb2xnZSk6IGRhIGtlaW5lCi8vIGJlcmVjaGVuYmFyZSBSb3RhdGlv biBleGlzdGllcnQsIGJlc3RpbW10IGRpZSB0YXRzYWVjaGxpY2ggZWluZ2V0cmFnZW5lCi8vIFRh Z2Vzc2NoaWNodCAoRi1ER0wvUy1ER0wvTi1ER0wgaGV1dGUpICJtZWluZSBTY2hpY2h0Ii4KCmlt cG9ydCB7IFogfSBmcm9tICcuL2NvcmVfc3RhdGUuanMnOwppbXBvcnQgewogICAgZXNjYXBlSFRN TCwgZXNjYXBlQXR0ciwgZGF0dW1TdHIsIGRhdHVtRm9ybWF0REUsIGRhdHVtS3VyekRFLAogICAg d29jaGVudGFnS3VyeiwgaXN0V29jaGVuZW5kZSwgYXZhdGFyS3JlaXNIdG1sLCBwZXJzb25TY2hp Y2h0QW0KfSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CmltcG9ydCB7IG1vZGFsWmVpZ2VuLCBtb2Rh bFNjaGxpZXNzZW4sIHRvYXN0IH0gZnJvbSAnLi91aV9kaWFsb2cuanMnOwoKdmFyIFNDSElDSFRf TkFNRSA9IHsgRjogJ0Zyw7xoZGllbnN0JywgUzogJ1Nww6R0ZGllbnN0JywgTjogJ05hY2h0ZGll bnN0JyB9OwoKLy8gRWluZ2V0cmFnZW5lIFNjaGljaHQgYXVzIGVpbmVtIENvZGUgYWJsZWl0ZW46 ICJGLS4uLiIvIlMtLi4uIi8iTi0uLi4iIC0+IEYvUy9OLgovLyBEZWNrdCBGLURHTC9TLURHTC9O LURHTCwgRi1XREYsIEYtRkJQLCAuLi4gYWIuIFVybC9rci93ZnIvZGZyLy4uLiAtPiBudWxsLgpm dW5jdGlvbiBzY2hpY2h0QXVzQ29kZShjb2RlKSB7CiAgICBpZiAoIWNvZGUgfHwgdHlwZW9mIGNv ZGUgIT09ICdzdHJpbmcnIHx8IGNvZGUuY2hhckF0KDEpICE9PSAnLScpIHJldHVybiBudWxsOwog ICAgdmFyIGMgPSBjb2RlLmNoYXJBdCgwKTsKICAgIHJldHVybiAoYyA9PT0gJ0YnIHx8IGMgPT09 ICdTJyB8fCBjID09PSAnTicpID8gYyA6IG51bGw7Cn0KCi8vIFNjaGljaHQgZWluZXIgUGVyc29u IGFuIGVpbmVtIFRhZzogenVlcnN0IFJvdGF0aW9uIChpZ25vcmllcnQgZGVuIEVpbnRyYWcsCi8v IGVyZmFzc3QgYWxzbyB3ZnIvZGZyLUtvbGxlZ2VuIGtvcnJla3QpLCBzb25zdCBkaWUgZWluZ2V0 cmFnZW5lIFRhZ2Vzc2NoaWNodAovLyAoV0QtRmFsbCksIHNvbnN0IG51bGwuCmZ1bmN0aW9uIHNj aGljaHRWb24ocGVyc29uLCBkYXR1bSkgewogICAgdmFyIHMgPSBwZXJzb25TY2hpY2h0QW0ocGVy c29uLCBkYXR1bSk7CiAgICBpZiAocykgcmV0dXJuIHM7CiAgICB2YXIgZSA9IChaLnBsYW51bmcu ZWludHJhZWdlIHx8IHt9KVtkYXR1bV0gfHwge307CiAgICByZXR1cm4gc2NoaWNodEF1c0NvZGUo ZVtTdHJpbmcocGVyc29uLmlkKV0gfHwgJycpOwp9CgpleHBvcnQgZnVuY3Rpb24gc2NoaWNodFRl YW1Nb2RhbE9lZmZuZW4oKSB7CiAgICB2YXIgbWUgPSAoWi5wZXJzb25lbiB8fCBbXSkuZmluZChm dW5jdGlvbihwKSB7IHJldHVybiBTdHJpbmcocC5pZCkgPT09IFN0cmluZyhaLm1laW5lUGVyc29u SWQpOyB9KTsKICAgIGlmIChaLm1laW5lUGVyc29uSWQgPT0gbnVsbCB8fCAhbWUpIHsKICAgICAg ICB0b2FzdCgnS2VpbmUgUGVyc29uIHp1Z2VvcmRuZXQg4oCUIFNjaGljaHQtVGVhbSBuaWNodCBh YmxlaXRiYXIuJywgJ2luZm8nKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB2YXIgaGV1dGUg PSBaLmhldXRlU3RyOwogICAgdmFyIHppZWwgPSBzY2hpY2h0Vm9uKG1lLCBoZXV0ZSk7CiAgICBp ZiAoIXppZWwpIHsKICAgICAgICB0b2FzdCgnRsO8ciBoZXV0ZSBpc3Qga2VpbmUgU2NoaWNodCBo aW50ZXJsZWd0IOKAlCBTY2hpY2h0LVRlYW0gbmljaHQgYWJsZWl0YmFyLicsICdpbmZvJyk7CiAg ICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIFRlYW0gZWlubWFsaWcgYW5oYW5kIEhFVVRFIGJl c3RpbW1lbi4gWi5wZXJzb25lbiBpc3QgYmVyZWl0cyBuYWNoCiAgICAvLyBHcnVwcGVuLVJhbmcg KyBwb3NpdGlvbiBzb3J0aWVydCDigJQgUmVpaGVuZm9sZ2UgdWViZXJuZWhtZW4uCiAgICB2YXIg dGVhbSA9IChaLnBlcnNvbmVuIHx8IFtdKS5maWx0ZXIoZnVuY3Rpb24ocCkgeyByZXR1cm4gc2No aWNodFZvbihwLCBoZXV0ZSkgPT09IHppZWw7IH0pOwogICAgaWYgKHRlYW0uaW5kZXhPZihtZSkg PCAwKSB0ZWFtLnVuc2hpZnQobWUpOyAvLyBTaWNoZXJoZWl0cy1OZXR6CgogICAgLy8gMTQgVGFn ZSBhYiBoZXV0ZS4KICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKGhldXRlICsgJ1QwMDowMDowMCcp OwogICAgdmFyIHRhZ2UgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTQ7IGkrKykgewog ICAgICAgIHZhciBkID0gbmV3IERhdGUoc3RhcnQpOwogICAgICAgIGQuc2V0RGF0ZShzdGFydC5n ZXREYXRlKCkgKyBpKTsKICAgICAgICB0YWdlLnB1c2goZCk7CiAgICB9CgogICAgLy8gLS0tLS0g S29wZnplaWxlIC0tLS0tCiAgICB2YXIga29wZiA9ICc8dGggY2xhc3M9InN0LXRoLW5hbWUiPlBl cnNvbjwvdGg+JzsKICAgIHRhZ2UuZm9yRWFjaChmdW5jdGlvbihkKSB7CiAgICAgICAgdmFyIHdl ID0gaXN0V29jaGVuZW5kZShkKSA/ICcgc3Qtd2UnIDogJyc7CiAgICAgICAga29wZiArPSAnPHRo IGNsYXNzPSJzdC10aC10YWcnICsgd2UgKyAnIj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9 InN0LXRoLWRhdHVtIj4nICsgZXNjYXBlSFRNTChkYXR1bUt1cnpERShkKSkgKyAnPC9kaXY+JyAr CiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdC10aC13dGFnIj4nICsgZXNjYXBlSFRNTCh3b2No ZW50YWdLdXJ6KGQpKSArICc8L2Rpdj4nICsKICAgICAgICAgICAgJzwvdGg+JzsKICAgIH0pOwoK ICAgIC8vIC0tLS0tIFBlcnNvbmVuLVplaWxlbiAtLS0tLQogICAgdmFyIHplaWxlbiA9ICcnOwog ICAgdGVhbS5mb3JFYWNoKGZ1bmN0aW9uKHApIHsKICAgICAgICB2YXIgaXN0SWNoID0gU3RyaW5n KHAuaWQpID09PSBTdHJpbmcoWi5tZWluZVBlcnNvbklkKTsKICAgICAgICB2YXIgbWV0YSA9IChw LmdydXBwZSB8fCAnPycpICsgKHAub2UgPyAnIMK3ICcgKyBwLm9lIDogJycpOwogICAgICAgIHZh ciBuYW1lWmVsbGUgPSAnPHRkIGNsYXNzPSJzdC10ZC1uYW1lIj4nICsKICAgICAgICAgICAgJzxk aXYgY2xhc3M9InN0LXBlcnNvbiI+JyArCiAgICAgICAgICAgICAgICBhdmF0YXJLcmVpc0h0bWwo cCwgMjIpICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdC1wZXJzb24tdHh0Ij4nICsK ICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic3QtcGVyc29uLW5hbWUiPicgKyBlc2Nh cGVIVE1MKHAubmFtZSB8fCAnJykgKwogICAgICAgICAgICAgICAgICAgICAgICAocC52b3JuYW1l ID8gJyAnICsgZXNjYXBlSFRNTChwLnZvcm5hbWUpIDogJycpICsgJzwvZGl2PicgKwogICAgICAg ICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdC1wZXJzb24tbWV0YSI+JyArIGVzY2FwZUhUTUwo bWV0YSkgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAg ICc8L2Rpdj48L3RkPic7CgogICAgICAgIHZhciB6ZWxsZW4gPSAnJzsKICAgICAgICB0YWdlLmZv ckVhY2goZnVuY3Rpb24oZCkgewogICAgICAgICAgICB2YXIgZFN0ciA9IGRhdHVtU3RyKGQpOwog ICAgICAgICAgICB2YXIgZSA9IChaLnBsYW51bmcuZWludHJhZWdlIHx8IHt9KVtkU3RyXSB8fCB7 fTsKICAgICAgICAgICAgdmFyIHdlcnQgPSBlW1N0cmluZyhwLmlkKV0gfHwgJyc7CiAgICAgICAg ICAgIHZhciBmYXJiZW4gPSBaLmNvZGVNYXBbd2VydF0gfHwge307CiAgICAgICAgICAgIHZhciB3 ZSA9IGlzdFdvY2hlbmVuZGUoZCkgPyAnIHN0LXdlJyA6ICcnOwogICAgICAgICAgICB2YXIgc3R5 bGUgPSAnJzsKICAgICAgICAgICAgdmFyIGFuemVpZ2UgPSAnJzsKICAgICAgICAgICAgaWYgKHdl cnQgJiYgZmFyYmVuLmhpbnRlcmdydW5kKSB7CiAgICAgICAgICAgICAgICBzdHlsZSA9ICcgc3R5 bGU9ImJhY2tncm91bmQtY29sb3I6JyArIGVzY2FwZUF0dHIoZmFyYmVuLmhpbnRlcmdydW5kKSAr CiAgICAgICAgICAgICAgICAgICAgICAgICc7Y29sb3I6JyArIGVzY2FwZUF0dHIoZmFyYmVuLnNj aHJpZnQgfHwgJyMwMDAnKSArICciJzsKICAgICAgICAgICAgICAgIGFuemVpZ2UgPSBlc2NhcGVI VE1MKGZhcmJlbi5rdWVyemVsIHx8IHdlcnQpOwogICAgICAgICAgICB9IGVsc2UgaWYgKHdlcnQp IHsKICAgICAgICAgICAgICAgIGFuemVpZ2UgPSBlc2NhcGVIVE1MKHdlcnQpOwogICAgICAgICAg ICB9CiAgICAgICAgICAgIHplbGxlbiArPSAnPHRkIGNsYXNzPSJzdC10ZC10YWcnICsgd2UgKyAn IicgKyBzdHlsZSArICcgdGl0bGU9IicgKyBlc2NhcGVBdHRyKHdlcnQpICsgJyI+JyArIGFuemVp Z2UgKyAnPC90ZD4nOwogICAgICAgIH0pOwoKICAgICAgICB6ZWlsZW4gKz0gJzx0ciBjbGFzcz0i c3QtemVpbGUnICsgKGlzdEljaCA/ICcgc3QtemVpbGUtaWNoJyA6ICcnKSArICciPicgKyBuYW1l WmVsbGUgKyB6ZWxsZW4gKyAnPC90cj4nOwogICAgfSk7CgogICAgdmFyIGtvZXJwZXIgPQogICAg ICAgICc8ZGl2IGNsYXNzPSJzdC1rb3BmaW5mbyI+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFz cz0ic3QtYmFkZ2Ugc3QtYmFkZ2UtJyArIHppZWwgKyAnIj4nICsgZXNjYXBlSFRNTChTQ0hJQ0hU X05BTUVbemllbF0gfHwgemllbCkgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4gY2xh c3M9InN0LXplaXRyYXVtIj4xNCBUYWdlIGFiICcgKyBlc2NhcGVIVE1MKGRhdHVtRm9ybWF0REUo aGV1dGUpKSArICcgwrcgJyArCiAgICAgICAgICAgICAgICB0ZWFtLmxlbmd0aCArICcgUGVyc29u ZW48L3NwYW4+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFzcz0ic3QtaGlud2VpcyI+VGVhbSBi ZXN0aW1tdCBuYWNoIGhldXRpZ2VyIFNjaGljaHQgKGlua2wuIFdhY2hmcmVpL0RpZW5zdGZyZWkg bGF1dCBSb3RhdGlvbikuPC9zcGFuPicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICAgICAnPGRp diBjbGFzcz0ic3Qtc2Nyb2xsIj48dGFibGUgY2xhc3M9InN0LXRhYmVsbGUiPjx0aGVhZD48dHI+ JyArIGtvcGYgKyAnPC90cj48L3RoZWFkPicgKwogICAgICAgICc8dGJvZHk+JyArIHplaWxlbiAr ICc8L3Rib2R5PjwvdGFibGU+PC9kaXY+JzsKCiAgICB2YXIgZnVzcyA9ICc8YnV0dG9uIGNsYXNz PSJidG4iIGlkPSJzdC1zY2hsaWVzc2VuIiB0eXBlPSJidXR0b24iPlNjaGxpZcOfZW48L2J1dHRv bj4nOwoKICAgIG1vZGFsWmVpZ2VuKCdNZWluIFNjaGljaHQtVGVhbScsIGtvZXJwZXIsIGZ1c3Ms IG51bGwsIG51bGwsIHsgcmVpbmVyRGlhbG9nOiB0cnVlIH0pOwogICAgdmFyIG1JbmhhbHQgPSBk b2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbW9kYWwtb3ZlcmxheSAubW9kYWwtaW5oYWx0Jyk7CiAg ICBpZiAobUluaGFsdCkgbUluaGFsdC5jbGFzc0xpc3QuYWRkKCdtb2RhbC1pbmhhbHQtZ3Jvc3Mn KTsKICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3Qtc2NobGllc3Nlbicp OwogICAgaWYgKGJ0bikgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbW9kYWxTY2hsaWVz c2VuKTsKfQo= ### FILE: js/statistik.js | 121049 Ly8gPT09IHN0YXRpc3Rpay5qcyA9PT0KLy8gU3RhdGlzdGlrLVRhYjogS1BJcywgc29ydGllcmJh cmUgQmFsa2VuLUNoYXJ0cyBwcm8gUGVyc29uLCBGYWlybmVzcy0KLy8gQW56ZWlnZSwgTXVzdGVy LUFuYWx5c2UsIEFid2VzZW5oZWl0cy1LYWNoZWxuLCBEZXRhaWwtVGFiZWxsZSwgUHJvc2EtVGV4 dC4KCmltcG9ydCB7IFogfSBmcm9tICcuL2NvcmVfc3RhdGUuanMnOwppbXBvcnQgewogICAgZXNj YXBlSFRNTCwgZXNjYXBlQXR0ciwKICAgIGRhdHVtU3RyLCBkYXR1bUZvcm1hdERFLCBkYXR1bUt1 cnpERSwKICAgIF9wZXJzb25BbnplaWdlLCByZW5kZXJFcnJvckJveAp9IGZyb20gJy4vY29yZV91 dGlsLmpzJzsKaW1wb3J0IHsgdG9hc3QsIG1vZGFsWmVpZ2VuLCBtb2RhbFNjaGxpZXNzZW4sIGxh ZGVPdmVybGF5WmVpZ2VuLCBsYWRlT3ZlcmxheVZlcnN0ZWNrZW4gfSBmcm9tICcuL3VpX2RpYWxv Zy5qcyc7CmltcG9ydCB7IGFwaSB9IGZyb20gJy4vY29yZV9hcGkuanMnOwppbXBvcnQgeyBkYXJm U3RhdGlzdGlrU3ViIH0gZnJvbSAnLi9jb3JlX3Blcm1pc3Npb25zLmpzJzsKaW1wb3J0IHsgZmVh dHVyZUlzdEFrdGl2IH0gZnJvbSAnLi9hZG1pbi5qcyc7Ci8vIGFrdGl2ZUZ1ZWhydW5nIGxpZWZl cnQgcHJvIFRhZytTY2hpY2h0IGRpZSBUb3AtMiBuYWNoIEZ1bmt0aW9ucy1SYW5nCi8vICsgUG9z aXRpb24g4oCUIGFsc28gZ2VuYXUgZGllIHNjaHJhZmZpZXJ0IGRhcmdlc3RlbGx0ZW4gMS4vMi4g VkkzLURHTC4KaW1wb3J0IHsgYWt0aXZlRnVlaHJ1bmcgfSBmcm9tICcuL2dyaWRfZWRpdG9yLmpz JzsKaW1wb3J0IHsKICAgIGF1c3dlcnRlbiwKICAgIC8vIEthY2hlbC1LYXRhbG9nIGxpZWd0IHNl aXQgdjEuNC41IGluIGRlciB1bmdlR0FURXRlbiBFbmdpbmUgKHNpZWhlIGRvcnQpOgogICAgLy8g c28ga2FubiBhZG1pbl9zdGF0aXN0aWsuanMgZGllc2UgU3ltYm9sZSBpbXBvcnRpZXJlbiwgb2hu ZSBzdGF0aXN0aWsuanMKICAgIC8vIChHQVRFLTQwNCkgc3RhdGlzY2ggaW4gZGllIE1vZHVsLUtl dHRlIHJlZ3VsYWVyZXIgVXNlciB6dSB6aWVoZW4uCiAgICBCUkVJVEVfU1BBTiwgQlJFSVRFX1JB TkcsIEJVSUxUSU5fVElMRVMsCiAgICBhbGxlS2FjaGVsbiBhcyBfYWxsZUthY2hlbG4sIHN0YXRp c3Rpa1RpbGVzQWxsZQp9IGZyb20gJy4vc3RhdGlzdGlrX2VuZ2luZS5qcyc7CmltcG9ydCB7IGRp YWdyYW1tUmVuZGVybiB9IGZyb20gJy4vc3RhdGlzdGlrX2NoYXJ0cy5qcyc7CgogICAgLy8gPT09 PT0gU3RhdGlzdGlrID09PT09CgogICAgdmFyIHN0YXRGaWx0ZXIgPSAnYWxsZSc7CgogICAgLy8g QW5vbnltaXNpZXJ1bmdzLU1hcHBpbmcgKENoZXJyeS1QaWNrIDFhZWZlMjYsIGhpbnRlciBUb2dn bGUKICAgIC8vIGBmZWF0dXJlcy5zdGF0aXN0aWtBbm9ueW1gKS4gV2lyZCB6dSBCZWdpbm4gamVk ZXMgc3RhdGlzdGlrUmVuZGVybigpCiAgICAvLyBuZXUgYXVmZ2ViYXV0OiBqZWRlciBzLm5hbWUg LT4gIlBlcnNvbiBOIiBnZW1hZXNzIFJlaWhlbmZvbGdlIGluIHN0YXRzLgogICAgLy8gX3N0YXRB bnplaWdlTmFtZShzKSBsaWVmZXJ0IGRlbiBhbnp1emVpZ2VuZGVuIE5hbWVuIOKAlCBiZWkgZGVh a3RpdmVtCiAgICAvLyBGZWF0dXJlIGlzdCBkYXMgZWluZmFjaCBzLm5hbWUuCiAgICB2YXIgX3N0 YXRBbm9uQWt0aXYgPSBmYWxzZTsKICAgIHZhciBfc3RhdEFub25NYXAgICA9IHt9OwogICAgZnVu Y3Rpb24gX3N0YXRBbnplaWdlTmFtZShzKSB7CiAgICAgICAgaWYgKF9zdGF0QW5vbkFrdGl2KSBy ZXR1cm4gX3N0YXRBbm9uTWFwW3MubmFtZV0gfHwgcy5uYW1lOwogICAgICAgIC8vIFNlcnZlciBs aWVmZXJ0ICJOYWNobmFtZSwgVm9ybmFtZSIuIFdlbm4gZGVyIFZvcm5hbWUgbGVlciBpc3QsCiAg ICAgICAgLy8gYmxlaWJ0IGVpbiBoYWVuZ2VuZGVzIEtvbW1hIOKAlCBhYnNjaG5laWRlbi4KICAg ICAgICB2YXIgbiA9IHMubmFtZSB8fCAnJzsKICAgICAgICB2YXIgayA9IG4uaW5kZXhPZignLCcp OwogICAgICAgIGlmIChrIDwgMCkgcmV0dXJuIG47CiAgICAgICAgdmFyIG5hY2ggPSBuLnN1YnN0 cmluZyhrICsgMSkudHJpbSgpOwogICAgICAgIGlmICghbmFjaCkgcmV0dXJuIG4uc3Vic3RyaW5n KDAsIGspLnRyaW0oKTsKICAgICAgICByZXR1cm4gbjsKICAgIH0KCiAgICAvLyBLYXRlZ29yaWUt U3RhdGUgZnVlciBkaWUgQmFsa2VuLUFuc2ljaHQuIFNlc3Npb25zLWxva2FsLgogICAgLy8gQWt0 aXZlIEthdGVnb3JpZSBiZXN0aW1tdCwgd2VsY2hlIFNlZ21lbnRlIGRlciBCYWxrZW4gemVpZ3Qg dW5kIG5hY2gKICAgIC8vIHdlbGNoZW0gU3VtbWVuLUZlbGQgc29ydGllcnQgd2lyZC4KICAgIHZh ciBfc3RhdEthdGVnb3JpZSAgICA9ICdzY2hpY2h0ZW4nOwogICAgdmFyIF9zdGF0U29ydFJpY2h0 dW5nID0gJ2Rlc2MnOwoKICAgIC8vIEthdGVnb3JpZS1EZWZpbml0aW9uOiBwcm8gS2F0ZWdvcmll IGVpbmUgTGlzdGUgdm9uIFNlZ21lbnRlbgogICAgLy8gKEZlbGQsIExhYmVsLCBGYXJiZSkgdW5k IGRhcyBTdW1tZW4tRmVsZCBmdWVyIGRpZSBTb3J0aWVydW5nLgogICAgLy8gS3JhbmsgKGtyKSBp c3QgQkVXVVNTVCBuaWNodCBlbnRoYWx0ZW4g4oCUIERhdGVuc2NodXR6LUFuZm9yZGVydW5nLAog ICAgLy8gZXJzY2hlaW50IG51ciBpbiBkZXIgRGV0YWlsLVRhYmVsbGUgZ2FueiB1bnRlbi4KICAg IHZhciBTVEFUX0tBVEVHT1JJRU4gPSB7CiAgICAgICAgc2NoaWNodGVuOiB7CiAgICAgICAgICAg IGxhYmVsOiAnU2NoaWNodGVuJywKICAgICAgICAgICAgc2VnbWVudGU6IFsKICAgICAgICAgICAg ICAgIHsgZmVsZDogJ2ZydWVoJywgICAgICAgIGxhYmVsOiAnRnLDvGgnLCAgICBmYXJiZTogJ3Zh cigtLWZhcmJlLWZydWVoKScgfSwKICAgICAgICAgICAgICAgIHsgZmVsZDogJ3NwYWV0JywgICAg ICAgIGxhYmVsOiAnU3DDpHQnLCAgICBmYXJiZTogJ3ZhcigtLWZhcmJlLXNwYWV0KScgfSwKICAg ICAgICAgICAgICAgIHsgZmVsZDogJ25hY2h0JywgICAgICAgIGxhYmVsOiAnTmFjaHQnLCAgIGZh cmJlOiAndmFyKC0tZmFyYmUtbmFjaHQpJyB9LAogICAgICAgICAgICAgICAgeyBmZWxkOiAnc29u ZGVyZGllbnN0JywgbGFiZWw6ICdTRCcsICAgICAgZmFyYmU6ICd2YXIoLS1zdGF0LXNkKScgfQog ICAgICAgICAgICBdLAogICAgICAgICAgICBzb3J0RmVsZDogJ2dlc2FtdCcsCiAgICAgICAgICAg IHNvcnRMYWJlbDogJ86jIERpZW5zdGUnCiAgICAgICAgfSwKICAgICAgICB3b2NoZW5lbmRlOiB7 CiAgICAgICAgICAgIGxhYmVsOiAnV29jaGVuZW5kZGllbnN0ZScsCiAgICAgICAgICAgIHNlZ21l bnRlOiBbCiAgICAgICAgICAgICAgICB7IGZlbGQ6ICdzYW1zdGFnRGllbnN0ZScsICBsYWJlbDog J1NhJywgICAgICAgZmFyYmU6ICd2YXIoLS1zdGF0LXNhbXN0YWcpJyB9LAogICAgICAgICAgICAg ICAgeyBmZWxkOiAnc29ubnRhZ0RpZW5zdGUnLCAgbGFiZWw6ICdTbycsICAgICAgIGZhcmJlOiAn dmFyKC0tc3RhdC1zb25udGFnKScgfSwKICAgICAgICAgICAgICAgIHsgZmVsZDogJ2ZlaWVydGFn RGllbnN0ZScsIGxhYmVsOiAnRmVpZXJ0YWcnLCBmYXJiZTogJ3ZhcigtLXN0YXQtZmVpZXJ0YWcp JyB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIC8vIEtvbXBsZXR0ZSBXRSB3aXJkIGFscyB6 dXNhZXR6bGljaGUgS2VubnphaGwgcmVjaHRzIGdlemVpZ3QKICAgICAgICAgICAgZXh0cmE6IHsg ZmVsZDogJ2tvbXBsZXR0ZVdFJywgbGFiZWw6ICdLb21wbGV0dGUgV0UnLCBmYXJiZTogJ3Zhcigt LXN0YXQta29tcGxldHRlLXdlKScgfSwKICAgICAgICAgICAgLy8gU3VtbWUgdWViZXIgU2ErU28r RmVpZXJ0YWcgKGNvbXB1dGVkKQogICAgICAgICAgICBzb3J0TGFiZWw6ICfOoyBXRStGZWllcnRh ZycKICAgICAgICB9LAogICAgICAgIGZvcnRiaWxkdW5nOiB7CiAgICAgICAgICAgIGxhYmVsOiAn Rm9ydGJpbGR1bmcnLAogICAgICAgICAgICBzZWdtZW50ZTogWwogICAgICAgICAgICAgICAgeyBm ZWxkOiAnZm9ydGJpbGR1bmcnLCAgICAgIGxhYmVsOiAnQXVGL0VUTS9TZW0vVFQvVHpGJywgZmFy YmU6ICd2YXIoLS1zdGF0LWZvcnRiaWxkdW5nLTEpJyB9LAogICAgICAgICAgICAgICAgeyBmZWxk OiAnZGllbnN0dW50ZXJyaWNodCcsIGxhYmVsOiAnRFUnLCAgICAgICAgICAgICAgICAgIGZhcmJl OiAndmFyKC0tc3RhdC1mb3J0YmlsZHVuZy0yKScgfSwKICAgICAgICAgICAgICAgIHsgZmVsZDog J2xlaHJnYW5nTGFuZycsICAgICBsYWJlbDogJ0xHJywgICAgICAgICAgICAgICAgICBmYXJiZTog J3ZhcigtLXN0YXQtZm9ydGJpbGR1bmctMyknIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAg c29ydExhYmVsOiAnzqMgRm9ydGJpbGR1bmcnCiAgICAgICAgfSwKICAgICAgICBhYndlc2VuaGVp dDogewogICAgICAgICAgICBsYWJlbDogJ0Fid2VzZW5oZWl0JywKICAgICAgICAgICAgLy8gS3Jh bmsgYmV3dXNzdCBhdXNnZW5vbW1lbiAoRGF0ZW5zY2h1dHopLiBVcmxhdWIgKyBLdXIgKyBTb25k ZXJ1cmxhdWIKICAgICAgICAgICAgLy8gc2luZCBkaWUgZmFpcmVuIFZlcmdsZWljaHN3ZXJ0ZS4K ICAgICAgICAgICAgc2VnbWVudGU6IFsKICAgICAgICAgICAgICAgIHsgZmVsZDogJ3VybGF1Yics ICAgICAgIGxhYmVsOiAnVXJsYXViJywgICAgICAgZmFyYmU6ICd2YXIoLS1zdGF0LXVybGF1Yikn IH0sCiAgICAgICAgICAgICAgICB7IGZlbGQ6ICdrdXInLCAgICAgICAgICBsYWJlbDogJ0t1cics ICAgICAgICAgIGZhcmJlOiAndmFyKC0tc3RhdC1rdXIpJyB9LAogICAgICAgICAgICAgICAgeyBm ZWxkOiAnc29uZGVydXJsYXViJywgbGFiZWw6ICdTb25kZXJ1cmxhdWInLCBmYXJiZTogJ3Zhcigt LXN0YXQtc29uZGVydXJsYXViKScgfQogICAgICAgICAgICBdLAogICAgICAgICAgICBzb3J0TGFi ZWw6ICfOoyBBYndlc2VuaGVpdCcKICAgICAgICB9LAogICAgICAgIGVpbmdlc3BydW5nZW46IHsK ICAgICAgICAgICAgbGFiZWw6ICdFaW5nZXNwcnVuZ2VuJywKICAgICAgICAgICAgLy8gQXVzc2Vy cGxhbm1hZXNzaWdlIEF1ZnJ1ZWNrdW5nZW4gaW4gZGllIDEuLzIuIFZJMy1ER0wtCiAgICAgICAg ICAgIC8vIFZlcmFudHdvcnR1bmcgaW5uZXJoYWxiIGRlciAxNC1UYWdlLVZlcmJpbmRsaWNoa2Vp dC4gUHJvCiAgICAgICAgICAgIC8vIFNjaGljaHQgKEYvUy9OKSBhdWZnZXNjaGx1ZXNzZWx0IC0t IGdsZWljaGUgRmFyYnBhbGV0dGUgd2llCiAgICAgICAgICAgIC8vIGRpZSBTY2hpY2h0ZW4tS2F0 ZWdvcmllLCBkYW1pdCBkZXIgQmV6dWcgb3B0aXNjaCBrbGFyIGlzdC4KICAgICAgICAgICAgYmVz Y2hyZWlidW5nOiAnSGllciB3ZXJkZW4gZGllIE1pdGFyYmVpdGVuZGVuIGF1ZmdlZsO8aHJ0LCBk aWUgPGI+YXXDn2VycGxhbm3DpMOfaWcgaW5uZXJoYWxiIGRlciAxNC1UYWdlLVZlcmJpbmRsaWNo a2VpdCBlaW5nZXNwcnVuZ2VuPC9iPiBzaW5kIHVuZCBpbiBkaWUgMS4gb2RlciAyLiBWSTMtREdM LVZlcmFudHdvcnR1bmcgZWluZXIgU2NoaWNodCBhdWZnZXLDvGNrdCBzaW5kIOKAlCBlbnR3ZWRl ciBkdXJjaCBTZXR6dW5nIGR1cmNoIGRpZSBWZXJhbnR3b3J0bGljaGVuIChNYWlsLURpYWxvZykg b2RlciBkdXJjaCBTZWxic3RlaW50cmFndW5nIGF1cyB3YWNoZnJlaSAvIEFid2VzZW5oZWl0IGhl cmF1cy4nLAogICAgICAgICAgICBzZWdtZW50ZTogWwogICAgICAgICAgICAgICAgeyBmZWxkOiAn ZWluZ2VzcHJ1bmdlbl9mJywgbGFiZWw6ICdGcsO8aCcsICBmYXJiZTogJ3ZhcigtLWZhcmJlLWZy dWVoKScgfSwKICAgICAgICAgICAgICAgIHsgZmVsZDogJ2Vpbmdlc3BydW5nZW5fcycsIGxhYmVs OiAnU3DDpHQnLCAgZmFyYmU6ICd2YXIoLS1mYXJiZS1zcGFldCknIH0sCiAgICAgICAgICAgICAg ICB7IGZlbGQ6ICdlaW5nZXNwcnVuZ2VuX24nLCBsYWJlbDogJ05hY2h0JywgZmFyYmU6ICd2YXIo LS1mYXJiZS1uYWNodCknIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgc29ydEZlbGQ6ICAn ZWluZ2VzcHJ1bmdlbicsCiAgICAgICAgICAgIHNvcnRMYWJlbDogJ86jIEVpbnNwcsO8bmdlJwog ICAgICAgIH0KICAgIH07CgogICAgLy8gU3VtbWUgZGVyIEthdGVnb3JpZS1TZWdtZW50ZSBmdWVy IGVpbmUgUGVyc29uIGVybWl0dGVsbi4KICAgIGZ1bmN0aW9uIF9zdGF0S2F0U3VtbWUocywga2F0 KSB7CiAgICAgICAgaWYgKGthdC5zb3J0RmVsZCkgcmV0dXJuIHNba2F0LnNvcnRGZWxkXSB8fCAw OwogICAgICAgIHZhciBzdW0gPSAwOwogICAgICAgIGthdC5zZWdtZW50ZS5mb3JFYWNoKGZ1bmN0 aW9uKHNlZykgeyBzdW0gKz0gc1tzZWcuZmVsZF0gfHwgMDsgfSk7CiAgICAgICAgcmV0dXJuIHN1 bTsKICAgIH0KCiAgICBmdW5jdGlvbiBzdGF0aXN0aWtGaWx0ZXJGdWVsbGVuKCkgewogICAgICAg IC8vIEdydXBwZW4tRHJvcGRvd24gYXVzIGRlbSBha3R1ZWxsZW4gYWRtaW4uZ3J1cHBlbiBhdWZi YXVlbiDigJQgc29uc3Qga29lbm5lbgogICAgICAgIC8vIHVtYmVuYW5udGUgR3J1cHBlbiBuaWNo dCBtZWhyIGdlZmlsdGVydCB3ZXJkZW4uIExhYmVsIG9obmUgS3VlcnplbCwKICAgICAgICAvLyBu dXIgZGllIEJlemVpY2hudW5nIChGYWxsYmFjayBhdWYgZGFzIEt1ZXJ6ZWwgd2VubiBrZWluZSBC ZXplaWNobnVuZykuCiAgICAgICAgdmFyIHNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz dGF0cy1ncnVwcGVuLWZpbHRlcicpOwogICAgICAgIGlmICghc2VsKSByZXR1cm47CiAgICAgICAg dmFyIGFrdHVlbGwgPSBzZWwudmFsdWUgfHwgJ2FsbGUnOwogICAgICAgIHZhciBodG1sID0gJzxv cHRpb24gdmFsdWU9ImFsbGUiPkFsbGUgRGllbnN0Z3J1cHBlbjwvb3B0aW9uPic7CiAgICAgICAg KFouYWRtaW4uZ3J1cHBlbiB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbihncikgewogICAgICAgICAg ICB2YXIgbGFiZWwgPSBnci5iZXplaWNobnVuZyB8fCBnci5uYW1lOwogICAgICAgICAgICBodG1s ICs9ICc8b3B0aW9uIHZhbHVlPSInICsgZXNjYXBlQXR0cihnci5uYW1lKSArICciPicgKyBlc2Nh cGVIVE1MKGxhYmVsKSArICc8L29wdGlvbj4nOwogICAgICAgIH0pOwogICAgICAgIHNlbC5pbm5l ckhUTUwgPSBodG1sOwogICAgICAgIHNlbC52YWx1ZSA9IGFrdHVlbGw7CiAgICB9CgogICAgZnVu Y3Rpb24gc3RhdGlzdGlrTGFkZW4oKSB7CiAgICAgICAgc3RhdGlzdGlrRmlsdGVyRnVlbGxlbigp OwogICAgICAgIC8vIFBha2V0LUMgKDIwMjYtMDUtMjkpOiBTb2ZvcnQtU3Bpbm5lciwgZGFtaXQg ZGVyIFVzZXIgYmVpbSBUYWItV2VjaHNlbAogICAgICAgIC8vIG5pY2h0IGF1ZiBlaW5lbiBsZWVy ZW4gQmVyZWljaCBzdGFycnQgd2FlaHJlbmQgYXBpKCkgbGFldWZ0LiBXaXJkCiAgICAgICAgLy8g aW0gdGhlbi9jYXRjaCB3aWVkZXIgd2VnZ2Vub21tZW4sIGRhbmFjaCB1ZWJlcm5pbW10IGRpZSBi ZXN0ZWhlbmRlCiAgICAgICAgLy8gU2tlbGV0b24tUmVuZGVyLVNjaHJpdHQtTG9naWsgKHNlcXVl bnRpZWxsZXMgUmVuZGVybiBtaXQgR2xvdykuCiAgICAgICAgbGFkZU92ZXJsYXlaZWlnZW4oJ2Fu c2ljaHQtc3RhdGlzdGlrJywgJ1N0YXRpc3RpayB3aXJkIGJlcmVjaG5ldCDigKYnKTsKICAgICAg ICBhcGkoJy9hcGkvc3RhdGlzdGlrJykudGhlbihmdW5jdGlvbihkYXRlbikgewogICAgICAgICAg ICBaLnN0YXRpc3RpayA9IGRhdGVuOwogICAgICAgICAgICBsYWRlT3ZlcmxheVZlcnN0ZWNrZW4o J2Fuc2ljaHQtc3RhdGlzdGlrJyk7CiAgICAgICAgICAgIHN0YXRpc3Rpa1JlbmRlcm4oKTsKICAg ICAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGxhZGVPdmVybGF5VmVyc3Rl Y2tlbignYW5zaWNodC1zdGF0aXN0aWsnKTsKICAgICAgICAgICAgdG9hc3QoJ0ZlaGxlciBiZWlt IExhZGVuIGRlciBTdGF0aXN0aWs6ICcgKyBlLm1lc3NhZ2UsICdmZWhsZXInKTsKICAgICAgICB9 KTsKICAgIH0KCiAgICBmdW5jdGlvbiBzdGF0RmlsdGVybihzdGF0cykgewogICAgICAgIGlmIChz dGF0RmlsdGVyID09PSAnYWxsZScpIHJldHVybiBzdGF0czsKICAgICAgICByZXR1cm4gc3RhdHMu ZmlsdGVyKGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHMuZ3J1cHBlID09PSBzdGF0RmlsdGVyOyB9KTsK ICAgIH0KCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KICAgIC8vID09PT09IE5vQ29kZS1TdGF0aXN0aWstQmF1a2FzdGVu ICsgTGF5b3V0LVJhc3RlciA9PT09PT09PT09PQogICAgLy8gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAvLyBTZWxic3RnZWJh dXRlIEthY2hlbG4gKFouYWRtaW4uc3RhdGlzdGlrS2FjaGVsbikgZXJzY2hlaW5lbiBhbHMKICAg IC8vIHp1c2FldHpsaWNoZSAuc3RhdHMtcGFuZWwgaW0gI3N0YXRzLWdyaWQuIFJlaWhlbmZvbGdl L0JyZWl0ZS9TaWNodGJhcmtlaXQKICAgIC8vIEFMTEVSIFRpbGVzIChmZXN0ZSBQYW5lbHMgKyBC YXVrYXN0ZW4pIHN0ZXVlcnQgWi5hZG1pbi5zdGF0aXN0aWtMYXlvdXQuCiAgICAvLyBCYXVlbiBk YXJmIG51ciBTdXBlclVzZXIgKyBHZXNhbXR2ZXJhbnR3b3J0bGljaCAoQnVpbGRlciBsZWJ0IGhp ZXIgaW0KICAgIC8vIFN0YXRpc3Rpay1UYWIpOyBkYXMgUmFzdGVyLUFub3JkbmVuIGxlYnQgaW0g QWRtaW4gKGFkbWluX3N0YXRpc3Rpay5qcykuCiAgICAvLwogICAgLy8gV2ljaHRpZzogQmF1a2Fz dGVuLUthY2hlbG4gdHJhZ2VuIGlocmVuIEVJR0VORU4gIldlciItRmlsdGVyIHVuZCByZWNobmVu CiAgICAvLyBiZXd1c3N0IGdlZ2VuIGRpZSBWT0xMRSBaLnN0YXRpc3RpayAobmljaHQgZ2VnZW4g ZGVuIGdsb2JhbGVuIEdydXBwZW4tCiAgICAvLyBGaWx0ZXIgb2Jlbikg4oCUIGVpbmUgZ2VzcGVp Y2hlcnRlIEthY2hlbCBpc3QgZ2xvYmFsIHVuZCBzZWxic3QtZXJrbGFlcmVuZC4KCiAgICAvLyBC UkVJVEVfU1BBTi9CUkVJVEVfUkFORy9CVUlMVElOX1RJTEVTIHdlcmRlbiBhdXMgc3RhdGlzdGlr X2VuZ2luZS5qcwogICAgLy8gaW1wb3J0aWVydCAoc2llaGUgSW1wb3J0LUtvcGYpIOKAlCBkb3J0 IGxpZWd0IGRlciBLYWNoZWwtS2F0YWxvZyB1bmdlR0FURXQuCgogICAgLy8gTWV0cmlrLUthdGFs b2cgZnVlciBkZW4gQmF1a2FzdGVuLiBmbihzKSAtPiBaYWhsZW53ZXJ0IHBybyBQZXJzb24uCiAg ICAvLyBLUkFOSyBpc3QgYmV3dXNzdCBOSUNIVCBlbnRoYWx0ZW4gKERhdGVuc2NodXR6LCB3aWUg dWViZXJhbGwgc29uc3QpLgogICAgdmFyIEJBVUtBU1RFTl9NRVRSSUtFTiA9IFsKICAgICAgICB7 IGtleTonZ2VzYW10JywgICAgICAgICAgZ3J1cHBlOidTY2hpY2h0ZW4nLCAgICAgICAgICAgIGxh YmVsOidEaWVuc3RlIGdlc2FtdCcsICAgICAgICAgIGVpbmhlaXQ6J0RpZW5zdGUnLCBmbjpmdW5j dGlvbihzKXtyZXR1cm4gcy5nZXNhbXR8fDA7fSB9LAogICAgICAgIHsga2V5OidmcnVlaCcsICAg ICAgICAgICBncnVwcGU6J1NjaGljaHRlbicsICAgICAgICAgICAgbGFiZWw6J0Zyw7xoZGllbnN0 ZScsICAgICAgICAgICAgIGVpbmhlaXQ6J0RpZW5zdGUnLCBmbjpmdW5jdGlvbihzKXtyZXR1cm4g cy5mcnVlaHx8MDt9IH0sCiAgICAgICAgeyBrZXk6J3NwYWV0JywgICAgICAgICAgIGdydXBwZTon U2NoaWNodGVuJywgICAgICAgICAgICBsYWJlbDonU3DDpHRkaWVuc3RlJywgICAgICAgICAgICAg ZWluaGVpdDonRGllbnN0ZScsIGZuOmZ1bmN0aW9uKHMpe3JldHVybiBzLnNwYWV0fHwwO30gfSwK ICAgICAgICB7IGtleTonbmFjaHQnLCAgICAgICAgICAgZ3J1cHBlOidTY2hpY2h0ZW4nLCAgICAg ICAgICAgIGxhYmVsOidOYWNodGRpZW5zdGUnLCAgICAgICAgICAgIGVpbmhlaXQ6J0RpZW5zdGUn LCBmbjpmdW5jdGlvbihzKXtyZXR1cm4gcy5uYWNodHx8MDt9IH0sCiAgICAgICAgeyBrZXk6J3Nv bmRlcmRpZW5zdCcsICAgIGdydXBwZTonU2NoaWNodGVuJywgICAgICAgICAgICBsYWJlbDonU29u ZGVyZGllbnN0ZSAoU0QvU0UpJywgICBlaW5oZWl0OidEaWVuc3RlJywgZm46ZnVuY3Rpb24ocyl7 cmV0dXJuIHMuc29uZGVyZGllbnN0fHwwO30gfSwKICAgICAgICB7IGtleTonZGdsJywgICAgICAg ICAgICAgZ3J1cHBlOidTY2hpY2h0ZW4nLCAgICAgICAgICAgIGxhYmVsOidER0wtRWluc8OkdHpl JywgICAgICAgICAgICBlaW5oZWl0OidFaW5zw6R0emUnLCBmbjpmdW5jdGlvbihzKXtyZXR1cm4g cy5kZ2x8fDA7fSB9LAogICAgICAgIHsga2V5Oid3ZGYnLCAgICAgICAgICAgICBncnVwcGU6J1Nj aGljaHRlbicsICAgICAgICAgICAgbGFiZWw6J1dERi1FaW5zw6R0emUnLCAgICAgICAgICAgIGVp bmhlaXQ6J0VpbnPDpHR6ZScsIGZuOmZ1bmN0aW9uKHMpe3JldHVybiBzLndkZnx8MDt9IH0sCiAg ICAgICAgeyBrZXk6J2ZicCcsICAgICAgICAgICAgIGdydXBwZTonU2NoaWNodGVuJywgICAgICAg ICAgICBsYWJlbDonRkJQLUVpbnPDpHR6ZScsICAgICAgICAgICAgZWluaGVpdDonRWluc8OkdHpl JywgZm46ZnVuY3Rpb24ocyl7cmV0dXJuIHMuZmJwfHwwO30gfSwKCiAgICAgICAgeyBrZXk6J3dl X2Z0X2dlc2FtdCcsICAgIGdydXBwZTonV29jaGVuZW5kZSAmIEZlaWVydGFnJywgbGFiZWw6J1dF LSAmIEZlaWVydGFnc2RpZW5zdGUnLCAgZWluaGVpdDonRGllbnN0ZScsIGZuOmZ1bmN0aW9uKHMp e3JldHVybiAocy5zYW1zdGFnRGllbnN0ZXx8MCkrKHMuc29ubnRhZ0RpZW5zdGV8fDApKyhzLmZl aWVydGFnRGllbnN0ZXx8MCk7fSB9LAogICAgICAgIHsga2V5OidzYW1zdGFnRGllbnN0ZScsICBn cnVwcGU6J1dvY2hlbmVuZGUgJiBGZWllcnRhZycsIGxhYmVsOidTYW1zdGFnc2RpZW5zdGUnLCAg ICAgICAgIGVpbmhlaXQ6J0RpZW5zdGUnLCBmbjpmdW5jdGlvbihzKXtyZXR1cm4gcy5zYW1zdGFn RGllbnN0ZXx8MDt9IH0sCiAgICAgICAgeyBrZXk6J3Nvbm50YWdEaWVuc3RlJywgIGdydXBwZTon V29jaGVuZW5kZSAmIEZlaWVydGFnJywgbGFiZWw6J1Nvbm50YWdzZGllbnN0ZScsICAgICAgICAg ZWluaGVpdDonRGllbnN0ZScsIGZuOmZ1bmN0aW9uKHMpe3JldHVybiBzLnNvbm50YWdEaWVuc3Rl fHwwO30gfSwKICAgICAgICB7IGtleTonZmVpZXJ0YWdEaWVuc3RlJywgZ3J1cHBlOidXb2NoZW5l bmRlICYgRmVpZXJ0YWcnLCBsYWJlbDonRmVpZXJ0YWdzZGllbnN0ZScsICAgICAgICBlaW5oZWl0 OidEaWVuc3RlJywgZm46ZnVuY3Rpb24ocyl7cmV0dXJuIHMuZmVpZXJ0YWdEaWVuc3RlfHwwO30g fSwKICAgICAgICB7IGtleTona29tcGxldHRlV0UnLCAgICAgZ3J1cHBlOidXb2NoZW5lbmRlICYg RmVpZXJ0YWcnLCBsYWJlbDonS29tcGxldHRlIFdvY2hlbmVuZGVuJywgICBlaW5oZWl0OidXRScs ICAgICAgZm46ZnVuY3Rpb24ocyl7cmV0dXJuIHMua29tcGxldHRlV0V8fDA7fSB9LAogICAgICAg IHsga2V5Oid3b2NoZW5lbmRUYWdlJywgICBncnVwcGU6J1dvY2hlbmVuZGUgJiBGZWllcnRhZycs IGxhYmVsOidXRS1UYWdlIGltIERpZW5zdCcsICAgICAgIGVpbmhlaXQ6J1RhZ2UnLCAgICBmbjpm dW5jdGlvbihzKXtyZXR1cm4gcy53b2NoZW5lbmRUYWdlfHwwO30gfSwKICAgICAgICB7IGtleTon d2VUYWdlVmVyZnVlZ2JhcicsZ3J1cHBlOidXb2NoZW5lbmRlICYgRmVpZXJ0YWcnLCBsYWJlbDon RnJlaWUgV0UtVGFnZSAodmVyZsO8Z2JhciknLGVpbmhlaXQ6J1RhZ2UnLCAgIGZuOmZ1bmN0aW9u KHMpe3JldHVybiBzLndlVGFnZVZlcmZ1ZWdiYXJ8fDA7fSB9LAoKICAgICAgICB7IGtleTonZWlu Z2VzcHJ1bmdlbicsICAgZ3J1cHBlOidFaW5zcHJpbmdlbicsICAgICAgICAgIGxhYmVsOidFaW5z cHLDvG5nZSBnZXNhbXQnLCAgICAgICBlaW5oZWl0OidFaW5zcHLDvG5nZScsIGZuOmZ1bmN0aW9u KHMpe3JldHVybiBzLmVpbmdlc3BydW5nZW58fDA7fSB9LAogICAgICAgIHsga2V5OidlaW5nZXNw cnVuZ2VuX2YnLCBncnVwcGU6J0VpbnNwcmluZ2VuJywgICAgICAgICAgbGFiZWw6J0VpbnNwcsO8 bmdlIEZyw7xoJywgICAgICAgICBlaW5oZWl0OidFaW5zcHLDvG5nZScsIGZuOmZ1bmN0aW9uKHMp e3JldHVybiBzLmVpbmdlc3BydW5nZW5fZnx8MDt9IH0sCiAgICAgICAgeyBrZXk6J2Vpbmdlc3By dW5nZW5fcycsIGdydXBwZTonRWluc3ByaW5nZW4nLCAgICAgICAgICBsYWJlbDonRWluc3Byw7xu Z2UgU3DDpHQnLCAgICAgICAgIGVpbmhlaXQ6J0VpbnNwcsO8bmdlJywgZm46ZnVuY3Rpb24ocyl7 cmV0dXJuIHMuZWluZ2VzcHJ1bmdlbl9zfHwwO30gfSwKICAgICAgICB7IGtleTonZWluZ2VzcHJ1 bmdlbl9uJywgZ3J1cHBlOidFaW5zcHJpbmdlbicsICAgICAgICAgIGxhYmVsOidFaW5zcHLDvG5n ZSBOYWNodCcsICAgICAgICBlaW5oZWl0OidFaW5zcHLDvG5nZScsIGZuOmZ1bmN0aW9uKHMpe3Jl dHVybiBzLmVpbmdlc3BydW5nZW5fbnx8MDt9IH0sCgogICAgICAgIHsga2V5Oid1cmxhdWInLCAg ICAgICAgICBncnVwcGU6J0Fid2VzZW5oZWl0ICYgRnJlaScsICAgbGFiZWw6J1VybGF1YnN0YWdl JywgICAgICAgICAgICAgZWluaGVpdDonVGFnZScsIGZuOmZ1bmN0aW9uKHMpe3JldHVybiBzLnVy bGF1Ynx8MDt9IH0sCiAgICAgICAgeyBrZXk6J2t1cicsICAgICAgICAgICAgIGdydXBwZTonQWJ3 ZXNlbmhlaXQgJiBGcmVpJywgICBsYWJlbDonS3VyLVRhZ2UnLCAgICAgICAgICAgICAgICBlaW5o ZWl0OidUYWdlJywgZm46ZnVuY3Rpb24ocyl7cmV0dXJuIHMua3VyfHwwO30gfSwKICAgICAgICB7 IGtleTonc29uZGVydXJsYXViJywgICAgZ3J1cHBlOidBYndlc2VuaGVpdCAmIEZyZWknLCAgIGxh YmVsOidTb25kZXJ1cmxhdWInLCAgICAgICAgICAgIGVpbmhlaXQ6J1RhZ2UnLCBmbjpmdW5jdGlv bihzKXtyZXR1cm4gcy5zb25kZXJ1cmxhdWJ8fDA7fSB9LAogICAgICAgIHsga2V5OidwYXJhZ3Jh cGgyMScsICAgICBncnVwcGU6J0Fid2VzZW5oZWl0ICYgRnJlaScsICAgbGFiZWw6J8KnMjEgLyAy MWEtVGFnZScsICAgICAgICAgIGVpbmhlaXQ6J1RhZ2UnLCBmbjpmdW5jdGlvbihzKXtyZXR1cm4g cy5wYXJhZ3JhcGgyMXx8MDt9IH0sCiAgICAgICAgeyBrZXk6J2F6QXVzZ2xlaWNoUmVpbicsIGdy dXBwZTonQWJ3ZXNlbmhlaXQgJiBGcmVpJywgICBsYWJlbDonQVotQXVzZ2xlaWNoJywgICAgICAg ICAgICBlaW5oZWl0OidUYWdlJywgZm46ZnVuY3Rpb24ocyl7cmV0dXJuIHMuYXpBdXNnbGVpY2hS ZWlufHwwO30gfSwKICAgICAgICB7IGtleTond2FjaGZyZWknLCAgICAgICAgZ3J1cHBlOidBYndl c2VuaGVpdCAmIEZyZWknLCAgIGxhYmVsOidXYWNoZnJlaSAod2ZyKScsICAgICAgICAgIGVpbmhl aXQ6J1RhZ2UnLCBmbjpmdW5jdGlvbihzKXtyZXR1cm4gcy53YWNoZnJlaXx8MDt9IH0sCiAgICAg ICAgeyBrZXk6J2RpZW5zdGZyZWlUYWcnLCAgIGdydXBwZTonQWJ3ZXNlbmhlaXQgJiBGcmVpJywg ICBsYWJlbDonRGllbnN0ZnJlaSAoZGZyKScsICAgICAgICBlaW5oZWl0OidUYWdlJywgZm46ZnVu Y3Rpb24ocyl7cmV0dXJuIHMuZGllbnN0ZnJlaVRhZ3x8MDt9IH0sCgogICAgICAgIHsga2V5Oidm b3J0YmlsZHVuZycsICAgICBncnVwcGU6J0F1cy0gJiBGb3J0YmlsZHVuZycsICAgbGFiZWw6J0Zv cnRiaWxkdW5nIChBdUYvRVRNL1NlbS9UVC9UekYpJywgZWluaGVpdDonVGFnZScsIGZuOmZ1bmN0 aW9uKHMpe3JldHVybiBzLmZvcnRiaWxkdW5nfHwwO30gfSwKICAgICAgICB7IGtleTonZGllbnN0 dW50ZXJyaWNodCcsZ3J1cHBlOidBdXMtICYgRm9ydGJpbGR1bmcnLCAgIGxhYmVsOidEaWVuc3R1 bnRlcnJpY2h0IChEVSknLCAgIGVpbmhlaXQ6J1RhZ2UnLCBmbjpmdW5jdGlvbihzKXtyZXR1cm4g cy5kaWVuc3R1bnRlcnJpY2h0fHwwO30gfSwKICAgICAgICB7IGtleTonbGVocmdhbmdMYW5nJywg ICAgZ3J1cHBlOidBdXMtICYgRm9ydGJpbGR1bmcnLCAgIGxhYmVsOidMZWhyZ2FuZyAoTEcpJywg ICAgICAgICAgIGVpbmhlaXQ6J1RhZ2UnLCBmbjpmdW5jdGlvbihzKXtyZXR1cm4gcy5sZWhyZ2Fu Z0xhbmd8fDA7fSB9LAogICAgICAgIHsga2V5OidsZWhyZ2FuZycsICAgICAgICBncnVwcGU6J0F1 cy0gJiBGb3J0YmlsZHVuZycsICAgbGFiZWw6J0xlaHJnYW5nICsgRm9ydGJpbGR1bmcgZ2VzYW10 JywgZWluaGVpdDonVGFnZScsIGZuOmZ1bmN0aW9uKHMpe3JldHVybiBzLmxlaHJnYW5nfHwwO30g fQogICAgXTsKCiAgICAvLyBfYWxsZUthY2hlbG4oKSB3aXJkIGF1cyBzdGF0aXN0aWtfZW5naW5l LmpzIGltcG9ydGllcnQgKGFsaWFzIGFsbGVLYWNoZWxuKS4KICAgIGZ1bmN0aW9uIF9sYXlvdXRM aXN0ZSgpIHsKICAgICAgICB2YXIgYXJyID0gKFouYWRtaW4gJiYgWi5hZG1pbi5zdGF0aXN0aWtM YXlvdXQpIHx8IFtdOwogICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGFycikgPyBhcnIgOiBb XTsKICAgIH0KICAgIGZ1bmN0aW9uIG1ldHJpa0ZpbmRlbihrZXkpIHsKICAgICAgICBmb3IgKHZh ciBpID0gMDsgaSA8IEJBVUtBU1RFTl9NRVRSSUtFTi5sZW5ndGg7IGkrKykgewogICAgICAgICAg ICBpZiAoQkFVS0FTVEVOX01FVFJJS0VOW2ldLmtleSA9PT0ga2V5KSByZXR1cm4gQkFVS0FTVEVO X01FVFJJS0VOW2ldOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAgIGZ1 bmN0aW9uIF9kZWZhdWx0QnJlaXRlKGlkKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBC VUlMVElOX1RJTEVTLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChCVUlMVElOX1RJTEVT W2ldLmlkID09PSBpZCkgcmV0dXJuIEJVSUxUSU5fVElMRVNbaV0uZGVmYXVsdEJyZWl0ZTsKICAg ICAgICB9CiAgICAgICAgcmV0dXJuICdoYWxiJzsgLy8gQmF1a2FzdGVuLUthY2hlbG46IERlZmF1 bHQgaGFsYmUgQnJlaXRlCiAgICB9CiAgICBmdW5jdGlvbiBfYnJlaXRlQ2xhbXAoYnJlaXRlLCBt aW5CcmVpdGUpIHsKICAgICAgICBpZiAoIUJSRUlURV9TUEFOW2JyZWl0ZV0pIGJyZWl0ZSA9ICd2 b2xsJzsKICAgICAgICBpZiAoIUJSRUlURV9TUEFOW21pbkJyZWl0ZV0pIG1pbkJyZWl0ZSA9ICdk cml0dGVsJzsKICAgICAgICByZXR1cm4gKEJSRUlURV9SQU5HW2JyZWl0ZV0gPCBCUkVJVEVfUkFO R1ttaW5CcmVpdGVdKSA/IG1pbkJyZWl0ZSA6IGJyZWl0ZTsKICAgIH0KCiAgICAvLyAiV2VyIi1G aWx0ZXIgZWluZXIgS2FjaGVsIGFud2VuZGVuLgogICAgZnVuY3Rpb24gX2thY2hlbEZpbHRlcm4o c3RhdHMsIHdlcikgewogICAgICAgIHdlciA9IHdlciB8fCB7IHR5cDogJ2FsbGUnIH07CiAgICAg ICAgaWYgKHdlci50eXAgPT09ICdncnVwcGUnKSAgIHJldHVybiBzdGF0cy5maWx0ZXIoZnVuY3Rp b24ocyl7IHJldHVybiBzLmdydXBwZSA9PT0gd2VyLndlcnQ7IH0pOwogICAgICAgIGlmICh3ZXIu dHlwID09PSAnZnVua3Rpb24nKSByZXR1cm4gc3RhdHMuZmlsdGVyKGZ1bmN0aW9uKHMpeyByZXR1 cm4gU3RyaW5nKHMuZnVua3Rpb24gfHwgJycpID09PSBTdHJpbmcod2VyLndlcnQpOyB9KTsKICAg ICAgICByZXR1cm4gc3RhdHM7CiAgICB9CiAgICBmdW5jdGlvbiBfd2VyTGFiZWwod2VyKSB7CiAg ICAgICAgd2VyID0gd2VyIHx8IHsgdHlwOiAnYWxsZScgfTsKICAgICAgICBpZiAod2VyLnR5cCA9 PT0gJ2dydXBwZScpIHsKICAgICAgICAgICAgdmFyIGcgPSAoKFouYWRtaW4uZ3J1cHBlbiB8fCBb XSkuZmlsdGVyKGZ1bmN0aW9uKHgpeyByZXR1cm4geC5uYW1lID09PSB3ZXIud2VydDsgfSlbMF0p OwogICAgICAgICAgICByZXR1cm4gJ0dydXBwZSAnICsgKGcgPyAoZy5iZXplaWNobnVuZyB8fCBn Lm5hbWUpIDogd2VyLndlcnQpOwogICAgICAgIH0KICAgICAgICBpZiAod2VyLnR5cCA9PT0gJ2Z1 bmt0aW9uJykgcmV0dXJuICdGdW5rdGlvbiAnICsgd2VyLndlcnQ7CiAgICAgICAgcmV0dXJuICdB bGxlJzsKICAgIH0KCiAgICAvLyBIb3Jpem9udGFsZXMgQmFsa2VuLVJhbmtpbmcgZWluZXIgQmF1 a2FzdGVuLUthY2hlbCByZW5kZXJuIChyZWluZQogICAgLy8gSFRNTC1FcnpldWd1bmcsIHdpZWRl cnZlcndlbmRldCBkaWUgYmVzdGVoZW5kZW4gLnN0YXRzLWJhbGtlbi0qLVN0aWxlKS4KICAgIGZ1 bmN0aW9uIF9rYWNoZWxFcmdlYm5pc0h0bWwoa2FjaGVsLCBzdGF0cykgewogICAgICAgIHZhciBt ZXRyaWsgPSBtZXRyaWtGaW5kZW4oa2FjaGVsLm1ldHJpayk7CiAgICAgICAgaWYgKCFtZXRyaWsp IHsKICAgICAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJhZG1pbi1lbXB0eSI+PGRpdiBjbGFz cz0iYWRtaW4tZW1wdHktdGV4dCI+VW5iZWthbm50ZSBNZXRyaWsg4oCeJyArIGVzY2FwZUhUTUwo a2FjaGVsLm1ldHJpayB8fCAnJykgKyAnIi48L2Rpdj48L2Rpdj4nOwogICAgICAgIH0KICAgICAg ICBpZiAoIXN0YXRzIHx8ICFzdGF0cy5sZW5ndGgpIHsKICAgICAgICAgICAgcmV0dXJuICc8ZGl2 IGNsYXNzPSJhZG1pbi1lbXB0eSI+PGRpdiBjbGFzcz0iYWRtaW4tZW1wdHktdGV4dCI+Tm9jaCBr ZWluZSBTdGF0aXN0aWstRGF0ZW4gZ2VsYWRlbi48L2Rpdj48L2Rpdj4nOwogICAgICAgIH0KICAg ICAgICB2YXIgcm93cyA9IF9rYWNoZWxGaWx0ZXJuKHN0YXRzLCBrYWNoZWwud2VyKS5tYXAoZnVu Y3Rpb24ocyl7IHJldHVybiB7IHM6IHMsIHdlcnQ6IG1ldHJpay5mbihzKSB8fCAwIH07IH0pOwog ICAgICAgIHZhciBzb3J0ID0ga2FjaGVsLnNvcnQgfHwgJ2Rlc2MnOwogICAgICAgIHJvd3Muc29y dChmdW5jdGlvbihhLCBiKXsKICAgICAgICAgICAgaWYgKHNvcnQgPT09ICduYW1lJykgcmV0dXJu IF9zdGF0QW56ZWlnZU5hbWUoYS5zKS5sb2NhbGVDb21wYXJlKF9zdGF0QW56ZWlnZU5hbWUoYi5z KSwgJ2RlJyk7CiAgICAgICAgICAgIGlmIChhLndlcnQgIT09IGIud2VydCkgcmV0dXJuIHNvcnQg PT09ICdhc2MnID8gYS53ZXJ0IC0gYi53ZXJ0IDogYi53ZXJ0IC0gYS53ZXJ0OwogICAgICAgICAg ICByZXR1cm4gX3N0YXRBbnplaWdlTmFtZShhLnMpLmxvY2FsZUNvbXBhcmUoX3N0YXRBbnplaWdl TmFtZShiLnMpLCAnZGUnKTsKICAgICAgICB9KTsKICAgICAgICB2YXIgdG9wTiA9IGthY2hlbC50 b3BOIHx8IDA7CiAgICAgICAgaWYgKHRvcE4gPiAwKSByb3dzID0gcm93cy5zbGljZSgwLCB0b3BO KTsKICAgICAgICBpZiAoIXJvd3MubGVuZ3RoKSB7CiAgICAgICAgICAgIHJldHVybiAnPGRpdiBj bGFzcz0iYWRtaW4tZW1wdHkiPjxkaXYgY2xhc3M9ImFkbWluLWVtcHR5LXRleHQiPktlaW5lIFBl cnNvbmVuIGltIGdld8OkaGx0ZW4gRmlsdGVyLjwvZGl2PjwvZGl2Pic7CiAgICAgICAgfQogICAg ICAgIHZhciBtYXhWID0gTWF0aC5tYXguYXBwbHkobnVsbCwgcm93cy5tYXAoZnVuY3Rpb24ocil7 IHJldHVybiByLndlcnQ7IH0pKSB8fCAxOwogICAgICAgIHZhciBrb3BmID0gJzxkaXYgY2xhc3M9 InN0YXRzLWJhbGtlbi1rb3BmIj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9InN0YXRzLWJh bGtlbi1uYW1lIj48L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9InN0YXRzLWJhbGtl bi1iYXItd3JhcCI+PHNwYW4gY2xhc3M9InN0YXRzLWJhbGtlbi1rb3BmLWxhYmVsIj4nICsgZXNj YXBlSFRNTChtZXRyaWsubGFiZWwpICsgJzwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAgICAgJzxk aXYgY2xhc3M9InN0YXRzLWJhbGtlbi10b3RhbCI+PHNwYW4gY2xhc3M9InN0YXRzLWJhbGtlbi1r b3BmLWxhYmVsIj4nICsgZXNjYXBlSFRNTChtZXRyaWsuZWluaGVpdCB8fCAnJykgKyAoc29ydCA9 PT0gJ2FzYycgPyAnIOKGkScgOiAnIOKGkycpICsgJzwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAg ICAgJzwvZGl2Pic7CiAgICAgICAgdmFyIHJhbmcgPSAwOwogICAgICAgIHZhciB6ZWlsZW4gPSBy b3dzLm1hcChmdW5jdGlvbihyKXsKICAgICAgICAgICAgcmFuZysrOwogICAgICAgICAgICB2YXIg YnJlaXRlID0gKHIud2VydCAvIG1heFYpICogMTAwOwogICAgICAgICAgICByZXR1cm4gJzxkaXYg Y2xhc3M9InN0YXRzLWJhbGtlbi16ZWlsZSI+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFz cz0ic3RhdHMtYmFsa2VuLW5hbWUiIHRpdGxlPSInICsgZXNjYXBlQXR0cihfc3RhdEFuemVpZ2VO YW1lKHIucykpICsgJyI+PHNwYW4gY2xhc3M9InN0YXRzLWJrLXJhbmciPicgKyByYW5nICsgJy48 L3NwYW4+ICcgKyBlc2NhcGVIVE1MKF9zdGF0QW56ZWlnZU5hbWUoci5zKSkgKyAnPC9kaXY+JyAr CiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic3RhdHMtYmFsa2VuLWJhci13cmFwIj48ZGl2 IGNsYXNzPSJzdGF0cy1iYWxrZW4tc2VnbWVudCIgc3R5bGU9IndpZHRoOicgKyBicmVpdGUgKyAn JTtiYWNrZ3JvdW5kOnZhcigtLWJnLXByaW1hcnkpIiB0aXRsZT0iJyArIGVzY2FwZUF0dHIobWV0 cmlrLmxhYmVsICsgJzogJyArIHIud2VydCkgKyAnIj4nICsgKHIud2VydCA+IDAgPyByLndlcnQg OiAnJykgKyAnPC9kaXY+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic3Rh dHMtYmFsa2VuLXRvdGFsIj4nICsgci53ZXJ0ICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAg JzwvZGl2Pic7CiAgICAgICAgfSkuam9pbignJyk7CiAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNz PSJzdGF0cy1iYWxrZW4tY29udGFpbmVyIj4nICsga29wZiArIHplaWxlbiArICc8L2Rpdj4nOwog ICAgfQoKICAgIC8vIEJhdWthc3Rlbi1QYW5lbHMgaW0gI3N0YXRzLWdyaWQgYW5sZWdlbi9ha3R1 YWxpc2llcmVuL2VudGZlcm5lbi4KICAgIGZ1bmN0aW9uIGN1c3RvbUthY2hlbG5SZW5kZXJuKCkg ewogICAgICAgIHZhciBncmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLWdyaWQn KTsKICAgICAgICBpZiAoIWdyaWQpIHJldHVybjsKICAgICAgICB2YXIgc3RhdHMgPSBaLnN0YXRp c3RpayB8fCBbXTsKICAgICAgICB2YXIga2FjaGVsbiA9IF9hbGxlS2FjaGVsbigpOwogICAgICAg IHZhciBnZXdvbGx0ID0ge307CiAgICAgICAga2FjaGVsbi5mb3JFYWNoKGZ1bmN0aW9uKGspeyBp ZiAoayAmJiBrLmlkKSBnZXdvbGx0W2suaWRdID0gdHJ1ZTsgfSk7CiAgICAgICAgLy8gVmVyd2Fp c3RlIEN1c3RvbS1QYW5lbHMgZW50ZmVybmVuIChLYWNoZWwgZ2Vsb2VzY2h0KS4KICAgICAgICBB cnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChncmlkLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zdGF0cy1w YW5lbFtkYXRhLWthY2hlbD0iMSJdJykpLmZvckVhY2goZnVuY3Rpb24ocCl7CiAgICAgICAgICAg IGlmICghZ2V3b2xsdFtwLmdldEF0dHJpYnV0ZSgnZGF0YS10aWxlLWlkJyldKSBwLnJlbW92ZSgp OwogICAgICAgIH0pOwogICAgICAgIGthY2hlbG4uZm9yRWFjaChmdW5jdGlvbihrKXsKICAgICAg ICAgICAgaWYgKCFrIHx8ICFrLmlkKSByZXR1cm47CiAgICAgICAgICAgIHZhciBwYW5lbCA9IG51 bGw7CiAgICAgICAgICAgIHZhciB2b3JoYW5kZW5lID0gZ3JpZC5xdWVyeVNlbGVjdG9yQWxsKCcu c3RhdHMtcGFuZWxbZGF0YS1rYWNoZWw9IjEiXScpOwogICAgICAgICAgICBmb3IgKHZhciBpID0g MDsgaSA8IHZvcmhhbmRlbmUubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmICh2b3Jo YW5kZW5lW2ldLmdldEF0dHJpYnV0ZSgnZGF0YS10aWxlLWlkJykgPT09IGsuaWQpIHsgcGFuZWwg PSB2b3JoYW5kZW5lW2ldOyBicmVhazsgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgh cGFuZWwpIHsKICAgICAgICAgICAgICAgIHBhbmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn ZGl2Jyk7CiAgICAgICAgICAgICAgICBwYW5lbC5jbGFzc05hbWUgPSAnc3RhdHMtcGFuZWwnOwog ICAgICAgICAgICAgICAgcGFuZWwuc2V0QXR0cmlidXRlKCdkYXRhLXRpbGUtaWQnLCBrLmlkKTsK ICAgICAgICAgICAgICAgIHBhbmVsLnNldEF0dHJpYnV0ZSgnZGF0YS1rYWNoZWwnLCAnMScpOwog ICAgICAgICAgICAgICAgcGFuZWwuc2V0QXR0cmlidXRlKCdkYXRhLW1pbi1icmVpdGUnLCAnZHJp dHRlbCcpOwogICAgICAgICAgICAgICAgZ3JpZC5hcHBlbmRDaGlsZChwYW5lbCk7CiAgICAgICAg ICAgIH0KICAgICAgICAgICAgdmFyIGlzdFYyID0gKGsuZGlhZ3JhbW0gIT0gbnVsbCk7CiAgICAg ICAgICAgIHZhciB1bnRlcnplaWxlID0gaXN0VjIgPyAnJyA6IF93ZXJMYWJlbChrLndlcik7CiAg ICAgICAgICAgIHBhbmVsLmlubmVySFRNTCA9CiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0i c3RhdHMtcGFuZWwta29wZiI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxoMz48c3BhbiBjbGFz cz0ic3RhdHMtYmstYmFkZ2UiIHRpdGxlPSJTZWxic3RnZWJhdXRlIFN0YXRpc3Rpay1LYWNoZWwi PkJhdWthc3Rlbjwvc3Bhbj4gJyArIGVzY2FwZUhUTUwoay50aXRlbCB8fCAnRWlnZW5lIFN0YXRp c3RpaycpICsgJzwvaDM+JyArCiAgICAgICAgICAgICAgICAgICAgKHVudGVyemVpbGUgPyAnPHNw YW4gY2xhc3M9InN0YXRzLWJrLXdlciI+JyArIGVzY2FwZUhUTUwodW50ZXJ6ZWlsZSkgKyAnPC9z cGFuPicgOiAnJykgKwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAg JzxkaXYgY2xhc3M9InN0YXRzLWNoYXJ0LWFyZWEiPicgKyAoaXN0VjIgPyBfa2FjaGVsVjJIdG1s KGspIDogX2thY2hlbEVyZ2VibmlzSHRtbChrLCBzdGF0cykpICsgJzwvZGl2Pic7CiAgICAgICAg fSk7CiAgICB9CgogICAgLy8gU3BlYy12Mi1LYWNoZWwgKG1laHJkaW1lbnNpb25hbCkgdWViZXIg RW5naW5lICsgbmF0aXZlIFNWRy1DaGFydHMgcmVuZGVybi4KICAgIGZ1bmN0aW9uIF9rYWNoZWxW Mkh0bWwoaykgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHZhciBlcmcgPSBhdXN3ZXJ0ZW4o ayk7CiAgICAgICAgICAgIGlmIChfc3RhdEFub25Ba3RpdikgZXJnID0gX2Fub25FcmdlYm5pcyhl cmcpOwogICAgICAgICAgICByZXR1cm4gZGlhZ3JhbW1SZW5kZXJuKGsuZGlhZ3JhbW0sIGVyZywg ayk7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICB0cnkgeyBjb25zb2xlLmVycm9y KCdbc3RhdGlzdGlrLWthY2hlbF0nLCBlKTsgfSBjYXRjaCAoXykge30KICAgICAgICAgICAgcmV0 dXJuICc8ZGl2IGNsYXNzPSJhZG1pbi1lbXB0eSI+PGRpdiBjbGFzcz0iYWRtaW4tZW1wdHktdGV4 dCI+RmVobGVyIGJlaW0gQmF1ZW46ICcgKyBlc2NhcGVIVE1MKGUubWVzc2FnZSB8fCBTdHJpbmco ZSkpICsgJzwvZGl2PjwvZGl2Pic7CiAgICAgICAgfQogICAgfQogICAgLy8gUGVyc29uZW4tTGFi ZWxzIGltIEVyZ2VibmlzIGFub255bWlzaWVyZW4gKHN0YXRpc3Rpa0Fub255bSkuIEdyZWlmdCBu dXIKICAgIC8vIGJlaSBQZXJzb25lbi1EaW1lbnNpb24vU2NhdHRlciDigJQgYW5kZXJlIExhYmVs cyBzaW5kIG5pY2h0IGluIF9zdGF0QW5vbk1hcC4KICAgIGZ1bmN0aW9uIF9hbm9uRXJnZWJuaXMo ZXJnKSB7CiAgICAgICAgZnVuY3Rpb24gbShsKSB7IHJldHVybiBfc3RhdEFub25NYXBbbF0gfHwg bDsgfQogICAgICAgIGlmIChlcmcua2F0ZWdvcmllbikgZXJnLmthdGVnb3JpZW4gPSBlcmcua2F0 ZWdvcmllbi5tYXAoZnVuY3Rpb24oYyl7IHJldHVybiB7IGtleTogYy5rZXksIGxhYmVsOiBtKGMu bGFiZWwpIH07IH0pOwogICAgICAgIGlmIChlcmcuc2VyaWVuKSAgICAgZXJnLnNlcmllbiAgICAg PSBlcmcuc2VyaWVuLm1hcChmdW5jdGlvbihzKXsgcmV0dXJuIHsgbmFtZTogbShzLm5hbWUpLCB3 ZXJ0ZTogcy53ZXJ0ZSB9OyB9KTsKICAgICAgICBpZiAoZXJnLnB1bmt0ZSkgICAgIGVyZy5wdW5r dGUgICAgID0gZXJnLnB1bmt0ZS5tYXAoZnVuY3Rpb24ocCl7IHJldHVybiB7IGxhYmVsOiBtKHAu bGFiZWwpLCB4OiBwLngsIHk6IHAueSB9OyB9KTsKICAgICAgICByZXR1cm4gZXJnOwogICAgfQoK ICAgIC8vIFJlaWhlbmZvbGdlICsgQnJlaXRlICsgU2ljaHRiYXJrZWl0IGFsbGVyIFRpbGVzIGF1 cyBzdGF0aXN0aWtMYXlvdXQKICAgIC8vIGFud2VuZGVuLiBSZWNodGUtYmFzaWVydGVzIFZlcnN0 ZWNrZW4gKGlubGluZSBkaXNwbGF5Om5vbmUsIGluCiAgICAvLyBfc3RhdGlzdGlrUmVuZGVybklu dGVybiBnZXNldHp0KSBibGVpYnQgdW5hbmdldGFzdGV0IOKAlCBkYXMgU1UtTGF5b3V0CiAgICAv LyBkYXJmIGVpbiByZWNodGUtZ2VzcGVycnRlcyBQYW5lbCBOSUNIVCBzaWNodGJhciBzY2hhbHRl bjsgZGVzaGFsYiBsYWV1ZnQKICAgIC8vIGRpZSBMYXlvdXQtU2ljaHRiYXJrZWl0IHVlYmVyIGRp ZSBLbGFzc2UgLnRpbGUtdmVyc3RlY2t0LgogICAgZnVuY3Rpb24gbGF5b3V0QW53ZW5kZW4oKSB7 CiAgICAgICAgdmFyIGdyaWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdHMtZ3JpZCcp OwogICAgICAgIGlmICghZ3JpZCkgcmV0dXJuOwogICAgICAgIHZhciBsYXlvdXQgPSBfbGF5b3V0 TGlzdGUoKTsKICAgICAgICB2YXIgYnJlaXRlVm9uID0ge30sIHNpY2h0YmFyVm9uID0ge307CiAg ICAgICAgbGF5b3V0LmZvckVhY2goZnVuY3Rpb24oZSl7CiAgICAgICAgICAgIGlmICghZSB8fCAh ZS5pZCkgcmV0dXJuOwogICAgICAgICAgICBicmVpdGVWb25bZS5pZF0gICA9IGUuYnJlaXRlOwog ICAgICAgICAgICBzaWNodGJhclZvbltlLmlkXSA9IChlLnNpY2h0YmFyICE9PSBmYWxzZSk7CiAg ICAgICAgfSk7CiAgICAgICAgdmFyIGFsbGUgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChn cmlkLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zdGF0cy1wYW5lbCcpKTsKICAgICAgICB2YXIgYnlJZCA9 IHt9OwogICAgICAgIGFsbGUuZm9yRWFjaChmdW5jdGlvbihwKXsgYnlJZFtwLmdldEF0dHJpYnV0 ZSgnZGF0YS10aWxlLWlkJyldID0gcDsgfSk7CiAgICAgICAgLy8gMSkgR2VsaXN0ZXRlIFBhbmVs cyBpbiBMYXlvdXQtUmVpaGVuZm9sZ2UgYW5zIEVuZGUgc2NoaWViZW4uCiAgICAgICAgdmFyIGdl c2V0enQgPSB7fTsKICAgICAgICBsYXlvdXQuZm9yRWFjaChmdW5jdGlvbihlKXsKICAgICAgICAg ICAgdmFyIHAgPSBieUlkW2UuaWRdOwogICAgICAgICAgICBpZiAocCkgeyBncmlkLmFwcGVuZENo aWxkKHApOyBnZXNldHp0W2UuaWRdID0gdHJ1ZTsgfQogICAgICAgIH0pOwogICAgICAgIC8vIDIp IE5pY2h0LWdlbGlzdGV0ZSAobmV1ZSBLYWNoZWwgLyBFcnN0c3RhcnQpIGluIERPTS1SZWloZW5m b2xnZSBkYWhpbnRlci4KICAgICAgICBhbGxlLmZvckVhY2goZnVuY3Rpb24ocCl7CiAgICAgICAg ICAgIHZhciBpZCA9IHAuZ2V0QXR0cmlidXRlKCdkYXRhLXRpbGUtaWQnKTsKICAgICAgICAgICAg aWYgKCFnZXNldHp0W2lkXSkgZ3JpZC5hcHBlbmRDaGlsZChwKTsKICAgICAgICB9KTsKICAgICAg ICAvLyAzKSBCcmVpdGUgKyBTaWNodGJhcmtlaXQgc2V0emVuLgogICAgICAgIGFsbGUuZm9yRWFj aChmdW5jdGlvbihwKXsKICAgICAgICAgICAgdmFyIGlkID0gcC5nZXRBdHRyaWJ1dGUoJ2RhdGEt dGlsZS1pZCcpOwogICAgICAgICAgICB2YXIgbWluQiA9IHAuZ2V0QXR0cmlidXRlKCdkYXRhLW1p bi1icmVpdGUnKSB8fCAnZHJpdHRlbCc7CiAgICAgICAgICAgIHZhciBicmVpdGUgPSBfYnJlaXRl Q2xhbXAoYnJlaXRlVm9uW2lkXSB8fCBfZGVmYXVsdEJyZWl0ZShpZCksIG1pbkIpOwogICAgICAg ICAgICBwLnN0eWxlLmdyaWRDb2x1bW4gPSAnc3BhbiAnICsgQlJFSVRFX1NQQU5bYnJlaXRlXTsK ICAgICAgICAgICAgcC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYnJlaXRlJywgYnJlaXRlKTsKICAgICAg ICAgICAgdmFyIHNpY2h0YmFyID0gKGlkIGluIHNpY2h0YmFyVm9uKSA/IHNpY2h0YmFyVm9uW2lk XSA6IHRydWU7CiAgICAgICAgICAgIGlmIChzaWNodGJhcikgcC5jbGFzc0xpc3QucmVtb3ZlKCd0 aWxlLXZlcnN0ZWNrdCcpOwogICAgICAgICAgICBlbHNlIHAuY2xhc3NMaXN0LmFkZCgndGlsZS12 ZXJzdGVja3QnKTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvLyBUaWxlLVVlYmVyc2ljaHQgZnVl ciBkYXMgQWRtaW4tTGF5b3V0LVJhc3RlciAoZmVzdGUgUGFuZWxzICsgQmF1a2FzdGVuKSwKICAg IC8vIGpld2VpbHMge2lkLCB0aXRlbCwgbWluQnJlaXRlLCBpc3RLYWNoZWx9LiBhZG1pbl9zdGF0 aXN0aWsuanMgbWlzY2h0IGRhcwogICAgLy8gbWl0IFouYWRtaW4uc3RhdGlzdGlrTGF5b3V0IChS ZWloZW5mb2xnZS9CcmVpdGUvU2ljaHRiYXJrZWl0KS4KICAgIC8vIHN0YXRpc3Rpa1RpbGVzQWxs ZSgpIHdpcmQgYXVzIHN0YXRpc3Rpa19lbmdpbmUuanMgaW1wb3J0aWVydC4KCiAgICBmdW5jdGlv biBzdGF0aXN0aWtSZW5kZXJuKCkgewogICAgICAgIGlmICghWi5zdGF0aXN0aWspIHJldHVybjsK ICAgICAgICB0cnkgewogICAgICAgICAgICBfc3RhdGlzdGlrUmVuZGVybkludGVybigpOwogICAg ICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgcmVuZGVyRXJyb3JCb3goZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2Fuc2ljaHQtc3RhdGlzdGlrJyksIGUsICdTdGF0aXN0aWsnKTsKICAgICAg ICB9CiAgICB9CiAgICBmdW5jdGlvbiBfc3RhdGlzdGlrUmVuZGVybkludGVybigpIHsKICAgICAg ICAvLyBDYWNoZSBmdWVyIF90ZWFtRGF0ZW4oKSBpbnZhbGlkaWVyZW4g4oCUIEZpbHRlci9TdGFi LVdlY2hzZWwKICAgICAgICAvLyBrb2VubmVuIGRpZSBEYXRlbiBiZWVpbmZsdXNzZW4uIElubmVy aGFsYiBkZXMgUmVuZGVyLUxhdWZzIHdpcmQKICAgICAgICAvLyBkYW5uIG51ciBlaW5tYWwgYmVy ZWNobmV0IHVuZCBhbiBtaWtyb3RlYW0gKyBwcm9zYSBhdXNnZWdlYmVuLgogICAgICAgIF9zdGF0 VGVhbURhdGVuQ2FjaGUgPSBudWxsOwogICAgICAgIHZhciBzdGF0cyA9IHN0YXRGaWx0ZXJuKFou c3RhdGlzdGlrKTsKCiAgICAgICAgLy8gQW5vbnltaXNpZXJ1bmdzLU1hcHBpbmcgYXVmYmF1ZW4s IGZhbGxzIFRvZ2dsZSBha3Rpdi4gSW5kZXggYmFzaWVydAogICAgICAgIC8vIGF1ZiBnZWZpbHRl cnRlciBSZWloZW5mb2xnZSwgZGFtaXQgUGVyc29uLU51bW1lcm4gYXVjaCBiZWkKICAgICAgICAv LyBHcnVwcGVuZmlsdGVyIGtvbnNpc3RlbnQgZHVyY2hnZXphZWhsdCBzaW5kLgogICAgICAgIF9z dGF0QW5vbkFrdGl2ID0gZmVhdHVyZUlzdEFrdGl2KCdzdGF0aXN0aWtBbm9ueW0nKTsKICAgICAg ICBfc3RhdEFub25NYXAgPSB7fTsKICAgICAgICBpZiAoX3N0YXRBbm9uQWt0aXYpIHsKICAgICAg ICAgICAgc3RhdHMuZm9yRWFjaChmdW5jdGlvbihzLCBpZHgpIHsgX3N0YXRBbm9uTWFwW3MubmFt ZV0gPSAnUGVyc29uICcgKyAoaWR4ICsgMSk7IH0pOwogICAgICAgIH0KCiAgICAgICAgLy8gS1BJ LVN1bW1lbiBlaW5tYWwgdm9yYWIg4oCUIHdpcmQgZ2xlaWNoIHZvbSBLUEktU2Nocml0dCBnZW51 dHp0LgogICAgICAgIHZhciBzdW1GID0gMCwgc3VtUyA9IDAsIHN1bU4gPSAwLCBzdW1Tb24gPSAw OwogICAgICAgIHZhciBzdW1EZ2wgPSAwLCBzdW1XZGYgPSAwLCBzdW1GYnAgPSAwOwogICAgICAg IHZhciBzdW1VcmwgPSAwLCBzdW1XRSA9IDAsIHN1bUdlcyA9IDA7CiAgICAgICAgdmFyIHN1bUxn ID0gMCwgc3VtQXphID0gMDsKICAgICAgICBzdGF0cy5mb3JFYWNoKGZ1bmN0aW9uKHMpIHsKICAg ICAgICAgICAgc3VtRiArPSBzLmZydWVoOyBzdW1TICs9IHMuc3BhZXQ7IHN1bU4gKz0gcy5uYWNo dDsKICAgICAgICAgICAgc3VtU29uICs9IChzLnNvbmRlcmRpZW5zdCB8fCAwKTsKICAgICAgICAg ICAgc3VtRGdsICs9IChzLmRnbCB8fCAwKTsgc3VtV2RmICs9IChzLndkZiB8fCAwKTsgc3VtRmJw ICs9IChzLmZicCB8fCAwKTsKICAgICAgICAgICAgc3VtVXJsICs9IHMudXJsYXViOwogICAgICAg ICAgICBzdW1XRSArPSBzLndvY2hlbmVuZFRhZ2U7IHN1bUdlcyArPSBzLmdlc2FtdDsKICAgICAg ICAgICAgc3VtTGcgKz0gcy5sZWhyZ2FuZzsgc3VtQXphICs9IChzLmF6QXVzZ2xlaWNoIHx8IDAp OwogICAgICAgIH0pOwoKICAgICAgICAvLyBTaWNodGJhcmtlaXQvUmVjaHRlIGplIFBhbmVsIGlt IFZvcmF1cyBiZXN0aW1tZW4uCiAgICAgICAgdmFyIGtwaUVsICAgICAgID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ3N0YXRzLWtwaXMnKTsKICAgICAgICB2YXIgYmFsa2VuRWwgICAgPSBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdHMtY2hhcnQtYmFsa2VuJyk7CiAgICAgICAgdmFyIGZh aXJuZXNzRWwgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLWZhaXJuZXNzJyk7CiAg ICAgICAgdmFyIHRlYW1FbCAgICAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLXRl YW0taGVhdG1hcCcpOwogICAgICAgIHZhciBuZWJlbkVsICAgICA9IGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdzdGF0cy10ZWFtLWhlYXRtYXAtbmViZW4nKTsKICAgICAgICB2YXIgdGVhbUJhbGtl bkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLXRlYW0tYmFsa2VuJyk7CiAgICAg ICAgdmFyIHByb3NhRWwgICAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLXByb3Nh Jyk7CiAgICAgICAgdmFyIGRldGFpbEVsICAgID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnN0 YXRzLWRldGFpbHMnKTsKCiAgICAgICAgdmFyIGtwaU9uICAgICAgICA9ICEha3BpRWwgICAgICAm JiBkYXJmU3RhdGlzdGlrU3ViKCdzdGF0S3BpcycpOwogICAgICAgIHZhciB2ZXJ0ZWlsdW5nT24g PSAhIWJhbGtlbkVsICAgJiYgZGFyZlN0YXRpc3Rpa1N1Yignc3RhdFNjaGljaHR2ZXJ0ZWlsdW5n Jyk7CiAgICAgICAgdmFyIGZhaXJuZXNzT24gICA9ICEhZmFpcm5lc3NFbCAmJiBmZWF0dXJlSXN0 QWt0aXYoJ2ZhaXJuZXNzQW56ZWlnZScpICYmIGRhcmZTdGF0aXN0aWtTdWIoJ3N0YXRGYWlybmVz cycpOwogICAgICAgIHZhciB0ZWFtT24gICAgICAgPSAhIXRlYW1FbCAgICAgJiYgZGFyZlN0YXRp c3Rpa1N1Yignc3RhdEFid2VzZW5oZWl0Jyk7CiAgICAgICAgdmFyIGRldGFpbE9uICAgICA9ICEh ZGV0YWlsRWwgICAmJiBmZWF0dXJlSXN0QWt0aXYoJ2RldGFpbFRhYmVsbGUnKSAgICYmIGRhcmZT dGF0aXN0aWtTdWIoJ3N0YXREZXRhaWxUYWJlbGxlJyk7CgogICAgICAgIC8vIFBhbmVsLVNpY2h0 YmFya2VpdCBzb2ZvcnQgc2V0emVuIChkaXNwbGF5Om5vbmUgZnVlciBnZXNwZXJydGUgUGFuZWxz KS4KICAgICAgICBmdW5jdGlvbiBzZXRQYW5lbERpc3BsYXkoZWwsIG9uKSB7CiAgICAgICAgICAg IGlmICghZWwpIHJldHVybjsKICAgICAgICAgICAgdmFyIHBhbmVsID0gZWwuY2xvc2VzdCA/IGVs LmNsb3Nlc3QoJy5zdGF0cy1wYW5lbCcpIDogbnVsbDsKICAgICAgICAgICAgaWYgKHBhbmVsKSBw YW5lbC5zdHlsZS5kaXNwbGF5ID0gb24gPyAnJyA6ICdub25lJzsKICAgICAgICB9CiAgICAgICAg aWYgKGtwaUVsKSBrcGlFbC5zdHlsZS5kaXNwbGF5ID0ga3BpT24gPyAnJyA6ICdub25lJzsKICAg ICAgICBzZXRQYW5lbERpc3BsYXkoYmFsa2VuRWwsICAgIHZlcnRlaWx1bmdPbik7CiAgICAgICAg c2V0UGFuZWxEaXNwbGF5KGZhaXJuZXNzRWwsICBmYWlybmVzc09uKTsKICAgICAgICBzZXRQYW5l bERpc3BsYXkodGVhbUVsLCAgICAgIHRlYW1Pbik7CiAgICAgICAgc2V0UGFuZWxEaXNwbGF5KG5l YmVuRWwsICAgICB0ZWFtT24pOwogICAgICAgIHNldFBhbmVsRGlzcGxheSh0ZWFtQmFsa2VuRWws IHRlYW1Pbik7CiAgICAgICAgaWYgKGRldGFpbEVsKSBkZXRhaWxFbC5zdHlsZS5kaXNwbGF5ID0g ZGV0YWlsT24gPyAnJyA6ICdub25lJzsKCiAgICAgICAgLy8gPT09PT0gU2VxdWVudGllbGxlcyBS ZW5kZXJuIG1pdCBTa2VsZXRvbi1IaW50ICsgR2xvdyA9PT09PQogICAgICAgIC8vCiAgICAgICAg Ly8gSGludGVyZ3J1bmQ6IGRhcyBTdGF0aXN0aWstTW9kdWwgbGFldWZ0IGF1ZiBzY2h3YWNoZW4g QmVob2VyZGVuLQogICAgICAgIC8vIFJlY2huZXJuIChpNS04NTAwLCA4R0IgUkFNLCBwYXJhbGxl bCBPZmZpY2UpLiBXdWVyZGVuIGFsbGUgUGFuZWxzCiAgICAgICAgLy8gc3luY2hyb24gaW4gZWlu ZW0gRnJhbWUgcmVuZGVybiwgYmxvY2tpZXJ0IGRpZSBVSSBiaXMgenUgMS0yIHMuCiAgICAgICAg Ly8gU3RhdHRkZXNzZW4gZ2ViZW4gd2lyIG5hY2ggamVkZW0gUGFuZWwgZGVuIE1haW4tVGhyZWFk IGZyZWkKICAgICAgICAvLyAoc2V0VGltZW91dCAzMCBtcyksIGRhbWl0IEJyb3dzZXIgKyBhbmRl cmUgQXBwcyBhdG1lbiBrb2VubmVuLgogICAgICAgIC8vIERlciBVc2VyIHNpZWh0IHNvZm9ydCBl aW5lIFNrZWxldG9uLU5hY2hyaWNodCB1bmQgZGFubiBwcm8gUGFuZWwKICAgICAgICAvLyBlaW5l biBrdXJ6ZW4gR2xvdy1FZmZla3QsIHdlbm4gZGllIERhdGVuIHJlaW5rb21tZW4uCiAgICAgICAg dmFyIHNjaHJpdHRlID0gW107CiAgICAgICAgaWYgKGtwaU9uKSAgICAgICAgc2Nocml0dGUucHVz aCh7IGVsOiBrcGlFbCwgICAgcGFuZWw6IGtwaUVsLCAgICAgICAgICAgICAgICAgICBoaW50OiAn S2VubnphaGxlbiB3ZXJkZW4gZXJtaXR0ZWx04oCmJywKICAgICAgICAgICAgYXVzZnVlaHJlbjog ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBrcGlFbC5pbm5lckhUTUwgPQogICAgICAgICAg ICAgICAgICAgIGtwaUthcnRlKHN0YXRzLmxlbmd0aCwgJ1BlcnNvbmVuJywgJ3ZhcigtLXRleHQt aGVhZGluZyknKSArCiAgICAgICAgICAgICAgICAgICAga3BpS2FydGUoc3VtR2VzLCAnRGllbnN0 ZSBnZXNhbXQnLCAndmFyKC0tdGV4dC1oZWFkaW5nKScpICsKICAgICAgICAgICAgICAgICAgICBr cGlLYXJ0ZShzdW1GLCAnRnLDvGhkaWVuc3RlJywgJ3ZhcigtLWZhcmJlLWZydWVoKScpICsKICAg ICAgICAgICAgICAgICAgICBrcGlLYXJ0ZShzdW1TLCAnU3DDpHRkaWVuc3RlJywgJ3ZhcigtLWZh cmJlLXNwYWV0KScpICsKICAgICAgICAgICAgICAgICAgICBrcGlLYXJ0ZShzdW1OLCAnTmFjaHRk aWVuc3RlJywgJ3ZhcigtLWZhcmJlLW5hY2h0KScpICsKICAgICAgICAgICAgICAgICAgICBrcGlL YXJ0ZShzdW1Tb24sICdTb25kZXJkaWVuc3RlJywgJ3ZhcigtLXN0YXQtc2QpJykgKwogICAgICAg ICAgICAgICAgICAgIGtwaUthcnRlKHN1bVdFLCAnV0UtRGllbnN0ZScsICd2YXIoLS1zdGF0LXNh bXN0YWcpJykgKwogICAgICAgICAgICAgICAgICAgIGtwaUthcnRlKHN1bVVybCwgJ1VybGF1YnN0 YWdlJywgJ3ZhcigtLXN0YXQtdXJsYXViKScpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAg ICAgICAgaWYgKHZlcnRlaWx1bmdPbikgc2Nocml0dGUucHVzaCh7IGVsOiBiYWxrZW5FbCwgcGFu ZWw6IGJhbGtlbkVsLmNsb3Nlc3QoJy5zdGF0cy1wYW5lbCcpLCAgaGludDogJ1NjaGljaHR2ZXJ0 ZWlsdW5nIHdpcmQgZ2VyZW5kZXJ04oCmJywKICAgICAgICAgICAgYXVzZnVlaHJlbjogZnVuY3Rp b24oKSB7IGJhbGtlblNvcnRMaXN0ZW5lclNpY2hlcm4oKTsgYmFsa2VuUmVuZGVybihzdGF0cyk7 IH0KICAgICAgICB9KTsKICAgICAgICBpZiAoZmFpcm5lc3NPbikgICBzY2hyaXR0ZS5wdXNoKHsg ZWw6IGZhaXJuZXNzRWwsIHBhbmVsOiBmYWlybmVzc0VsLmNsb3Nlc3QoJy5zdGF0cy1wYW5lbCcp LCBoaW50OiAnRmFpcm5lc3MtUXVvdGVuIHdlcmRlbiBiZXJlY2huZXTigKYnLAogICAgICAgICAg ICBhdXNmdWVocmVuOiBmdW5jdGlvbigpIHsgZmFpcm5lc3NSZW5kZXJuKHN0YXRzKTsgfQogICAg ICAgIH0pOwogICAgICAgIGlmICh0ZWFtT24pICAgICAgIHNjaHJpdHRlLnB1c2goeyBlbDogdGVh bUVsLCBwYW5lbDogdGVhbUVsLmNsb3Nlc3QoJy5zdGF0cy1wYW5lbCcpLCAgICBoaW50OiAnTWlr cm90ZWFtLcOcYmVyc2ljaHQgd2lyZCBhdWZnZWJhdXQgKGRhcyBrYW5uIGVpbmVuIE1vbWVudCBk YXVlcm4p4oCmJywKICAgICAgICAgICAgZXh0cmFFbHM6IFtuZWJlbkVsLCB0ZWFtQmFsa2VuRWxd LmZpbHRlcihCb29sZWFuKSwKICAgICAgICAgICAgZXh0cmFQYW5lbHM6IFtuZWJlbkVsLCB0ZWFt QmFsa2VuRWxdLmZpbHRlcihCb29sZWFuKS5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5jbG9z ZXN0KCcuc3RhdHMtcGFuZWwnKTsgfSksCiAgICAgICAgICAgIGF1c2Z1ZWhyZW46IGZ1bmN0aW9u KCkgeyBtaWtyb3RlYW1SZW5kZXJuKCk7IH0KICAgICAgICB9KTsKICAgICAgICBpZiAocHJvc2FF bCkgICAgICBzY2hyaXR0ZS5wdXNoKHsgZWw6IHByb3NhRWwsIHBhbmVsOiBwcm9zYUVsLmNsb3Nl c3QoJy5zdGF0cy1wYW5lbCcpLCAgaGludDogJ0RldGFpbGFuYWx5c2UgcHJvIFBlcnNvbiB3aXJk IGZvcm11bGllcnTigKYnLAogICAgICAgICAgICBhdXNmdWVocmVuOiBmdW5jdGlvbigpIHsgcHJv c2FSZW5kZXJuKHN0YXRzKTsgfQogICAgICAgIH0pOwogICAgICAgIGlmIChkZXRhaWxPbikgICAg IHNjaHJpdHRlLnB1c2goeyBlbDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLXRib2R5 JyksIHBhbmVsOiBkZXRhaWxFbCwgaGludDogJ0RldGFpbHRhYmVsbGUgd2lyZCB2b3JiZXJlaXRl dOKApicsCiAgICAgICAgICAgIGF1c2Z1ZWhyZW46IGZ1bmN0aW9uKCkgeyBkZXRhaWxUYWJlbGxl UmVuZGVybihzdGF0cyk7IH0KICAgICAgICB9KTsKCiAgICAgICAgLy8gQmF1a2FzdGVuLUthY2hl bG4gKHN5bmNocm9uLCBndWVuc3RpZykgKyBMYXlvdXQtUmFzdGVyIChSZWloZW5mb2xnZS8KICAg ICAgICAvLyBCcmVpdGUvU2ljaHRiYXJrZWl0IGFsbGVyIFRpbGVzKSBhbndlbmRlbiwgQkVWT1Ig ZGllIFRvZ2dsZS1Ib29rcwogICAgICAgIC8vIGdyZWlmZW4gKGRhbWl0IGF1Y2ggQ3VzdG9tLVBh bmVscyBlaW4tL2F1c2tsYXBwYmFyIHNpbmQpLgogICAgICAgIGN1c3RvbUthY2hlbG5SZW5kZXJu KCk7CiAgICAgICAgbGF5b3V0QW53ZW5kZW4oKTsKICAgICAgICBwYW5lbFRvZ2dsZUhvb2tzKCk7 CiAgICAgICAgcGlwZWxpbmVTdGFydGVuKHNjaHJpdHRlLCArK19zdGF0UmVuZGVyUnVuSWQpOwog ICAgfQoKICAgIC8vIE1hY2h0IGplZGVuIC5zdGF0cy1wYW5lbCBlaW56ZWxuIGVpbi0vYXVza2xh cHBiYXIuIERlZmF1bHQ6IGFsbGUgYXVmLgogICAgLy8gS2xpY2sgYXVmIGRlbiBQYW5lbC1Lb3Bm IChoMyBvZGVyIGZyZWllIFN0ZWxsZSkgdG9nZ2VsdDsgS2xpY2tzIGF1ZgogICAgLy8gZGVuIGkt QnV0dG9uIG9kZXIgZGllIFNvcnQtQnV0dG9ucyB3ZXJkZW4gdWViZXIgc3RvcFByb3BhZ2F0aW9u IGluCiAgICAvLyBkZW4gamV3ZWlsaWdlbiBIYW5kbGVybiBhYmdlZmFuZ2VuIOKAlCBoaWVyIGZp bHRlcm4gd2lyIGRlZmVuc2l2LgogICAgZnVuY3Rpb24gcGFuZWxUb2dnbGVIb29rcygpIHsKICAg ICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjYW5zaWNodC1zdGF0aXN0aWsgLnN0YXRz LXBhbmVsJykuZm9yRWFjaChmdW5jdGlvbihwYW5lbCkgewogICAgICAgICAgICB2YXIga29wZiA9 IHBhbmVsLnF1ZXJ5U2VsZWN0b3IoJy5zdGF0cy1wYW5lbC1rb3BmJyk7CiAgICAgICAgICAgIGlm ICgha29wZiB8fCBrb3BmLmRhdGFzZXQudG9nZ2xlRmVydGlnKSByZXR1cm47CiAgICAgICAgICAg IC8vIFBmZWlsLUluZGlrYXRvciB2b3IgZGVtIGgzIGVpbnNldHplbiAoZWlubWFsaWcpLgogICAg ICAgICAgICB2YXIgaDMgPSBrb3BmLnF1ZXJ5U2VsZWN0b3IoJ2gzJyk7CiAgICAgICAgICAgIGlm IChoMyAmJiAhaDMucXVlcnlTZWxlY3RvcignLnN0YXRzLXBhbmVsLXRvZ2dsZScpKSB7CiAgICAg ICAgICAgICAgICB2YXIgcGZlaWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAg ICAgICAgICAgICAgICBwZmVpbC5jbGFzc05hbWUgPSAnc3RhdHMtcGFuZWwtdG9nZ2xlJzsKICAg ICAgICAgICAgICAgIHBmZWlsLnRleHRDb250ZW50ID0gJ+KWvic7CiAgICAgICAgICAgICAgICBo My5pbnNlcnRCZWZvcmUocGZlaWwsIGgzLmZpcnN0Q2hpbGQpOwogICAgICAgICAgICB9CiAgICAg ICAgICAgIGtvcGYuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAg ICAgICAgICAgICAvLyBTdWItS2xpY2tzIChJbmZvLUJ1dHRvbiwgU29ydC1CdXR0b25zLCBGaWx0 ZXIpIHNvbGxlbiBkZW4KICAgICAgICAgICAgICAgIC8vIFRvZ2dsZSBuaWNodCBhdXNsb2VzZW4u CiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQuY2xvc2VzdCgnLnN0YXRzLWluZm8tYnRuJykp IHJldHVybjsKICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5jbG9zZXN0KCcuc3RhdHMta2F0 LWJ0bicpKSAgcmV0dXJuOwogICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmNsb3Nlc3QoJy5z dGF0cy1zb3J0LXJpY2h0dW5nJykpIHJldHVybjsKICAgICAgICAgICAgICAgIGlmIChlLnRhcmdl dC5jbG9zZXN0KCdidXR0b246bm90KC5zdGF0cy1wYW5lbC10b2dnbGUpJykpIHJldHVybjsKICAg ICAgICAgICAgICAgIHBhbmVsLmNsYXNzTGlzdC50b2dnbGUoJ3p1Z2VrbGFwcHQnKTsKICAgICAg ICAgICAgICAgIHZhciBwID0gaDMgJiYgaDMucXVlcnlTZWxlY3RvcignLnN0YXRzLXBhbmVsLXRv Z2dsZScpOwogICAgICAgICAgICAgICAgaWYgKHApIHAudGV4dENvbnRlbnQgPSBwYW5lbC5jbGFz c0xpc3QuY29udGFpbnMoJ3p1Z2VrbGFwcHQnKSA/ICfilrgnIDogJ+KWvic7CiAgICAgICAgICAg IH0pOwogICAgICAgICAgICBrb3BmLmRhdGFzZXQudG9nZ2xlRmVydGlnID0gJzEnOwogICAgICAg IH0pOwogICAgfQoKICAgIC8vIE1vZHVsLVN0YXRlIFJlbmRlci1QaXBlbGluZS4gQnJpY2h0IGxh dWZlbmRlIFNlcXVlbnogYWIsIHdlbm4gZWluCiAgICAvLyBuZXVlciBSZW5kZXJuLUF1ZnJ1ZiAo ei5CLiBTb3J0LS9GaWx0ZXItV2VjaHNlbCkgcmVpbmtvbW10LgogICAgdmFyIF9zdGF0UmVuZGVy UnVuSWQgPSAwOwoKICAgIGZ1bmN0aW9uIHBpcGVsaW5lU3RhcnRlbihzY2hyaXR0ZSwgcnVuSWQp IHsKICAgICAgICAvLyBQaGFzZSAxOiBhbGxlIFNrZWxldG9ucyBzeW5jaHJvbiBzZXR6ZW4sIGRh bWl0IGRlciBVc2VyIHNvZm9ydAogICAgICAgIC8vIHNpZWh0LCBkYXNzIGV0d2FzIHBhc3NpZXJ0 LiBleHRyYUVscyBzaW5kIHdlaXRlcmUgQ29udGFpbmVyLCBkaWUKICAgICAgICAvLyBpbSBzZWxi ZW4gU2Nocml0dCBiZWZ1ZWxsdCB3ZXJkZW4gKFRlYW0tU2Nocml0dCByZW5kZXJ0IEhlYXRtYXAK ICAgICAgICAvLyArIE5lYmVud2FjaGVuICsgVGFnZXMtQW50ZWlsZSBpbiBlaW5lbSBSdXRzY2gp LgogICAgICAgIHNjaHJpdHRlLmZvckVhY2goZnVuY3Rpb24ocykgewogICAgICAgICAgICBpZiAo cy5lbCkgcy5lbC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0ic3RhdHMtbG9hZGluZyI+JyArIGVz Y2FwZUhUTUwocy5oaW50KSArICc8L2Rpdj4nOwogICAgICAgICAgICAocy5leHRyYUVscyB8fCBb XSkuZm9yRWFjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoZSkgZS5pbm5lckhU TUwgPSAnPGRpdiBjbGFzcz0ic3RhdHMtbG9hZGluZyI+JyArIGVzY2FwZUhUTUwocy5oaW50KSAr ICc8L2Rpdj4nOwogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgICAvLyBQaGFzZSAy OiBTY2hyaXR0IGZ1ZXIgU2Nocml0dCByZW5kZXJuLCBZaWVsZCB6d2lzY2hlbiBkZW4gU2Nocml0 dGVuLgogICAgICAgIC8vCiAgICAgICAgLy8gc2V0VGltZW91dCBzdGF0dCByZXF1ZXN0QW5pbWF0 aW9uRnJhbWU6IHJBRi1DYWxsYmFja3MgbGF1ZmVuIFZPUgogICAgICAgIC8vIGRlbSBQYWludCBp bSBzZWxiZW4gRnJhbWUg4oCUIGRlciBTa2VsZXRvbiB3dWVyZGUgbmllIHNpY2h0YmFyCiAgICAg ICAgLy8gd2VyZGVuLiBBdXNzZXJkZW0gcGF1c2llcnQgckFGIGluIEhpbnRlcmdydW5kLVRhYnMg a29tcGxldHQuCiAgICAgICAgLy8KICAgICAgICAvLyBUaW1pbmcgKDIwMjYtMDYtMTUgUmVzcG9u c2l2aXRhZXRzLUF1ZGl0KTogZGllIGZydWVoZXJlIGt1ZW5zdGxpY2hlCiAgICAgICAgLy8gVmVy em9lZ2VydW5nICg4MDAgbXMgaW5pdGlhbCArIDYwMCBtcyBqZSBQYW5lbCDiiYggMyw4IHMgcmVp bmUgV2FydGUtCiAgICAgICAgLy8gemVpdCkgaXN0IGVudGZlcm50LiBEaWUgQmVyZWNobnVuZyBk YXVlcnQgTWlsbGlzZWt1bmRlbiDigJQgZGVyIFVzZXIKICAgICAgICAvLyBzb2xsIGRpZSBTdGF0 aXN0aWsgcHJha3Rpc2NoIHNvZm9ydCBzZWhlbi4gRWluIEtMRUlORVIgU3RhZ2dlcgogICAgICAg IC8vIChqZSA1MCBtcykgYmxlaWJ0LCBkYW1pdCBkZXIgU2tlbGV0b24ga3VyeiBzaWNodGJhciBp c3QsIGRlcgogICAgICAgIC8vIEpTLVRocmVhZCB6d2lzY2hlbiBkZW4gUGFuZWxzIHlpZWxkZXQg KFJlc3BvbnNpdmVuZXNzKSB1bmQgZGllCiAgICAgICAgLy8gR2xvdy1LYXNrYWRlIGFscyBkZXpl bnRlIFdlbGxlIGVya2VubmJhciBibGVpYnQuCiAgICAgICAgZnVuY3Rpb24gc3RlcChpKSB7CiAg ICAgICAgICAgIGlmIChpID49IHNjaHJpdHRlLmxlbmd0aCkgcmV0dXJuOwogICAgICAgICAgICBp ZiAocnVuSWQgIT09IF9zdGF0UmVuZGVyUnVuSWQpIHJldHVybjsgICAgIC8vIG5ldWVyIExhdWYg dWViZXJob2x0CiAgICAgICAgICAgIHZhciBzID0gc2Nocml0dGVbaV07CiAgICAgICAgICAgIHRy eSB7IHMuYXVzZnVlaHJlbigpOyB9IGNhdGNoIChlKSB7IGNvbnNvbGUuZXJyb3IoJ1N0YXRpc3Rp ay1SZW5kZXItRmVobGVyOicsIGUpOyB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGdsb3cocCkgewog ICAgICAgICAgICAgICAgaWYgKCFwKSByZXR1cm47CiAgICAgICAgICAgICAgICBwLmNsYXNzTGlz dC5yZW1vdmUoJ3N0YXRzLWdsb3cnKTsKICAgICAgICAgICAgICAgIC8vIHZvaWQtUmVmbG93IGRh bWl0IGRpZSBBbmltYXRpb24gbmV1IHN0YXJ0ZXQKICAgICAgICAgICAgICAgIHZvaWQgcC5vZmZz ZXRXaWR0aDsKICAgICAgICAgICAgICAgIHAuY2xhc3NMaXN0LmFkZCgnc3RhdHMtZ2xvdycpOwog ICAgICAgICAgICB9CiAgICAgICAgICAgIGdsb3cocy5wYW5lbCk7CiAgICAgICAgICAgIChzLmV4 dHJhUGFuZWxzIHx8IFtdKS5mb3JFYWNoKGdsb3cpOwogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1 bmN0aW9uKCkgeyBzdGVwKGkgKyAxKTsgfSwgNTApOwogICAgICAgIH0KICAgICAgICBzZXRUaW1l b3V0KGZ1bmN0aW9uKCkgeyBzdGVwKDApOyB9LCA2MCk7CiAgICB9CgogICAgLy8gPT09PT0gUHJv c2EtRGV0YWlsYW5hbHlzZSA9PT09PQogICAgLy8KICAgIC8vIEVyemV1Z3QgcHJvIFBlcnNvbiBl aW5lbiBrdXJ6ZW4gRmxpZcOfdGV4dCBhdXMgUmVnZWwtQmVkaW5ndW5nZW4uIEtlaW5lCiAgICAv LyBTZXJ2ZXItQWJoYWVuZ2lna2VpdCDigJQgYXJiZWl0ZXQgbnVyIGF1ZiBkZW4gYmVyZWl0cyBn ZWxhZGVuZW4gU3RhdHMuCiAgICBmdW5jdGlvbiBwcm9zYVJlbmRlcm4oc3RhdHMpIHsKICAgICAg ICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdHMtcHJvc2EnKTsKICAgICAg ICBpZiAoIWVsKSByZXR1cm47CiAgICAgICAgaWYgKCFzdGF0cy5sZW5ndGgpIHsgZWwuaW5uZXJI VE1MID0gJzxwIGNsYXNzPSJ0ZXh0LW11dGVkIiBzdHlsZT0icGFkZGluZzoxMnB4Ij5LZWluZSBE YXRlbi48L3A+JzsgcmV0dXJuOyB9CgogICAgICAgIC8vIER1cmNoc2Nobml0dGUgdWViZXIgZGll IGFrdHVlbGwgZ2VmaWx0ZXJ0ZSBTdGF0cy1NZW5nZQogICAgICAgIHZhciBuID0gc3RhdHMubGVu Z3RoOwogICAgICAgIHZhciBhdmcgPSB7IGdlc2FtdDowLCBmcnVlaDowLCBzcGFldDowLCBuYWNo dDowLCBzb246MCwgd2RmOjAsIGZicDowLCBkZ2w6MCwKICAgICAgICAgICAgICAgICAgICB3ZTow LCBmdDowLCB1cmxhdWI6MCwgbGc6MCwgYXphOjAsCiAgICAgICAgICAgICAgICAgICAga29tcGxl dHRlV0U6MCwgZmVpZXJ0YWdEaWVuc3RlOjAsIGt1cjowIH07CiAgICAgICAgc3RhdHMuZm9yRWFj aChmdW5jdGlvbihzKSB7CiAgICAgICAgICAgIGF2Zy5nZXNhbXQgKz0gcy5nZXNhbXQ7CiAgICAg ICAgICAgIGF2Zy5mcnVlaCAgKz0gcy5mcnVlaDsKICAgICAgICAgICAgYXZnLnNwYWV0ICArPSBz LnNwYWV0OwogICAgICAgICAgICBhdmcubmFjaHQgICs9IHMubmFjaHQ7CiAgICAgICAgICAgIGF2 Zy5zb24gICAgKz0gKHMuc29uZGVyZGllbnN0IHx8IDApOwogICAgICAgICAgICBhdmcuZGdsICAg ICs9IChzLmRnbCB8fCAwKTsKICAgICAgICAgICAgYXZnLndkZiAgICArPSAocy53ZGYgfHwgMCk7 CiAgICAgICAgICAgIGF2Zy5mYnAgICAgKz0gKHMuZmJwIHx8IDApOwogICAgICAgICAgICBhdmcu d2UgICAgICs9IHMud29jaGVuZW5kVGFnZTsKICAgICAgICAgICAgYXZnLmZ0ICAgICArPSBzLmZl aWVydGFnVGFnZTsKICAgICAgICAgICAgYXZnLnVybGF1YiArPSBzLnVybGF1YjsKICAgICAgICAg ICAgYXZnLmxnICAgICArPSBzLmxlaHJnYW5nOwogICAgICAgICAgICBhdmcuYXphICAgICs9IChz LmF6QXVzZ2xlaWNoIHx8IDApOwogICAgICAgICAgICBhdmcua29tcGxldHRlV0UgICAgICs9IChz LmtvbXBsZXR0ZVdFIHx8IDApOwogICAgICAgICAgICBhdmcuZmVpZXJ0YWdEaWVuc3RlICs9IChz LmZlaWVydGFnRGllbnN0ZSB8fCAwKTsKICAgICAgICAgICAgYXZnLmt1ciAgICAgICAgICAgICAr PSAocy5rdXIgfHwgMCk7CiAgICAgICAgfSk7CiAgICAgICAgT2JqZWN0LmtleXMoYXZnKS5mb3JF YWNoKGZ1bmN0aW9uKGspIHsgYXZnW2tdID0gYXZnW2tdIC8gbjsgfSk7CgogICAgICAgIC8vIE1p a3JvdGVhbS1EYXRlbiBlaW5tYWwgYXVmYmF1ZW4g4oCUIGZ1ZXIgQmV6dWctQmF1c3RlaW5lIChQ b29sLVNwcmluZ2VyLAogICAgICAgIC8vIFRlYW0tTHVlY2tlbikuIFBybyBQZXJzb24gbWVya2Vu IHdpciB1bnMgZGFzIE1pa3JvdGVhbSB1bmQgZGllCiAgICAgICAgLy8gYWdncmVnaWVydGVuIFBv b2wtU3RhdHMuCiAgICAgICAgdmFyIHRlYW1EYXRhID0gKFouYWRtaW4gJiYgWi5hZG1pbi5taWty b3RlYW1zICYmIFouYWRtaW4ubWlrcm90ZWFtcy5sZW5ndGgpID8gX3RlYW1EYXRlbkdlZmlsdGVy dCgpIDogW107CiAgICAgICAgdmFyIHRlYW1CeVBpZCA9IHt9OyAgICAgICAgLy8gcGVyc29uSWQg LT4geyB0ZWFtLCBzcHJpbmdlclRhZ2UgfQogICAgICAgIHRlYW1EYXRhLmZvckVhY2goZnVuY3Rp b24odCkgewogICAgICAgICAgICB2YXIgcG9vbCA9IF9pc3RQb29sVGVhbSh0KTsKICAgICAgICAg ICAgLy8gUG9vbC1TcHJpbmdlci1UYWdlIHBybyBQZXJzb24gemFlaGxlbiAobnVyIGZ1ZXIgTEQv U08gcmVsZXZhbnQpCiAgICAgICAgICAgIHZhciBzcHJpbmdlciA9IDA7CiAgICAgICAgICAgIGlm IChwb29sKSB7CiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0LnRhZ2UpLmZvckVhY2goZnVu Y3Rpb24oZCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0LnRhZ2VbZF0uaXN0U3ByaW5nZXIp IHNwcmluZ2VyKys7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAg ICB0LnBlcnNvbklkcy5mb3JFYWNoKGZ1bmN0aW9uKHBpZCkgewogICAgICAgICAgICAgICAgdGVh bUJ5UGlkW3BpZF0gPSB7IHRlYW06IHQsIHNwcmluZ2VyVGFnZTogc3ByaW5nZXIgfTsKICAgICAg ICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIFNvcnRpZXJ1bmcgZmVzdCBuYWNoIFN0 YW5kb3J0ICsgRGllbnN0Z3J1cHBlLCBkYW5uIE5hbWUuIFNvIGxhc3NlbgogICAgICAgIC8vIHNp Y2ggZGllIFBlcnNvbmVuIGVpbmVyIFdhY2hlIHp1c2FtbWVuIGxlc2VuIOKAlCBlbnRzcHJpY2h0 IGRlcgogICAgICAgIC8vIFJlaWhlbmZvbGdlIGRlciBNaWtyb3RlYW0tSGVhdG1hcCBvYmVuLgog ICAgICAgIHZhciBwZXJzb25NYXAgPSB7fTsKICAgICAgICAoWi5wbGFudW5nICYmIFoucGxhbnVu Zy5wZXJzb25lbiB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbihwKSB7IHBlcnNvbk1hcFtwLmlkXSA9 IHA7IH0pOwogICAgICAgIHZhciBzb3J0aWVydCA9IHN0YXRzLnNsaWNlKCkuc29ydChmdW5jdGlv bihhLCBiKSB7CiAgICAgICAgICAgIHZhciBwYSA9IHBlcnNvbk1hcFthLnBlcnNvbklkXSB8fCB7 fSwgcGIgPSBwZXJzb25NYXBbYi5wZXJzb25JZF0gfHwge307CiAgICAgICAgICAgIHZhciBrYSA9 IChwYS5vZSB8fCAnWlonKSArICd8JyArIChwYS5ncnVwcGUgfHwgJ1onKTsKICAgICAgICAgICAg dmFyIGtiID0gKHBiLm9lIHx8ICdaWicpICsgJ3wnICsgKHBiLmdydXBwZSB8fCAnWicpOwogICAg ICAgICAgICBpZiAoa2EgIT09IGtiKSByZXR1cm4ga2EubG9jYWxlQ29tcGFyZShrYiwgJ2RlJyk7 CiAgICAgICAgICAgIHJldHVybiAoYS5uYW1lIHx8ICcnKS5sb2NhbGVDb21wYXJlKGIubmFtZSB8 fCAnJywgJ2RlJyk7CiAgICAgICAgfSk7CgogICAgICAgIHZhciBodG1sID0gJyc7CiAgICAgICAg c29ydGllcnQuZm9yRWFjaChmdW5jdGlvbihzKSB7CiAgICAgICAgICAgIHZhciB0eHQgPSBwcm9z YVRleHQocywgYXZnLCB0ZWFtQnlQaWRbcy5wZXJzb25JZF0pOwogICAgICAgICAgICBpZiAoIXR4 dCkgcmV0dXJuOwogICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJzdGF0cy1wcm9zYS16 ZWlsZSI+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic3RhdHMtcHJvc2EtbmFtZSI+ JyArIGVzY2FwZUhUTUwocHJvc2FBbnJlZGUocykpICsgJzwvZGl2PicgKwogICAgICAgICAgICAg ICAgJzxkaXYgY2xhc3M9InN0YXRzLXByb3NhLXRleHQiPicgKyB0eHQgKyAnPC9kaXY+JyArCiAg ICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIH0pOwogICAgICAgIGVsLmlubmVySFRNTCA9IGh0 bWwgfHwgJzxwIGNsYXNzPSJ0ZXh0LW11dGVkIiBzdHlsZT0icGFkZGluZzoxMnB4Ij5LZWluZSBh dWZmw6RsbGlnZW4gTXVzdGVyLjwvcD4nOwogICAgfQoKICAgIC8vIEJpbGRldCAiUEhLIE5hY2hu YW1lIiAobWl0IG9wdGlvbmFsZW0gVm9ybmFtZW4pLiBzZXJ2ZXIgbGllZmVydCBuYW1lID0gIk5h Y2huYW1lLCBWb3JuYW1lIi4KICAgIC8vIEJlaSBha3RpdmVtIEFub255bWlzaWVydW5ncy1Ub2dn bGUgd2lyZCAiUGVyc29uIE4iIHp1cnVlY2tnZWdlYmVuLgogICAgZnVuY3Rpb24gcHJvc2FBbnJl ZGUocykgewogICAgICAgIGlmIChfc3RhdEFub25Ba3RpdikgcmV0dXJuIF9zdGF0QW56ZWlnZU5h bWUocyk7CiAgICAgICAgdmFyIHRlaWxlID0gKHMubmFtZSB8fCAnJykuc3BsaXQoJywnKTsKICAg ICAgICB2YXIgbm4gPSAodGVpbGVbMF0gfHwgJycpLnRyaW0oKTsKICAgICAgICB2YXIgdm4gPSAo dGVpbGVbMV0gfHwgJycpLnRyaW0oKTsKICAgICAgICB2YXIgZGcgPSBzLmRpZW5zdGdyYWQgfHwg Jyc7CiAgICAgICAgdmFyIGEgPSAoZGcgPyBkZyArICcgJyA6ICcnKSArIG5uOwogICAgICAgIHJl dHVybiB2biA/IGEgKyAnLCAnICsgdm4gOiBhOwogICAgfQoKICAgIC8vIFJlZ2VsLWJhc2llcnRl IFRleHQtQmF1c3RlaW5lLiBBbGxlIEJlZGluZ3VuZ2VuIHNpbmQgcmVsYXRpdiB6dW0gRHVyY2gt CiAgICAvLyBzY2huaXR0LCBkYW1pdCBkaWUgQW5hbHlzZSBiZWkgamVkZXIgR3J1cHBlbi0vRmls dGVyLUtvbWJpbmF0aW9uIHNpbm52b2xsCiAgICAvLyBibGVpYnQuIGB0ZWFtSW5mb2AgaXN0IG9w dGlvbmFsOiB7IHRlYW0sIHNwcmluZ2VyVGFnZSB9IGF1cyBfdGVhbURhdGVuKCkuCiAgICAvLyBS dWVja2dhYmU6IEhUTUwtU3RyaW5nIChlaW4gU2F0eikgb2RlciBsZWVyLgogICAgZnVuY3Rpb24g cHJvc2FUZXh0KHMsIGF2ZywgdGVhbUluZm8pIHsKICAgICAgICBpZiAocy5nZXNhbXQgPCAzKSBy ZXR1cm4gJyc7ICAvLyB6dSB3ZW5pZ2UgRGF0ZW4gZnVlciBlaW5lIEF1c3NhZ2UKICAgICAgICB2 YXIgZ2VzID0gcy5nZXNhbXQgfHwgMTsKICAgICAgICB2YXIgc2FldHplID0gW107CgogICAgICAg IC8vIEdlc2FtdC1BdXNsYXN0dW5nCiAgICAgICAgaWYgKGF2Zy5nZXNhbXQgPiAzKSB7CiAgICAg ICAgICAgIGlmIChzLmdlc2FtdCA+IGF2Zy5nZXNhbXQgKiAxLjIpICAgICAgIHNhZXR6ZS5wdXNo KCdtYWNodCBtZWhyIERpZW5zdGUgYWxzIMO8YmxpY2ggKCcgKyBzLmdlc2FtdCArICcgdnMuIMOY ICcgKyBNYXRoLnJvdW5kKGF2Zy5nZXNhbXQpICsgJyknKTsKICAgICAgICAgICAgZWxzZSBpZiAo cy5nZXNhbXQgPCBhdmcuZ2VzYW10ICogMC43KSAgc2FldHplLnB1c2goJ2hhdCB1bnRlcmR1cmNo c2Nobml0dGxpY2ggd2VuaWdlIERpZW5zdGUgKCcgKyBzLmdlc2FtdCArICcgdnMuIMOYICcgKyBN YXRoLnJvdW5kKGF2Zy5nZXNhbXQpICsgJyknKTsKICAgICAgICB9CgogICAgICAgIC8vIFNjaGlj aHQtU2NoaWVmbGFnZW4gKEFudGVpbGUgc3RhdHQgYWJzb2x1dGUgWmFobGVuLCBkYW1pdCBmYWly IHZlcmdsZWljaGJhcikKICAgICAgICB2YXIgZkEgPSBzLmZydWVoIC8gZ2VzLCBzQSA9IHMuc3Bh ZXQgLyBnZXMsIG5BID0gcy5uYWNodCAvIGdlczsKICAgICAgICB2YXIgYXZnRkEgPSBhdmcuZ2Vz YW10ID8gYXZnLmZydWVoIC8gYXZnLmdlc2FtdCA6IDA7CiAgICAgICAgdmFyIGF2Z1NBID0gYXZn Lmdlc2FtdCA/IGF2Zy5zcGFldCAvIGF2Zy5nZXNhbXQgOiAwOwogICAgICAgIHZhciBhdmdOQSA9 IGF2Zy5nZXNhbXQgPyBhdmcubmFjaHQgLyBhdmcuZ2VzYW10IDogMDsKCiAgICAgICAgZnVuY3Rp b24gc2NoaWNodFBocmFzZSgpIHsKICAgICAgICAgICAgdmFyIHRlaWxlID0gW107CiAgICAgICAg ICAgIGlmIChuQSA+IGF2Z05BICogMS4zICYmIHMubmFjaHQgPiA1KSAgIHRlaWxlLnB1c2goJ3Zl cm1laHJ0IE5hY2h0ZGllbnN0Jyk7CiAgICAgICAgICAgIGlmIChmQSA+IGF2Z0ZBICogMS4zICYm IHMuZnJ1ZWggPiA1KSAgIHRlaWxlLnB1c2goJ8O8YmVycHJvcG9ydGlvbmFsIHZpZWxlIEZyw7xo ZGllbnN0ZScpOwogICAgICAgICAgICBpZiAoc0EgPiBhdmdTQSAqIDEuMyAmJiBzLnNwYWV0ID4g NSkgICB0ZWlsZS5wdXNoKCfDvGJlcnByb3BvcnRpb25hbCB2aWVsZSBTcMOkdGRpZW5zdGUnKTsK ICAgICAgICAgICAgcmV0dXJuIHRlaWxlLmpvaW4oJyB1bmQgJyk7CiAgICAgICAgfQogICAgICAg IHZhciBzY2hpY2h0ID0gc2NoaWNodFBocmFzZSgpOwogICAgICAgIGlmIChzY2hpY2h0KSBzYWV0 emUucHVzaCgnbWFjaHQgJyArIHNjaGljaHQpOwoKICAgICAgICAvLyBGcsO8aC9TcMOkdC1CYWxh bmNlCiAgICAgICAgdmFyIGZzRGlmZiA9IChzLmZydWVoICsgcy5zcGFldCkgPiAwID8gTWF0aC5h YnMocy5mcnVlaCAtIHMuc3BhZXQpIC8gKHMuZnJ1ZWggKyBzLnNwYWV0KSA6IDA7CiAgICAgICAg aWYgKChzLmZydWVoICsgcy5zcGFldCkgPj0gMTAgJiYgZnNEaWZmIDwgMC4xNSkgc2FldHplLnB1 c2goJ2lzdCBpbiBGcsO8aC0gdW5kIFNww6R0ZGllbnN0ZW4gYXVzZ2VnbGljaGVuJyk7CgogICAg ICAgIC8vIEZ1bmt0aW9ucy1Sb2xsZW4gKERHTC9XREYvRkJQKSDigJQga29udGV4dHVhbGlzaWVy dCBtaXQgZGVyIHByaW1hZXJlbgogICAgICAgIC8vIEZ1bmt0aW9uIGRlciBQZXJzb24gKFoucGxh bnVuZy5wZXJzb25lblsqXS5mdW5rdGlvbikuIE51ciBDcm9zcy0KICAgICAgICAvLyBGdW5rdGlv bnMtRWluc2FldHplIHNpbmQgaW50ZXJlc3NhbnQ6IGVpbiBwcmltYWVyZXIgREdMLCBkZXIgREdM CiAgICAgICAgLy8gbWFjaHQsIGlzdCBSb3V0aW5lLiBFaW4gMy4tTWFubiBvZGVyIFdERiBhbHMg REdMID0gcmVsZXZhbnQuCiAgICAgICAgdmFyIGZrdCA9IChzLmZ1bmt0aW9uIHx8ICcnKS50b0xv d2VyQ2FzZSgpLnRyaW0oKTsKICAgICAgICB2YXIgcHJpbURnbCAgICA9IChma3QgPT09ICdkZ2wn IHx8IGZrdCA9PT0gJ2RnbGluJyk7CiAgICAgICAgdmFyIHByaW1XZGYgICAgPSAoZmt0ID09PSAn d2RmJyB8fCBma3QgPT09ICd3ZGZpbicpOwogICAgICAgIHZhciBwcmltVmVyYW50ID0gcHJpbURn bCB8fCBwcmltV2RmOyAgIC8vIDEuLzIuIFZJMy1ER0wtVmVyYW50d29ydGxpY2hlCgogICAgICAg IGlmICghcHJpbURnbCAmJiAocy5kZ2wgfHwgMCkgPj0gMyAmJiAocy5kZ2wgfHwgMCkgPiBhdmcu ZGdsICogMC41KQogICAgICAgICAgICBzYWV0emUucHVzaCgnd3VyZGUgJyArIHMuZGdsICsgJ8OX IGFscyBER0wgZWluZ2VzZXR6dCAobmljaHQgcHJpbcOkcmUgRnVua3Rpb24pJyk7CiAgICAgICAg aWYgKCFwcmltV2RmICYmIChzLndkZiB8fCAwKSA+PSAzICYmIChzLndkZiB8fCAwKSAvIGdlcyA+ IDAuMiAmJiAocy53ZGYgfHwgMCkgPiBhdmcud2RmICogMC43KQogICAgICAgICAgICBzYWV0emUu cHVzaCgnd3VyZGUgJyArIHMud2RmICsgJ8OXIGFscyBXREYgaW0gRnVua3Rpb25zYmVzZXR6dW5n c3BsYW4gZWluZ2VzZXR6dCcpOwogICAgICAgIGlmIChwcmltVmVyYW50ICYmIChzLmZicCB8fCAw KSA+PSAzKSB7CiAgICAgICAgICAgIHZhciByb2xsZVN0ciA9IHByaW1EZ2wgPyAncHJpbcOkciBE R0wnIDogJ3ByaW3DpHIgV0RGJzsKICAgICAgICAgICAgc2FldHplLnB1c2goJ3d1cmRlICcgKyBz LmZicCArICfDlyBhbHMgRkJQIGVpbmdlc2V0enQgKCcgKyByb2xsZVN0ciArICcpJyk7CiAgICAg ICAgfSBlbHNlIGlmICghcHJpbVZlcmFudCAmJiBhdmcuZmJwID4gMSAmJiAocy5mYnAgfHwgMCkg PiBhdmcuZmJwICogMS41KSB7CiAgICAgICAgICAgIHNhZXR6ZS5wdXNoKCdpc3Qgw7xiZXJkdXJj aHNjaG5pdHRsaWNoIG9mdCBGQlAgKCcgKyBzLmZicCArICfDlyknKTsKICAgICAgICB9CiAgICAg ICAgaWYgKGF2Zy5zb24gPiAxICYmIChzLnNvbmRlcmRpZW5zdCB8fCAwKSA+IGF2Zy5zb24gKiAx LjUpCiAgICAgICAgICAgIHNhZXR6ZS5wdXNoKCfDvGJlcm5pbW10IHZpZWxlIFNvbmRlcmRpZW5z dGUgKFNEL1NFOiAnICsgcy5zb25kZXJkaWVuc3QgKyAnw5cpJyk7CgogICAgICAgIC8vIFdFLUJl bGFzdHVuZwogICAgICAgIGlmIChhdmcud2UgPiAzICYmIHMud29jaGVuZW5kVGFnZSA+IGF2Zy53 ZSAqIDEuMykKICAgICAgICAgICAgc2FldHplLnB1c2goJ2hhdCDDvGJlcmR1cmNoc2Nobml0dGxp Y2ggdmllbGUgV29jaGVuZW5kZGllbnN0ZSAoJyArIHMud29jaGVuZW5kVGFnZSArICcgdnMuIMOY ICcgKyBNYXRoLnJvdW5kKGF2Zy53ZSkgKyAnKScpOwogICAgICAgIGVsc2UgaWYgKHMud29jaGVu ZW5kVGFnZSA9PT0gMCAmJiBzLmdlc2FtdCA+IDEwKQogICAgICAgICAgICBzYWV0emUucHVzaCgn bGVpc3RldCBrZWluZW4gV29jaGVuZW5kZGllbnN0Jyk7CgogICAgICAgIC8vIEtvbXBsZXR0ZSBX b2NoZW5lbmRlbiDigJQgQmVsYXN0dW5ncy1EaWNodGUuIEhvaGVyIFdlcnQgYmVkZXV0ZXQ6CiAg ICAgICAgLy8gUGVyc29uIGhhdHRlIG1laHJmYWNoIFNhK1NvIGFtIFN0dWVjay4gU2Nod2VsbGUg NCBpc3QgcHJhZ21hdGlzY2guCiAgICAgICAgdmFyIGt3ID0gcy5rb21wbGV0dGVXRSB8fCAwOwog ICAgICAgIGlmIChrdyA+PSA0ICYmIGt3ID4gYXZnLmtvbXBsZXR0ZVdFICogMS4zKQogICAgICAg ICAgICBzYWV0emUucHVzaCgnaGF0ICcgKyBrdyArICcga29tcGxldHRlIFdvY2hlbmVuZGVuIOKA lCBob2hlIEJlbGFzdHVuZ3MtRGljaHRlJyk7CgogICAgICAgIC8vIEZlaWVydGFnLURpZW5zdGUK ICAgICAgICB2YXIgZmQgPSBzLmZlaWVydGFnRGllbnN0ZSB8fCAwOwogICAgICAgIGlmIChmZCA+ PSAzICYmIGZkID4gYXZnLmZlaWVydGFnRGllbnN0ZSAqIDEuMykKICAgICAgICAgICAgc2FldHpl LnB1c2goZmQgKyAnIEZlaWVydGFnZSBnZWFyYmVpdGV0ICjDvGJlcmR1cmNoc2Nobml0dGxpY2gp Jyk7CgogICAgICAgIC8vIFBvb2wtU3ByaW5nZXIgKG51ciBMRC9TTyk6IEFuemFobCBTcHJpbmdl ci1UYWdlIGhlcnZvcmhlYmVuLgogICAgICAgIGlmICh0ZWFtSW5mbyAmJiB0ZWFtSW5mby50ZWFt ICYmIF9pc3RQb29sVGVhbSh0ZWFtSW5mby50ZWFtKSAmJiB0ZWFtSW5mby5zcHJpbmdlclRhZ2Ug PiAwKSB7CiAgICAgICAgICAgIHZhciB6aWVsZSA9IChQT09MX1JFTEFUSU9OW3RlYW1JbmZvLnRl YW0uc3RhbmRvcnRdIHx8IFtdKS5qb2luKCcvJyk7CiAgICAgICAgICAgIHNhZXR6ZS5wdXNoKCdz cHJpbmd0ICcgKyB0ZWFtSW5mby5zcHJpbmdlclRhZ2UgKyAnw5cgZsO8ciAnICsgemllbGUgKyAn IGVpbicpOwogICAgICAgIH0KICAgICAgICAvLyBNaWtyb3RlYW0tQmV6dWcgZnVlciByZWd1bGFl cmUgVGVhbXM6IHdlbm4gZGFzIGVpZ2VuZSBUZWFtIGhhZXVmaWcKICAgICAgICAvLyByb3QgaXN0 ICg+PSAyMCUgZGVyIFRhZ2UpLCBhbHMgS29udGV4dCBlaW5ibGVuZGVuLgogICAgICAgIGVsc2Ug aWYgKHRlYW1JbmZvICYmIHRlYW1JbmZvLnRlYW0gJiYgIV9pc3RQb29sVGVhbSh0ZWFtSW5mby50 ZWFtKSkgewogICAgICAgICAgICB2YXIgdHMgPSB0ZWFtSW5mby50ZWFtLnN0YXQgfHwge307CiAg ICAgICAgICAgIHZhciBhbnRlaWwgPSB0cy50b3RhbCA/IHRzLnJvdCAvIHRzLnRvdGFsIDogMDsK ICAgICAgICAgICAgaWYgKGFudGVpbCA+PSAwLjIgJiYgdHMucm90ID49IDUpIHsKICAgICAgICAg ICAgICAgIHNhZXR6ZS5wdXNoKCdNaWtyb3RlYW0gJyArIHRlYW1JbmZvLnRlYW0ubmFtZSArICcg aGF0dGUgJyArIHRzLnJvdCArICcgTMO8Y2tlbnRhZ2UgaW0gWmVpdHJhdW0nKTsKICAgICAgICAg ICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQWJ3ZXNlbmhlaXRlbiDigJQgS3Jhbmsgd2lyZCBo aWVyIGJld3Vzc3QgbmljaHQgZXJ3YWVobnQgKERhdGVuc2NodXR6KS4KICAgICAgICBpZiAocy51 cmxhdWIgPiAoYXZnLnVybGF1YiAqIDEuNCkgJiYgYXZnLnVybGF1YiA+IDUpIHNhZXR6ZS5wdXNo KHMudXJsYXViICsgJyBVcmxhdWJzdGFnZSAow7xiZXJkdXJjaHNjaG5pdHRsaWNoKScpOwogICAg ICAgIGlmICgocy5rdXIgfHwgMCkgPiAwKSAgICAgICAgICBzYWV0emUucHVzaCgocy5rdXIpICsg JyBUYWdlIGluIEt1cicpOwogICAgICAgIGlmIChzLmxlaHJnYW5nID4gNSkgICAgICAgICAgICBz YWV0emUucHVzaChzLmxlaHJnYW5nICsgJyBMZWhyZ2FuZ3MtL0ZvcnRiaWxkdW5nc3RhZ2UnKTsK ICAgICAgICBpZiAoKHMuYXpBdXNnbGVpY2ggfHwgMCkgPiA1KSAgc2FldHplLnB1c2gocy5hekF1 c2dsZWljaCArICcgQVotQXVzZ2xlaWNoc3RhZ2UnKTsKCiAgICAgICAgaWYgKCFzYWV0emUubGVu Z3RoKSByZXR1cm4gJyc7ICAvLyBuaWNodHMgQXVmZsOkbGxpZ2VzCiAgICAgICAgLy8gRXJzdGUg UGhyYXNlIG1pdCAiIOKAlCAiIGFiZ2V0cmVubnQgdm9tIFJlc3QsIGRhbWl0IGRlciBTYXR6IGxp ZXN0IHdpZQogICAgICAgIC8vICJQSEsgWCDigJQgbWFjaHQgbWVociBEaWVuc3RlLCBpc3QgYXVz Z2VnbGljaGVuLCDigKYiCiAgICAgICAgdmFyIHNhdHpUZXh0ID0gc2FldHplLmpvaW4oJywgJykg KyAnLic7CiAgICAgICAgc2F0elRleHQgPSBzYXR6VGV4dC5jaGFyQXQoMCkudG9VcHBlckNhc2Uo KSArIHNhdHpUZXh0LnNsaWNlKDEpOwogICAgICAgIHJldHVybiBlc2NhcGVIVE1MKHNhdHpUZXh0 KTsKICAgIH0KCiAgICAvLyA9PT09PSBTdGF0aXN0aWs6IEluZm8tTW9kYWxzID09PT09CgogICAg Ly8gRXJrbGFlcnVuZ3MtSW5oYWx0ZSBwcm8gUGFuZWwuIFdpcmQgdm9tIChpKS1CdXR0b24gaW0g UGFuZWwtS29wZgogICAgLy8gZ2VvZWZmbmV0LCB6ZWlndCB3ZWxjaGUgQ29kZXMgd2llIGdlemFl aGx0IHdlcmRlbi4KICAgIHZhciBTVEFUX0lORk9TID0gewogICAgICAgIHZlcnRlaWx1bmc6IHsK ICAgICAgICAgICAgdGl0ZWw6ICdTY2hpY2h0dmVydGVpbHVuZycsCiAgICAgICAgICAgIGh0bWw6 CiAgICAgICAgICAgICAgICAnPHA+QmFsa2VuIHBybyBQZXJzb24gbWl0IEZyw7xoL1Nww6R0L05h Y2h0L1NvbmRlcmRpZW5zdC1BbnRlaWxlbi4gU29ydGllcmJhciDDvGJlciBkYXMgRHJvcGRvd24g b2JlbiByZWNodHMuPC9wPicgKwogICAgICAgICAgICAgICAgJzxoND5aZWl0cmF1bTwvaDQ+JyAr CiAgICAgICAgICAgICAgICAnPHA+TnVyIDxiPjAxLjAxLiBkZXMgUGxhbnVuZ3NqYWhyZXM8L2I+ IGJpcyA8Yj5oZXV0ZSArIDE0IFRhZ2U8L2I+IHdlcmRlbiBnZXrDpGhsdCDigJQgVm9yYXVzLUVp bnRyYWd1bmdlbiB3ZWl0ZXIgaW4gZGVyIFp1a3VuZnQgZmxpZXNzZW4gPGk+bmljaHQ8L2k+IGVp biwgZGFtaXQgZGVyIFZlcmdsZWljaCBmYWlyIGJsZWlidC48L3A+JyArCiAgICAgICAgICAgICAg ICAnPGg0PlBlcnNvbmVua3JlaXM8L2g0PicgKwogICAgICAgICAgICAgICAgJzxwPlN0YW5kYXJk OiBhbGxlIERpZW5zdGdydXBwZW4gYXVzIGRlbSBEcm9wZG93biBvYmVuLiBOdXIgZWluZSBiZXN0 aW1tdGUgR3J1cHBlIGFuc2NoYXVlbj8gSW0gRHJvcGRvd24gYXVzd8OkaGxlbiDigJQgS1BJcywg TWlrcm90ZWFtLUhlYXRtYXAgdW5kIERldGFpbC1UYWJlbGxlIGZpbHRlcm4gc2ljaCBkYW5uIGdl bWVpbnNhbS48L3A+JyArCiAgICAgICAgICAgICAgICAnPGg0PldlbGNoZSBDb2RlcyB6w6RobGVu IHdvaGluPzwvaDQ+JyArCiAgICAgICAgICAgICAgICAnPHVsPicgKwogICAgICAgICAgICAgICAg JzxsaT48Yj5GcsO8aGRpZW5zdDwvYj46IGFsbGUgQ29kZXMgbWl0IDxjb2RlPkYtPC9jb2RlPi1Q cmVmaXggKEYtREdMLCBGLURHTE4sIEYtREdMUywgRi1XREYsIEYtV0RGTiwgRi1XREZTLCBGLUZC UCkuPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+U3DDpHRkaWVuc3Q8L2I+OiBhbGxl IENvZGVzIG1pdCA8Y29kZT5TLTwvY29kZT4tUHJlZml4LjwvbGk+JyArCiAgICAgICAgICAgICAg ICAnPGxpPjxiPk5hY2h0ZGllbnN0PC9iPjogYWxsZSBDb2RlcyBtaXQgPGNvZGU+Ti08L2NvZGU+ LVByZWZpeC48L2xpPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5Tb25kZXJkaWVuc3Q8L2I+ IChlaWdlbmVzIFNlZ21lbnQpOiA8Y29kZT5TRDwvY29kZT4sIDxjb2RlPlNFPC9jb2RlPi48L2xp PicgKwogICAgICAgICAgICAgICAgJzwvdWw+JyArCiAgICAgICAgICAgICAgICAnPHA+PGI+zqMg R2VzYW10PC9iPiA9IEZyw7xoICsgU3DDpHQgKyBOYWNodCArIFNvbmRlcmRpZW5zdC48L3A+JyAr CiAgICAgICAgICAgICAgICAnPGg0PldlaXRlcmUgU29ydGllci1GZWxkZXI8L2g0PicgKwogICAg ICAgICAgICAgICAgJzx1bD4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+U2Ftc3RhZ2UgLyBT b25udGFnZTwvYj46IERpZW5zdGUgYW4gU2EgYnp3LiBTbyDigJQgRmVpZXJ0YWdlIHrDpGhsZW4g c2VwYXJhdCB1bnRlciA8Yj5GZWllcnRhZ2U8L2I+LCBuaWNodCBkb3BwZWx0LjwvbGk+JyArCiAg ICAgICAgICAgICAgICAnPGxpPjxiPktvbXBsZXR0ZSBXb2NoZW5lbmRlbjwvYj46IFNhIDxpPnVu ZDwvaT4gU28gZGVyc2VsYmVuIFdvY2hlIGpld2VpbHMgbWl0IERpZW5zdC48L2xpPicgKwogICAg ICAgICAgICAgICAgJzxsaT48Yj5Gb3J0YmlsZHVuZzwvYj46IEF1RiwgRVRNLCBTZW0sIFRULCBU ekYuIDxiPkRpZW5zdHVudGVycmljaHQ8L2I+OiBEVS4gPGI+TGVocmdhbmc8L2I+OiBMRy48L2xp PicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5XYWNoZnJlaTwvYj46IHdmci4gPGI+RGllbnN0 ZnJlaTwvYj46IGRmci4gPGI+V2ljaHRpZ2UgZnJlaTwvYj46IMKnMjEgKyAyMWEuIDxiPkFaLUF1 c2dsZWljaDwvYj46IEFaQS4gPGI+U29uZGVydXJsYXViPC9iPjogU1UuPC9saT4nICsKICAgICAg ICAgICAgICAgICc8L3VsPicKICAgICAgICB9LAogICAgICAgIGZhaXJuZXNzOiB7CiAgICAgICAg ICAgIHRpdGVsOiAnV0UtICYgRlQtRmFpcm5lc3MnLAogICAgICAgICAgICBodG1sOgogICAgICAg ICAgICAgICAgJzxwPlZlcmdsZWljaHQgZGllIEJlbGFzdHVuZyBkdXJjaCA8Yj5Xb2NoZW5lbmQt PC9iPiB1bmQgPGI+RmVpZXJ0YWdzZGllbnN0ZTwvYj4gcHJvIFBlcnNvbiBtaXQgZGVtIEdydXBw ZW5kdXJjaHNjaG5pdHQuPC9wPicgKwogICAgICAgICAgICAgICAgJzxoND5aZWl0cmF1bTwvaDQ+ JyArCiAgICAgICAgICAgICAgICAnPHA+R2xlaWNoZXIgQ3V0IHdpZSDDvGJlcmFsbDogPGI+MDEu MDEuIGRlcyBQbGFudW5nc2phaHJlcyBiaXMgaGV1dGUgKyAxNCBUYWdlPC9iPiAoVmVyYmluZGxp Y2hrZWl0c2VuZGUpLiBWb3JhdXMtRWludHJhZ3VuZ2VuIGplbnNlaXRzIGRhdm9uIGZsaWXDn2Vu IG5pY2h0IGVpbi48L3A+JyArCiAgICAgICAgICAgICAgICAnPGg0PldFLURpZW5zdC1RdW90ZSAo SGF1cHRtZXRyaWspPC9oND4nICsKICAgICAgICAgICAgICAgICc8cD5aZWlndCwgd2VsY2hlbiA8 Yj5BbnRlaWwgZGVyIHZlcmbDvGdiYXJlbiBTYStTby1UYWdlPC9iPiBkaWUgUGVyc29uIERpZW5z dCBnZXNjaG9iZW4gaGF0LiBEYXMgbWFjaHQgUGVyc29uZW4gbWl0IHVudGVyc2NoaWVkbGljaCB2 aWVsIFVybGF1YiB2ZXJnbGVpY2hiYXIg4oCUIGplZGVyIGhhdCBkZW5zZWxiZW4gU09MTC1Qb29s LCBhYmVyIHVudGVyc2NoaWVkbGljaGUgSVNULVZlcmbDvGdiYXJrZWl0LjwvcD4nICsKICAgICAg ICAgICAgICAgICc8dWw+JyArCiAgICAgICAgICAgICAgICAnPGxpPjxiPlNPTEwtUG9vbDwvYj46 IGFsbGUgU2ErU28tVGFnZSBpbSBDdXQtWmVpdHJhdW0sIGRpZSA8aT5rZWluPC9pPiBGZWllcnRh ZyBzaW5kLiBGw7xyIGFsbGUgUGVyc29uZW4gaWRlbnRpc2NoLjwvbGk+JyArCiAgICAgICAgICAg ICAgICAnPGxpPjxiPlZlcmbDvGdiYXI8L2I+OiBTT0xMLVBvb2wgbWludXMgZWlnZW5lIEFid2Vz ZW5oZWl0ZW4gYW0gV0UgKFVybCwga3IsIEt1ciwgU1UsIExHLCBBdUYsIEVUTSwgU2VtLCBUVCwg VHpGLCBEVSkuPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+UXVvdGU8L2I+ID0gU2Er U28tRGllbnN0ZSAvIHZlcmbDvGdiYXIuIEJlaXNwaWVsOiAyNSB2b24gMzggPSA2NiAlLjwvbGk+ JyArCiAgICAgICAgICAgICAgICAnPGxpPkZyZWktQ29kZXMgKHdmciwgZGZyLCDCpzIxLCAyMWEs IEFaQSkgesOkaGxlbiA8Yj5uaWNodDwvYj4gYWxzIEFid2VzZW5oZWl0IOKAlCBzaWUgc2luZCDi gJ52ZXJmw7xnYmFyLCBhYmVyIGZyZWlnZXN0ZWxsdCIgdW5kIGdlbmF1IGRhcyBtYWNodCBkaWUg UXVvdGUgc2ljaHRiYXIuPC9saT4nICsKICAgICAgICAgICAgICAgICc8L3VsPicgKwogICAgICAg ICAgICAgICAgJzxoND5XRSBkdXJjaGdlYXJiZWl0ZXQ8L2g0PicgKwogICAgICAgICAgICAgICAg JzxwPk1pbmktU3BhbHRlIHJlY2h0czogd2llIHZpZWxlIFdvY2hlbmVuZGVuIGhhdHRlIGRpZSBQ ZXJzb24gU2EgPGk+dW5kPC9pPiBTbyBiZWlkZSBEaWVuc3QuIFplaWd0IERpY2h0ZSAoZHVyY2hn ZWhlbmQgYmVsYXN0ZXQpIHZzLiBWZXJ0ZWlsdW5nICgxIFRhZy9XRSkuPC9wPicgKwogICAgICAg ICAgICAgICAgJzxoND5GVC1UYWdlPC9oND4nICsKICAgICAgICAgICAgICAgICc8cD5EaWVuc3Qg YW4gZWluZW0gRmVpZXJ0YWcgKGVnYWwgb2IgV29jaGVudGFnIG9kZXIgV0UpLiBLYXJmcmVpdGFn LVNhIHrDpGhsdCBudXIgaGllciwgbmljaHQgZG9wcGVsdCBpbiBXRS48L3A+JyArCiAgICAgICAg ICAgICAgICAnPGg0PlBlcnNvbmVua3JlaXM8L2g0PicgKwogICAgICAgICAgICAgICAgJzxwPkR5 bmFtaXNjaDogUGVyc29uZW4gbWl0IDxiPuKJpSAxMCAlIGRlciBkdXJjaHNjaG5pdHRsaWNoZW4g R2VzYW10ZGllbnN0ZTwvYj4gKG1pbi4gMykuIFJlaW5lIFZvcmF1c3BsYW5lciB1bmQgTGFuZ3pl aXQtQWJ3ZXNlbmRlIGZhbGxlbiBhdXRvbWF0aXNjaCByYXVzLjwvcD4nICsKICAgICAgICAgICAg ICAgICc8aDQ+RmFyYnNrYWxhIChBYndlaWNodW5nIHZvbSDDmCk8L2g0PicgKwogICAgICAgICAg ICAgICAgJzx1bD4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+R3LDvG48L2I+OiBpbm5lcmhh bGIgwrEyMCAlLjwvbGk+JyArCiAgICAgICAgICAgICAgICAnPGxpPjxiPkdlbGI8L2I+OiDCsTIw 4oCTNTAgJS48L2xpPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5Sb3Q8L2I+OiDDvGJlciDC sTUwICUg4oCUIHdlciBoaWVyIGF1ZnRhdWNodCwgdHLDpGd0IGRldXRsaWNoIG1laHIgb2RlciB3 ZW5pZ2VyIGFscyBkaWUgR3J1cHBlLjwvbGk+JyArCiAgICAgICAgICAgICAgICAnPC91bD4nCiAg ICAgICAgfSwKICAgICAgICBtaWtyb3RlYW1zOiB7CiAgICAgICAgICAgIHRpdGVsOiAnTWlrcm90 ZWFtcyDigJQgZ2VtZWluc2FtZSBWZXJmw7xnYmFya2VpdCcsCiAgICAgICAgICAgIGh0bWw6CiAg ICAgICAgICAgICAgICAnPHA+UHJvIE1pa3JvdGVhbSAoU3RhbmRvcnQgw5cgRGllbnN0Z3J1cHBl LCB6LiBCLiA8aT5LYW1lbi1BPC9pPikgd2lyZCBmw7xyIGplZGVuIFRhZyBpbSBaZWl0cmF1bSBn ZXplaWd0LCB3aWUgdmllbGUgTWl0Z2xpZWRlciBpbSBEaWVuc3Qgd2FyZW4uPC9wPicgKwogICAg ICAgICAgICAgICAgJzxoND5GYXJiZW48L2g0PicgKwogICAgICAgICAgICAgICAgJzx1bD4nICsK ICAgICAgICAgICAgICAgICc8bGk+PGI+Um90PC9iPjogbmllbWFuZCBpbSBEaWVuc3QgdW5kIG1p bmQuIGVpbmUgUGVyc29uIGhhdCBlaW5lbiBGcmVpLUNvZGUgKHdmci9kZnIvwqcyMS8yMWEvQVpB KSDigJQgZGFzIFRlYW0gd29sbHRlIGtvbXBsZXR0IGZyZWkgaGFiZW4uPC9saT4nICsKICAgICAg ICAgICAgICAgICc8bGk+PGI+R3JhdTwvYj46IG5pZW1hbmQgaW0gRGllbnN0LCBhYmVyIG1pbmQu IGVpbmUgUGVyc29uIGlzdCBsZWdpdGltIGFid2VzZW5kIChVcmwva3IvS3VyL1NVL0xlaHJnYW5n L0ZvcnRiaWxkdW5nL0JWL2FiZy9CQU8vSE8pLiBLZWluZSBMw7xja2UgaW0gbmVnYXRpdmVuIFNp bm4uPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+TmV1dHJhbDwvYj46IDEgUGVyc29u IGltIERpZW5zdC48L2xpPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5HcsO8bjwvYj46IDIr IFBlcnNvbmVuIGltIERpZW5zdCAob2RlciBQb29sLVNwcmluZ2VyIGFrdGl2KS48L2xpPicgKwog ICAgICAgICAgICAgICAgJzxsaT48Yj5Hb2xkPC9iPjogYWxsZSBUZWFtLU1pdGdsaWVkZXIgaW0g RGllbnN0LjwvbGk+JyArCiAgICAgICAgICAgICAgICAnPC91bD4nICsKICAgICAgICAgICAgICAg ICc8aDQ+4oCeSW0gRGllbnN0IjwvaDQ+JyArCiAgICAgICAgICAgICAgICAnPHA+TnVyIEYtL1Mt L04tQ29kZXMgdW5kIFNvbmRlcmRpZW5zdCAoU0QvU0UpLiBGcmVpLVRhZ2UgKHdmci9kZnIvwqcy MS8yMWEvQVpBKSwgVXJsYXViLCBLcmFuaywgS3VyLCBMZWhyZ2FuZyBldGMuIHrDpGhsZW4gPGI+ bmljaHQ8L2I+IGFscyDigJ5kYSIuPC9wPicgKwogICAgICAgICAgICAgICAgJzxoND5TcGFsdGVu a29wZi1NYXJraWVydW5nZW48L2g0PicgKwogICAgICAgICAgICAgICAgJzx1bD4nICsKICAgICAg ICAgICAgICAgICc8bGk+PGI+V29jaGVuZW5kZW48L2I+IChTYS9Tbyk6IGdyYXVlciBIaW50ZXJn cnVuZC48L2xpPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5GZWllcnRhZ2U8L2I+OiByb3Rl ciBTdHJlaWZlbiwgVG9vbHRpcCBtaXQgRmVpZXJ0YWdzbmFtZW4uPC9saT4nICsKICAgICAgICAg ICAgICAgICc8bGk+PGI+RmVyaWVuPC9iPjogYmxhdWVyIFN0cmVpZmVuLCBUb29sdGlwIG1pdCBG ZXJpZW4tQmV6ZWljaG51bmcuPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+4pqgIFNv bmRlcnRlcm1pbjwvYj46IFdhcm5kcmVpZWNrIGltIFNwYWx0ZW5rb3BmLiBLbGljayDDtmZmbmV0 IGRpZSBCZXNjaHJlaWJ1bmcuPC9saT4nICsKICAgICAgICAgICAgICAgICc8L3VsPicgKwogICAg ICAgICAgICAgICAgJzxoND5LbGljay1Ba3Rpb25lbjwvaDQ+JyArCiAgICAgICAgICAgICAgICAn PHVsPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5LbGljayBhdWYgVGVhbS1OYW1lPC9iPjog a2xhcHB0IGRpZSBEZXRhaWwtWmVpbGVuIG1pdCBkZW4gZWluemVsbmVuIFBlcnNvbmVuIGF1Zi96 dS4gVGFnZXN6ZWxsZW4gemVpZ2VuIGRhbm4gZGVuIGpld2VpbGlnZW4gQ29kZSAoRi1ER0wsIFVy bCwga3IsIOKApikuPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+S2xpY2sgYXVmIOKa oDwvYj46IHplaWd0IGRpZSBTb25kZXJ0ZXJtaW4tRGV0YWlscy48L2xpPicgKwogICAgICAgICAg ICAgICAgJzwvdWw+JyArCiAgICAgICAgICAgICAgICAnPHA+PGk+RGllIE5lYmVud2FjaGVuLVZl cmFudHdvcnR1bmcgdW5kIGRpZSBUYWdlcy1BbnRlaWxlIHBybyBUZWFtIGhhYmVuIGpldHp0IGVp Z2VuZSBLbGFwcGJsw7Zja2UgdW50ZXJoYWxiIOKAlCBzaWVoZSBkZXJlbiBlaWdlbmUgaS1CdXR0 b25zIGbDvHIgRGV0YWlscy48L2k+PC9wPicKICAgICAgICB9LAogICAgICAgIG5lYmVud2FjaGVu OiB7CiAgICAgICAgICAgIHRpdGVsOiAnVkkzLURHTC1WZXJhbnR3b3J0dW5nIE5lYmVud2FjaGVu JywKICAgICAgICAgICAgaHRtbDoKICAgICAgICAgICAgICAgICc8cD5adXPDpHR6bGljaGUgSGVh dG1hcCBmw7xyIGRpZSBkcmVpIE5lYmVud2FjaGVuIChCb2NodW0sIEFybnNiZXJnLCBGcmV1ZGVu YmVyZykgw5cgQS9CL0MuPC9wPicgKwogICAgICAgICAgICAgICAgJzxoND5XYW5uIHdpcmQgZWlu ZSBaZWxsZSBncsO8bj88L2g0PicgKwogICAgICAgICAgICAgICAgJzxwPkVpbmUgWmVsbGUgd2ly ZCA8Yj5ncsO8bjwvYj4sIHdlbm4gYW4gZGVtIFRhZyBtaW5kZXN0ZW5zIGVpbiBNaXRnbGllZCBk aWVzZXMgVGVhbXMgaW4gZGVyIDxiPjEuIG9kZXIgMi4gVkkzLURHTC1WZXJhbnR3b3J0dW5nPC9i PiBlaW5lciBTY2hpY2h0IChGcsO8aC9TcMOkdC9OYWNodCkgc3RlaHQg4oCUIGFsc28gc2NocmFm ZmllcnQgZGFyZ2VzdGVsbHQgd8OkcmUuIFNvbnN0IGJsZWlidCBkaWUgWmVsbGUgPGI+Z3JhdTwv Yj4uPC9wPicgKwogICAgICAgICAgICAgICAgJzxwPkRpZSBWZXJhbnR3b3J0dW5nIHdpcmQgZHlu YW1pc2NoIG5hY2ggPGI+RnVua3Rpb25zLVJhbmc8L2I+IChER0wvREdMaW4gJmd0OyAzLiBNYW5u L0ZyYXUgJmd0OyBXYWNobGVpdHVuZykgdW5kIDxiPlBvc2l0aW9uPC9iPiBkZXIgamV3ZWlscyBk aWVuc3QtbGVpc3RlbmRlbiBER0wtUGVyc29uZW4gZXJtaXR0ZWx0IOKAlCBpZGVudGlzY2ggenVy IEdyaWQtTG9naWsuIERhIGRpZSBIYXVwdHdhY2hlbiBLYW1lbiB1bmQgSGFnZW4gZGllIFZlcmFu dHdvcnR1bmcgbm9ybWFsZXJ3ZWlzZSBzdGVsbGVuLCBzaW5kIGdyw7xuZSBUYWdlIGF1ZiBkZW4g TmViZW53YWNoZW4gZWluIEluZGlrYXRvciBmw7xyIGVpbmUgU29uZGVyLUtvbnN0ZWxsYXRpb24g KEzDvGNrZSBhdWYgZGVyIEhhdXB0d2FjaGUsIENyb3NzLVdhY2hlbi1FaW5zYXR6KS48L3A+Jwog ICAgICAgIH0sCiAgICAgICAgdGFnZXNhbnRlaWxlOiB7CiAgICAgICAgICAgIHRpdGVsOiAnVGFn ZXMtQW50ZWlsZSBwcm8gVGVhbScsCiAgICAgICAgICAgIGh0bWw6CiAgICAgICAgICAgICAgICAn PHA+VGFnZXMtQW50ZWlsZSBwcm8gVGVhbSBhbHMgZ2VzdGFwZWx0ZXIgMTAwJS1CYWxrZW46IHJv dCAvIGdyYXUgLyBuZXV0cmFsIC8gZ3LDvG4gLyBnb2xkLjwvcD4nICsKICAgICAgICAgICAgICAg ICc8aDQ+U29ydGllci1PcHRpb25lbjwvaDQ+JyArCiAgICAgICAgICAgICAgICAnPHVsPicgKwog ICAgICAgICAgICAgICAgJzxsaT48Yj5SZWloZW5mb2xnZTwvYj46IFN0YW5kYXJkLVJlaWhlbmZv bGdlIGF1cyBkZXIgQWRtaW4tS29uZmlndXJhdGlvbi48L2xpPicgKwogICAgICAgICAgICAgICAg JzxsaT48Yj5Mw7xja2VuIHp1ZXJzdDwvYj46IHByb2JsZW1hdGlzY2hlIFRlYW1zICh2aWVsZSBy b3RlIFRhZ2UpIHp1ZXJzdC48L2xpPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5Hb2xkIHp1 ZXJzdDwvYj46IGJlc3QgZ2VzdGVsbHRlIFRlYW1zIChhbGxlIE1pdGdsaWVkZXIgaMOkdWZpZyBn bGVpY2h6ZWl0aWcgaW0gRGllbnN0KS48L2xpPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5N aW5kLiAxIGRhPC9iPjogUXVvdGUgZGVyIFRhZ2UgbWl0IEFiZGVja3VuZyAobWluZC4gMSBQZXJz b24gaW0gRGllbnN0KS48L2xpPicgKwogICAgICAgICAgICAgICAgJzwvdWw+JyArCiAgICAgICAg ICAgICAgICAnPHA+RGllIDxiPkFiZGVja3VuZyAlPC9iPiByZWNodHMgaXN0IGRlciBBbnRlaWwg ZGVyIFRhZ2UgbWl0IG1pbmRlc3RlbnMgMSBQZXJzb24gaW0gRGllbnN0LjwvcD4nICsKICAgICAg ICAgICAgICAgICc8cD5Qb29sLVRlYW1zIChMRC1XRCwgU08tV0QpIHdlcmRlbiBhdXNnZWtsYW1t ZXJ0IOKAlCBzaWUgaGFiZW4gbnVyIDEgUGVyc29uIHVuZCBrZWluZW4gc2lubnZvbGxlbiBUYWdl cy1BbnRlaWwuPC9wPicKICAgICAgICB9LAogICAgICAgIGFid2VzZW5oZWl0OiB7CiAgICAgICAg ICAgIHRpdGVsOiAnQWJ3ZXNlbmhlaXRlbicsCiAgICAgICAgICAgIGh0bWw6CiAgICAgICAgICAg ICAgICAnPHA+w5xiZXJzaWNodCBkZXIgTmljaHQtRGllbnN0LUNvZGVzLiBLbGljayBhdWYgZWlu ZSBLYWNoZWwgemVpZ3QgZGllIFRvcC1QZXJzb25lbi48L3A+JyArCiAgICAgICAgICAgICAgICAn PHA+PGI+SGlud2Vpczo8L2I+IEtyYW5raGVpdHN0YWdlICg8Y29kZT5rcjwvY29kZT4pIHdlcmRl biBoaWVyIGJld3Vzc3QgbmljaHQgYXVzZ2V3ZXJ0ZXQuIFNpZSBzaW5kIG51ciBpbiBkZXIgRGV0 YWlsdGFiZWxsZSBnYW56IHVudGVuIHNpY2h0YmFyLjwvcD4nICsKICAgICAgICAgICAgICAgICc8 aDQ+S2F0ZWdvcmllbjwvaDQ+JyArCiAgICAgICAgICAgICAgICAnPHVsPicgKwogICAgICAgICAg ICAgICAgJzxsaT48Yj5LdXI8L2I+OiA8Y29kZT5LdXI8L2NvZGU+IOKAlCBTcG9ydGt1cmVuLCBl aWdlbnN0w6RuZGlnZSBLYXRlZ29yaWUuPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+ VXJsYXViPC9iPjogPGNvZGU+VXJsPC9jb2RlPi48L2xpPicgKwogICAgICAgICAgICAgICAgJzxs aT48Yj5MZWhyZ2FuZyAvIEZvcnRiaWxkdW5nPC9iPjogPGNvZGU+TEc8L2NvZGU+LCA8Y29kZT5U VDwvY29kZT4sIDxjb2RlPkF1RjwvY29kZT4sIDxjb2RlPkZCPC9jb2RlPiwgPGNvZGU+U2VtPC9j b2RlPiwgPGNvZGU+RVRNPC9jb2RlPiwgPGNvZGU+RFU8L2NvZGU+LjwvbGk+JyArCiAgICAgICAg ICAgICAgICAnPGxpPjxiPkFaLUF1c2dsZWljaCAoMjFlci1UYWdlKTwvYj46IDxjb2RlPsKnMjE8 L2NvZGU+LCA8Y29kZT4yMWE8L2NvZGU+LCA8Y29kZT5BWkE8L2NvZGU+LjwvbGk+JyArCiAgICAg ICAgICAgICAgICAnPC91bD4nCiAgICAgICAgfSwKICAgICAgICBwcm9zYTogewogICAgICAgICAg ICB0aXRlbDogJ0RldGFpbGFuYWx5c2UgcHJvIFBlcnNvbicsCiAgICAgICAgICAgIGh0bWw6CiAg ICAgICAgICAgICAgICAnPHA+RsO8ciBqZWRlIFBlcnNvbiB3aXJkIGVpbiBrdXJ6ZXIgVGV4dCBh dXMgUmVnZWwtQmF1c3RlaW5lbiBnZW5lcmllcnQuIERpZSBSZWdlbG4gc2luZCByZWxhdGl2IHp1 bSBEdXJjaHNjaG5pdHQgZGVyIGFrdHVlbGxlbiBBdXN3YWhsIChHcnVwcGVuLUZpbHRlciArIFN0 YWItVG9nZ2xlIHdpcmtlbikuIFNvcnRpZXJ1bmc6IG5hY2ggPGI+U3RhbmRvcnQgKyBEaWVuc3Rn cnVwcGU8L2I+IChLYW1lbi1BIOKGkiBTb2VzdC1XRCkuPC9wPicgKwogICAgICAgICAgICAgICAg JzxoND5TY2hpY2h0IC8gRnVua3Rpb248L2g0PicgKwogICAgICAgICAgICAgICAgJzx1bD4nICsK ICAgICAgICAgICAgICAgICc8bGk+PGI+R2VzYW10ICZndDsgMSwyw5fDmDwvYj4g4oaSIOKAnm1l aHIgRGllbnN0ZSBhbHMgw7xibGljaCIgwrcgPGI+Jmx0OyAwLDfDl8OYPC9iPiDihpIg4oCedW50 ZXJkdXJjaHNjaG5pdHRsaWNoIHdlbmlnZSIuPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+ PGI+TmFjaHQtIC8gRnLDvGgtIC8gU3DDpHRhbnRlaWwgJmd0OyAxLDPDlyDDmC1BbnRlaWw8L2I+ IOKGkiDigJ52ZXJtZWhydCDigKYiLjwvbGk+JyArCiAgICAgICAgICAgICAgICAnPGxpPjxiPnxm cnVlaCDiiJIgc3BhZXR8IC8gKGZydWVoICsgc3BhZXQpICZsdDsgMCwxNTwvYj4g4oaSIOKAnmlu IEZyw7xoIHVuZCBTcMOkdCBhdXNnZWdsaWNoZW4iLjwvbGk+JyArCiAgICAgICAgICAgICAgICAn PGxpPjxiPkRHTCAmZ3Q7IDEsMsOXw5g8L2I+LCA8Yj5XREYgJmd0OyAzMCAlICZhbXA7ICZndDsg MSwyw5fDmDwvYj4sIDxiPkZCUCAmZ3Q7IDEsNcOXw5g8L2I+LCA8Yj5Tb25kZXJkaWVuc3QgJmd0 OyAxLDXDl8OYPC9iPi48L2xpPicgKwogICAgICAgICAgICAgICAgJzwvdWw+JyArCiAgICAgICAg ICAgICAgICAnPGg0PldvY2hlbmVuZGUgLyBGZWllcnRhZyAvIEJlbGFzdHVuZ3MtRGljaHRlPC9o ND4nICsKICAgICAgICAgICAgICAgICc8dWw+JyArCiAgICAgICAgICAgICAgICAnPGxpPjxiPldF LURpZW5zdGUgJmd0OyAxLDPDl8OYPC9iPiBvZGVyIDxiPj0gMDwvYj4gYmVpICZndDsgMTAgR2Vz YW10ZGllbnN0ZW4uPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+V0UgZHVyY2hnZWFy YmVpdGV0IOKJpSA0IHVuZCAmZ3Q7IDEsM8OXw5g8L2I+IOKGkiDigJ5ob2hlIEJlbGFzdHVuZ3Mt RGljaHRlIi48L2xpPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5GZWllcnRhZy1EaWVuc3Rl IOKJpSAzIHVuZCAmZ3Q7IDEsM8OXw5g8L2I+IOKGkiDigJ7DvGJlcmR1cmNoc2Nobml0dGxpY2gi LjwvbGk+JyArCiAgICAgICAgICAgICAgICAnPC91bD4nICsKICAgICAgICAgICAgICAgICc8aDQ+ TWlrcm90ZWFtLUJlenVnPC9oND4nICsKICAgICAgICAgICAgICAgICc8dWw+JyArCiAgICAgICAg ICAgICAgICAnPGxpPjxiPlBvb2wtUGVyc29uIChMRC9TTyk8L2I+OiBBbnphaGwgU3ByaW5nZXIt VGFnZSBmw7xyIFppZWwtU3RhbmRvcnQuPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+ UmVndWzDpHJlcyBUZWFtIG1pdCDiiaUgMjAgJSBMw7xja2VudGFnZW48L2I+OiBIaW53ZWlzIGFs cyBLb250ZXh0LjwvbGk+JyArCiAgICAgICAgICAgICAgICAnPC91bD4nICsKICAgICAgICAgICAg ICAgICc8aDQ+QWJ3ZXNlbmhlaXRlbjwvaDQ+JyArCiAgICAgICAgICAgICAgICAnPHVsPicgKwog ICAgICAgICAgICAgICAgJzxsaT48Yj5VcmxhdWIgJmd0OyAxLDTDl8OYPC9iPiwgPGI+TGVocmdh bmcgJmd0OyA1PC9iPiwgPGI+QVpBICZndDsgNTwvYj4g4oaSIGpld2VpbHMgRXJ3w6RobnVuZy48 L2xpPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5LdXIgJmd0OyAwPC9iPiDihpIgSGlud2Vp cyBhbHMgSW5mbyAoa2VpbiBXYXJuc2lnbmFsKS48L2xpPicgKwogICAgICAgICAgICAgICAgJzxs aT48Yj5LcmFuazwvYj4gd2lyZCBoaWVyIDxiPm5pY2h0PC9iPiBlcnfDpGhudCAoRGF0ZW5zY2h1 dHopLjwvbGk+JyArCiAgICAgICAgICAgICAgICAnPC91bD4nICsKICAgICAgICAgICAgICAgICc8 cD5QZXJzb25lbiBtaXQgd2VuaWdlciBhbHMgMyBHZXNhbXRkaWVuc3RlbiB3ZXJkZW4gw7xiZXJz cHJ1bmdlbiAoenUgd2VuaWcgRGF0ZW5iYXNpcykuPC9wPicKICAgICAgICB9CiAgICB9OwoKICAg IGZ1bmN0aW9uIHN0YXRJbmZvWmVpZ2VuKHNjaGx1ZXNzZWwpIHsKICAgICAgICB2YXIgaW5mbyA9 IFNUQVRfSU5GT1Nbc2NobHVlc3NlbF07CiAgICAgICAgaWYgKCFpbmZvKSByZXR1cm47CiAgICAg ICAgdmFyIGZ1c3MgPSAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIiBpZD0ic3RhdHMt aW5mby1zY2hsaWVzc2VuIj5WZXJzdGFuZGVuPC9idXR0b24+JzsKICAgICAgICBtb2RhbFplaWdl bignSW5mbzogJyArIGluZm8udGl0ZWwsIGluZm8uaHRtbCwgZnVzcywgbnVsbCk7CiAgICAgICAg ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLWluZm8tc2NobGllc3NlbicpLmFkZEV2ZW50 TGlzdGVuZXIoJ2NsaWNrJywgbW9kYWxTY2hsaWVzc2VuKTsKICAgIH0KCiAgICBmdW5jdGlvbiBr cGlLYXJ0ZSh3ZXJ0LCBsYWJlbCwgZmFyYmUpIHsKICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9 InN0YXRzLWtwaSI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdGF0cy1rcGktd2VydCIg c3R5bGU9ImNvbG9yOicgKyBmYXJiZSArICciPicgKyB3ZXJ0ICsgJzwvZGl2PicgKwogICAgICAg ICAgICAnPGRpdiBjbGFzcz0ic3RhdHMta3BpLWxhYmVsIj4nICsgbGFiZWwgKyAnPC9kaXY+PC9k aXY+JzsKICAgIH0KCiAgICAvLyBCYWxrZW4tQW5zaWNodDogcHJvIFBlcnNvbiBlaW4gZ2VzdGFw ZWx0ZXIgQmFsa2VuLCBkZXNzZW4gU2VnbWVudGUKICAgIC8vIHNpY2ggbmFjaCBkZXIgYWt0dWVs bCBha3RpdmVuIEthdGVnb3JpZSByaWNodGVuIChTY2hpY2h0ZW4gLwogICAgLy8gV29jaGVuZW5k ZGllbnN0ZSAvIEZvcnRiaWxkdW5nIC8gQWJ3ZXNlbmhlaXQpLiBTb3J0aWVydW5nIG5hY2ggZGVy CiAgICAvLyBLYXRlZ29yaWUtU3VtbWUsIFJpY2h0dW5nIHVtc2NoYWx0YmFyLgogICAgLy8KICAg IC8vIEtSQU5LIGlzdCBiZXd1c3N0IG5pcmdlbmR3byBlbnRoYWx0ZW4g4oCUIERhdGVuc2NodXR6 LUFuZm9yZGVydW5nLgogICAgZnVuY3Rpb24gYmFsa2VuUmVuZGVybihzdGF0cykgewogICAgICAg IHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0cy1jaGFydC1iYWxrZW4nKTsK ICAgICAgICBpZiAoIWVsKSByZXR1cm47CiAgICAgICAgaWYgKCFzdGF0cy5sZW5ndGgpIHsKICAg ICAgICAgICAgZWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9ImFkbWluLWVtcHR5Ij4nICsKICAg ICAgICAgICAgICAgICcnICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJhZG1pbi1lbXB0 eS10aXRlbCI+S2VpbmUgU3RhdGlzdGlrLURhdGVuPC9kaXY+JyArCiAgICAgICAgICAgICAgICAn PGRpdiBjbGFzcz0iYWRtaW4tZW1wdHktdGV4dCI+SW0gYWt0dWVsbGVuIEZpbHRlciBzaW5kIGtl aW5lIFBlcnNvbmVuIG1pdCBFaW50cmFlZ2VuLiBGaWx0ZXIgenVydWVja3NldHplbiBvZGVyIERh dGVuIGVyZmFzc2VuLjwvZGl2PicgKwogICAgICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAg ICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBrYXQgPSBTVEFUX0tBVEVHT1JJRU5b X3N0YXRLYXRlZ29yaWVdIHx8IFNUQVRfS0FURUdPUklFTi5zY2hpY2h0ZW47CiAgICAgICAgdmFy IHJpY2h0dW5nID0gX3N0YXRTb3J0UmljaHR1bmc7CgogICAgICAgIC8vIFNvcnRpZXItS29waWUu IEJlaSBHbGVpY2hzdGFuZCBhbHBoYWJldGlzY2ggbmFjaCBOYW1lIGFscyBUaWVicmVha2VyLgog ICAgICAgIHZhciByb3dzID0gc3RhdHMuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKICAg ICAgICAgICAgdmFyIGF2ID0gX3N0YXRLYXRTdW1tZShhLCBrYXQpLCBidiA9IF9zdGF0S2F0U3Vt bWUoYiwga2F0KTsKICAgICAgICAgICAgaWYgKGF2ICE9PSBidikgcmV0dXJuIHJpY2h0dW5nID09 PSAnZGVzYycgPyBidiAtIGF2IDogYXYgLSBidjsKICAgICAgICAgICAgcmV0dXJuIChhLm5hbWUg fHwgJycpLmxvY2FsZUNvbXBhcmUoYi5uYW1lIHx8ICcnLCAnZGUnKTsKICAgICAgICB9KTsKCiAg ICAgICAgLy8gU2thbGllcnVuZyBkZXMgSGF1cHRiYWxrZW5zIGF1ZiBkaWUgbWF4aW1hbGUgS2F0 ZWdvcmllLVN1bW1lLgogICAgICAgIHZhciBtYXhTdW0gPSBNYXRoLm1heC5hcHBseShudWxsLCBy b3dzLm1hcChmdW5jdGlvbihzKSB7IHJldHVybiBfc3RhdEthdFN1bW1lKHMsIGthdCk7IH0pKSB8 fCAxOwogICAgICAgIC8vIEV4dHJhLVNwYWx0ZSAoei5CLiBrb21wbGV0dGUgV0UpOiBlaWdlbmUg U2thbGllcnVuZwogICAgICAgIHZhciBtYXhFeHRyYSA9IDE7CiAgICAgICAgaWYgKGthdC5leHRy YSkgewogICAgICAgICAgICBtYXhFeHRyYSA9IE1hdGgubWF4LmFwcGx5KG51bGwsIHJvd3MubWFw KGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHNba2F0LmV4dHJhLmZlbGRdIHx8IDA7IH0pKSB8fCAxOwog ICAgICAgIH0KCiAgICAgICAgLy8gU3BhbHRlbi1Lb3BmemVpbGU6IFNlZ21lbnQtTGFiZWxzICsg U3VtbWVuLUxhYmVsICsgZ2dmLiBFeHRyYQogICAgICAgIHZhciBzZWdMYWJlbHMgPSBrYXQuc2Vn bWVudGUubWFwKGZ1bmN0aW9uKHNlZykgewogICAgICAgICAgICByZXR1cm4gJzxzcGFuIGNsYXNz PSJzdGF0cy1iYWxrZW4tc2VnLWxhYmVsIiBzdHlsZT0iY29sb3I6JyArIGVzY2FwZUF0dHIoc2Vn LmZhcmJlKSArICciPicgKyBlc2NhcGVIVE1MKHNlZy5sYWJlbCkgKyAnPC9zcGFuPic7CiAgICAg ICAgfSkuam9pbignIMK3ICcpOwogICAgICAgIC8vIM6jLUxhYmVsOiBkYXMgZ2VzYW10ZSDOoy1M YWJlbCAoei5CLiAizqMgRGllbnN0ZSIpIGlzdCBrbGlja2JhciB1bmQKICAgICAgICAvLyBvZWZm bmV0IGRhcyBJbmZvLU1vZGFsLiBGcnVlaGVyIGdhYiBlcyBlaW4genVzYWV0emxpY2hlcyAoPykt SWNvbgogICAgICAgIC8vIOKAlCBlbnRmZXJudCwgd2VpbCBkaWUgZG90dGVkLVVuZGVybGluZS1B ZmZvcmRhbmNlIHBsdXMgZGVyIGdlc2FtdGUKICAgICAgICAvLyBrbGlja2JhcmUgVGV4dCBhbHMg SGlud2VpcyBhdXNyZWljaGVuLgogICAgICAgIHZhciBzaWdtYVRpcCA9ICfOoyA9IFN1bW1lLiBL bGljayDDtmZmbmV0IGRpZSBFcmtsw6RydW5nLic7CiAgICAgICAgdmFyIHNvcnRMYWJlbEh0bWwg PSAnPHNwYW4gY2xhc3M9InN0YXRzLXNpZ21hLWhpbGZlIiBkYXRhLXNpZ21hLWluZm89IjEiIHRp dGxlPSInICsgZXNjYXBlQXR0cihzaWdtYVRpcCkgKyAnIj4nICsgZXNjYXBlSFRNTChrYXQuc29y dExhYmVsKSArICc8L3NwYW4+JzsKICAgICAgICAvLyBLYXRlZ29yaWUtQmVzY2hyZWlidW5nIChv cHRpb25hbCwgbnVyIGZ1ZXIgS2F0ZWdvcmllbiBtaXQga29udGV4dHVlbGxlcgogICAgICAgIC8v IEVybGFldXRlcnVuZyAtLSB6LkIuICJFaW5nZXNwcnVuZ2VuIjogd2FzIHdpcmQgZWlnZW50bGlj aCBnZXphZWhsdD8pLgogICAgICAgIHZhciBiZXNjaHJlaWJ1bmdIdG1sID0gJyc7CiAgICAgICAg aWYgKGthdC5iZXNjaHJlaWJ1bmcpIHsKICAgICAgICAgICAgYmVzY2hyZWlidW5nSHRtbCA9ICc8 cCBjbGFzcz0ic3RhdHMta2F0LWJlc2NocmVpYnVuZyI+JyArIGthdC5iZXNjaHJlaWJ1bmcgKyAn PC9wPic7CiAgICAgICAgfQogICAgICAgIHZhciBrb3BmID0gYmVzY2hyZWlidW5nSHRtbCArICc8 ZGl2IGNsYXNzPSJzdGF0cy1iYWxrZW4ta29wZiI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNz PSJzdGF0cy1iYWxrZW4tbmFtZSI+PC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJz dGF0cy1iYWxrZW4tYmFyLXdyYXAiPjxzcGFuIGNsYXNzPSJzdGF0cy1iYWxrZW4ta29wZi1sYWJl bCI+JyArIHNlZ0xhYmVscyArICc8L3NwYW4+PC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNs YXNzPSJzdGF0cy1iYWxrZW4tdG90YWwiPjxzcGFuIGNsYXNzPSJzdGF0cy1iYWxrZW4ta29wZi1s YWJlbCI+JyArIHNvcnRMYWJlbEh0bWwgKyAnICcgKyAocmljaHR1bmcgPT09ICdkZXNjJyA/ICfi hpMnIDogJ+KGkScpICsgJzwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAgICAgKGthdC5leHRyYSA/ ICc8ZGl2IGNsYXNzPSJzdGF0cy1iYWxrZW4tZXh0cmEiPjxzcGFuIGNsYXNzPSJzdGF0cy1iYWxr ZW4ta29wZi1sYWJlbCIgc3R5bGU9ImNvbG9yOicgKyBlc2NhcGVBdHRyKGthdC5leHRyYS5mYXJi ZSkgKyAnIj4nICsgZXNjYXBlSFRNTChrYXQuZXh0cmEubGFiZWwpICsgJzwvc3Bhbj48L2Rpdj4n IDogJycpICsKICAgICAgICAgICAgJzwvZGl2Pic7CgogICAgICAgIHZhciBodG1sID0gJyc7CiAg ICAgICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgdmFyIHN1bW1lID0g X3N0YXRLYXRTdW1tZShzLCBrYXQpOwogICAgICAgICAgICAvLyBTZWdtZW50ZSBiYXVlbgogICAg ICAgICAgICB2YXIgc2VnSHRtbCA9ICcnOwogICAgICAgICAgICBrYXQuc2VnbWVudGUuZm9yRWFj aChmdW5jdGlvbihzZWcpIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gc1tzZWcuZmVsZF0gfHwg MDsKICAgICAgICAgICAgICAgIGlmICh2ID09PSAwKSByZXR1cm47CiAgICAgICAgICAgICAgICB2 YXIgYnJlaXRlID0gKHYgLyBtYXhTdW0pICogMTAwOwogICAgICAgICAgICAgICAgc2VnSHRtbCAr PSAnPGRpdiBjbGFzcz0ic3RhdHMtYmFsa2VuLXNlZ21lbnQiIHN0eWxlPSJ3aWR0aDonICsgYnJl aXRlICsgJyU7YmFja2dyb3VuZDonICsgZXNjYXBlQXR0cihzZWcuZmFyYmUpICsgJyIgdGl0bGU9 IicgKyBlc2NhcGVBdHRyKHNlZy5sYWJlbCArICc6ICcgKyB2KSArICciPicgKyB2ICsgJzwvZGl2 Pic7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAvLyBFeHRyYS1TcGFsdGUgKGtvbXBsZXR0 ZSBXRSkKICAgICAgICAgICAgdmFyIGV4dHJhSHRtbCA9ICcnOwogICAgICAgICAgICBpZiAoa2F0 LmV4dHJhKSB7CiAgICAgICAgICAgICAgICB2YXIgZXYgPSBzW2thdC5leHRyYS5mZWxkXSB8fCAw OwogICAgICAgICAgICAgICAgdmFyIGViID0gKGV2IC8gbWF4RXh0cmEpICogMTAwOwogICAgICAg ICAgICAgICAgZXh0cmFIdG1sID0gJzxkaXYgY2xhc3M9InN0YXRzLWJhbGtlbi1leHRyYSIgdGl0 bGU9IicgKyBlc2NhcGVBdHRyKGthdC5leHRyYS5sYWJlbCArICc6ICcgKyBldikgKyAnIj4nICsK ICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic3RhdHMtYmFsa2VuLWtvbnRleHQtYmFy Ij48ZGl2IGNsYXNzPSJzdGF0cy1iYWxrZW4ta29udGV4dC1maWxsIiBzdHlsZT0id2lkdGg6JyAr IGViICsgJyU7YmFja2dyb3VuZDonICsgZXNjYXBlQXR0cihrYXQuZXh0cmEuZmFyYmUpICsgJyI+ PC9kaXY+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InN0YXRzLWJh bGtlbi1rb250ZXh0LXdlcnQiPicgKyBldiArICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAg ICAnPC9kaXY+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNz PSJzdGF0cy1iYWxrZW4temVpbGUiPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InN0 YXRzLWJhbGtlbi1uYW1lIiB0aXRsZT0iJyArIGVzY2FwZUF0dHIoX3N0YXRBbnplaWdlTmFtZShz KSkgKyAnIj4nICsgZXNjYXBlSFRNTChfc3RhdEFuemVpZ2VOYW1lKHMpKSArICc8L2Rpdj4nICsK ICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdGF0cy1iYWxrZW4tYmFyLXdyYXAiPicgKyBz ZWdIdG1sICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InN0YXRzLWJh bGtlbi10b3RhbCIgdGl0bGU9IicgKyBlc2NhcGVBdHRyKGthdC5zb3J0TGFiZWwgKyAnOiAnICsg c3VtbWUpICsgJyI+JyArIHN1bW1lICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgZXh0cmFI dG1sICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIH0pOwoKICAgICAgICBlbC5p bm5lckhUTUwgPSAnPGRpdiBjbGFzcz0ic3RhdHMtYmFsa2VuLWNvbnRhaW5lciI+JyArIGtvcGYg KyBodG1sICsgJzwvZGl2Pic7CiAgICAgICAgLy8gS2xpY2sgYXVmIM6jLVNwYW4gaW0gS29wZiDD tmZmbmV0IGVpbiBrbmFwcGVzIEVya2zDpHJ1bmdzLU1vZGFsLgogICAgICAgIGVsLnF1ZXJ5U2Vs ZWN0b3JBbGwoJ1tkYXRhLXNpZ21hLWluZm9dJykuZm9yRWFjaChmdW5jdGlvbihzcCkgewogICAg ICAgICAgICBzcC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIF96ZWlnZVNpZ21hSW5mbyk7CiAg ICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gX3plaWdlU2lnbWFJbmZvKCkgewogICAgICAg IHZhciBodG1sID0KICAgICAgICAgICAgJzxwPjxiPs6jPC9iPiBpc3QgZGVyIGdyaWVjaGlzY2hl IEdyb8OfYnVjaHN0YWJlIFNpZ21hIHVuZCBzdGVodCBpbiBkZXIgTWF0aGVtYXRpayBmw7xyIGVp bmUgPGI+U3VtbWU8L2I+LjwvcD4nICsKICAgICAgICAgICAgJzxwPkluIGRpZXNlciBTdGF0aXN0 aWsgYmVkZXV0ZXQgPGNvZGU+zqMgRGllbnN0ZTwvY29kZT4gei5CLiDigJ5TdW1tZSBhbGxlciBE aWVuc3RlIiAoRnLDvGggKyBTcMOkdCArIE5hY2h0ICsgU29uZGVyZGllbnN0KS4gRW50c3ByZWNo ZW5kOjwvcD4nICsKICAgICAgICAgICAgJzx1bD4nICsKICAgICAgICAgICAgJzxsaT48Yj7OoyBX RStGZWllcnRhZzwvYj46IFNhK1NvLURpZW5zdGUgKyBGZWllcnRhZ3MtRGllbnN0ZSBwcm8gUGVy c29uLjwvbGk+JyArCiAgICAgICAgICAgICc8bGk+PGI+zqMgRm9ydGJpbGR1bmc8L2I+OiBGb3J0 YmlsZHVuZyArIERpZW5zdHVudGVycmljaHQgKyBMZWhyZ2FuZy48L2xpPicgKwogICAgICAgICAg ICAnPGxpPjxiPs6jIEFid2VzZW5oZWl0PC9iPjogVXJsYXViICsgS3VyICsgU29uZGVydXJsYXVi LjwvbGk+JyArCiAgICAgICAgICAgICc8L3VsPicgKwogICAgICAgICAgICAnPHA+RGllIFNwYWx0 ZSBnYW56IHJlY2h0cyBpbiBqZWRlciBQZXJzb24tWmVpbGUgemVpZ3QgZGllc2VuIFN1bW1lbndl cnQuPC9wPic7CiAgICAgICAgdmFyIGZ1c3MgPSAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmlt YWVyIiBpZD0ic2lnbWEtaW5mby1zY2hsaWVzc2VuIj5WZXJzdGFuZGVuPC9idXR0b24+JzsKICAg ICAgICBtb2RhbFplaWdlbignV2FzIGJlZGV1dGV0IM6jPycsIGh0bWwsIGZ1c3MsIG51bGwpOwog ICAgICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2lnbWEtaW5mby1zY2hs aWVzc2VuJyk7CiAgICAgICAgaWYgKGJ0bikgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywg bW9kYWxTY2hsaWVzc2VuKTsKICAgIH0KCiAgICAvLyBJZGVtcG90ZW50ZXIgTGlzdGVuZXItSG9v ayBmdWVyIEthdGVnb3JpZS1CdXR0b25zICsgUmljaHR1bmdzLUtub3BmLgogICAgLy8gV2lyZCBh dXMgc3RhdGlzdGlrUmVuZGVybigpIGJlaSBqZWRlbSBSZW5kZXJuIGF1ZmdlcnVmZW4sIHJlZ2lz dHJpZXJ0CiAgICAvLyBkaWUgSGFuZGxlciBhYmVyIG51ciBiZWltIGVyc3RlbiBUcmVmZmVyIChk YXRhLWZlcnRpZykuCiAgICBmdW5jdGlvbiBiYWxrZW5Tb3J0TGlzdGVuZXJTaWNoZXJuKCkgewog ICAgICAgIC8vIE51ciBCdXR0b25zIG1pdCBkYXRhLXN0YXRzLWthdCAoPSBTY2hpY2h0dmVydGVp bHVuZ3MtS2F0ZWdvcmllbikKICAgICAgICAvLyBhZHJlc3NpZXJlbiDigJQgc29uc3QgZ3JlaWZ0 IGRlciBIYW5kbGVyIGF1Y2ggYXVmIGRpZSBNaWtyb3RlYW0tCiAgICAgICAgLy8gU29ydC1CdXR0 b25zIHp1LCBkaWUgZGllc2VsYmUgS2xhc3NlIC5zdGF0cy1rYXQtYnRuIG51dHplbi4KICAgICAg ICB2YXIgYnRucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXN0YXRzLWthdF0n KTsKICAgICAgICBidG5zLmZvckVhY2goZnVuY3Rpb24oYikgewogICAgICAgICAgICBpZiAoYi5k YXRhc2V0LmZlcnRpZykgcmV0dXJuOwogICAgICAgICAgICBiLmFkZEV2ZW50TGlzdGVuZXIoJ2Ns aWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBfc3RhdEthdGVnb3JpZSA9IGIuZ2V0 QXR0cmlidXRlKCdkYXRhLXN0YXRzLWthdCcpIHx8ICdzY2hpY2h0ZW4nOwogICAgICAgICAgICAg ICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtc3RhdHMta2F0XScpLmZvckVhY2go ZnVuY3Rpb24oeCkgeyB4LmNsYXNzTGlzdC5yZW1vdmUoJ2FrdGl2Jyk7IH0pOwogICAgICAgICAg ICAgICAgYi5jbGFzc0xpc3QuYWRkKCdha3RpdicpOwogICAgICAgICAgICAgICAgaWYgKFouc3Rh dGlzdGlrKSBiYWxrZW5SZW5kZXJuKHN0YXRGaWx0ZXJuKFouc3RhdGlzdGlrKSk7CiAgICAgICAg ICAgIH0pOwogICAgICAgICAgICBiLmRhdGFzZXQuZmVydGlnID0gJzEnOwogICAgICAgIH0pOwog ICAgICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdHMtc29ydC1yaWNo dHVuZycpOwogICAgICAgIGlmIChidG4gJiYgIWJ0bi5kYXRhc2V0LmZlcnRpZykgewogICAgICAg ICAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAg ICAgICAgIF9zdGF0U29ydFJpY2h0dW5nID0gKF9zdGF0U29ydFJpY2h0dW5nID09PSAnZGVzYycp ID8gJ2FzYycgOiAnZGVzYyc7CiAgICAgICAgICAgICAgICB2YXIgcGZlaWwgPSBidG4ucXVlcnlT ZWxlY3RvcignLnN0YXRzLXNvcnQtcGZlaWwnKTsKICAgICAgICAgICAgICAgIGlmIChwZmVpbCkg cGZlaWwudGV4dENvbnRlbnQgPSAoX3N0YXRTb3J0UmljaHR1bmcgPT09ICdkZXNjJykgPyAn4oaT JyA6ICfihpEnOwogICAgICAgICAgICAgICAgaWYgKFouc3RhdGlzdGlrKSBiYWxrZW5SZW5kZXJu KHN0YXRGaWx0ZXJuKFouc3RhdGlzdGlrKSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBi dG4uZGF0YXNldC5mZXJ0aWcgPSAnMSc7CiAgICAgICAgfQogICAgfQoKICAgIC8vIFdFL0ZULUZh aXJuZXNzIOKAlCB2aXN1YWxpc2llcnQgZGllIFZlcnRlaWx1bmcgdm9uIFdvY2hlbmVuZC0gdW5k CiAgICAvLyBGZWllcnRhZ3NkaWVuc3RlbiBnZWdlbiBkZW4gR3J1cHBlbi1EdXJjaHNjaG5pdHQu CiAgICAvLwogICAgLy8gRGlzanVua3Qgc2VpdCAyMDI2LTA1OiBXRSA9IFNhK1NvIE9ITkUgRmVp ZXJ0YWdlLCBGVCA9IEZlaWVydGFnZQogICAgLy8gKGVnYWwgb2IgV29jaGVudGFnIG9kZXIgV0Up LiBFaW4gS2FyZnJlaXRhZy1TYSB6YWVobHQgbnVyIGluIEZULgogICAgLy8KICAgIC8vIEZpbHRl ci1TY2h3ZWxsZSBkeW5hbWlzY2g6IG1heCgzLCAxMCAlIHZvbSBBdmctR2VzYW10KS4gU2thbGll cnQKICAgIC8vIG1pdCBkZW0gQ3V0LVplaXRyYXVtICgwMS4wMS4gLSBoZXV0ZSsxNFQgPSBWZXJi aW5kbGljaGtlaXRzZW5kZSkuCiAgICBmdW5jdGlvbiBmYWlybmVzc1JlbmRlcm4oc3RhdHMpIHsK ICAgICAgICB2YXIgYWt0aXZlID0gc3RhdHMuZmlsdGVyKGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHMu Z2VzYW10ID4gMDsgfSk7CiAgICAgICAgaWYgKGFrdGl2ZS5sZW5ndGggPT09IDApIHsKICAgICAg ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLWZhaXJuZXNzJykuaW5uZXJIVE1M ID0gJzxwIGNsYXNzPSJ0ZXh0LW11dGVkIiBzdHlsZT0icGFkZGluZzoxNnB4O3RleHQtYWxpZ246 Y2VudGVyIj5OaWNodCBnZW7DvGdlbmQgRGF0ZW48L3A+JzsKICAgICAgICAgICAgcmV0dXJuOwog ICAgICAgIH0KICAgICAgICB2YXIgc3VtR2VzID0gMDsKICAgICAgICBha3RpdmUuZm9yRWFjaChm dW5jdGlvbihzKSB7IHN1bUdlcyArPSBzLmdlc2FtdDsgfSk7CiAgICAgICAgdmFyIGF2Z0dlc2Ft dCA9IHN1bUdlcyAvIGFrdGl2ZS5sZW5ndGg7CiAgICAgICAgdmFyIHNjaHdlbGxlICA9IE1hdGgu bWF4KDMsIGF2Z0dlc2FtdCAqIDAuMTApOwogICAgICAgIHZhciByZWxldmFudCAgPSBha3RpdmUu ZmlsdGVyKGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHMuZ2VzYW10ID49IHNjaHdlbGxlOyB9KTsKICAg ICAgICBpZiAocmVsZXZhbnQubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgIGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdzdGF0cy1mYWlybmVzcycpLmlubmVySFRNTCA9ICc8cCBjbGFzcz0idGV4 dC1tdXRlZCIgc3R5bGU9InBhZGRpbmc6MTZweDt0ZXh0LWFsaWduOmNlbnRlciI+TmljaHQgZ2Vu w7xnZW5kIERhdGVuPC9wPic7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAg IC8vIERpc2p1bmt0ZSBXZXJ0ZTogV0UgPSByZWluZXMgU2ErU28gKG9obmUgRmVpZXJ0YWcpLCBG VCA9IEZlaWVydGFnCiAgICAgICAgZnVuY3Rpb24gd2VXZXJ0KHMpICAgeyByZXR1cm4gKHMuc2Ft c3RhZ0RpZW5zdGUgfHwgMCkgKyAocy5zb25udGFnRGllbnN0ZSB8fCAwKTsgfQogICAgICAgIGZ1 bmN0aW9uIGZ0V2VydChzKSAgIHsgcmV0dXJuIHMuZmVpZXJ0YWdEaWVuc3RlIHx8IDA7IH0KICAg ICAgICBmdW5jdGlvbiBrd1dlcnQocykgICB7IHJldHVybiBzLmtvbXBsZXR0ZVdFIHx8IDA7IH0K ICAgICAgICAvLyBXRS1EaWVuc3QtUXVvdGU6IEFudGVpbCBEaWVuc3QgYW4gdmVyZnVlZ2JhcmVu IFdFLVRhZ2VuLgogICAgICAgIC8vIE1hY2h0IFBlcnNvbmVuIG1pdCB2aWVsL3dlbmlnIFVybGF1 YiB2ZXJnbGVpY2hiYXIuCiAgICAgICAgZnVuY3Rpb24gd2VRdW90ZShzKSB7CiAgICAgICAgICAg IHZhciB2ZXJmID0gcy53ZVRhZ2VWZXJmdWVnYmFyIHx8IDA7CiAgICAgICAgICAgIGlmICh2ZXJm ID09PSAwKSByZXR1cm4gMDsKICAgICAgICAgICAgcmV0dXJuIHdlV2VydChzKSAvIHZlcmY7CiAg ICAgICAgfQoKICAgICAgICB2YXIgc3VtUXVvdGUgPSAwLCBzdW1GVCA9IDA7CiAgICAgICAgcmVs ZXZhbnQuZm9yRWFjaChmdW5jdGlvbihzKSB7IHN1bVF1b3RlICs9IHdlUXVvdGUocyk7IHN1bUZU ICs9IGZ0V2VydChzKTsgfSk7CiAgICAgICAgdmFyIGF2Z1F1b3RlID0gc3VtUXVvdGUgLyByZWxl dmFudC5sZW5ndGg7CiAgICAgICAgdmFyIGF2Z0ZUICAgID0gc3VtRlQgLyByZWxldmFudC5sZW5n dGg7CiAgICAgICAgdmFyIG1heEZUICAgID0gTWF0aC5tYXguYXBwbHkobnVsbCwgcmVsZXZhbnQu bWFwKGZ0V2VydCkpIHx8IDE7CiAgICAgICAgdmFyIG1heEtXICAgID0gTWF0aC5tYXguYXBwbHko bnVsbCwgcmVsZXZhbnQubWFwKGt3V2VydCkpIHx8IDE7CgogICAgICAgIGZ1bmN0aW9uIGZLbGFz c2UodywgYXZnKSB7CiAgICAgICAgICAgIGlmIChhdmcgPT09IDApIHJldHVybiAnZmFpcm5lc3Mt bmV1dHJhbCc7CiAgICAgICAgICAgIHZhciByID0gTWF0aC5hYnModyAtIGF2ZykgLyBhdmc7CiAg ICAgICAgICAgIHJldHVybiByIDw9IDAuMiA/ICdmYWlybmVzcy1vaycgOiByIDw9IDAuNSA/ICdm YWlybmVzcy13YXJudW5nJyA6ICdmYWlybmVzcy1rcml0aXNjaCc7CiAgICAgICAgfQoKICAgICAg ICAvLyBaZWlsZW4tQmF1ZXIgZnVlciBkaWUgRlQtU2VrdGlvbiAoMyBTcGFsdGVuOiBOYW1lIHwg QmFyIHwgV2VydCkuCiAgICAgICAgZnVuY3Rpb24gemVpbGVCYXVlbihzLCB3ZXJ0Rm4sIG1heCwg YXZnKSB7CiAgICAgICAgICAgIHZhciB2ID0gd2VydEZuKHMpOwogICAgICAgICAgICB2YXIgcGN0 ICAgID0gbWF4ID4gMCA/ICh2ICAgLyBtYXgpICogMTAwIDogMDsKICAgICAgICAgICAgdmFyIGF2 Z1BjdCA9IG1heCA+IDAgPyAoYXZnIC8gbWF4KSAqIDEwMCA6IDA7CiAgICAgICAgICAgIHJldHVy biAnPGRpdiBjbGFzcz0iZmFpcm5lc3Mtcm93Ij4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNs YXNzPSJmYWlybmVzcy1yb3ctbmFtZSIgdGl0bGU9IicgKyBlc2NhcGVBdHRyKF9zdGF0QW56ZWln ZU5hbWUocykpICsgJyI+JyArIGVzY2FwZUhUTUwoX3N0YXRBbnplaWdlTmFtZShzKSkgKyAnPC9k aXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZmFpcm5lc3Mtcm93LWJhciI+PGRp diBjbGFzcz0iZmFpcm5lc3Mtcm93LWF2ZyIgc3R5bGU9ImxlZnQ6JyArIGF2Z1BjdCArICclIj48 L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmYWlybmVzcy1yb3ctZmlsbCAn ICsgZktsYXNzZSh2LCBhdmcpICsgJyIgc3R5bGU9IndpZHRoOicgKyBwY3QgKyAnJSI+PC9kaXY+ PC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZmFpcm5lc3Mtcm93LXZhbCI+ JyArIHYgKyAnPC9kaXY+PC9kaXY+JzsKICAgICAgICB9CiAgICAgICAgLy8gWmVpbGVuLUJhdWVy IGZ1ZXIgZGllIFdFLVNla3Rpb246IFF1b3Rlbi1iYXNpZXJ0LgogICAgICAgIC8vIFF1b3RlID0g V0UtRGllbnN0ZSAvIHZlcmZ1ZWdiYXJlIFdFLVRhZ2UgKFNPTEwtUG9vbCBtaW51cyBwZXJzb2Vu bGljaGUKICAgICAgICAvLyBBYndlc2VuaGVpdCBhbSBXRSkuIE1hY2h0IFBlcnNvbmVuIG1pdCB1 bnRlcnNjaGllZGxpY2hlbSBVcmxhdWIKICAgICAgICAvLyB2ZXJnbGVpY2hiYXIuIEJhbmdlbWFu biAyNS8zOCA9IDY2JSwgR2VuZGlnIDIwLzM2ID0gNTYlLgogICAgICAgIGZ1bmN0aW9uIHplaWxl QmF1ZW5XRShzKSB7CiAgICAgICAgICAgIHZhciB2ICAgICA9IHdlV2VydChzKTsKICAgICAgICAg ICAgdmFyIHZlcmYgID0gcy53ZVRhZ2VWZXJmdWVnYmFyIHx8IDA7CiAgICAgICAgICAgIHZhciBx dW90ZSA9IHdlUXVvdGUocyk7CiAgICAgICAgICAgIHZhciBwY3QgICAgPSBNYXRoLm1pbigxMDAs IHF1b3RlICogMTAwKTsKICAgICAgICAgICAgdmFyIGF2Z1BjdCA9IE1hdGgubWluKDEwMCwgYXZn UXVvdGUgKiAxMDApOwogICAgICAgICAgICB2YXIga3cgICAgID0ga3dXZXJ0KHMpOwogICAgICAg ICAgICB2YXIga3dQY3QgID0gbWF4S1cgPiAwID8gKGt3IC8gbWF4S1cpICogMTAwIDogMDsKICAg ICAgICAgICAgdmFyIHRpcCA9ICdEaWVuc3RlIGFtIFdFOiAnICsgdiArICcgdm9uICcgKyB2ZXJm ICsgJyB2ZXJmXHUwMEZDZ2JhcmVuIFRhZ2VuID0gJyArIE1hdGgucm91bmQocXVvdGUgKiAxMDAp ICsgJyAlJzsKICAgICAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJmYWlybmVzcy1yb3cgZmFp cm5lc3Mtcm93LXdlIiB0aXRsZT0iJyArIGVzY2FwZUF0dHIodGlwKSArICciPicgKwogICAgICAg ICAgICAgICAgJzxkaXYgY2xhc3M9ImZhaXJuZXNzLXJvdy1uYW1lIiB0aXRsZT0iJyArIGVzY2Fw ZUF0dHIoX3N0YXRBbnplaWdlTmFtZShzKSkgKyAnIj4nICsgZXNjYXBlSFRNTChfc3RhdEFuemVp Z2VOYW1lKHMpKSArICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmYWly bmVzcy1yb3ctYmFyIj48ZGl2IGNsYXNzPSJmYWlybmVzcy1yb3ctYXZnIiBzdHlsZT0ibGVmdDon ICsgYXZnUGN0ICsgJyUiPjwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZh aXJuZXNzLXJvdy1maWxsICcgKyBmS2xhc3NlKHF1b3RlLCBhdmdRdW90ZSkgKyAnIiBzdHlsZT0i d2lkdGg6JyArIHBjdCArICclIj48L2Rpdj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2 IGNsYXNzPSJmYWlybmVzcy1yb3ctdmFsIj4nICsgTWF0aC5yb3VuZChxdW90ZSAqIDEwMCkgKyAn JTxicj48c3BhbiBjbGFzcz0iZmFpcm5lc3Mtcm93LXN1YiI+JyArIHYgKyAnLycgKyB2ZXJmICsg Jzwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmYWlybmVzcy1y b3cta3ciIHRpdGxlPSInICsgZXNjYXBlQXR0cignS29tcGxldHRlIFdvY2hlbmVuZGVuIChTYStT byBiZWlkZSBEaWVuc3QpOiAnICsga3cpICsgJyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxk aXYgY2xhc3M9ImZhaXJuZXNzLXJvdy1rdy1iYXIiPjxkaXYgY2xhc3M9ImZhaXJuZXNzLXJvdy1r dy1maWxsIiBzdHlsZT0id2lkdGg6JyArIGt3UGN0ICsgJyUiPjwvZGl2PjwvZGl2PicgKwogICAg ICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmYWlybmVzcy1yb3cta3ctdmFsIj4nICsga3cg KyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAn PC9kaXY+JzsKICAgICAgICB9CgogICAgICAgIC8vIFN1YnRpdGxlIG9iZXJoYWxiIGRlciBXRS1U YWJlbGxlIChlaW56ZWlsaWcsIGVyc3BhcnQgZWluZSBicmVpdGUKICAgICAgICAvLyBLb3BmemVp bGUgaW4gZGVyIFRhYmVsbGUgc2VsYnN0KS4KICAgICAgICB2YXIgaHRtbCA9ICc8ZGl2IGNsYXNz PSJmYWlybmVzcy1zdWJ0aXRsZSI+V0UtRGllbnN0LVF1b3RlIFx1MjAxNCBBbnRlaWwgZGVyIHZl cmZcdTAwRkNnYmFyZW4gU2ErU28tVGFnZSAob2huZSBGZWllcnRhZ2UpPC9kaXY+JzsKICAgICAg ICBodG1sICs9ICc8ZGl2IGNsYXNzPSJmYWlybmVzcy1jb21wYWN0Ij4nOwogICAgICAgIGh0bWwg Kz0gJzxkaXYgY2xhc3M9ImZhaXJuZXNzLXJvdyBmYWlybmVzcy1yb3ctd2UgZmFpcm5lc3MtaGVh ZGVyIj4nICsKICAgICAgICAgICAgICAgICc8c3Bhbj5XRS1EaWVuc3QtUXVvdGU8L3NwYW4+JyAr CiAgICAgICAgICAgICAgICAnPHNwYW4gc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj5cdTAwRDgg JyArIE1hdGgucm91bmQoYXZnUXVvdGUgKiAxMDApICsgJyAlPC9zcGFuPicgKwogICAgICAgICAg ICAgICAgJzxzcGFuPjwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iZmFp cm5lc3Mta3cta29wZiI+V0UgZHVyY2hnZWFyYmVpdGV0PC9zcGFuPicgKwogICAgICAgICAgICAg ICAgJzwvZGl2Pic7CiAgICAgICAgcmVsZXZhbnQuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKGEsIGIp IHsgcmV0dXJuIHdlUXVvdGUoYikgLSB3ZVF1b3RlKGEpOyB9KQogICAgICAgICAgICAgICAgLmZv ckVhY2goZnVuY3Rpb24ocykgeyBodG1sICs9IHplaWxlQmF1ZW5XRShzKTsgfSk7CgogICAgICAg IGh0bWwgKz0gJzxkaXYgY2xhc3M9ImZhaXJuZXNzLXJvdyBmYWlybmVzcy1oZWFkZXIiIHN0eWxl PSJtYXJnaW4tdG9wOjhweCI+PHNwYW4+RlQtVGFnZSAoRGllbnN0IGFtIEZlaWVydGFnKTwvc3Bh bj48c3BhbiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPlx1MDBEOCAnICsgYXZnRlQudG9GaXhl ZCgxKSArICc8L3NwYW4+PHNwYW4+PC9zcGFuPjwvZGl2Pic7CiAgICAgICAgcmVsZXZhbnQuc2xp Y2UoKS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGZ0V2VydChiKSAtIGZ0V2VydChhKTsg fSkKICAgICAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uKHMpIHsgaHRtbCArPSB6ZWlsZUJh dWVuKHMsIGZ0V2VydCwgbWF4RlQsIGF2Z0ZUKTsgfSk7CgogICAgICAgIGh0bWwgKz0gJzwvZGl2 Pic7CiAgICAgICAgLy8gRnVzcy1IaW53ZWlzOiBha3R1ZWxsZSBTY2h3ZWxsZSB0cmFuc3BhcmVu dCBtYWNoZW4uCiAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0iZmFpcm5lc3MtZnVzcyI+QmVy XHUwMEZDY2tzaWNodGlndDogJyArIHJlbGV2YW50Lmxlbmd0aCArICcgUGVyc29uZW4gbWl0IFx1 MjI2NSAnICsgTWF0aC5yb3VuZChzY2h3ZWxsZSkgKyAnIERpZW5zdGVuIGltIFplaXRyYXVtLjwv ZGl2Pic7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLWZhaXJuZXNzJyku aW5uZXJIVE1MID0gaHRtbDsKICAgIH0KCiAgICAvLyA9PT09PSBNaWtyb3RlYW0tSGVhdG1hcCA9 PT09PQogICAgLy8KICAgIC8vIExvZXN0IGRpZSBhbHRlbiBBYndlc2VuaGVpdHMtS2FjaGVsbiBh Yi4gUHJvIGtvbmZpZ3VyaWVydGVtIE1pa3JvdGVhbQogICAgLy8gKGFkbWluLmpzb24ubWlrcm90 ZWFtcykgd2lyZCBmdWVyIGplZGVuIFRhZyBpbSBDdXQgZGllIEFuemFobCBkZXIKICAgIC8vIGFy YmVpdGVuZGVuIFBlcnNvbmVuIGVybWl0dGVsdC4gRmFyYmNvZGU6CiAgICAvLyAgIHJvdCAgID0g MCBpbSBEaWVuc3QKICAgIC8vICAgZ2VsYiAgPSAxIGltIERpZW5zdAogICAgLy8gICBncsO8biAg PSAyIGltIERpZW5zdCAob2RlciBtZWhyLCBhYmVyIG5pY2h0IGFsbGUpCiAgICAvLyAgIGdvbGQg ID0gYWxsZSBUZWFtLU1pdGdsaWVkZXIgaW0gRGllbnN0CiAgICAvLyAiSW0gRGllbnN0IiA9IEYt L1MtL04tQ29kZSBvZGVyIFNEL1NFLiBGcmVpLUNvZGVzIHVuZCBBYndlc2VuaGVpdAogICAgLy8g emFlaGxlbiBuaWNodCBhbHMgImRhIiAoVXNlci1Wb3JnYWJlKS4KCiAgICAvLyBNb2R1bC1TdGF0 ZSBNaWtyb3RlYW0tSGVhdG1hcAogICAgdmFyIF9zdGF0VGVhbUV4cGFuZGVkID0ge307ICAgICAg Ly8gdGVhbUlkIC0+IGJvb2wgKERldGFpbC1aZWlsZW4gc2ljaHRiYXIpCiAgICB2YXIgX3N0YXRU ZWFtQmFsa2VuU29ydCA9ICdyZWloZW5mb2xnZSc7CgogICAgLy8gQ2FjaGUgZnVlciBfdGVhbURh dGVuKCkgaW5uZXJoYWxiIGVpbmVzIHN0YXRpc3Rpa1JlbmRlcm4oKS1MYXVmcy4KICAgIC8vIG1p a3JvdGVhbVJlbmRlcm4oKSB1bmQgcHJvc2FSZW5kZXJuKCkgZ3JlaWZlbiBiZWlkZSBhdWYgZGll IGdsZWljaGVuCiAgICAvLyBEYXRlbiB6dSDigJQgQ2FjaGUgdmVybWVpZGV0IGRpZSBkb3BwZWx0 ZSBPKFRlYW1zKlRhZ2UqUGVyc29uZW4pLUJlcmVjaG51bmcKICAgIC8vICh+MzAtNjAgbXMgYXVm IGRlbSBCZWhvZXJkZW4tUEMpLiBXaXJkIGFtIEFuZmFuZyB2b24gc3RhdGlzdGlrUmVuZGVybigp CiAgICAvLyBpbnZhbGlkaWVydCwgZGFtaXQgRmlsdGVyLS9TdGFiLVdlY2hzZWwgZnJpc2NoZSBE YXRlbiBiZWtvbW1lbi4KICAgIHZhciBfc3RhdFRlYW1EYXRlbkNhY2hlID0gbnVsbDsKICAgIGZ1 bmN0aW9uIF90ZWFtRGF0ZW5Ib2xlbigpIHsKICAgICAgICBpZiAoIV9zdGF0VGVhbURhdGVuQ2Fj aGUpIF9zdGF0VGVhbURhdGVuQ2FjaGUgPSBfdGVhbURhdGVuKCk7CiAgICAgICAgcmV0dXJuIF9z dGF0VGVhbURhdGVuQ2FjaGU7CiAgICB9CgogICAgLy8gV2llIF90ZWFtRGF0ZW5Ib2xlbigpLCBh YmVyIHJlc3Bla3RpZXJ0IGRlbiBEcm9wZG93bi1HcnVwcGVuLUZpbHRlcjoKICAgIC8vIGJlaSBl aW5lciBleHBsaXppdGVuIEdydXBwZW4tQXVzd2FobCB3ZXJkZW4gbnVyIE1pa3JvdGVhbXMgZGll c2VyCiAgICAvLyBHcnVwcGUgenVydWVja2dlZ2ViZW4uIFdpcmQgZnVlciBkaWUgSGVhdG1hcCwg ZGllIEJhbGtlbi1TdWItU2VrdGlvbgogICAgLy8gdW5kIGRpZSBQcm9zYS1EZXRhaWxhbmFseXNl IGdlbnV0enQg4oCUIGRpZSBLUElzL0RldGFpbC1UYWJlbGxlIGZpbHRlcm4KICAgIC8vIGJlcmVp dHMgdWViZXIgc3RhdEZpbHRlcm4oKSBkZW4gU3RhdHMtRGF0ZW5zYXR6IHVuZCBicmF1Y2hlbiBk YXMgbmljaHQuCiAgICBmdW5jdGlvbiBfdGVhbURhdGVuR2VmaWx0ZXJ0KCkgewogICAgICAgIHZh ciBkYXRhID0gX3RlYW1EYXRlbkhvbGVuKCk7CiAgICAgICAgaWYgKHN0YXRGaWx0ZXIgPT09ICdh bGxlJykgcmV0dXJuIGRhdGE7CiAgICAgICAgcmV0dXJuIGRhdGEuZmlsdGVyKGZ1bmN0aW9uKHQp IHsgcmV0dXJuIHQuZ3J1cHBlID09PSBzdGF0RmlsdGVyOyB9KTsKICAgIH0KCiAgICAvLyBLb250 ZXh0LCBkZW4gZGllIEhlYXRtYXAgbmFjaCBkZW0gUmVuZGVyIGZlc3RoYWVsdCwgZGFtaXQgRXhw YW5kLS8KICAgIC8vIENvbGxhcHNlLUtsaWNrcyBkaWUgRGV0YWlsLVplaWxlbiBkaXJla3QgYW0g RE9NIGVpbmZ1ZWdlbi9lbnRmZXJuZW4KICAgIC8vIGtvZW5uZW4g4oCUIG9obmUgZGllIGtvbXBs ZXR0ZSBUYWJlbGxlIG5ldSB6dSByZW5kZXJuLiBTcGFydCAxMDAtMjAwIG1zCiAgICAvLyBwcm8g S2xpY2sgYXVmIGRlbSBCZWhvZXJkZW4tUEMuCiAgICB2YXIgX2hlYXRtYXBLb250ZXh0ID0gbnVs bDsKCiAgICAvLyBQdXJlIEhlbHBlciBmdWVyIFNwYWx0ZW4tS2xhc3NlbiBlaW5lciBIZWF0bWFw LVNwYWx0ZS4gRnJ1ZWhlciBDbG9zdXJlCiAgICAvLyBpbiBfcmVuZGVyVGVhbUhlYXRtYXA7IHJh dXNnZXpvZ2VuIGRhbWl0IGRlciBEZXRhaWwtWmVpbGVuLUhlbHBlciBzaWUKICAgIC8vIG9obmUg Q2xvc3VyZS1DYXB0dXJlIG51dHplbiBrYW5uIChnbGVpY2hlciBIZWxwZXIgd2lyZCBiZWltIFJl bmRlciBVTkQKICAgIC8vIGJlaW0gT24tRGVtYW5kLUluc2VydCBuYWNoIEV4cGFuZC1LbGljayB2 ZXJ3ZW5kZXQpLgogICAgZnVuY3Rpb24gX3NwYWx0ZW5LbGFzc2VuKHRhZ01ldGEsIGQpIHsKICAg ICAgICB2YXIgbSA9IHRhZ01ldGFbZF0gfHwge307CiAgICAgICAgdmFyIGMgPSBbXTsKICAgICAg ICBpZiAobS5pc3RXRSkgICAgICAgICAgICAgICAgICAgICAgIGMucHVzaCgnaG0td2UnKTsKICAg ICAgICBpZiAobS5mZWllcnRhZ2UgJiYgbS5mZWllcnRhZ2UubGVuZ3RoKSAgICAgICAgIGMucHVz aCgnaG0tZmVpZXInKTsKICAgICAgICBpZiAobS5mZXJpZW4gJiYgbS5mZXJpZW4ubGVuZ3RoKSAg ICAgICAgICAgICAgIGMucHVzaCgnaG0tZmVyaWVuJyk7CiAgICAgICAgaWYgKG0uc29uZGVydGVy bWluZSAmJiBtLnNvbmRlcnRlcm1pbmUubGVuZ3RoKSBjLnB1c2goJ2htLXNvbmRlcnRlcm1pbicp OwogICAgICAgIHJldHVybiBjOwogICAgfQoKICAgIC8vIEJhdXQgZGllIERldGFpbC1aZWlsZW4t SFRNTCBmdWVyIEVJTiBleHBhbmRpZXJ0ZXMgVGVhbS4gV2lyZCBzb3dvaGwKICAgIC8vIGJlaW0g SW5pdGlhbC1SZW5kZXIgZ2VudXR6dCAoZnVlciBUZWFtcywgZGllIHNjaG9uIGV4cGFuZGVkIHNp bmQpIGFscwogICAgLy8gYXVjaCBiZWltIEtsaWNrLUhhbmRsZXIgKE9uLURlbWFuZC1JbnNlcnQg b2huZSBGdWxsLVJlcmVuZGVyKS4gY3R4ID0KICAgIC8vIHsgdGFnZSwgdGFnTWV0YSwgcGVyc29u TWFwLCBlaW50cmFlZ2UgfSDigJQgcGFzc3QgenUgX2hlYXRtYXBLb250ZXh0LgogICAgZnVuY3Rp b24gX2J1aWxkVGVhbURldGFpbFJvd3ModCwgY3R4KSB7CiAgICAgICAgcmV0dXJuIHQucGVyc29u SWRzLm1hcChmdW5jdGlvbihwaWQpIHsKICAgICAgICAgICAgdmFyIHAgPSBjdHgucGVyc29uTWFw W3BpZF0gfHwge307CiAgICAgICAgICAgIHZhciBuYW1lS3VyeiA9IChwLnZvcm5hbWUgPyBwLnZv cm5hbWUuY2hhckF0KDApICsgJy4gJyA6ICcnKSArIChwLm5hbWUgfHwgKCcjJyArIHBpZCkpOwog ICAgICAgICAgICByZXR1cm4gJzx0ciBjbGFzcz0idGVhbS1obS1yb3cgdGVhbS1obS1yb3ctZGV0 YWlsIiBkYXRhLXRlYW0tZGV0YWlsLWZvcj0iJyArIGVzY2FwZUF0dHIodC5pZCkgKyAnIj4nICsK ICAgICAgICAgICAgICAgICc8dGggY2xhc3M9InRlYW0taG0tbmFtZSB0ZWFtLWhtLW5hbWUtZGV0 YWlsIj7ihrMgJyArIGVzY2FwZUhUTUwobmFtZUt1cnopICsgJzwvdGg+JyArCiAgICAgICAgICAg ICAgICBjdHgudGFnZS5tYXAoZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBj b2RlID0gKGN0eC5laW50cmFlZ2VbZF0gfHwge30pW3BpZF0gfHwgJyc7CiAgICAgICAgICAgICAg ICAgICAgdmFyIGlzRGllbnN0ID0gX2lzdERpZW5zdENvZGUoY29kZSk7CiAgICAgICAgICAgICAg ICAgICAgdmFyIGNscyA9IFsndGVhbS1obS1jZWxsJywgJ3RlYW0taG0tY2VsbC1kZXRhaWwnXS5j b25jYXQoX3NwYWx0ZW5LbGFzc2VuKGN0eC50YWdNZXRhLCBkKSk7CiAgICAgICAgICAgICAgICAg ICAgaWYgKGlzRGllbnN0KSBjbHMucHVzaCgndGVhbS1obS1jZWxsLWRldGFpbC1kaWVuc3QnKTsK ICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzx0ZCBjbGFzcz0iJyArIGNscy5qb2luKCcgJykg KyAnIiB0aXRsZT0iJyArIGVzY2FwZUF0dHIoZCArICc6ICcgKyAoY29kZSB8fCAn4oCUJykpICsg JyI+JyArIChjb2RlID8gZXNjYXBlSFRNTChjb2RlLnN1YnN0cigwLCAzKSkgOiAnJykgKyAnPC90 ZD4nOwogICAgICAgICAgICAgICAgfSkuam9pbignJykgKwogICAgICAgICAgICAgICAgJzwvdHI+ JzsKICAgICAgICB9KS5qb2luKCcnKTsKICAgIH0KICAgIHZhciBNT05BVFNOQU1FTl9URUFNID0g WydKYW51YXInLCdGZWJydWFyJywnTcOkcnonLCdBcHJpbCcsJ01haScsJ0p1bmknLCdKdWxpJywn QXVndXN0JywnU2VwdGVtYmVyJywnT2t0b2JlcicsJ05vdmVtYmVyJywnRGV6ZW1iZXInXTsKICAg IHZhciBNT05BVFNOQU1FTl9LVVJaID0gWydKYW4nLCdGZWInLCdNw6RyJywnQXByJywnTWFpJywn SnVuJywnSnVsJywnQXVnJywnU2VwJywnT2t0JywnTm92JywnRGV6J107CgogICAgLy8gUG9vbC1C ZXppZWh1bmdlbjogPFBvb2wtU3RhbmRvcnQ+IC0+IDxMaXN0ZSBkZXIgWmllbC1TdGFuZG9ydGUs IGZ1ZXIgZGllIGRlcgogICAgLy8gUG9vbCBlaW5zcHJpbmd0Pi4gUG9vbC1UZWFtcyBzaW5kIDEt UGVyc29uZW4tV2FjaGVuIChMRC1XRCwgU08tV0QpLiBXZW5uCiAgICAvLyBkaWUgUG9vbC1QZXJz b24gaW0gRGllbnN0IGlzdCB1bmQgbWluZC4gZWluIE1pa3JvdGVhbSBkZXMgWmllbC1TdGFuZG9y dHMKICAgIC8vIGFuIGRlbSBUYWcgcm90IGlzdCAoa2VpbmVyIGRhKSwgd2lyZCBkaWUgUG9vbC1a ZWxsZSBncnVlbiDigJQgYWxzCiAgICAvLyBJbmRpa2F0b3IsIGRhc3MgZGVyIFBvb2wgZmFjaGxp Y2ggZWluc3ByaW5ndC4gUG9vbC1UZWFtcyB3ZXJkZW4gYXVzc2VyZGVtCiAgICAvLyBhdXMgZGVy IEJhbGtlbi1TdGF0aXN0aWsgYXVzZ2VrbGFtbWVydCAoMSBQZXJzb24sIGtlaW4gTWl0dGVsd2Vy dCBtb2VnbGljaCkuCiAgICB2YXIgUE9PTF9SRUxBVElPTiA9IHsgJ0xEJzogWydGUiddLCAnU08n OiBbJ0FSJ10gfTsKICAgIGZ1bmN0aW9uIF9pc3RQb29sVGVhbSh0KSB7IHJldHVybiB0ICYmIFBP T0xfUkVMQVRJT05bdC5zdGFuZG9ydF0gIT09IHVuZGVmaW5lZDsgfQoKICAgIC8vIENvZGUtS2xh c3NlbiBmdWVyIGRpZSBNaWtyb3RlYW0tQW1wZWwtQmVyZWNobnVuZzoKICAgIC8vIEZSRUkgICAg PSB3ZnIvZGZyL8KnMjEvMjFhL0FaQSDigJQgZGllIFBlcnNvbiB3YWVyZSBwcmluemlwaWVsbCB2 ZXJmdWVnYmFyCiAgICAvLyAgICAgICAgICAgZ2V3ZXNlbiwgaGF0IGFiZXIgRnJlaS4gV2VubiBB TExFIHNvIHdhcyBoYWJlbiB1bmQgbmllbWFuZAogICAgLy8gICAgICAgICAgIGxlZ2l0aW0gYWJ3 ZXNlbmQgaXN0IC0+IHJvdCAoUHJvYmxlbTogYWxsZSB3b2xsZW4gZnJlaSBoYWJlbikuCiAgICAv LyBBQldFU0VORCA9IFVybC9rci9LdXIvU1UvTEcvRm9ydGJpbGR1bmcvQlYvYWJnL0JBTy9ITyDi gJQgUGVyc29uIGlzdAogICAgLy8gICAgICAgICAgIGxlZ2l0aW0gbmljaHQgdmVyZnVlZ2Jhci4g U2NobHVja3QgZGVuIHJvdGVuIFN0YXR1cy4KICAgIHZhciBURUFNX0ZSRUlfQ09ERVMgICAgID0g eyAnd2ZyJzoxLCAnZGZyJzoxLCAnwqcyMSc6MSwgJzIxYSc6MSwgJ0FaQSc6MSB9OwogICAgdmFy IFRFQU1fQUJXRVNFTkRfQ09ERVMgPSB7ICdVcmwnOjEsICdrcic6MSwgJ0t1cic6MSwgJ1NVJzox LCAnTEcnOjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0F1Ric6MSwgJ0VUTSc6 MSwgJ1NlbSc6MSwgJ1RUJzoxLCAnVHpGJzoxLCAnRFUnOjEsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ0JWJzoxLCAnYWJnJzoxLCAnQkFPJzoxLCAnSE8nOjEgfTsKICAgIGZ1bmN0 aW9uIF9pc3RGcmVpQ29kZShjKSAgICAgeyByZXR1cm4gISEoYyAmJiBURUFNX0ZSRUlfQ09ERVNb Y10pOyB9CiAgICBmdW5jdGlvbiBfaXN0QWJ3ZXNlbmRDb2RlKGMpIHsgcmV0dXJuICEhKGMgJiYg VEVBTV9BQldFU0VORF9DT0RFU1tjXSk7IH0KCiAgICBmdW5jdGlvbiBfaXN0RGllbnN0Q29kZShj b2RlKSB7CiAgICAgICAgaWYgKCFjb2RlKSByZXR1cm4gZmFsc2U7CiAgICAgICAgaWYgKGNvZGUu bGVuZ3RoID49IDIgJiYgY29kZS5jaGFyQXQoMSkgPT09ICctJykgewogICAgICAgICAgICB2YXIg cCA9IGNvZGUuY2hhckF0KDApOwogICAgICAgICAgICBpZiAocCA9PT0gJ0YnIHx8IHAgPT09ICdT JyB8fCBwID09PSAnTicpIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gY29k ZSA9PT0gJ1NEJyB8fCBjb2RlID09PSAnU0UnOwogICAgfQoKICAgIC8vIExpZWZlcnQgJ0YnLydT Jy8nTicgd2VubiBkZXIgQ29kZSBlaW5lIERHTC1TY2hpY2h0IChGLURHTC9TLURHTC9OLURHTCkK ICAgIC8vIGlzdCwgc29uc3QgbnVsbC4gV2lyZCBmdWVyIGRpZSBQb29sLVNwcmluZ2VyLUxvZ2lr IGdlbnV0enQ6IGVpbiBMRC9TTy0KICAgIC8vIERHTCBzcHJpbmd0IG51ciBkYW5uIGFscyBER0wt VmVydHJldHVuZyBmdWVyIEZSL0FSIGVpbiwgd2VubiBlciBpbiBkZXIKICAgIC8vIGdsZWljaGVu IFNjaGljaHQgc2VsYnN0IGRpZSBER0wtUm9sbGUgbWFjaHQg4oCUIEYtRkJQL1MtRkJQL04tRkJQ IHphZWhsdAogICAgLy8gTklDSFQgYWxzIEVpbnNwcmluZ2VuIChDb2RlIGlzdCBkYW5uIGZ1ZXIg ZGllIE1pdGFyYmVpdGVyIGRhKS4KICAgIGZ1bmN0aW9uIF9kZ2xTY2hpY2h0Vm9uKGNvZGUpIHsK ICAgICAgICBpZiAoIWNvZGUgfHwgY29kZS5sZW5ndGggPCA1KSByZXR1cm4gbnVsbDsKICAgICAg ICB2YXIgcCA9IGNvZGUuY2hhckF0KDApOwogICAgICAgIGlmIChwICE9PSAnRicgJiYgcCAhPT0g J1MnICYmIHAgIT09ICdOJykgcmV0dXJuIG51bGw7CiAgICAgICAgcmV0dXJuIGNvZGUuc3Vic3Ry aW5nKDIsIDUpID09PSAnREdMJyA/IHAgOiBudWxsOwogICAgfQoKICAgIC8vIExpZWZlcnQgJ0Yn LydTJy8nTicgZnVlciBKRURFTiBTY2hpY2h0LURpZW5zdGNvZGUgKEYtREdMLCBGLVdERiwKICAg IC8vIEYtRkJQLCBTLURHTCwgLi4uKSwgc29uc3QgbnVsbC4gV2lyZCBmdWVyIGRpZSBMdWVja2Ut UHJ1ZWZ1bmcgZGVyCiAgICAvLyBQb29sLVNwcmluZ2VyLUxvZ2lrIGdlbnV0enQ6IGRhcyBaaWVs LU1pa3JvdGVhbSAoRlIvQVIpIGdpbHQgYWxzCiAgICAvLyAibHVlY2tlIiBpbiBlaW5lciBTY2hp Y2h0IG51ciB3ZW5uIGRvcnQgbmllbWFuZCB1ZWJlcmhhdXB0IGVpbmVuCiAgICAvLyBTY2hpY2h0 LURpZW5zdCBtYWNodCDigJQgZWdhbCBvYiBER0wvV0RGL0ZCUC4gV2VubiB6LkIuIGVpbiBGLUZC UCBkYQogICAgLy8gaXN0LCBpc3QgZGllIFNjaGljaHQgaW4gZGVyIFdhY2hlIHBlcnNvbmVsbCBi ZWRlY2t0LCBHb3RvL05vdHRlYm9obQogICAgLy8gbXVlc3NlbiBuaWNodCBlaW5zcHJpbmdlbi4K ICAgIGZ1bmN0aW9uIF9zY2hpY2h0Vm9uKGNvZGUpIHsKICAgICAgICBpZiAoIWNvZGUgfHwgY29k ZS5sZW5ndGggPCAyIHx8IGNvZGUuY2hhckF0KDEpICE9PSAnLScpIHJldHVybiBudWxsOwogICAg ICAgIHZhciBwID0gY29kZS5jaGFyQXQoMCk7CiAgICAgICAgaWYgKHAgIT09ICdGJyAmJiBwICE9 PSAnUycgJiYgcCAhPT0gJ04nKSByZXR1cm4gbnVsbDsKICAgICAgICByZXR1cm4gcDsKICAgIH0K CiAgICBmdW5jdGlvbiBfdGVhbUN1dFRhZ2UoKSB7CiAgICAgICAgdmFyIGphaHIgPSAoWi5hZG1p biAmJiBaLmFkbWluLmphaHIpIHx8IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTsKICAgICAgICB2 YXIgZCA9IG5ldyBEYXRlKGphaHIgKyAnLTAxLTAxVDAwOjAwOjAwJyk7CiAgICAgICAgdmFyIGhl dXRlID0gbmV3IERhdGUoKTsgaGV1dGUuc2V0SG91cnMoMCwwLDAsMCk7CiAgICAgICAgdmFyIGVu ZGUgID0gbmV3IERhdGUoaGV1dGUpOyBlbmRlLnNldERhdGUoZW5kZS5nZXREYXRlKCkgKyAxNCk7 CiAgICAgICAgdmFyIG91dCA9IFtdOwogICAgICAgIHdoaWxlIChkIDw9IGVuZGUpIHsKICAgICAg ICAgICAgLy8gTG9rYWxlIElTTy1EYXR1bXMtUmVwcmFlc2VudGF0aW9uIChrZWluIHRvSVNPU3Ry aW5nIOKAlCBkZXIgd2lyZnQKICAgICAgICAgICAgLy8gVVRDIHVuZCBraXBwdCBiZWkgWmVpdHpv bmVuLVZlcnNhdHogdW0gZWluZW4gVGFnKS4KICAgICAgICAgICAgdmFyIHkgPSBkLmdldEZ1bGxZ ZWFyKCk7CiAgICAgICAgICAgIHZhciBtID0gU3RyaW5nKGQuZ2V0TW9udGgoKSArIDEpLnBhZFN0 YXJ0KDIsICcwJyk7CiAgICAgICAgICAgIHZhciB0ID0gU3RyaW5nKGQuZ2V0RGF0ZSgpKS5wYWRT dGFydCgyLCAnMCcpOwogICAgICAgICAgICBvdXQucHVzaCh5ICsgJy0nICsgbSArICctJyArIHQp OwogICAgICAgICAgICBkLnNldERhdGUoZC5nZXREYXRlKCkgKyAxKTsKICAgICAgICB9CiAgICAg ICAgcmV0dXJuIG91dDsKICAgIH0KCiAgICBmdW5jdGlvbiBfdGVhbUZhcmJlKGltRGllbnN0LCB0 b3RhbCkgewogICAgICAgIGlmIChpbURpZW5zdCA9PT0gMCkgICAgICAgIHJldHVybiAndGVhbS1y JzsKICAgICAgICBpZiAoaW1EaWVuc3QgPj0gdG90YWwpICAgICByZXR1cm4gJ3RlYW0tZ29sZCc7 CiAgICAgICAgaWYgKGltRGllbnN0ID09PSAxKSAgICAgICAgcmV0dXJuICd0ZWFtLXknOwogICAg ICAgIHJldHVybiAndGVhbS1nJzsKICAgIH0KCiAgICAvLyBUYWctTWV0YWRhdGVuOiBXb2NoZW5l bmRlLCBGZWllcnRhZywgRmVyaWVuLCBTb25kZXJ0ZXJtaW5lLgogICAgLy8gQ2FjaGUgd2lyZCBl aW5tYWwgcHJvIFJlbmRlciBhdWZnZWJhdXQgKGtsZWluZSBEYXRlbm1lbmdlIOKAlCBrZWluIE1l bW8pLgogICAgZnVuY3Rpb24gX3RlYW1UYWdNZXRhKHRhZ2UpIHsKICAgICAgICB2YXIgbWV0YSA9 IHt9OwogICAgICAgIHZhciBmZWllcnRhZ2UgPSAoKFouYWRtaW4gJiYgWi5hZG1pbi5mZWllcnRh Z2UpIHx8IFtdKS5maWx0ZXIoZnVuY3Rpb24oZikgeyByZXR1cm4gZi5ha3RpdiAhPT0gZmFsc2U7 IH0pOwogICAgICAgIHZhciBmdE1hcCA9IHt9OwogICAgICAgIGZlaWVydGFnZS5mb3JFYWNoKGZ1 bmN0aW9uKGYpIHsgKGZ0TWFwW2YuZGF0dW1dID0gZnRNYXBbZi5kYXR1bV0gfHwgW10pLnB1c2go Zik7IH0pOwogICAgICAgIHZhciBmZXJpZW4gPSAoWi5hZG1pbiAmJiBaLmFkbWluLmZlcmllbikg fHwgW107CiAgICAgICAgdmFyIHNvbmRlcnRlcm1pbmUgPSAoWi5hZG1pbiAmJiBaLmFkbWluLnNv bmRlcnRlcm1pbmUpIHx8IFtdOwoKICAgICAgICB0YWdlLmZvckVhY2goZnVuY3Rpb24oZCkgewog ICAgICAgICAgICB2YXIgZHQgPSBuZXcgRGF0ZShkICsgJ1QwMDowMDowMCcpOwogICAgICAgICAg ICB2YXIgd3QgPSBkdC5nZXREYXkoKTsKICAgICAgICAgICAgdmFyIGZlciA9IGZlcmllbi5maWx0 ZXIoZnVuY3Rpb24oZikgeyByZXR1cm4gZCA+PSBmLnZvbiAmJiBkIDw9IGYuYmlzOyB9KTsKICAg ICAgICAgICAgdmFyIHN0ICA9IHNvbmRlcnRlcm1pbmUuZmlsdGVyKGZ1bmN0aW9uKHMpIHsKICAg ICAgICAgICAgICAgIHZhciBiaXMgPSBzLmRhdHVtQmlzIHx8IHMuZGF0dW07CiAgICAgICAgICAg ICAgICByZXR1cm4gZCA+PSBzLmRhdHVtICYmIGQgPD0gYmlzOwogICAgICAgICAgICB9KTsKICAg ICAgICAgICAgbWV0YVtkXSA9IHsKICAgICAgICAgICAgICAgIGlzdFdFOiAgICAgICh3dCA9PT0g MCB8fCB3dCA9PT0gNiksCiAgICAgICAgICAgICAgICB3b2NoZW50YWc6ICB3dCwKICAgICAgICAg ICAgICAgIGZlaWVydGFnZTogIGZ0TWFwW2RdIHx8IFtdLAogICAgICAgICAgICAgICAgZmVyaWVu OiAgICAgZmVyLAogICAgICAgICAgICAgICAgc29uZGVydGVybWluZTogc3QKICAgICAgICAgICAg fTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gbWV0YTsKICAgIH0KCiAgICBmdW5jdGlvbiBf dGVhbURhdGVuKCkgewogICAgICAgIHZhciB0ZWFtcyA9IChaLmFkbWluICYmIFouYWRtaW4ubWlr cm90ZWFtcykgfHwgW107CiAgICAgICAgdmFyIGVpbnRyYWVnZSA9IChaLnBsYW51bmcgJiYgWi5w bGFudW5nLmVpbnRyYWVnZSkgfHwge307CiAgICAgICAgdmFyIHBlcnNvbmVuID0gKFoucGxhbnVu ZyAmJiBaLnBsYW51bmcucGVyc29uZW4pIHx8IFtdOwogICAgICAgIHZhciBwZXJzb25NYXAgPSB7 fTsKICAgICAgICBwZXJzb25lbi5mb3JFYWNoKGZ1bmN0aW9uKHApIHsgcGVyc29uTWFwW3AuaWRd ID0gcDsgfSk7CiAgICAgICAgdmFyIHRhZ2UgPSBfdGVhbUN1dFRhZ2UoKTsKCiAgICAgICAgLy8g UGhhc2UgMTogYWxsZSBUZWFtcyBiZXJlY2huZW4uCiAgICAgICAgLy8gUHJvIFRhZyB6YWVobGVu IHdpciBkaXNqdW5rdDogaW1EaWVuc3QgLyBmcmVpICh3ZnIvZGZyL8KnMjEvQVpBKSAvCiAgICAg ICAgLy8gYWJ3ZXNlbmQgKFVybC9rci9LdXIvTGVocmdhbmcvLi4uKSAvIHNvbnN0aWdlICh6LkIu IFNEL1NFIGJlcmVpdHMKICAgICAgICAvLyBpbiBpbURpZW5zdCwgbGVlcmVyIEVpbnRyYWcgPSAi dW5rbGFyIiB6YWVobHQgbmljaHQpLgogICAgICAgIHZhciBkYXRhID0gdGVhbXMubWFwKGZ1bmN0 aW9uKHQpIHsKICAgICAgICAgICAgdmFyIHBpZHMgPSB0LnBlcnNvbklkcyB8fCBbXTsKICAgICAg ICAgICAgdmFyIHBlclRhZyA9IHt9OwogICAgICAgICAgICB0YWdlLmZvckVhY2goZnVuY3Rpb24o ZCkgewogICAgICAgICAgICAgICAgdmFyIGFueiA9IDAsIGZyZWlBbnogPSAwLCBhYndBbnogPSAw LCBkZXRhaWxzID0gW107CiAgICAgICAgICAgICAgICBwaWRzLmZvckVhY2goZnVuY3Rpb24ocGlk KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGUgPSAoZWludHJhZWdlW2RdIHx8IHt9KVtw aWRdIHx8ICcnOwogICAgICAgICAgICAgICAgICAgIHZhciBwID0gcGVyc29uTWFwW3BpZF07CiAg ICAgICAgICAgICAgICAgICAgdmFyIG5tID0gcCA/IChwLm5hbWUgfHwgKCcjJyArIHBpZCkpIDog KCcjJyArIHBpZCk7CiAgICAgICAgICAgICAgICAgICAgZGV0YWlscy5wdXNoKHsgcGlkOiBwaWQs IG5hbWU6IG5tLCBjb2RlOiBjb2RlIH0pOwogICAgICAgICAgICAgICAgICAgIGlmIChfaXN0RGll bnN0Q29kZShjb2RlKSkgICAgICAgICBhbnorKzsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlm IChfaXN0RnJlaUNvZGUoY29kZSkpICAgICAgZnJlaUFueisrOwogICAgICAgICAgICAgICAgICAg IGVsc2UgaWYgKF9pc3RBYndlc2VuZENvZGUoY29kZSkpICBhYndBbnorKzsKICAgICAgICAgICAg ICAgIH0pOwogICAgICAgICAgICAgICAgcGVyVGFnW2RdID0gewogICAgICAgICAgICAgICAgICAg IGltRGllbnN0OiBhbnosIGZyZWk6IGZyZWlBbnosIGFid2VzZW5kOiBhYndBbnosCiAgICAgICAg ICAgICAgICAgICAgdG90YWw6IHBpZHMubGVuZ3RoLCBkZXRhaWxzOiBkZXRhaWxzLCBpc3RTcHJp bmdlcjogZmFsc2UKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0pOwogICAgICAgICAg ICByZXR1cm4geyBpZDogdC5pZCwgbmFtZTogdC5uYW1lLCBzdGFuZG9ydDogdC5zdGFuZG9ydCwg Z3J1cHBlOiB0LmdydXBwZSwgcGVyc29uSWRzOiBwaWRzLCB0YWdlOiBwZXJUYWcgfTsKICAgICAg ICB9KTsKCiAgICAgICAgLy8gUGhhc2UgMjogU3ByaW5nZXItTWFya2llcnVuZyBmdWVyIFBvb2wt VGVhbXMuCiAgICAgICAgLy8KICAgICAgICAvLyBFaW4gTEQvU08tREdMICJzcHJpbmd0IiBmYWNo bGljaCBkYW5uIGZ1ZXIgRlIvQVIgZWluLCB3ZW5uOgogICAgICAgIC8vICAgMS4gRXIgYW4gZGVt IFRhZyBlaW5lIERHTC1TY2hpY2h0IG1hY2h0IChGLURHTC9TLURHTC9OLURHTCkKICAgICAgICAv LyAgICAgIFVORCBpbiBkaWVzZXIgU2NoaWNodCBhdWNoIGluIGRlciAxLi8yLiBWSTMtREdMLVZl cmFudHdvcnR1bmcKICAgICAgICAvLyAgICAgIChUb3AtMiBuYWNoIEZ1bmt0aW9ucy1SYW5nK1Bv c2l0aW9uIGF1cyBha3RpdmVGdWVocnVuZykgc3RlaHQuCiAgICAgICAgLy8gICAgICBSZWluZSBD b2RlLUVpbnRyYWd1bmcgRi1ER0wgcmVpY2h0IE5JQ0hUIOKAlCBzb25zdCB6YWVobHRlCiAgICAg ICAgLy8gICAgICBlaW4gbmljaHQtdmVyYW50d29ydGxpY2hlciBMRC9TTy1ER0wgZmFlbHNjaGxp Y2ggYWxzIFNwcmluZ2VyCiAgICAgICAgLy8gICAgICAoVXNlci1Lb3JyZWt0dXIgMjAyNi0wNS0y NSkuIFVORAogICAgICAgIC8vICAgMi4gZGllIFppZWwtV2FjaGUgYW4gZGVtIFRhZyBpbiBnZW5h dSBkaWVzZXIgU2NoaWNodCB1ZWJlcmhhdXB0CiAgICAgICAgLy8gICAgICBOSUVNQU5ERU4gaW0g RGllbnN0IGhhdCAoa2VpbiBGLURHTCwga2VpbiBGLVdERiwga2VpbiBGLUZCUCkuCiAgICAgICAg Ly8gRi1GQlAvUy1GQlAvTi1GQlAgZGVyIFBvb2wtUGVyc29uIHphZWhsZW4gTklDSFQgYWxzIEVp bnNwcmluZ2VuIOKAlAogICAgICAgIC8vIGRhcyBpc3QgZWluIENvZGUgImZ1ZXIgZGllIE1pdGFy YmVpdGVyIiwgbmljaHQgZnVlciBkaWUgREdMLQogICAgICAgIC8vIFZlcmFudHdvcnR1bmcuIEJl aSBkZXIgTHVlY2tlbi1QcnVlZnVuZyBpbiBkZXIgWmllbHdhY2hlIHphZWhsdAogICAgICAgIC8v IGRhZ2VnZW4gSkVERVIgU2NoaWNodC1Db2RlIChhdWNoIEZCUC9XREYpOiBkaWUgV2FjaGUgaXN0 IHBlcnNvbmVsbAogICAgICAgIC8vIGJlZGVja3Qgc29iYWxkIGlyZ2VuZGplbWFuZCBpbiBkZXIg U2NoaWNodCBlaW5nZXNldHp0IGlzdCDigJQKICAgICAgICAvLyBHb3RvL05vdHRlYm9obSBtdWVz c2VuIGRhbm4gbmljaHQgZWluc3ByaW5nZW4uIFRhZ2Ugb2huZSBTcHJpbmdlci0KICAgICAgICAv LyBTdGF0dXMgd2VyZGVuIGluIGRlciBaZWxsLUZhZXJidW5nIGdyYXUgZGFyZ2VzdGVsbHQgKGlt IERpZW5zdCwKICAgICAgICAvLyBhYmVyIG5pY2h0IGFscyBER0wtU3ByaW5nZXIgZWluZ2VzZXR6 dCkuCiAgICAgICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIHpp ZWxlID0gUE9PTF9SRUxBVElPTlt0LnN0YW5kb3J0XTsKICAgICAgICAgICAgaWYgKCF6aWVsZSkg cmV0dXJuOwogICAgICAgICAgICB0YWdlLmZvckVhY2goZnVuY3Rpb24oZCkgewogICAgICAgICAg ICAgICAgdmFyIGluZm8gPSB0LnRhZ2VbZF07CiAgICAgICAgICAgICAgICBpZiAoaW5mby5pbURp ZW5zdCA9PT0gMCkgcmV0dXJuOwogICAgICAgICAgICAgICAgLy8gV2VsY2hlIERHTC1TY2hpY2h0 IG1hY2h0IGRpZSBQb29sLVBlcnNvbiBhbiBkZW0gVGFnIOKAlAogICAgICAgICAgICAgICAgLy8g VU5EIGlzdCBzaWUgYXVjaCBpbiBkZXIgdmVyYW50d29ydGxpY2hlbiBXYWhybmVobXVuZwogICAg ICAgICAgICAgICAgLy8gKFRvcC0yIGFrdGl2ZUZ1ZWhydW5nKSBlaW5nZXNldHp0PwogICAgICAg ICAgICAgICAgdmFyIHBvb2xTY2hpY2h0ID0gbnVsbDsKICAgICAgICAgICAgICAgIGZvciAodmFy IHBpID0gMDsgcGkgPCBpbmZvLmRldGFpbHMubGVuZ3RoOyBwaSsrKSB7CiAgICAgICAgICAgICAg ICAgICAgdmFyIGRldCA9IGluZm8uZGV0YWlsc1twaV07CiAgICAgICAgICAgICAgICAgICAgdmFy IHMgPSBfZGdsU2NoaWNodFZvbihkZXQuY29kZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFz KSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB2YXIgdmVyYW50ID0gYWt0aXZlRnVlaHJ1 bmcoZCwgcyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGlzdFZlcmFudCA9IHZlcmFudC5zb21l KGZ1bmN0aW9uKHApIHsgcmV0dXJuIE51bWJlcihwLmlkKSA9PT0gTnVtYmVyKGRldC5waWQpOyB9 KTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXN0VmVyYW50KSB7IHBvb2xTY2hpY2h0ID0gczsg YnJlYWs7IH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghcG9vbFNjaGlj aHQpIHJldHVybjsgIC8vIFBvb2wtUGVyc29uIGlzdCBkYSwgYWJlciBuaWNodCBhbHMgdmVyYW50 d29ydGxpY2hlIERHTAogICAgICAgICAgICAgICAgLy8gSGF0IGRhcyBaaWVsdGVhbSBhbiBkZW0g VGFnIGluIGdlbmF1IGRpZXNlciBTY2hpY2h0IE5JRU1BTkRFTj8KICAgICAgICAgICAgICAgIHZh ciBsdWVja2UgPSB6aWVsZS5zb21lKGZ1bmN0aW9uKHpTdGQpIHsKICAgICAgICAgICAgICAgICAg ICByZXR1cm4gZGF0YS5zb21lKGZ1bmN0aW9uKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAg aWYgKG8uc3RhbmRvcnQgIT09IHpTdGQpIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAg ICAgICAgdmFyIG9pID0gby50YWdlW2RdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9p IHx8IG9pLnRvdGFsID09PSAwKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAg IHZhciBqZW1hbmRJblNjaGljaHQgPSAob2kuZGV0YWlscyB8fCBbXSkuc29tZShmdW5jdGlvbihk ZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfc2NoaWNodFZvbihkZXQu Y29kZSkgPT09IHBvb2xTY2hpY2h0OwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuICFqZW1hbmRJblNjaGljaHQ7CiAgICAgICAgICAgICAg ICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGlmIChsdWVja2Up IGluZm8uaXN0U3ByaW5nZXIgPSB0cnVlOwogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKCiAg ICAgICAgLy8gUGhhc2UgMzogU3RhdGlzdGlrIHBybyBUZWFtLgogICAgICAgIC8vIFJPVCAgPSBu aWVtYW5kIGltIERpZW5zdCBVTkQgbmllbWFuZCBsZWdpdGltIGFid2VzZW5kIFVORCBtaW5kLiAx CiAgICAgICAgLy8gICAgICAgIFBlcnNvbiBoYXQgRnJlaS1Db2RlIC0+ICJhbGxlIHdvbGxlbiBm cmVpLCBuaWVtYW5kIG1hY2h0J3MiCiAgICAgICAgLy8gR1JBVSA9IG5pZW1hbmQgaW0gRGllbnN0 LCBhYmVyIG1pbmQuIDEgUGVyc29uIGxlZ2l0aW0gYWJ3ZXNlbmQKICAgICAgICAvLyAgICAgICAg KFVybC9rci9MZWhyZ2FuZy8uLi4pIOKAlCBrZWluIFByb2JsZW0sIHdlaWwgZGFzIFRlYW0KICAg ICAgICAvLyAgICAgICAgbmljaHQgaGFldHRlIGtvbXBsZXR0IGJlc2V0enQgc2VpbiBtdWVzc2Vu LgogICAgICAgIC8vIE5FVVRSQUwgPSAxIFBlcnNvbiBpbSBEaWVuc3QgKFVzZXItQWVuZGVydW5n OiBrZWluIGdlbGIgbWVocikuCiAgICAgICAgLy8gR1JVRU4gPSAyKyBQZXJzb25lbiBpbSBEaWVu c3QgKFBvb2w6IDEgbWl0IFNwcmluZ2VyLVN0YXR1cykuCiAgICAgICAgLy8gR09MRCA9IGFsbGUg VGVhbS1NaXRnbGllZGVyIGltIERpZW5zdCAoZW50ZmFlbGx0IGJlaSBQb29sLVRlYW1zKS4KICAg ICAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgcm90ID0gMCwg Z3JhdSA9IDAsIG5ldXRyYWwgPSAwLCBncnVlbiA9IDAsIGdvbGQgPSAwOwogICAgICAgICAgICB2 YXIgcG9vbCA9IF9pc3RQb29sVGVhbSh0KTsKICAgICAgICAgICAgT2JqZWN0LmtleXModC50YWdl KS5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgICAgIHZhciBpbmZvID0gdC50YWdl W2RdOwogICAgICAgICAgICAgICAgaWYgKGluZm8udG90YWwgPT09IDApIHJldHVybjsKICAgICAg ICAgICAgICAgIGlmIChpbmZvLmltRGllbnN0ID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAg aWYgKGluZm8uYWJ3ZXNlbmQgPj0gMSkgICAgICAgICAgICBncmF1Kys7CiAgICAgICAgICAgICAg ICAgICAgZWxzZSBpZiAoaW5mby5mcmVpID49IDEpICAgICAgICAgICByb3QrKzsKICAgICAgICAg ICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmF1Kys7ICAg Ly8gYWxsZSBsZWVyL3Vua2xhciA9IG5ldXRyYWwgZ3JhdQogICAgICAgICAgICAgICAgICAgIHJl dHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChwb29sKSB7CiAgICAg ICAgICAgICAgICAgICAgLy8gUG9vbDogbnVyICJlY2h0ZXIiIERHTC1TcHJpbmdlciB6YWVobHQg YWxzIGdydWVuLgogICAgICAgICAgICAgICAgICAgIC8vIEltLURpZW5zdC1hYmVyLW5pY2h0LVNw cmluZ2VyIChGQlAvV0RGL0RHTC1iZWktYmVzZXR6dGVyLQogICAgICAgICAgICAgICAgICAgIC8v IFppZWx3YWNoZSkgaXN0IGdyYXUg4oCUIFBvb2wtUGVyc29uIGlzdCBkYSwgYWJlciBuaWNodAog ICAgICAgICAgICAgICAgICAgIC8vIGFscyBER0wtVmVydHJldHVuZyBlaW5nZXNldHp0LgogICAg ICAgICAgICAgICAgICAgIGlmIChpbmZvLmlzdFNwcmluZ2VyKSBncnVlbisrOwogICAgICAgICAg ICAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICBncmF1Kys7CiAgICAgICAgICAgICAgICB9 IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLmltRGllbnN0ID49IGluZm8udG90 YWwpIGdvbGQrKzsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpbmZvLmltRGllbnN0ID09 PSAxKSAgICBuZXV0cmFsKys7CiAgICAgICAgICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdydWVuKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0p OwogICAgICAgICAgICB0LnN0YXQgPSB7IHJvdDogcm90LCBncmF1OiBncmF1LCBuZXV0cmFsOiBu ZXV0cmFsLCBncnVlbjogZ3J1ZW4sIGdvbGQ6IGdvbGQsCiAgICAgICAgICAgICAgICAgICAgICAg dG90YWw6IHJvdCArIGdyYXUgKyBuZXV0cmFsICsgZ3J1ZW4gKyBnb2xkIH07CiAgICAgICAgfSk7 CgogICAgICAgIHJldHVybiBkYXRhOwogICAgfQoKICAgIGZ1bmN0aW9uIG1pa3JvdGVhbVJlbmRl cm4oKSB7CiAgICAgICAgdmFyIGhlYXRFbCAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0 YXRzLXRlYW0taGVhdG1hcCcpOwogICAgICAgIHZhciBuZWJlbkVsICA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdzdGF0cy10ZWFtLWhlYXRtYXAtbmViZW4nKTsKICAgICAgICB2YXIgYmFsa2Vu RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdHMtdGVhbS1iYWxrZW4nKTsKICAgICAg ICBpZiAoIWhlYXRFbCB8fCAhYmFsa2VuRWwpIHJldHVybjsKCiAgICAgICAgdmFyIGRhdGEgPSBf dGVhbURhdGVuR2VmaWx0ZXJ0KCk7CiAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkgewogICAgICAg ICAgICB2YXIgbGVlckhpbndlaXMgPSAoc3RhdEZpbHRlciA9PT0gJ2FsbGUnKQogICAgICAgICAg ICAgICAgPyAnS2VpbmUgTWlrcm90ZWFtcyBrb25maWd1cmllcnQuIEltIEFkbWluLVRhYiBhbmxl Z2VuLicKICAgICAgICAgICAgICAgIDogJ0tlaW5lIE1pa3JvdGVhbXMgaW4gZGVyIGdld8OkaGx0 ZW4gRGllbnN0Z3J1cHBlLic7CiAgICAgICAgICAgIGhlYXRFbC5pbm5lckhUTUwgID0gJzxwIGNs YXNzPSJ0ZXh0LW11dGVkIiBzdHlsZT0icGFkZGluZzozMnB4O3RleHQtYWxpZ246Y2VudGVyIj4n ICsgZXNjYXBlSFRNTChsZWVySGlud2VpcykgKyAnPC9wPic7CiAgICAgICAgICAgIGlmIChuZWJl bkVsKSBuZWJlbkVsLmlubmVySFRNTCA9ICcnOwogICAgICAgICAgICBiYWxrZW5FbC5pbm5lckhU TUwgPSAnJzsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB2YXIgdGFnZSA9 IF90ZWFtQ3V0VGFnZSgpOwogICAgICAgIHZhciB0YWdNZXRhID0gX3RlYW1UYWdNZXRhKHRhZ2Up OwogICAgICAgIHZhciBwZXJzb25lbiA9IChaLnBsYW51bmcgJiYgWi5wbGFudW5nLnBlcnNvbmVu KSB8fCBbXTsKICAgICAgICB2YXIgcGVyc29uTWFwID0ge307CiAgICAgICAgcGVyc29uZW4uZm9y RWFjaChmdW5jdGlvbihwKSB7IHBlcnNvbk1hcFtwLmlkXSA9IHA7IH0pOwogICAgICAgIHZhciBl aW50cmFlZ2UgPSAoWi5wbGFudW5nICYmIFoucGxhbnVuZy5laW50cmFlZ2UpIHx8IHt9OwoKICAg ICAgICBfcmVuZGVyVGVhbUhlYXRtYXAoaGVhdEVsLCBkYXRhLCB0YWdlLCB0YWdNZXRhLCBwZXJz b25NYXAsIGVpbnRyYWVnZSk7CiAgICAgICAgaWYgKG5lYmVuRWwpIF9yZW5kZXJOZWJlbndhY2hl bkhlYXRtYXAobmViZW5FbCwgZGF0YSwgdGFnZSwgdGFnTWV0YSk7CiAgICAgICAgX3JlbmRlclRl YW1CYWxrZW4oYmFsa2VuRWwsIGRhdGEpOwogICAgICAgIF9yZW5kZXJUZWFtQmFsa2VuU29ydEhv b2tzKCk7CiAgICB9CgogICAgLy8gR2V0ZWlsdGVyIEhlYWRlci1CYXVlciBmdWVyIE1pa3JvdGVh bS1IZWF0bWFwIFVORCBOZWJlbndhY2hlbi1IZWF0bWFwLgogICAgLy8gQmVpZGUgcmVuZGVybiBk ZW5zZWxiZW4gQ3V0IChTcGFsdGVua29lcGZlIE1vbmF0IC8gVGFnIC8gV29jaGVudGFnICsKICAg IC8vIG9wdGlvbmFsZSBNYXJrZXItWmVpbGVuIEZlaWVydGFnZSAvIEZlcmllbiAvIFNvbmRlcnRl cm1pbmUpIHVuZCB0ZWlsZW4KICAgIC8vIGRpZSBTcGFsdGVuLUtsYXNzZW4tTG9naWsuIExpZWZl cnQgdm9yZ2VmZXJ0aWd0ZSBIVE1MLUJhdXN0ZWluZSBwbHVzCiAgICAvLyBkaWUgbWFrZVNwYWNl ci9zcGFsdGVuS2xhc3Nlbi1IZWxwZXIgZnVlciBkaWUgQm9keS1aZWlsZW4uCiAgICBmdW5jdGlv biBfaGVhdG1hcEtvcGZUZWlsKHRhZ2UsIHRhZ01ldGEpIHsKICAgICAgICB2YXIgbW9uYXRlTWFw ID0ge307CiAgICAgICAgdGFnZS5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgdmFy IG0gPSBkLnN1YnN0cigwLCA3KTsKICAgICAgICAgICAgbW9uYXRlTWFwW21dID0gKG1vbmF0ZU1h cFttXSB8fCAwKSArIDE7CiAgICAgICAgfSk7CiAgICAgICAgdmFyIG1vbmF0ZSA9IE9iamVjdC5r ZXlzKG1vbmF0ZU1hcCkuc29ydCgpOwogICAgICAgIHZhciBtb25hdEhlYWQgPSBtb25hdGUubWFw KGZ1bmN0aW9uKG0pIHsKICAgICAgICAgICAgdmFyIG5yID0gcGFyc2VJbnQobS5zdWJzdHIoNSwg MiksIDEwKSAtIDE7CiAgICAgICAgICAgIHJldHVybiAnPHRoIGNsYXNzPSJ0ZWFtLWhtLW1vbmF0 LWNlbGwiIGNvbHNwYW49IicgKyBtb25hdGVNYXBbbV0gKyAnIj4nICsgTU9OQVRTTkFNRU5fS1VS Wltucl0gKyAnPC90aD4nOwogICAgICAgIH0pLmpvaW4oJycpOwoKICAgICAgICBmdW5jdGlvbiBz cGFsdGVuS2xhc3NlbihkKSB7IHJldHVybiBfc3BhbHRlbktsYXNzZW4odGFnTWV0YSwgZCk7IH0K CiAgICAgICAgdmFyIHRhZ0hlYWQgPSB0YWdlLm1hcChmdW5jdGlvbihkKSB7CiAgICAgICAgICAg IHZhciBudW0gPSBwYXJzZUludChkLnN1YnN0cig4LCAyKSwgMTApOwogICAgICAgICAgICB2YXIg Y2xzID0gWyd0ZWFtLWhtLXRoJ10uY29uY2F0KHNwYWx0ZW5LbGFzc2VuKGQpKTsKICAgICAgICAg ICAgcmV0dXJuICc8dGggY2xhc3M9IicgKyBjbHMuam9pbignICcpICsgJyI+JyArIG51bSArICc8 L3RoPic7CiAgICAgICAgfSkuam9pbignJyk7CgogICAgICAgIHZhciB3dEt1cnogPSBbJ1NvJywn TW8nLCdEaScsJ01pJywnRG8nLCdGcicsJ1NhJ107CiAgICAgICAgdmFyIHd0SGVhZCA9IHRhZ2Uu bWFwKGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgdmFyIG0gPSB0YWdNZXRhW2RdOwogICAgICAg ICAgICB2YXIgY2xzID0gWyd0ZWFtLWhtLXd0J10uY29uY2F0KHNwYWx0ZW5LbGFzc2VuKGQpKTsK ICAgICAgICAgICAgcmV0dXJuICc8dGggY2xhc3M9IicgKyBjbHMuam9pbignICcpICsgJyI+JyAr IHd0S3VyelttLndvY2hlbnRhZ10gKyAnPC90aD4nOwogICAgICAgIH0pLmpvaW4oJycpOwoKICAg ICAgICBmdW5jdGlvbiBpdGVtS2V5KGl0KSB7CiAgICAgICAgICAgIGlmICghaXQpIHJldHVybiAn JzsKICAgICAgICAgICAgcmV0dXJuIChpdC5iZXplaWNobnVuZyB8fCBpdC5uYW1lIHx8IGl0LnRp dGVsIHx8ICcnKSArCiAgICAgICAgICAgICAgICAgICAnfCcgKyAoaXQudm9uIHx8IGl0LmRhdHVt IHx8ICcnKSArCiAgICAgICAgICAgICAgICAgICAnfCcgKyAoaXQuYmlzIHx8IGl0LmRhdHVtQmlz IHx8IGl0LmRhdHVtIHx8ICcnKTsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gaXRlbUxhYmVs KGl0KSB7CiAgICAgICAgICAgIHJldHVybiBpdC5iZXplaWNobnVuZyB8fCBpdC5uYW1lIHx8IGl0 LnRpdGVsIHx8IGl0LnRleHQgfHwgJyc7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBtYWtl TWFya2VyUm93KGxhYmVsLCBnZXR0ZXIsIGtsYXNzZSwgb3B0cykgewogICAgICAgICAgICBvcHRz ID0gb3B0cyB8fCB7fTsKICAgICAgICAgICAgdmFyIGFueUhpdCA9IHRhZ2Uuc29tZShmdW5jdGlv bihkKSB7IHJldHVybiBnZXR0ZXIodGFnTWV0YVtkXSkubGVuZ3RoID4gMDsgfSk7CiAgICAgICAg ICAgIGlmICghYW55SGl0KSByZXR1cm4gJyc7CiAgICAgICAgICAgIHZhciBjZWxscyA9ICcnOwog ICAgICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgICAgIHdoaWxlIChpIDwgdGFnZS5sZW5ndGgp IHsKICAgICAgICAgICAgICAgIHZhciBkID0gdGFnZVtpXTsKICAgICAgICAgICAgICAgIHZhciBp dGVtcyA9IGdldHRlcih0YWdNZXRhW2RdKTsKICAgICAgICAgICAgICAgIHZhciBjZWxsQ2xzID0g Wyd0ZWFtLWhtLW1hcmtlci1jZWxsJ10uY29uY2F0KHNwYWx0ZW5LbGFzc2VuKGQpKTsKICAgICAg ICAgICAgICAgIGlmICghaXRlbXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgY2VsbHMg Kz0gJzx0ZCBjbGFzcz0iJyArIGNlbGxDbHMuam9pbignICcpICsgJyI+PC90ZD4nOwogICAgICAg ICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgIGNlbGxDbHMucHVzaChrbGFzc2UpOwogICAgICAgICAg ICAgICAgdmFyIHNwYW4gPSAxOwogICAgICAgICAgICAgICAgaWYgKG9wdHMubWl0U3Bhbikgewog ICAgICAgICAgICAgICAgICAgIHZhciBzY2hsdWVzc2VsID0gaXRlbXMubWFwKGl0ZW1LZXkpLmpv aW4oJzsnKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gaSArIDE7IGogPCB0YWdl Lmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmb2xsb3dJdGVtcyA9 IGdldHRlcih0YWdNZXRhW3RhZ2Vbal1dKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZv bGxvd0l0ZW1zLm1hcChpdGVtS2V5KS5qb2luKCc7JykgIT09IHNjaGx1ZXNzZWwpIGJyZWFrOwog ICAgICAgICAgICAgICAgICAgICAgICBzcGFuKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGxhYmVscyA9IGl0ZW1zLm1hcChpdGVt TGFiZWwpLmZpbHRlcihCb29sZWFuKTsKICAgICAgICAgICAgICAgIHZhciB0aXAgICAgPSBsYWJl bHMuam9pbignIC8gJyk7CiAgICAgICAgICAgICAgICB2YXIgYW56ZWlnZTsKICAgICAgICAgICAg ICAgIGlmIChvcHRzLmljb24pICAgICAgICAgYW56ZWlnZSA9IG9wdHMuaWNvbjsKICAgICAgICAg ICAgICAgIGVsc2UgaWYgKG9wdHMubWl0U3BhbikgYW56ZWlnZSA9IGxhYmVscy5qb2luKCcgLyAn KTsKICAgICAgICAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgYW56ZWlnZSA9IGxhYmVs c1swXSA/IGxhYmVsc1swXS5zdWJzdHIoMCwgMikgOiAnwrcnOwogICAgICAgICAgICAgICAgdmFy IGV4dHJhID0gJyc7CiAgICAgICAgICAgICAgICBpZiAob3B0cy5rbGlja2JhcikgewogICAgICAg ICAgICAgICAgICAgIHZhciBpZHMgPSBpdGVtcy5tYXAoZnVuY3Rpb24ocykgeyByZXR1cm4gcy5p ZDsgfSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJywnKTsKICAgICAgICAgICAgICAgICAgICBleHRy YSA9ICcgZGF0YS1zdC1pZHM9IicgKyBlc2NhcGVBdHRyKGlkcykgKyAnIiBkYXRhLWtsaWNrYmFy PSIxIic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgY29sc3BhbkF0dHIg PSBzcGFuID4gMSA/ICcgY29sc3Bhbj0iJyArIHNwYW4gKyAnIicgOiAnJzsKICAgICAgICAgICAg ICAgIGNlbGxzICs9ICc8dGQgY2xhc3M9IicgKyBjZWxsQ2xzLmpvaW4oJyAnKSArICciJyArIGNv bHNwYW5BdHRyICsgZXh0cmEgKyAnIHRpdGxlPSInICsgZXNjYXBlQXR0cih0aXApICsgJyI+JyAr IGVzY2FwZUhUTUwoYW56ZWlnZSkgKyAnPC90ZD4nOwogICAgICAgICAgICAgICAgaSArPSBzcGFu OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAnPHRyIGNsYXNzPSJ0ZWFtLWhtLW1h cmtlci1yb3ciPicgKwogICAgICAgICAgICAgICAgJzx0aCBjbGFzcz0idGVhbS1obS1uYW1lIHRl YW0taG0tbWFya2VyLW5hbWUiPicgKyBlc2NhcGVIVE1MKGxhYmVsKSArICc8L3RoPicgKwogICAg ICAgICAgICAgICAgY2VsbHMgKwogICAgICAgICAgICAgICAgJzwvdHI+JzsKICAgICAgICB9Cgog ICAgICAgIHZhciBmZWllcnRhZ1JvdyAgID0gbWFrZU1hcmtlclJvdygnRmVpZXJ0YWdlJywgICAg ZnVuY3Rpb24obSkgeyByZXR1cm4gbS5mZWllcnRhZ2U7IH0sICAgICAnbWFya2VyLWZlaWVyJywg ICAgICAgIHsga2xpY2tiYXI6IGZhbHNlLCBtaXRTcGFuOiBmYWxzZSB9KTsKICAgICAgICB2YXIg ZmVyaWVuUm93ICAgICA9IG1ha2VNYXJrZXJSb3coJ0ZlcmllbicsICAgICAgIGZ1bmN0aW9uKG0p IHsgcmV0dXJuIG0uZmVyaWVuOyB9LCAgICAgICAgJ21hcmtlci1mZXJpZW4nLCAgICAgICB7IGts aWNrYmFyOiBmYWxzZSwgbWl0U3BhbjogdHJ1ZSB9KTsKICAgICAgICB2YXIgc29uZGVydGVybVJv dyA9IG1ha2VNYXJrZXJSb3coJ1NvbmRlcnRlcm1pbmUnLCBmdW5jdGlvbihtKSB7IHJldHVybiBt LnNvbmRlcnRlcm1pbmU7IH0sICdtYXJrZXItc29uZGVydGVybWluJywgeyBrbGlja2JhcjogdHJ1 ZSwgIG1pdFNwYW46IGZhbHNlLCBpY29uOiAn4pqgJyB9KTsKCiAgICAgICAgZnVuY3Rpb24gbWFr ZVNwYWNlcihrbGFzc2UpIHsKICAgICAgICAgICAgdmFyIG5hbWVUZCA9ICc8dGQgY2xhc3M9InRl YW0taG0tc3BhY2VyLW5hbWUgJyArIGtsYXNzZSArICciPjwvdGQ+JzsKICAgICAgICAgICAgdmFy IGJvZHlUZCA9ICc8dGQgY2xhc3M9InRlYW0taG0tc3BhY2VyLWJvZHkgJyArIGtsYXNzZSArICci IGNvbHNwYW49IicgKyB0YWdlLmxlbmd0aCArICciPjwvdGQ+JzsKICAgICAgICAgICAgcmV0dXJu ICc8dHIgY2xhc3M9InRlYW0taG0tc3BhY2VyLXJvdyI+JyArIG5hbWVUZCArIGJvZHlUZCArICc8 L3RyPic7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBtb25hdEhlYWQ6 IG1vbmF0SGVhZCwgdGFnSGVhZDogdGFnSGVhZCwgd3RIZWFkOiB3dEhlYWQsCiAgICAgICAgICAg IGZlaWVydGFnUm93OiBmZWllcnRhZ1JvdywgZmVyaWVuUm93OiBmZXJpZW5Sb3csIHNvbmRlcnRl cm1Sb3c6IHNvbmRlcnRlcm1Sb3csCiAgICAgICAgICAgIHNwYWx0ZW5LbGFzc2VuOiBzcGFsdGVu S2xhc3NlbiwgbWFrZVNwYWNlcjogbWFrZVNwYWNlcgogICAgICAgIH07CiAgICB9CgogICAgLy8g U3RpY2t5LVRvcC1XZXJ0ZSBmdWVyIGRpZSBtZWhyemVpbGlnZW4gSGVhZGVyIChNb25hdCAvIFRh ZyAvIFdvY2hlbnRhZwogICAgLy8gKyBvcHRpb25hbGUgTWFya2VyLVplaWxlbikuIENTUyBhbGxl aW4gcmVpY2h0IG5pY2h0LCB3ZWlsIE1hcmtlci1aZWlsZW4KICAgIC8vIG9wdGlvbmFsIHNpbmQg 4oCUIHdpciBzdW1taWVyZW4gZGllIHRhdHNhZWNobGljaGVuIG9mZnNldEhlaWdodC1XZXJ0ZS4K ICAgIGZ1bmN0aW9uIF9oZWF0bWFwU3RpY2t5VG9wQW53ZW5kZW4oZWwpIHsKICAgICAgICB2YXIg dGhlYWQgPSBlbC5xdWVyeVNlbGVjdG9yKCcudGVhbS1obS10YWJlbGxlID4gdGhlYWQnKTsKICAg ICAgICBpZiAoIXRoZWFkKSByZXR1cm47CiAgICAgICAgdmFyIGFra3VUb3AgPSAwOwogICAgICAg IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodGhlYWQuY2hpbGRyZW4sIGZ1bmN0aW9uKHRy KSB7CiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodHIuY2hpbGRyZW4s IGZ1bmN0aW9uKGNlbGwpIHsKICAgICAgICAgICAgICAgIGNlbGwuc3R5bGUudG9wID0gYWtrdVRv cCArICdweCc7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBha2t1VG9wICs9IHRyLm9mZnNl dEhlaWdodDsKICAgICAgICB9KTsKICAgIH0KCiAgICAvLyBTb25kZXJ0ZXJtaW4tS2xpY2s6IE1h cmtlci1aZWxsZSBvZWZmbmV0IERldGFpbC1Nb2RhbC4gV2lyZCBzb3dvaGwKICAgIC8vIGZ1ZXIg ZGllIEhhdXB0LUhlYXRtYXAgYWxzIGF1Y2ggZnVlciBkaWUgTmViZW53YWNoZW4tSGVhdG1hcCBy ZWdpc3RyaWVydC4KICAgIGZ1bmN0aW9uIF9oZWF0bWFwU29uZGVydGVybWluZUtsaWNrYmFyKGVs KSB7CiAgICAgICAgZWwucXVlcnlTZWxlY3RvckFsbCgnLm1hcmtlci1zb25kZXJ0ZXJtaW5bZGF0 YS1rbGlja2Jhcj0iMSJdJykuZm9yRWFjaChmdW5jdGlvbihjZWxsKSB7CiAgICAgICAgICAgIGNl bGwuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInOwogICAgICAgICAgICBjZWxsLmFkZEV2ZW50TGlz dGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFn YXRpb24oKTsKICAgICAgICAgICAgICAgIF96ZWlnZVNvbmRlcnRlcm1pbmVEZXRhaWwoY2VsbC5n ZXRBdHRyaWJ1dGUoJ2RhdGEtc3QtaWRzJykpOwogICAgICAgICAgICB9KTsKICAgICAgICB9KTsK ICAgIH0KCiAgICBmdW5jdGlvbiBfcmVuZGVyVGVhbUhlYXRtYXAoZWwsIGRhdGEsIHRhZ2UsIHRh Z01ldGEsIHBlcnNvbk1hcCwgZWludHJhZWdlKSB7CiAgICAgICAgdmFyIGtvcGYgPSBfaGVhdG1h cEtvcGZUZWlsKHRhZ2UsIHRhZ01ldGEpOwogICAgICAgIHZhciBtb25hdEhlYWQgICAgID0ga29w Zi5tb25hdEhlYWQ7CiAgICAgICAgdmFyIHRhZ0hlYWQgICAgICAgPSBrb3BmLnRhZ0hlYWQ7CiAg ICAgICAgdmFyIHd0SGVhZCAgICAgICAgPSBrb3BmLnd0SGVhZDsKICAgICAgICB2YXIgZmVpZXJ0 YWdSb3cgICA9IGtvcGYuZmVpZXJ0YWdSb3c7CiAgICAgICAgdmFyIGZlcmllblJvdyAgICAgPSBr b3BmLmZlcmllblJvdzsKICAgICAgICB2YXIgc29uZGVydGVybVJvdyA9IGtvcGYuc29uZGVydGVy bVJvdzsKICAgICAgICB2YXIgc3BhbHRlbktsYXNzZW4gPSBrb3BmLnNwYWx0ZW5LbGFzc2VuOwog ICAgICAgIHZhciBtYWtlU3BhY2VyICAgICA9IGtvcGYubWFrZVNwYWNlcjsKCiAgICAgICAgLy8g S29udGV4dCBmdWVyIENsaWNrLUhhbmRsZXIgYWJsZWdlbiDigJQgRGV0YWlsLVplaWxlbiB3ZXJk ZW4gYmVpCiAgICAgICAgLy8gRXhwYW5kLUtsaWNrcyBkaXJla3QgcGVyIGluc2VydEFkamFjZW50 SFRNTCBlaW5nZWZ1ZWd0IHN0YXR0IGRpZQogICAgICAgIC8vIGdhbnplIFRhYmVsbGUgbmV1IHp1 IHJlbmRlcm4uCiAgICAgICAgX2hlYXRtYXBLb250ZXh0ID0geyB0YWdlOiB0YWdlLCB0YWdNZXRh OiB0YWdNZXRhLCBwZXJzb25NYXA6IHBlcnNvbk1hcCwgZWludHJhZWdlOiBlaW50cmFlZ2UgfTsK ICAgICAgICB2YXIgcm93c0h0bWwgPSBkYXRhLm1hcChmdW5jdGlvbih0LCBpZHgpIHsKICAgICAg ICAgICAgdmFyIGV4cGFuZGVkID0gISFfc3RhdFRlYW1FeHBhbmRlZFt0LmlkXTsKICAgICAgICAg ICAgdmFyIHBmZWlsID0gZXhwYW5kZWQgPyAn4pa+JyA6ICfilrgnOwogICAgICAgICAgICB2YXIg cG9vbCA9IF9pc3RQb29sVGVhbSh0KTsKICAgICAgICAgICAgLy8gUG9vbC1TdGFuZG9ydGUgKExE LCBTTykgd2VyZGVuIGFscyBlaW4gZ2VtZWluc2FtZXIgQmxvY2sgYmVoYW5kZWx0CiAgICAgICAg ICAgIC8vIOKAlCBrZWluIFNwYWNlciB6d2lzY2hlbiBpaG5lbiwgZGEgc2llIGZ1bmt0aW9uYWwg enVzYW1tZW5nZWhvZXJlbi4KICAgICAgICAgICAgdmFyIHZvclBvb2wgICA9IGlkeCA+IDAgJiYg X2lzdFBvb2xUZWFtKGRhdGFbaWR4IC0gMV0pOwogICAgICAgICAgICB2YXIgamV0enRQb29sID0g X2lzdFBvb2xUZWFtKHQpOwogICAgICAgICAgICB2YXIgc3RhbmRvcnRXZWNoc2VsID0gaWR4ID4g MCAmJiBkYXRhW2lkeCAtIDFdLnN0YW5kb3J0ICE9PSB0LnN0YW5kb3J0ICYmICEodm9yUG9vbCAm JiBqZXR6dFBvb2wpOwogICAgICAgICAgICB2YXIgaGF1cHRUcmVubmVyICAgID0gaWR4ID4gMCAm JiBkYXRhW2lkeCAtIDFdLnN0YW5kb3J0ID09PSAnSEEnICYmIHQuc3RhbmRvcnQgPT09ICdCTyc7 CiAgICAgICAgICAgIHZhciBzcGFjZXJSb3cgPSAnJzsKICAgICAgICAgICAgaWYgKGhhdXB0VHJl bm5lcikgewogICAgICAgICAgICAgICAgLy8gSGF1cHR3YWNoZW4tVHJlbm5lcjogb2JlcmVyIFNw YWNlciBtaXQgQm9yZGVyLUJvdHRvbSAoZ3JhdWUKICAgICAgICAgICAgICAgIC8vIFRyZW5ubGlu aWUpLCB1bnRlcmVyIFNwYWNlciBhbHMgRGlzdGFueiBkYW5hY2guCiAgICAgICAgICAgICAgICBz cGFjZXJSb3cgPSBtYWtlU3BhY2VyKCd0ZWFtLWhtLXNwYWNlci1oYXVwdC1vYmVuJykgKwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWFrZVNwYWNlcigndGVhbS1obS1zcGFjZXItaGF1cHQt dW50ZW4nKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFuZG9ydFdlY2hzZWwpIHsKICAgICAg ICAgICAgICAgIHNwYWNlclJvdyA9IG1ha2VTcGFjZXIoJ3RlYW0taG0tc3BhY2VyLXN0YW5kb3J0 Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIHRlYW1Sb3cgPSAnPHRyIGNsYXNzPSJ0 ZWFtLWhtLXJvdyIgZGF0YS10ZWFtLWlkPSInICsgdC5pZCArICciPicgKwogICAgICAgICAgICAg ICAgJzx0aCBjbGFzcz0idGVhbS1obS1uYW1lIHRlYW0taG0tY2xpY2thYmxlIiB0aXRsZT0iS2xp Y2sgemVpZ3QgUGVyc29uZW4tRGV0YWlsIj4nICsKICAgICAgICAgICAgICAgICAgICAnPHNwYW4g Y2xhc3M9InRlYW0taG0tdG9nZ2xlIj4nICsgcGZlaWwgKyAnPC9zcGFuPiAnICsgZXNjYXBlSFRN TCh0Lm5hbWUpICsKICAgICAgICAgICAgICAgICc8L3RoPicgKwogICAgICAgICAgICAgICAgdGFn ZS5tYXAoZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBtID0gdGFnTWV0YVtk XTsKICAgICAgICAgICAgICAgICAgICB2YXIgaW5mbyA9IHQudGFnZVtkXTsKICAgICAgICAgICAg ICAgICAgICB2YXIgYmFzZUNscyA9IFsndGVhbS1obS1jZWxsJ10uY29uY2F0KHNwYWx0ZW5LbGFz c2VuKGQpKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCFpbmZvIHx8IGluZm8udG90YWwgPT09 IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICc8dGQgY2xhc3M9IicgKyBiYXNl Q2xzLmpvaW4oJyAnKSArICciPjwvdGQ+JzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgICAgLy8gQmVpIG5pZW1hbmQgaW0gRGllbnN0OiByb3QgbnVyIHdlbm4gYWxsZSAi aGFldHRlbiBhcmJlaXRlbgogICAgICAgICAgICAgICAgICAgIC8vIGtvZW5uZW4iIChGcmVpLUNv ZGVzKSwgc29uc3QgZ3JhdSAobGVnaXRpbWUgQWJ3ZXNlbmhlaXQpLgogICAgICAgICAgICAgICAg ICAgIGZ1bmN0aW9uIGZhcmJlQmVpTnVsbERpZW5zdCgpIHsKICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKGluZm8uYWJ3ZXNlbmQgPj0gMSkgcmV0dXJuICd0ZWFtLWdyYXUnOwogICAgICAgICAg ICAgICAgICAgICAgICBpZiAoaW5mby5mcmVpID49IDEpICAgICByZXR1cm4gJ3RlYW0tcic7CiAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndGVhbS1ncmF1JzsKICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gUG9vbC1UZWFtOiByb3QgLyBncmF1IC8gZ3J1 ZW4g4oCUIEtFSU5FIFphaGwgaW4gZGVyIFplbGxlLgogICAgICAgICAgICAgICAgICAgIC8vIGdy dWVuIE5VUiBiZWkgZWNodGVtIERHTC1TcHJpbmdlbiAoUG9vbC1QZXJzb24gbWFjaHQKICAgICAg ICAgICAgICAgICAgICAvLyBGL1MvTi1ER0wgVU5EIGRpZSBaaWVsd2FjaGUgaGF0IGluIGRpZXNl ciBTY2hpY2h0IGtlaW5lbgogICAgICAgICAgICAgICAgICAgIC8vIGVpZ2VuZW4gREdMKS4gUG9v bC1QZXJzb24gaW0gRGllbnN0IGFiZXIgb2huZSBER0wtCiAgICAgICAgICAgICAgICAgICAgLy8g VmVydHJldHVuZ3MtRnVua3Rpb24gKHouQi4gRi1GQlAgb2RlciBER0wtYmVpLWJlc2V0enRlci0K ICAgICAgICAgICAgICAgICAgICAvLyBaaWVsd2FjaGUpIHdpcmQgZ3JhdSBkYXJnZXN0ZWxsdCDi gJQgc2llIGlzdCBkYSwgYWJlcgogICAgICAgICAgICAgICAgICAgIC8vIHN0YXRpc3Rpc2NoIG5p Y2h0IGFscyBQb29sLVNwcmluZ2VyIHJlbGV2YW50LgogICAgICAgICAgICAgICAgICAgIGlmIChw b29sKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwb29sRmFyYmUsIHBvb2xUaXA7CiAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLmltRGllbnN0ID09PSAwKSB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwb29sRmFyYmUgPSBmYXJiZUJlaU51bGxEaWVuc3QoKTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBvb2xUaXAgPSBkICsgJyDigJQgbmljaHQgaW0gRGll bnN0JzsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbmZvLmlzdFNwcmluZ2Vy KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb29sRmFyYmUgPSAndGVhbS1nJzsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBvb2xUaXAgPSBkICsgJyDigJQgc3ByaW5ndCBhbHMg REdMIGVpbic7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwb29sRmFyYmUgPSAndGVhbS1ncmF1JzsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBvb2xUaXAgPSBkICsgJyDigJQgaW0gRGllbnN0LCBuaWNodCBhbHMgREdMLVZl cnRyZXR1bmcnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg ICAgIGJhc2VDbHMucHVzaChwb29sRmFyYmUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gJzx0ZCBjbGFzcz0iJyArIGJhc2VDbHMuam9pbignICcpICsgJyIgdGl0bGU9IicgKyBlc2Nh cGVBdHRyKHBvb2xUaXApICsgJyI+PC90ZD4nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICAgICAvLyBSZWd1bMOkcmUgVGVhbXM6IHJvdCAvIGdyYXUgLyBuZXV0cmFsICgx IGRhKSAvIGdyw7xuICgyKykgLyBnb2xkIChhbGxlKQogICAgICAgICAgICAgICAgICAgIHZhciBm YXJiZSA9IChpbmZvLmltRGllbnN0ID09PSAwKSA/IGZhcmJlQmVpTnVsbERpZW5zdCgpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDogKGluZm8uaW1EaWVuc3QgPj0gaW5mby50b3RhbCkg PyAndGVhbS1nb2xkJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChpbmZvLmltRGll bnN0ID09PSAxKSA/ICd0ZWFtLW4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3Rl YW0tZyc7CiAgICAgICAgICAgICAgICAgICAgYmFzZUNscy5wdXNoKGZhcmJlKTsKICAgICAgICAg ICAgICAgICAgICAvLyBCZWkgMC1EaWVuc3QgbmljaHRzIGFuemVpZ2VuIChaYWhsIGhhZXR0ZSBr ZWluZW4gTWVocndlcnQpLAogICAgICAgICAgICAgICAgICAgIC8vIGFuc29uc3RlbiBkaWUgQW56 YWhsLgogICAgICAgICAgICAgICAgICAgIHZhciBpbmhhbHQgPSBpbmZvLmltRGllbnN0ID09PSAw ID8gJycgOiBpbmZvLmltRGllbnN0OwogICAgICAgICAgICAgICAgICAgIHZhciB0aXAgPSBkICsg JyDigJQgJyArIGluZm8uaW1EaWVuc3QgKyAnLycgKyBpbmZvLnRvdGFsICsgJyBpbSBEaWVuc3Qn OwogICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLmltRGllbnN0ID09PSAwKSB7CiAgICAgICAg ICAgICAgICAgICAgICAgIGlmIChpbmZvLmFid2VzZW5kKSB0aXAgKz0gJyAoJyArIGluZm8uYWJ3 ZXNlbmQgKyAnIGFid2VzZW5kKSc7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLmZy ZWkpICAgICB0aXAgKz0gJyAoJyArIGluZm8uZnJlaSArICcgZnJlaSknOwogICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzx0ZCBjbGFzcz0iJyArIGJhc2VD bHMuam9pbignICcpICsgJyIgdGl0bGU9IicgKyBlc2NhcGVBdHRyKHRpcCkgKyAnIj4nICsgaW5o YWx0ICsgJzwvdGQ+JzsKICAgICAgICAgICAgICAgIH0pLmpvaW4oJycpICsKICAgICAgICAgICAg ICAgICc8L3RyPic7CgogICAgICAgICAgICBpZiAoIWV4cGFuZGVkKSByZXR1cm4gc3BhY2VyUm93 ICsgdGVhbVJvdzsKCiAgICAgICAgICAgIC8vIERldGFpbC1aZWlsZW4gcHJvIFBlcnNvbiDigJQg Z2xlaWNoZXIgSGVscGVyIHdpcmQgYmVpbSBFeHBhbmQtCiAgICAgICAgICAgIC8vIEtsaWNrIGVy bmV1dCBnZW51dHp0LCB1bSBkaWUgWmVpbGVuIG5hY2h0cmFlZ2xpY2ggZWluenVmdWVnZW4uCiAg ICAgICAgICAgIHJldHVybiBzcGFjZXJSb3cgKyB0ZWFtUm93ICsgX2J1aWxkVGVhbURldGFpbFJv d3ModCwgX2hlYXRtYXBLb250ZXh0KTsKICAgICAgICB9KS5qb2luKCcnKTsKCiAgICAgICAgZWwu aW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9InRhYmVsbGUtc2Nyb2xsIHRlYW0taG0tc2Nyb2xsIj4n ICsKICAgICAgICAgICAgJzx0YWJsZSBjbGFzcz0idGVhbS1obS10YWJlbGxlIj4nICsKICAgICAg ICAgICAgICAgICc8dGhlYWQ+JyArCiAgICAgICAgICAgICAgICAgICAgJzx0cj48dGggY2xhc3M9 InRlYW0taG0tbmFtZSI+PC90aD4nICsgbW9uYXRIZWFkICsgJzwvdHI+JyArCiAgICAgICAgICAg ICAgICAgICAgJzx0cj48dGggY2xhc3M9InRlYW0taG0tbmFtZSI+PC90aD4nICsgdGFnSGVhZCAg ICsgJzwvdHI+JyArCiAgICAgICAgICAgICAgICAgICAgJzx0cj48dGggY2xhc3M9InRlYW0taG0t bmFtZSI+PC90aD4nICsgd3RIZWFkICAgICsgJzwvdHI+JyArCiAgICAgICAgICAgICAgICAgICAg ZmVpZXJ0YWdSb3cgKyBmZXJpZW5Sb3cgKyBzb25kZXJ0ZXJtUm93ICsKICAgICAgICAgICAgICAg ICc8L3RoZWFkPicgKwogICAgICAgICAgICAgICAgJzx0Ym9keT4nICsgcm93c0h0bWwgKyAnPC90 Ym9keT4nICsKICAgICAgICAgICAgJzwvdGFibGU+PC9kaXY+JzsKCiAgICAgICAgX2hlYXRtYXBT dGlja3lUb3BBbndlbmRlbihlbCk7CgogICAgICAgIC8vIEhvdmVyLUtyZXV6OiBFeGNlbC1TdHls ZS1IaWdobGlnaHQgdm9uIFplaWxlICsgU3BhbHRlLiBFdmVudC0KICAgICAgICAvLyBEZWxlZ2F0 aW9uIGF1ZiBkZXIgVGFiZWxsZSwgbmljaHQgcHJvIFplbGxlLCBzb25zdCBmcmlzc3QgZXMKICAg ICAgICAvLyBhdWYgZGVuIEJlaG9lcmRlbi1QQ3MgV2VjaHNlbHplaXQuCiAgICAgICAgLy8gU3Bh bHRlbi1UcmFja2luZyB1ZWJlciBjZWxsSW5kZXggKG5hdGl2ZSBIVE1MVGFibGVDZWxsRWxlbWVu dC0KICAgICAgICAvLyBQcm9wZXJ0eTogUG9zaXRpb24gaW5uZXJoYWxiIGRlcyByb3cuY2VsbHMt Q29sbGVjdGlvbikuIERpZQogICAgICAgIC8vIE1vbmF0c3plaWxlICgxLiB0aGVhZC1Sb3cgbWl0 IGNvbHNwYW4pIHdpcmQgcGVyIEtsYXNzZW4tRmlsdGVyCiAgICAgICAgLy8gd2VnZ2VsYXNzZW4s IHdlaWwgaWhyZSBjZWxsSW5kZXgtV2VydGUgbWl0IGRlbiBhbmRlcmVuIFJvd3MKICAgICAgICAv LyBuaWNodCB1ZWJlcmVpbnN0aW1tZW4uCiAgICAgICAgdmFyIHRibCA9IGVsLnF1ZXJ5U2VsZWN0 b3IoJy50ZWFtLWhtLXRhYmVsbGUnKTsKICAgICAgICBpZiAodGJsKSB7CiAgICAgICAgICAgIHZh ciBha3R1ZWxsZVplbGxlID0gbnVsbDsKICAgICAgICAgICAgZnVuY3Rpb24gY2xlYXJDcm9zcygp IHsKICAgICAgICAgICAgICAgIGlmICghYWt0dWVsbGVaZWxsZSkgcmV0dXJuOwogICAgICAgICAg ICAgICAgdGJsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5obS1jcm9zcycpLmZvckVhY2goZnVuY3Rpb24o YykgeyBjLmNsYXNzTGlzdC5yZW1vdmUoJ2htLWNyb3NzJyk7IH0pOwogICAgICAgICAgICAgICAg YWt0dWVsbGVaZWxsZSA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24g YXBwbHlDcm9zcyhjZWxsKSB7CiAgICAgICAgICAgICAgICB2YXIgcm93ID0gY2VsbC5wYXJlbnRF bGVtZW50OwogICAgICAgICAgICAgICAgaWYgKCFyb3cpIHJldHVybjsKICAgICAgICAgICAgICAg IHZhciBjb2wgPSBjZWxsLmNlbGxJbmRleDsKICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlw ZS5mb3JFYWNoLmNhbGwocm93LmNlbGxzLCBmdW5jdGlvbihjKSB7IGMuY2xhc3NMaXN0LmFkZCgn aG0tY3Jvc3MnKTsgfSk7CiAgICAgICAgICAgICAgICB0YmwucXVlcnlTZWxlY3RvckFsbCgndHIn KS5mb3JFYWNoKGZ1bmN0aW9uKHRyKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRyID09PSBy b3cpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBpZiAodHIucXVlcnlTZWxlY3RvcignLnRl YW0taG0tbW9uYXQtY2VsbCcpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0 ci5jZWxsc1tjb2xdOwogICAgICAgICAgICAgICAgICAgIGlmIChjKSBjLmNsYXNzTGlzdC5hZGQo J2htLWNyb3NzJyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAg ICB0YmwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgZnVuY3Rpb24oZSkgewogICAgICAg ICAgICAgICAgdmFyIGNlbGwgPSBlLnRhcmdldC5jbG9zZXN0KCd0ZCwgdGgnKTsKICAgICAgICAg ICAgICAgIGlmICghY2VsbCB8fCBjZWxsID09PSBha3R1ZWxsZVplbGxlKSByZXR1cm47CiAgICAg ICAgICAgICAgICBpZiAoY2VsbC5jbGFzc0xpc3QuY29udGFpbnMoJ3RlYW0taG0tbW9uYXQtY2Vs bCcpKSByZXR1cm47CiAgICAgICAgICAgICAgICBjbGVhckNyb3NzKCk7CiAgICAgICAgICAgICAg ICBha3R1ZWxsZVplbGxlID0gY2VsbDsKICAgICAgICAgICAgICAgIGFwcGx5Q3Jvc3MoY2VsbCk7 CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0YmwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vs ZWF2ZScsIGNsZWFyQ3Jvc3MpOwogICAgICAgIH0KCiAgICAgICAgLy8gS2xpY2stSGFuZGxlcjog RXhwYW5kL0NvbGxhcHNlIHBybyBUZWFtLiBSZWFnaWVydCBhdWYgS2xpY2tzCiAgICAgICAgLy8g dWViZXJhbGwgaW4gZGVyIFRlYW0tWmVpbGUgKE5hbWUsIFRhZ2VzemVsbGVuKS4gRGV0YWlsLVBl cnNvbmVuLQogICAgICAgIC8vIFplaWxlbiBoYWJlbiBrZWluIGRhdGEtdGVhbS1pZCwgc2luZCBk YWR1cmNoIGF1dG9tYXRpc2NoIGF1c2dlbm9tbWVuLgogICAgICAgIC8vIFNvbmRlcnRlcm1pbi1N YXJrZXItWmVsbGVuIHN0b3BwZW4gZGVuIEJ1YmJsZSAocy4gbmFlY2hzdGVyIEJsb2NrKS4KICAg ICAgICAvLyBTdGF0dCBkaWUgZ2FuemUgVGFiZWxsZSBuZXUgenUgcmVuZGVybiwgcGF0Y2hlbiB3 aXIgZGllIERldGFpbC0KICAgICAgICAvLyBaZWlsZW4gZGlyZWt0IGFtIERPTSAoaW5zZXJ0QWRq YWNlbnRIVE1MIC8gcmVtb3ZlKS4KICAgICAgICBlbC5xdWVyeVNlbGVjdG9yQWxsKCcudGVhbS1o bS1yb3dbZGF0YS10ZWFtLWlkXScpLmZvckVhY2goZnVuY3Rpb24ocm93KSB7CiAgICAgICAgICAg IHJvdy5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7CiAgICAgICAgICAgIHJvdy5hZGRFdmVudExp c3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHRpZCA9IHJv dy5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGVhbS1pZCcpOwogICAgICAgICAgICAgICAgdmFyIG51biA9 ICFfc3RhdFRlYW1FeHBhbmRlZFt0aWRdOwogICAgICAgICAgICAgICAgX3N0YXRUZWFtRXhwYW5k ZWRbdGlkXSA9IG51bjsKICAgICAgICAgICAgICAgIHZhciB0b2dnbGUgPSByb3cucXVlcnlTZWxl Y3RvcignLnRlYW0taG0tdG9nZ2xlJyk7CiAgICAgICAgICAgICAgICBpZiAodG9nZ2xlKSB0b2dn bGUudGV4dENvbnRlbnQgPSBudW4gPyAn4pa+JyA6ICfilrgnOwogICAgICAgICAgICAgICAgaWYg KG51bikgewogICAgICAgICAgICAgICAgICAgIHZhciBhbGxlVGVhbXMgPSBfdGVhbURhdGVuR2Vm aWx0ZXJ0KCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRlYW0gPSBudWxsOwogICAgICAgICAg ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsZVRlYW1zLmxlbmd0aDsgaSsrKSB7CiAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChTdHJpbmcoYWxsZVRlYW1zW2ldLmlkKSA9PT0gU3Ry aW5nKHRpZCkpIHsgdGVhbSA9IGFsbGVUZWFtc1tpXTsgYnJlYWs7IH0KICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHRlYW0gJiYgX2hlYXRtYXBLb250ZXh0KSB7 CiAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5k JywgX2J1aWxkVGVhbURldGFpbFJvd3ModGVhbSwgX2hlYXRtYXBLb250ZXh0KSk7CiAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg ICB2YXIgbnggPSByb3cubmV4dEVsZW1lbnRTaWJsaW5nOwogICAgICAgICAgICAgICAgICAgIHdo aWxlIChueCAmJiBueC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGVhbS1kZXRhaWwtZm9yJykgPT09IHRp ZCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2VnID0gbng7CiAgICAgICAgICAgICAg ICAgICAgICAgIG54ID0gbngubmV4dEVsZW1lbnRTaWJsaW5nOwogICAgICAgICAgICAgICAgICAg ICAgICB3ZWcucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg fQogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgICBfaGVhdG1hcFNvbmRlcnRlcm1p bmVLbGlja2JhcihlbCk7CiAgICB9CgogICAgLy8gRWlnZW5zdGFlbmRpZ2UgSGVhdG1hcC1SZW5k ZXItRnVua3Rpb24gZnVlciBkaWUgTmViZW53YWNoZW4gKEJPL0FSL0ZSKS4KICAgIC8vIFBybyBU YWcgcHJ1ZWZlbiB3aXIgZnVlciBGL1MvTiwgb2IgZWluIFRlYW0tTWl0Z2xpZWQgaW4gZGVyIGFr dGl2ZW4KICAgIC8vIEZ1ZWhydW5nIChUb3AtMiBuYWNoIEZ1bmt0aW9ucy1SYW5nK1Bvc2l0aW9u KSBzdGVodCDigJQgZGFzIHNpbmQgZGllCiAgICAvLyBzY2hyYWZmaWVydGVuIDEuLzIuIFZJMy1E R0wgYXVzIGRlciBQbGFudW5nLiBIYXVwdHdhY2hlbiBLYW1lbi9IYWdlbgogICAgLy8gc3RlbGxl biBkYXMgbm9ybWFsZXJ3ZWlzZTsgZ3J1biBhdWYgZWluZXIgTmViZW53YWNoZSBtYXJraWVydCBl aW5lCiAgICAvLyBTb25kZXItS29uc3RlbGxhdGlvbiAoTHVlY2tlIGF1ZiBkZXIgSGF1cHR3YWNo ZSwgQ3Jvc3MtV2FjaGVuLUVpbnNhdHopLgogICAgZnVuY3Rpb24gX3JlbmRlck5lYmVud2FjaGVu SGVhdG1hcChlbCwgZGF0YSwgdGFnZSwgdGFnTWV0YSkgewogICAgICAgIHZhciBuZWJlblN0YW5k b3J0ZSA9IFsnQk8nLCAnQVInLCAnRlInXTsKICAgICAgICB2YXIgbmViZW5UZWFtcyA9IGRhdGEu ZmlsdGVyKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIG5lYmVuU3RhbmRvcnRlLmlu ZGV4T2YodC5zdGFuZG9ydCkgPj0gMDsKICAgICAgICB9KTsKICAgICAgICBpZiAoIW5lYmVuVGVh bXMubGVuZ3RoKSB7CiAgICAgICAgICAgIGVsLmlubmVySFRNTCA9ICc8cCBjbGFzcz0idGV4dC1t dXRlZCIgc3R5bGU9InBhZGRpbmc6MjRweDt0ZXh0LWFsaWduOmNlbnRlciI+S2VpbmUgTmViZW53 YWNoZW4tTWlrcm90ZWFtcyBpbiBkZXIgYWt0dWVsbGVuIEF1c3dhaGwuPC9wPic7CiAgICAgICAg ICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdmFyIGtvcGYgPSBfaGVhdG1hcEtvcGZUZWls KHRhZ2UsIHRhZ01ldGEpOwogICAgICAgIHZhciBzcGFsdGVuS2xhc3NlbiA9IGtvcGYuc3BhbHRl bktsYXNzZW47CiAgICAgICAgdmFyIG1ha2VTcGFjZXIgICAgID0ga29wZi5tYWtlU3BhY2VyOwoK ICAgICAgICAvLyBGdWVocnVuZ3MtTWFwIHBybyBUYWcgYXVmYmF1ZW4gKENhY2hlIOKAlCB2ZXJt ZWlkZXQgTyhUYWdlKlRlYW1zKjQ1KSkuCiAgICAgICAgdmFyIGZ1ZWhydW5nUHJvVGFnID0ge307 CiAgICAgICAgdGFnZS5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgZnVlaHJ1bmdQ cm9UYWdbZF0gPSB7CiAgICAgICAgICAgICAgICBGOiBha3RpdmVGdWVocnVuZyhkLCAnRicpLm1h cChmdW5jdGlvbihwKSB7IHJldHVybiBwLmlkOyB9KSwKICAgICAgICAgICAgICAgIFM6IGFrdGl2 ZUZ1ZWhydW5nKGQsICdTJykubWFwKGZ1bmN0aW9uKHApIHsgcmV0dXJuIHAuaWQ7IH0pLAogICAg ICAgICAgICAgICAgTjogYWt0aXZlRnVlaHJ1bmcoZCwgJ04nKS5tYXAoZnVuY3Rpb24ocCkgeyBy ZXR1cm4gcC5pZDsgfSkKICAgICAgICAgICAgfTsKICAgICAgICB9KTsKICAgICAgICB2YXIgcm93 c0h0bWwgPSBuZWJlblRlYW1zLm1hcChmdW5jdGlvbih0LCBpZHgpIHsKICAgICAgICAgICAgdmFy IHRlYW1JZHMgPSB7fTsKICAgICAgICAgICAgKHQucGVyc29uSWRzIHx8IFtdKS5mb3JFYWNoKGZ1 bmN0aW9uKHBpZCkgeyB0ZWFtSWRzW3BpZF0gPSB0cnVlOyB9KTsKICAgICAgICAgICAgdmFyIGNl bGxzID0gdGFnZS5tYXAoZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgICAgdmFyIGNscyA9IFsn dGVhbS1obS1jZWxsJywgJ3RlYW0taG0tbnctY2VsbCddLmNvbmNhdChzcGFsdGVuS2xhc3Nlbihk KSk7CiAgICAgICAgICAgICAgICB2YXIgZnVlaCA9IGZ1ZWhydW5nUHJvVGFnW2RdOwogICAgICAg ICAgICAgICAgdmFyIGFrdGl2ID0gWydGJywnUycsJ04nXS5zb21lKGZ1bmN0aW9uKHNjaCkgewog ICAgICAgICAgICAgICAgICAgIHJldHVybiAoZnVlaFtzY2hdIHx8IFtdKS5zb21lKGZ1bmN0aW9u KHBpZCkgeyByZXR1cm4gdGVhbUlkc1twaWRdOyB9KTsKICAgICAgICAgICAgICAgIH0pOwogICAg ICAgICAgICAgICAgaWYgKGFrdGl2KSBjbHMucHVzaCgndGVhbS1nJyk7CiAgICAgICAgICAgICAg ICByZXR1cm4gJzx0ZCBjbGFzcz0iJyArIGNscy5qb2luKCcgJykgKyAnIj48L3RkPic7CiAgICAg ICAgICAgIH0pLmpvaW4oJycpOwogICAgICAgICAgICB2YXIgc3BhY2VyID0gJyc7CiAgICAgICAg ICAgIGlmIChpZHggPiAwICYmIG5lYmVuVGVhbXNbaWR4IC0gMV0uc3RhbmRvcnQgIT09IHQuc3Rh bmRvcnQpIHsKICAgICAgICAgICAgICAgIHNwYWNlciA9IG1ha2VTcGFjZXIoJ3RlYW0taG0tc3Bh Y2VyLXN0YW5kb3J0Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNwYWNlciAr CiAgICAgICAgICAgICAgICAnPHRyIGNsYXNzPSJ0ZWFtLWhtLXJvdyB0ZWFtLWhtLW53LXJvdyI+ JyArCiAgICAgICAgICAgICAgICAnPHRoIGNsYXNzPSJ0ZWFtLWhtLW5hbWUiPicgKyBlc2NhcGVI VE1MKHQubmFtZSkgKyAnPC90aD4nICsKICAgICAgICAgICAgICAgIGNlbGxzICsKICAgICAgICAg ICAgICAgICc8L3RyPic7CiAgICAgICAgfSkuam9pbignJyk7CgogICAgICAgIGVsLmlubmVySFRN TCA9ICc8ZGl2IGNsYXNzPSJ0YWJlbGxlLXNjcm9sbCB0ZWFtLWhtLXNjcm9sbCI+JyArCiAgICAg ICAgICAgICc8dGFibGUgY2xhc3M9InRlYW0taG0tdGFiZWxsZSI+JyArCiAgICAgICAgICAgICAg ICAnPHRoZWFkPicgKwogICAgICAgICAgICAgICAgICAgICc8dHI+PHRoIGNsYXNzPSJ0ZWFtLWht LW5hbWUiPjwvdGg+JyArIGtvcGYubW9uYXRIZWFkICsgJzwvdHI+JyArCiAgICAgICAgICAgICAg ICAgICAgJzx0cj48dGggY2xhc3M9InRlYW0taG0tbmFtZSI+PC90aD4nICsga29wZi50YWdIZWFk ICAgKyAnPC90cj4nICsKICAgICAgICAgICAgICAgICAgICAnPHRyPjx0aCBjbGFzcz0idGVhbS1o bS1uYW1lIj48L3RoPicgKyBrb3BmLnd0SGVhZCAgICArICc8L3RyPicgKwogICAgICAgICAgICAg ICAgICAgIGtvcGYuZmVpZXJ0YWdSb3cgKyBrb3BmLmZlcmllblJvdyArIGtvcGYuc29uZGVydGVy bVJvdyArCiAgICAgICAgICAgICAgICAnPC90aGVhZD4nICsKICAgICAgICAgICAgICAgICc8dGJv ZHk+JyArIHJvd3NIdG1sICsgJzwvdGJvZHk+JyArCiAgICAgICAgICAgICc8L3RhYmxlPjwvZGl2 Pic7CgogICAgICAgIF9oZWF0bWFwU3RpY2t5VG9wQW53ZW5kZW4oZWwpOwogICAgICAgIF9oZWF0 bWFwU29uZGVydGVybWluZUtsaWNrYmFyKGVsKTsKICAgIH0KCiAgICBmdW5jdGlvbiBfemVpZ2VT b25kZXJ0ZXJtaW5lRGV0YWlsKGlkc0NzdikgewogICAgICAgIHZhciBpZHMgPSAoaWRzQ3N2IHx8 ICcnKS5zcGxpdCgnLCcpLmZpbHRlcihCb29sZWFuKTsKICAgICAgICB2YXIgYWxsZSA9IChaLmFk bWluICYmIFouYWRtaW4uc29uZGVydGVybWluZSkgfHwgW107CiAgICAgICAgdmFyIHRyZWZmZXIg PSBhbGxlLmZpbHRlcihmdW5jdGlvbihzKSB7IHJldHVybiBpZHMuaW5kZXhPZihzLmlkKSA+PSAw OyB9KTsKICAgICAgICBpZiAoIXRyZWZmZXIubGVuZ3RoKSByZXR1cm47CiAgICAgICAgdmFyIGh0 bWwgPSAnPGRpdiBjbGFzcz0ic29uZGVydGVybWluLWRldGFpbCI+JyArCiAgICAgICAgICAgIHRy ZWZmZXIubWFwKGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgICAgIHZhciBkID0gcy5kYXR1bSAr IChzLmRhdHVtQmlzICYmIHMuZGF0dW1CaXMgIT09IHMuZGF0dW0gPyAnIOKAkyAnICsgcy5kYXR1 bUJpcyA6ICcnKTsKICAgICAgICAgICAgICAgIHZhciB0aXRlbCA9IHMudGl0ZWwgfHwgJyc7CiAg ICAgICAgICAgICAgICB2YXIgdHh0ID0gcy50ZXh0IHx8ICcnOwogICAgICAgICAgICAgICAgdmFy IHR5cCA9IHMudHlwIHx8ICdoaW53ZWlzJzsKICAgICAgICAgICAgICAgIHJldHVybiAnPGRpdiBj bGFzcz0ic29uZGVydGVybWluLWVpbnRyYWcgc29uZGVydGVybWluLScgKyBlc2NhcGVBdHRyKHR5 cCkgKyAnIj4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic29uZGVydGVybWlu LWtvcGYiPjxzdHJvbmc+JyArIGVzY2FwZUhUTUwoZCkgKyAnPC9zdHJvbmc+JyArICh0aXRlbCA/ ICcg4oCUICcgKyBlc2NhcGVIVE1MKHRpdGVsKSA6ICcnKSArICc8L2Rpdj4nICsKICAgICAgICAg ICAgICAgICAgICAnPGRpdiBjbGFzcz0ic29uZGVydGVybWluLXRleHQiPicgKyBlc2NhcGVIVE1M KHR4dCkgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICAgICAg fSkuam9pbignJykgKwogICAgICAgICc8L2Rpdj4nOwogICAgICAgIHZhciBmdXNzID0gJzxidXR0 b24gY2xhc3M9ImJ0biBidG4tcHJpbWFlciIgaWQ9InN0LWRldGFpbC1zY2hsaWVzc2VuIj5WZXJz dGFuZGVuPC9idXR0b24+JzsKICAgICAgICBtb2RhbFplaWdlbignU29uZGVydGVybWluKGUpJywg aHRtbCwgZnVzcywgbnVsbCk7CiAgICAgICAgdmFyIGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdzdC1kZXRhaWwtc2NobGllc3NlbicpOwogICAgICAgIGlmIChidG4pIGJ0bi5hZGRFdmVu dExpc3RlbmVyKCdjbGljaycsIG1vZGFsU2NobGllc3Nlbik7CiAgICB9CgogICAgLy8gQmFsa2Vu ZGlhZ3JhbW06IGdlc3RhcGVsdGVyIDEwMCUtQmFsa2VuIHBybyBUZWFtIG1pdCBUYWdlcy1BbnRl aWxlbgogICAgLy8gKHJvdCAvIG5ldXRyYWw9MSBkYSAvIGdyw7xuPTIrIC8gZ29sZD1hbGxlKS4g UG9vbC1UZWFtcyAoMSBQZXJzb24pCiAgICAvLyB3ZXJkZW4gYXVzZ2VmaWx0ZXJ0IOKAlCBzaWUg emVpZ2VuIGtlaW5lbiBzaW5udm9sbGVuIFRhZ2VzLUFudGVpbC4KICAgIGZ1bmN0aW9uIF9yZW5k ZXJUZWFtQmFsa2VuKGVsLCBkYXRhKSB7CiAgICAgICAgdmFyIHNvcnRGZWxkID0gX3N0YXRUZWFt QmFsa2VuU29ydDsKICAgICAgICB2YXIgcm93cyA9IGRhdGEuZmlsdGVyKGZ1bmN0aW9uKHQpIHsg cmV0dXJuICFfaXN0UG9vbFRlYW0odCk7IH0pOwogICAgICAgIGZ1bmN0aW9uIHNvcnRGbihhLCBi KSB7CiAgICAgICAgICAgIGlmIChzb3J0RmVsZCA9PT0gJ2x1ZWNrZW4nKSAgICAgIHJldHVybiAo Yi5zdGF0LnJvdCAgIC8gYi5zdGF0LnRvdGFsKSAtIChhLnN0YXQucm90ICAgLyBhLnN0YXQudG90 YWwpOwogICAgICAgICAgICBpZiAoc29ydEZlbGQgPT09ICd2b2xsc3RhZW5kaWcnKSByZXR1cm4g KGIuc3RhdC5nb2xkICAvIGIuc3RhdC50b3RhbCkgLSAoYS5zdGF0LmdvbGQgIC8gYS5zdGF0LnRv dGFsKTsKICAgICAgICAgICAgaWYgKHNvcnRGZWxkID09PSAnYWJkZWNrdW5nJykgICAgcmV0dXJu ICgoYi5zdGF0LnRvdGFsIC0gYi5zdGF0LnJvdCkgLyBiLnN0YXQudG90YWwpIC0gKChhLnN0YXQu dG90YWwgLSBhLnN0YXQucm90KSAvIGEuc3RhdC50b3RhbCk7CiAgICAgICAgICAgIHJldHVybiAw OyAgIC8vICdyZWloZW5mb2xnZScgPSBhZG1pbi5qc29uLU9yZGVyIGJlaWJlaGFsdGVuCiAgICAg ICAgfQogICAgICAgIHJvd3MgPSByb3dzLnNsaWNlKCkuc29ydChzb3J0Rm4pOwoKICAgICAgICAv LyBUcmVubmVyIEhhdXB0d2FjaGVuIDwtPiBSZXN0IG51ciBiZWkgRGVmYXVsdC1Tb3J0aWVydW5n IHNpbm52b2xsCiAgICAgICAgdmFyIHRyZW5uZXJBbiA9IChzb3J0RmVsZCA9PT0gJ3JlaWhlbmZv bGdlJyk7CgogICAgICAgIHZhciBodG1sID0gcm93cy5tYXAoZnVuY3Rpb24odCwgaWR4KSB7CiAg ICAgICAgICAgIHZhciBzID0gdC5zdGF0OwogICAgICAgICAgICB2YXIgdG90YWwgPSBzLnRvdGFs IHx8IDE7CiAgICAgICAgICAgIGZ1bmN0aW9uIHBjdChuKSB7IHJldHVybiAobiAvIHRvdGFsKSAq IDEwMDsgfQogICAgICAgICAgICBmdW5jdGlvbiBzZWcoa2xhc3NlLCB3ZXJ0LCBsYWJlbCkgewog ICAgICAgICAgICAgICAgaWYgKCF3ZXJ0KSByZXR1cm4gJyc7CiAgICAgICAgICAgICAgICB2YXIg YiA9IHBjdCh3ZXJ0KTsKICAgICAgICAgICAgICAgIC8vIFphaGwgbnVyIGVpbnJlbmRlcm4sIHdl bm4gZGFzIFNlZ21lbnQgYXVjaCB3aXJrbGljaCBicmVpdAogICAgICAgICAgICAgICAgLy8gZ2Vu dWcgaXN0LiBtaW4td2lkdGg6NHB4IGluIGRlciBDU1Mgc29yZ3QgZnVlciBlaW5lbgogICAgICAg ICAgICAgICAgLy8gZXJrZW5uYmFyZW4gRmFyYmJhbGtlbiBiaXMgaGluYWIgenUgfjAuNyAlOyBk aWUgWmFobAogICAgICAgICAgICAgICAgLy8gYnJhdWNodCBhYmVyIHBybyBaaWZmZXIgfjYgcHgg KGJlaSA5IHB4IEZvbnQpLCBhbHNvIGplCiAgICAgICAgICAgICAgICAvLyBuYWNoIFppZmZlci1B bnphaGwgZWluIGFuZGVyZXIgTWluZGVzdC1Qcm96ZW50d2VydC4KICAgICAgICAgICAgICAgIC8v IEFubmFobWUgdWViZXIgZGllIEJhci1XcmFwLUJyZWl0ZTogfjQwMCBweC4gMSBweCDiiYggMC4y NSAlLgogICAgICAgICAgICAgICAgLy8gICAxIFppZmZlciAoNiBweCk6ICA+PSAxLjUgJQogICAg ICAgICAgICAgICAgLy8gICAyIFppZmZlcm4gKDEyIHB4KTogPj0gMyAlCiAgICAgICAgICAgICAg ICAvLyAgIDMgWmlmZmVybiAoMTggcHgpOiA+PSA1ICUKICAgICAgICAgICAgICAgIC8vIERpZXNl IFNjaHdlbGxlbiBzY2huZWlkZW4gZGVuIFRvb2x0aXAgbmljaHQg4oCUIGRlciBIb3ZlcgogICAg ICAgICAgICAgICAgLy8gemVpZ3QgZGVuIGdlbmF1ZW4gV2VydCBhdWNoIGJlaSB3aW56aWdlbiBT ZWdtZW50ZW4uCiAgICAgICAgICAgICAgICB2YXIgemlmZmVybiA9IFN0cmluZyh3ZXJ0KS5sZW5n dGg7CiAgICAgICAgICAgICAgICB2YXIgbWluUGN0ID0gemlmZmVybiA9PT0gMSA/IDEuNSA6ICh6 aWZmZXJuID09PSAyID8gMyA6IDUpOwogICAgICAgICAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNz PSJ0ZWFtLWJhbGtlbi1zZWcgJyArIGtsYXNzZSArICciIHN0eWxlPSJ3aWR0aDonICsgYiArICcl IiB0aXRsZT0iJyArIGVzY2FwZUF0dHIobGFiZWwgKyAnOiAnICsgd2VydCArICcgVGFnZSAoJyAr IE1hdGgucm91bmQoYikgKyAnICUpJykgKyAnIj4nICsgKGIgPj0gbWluUGN0ID8gd2VydCA6ICcn KSArICc8L2Rpdj4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBhYmRlY2t1bmcgPSB0 b3RhbCA/IE1hdGgucm91bmQoKCh0b3RhbCAtIHMucm90KSAvIHRvdGFsKSAqIDEwMCkgOiAwOwog ICAgICAgICAgICB2YXIgc3RhbmRvcnRXZWNoc2VsID0gdHJlbm5lckFuICYmIGlkeCA+IDAgJiYg cm93c1tpZHggLSAxXS5zdGFuZG9ydCAhPT0gdC5zdGFuZG9ydDsKICAgICAgICAgICAgdmFyIGhh dXB0VHJlbm5lciAgICA9IHRyZW5uZXJBbiAmJiBpZHggPiAwICYmIHJvd3NbaWR4IC0gMV0uc3Rh bmRvcnQgPT09ICdIQScgJiYgdC5zdGFuZG9ydCA9PT0gJ0JPJzsKICAgICAgICAgICAgdmFyIHRy ZW5uZXJDbHMgPSBoYXVwdFRyZW5uZXIgICA/ICcgdGVhbS1iYWxrZW4tdHJlbm5lci1oYXVwdCcK ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzdGFuZG9ydFdlY2hzZWwgPyAnIHRlYW0tYmFs a2VuLXRyZW5uZXItc3RhbmRvcnQnCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJyc7CiAg ICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0idGVhbS1iYWxrZW4temVpbGUnICsgdHJlbm5l ckNscyArICciPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InRlYW0tYmFsa2VuLW5h bWUiPicgKyBlc2NhcGVIVE1MKHQubmFtZSkgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAn PGRpdiBjbGFzcz0idGVhbS1iYWxrZW4tYmFyLXdyYXAiPicgKwogICAgICAgICAgICAgICAgICAg IHNlZygndGVhbS1yJywgICAgcy5yb3QsICAgICAnTMO8Y2tlIChhbGxlIHdvbGx0ZW4gZnJlaSkn KSArCiAgICAgICAgICAgICAgICAgICAgc2VnKCd0ZWFtLWdyYXUnLCBzLmdyYXUsICAgICdsZWdp dGltIGFid2VzZW5kIChVcmxhdWIvS3JhbmsvTGVocmdhbmcpJykgKwogICAgICAgICAgICAgICAg ICAgIHNlZygndGVhbS1uJywgICAgcy5uZXV0cmFsLCAnMSBkYScpICsKICAgICAgICAgICAgICAg ICAgICBzZWcoJ3RlYW0tZycsICAgIHMuZ3J1ZW4sICAgJzIrIGRhJykgKwogICAgICAgICAgICAg ICAgICAgIHNlZygndGVhbS1nb2xkJywgcy5nb2xkLCAgICAnYWxsZSBkYScpICsKICAgICAgICAg ICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJ0ZWFtLWJhbGtl bi10b3RhbCIgdGl0bGU9IkFiZGVja3VuZyBtaW5kZXN0ZW5zIDEgUGVyc29uIj4nICsgYWJkZWNr dW5nICsgJyAlPC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICB9KS5q b2luKCcnKTsKCiAgICAgICAgZWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9InRlYW0tYmFsa2Vu LXdyYXAiPicgKyBodG1sICsgJzwvZGl2Pic7CiAgICB9CgogICAgZnVuY3Rpb24gX3JlbmRlclRl YW1CYWxrZW5Tb3J0SG9va3MoKSB7CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgn LnN0YXRzLXRlYW0tc29ydC1ncnVwcGUgLnN0YXRzLWthdC1idG4nKS5mb3JFYWNoKGZ1bmN0aW9u KGIpIHsKICAgICAgICAgICAgaWYgKGIuZGF0YXNldC5mZXJ0aWcpIHJldHVybjsKICAgICAgICAg ICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAg ICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7ICAgLy8gbmljaHQgZGVuIFBhbmVsLVRvZ2dsZSBhdXNs b2VzZW4KICAgICAgICAgICAgICAgIF9zdGF0VGVhbUJhbGtlblNvcnQgPSBiLmdldEF0dHJpYnV0 ZSgnZGF0YS10ZWFtLXNvcnQnKSB8fCAncmVpaGVuZm9sZ2UnOwogICAgICAgICAgICAgICAgZG9j dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnN0YXRzLXRlYW0tc29ydC1ncnVwcGUgLnN0YXRzLWth dC1idG4nKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHsgeC5jbGFzc0xpc3QucmVtb3ZlKCdha3Rpdicp OyB9KTsKICAgICAgICAgICAgICAgIGIuY2xhc3NMaXN0LmFkZCgnYWt0aXYnKTsKICAgICAgICAg ICAgICAgIC8vIE51ciBkaWUgQmFsa2VuIG5ldSB6ZWljaG5lbiDigJQgZGllIEhlYXRtYXAgaXN0 IHZvbiBkaWVzZXIKICAgICAgICAgICAgICAgIC8vIFNvcnRpZXJ1bmcgdW5hYmhhZW5naWcgKHNw YXJ0IGRlbiBGdWxsLVJlcmVuZGVyIGRlciBIZWF0bWFwKS4KICAgICAgICAgICAgICAgIHZhciBi YWxrZW5FbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0cy10ZWFtLWJhbGtlbicpOwog ICAgICAgICAgICAgICAgaWYgKGJhbGtlbkVsKSBfcmVuZGVyVGVhbUJhbGtlbihiYWxrZW5FbCwg X3RlYW1EYXRlbkdlZmlsdGVydCgpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGIuZGF0 YXNldC5mZXJ0aWcgPSAnMSc7CiAgICAgICAgfSk7CiAgICAgICAgLy8gUGFuZWwtVG9nZ2xlIHVl YmVybmltbXQgcGFuZWxUb2dnbGVIb29rcygpIGdlbmVyaXNjaCDigJQgVGFnZXMtCiAgICAgICAg Ly8gQW50ZWlsZSBwcm8gVGVhbSBpc3Qgc2VpdCAyMDI2LTA1LTI1IGVpbiBlaWdlbmVzIFRvcC1M ZXZlbC1QYW5lbC4KICAgIH0KCiAgICAvLyBNb2R1bC1TdGF0ZSBEZXRhaWwtVGFiZWxsZW4tU29y dGllcnVuZy4gQmVpbSBLbGljayBhdWYgZWluZW4gSGVhZGVyCiAgICAvLyB3ZWNoc2VsdCBkYXMg U29ydGllci1GZWxkOyBnbGVpY2hlciBLbGljayB3aWVkZXIgZHJlaHQgZGllIFJpY2h0dW5nIHVt LgogICAgdmFyIF9zdGF0RGV0YWlsU29ydCA9IHsgZmVsZDogJ25hbWUnLCBhc2M6IHRydWUgfTsK CiAgICBmdW5jdGlvbiBkZXRhaWxUYWJlbGxlUmVuZGVybihzdGF0cykgewogICAgICAgIC8vIFN0 YW5kb3J0L0dydXBwZW4tTG9va3VwIHBlciBwZXJzb25JZCAoU2VydmVyIGxpZWZlcnQga2VpbiBv ZS1GZWxkKS4KICAgICAgICB2YXIgcGVyc29uTWFwID0ge307CiAgICAgICAgKFoucGxhbnVuZyAm JiBaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZvckVhY2goZnVuY3Rpb24ocCkgeyBwZXJzb25N YXBbcC5pZF0gPSBwOyB9KTsKICAgICAgICBmdW5jdGlvbiBvZU9mKHMpICAgICAgIHsgcmV0dXJu IChwZXJzb25NYXBbcy5wZXJzb25JZF0gfHwge30pLm9lIHx8ICcnOyB9CiAgICAgICAgZnVuY3Rp b24gb2VHcnVwcGVPZihzKSB7IHJldHVybiBvZU9mKHMpICsgKHMuZ3J1cHBlID8gJy0nICsgcy5n cnVwcGUgOiAnJyk7IH0KICAgICAgICBmdW5jdGlvbiBzb3J0VmFsKHMsIGZlbGQpIHsKICAgICAg ICAgICAgaWYgKGZlbGQgPT09ICduYW1lJykgICAgICByZXR1cm4gX3N0YXRBbnplaWdlTmFtZShz KS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICBpZiAoZmVsZCA9PT0gJ29lJykgICAgICAgIHJl dHVybiBvZU9mKHMpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgIGlmIChmZWxkID09PSAnb2VH cnVwcGUnKSAgcmV0dXJuIG9lR3J1cHBlT2YocykudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAg aWYgKGZlbGQgPT09ICdncnVwcGUnKSAgICByZXR1cm4gKHMuZ3J1cHBlIHx8ICcnKS50b0xvd2Vy Q2FzZSgpOwogICAgICAgICAgICAvLyBudW1lcmlzY2hlIEZlbGRlciBkaXJla3QgYXVzIGRlbSBT dGF0cy1PYmpla3QKICAgICAgICAgICAgcmV0dXJuIHNbZmVsZF0gfHwgMDsKICAgICAgICB9Cgog ICAgICAgIHZhciBmZWxkID0gX3N0YXREZXRhaWxTb3J0LmZlbGQ7CiAgICAgICAgdmFyIGFzYyAg PSBfc3RhdERldGFpbFNvcnQuYXNjOwogICAgICAgIHZhciBzb3J0aWVydCA9IHN0YXRzLnNsaWNl KCkuc29ydChmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIHZhciB2YSA9IHNvcnRWYWwoYSwg ZmVsZCksIHZiID0gc29ydFZhbChiLCBmZWxkKTsKICAgICAgICAgICAgaWYgKHZhIDwgdmIpIHJl dHVybiBhc2MgPyAtMSA6IDE7CiAgICAgICAgICAgIGlmICh2YSA+IHZiKSByZXR1cm4gYXNjID8g IDEgOiAtMTsKICAgICAgICAgICAgLy8gVGllYnJlYWtlciBpbW1lciBOYW1lIChsZXNlZmx1c3Mp LgogICAgICAgICAgICB2YXIgbmEgPSBfc3RhdEFuemVpZ2VOYW1lKGEpLnRvTG93ZXJDYXNlKCks IG5iID0gX3N0YXRBbnplaWdlTmFtZShiKS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICByZXR1 cm4gbmEgPCBuYiA/IC0xIDogbmEgPiBuYiA/IDEgOiAwOwogICAgICAgIH0pOwoKICAgICAgICB2 YXIgaHRtbCA9ICcnOwogICAgICAgIHNvcnRpZXJ0LmZvckVhY2goZnVuY3Rpb24ocykgewogICAg ICAgICAgICBodG1sICs9ICc8dHI+JyArCiAgICAgICAgICAgICAgICAnPHRkPjxzdHJvbmc+JyAr IGVzY2FwZUhUTUwoX3N0YXRBbnplaWdlTmFtZShzKSkgKyAnPC9zdHJvbmc+PC90ZD4nICsKICAg ICAgICAgICAgICAgICc8dGQ+JyArIGVzY2FwZUhUTUwob2VPZihzKSkgKyAnPC90ZD4nICsKICAg ICAgICAgICAgICAgICc8dGQ+JyArIGVzY2FwZUhUTUwob2VHcnVwcGVPZihzKSkgKyAnPC90ZD4n ICsKICAgICAgICAgICAgICAgICc8dGQ+JyArIGVzY2FwZUhUTUwocy5ncnVwcGUpICsgJzwvdGQ+ JyArCiAgICAgICAgICAgICAgICAnPHRkIGNsYXNzPSJ6YWhsIj4nICsgcy5nZXNhbXQgKyAnPC90 ZD4nICsKICAgICAgICAgICAgICAgICc8dGQgY2xhc3M9InphaGwiIHN0eWxlPSJjb2xvcjp2YXIo LS1mYXJiZS1mcnVlaCkiPicgKyBzLmZydWVoICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAn PHRkIGNsYXNzPSJ6YWhsIiBzdHlsZT0iY29sb3I6dmFyKC0tZmFyYmUtc3BhZXQpIj4nICsgcy5z cGFldCArICc8L3RkPicgKwogICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz0iemFobCIgc3R5bGU9 ImNvbG9yOnZhcigtLWZhcmJlLW5hY2h0KSI+JyArIHMubmFjaHQgKyAnPC90ZD4nICsKICAgICAg ICAgICAgICAgICc8dGQgY2xhc3M9InphaGwiIHN0eWxlPSJjb2xvcjp2YXIoLS1zdGF0LXNkKSI+ JyArIChzLnNvbmRlcmRpZW5zdCB8fCAwKSArICc8L3RkPicgKwogICAgICAgICAgICAgICAgJzx0 ZCBjbGFzcz0iemFobCI+JyArIChzLmRnbCB8fCAwKSArICc8L3RkPicgKwogICAgICAgICAgICAg ICAgJzx0ZCBjbGFzcz0iemFobCI+JyArIChzLndkZiB8fCAwKSArICc8L3RkPicgKwogICAgICAg ICAgICAgICAgJzx0ZCBjbGFzcz0iemFobCI+JyArIChzLmZicCB8fCAwKSArICc8L3RkPicgKwog ICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz0iemFobCI+JyArIHMud29jaGVuZW5kVGFnZSArICc8 L3RkPicgKwogICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz0iemFobCI+JyArIHMuZmVpZXJ0YWdU YWdlICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAnPHRkIGNsYXNzPSJ6YWhsIiBzdHlsZT0i Y29sb3I6dmFyKC0tZmFyYmUtZmVobGVyKSI+JyArIHMua3JhbmsgKyAnPC90ZD4nICsKICAgICAg ICAgICAgICAgICc8dGQgY2xhc3M9InphaGwiPicgKyBzLnVybGF1YiArICc8L3RkPicgKwogICAg ICAgICAgICAgICAgJzx0ZCBjbGFzcz0iemFobCI+JyArIHMubGVocmdhbmcgKyAnPC90ZD4nICsK ICAgICAgICAgICAgICAgICc8dGQgY2xhc3M9InphaGwiPicgKyAocy5hekF1c2dsZWljaCB8fCAw KSArICc8L3RkPicgKwogICAgICAgICAgICAnPC90cj4nOwogICAgICAgIH0pOwogICAgICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0cy10Ym9keScpLmlubmVySFRNTCA9IGh0bWw7Cgog ICAgICAgIC8vIFNvcnRpZXItUGZlaWxlICsgS2xpY2stSGFuZGxlciBpbSBIZWFkZXIgKGlkZW1w b3RlbnQpLgogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNzdGF0cy11ZWJlcnNp Y2h0IHRoZWFkIHRoW2RhdGEtc29ydF0nKS5mb3JFYWNoKGZ1bmN0aW9uKHRoKSB7CiAgICAgICAg ICAgIHZhciBmID0gdGguZ2V0QXR0cmlidXRlKCdkYXRhLXNvcnQnKTsKICAgICAgICAgICAgLy8g UGZlaWwgYWt0dWFsaXNpZXJlbgogICAgICAgICAgICB2YXIgYWx0ZXJQZmVpbCA9IHRoLnF1ZXJ5 U2VsZWN0b3IoJy5zdGF0cy1kZXRhaWwtcGZlaWwnKTsKICAgICAgICAgICAgaWYgKGFsdGVyUGZl aWwpIGFsdGVyUGZlaWwucmVtb3ZlKCk7CiAgICAgICAgICAgIGlmIChmID09PSBmZWxkKSB7CiAg ICAgICAgICAgICAgICB2YXIgc3AgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAg ICAgICAgICAgICAgICBzcC5jbGFzc05hbWUgPSAnc3RhdHMtZGV0YWlsLXBmZWlsJzsKICAgICAg ICAgICAgICAgIHNwLnRleHRDb250ZW50ID0gYXNjID8gJyDihpEnIDogJyDihpMnOwogICAgICAg ICAgICAgICAgdGguYXBwZW5kQ2hpbGQoc3ApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8v IEtsaWNrLUhhbmRsZXIgbnVyIGVpbm1hbCBhbmhhZW5nZW4KICAgICAgICAgICAgaWYgKHRoLmRh dGFzZXQuZmVydGlnKSByZXR1cm47CiAgICAgICAgICAgIHRoLnN0eWxlLmN1cnNvciA9ICdwb2lu dGVyJzsKICAgICAgICAgICAgdGguYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigp IHsKICAgICAgICAgICAgICAgIGlmIChfc3RhdERldGFpbFNvcnQuZmVsZCA9PT0gZikgX3N0YXRE ZXRhaWxTb3J0LmFzYyA9ICFfc3RhdERldGFpbFNvcnQuYXNjOwogICAgICAgICAgICAgICAgZWxz ZSB7IF9zdGF0RGV0YWlsU29ydC5mZWxkID0gZjsgX3N0YXREZXRhaWxTb3J0LmFzYyA9IHRydWU7 IH0KICAgICAgICAgICAgICAgIGlmIChaLnN0YXRpc3RpaykgZGV0YWlsVGFiZWxsZVJlbmRlcm4o c3RhdEZpbHRlcm4oWi5zdGF0aXN0aWspKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHRo LmRhdGFzZXQuZmVydGlnID0gJzEnOwogICAgICAgIH0pOwogICAgfQoKCmZ1bmN0aW9uIHN0YXRG aWx0ZXJTZXR6ZW4od2VydCkgeyBzdGF0RmlsdGVyID0gd2VydDsgfQoKZXhwb3J0IHsKICAgIHN0 YXRpc3Rpa0ZpbHRlckZ1ZWxsZW4sIHN0YXRpc3Rpa0xhZGVuLCBzdGF0RmlsdGVybiwgc3RhdGlz dGlrUmVuZGVybiwKICAgIHN0YXRGaWx0ZXJTZXR6ZW4sCiAgICBwcm9zYVJlbmRlcm4sIHByb3Nh QW5yZWRlLCBwcm9zYVRleHQsCiAgICBzdGF0SW5mb1plaWdlbiwga3BpS2FydGUsCiAgICBiYWxr ZW5SZW5kZXJuLAogICAgZmFpcm5lc3NSZW5kZXJuLAogICAgZGV0YWlsVGFiZWxsZVJlbmRlcm4K ICAgIC8vIHN0YXRpc3Rpa1RpbGVzQWxsZSArIEJSRUlURV9TUEFOIHdlcmRlbiBzZWl0IHYxLjQu NSBkaXJla3QgYXVzCiAgICAvLyBzdGF0aXN0aWtfZW5naW5lLmpzIGV4cG9ydGllcnQ7IGFkbWlu X3N0YXRpc3Rpay5qcyBpbXBvcnRpZXJ0IHZvbiBkb3J0Lgp9Owo= ### FILE: js/statistik_charts.js | 18511 Ly8gPT09IHN0YXRpc3Rpa19jaGFydHMuanMgPT09Ci8vIE5hdGl2ZSBTVkctRGlhZ3JhbW1lIGZ1 ZXIgZGVuIFN0YXRpc3Rpay1CdWlsZGVyIOKAlCBrZWluZSBleHRlcm5lIExpYnJhcnkuCi8vIEVp bmdhYmUgaXN0IGRhcyBkaWFncmFtbS1uZXV0cmFsZSBFcmdlYm5pcyBhdXMgc3RhdGlzdGlrX2Vu Z2luZS5hdXN3ZXJ0ZW4oKS4KLy8gRmFyYmVuIGxhdWZlbiB1ZWJlciBDU1MtVmFyaWFibGVuIChE YXJrLU1vZGUgYXV0b21hdGlzY2gpLiBKZWRlIEZ1bmt0aW9uCi8vIGxpZWZlcnQgZWluZW4gSFRN TC1TdHJpbmcgKFNWRyBiencuIGZ1ZXIgVGFiZWxsZS9LUEkgbm9ybWFsZXMgTWFya3VwKS4KLy8K Ly8gVHlwZW4gKGFuIFBsb3RseS1TdGFuZGFyZHMgYW5nZWxlaG50KTogYmFsa2VuLCBiYWxrZW5H ZXN0YXBlbHQsIGJhbGtlbkgsCi8vIGxpbmllLCBmbGFlY2hlLCBrcmVpcywgZG9udXQsIHNjYXR0 ZXIsIGhlYXRtYXAsIHRhYmVsbGUsIGtwaS4KCmltcG9ydCB7IGVzY2FwZUhUTUwsIGVzY2FwZUF0 dHIgfSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CgovLyBTZXJpZW4tRmFyYnBhbGV0dGUgKENTUy1W YXJpYWJsZW4sIGRpZSBpbSBQcm9qZWt0IGRlZmluaWVydCBzaW5kKS4KdmFyIFBBTEVUVEUgPSBb CiAgICAndmFyKC0tZmFyYmUtc3BhZXQpJywgJ3ZhcigtLWZhcmJlLWZydWVoKScsICd2YXIoLS1m YXJiZS1uYWNodCknLCAndmFyKC0tc3RhdC1zZCknLAogICAgJ3ZhcigtLXN0YXQtc2Ftc3RhZykn LCAndmFyKC0tc3RhdC1zb25udGFnKScsICd2YXIoLS1zdGF0LWZlaWVydGFnKScsICd2YXIoLS1z dGF0LXVybGF1YiknLAogICAgJ3ZhcigtLXN0YXQta3VyKScsICd2YXIoLS1zdGF0LWZvcnRiaWxk dW5nLTIpJywgJ3ZhcigtLXN0YXQtZm9ydGJpbGR1bmctMyknLCAndmFyKC0tc3RhdC1rb21wbGV0 dGUtd2UpJwpdOwpmdW5jdGlvbiBfZmFyYmUoaSkgeyByZXR1cm4gUEFMRVRURVtpICUgUEFMRVRU RS5sZW5ndGhdOyB9Cgp2YXIgRElBR1JBTU1fVFlQRU4gPSBbCiAgICB7IGtleTogJ2JhbGtlbics ICAgICAgICAgIGxhYmVsOiAnU8OkdWxlbiAoZ3J1cHBpZXJ0KScgfSwKICAgIHsga2V5OiAnYmFs a2VuR2VzdGFwZWx0JywgbGFiZWw6ICdTw6R1bGVuIChnZXN0YXBlbHQpJyB9LAogICAgeyBrZXk6 ICdiYWxrZW5IJywgICAgICAgICBsYWJlbDogJ0JhbGtlbiAoaG9yaXpvbnRhbC9SYW5raW5nKScg fSwKICAgIHsga2V5OiAnbGluaWUnLCAgICAgICAgICAgbGFiZWw6ICdMaW5pZSAoVmVybGF1Zikn IH0sCiAgICB7IGtleTogJ2ZsYWVjaGUnLCAgICAgICAgIGxhYmVsOiAnRmzDpGNoZScgfSwKICAg IHsga2V5OiAna3JlaXMnLCAgICAgICAgICAgbGFiZWw6ICdLcmVpcycgfSwKICAgIHsga2V5OiAn ZG9udXQnLCAgICAgICAgICAgbGFiZWw6ICdEb251dCcgfSwKICAgIHsga2V5OiAnc2NhdHRlcics ICAgICAgICAgbGFiZWw6ICdTdHJldWRpYWdyYW1tIChLb3JyZWxhdGlvbiknIH0sCiAgICB7IGtl eTogJ2hlYXRtYXAnLCAgICAgICAgIGxhYmVsOiAnSGVhdG1hcCAoTWF0cml4KScgfSwKICAgIHsg a2V5OiAndGFiZWxsZScsICAgICAgICAgbGFiZWw6ICdQaXZvdC1UYWJlbGxlJyB9LAogICAgeyBr ZXk6ICdrcGknLCAgICAgICAgICAgICBsYWJlbDogJ0tlbm56YWhsIChLUEkpJyB9Cl07CmV4cG9y dCBmdW5jdGlvbiBkaWFncmFtbVR5cGVuKCkgeyByZXR1cm4gRElBR1JBTU1fVFlQRU4uc2xpY2Uo KTsgfQoKLy8gSGlsZmVuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZnVuY3Rpb24gX251bSh2KSB7CiAgICBpZiAodiA9PSBu dWxsKSByZXR1cm4gJzAnOwogICAgaWYgKE1hdGgucm91bmQodikgPT09IHYpIHJldHVybiBTdHJp bmcodik7CiAgICByZXR1cm4gKE1hdGgucm91bmQodiAqIDEwKSAvIDEwKS50b1N0cmluZygpLnJl cGxhY2UoJy4nLCAnLCcpOwp9CmZ1bmN0aW9uIF9uaWNlTWF4KG1heCkgewogICAgaWYgKG1heCA8 PSAwKSByZXR1cm4gMTsKICAgIHZhciBwb3QgPSBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihNYXRo LmxvZyhtYXgpIC8gTWF0aC5MTjEwKSk7CiAgICB2YXIgbiA9IG1heCAvIHBvdDsKICAgIHZhciBz dGVwID0gbiA8PSAxID8gMSA6IG4gPD0gMiA/IDIgOiBuIDw9IDUgPyA1IDogMTA7CiAgICByZXR1 cm4gc3RlcCAqIHBvdDsKfQpmdW5jdGlvbiBfdGlja3MobWF4LCBuKSB7CiAgICB2YXIgb3V0ID0g W107CiAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBuOyBpKyspIG91dC5wdXNoKE1hdGgucm91bmQo bWF4IC8gbiAqIGkgKiAxMDApIC8gMTAwKTsKICAgIHJldHVybiBvdXQ7Cn0KZnVuY3Rpb24gX3N2 Zyh3LCBoLCBpbm5lcikgewogICAgcmV0dXJuICc8c3ZnIGNsYXNzPSJzdGF0LXN2ZyIgdmlld0Jv eD0iMCAwICcgKyB3ICsgJyAnICsgaCArICciIHdpZHRoPSIxMDAlIiAnICsKICAgICAgICAncHJl c2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaW4gbWVldCIgcm9sZT0iaW1nIiBzdHlsZT0ibWF4LXdp ZHRoOjEwMCU7aGVpZ2h0OmF1dG87ZGlzcGxheTpibG9jayI+JyArIGlubmVyICsgJzwvc3ZnPic7 Cn0KZnVuY3Rpb24gX2xlZ2VuZGUoc2VyaWVuKSB7CiAgICBpZiAoIXNlcmllbiB8fCBzZXJpZW4u bGVuZ3RoIDw9IDEpIHJldHVybiAnJzsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0ic3RhdC1sZWdl bmRlIj4nICsgc2VyaWVuLm1hcChmdW5jdGlvbihzLCBpKSB7CiAgICAgICAgcmV0dXJuICc8c3Bh biBjbGFzcz0ic3RhdC1sZWctaXRlbSI+PHNwYW4gY2xhc3M9InN0YXQtbGVnLWJveCIgc3R5bGU9 ImJhY2tncm91bmQ6JyArIF9mYXJiZShpKSArICciPjwvc3Bhbj4nICsgZXNjYXBlSFRNTChzLm5h bWUgfHwgJ+KAlCcpICsgJzwvc3Bhbj4nOwogICAgfSkuam9pbignJykgKyAnPC9kaXY+JzsKfQpm dW5jdGlvbiBfbGVlcigpIHsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0iYWRtaW4tZW1wdHkiPjxk aXYgY2xhc3M9ImFkbWluLWVtcHR5LXRleHQiPktlaW5lIERhdGVuIGbDvHIgZGllc2UgQXVzd2Fo bC48L2Rpdj48L2Rpdj4nOwp9CgovLyBEaXNwYXRjaGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpleHBvcnQgZnVuY3Rpb24gZGlh Z3JhbW1SZW5kZXJuKHR5cCwgZXJnLCBzcGVjKSB7CiAgICBpZiAoIWVyZyB8fCBlcmcuaXN0TGVl cikgcmV0dXJuIF9sZWVyKCk7CiAgICBzd2l0Y2ggKHR5cCkgewogICAgICAgIGNhc2UgJ2JhbGtl bkdlc3RhcGVsdCc6IHJldHVybiBfYmFsa2VuKGVyZywgdHJ1ZSk7CiAgICAgICAgY2FzZSAnYmFs a2VuSCc6ICAgICAgICAgcmV0dXJuIF9iYWxrZW5IKGVyZyk7CiAgICAgICAgY2FzZSAnbGluaWUn OiAgICAgICAgICAgcmV0dXJuIF9saW5pZShlcmcsIGZhbHNlKTsKICAgICAgICBjYXNlICdmbGFl Y2hlJzogICAgICAgICByZXR1cm4gX2xpbmllKGVyZywgdHJ1ZSk7CiAgICAgICAgY2FzZSAna3Jl aXMnOiAgICAgICAgICAgcmV0dXJuIF9rcmVpcyhlcmcsIGZhbHNlKTsKICAgICAgICBjYXNlICdk b251dCc6ICAgICAgICAgICByZXR1cm4gX2tyZWlzKGVyZywgdHJ1ZSk7CiAgICAgICAgY2FzZSAn c2NhdHRlcic6ICAgICAgICAgcmV0dXJuIF9zY2F0dGVyKGVyZyk7CiAgICAgICAgY2FzZSAnaGVh dG1hcCc6ICAgICAgICAgcmV0dXJuIF9oZWF0bWFwKGVyZyk7CiAgICAgICAgY2FzZSAndGFiZWxs ZSc6ICAgICAgICAgcmV0dXJuIF90YWJlbGxlKGVyZyk7CiAgICAgICAgY2FzZSAna3BpJzogICAg ICAgICAgICAgcmV0dXJuIF9rcGkoZXJnKTsKICAgICAgICBjYXNlICdiYWxrZW4nOgogICAgICAg IGRlZmF1bHQ6ICAgICAgICAgICAgICAgIHJldHVybiBfYmFsa2VuKGVyZywgZmFsc2UpOwogICAg fQp9CgovLyBWZXJ0aWthbGUgU2FldWxlbiAoZ3J1cHBpZXJ0IG9kZXIgZ2VzdGFwZWx0KSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpmdW5jdGlvbiBfYmFsa2VuKGVyZywgZ2VzdGFwZWx0KSB7 CiAgICB2YXIgVyA9IDY4MCwgSCA9IDM2MCwgbWwgPSA0OCwgbXIgPSAxNiwgbXQgPSAxNiwgbWIg PSA3MDsKICAgIHZhciBrYXQgPSBlcmcua2F0ZWdvcmllbiwgc2VyaWVuID0gZXJnLnNlcmllbjsK ICAgIGlmICgha2F0Lmxlbmd0aCkgcmV0dXJuIF9sZWVyKCk7CiAgICB2YXIgcHcgPSBXIC0gbWwg LSBtciwgcGggPSBIIC0gbXQgLSBtYjsKICAgIHZhciBtYXggPSAwOwogICAga2F0LmZvckVhY2go ZnVuY3Rpb24oXywgaSkgewogICAgICAgIGlmIChnZXN0YXBlbHQpIHsgdmFyIHMgPSAwOyBzZXJp ZW4uZm9yRWFjaChmdW5jdGlvbihzZSl7IHMgKz0gc2Uud2VydGVbaV0gfHwgMDsgfSk7IG1heCA9 IE1hdGgubWF4KG1heCwgcyk7IH0KICAgICAgICBlbHNlIHNlcmllbi5mb3JFYWNoKGZ1bmN0aW9u KHNlKXsgbWF4ID0gTWF0aC5tYXgobWF4LCBzZS53ZXJ0ZVtpXSB8fCAwKTsgfSk7CiAgICB9KTsK ICAgIG1heCA9IF9uaWNlTWF4KG1heCk7CiAgICB2YXIgZ3JpZCA9ICcnOwogICAgX3RpY2tzKG1h eCwgNCkuZm9yRWFjaChmdW5jdGlvbih0KSB7CiAgICAgICAgdmFyIHkgPSBtdCArIHBoIC0gKHQg LyBtYXgpICogcGg7CiAgICAgICAgZ3JpZCArPSAnPGxpbmUgeDE9IicgKyBtbCArICciIHkxPSIn ICsgeSArICciIHgyPSInICsgKFcgLSBtcikgKyAnIiB5Mj0iJyArIHkgKyAnIiBzdHJva2U9InZh cigtLWJvcmRlci1saWdodCkiIHN0cm9rZS13aWR0aD0iMSIvPicgKwogICAgICAgICAgICAgICAg Jzx0ZXh0IHg9IicgKyAobWwgLSA2KSArICciIHk9IicgKyAoeSArIDQpICsgJyIgdGV4dC1hbmNo b3I9ImVuZCIgY2xhc3M9InN0YXQtYXgiPicgKyBfbnVtKHQpICsgJzwvdGV4dD4nOwogICAgfSk7 CiAgICB2YXIgZ3JwQiA9IHB3IC8ga2F0Lmxlbmd0aDsKICAgIHZhciBiYWxrZW4gPSAnJzsKICAg IGthdC5mb3JFYWNoKGZ1bmN0aW9uKGssIGkpIHsKICAgICAgICB2YXIgeDAgPSBtbCArIGdycEIg KiBpOwogICAgICAgIGlmIChnZXN0YXBlbHQpIHsKICAgICAgICAgICAgdmFyIGFjYyA9IDA7CiAg ICAgICAgICAgIHNlcmllbi5mb3JFYWNoKGZ1bmN0aW9uKHNlLCBzaSkgewogICAgICAgICAgICAg ICAgdmFyIHYgPSBzZS53ZXJ0ZVtpXSB8fCAwOyBpZiAodiA8PSAwKSByZXR1cm47CiAgICAgICAg ICAgICAgICB2YXIgYmggPSAodiAvIG1heCkgKiBwaDsKICAgICAgICAgICAgICAgIHZhciBidyA9 IGdycEIgKiAwLjYyLCBieCA9IHgwICsgKGdycEIgLSBidykgLyAyOwogICAgICAgICAgICAgICAg dmFyIGJ5ID0gbXQgKyBwaCAtIGFjYyAtIGJoOwogICAgICAgICAgICAgICAgYmFsa2VuICs9ICc8 cmVjdCB4PSInICsgYnggKyAnIiB5PSInICsgYnkgKyAnIiB3aWR0aD0iJyArIGJ3ICsgJyIgaGVp Z2h0PSInICsgYmggKyAnIiBmaWxsPSInICsgX2ZhcmJlKHNpKSArICciPjx0aXRsZT4nICsgZXNj YXBlQXR0cihzZS5uYW1lICsgJzogJyArIF9udW0odikpICsgJzwvdGl0bGU+PC9yZWN0Pic7CiAg ICAgICAgICAgICAgICBhY2MgKz0gYmg7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7 CiAgICAgICAgICAgIHZhciBidzIgPSAoZ3JwQiAqIDAuNykgLyBzZXJpZW4ubGVuZ3RoOwogICAg ICAgICAgICBzZXJpZW4uZm9yRWFjaChmdW5jdGlvbihzZSwgc2kpIHsKICAgICAgICAgICAgICAg IHZhciB2ID0gc2Uud2VydGVbaV0gfHwgMDsKICAgICAgICAgICAgICAgIHZhciBiaCA9ICh2IC8g bWF4KSAqIHBoOwogICAgICAgICAgICAgICAgdmFyIGJ4ID0geDAgKyBncnBCICogMC4xNSArIGJ3 MiAqIHNpOwogICAgICAgICAgICAgICAgYmFsa2VuICs9ICc8cmVjdCB4PSInICsgYnggKyAnIiB5 PSInICsgKG10ICsgcGggLSBiaCkgKyAnIiB3aWR0aD0iJyArIChidzIgKiAwLjkpICsgJyIgaGVp Z2h0PSInICsgYmggKyAnIiBmaWxsPSInICsgX2ZhcmJlKHNpKSArICciPjx0aXRsZT4nICsgZXNj YXBlQXR0cigoc2VyaWVuLmxlbmd0aCA+IDEgPyBzZS5uYW1lICsgJyDCtyAnIDogJycpICsgay5s YWJlbCArICc6ICcgKyBfbnVtKHYpKSArICc8L3RpdGxlPjwvcmVjdD4nOwogICAgICAgICAgICB9 KTsKICAgICAgICB9CiAgICAgICAgYmFsa2VuICs9IF94TGFiZWwoeDAgKyBncnBCIC8gMiwgbXQg KyBwaCwgay5sYWJlbCwga2F0Lmxlbmd0aCk7CiAgICB9KTsKICAgIHZhciBhY2hzZSA9ICc8bGlu ZSB4MT0iJyArIG1sICsgJyIgeTE9IicgKyAobXQgKyBwaCkgKyAnIiB4Mj0iJyArIChXIC0gbXIp ICsgJyIgeTI9IicgKyAobXQgKyBwaCkgKyAnIiBzdHJva2U9InZhcigtLXRleHQtbXV0ZWQpIiBz dHJva2Utd2lkdGg9IjEiLz4nOwogICAgcmV0dXJuIF9zdmcoVywgSCwgZ3JpZCArIGJhbGtlbiAr IGFjaHNlKSArIF9sZWdlbmRlKHNlcmllbik7Cn0KCmZ1bmN0aW9uIF94TGFiZWwoY3gsIHksIGxh YmVsLCBhbnphaGwpIHsKICAgIHZhciB0ID0gZXNjYXBlSFRNTChsYWJlbCk7CiAgICB2YXIgcm90 ID0gYW56YWhsID4gNjsKICAgIGlmIChyb3QpIHsKICAgICAgICByZXR1cm4gJzx0ZXh0IHg9Iicg KyBjeCArICciIHk9IicgKyAoeSArIDE0KSArICciIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJz dGF0LWF4IiB0cmFuc2Zvcm09InJvdGF0ZSgtNDAgJyArIGN4ICsgJyAnICsgKHkgKyAxNCkgKyAn KSI+JyArIHQgKyAnPC90ZXh0Pic7CiAgICB9CiAgICByZXR1cm4gJzx0ZXh0IHg9IicgKyBjeCAr ICciIHk9IicgKyAoeSArIDE2KSArICciIHRleHQtYW5jaG9yPSJtaWRkbGUiIGNsYXNzPSJzdGF0 LWF4Ij4nICsgdCArICc8L3RleHQ+JzsKfQoKLy8gSG9yaXpvbnRhbGUgQmFsa2VuIChSYW5raW5n KSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpmdW5jdGlvbiBfYmFs a2VuSChlcmcpIHsKICAgIHZhciBrYXQgPSBlcmcua2F0ZWdvcmllbiwgc2VyaWVuID0gZXJnLnNl cmllbjsKICAgIGlmICgha2F0Lmxlbmd0aCkgcmV0dXJuIF9sZWVyKCk7CiAgICAvLyBCZWkgbWVo cmVyZW4gU2VyaWVuOiBTdW1tZSBqZSBLYXRlZ29yaWUgKFJhbmtpbmctQ2hhcmFrdGVyKS4KICAg IHZhciB3ZXJ0ZSA9IGthdC5tYXAoZnVuY3Rpb24oXywgaSkgeyB2YXIgcyA9IDA7IHNlcmllbi5m b3JFYWNoKGZ1bmN0aW9uKHNlKXsgcyArPSBzZS53ZXJ0ZVtpXSB8fCAwOyB9KTsgcmV0dXJuIHM7 IH0pOwogICAgdmFyIG1heCA9IF9uaWNlTWF4KE1hdGgubWF4LmFwcGx5KG51bGwsIHdlcnRlLmNv bmNhdChbMF0pKSk7CiAgICB2YXIgVyA9IDY4MCwgbWwgPSAxNTAsIG1yID0gNDgsIG10ID0gOCwg cm93SCA9IDI2LCBtYiA9IDg7CiAgICB2YXIgSCA9IG10ICsgbWIgKyBrYXQubGVuZ3RoICogcm93 SDsKICAgIHZhciBwdyA9IFcgLSBtbCAtIG1yOwogICAgdmFyIHJvd3MgPSAnJzsKICAgIGthdC5m b3JFYWNoKGZ1bmN0aW9uKGssIGkpIHsKICAgICAgICB2YXIgeSA9IG10ICsgaSAqIHJvd0g7CiAg ICAgICAgdmFyIHYgPSB3ZXJ0ZVtpXTsKICAgICAgICB2YXIgYncgPSBtYXggPyAodiAvIG1heCkg KiBwdyA6IDA7CiAgICAgICAgcm93cyArPSAnPHRleHQgeD0iJyArIChtbCAtIDgpICsgJyIgeT0i JyArICh5ICsgcm93SCAvIDIgKyA0KSArICciIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJzdGF0 LWF4IHN0YXQtYXgtbmFtZSI+JyArIGVzY2FwZUhUTUwoay5sYWJlbCkgKyAnPC90ZXh0Pic7CiAg ICAgICAgcm93cyArPSAnPHJlY3QgeD0iJyArIG1sICsgJyIgeT0iJyArICh5ICsgMykgKyAnIiB3 aWR0aD0iJyArIGJ3ICsgJyIgaGVpZ2h0PSInICsgKHJvd0ggLSA4KSArICciIHJ4PSIyIiBmaWxs PSInICsgX2ZhcmJlKDApICsgJyI+PHRpdGxlPicgKyBlc2NhcGVBdHRyKGsubGFiZWwgKyAnOiAn ICsgX251bSh2KSkgKyAnPC90aXRsZT48L3JlY3Q+JzsKICAgICAgICByb3dzICs9ICc8dGV4dCB4 PSInICsgKG1sICsgYncgKyA1KSArICciIHk9IicgKyAoeSArIHJvd0ggLyAyICsgNCkgKyAnIiBj bGFzcz0ic3RhdC1heCI+JyArIF9udW0odikgKyAnPC90ZXh0Pic7CiAgICB9KTsKICAgIHJldHVy biBfc3ZnKFcsIEgsIHJvd3MpOwp9CgovLyBMaW5pZSAvIEZsYWVjaGUgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpmdW5jdGlvbiBfbGluaWUo ZXJnLCBmbGFlY2hlKSB7CiAgICB2YXIgVyA9IDY4MCwgSCA9IDM2MCwgbWwgPSA0OCwgbXIgPSAx NiwgbXQgPSAxNiwgbWIgPSA3MDsKICAgIHZhciBrYXQgPSBlcmcua2F0ZWdvcmllbiwgc2VyaWVu ID0gZXJnLnNlcmllbjsKICAgIGlmIChrYXQubGVuZ3RoIDwgMikgcmV0dXJuIF9iYWxrZW4oZXJn LCBmYWxzZSk7CiAgICB2YXIgcHcgPSBXIC0gbWwgLSBtciwgcGggPSBIIC0gbXQgLSBtYjsKICAg IHZhciBtYXggPSAwOwogICAgc2VyaWVuLmZvckVhY2goZnVuY3Rpb24oc2UpeyBzZS53ZXJ0ZS5m b3JFYWNoKGZ1bmN0aW9uKHYpeyBtYXggPSBNYXRoLm1heChtYXgsIHYgfHwgMCk7IH0pOyB9KTsK ICAgIG1heCA9IF9uaWNlTWF4KG1heCk7CiAgICB2YXIgZ3JpZCA9ICcnOwogICAgX3RpY2tzKG1h eCwgNCkuZm9yRWFjaChmdW5jdGlvbih0KSB7CiAgICAgICAgdmFyIHkgPSBtdCArIHBoIC0gKHQg LyBtYXgpICogcGg7CiAgICAgICAgZ3JpZCArPSAnPGxpbmUgeDE9IicgKyBtbCArICciIHkxPSIn ICsgeSArICciIHgyPSInICsgKFcgLSBtcikgKyAnIiB5Mj0iJyArIHkgKyAnIiBzdHJva2U9InZh cigtLWJvcmRlci1saWdodCkiLz4nICsKICAgICAgICAgICAgICAgICc8dGV4dCB4PSInICsgKG1s IC0gNikgKyAnIiB5PSInICsgKHkgKyA0KSArICciIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJz dGF0LWF4Ij4nICsgX251bSh0KSArICc8L3RleHQ+JzsKICAgIH0pOwogICAgdmFyIHN0ZXAgPSBr YXQubGVuZ3RoID4gMSA/IHB3IC8gKGthdC5sZW5ndGggLSAxKSA6IHB3OwogICAgdmFyIFggPSBm dW5jdGlvbihpKXsgcmV0dXJuIG1sICsgc3RlcCAqIGk7IH07CiAgICB2YXIgWSA9IGZ1bmN0aW9u KHYpeyByZXR1cm4gbXQgKyBwaCAtICh2IC8gbWF4KSAqIHBoOyB9OwogICAgdmFyIHBmYWRlID0g Jyc7CiAgICBzZXJpZW4uZm9yRWFjaChmdW5jdGlvbihzZSwgc2kpIHsKICAgICAgICB2YXIgcHRz ID0gc2Uud2VydGUubWFwKGZ1bmN0aW9uKHYsIGkpeyByZXR1cm4gWChpKSArICcsJyArIFkodiB8 fCAwKTsgfSk7CiAgICAgICAgaWYgKGZsYWVjaGUpIHsKICAgICAgICAgICAgcGZhZGUgKz0gJzxw b2x5Z29uIHBvaW50cz0iJyArIChYKDApICsgJywnICsgKG10ICsgcGgpICsgJyAnKSArIHB0cy5q b2luKCcgJykgKyAnICcgKyAoWChrYXQubGVuZ3RoIC0gMSkgKyAnLCcgKyAobXQgKyBwaCkpICsg JyIgZmlsbD0iJyArIF9mYXJiZShzaSkgKyAnIiBvcGFjaXR5PSIwLjE4Ii8+JzsKICAgICAgICB9 CiAgICAgICAgcGZhZGUgKz0gJzxwb2x5bGluZSBwb2ludHM9IicgKyBwdHMuam9pbignICcpICsg JyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSInICsgX2ZhcmJlKHNpKSArICciIHN0cm9rZS13aWR0aD0i Mi41Ii8+JzsKICAgICAgICBzZS53ZXJ0ZS5mb3JFYWNoKGZ1bmN0aW9uKHYsIGkpIHsKICAgICAg ICAgICAgcGZhZGUgKz0gJzxjaXJjbGUgY3g9IicgKyBYKGkpICsgJyIgY3k9IicgKyBZKHYgfHwg MCkgKyAnIiByPSIzIiBmaWxsPSInICsgX2ZhcmJlKHNpKSArICciPjx0aXRsZT4nICsgZXNjYXBl QXR0cigoc2VyaWVuLmxlbmd0aCA+IDEgPyBzZS5uYW1lICsgJyDCtyAnIDogJycpICsga2F0W2ld LmxhYmVsICsgJzogJyArIF9udW0odikpICsgJzwvdGl0bGU+PC9jaXJjbGU+JzsKICAgICAgICB9 KTsKICAgIH0pOwogICAgdmFyIGxhYmVscyA9ICcnOwogICAgdmFyIGplZGVyID0gTWF0aC5jZWls KGthdC5sZW5ndGggLyAxMik7CiAgICBrYXQuZm9yRWFjaChmdW5jdGlvbihrLCBpKSB7IGlmIChp ICUgamVkZXIgPT09IDApIGxhYmVscyArPSBfeExhYmVsKFgoaSksIG10ICsgcGgsIGsubGFiZWws IGthdC5sZW5ndGgpOyB9KTsKICAgIHZhciBhY2hzZSA9ICc8bGluZSB4MT0iJyArIG1sICsgJyIg eTE9IicgKyAobXQgKyBwaCkgKyAnIiB4Mj0iJyArIChXIC0gbXIpICsgJyIgeTI9IicgKyAobXQg KyBwaCkgKyAnIiBzdHJva2U9InZhcigtLXRleHQtbXV0ZWQpIi8+JzsKICAgIHJldHVybiBfc3Zn KFcsIEgsIGdyaWQgKyBwZmFkZSArIGxhYmVscyArIGFjaHNlKSArIF9sZWdlbmRlKHNlcmllbik7 Cn0KCi8vIEtyZWlzIC8gRG9udXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KCmZ1bmN0aW9uIF9rcmVpcyhlcmcsIGRvbnV0KSB7CiAgICB2 YXIga2F0ID0gZXJnLmthdGVnb3JpZW47CiAgICBpZiAoIWthdC5sZW5ndGgpIHJldHVybiBfbGVl cigpOwogICAgLy8gRXJzdGUgU2VyaWUgdmVyd2VuZGVuIChLcmVpcyBpc3QgZWluZGltZW5zaW9u YWwpLgogICAgdmFyIHdlcnRlID0ga2F0Lm1hcChmdW5jdGlvbihfLCBpKSB7IHZhciBzID0gMDsg ZXJnLnNlcmllbi5mb3JFYWNoKGZ1bmN0aW9uKHNlKXsgcyArPSBzZS53ZXJ0ZVtpXSB8fCAwOyB9 KTsgcmV0dXJuIHM7IH0pOwogICAgdmFyIHN1bW1lID0gd2VydGUucmVkdWNlKGZ1bmN0aW9uKGEs IGIpeyByZXR1cm4gYSArIGI7IH0sIDApOwogICAgaWYgKHN1bW1lIDw9IDApIHJldHVybiBfbGVl cigpOwogICAgdmFyIFcgPSA2ODAsIEggPSAzNDAsIGN4ID0gMTYwLCBjeSA9IDE3MCwgciA9IDEz MCwgcmkgPSBkb251dCA/IDY0IDogMDsKICAgIHZhciB3aW5rZWwgPSAtTWF0aC5QSSAvIDIsIHNl ZyA9ICcnOwogICAga2F0LmZvckVhY2goZnVuY3Rpb24oaywgaSkgewogICAgICAgIHZhciBhbnRl aWwgPSB3ZXJ0ZVtpXSAvIHN1bW1lOwogICAgICAgIGlmIChhbnRlaWwgPD0gMCkgcmV0dXJuOwog ICAgICAgIHZhciB3MiA9IHdpbmtlbCArIGFudGVpbCAqIDIgKiBNYXRoLlBJOwogICAgICAgIHNl ZyArPSBfa3JlaXNTZWcoY3gsIGN5LCByLCByaSwgd2lua2VsLCB3MiwgX2ZhcmJlKGkpLCBrLmxh YmVsICsgJzogJyArIF9udW0od2VydGVbaV0pICsgJyAoJyArIF9udW0oTWF0aC5yb3VuZChhbnRl aWwgKiAxMDAwKSAvIDEwKSArICclKScpOwogICAgICAgIHdpbmtlbCA9IHcyOwogICAgfSk7CiAg ICAvLyBMZWdlbmRlIHJlY2h0cyAobWl0IFdlcnRlbi9Qcm96ZW50KS4KICAgIHZhciBsZyA9ICcn OwogICAga2F0LmZvckVhY2goZnVuY3Rpb24oaywgaSkgewogICAgICAgIHZhciB5ID0gNDAgKyBp ICogMjI7CiAgICAgICAgaWYgKHkgPiBIIC0gMTIpIHJldHVybjsKICAgICAgICB2YXIgcHJveiA9 IF9udW0oTWF0aC5yb3VuZCh3ZXJ0ZVtpXSAvIHN1bW1lICogMTAwMCkgLyAxMCk7CiAgICAgICAg bGcgKz0gJzxyZWN0IHg9IjMzMCIgeT0iJyArICh5IC0gMTApICsgJyIgd2lkdGg9IjEyIiBoZWln aHQ9IjEyIiByeD0iMiIgZmlsbD0iJyArIF9mYXJiZShpKSArICciLz4nICsKICAgICAgICAgICAg ICAnPHRleHQgeD0iMzQ4IiB5PSInICsgeSArICciIGNsYXNzPSJzdGF0LWF4IHN0YXQtYXgtbGVn Ij4nICsgZXNjYXBlSFRNTChrLmxhYmVsKSArICcg4oCUICcgKyBfbnVtKHdlcnRlW2ldKSArICcg KCcgKyBwcm96ICsgJyUpPC90ZXh0Pic7CiAgICB9KTsKICAgIHZhciBtaXR0ZSA9IGRvbnV0ID8g Jzx0ZXh0IHg9IicgKyBjeCArICciIHk9IicgKyAoY3kgKyA1KSArICciIHRleHQtYW5jaG9yPSJt aWRkbGUiIGNsYXNzPSJzdGF0LWRvbnV0LW1pdHRlIj4nICsgX251bShzdW1tZSkgKyAnPC90ZXh0 PicgOiAnJzsKICAgIHJldHVybiBfc3ZnKFcsIEgsIHNlZyArIG1pdHRlICsgbGcpOwp9CgpmdW5j dGlvbiBfa3JlaXNTZWcoY3gsIGN5LCByLCByaSwgYTEsIGEyLCBmYXJiZSwgdGl0ZWwpIHsKICAg IHZhciBncm/DnyA9IChhMiAtIGExKSA+IE1hdGguUEkgPyAxIDogMDsKICAgIHZhciB4MSA9IGN4 ICsgciAqIE1hdGguY29zKGExKSwgeTEgPSBjeSArIHIgKiBNYXRoLnNpbihhMSk7CiAgICB2YXIg eDIgPSBjeCArIHIgKiBNYXRoLmNvcyhhMiksIHkyID0gY3kgKyByICogTWF0aC5zaW4oYTIpOwog ICAgaWYgKHJpID4gMCkgewogICAgICAgIHZhciB4aTEgPSBjeCArIHJpICogTWF0aC5jb3MoYTEp LCB5aTEgPSBjeSArIHJpICogTWF0aC5zaW4oYTEpOwogICAgICAgIHZhciB4aTIgPSBjeCArIHJp ICogTWF0aC5jb3MoYTIpLCB5aTIgPSBjeSArIHJpICogTWF0aC5zaW4oYTIpOwogICAgICAgIHJl dHVybiAnPHBhdGggZD0iTScgKyB4MSArICcgJyArIHkxICsgJyBBJyArIHIgKyAnICcgKyByICsg JyAwICcgKyBncm/DnyArICcgMSAnICsgeDIgKyAnICcgKyB5MiArCiAgICAgICAgICAgICAgICcg TCcgKyB4aTIgKyAnICcgKyB5aTIgKyAnIEEnICsgcmkgKyAnICcgKyByaSArICcgMCAnICsgZ3Jv w58gKyAnIDAgJyArIHhpMSArICcgJyArIHlpMSArICcgWiIgZmlsbD0iJyArIGZhcmJlICsgJyI+ PHRpdGxlPicgKyBlc2NhcGVBdHRyKHRpdGVsKSArICc8L3RpdGxlPjwvcGF0aD4nOwogICAgfQog ICAgcmV0dXJuICc8cGF0aCBkPSJNJyArIGN4ICsgJyAnICsgY3kgKyAnIEwnICsgeDEgKyAnICcg KyB5MSArICcgQScgKyByICsgJyAnICsgciArICcgMCAnICsgZ3Jvw58gKyAnIDEgJyArIHgyICsg JyAnICsgeTIgKyAnIFoiIGZpbGw9IicgKyBmYXJiZSArICciPjx0aXRsZT4nICsgZXNjYXBlQXR0 cih0aXRlbCkgKyAnPC90aXRsZT48L3BhdGg+JzsKfQoKLy8gU2NhdHRlciAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZnVuY3Rp b24gX3NjYXR0ZXIoZXJnKSB7CiAgICB2YXIgcCA9IGVyZy5wdW5rdGUgfHwgW107CiAgICBpZiAo IXAubGVuZ3RoKSByZXR1cm4gX2xlZXIoKTsKICAgIHZhciBXID0gNjgwLCBIID0gMzgwLCBtbCA9 IDUwLCBtciA9IDE2LCBtdCA9IDE2LCBtYiA9IDUwOwogICAgdmFyIHB3ID0gVyAtIG1sIC0gbXIs IHBoID0gSCAtIG10IC0gbWI7CiAgICB2YXIgbWF4WCA9IF9uaWNlTWF4KE1hdGgubWF4LmFwcGx5 KG51bGwsIHAubWFwKGZ1bmN0aW9uKGQpeyByZXR1cm4gZC54OyB9KS5jb25jYXQoWzBdKSkpOwog ICAgdmFyIG1heFkgPSBfbmljZU1heChNYXRoLm1heC5hcHBseShudWxsLCBwLm1hcChmdW5jdGlv bihkKXsgcmV0dXJuIGQueTsgfSkuY29uY2F0KFswXSkpKTsKICAgIHZhciBYID0gZnVuY3Rpb24o dil7IHJldHVybiBtbCArICh2IC8gbWF4WCkgKiBwdzsgfTsKICAgIHZhciBZID0gZnVuY3Rpb24o dil7IHJldHVybiBtdCArIHBoIC0gKHYgLyBtYXhZKSAqIHBoOyB9OwogICAgdmFyIGdyaWQgPSAn JzsKICAgIF90aWNrcyhtYXhZLCA0KS5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsKICAgICAgICB2YXIg eSA9IFkodCk7CiAgICAgICAgZ3JpZCArPSAnPGxpbmUgeDE9IicgKyBtbCArICciIHkxPSInICsg eSArICciIHgyPSInICsgKFcgLSBtcikgKyAnIiB5Mj0iJyArIHkgKyAnIiBzdHJva2U9InZhcigt LWJvcmRlci1saWdodCkiLz4nICsKICAgICAgICAgICAgICAgICc8dGV4dCB4PSInICsgKG1sIC0g NikgKyAnIiB5PSInICsgKHkgKyA0KSArICciIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJzdGF0 LWF4Ij4nICsgX251bSh0KSArICc8L3RleHQ+JzsKICAgIH0pOwogICAgX3RpY2tzKG1heFgsIDQp LmZvckVhY2goZnVuY3Rpb24odCkgewogICAgICAgIHZhciB4ID0gWCh0KTsKICAgICAgICBncmlk ICs9ICc8dGV4dCB4PSInICsgeCArICciIHk9IicgKyAobXQgKyBwaCArIDE2KSArICciIHRleHQt YW5jaG9yPSJtaWRkbGUiIGNsYXNzPSJzdGF0LWF4Ij4nICsgX251bSh0KSArICc8L3RleHQ+JzsK ICAgIH0pOwogICAgdmFyIHB1bmt0ZSA9IHAubWFwKGZ1bmN0aW9uKGQpIHsKICAgICAgICByZXR1 cm4gJzxjaXJjbGUgY3g9IicgKyBYKGQueCkgKyAnIiBjeT0iJyArIFkoZC55KSArICciIHI9IjUi IGZpbGw9IicgKyBfZmFyYmUoMCkgKyAnIiBvcGFjaXR5PSIwLjciPjx0aXRsZT4nICsgZXNjYXBl QXR0cihkLmxhYmVsICsgJzogJyArIGVyZy5hY2hzZVggKyAnPScgKyBfbnVtKGQueCkgKyAnLCAn ICsgZXJnLmFjaHNlWSArICc9JyArIF9udW0oZC55KSkgKyAnPC90aXRsZT48L2NpcmNsZT4nOwog ICAgfSkuam9pbignJyk7CiAgICB2YXIgYWNoc2VuID0gJzxsaW5lIHgxPSInICsgbWwgKyAnIiB5 MT0iJyArIChtdCArIHBoKSArICciIHgyPSInICsgKFcgLSBtcikgKyAnIiB5Mj0iJyArIChtdCAr IHBoKSArICciIHN0cm9rZT0idmFyKC0tdGV4dC1tdXRlZCkiLz4nICsKICAgICAgICAgICAgICAg ICAnPGxpbmUgeDE9IicgKyBtbCArICciIHkxPSInICsgbXQgKyAnIiB4Mj0iJyArIG1sICsgJyIg eTI9IicgKyAobXQgKyBwaCkgKyAnIiBzdHJva2U9InZhcigtLXRleHQtbXV0ZWQpIi8+JyArCiAg ICAgICAgICAgICAgICAgJzx0ZXh0IHg9IicgKyAobWwgKyBwdyAvIDIpICsgJyIgeT0iJyArIChI IC0gNikgKyAnIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBjbGFzcz0ic3RhdC1heC10aXRlbCI+JyAr IGVzY2FwZUhUTUwoZXJnLmFjaHNlWCB8fCAnJykgKyAnPC90ZXh0PicgKwogICAgICAgICAgICAg ICAgICc8dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNCAnICsgKG10ICsgcGggLyAyKSArICcp IHJvdGF0ZSgtOTApIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBjbGFzcz0ic3RhdC1heC10aXRlbCI+ JyArIGVzY2FwZUhUTUwoZXJnLmFjaHNlWSB8fCAnJykgKyAnPC90ZXh0Pic7CiAgICByZXR1cm4g X3N2ZyhXLCBILCBncmlkICsgYWNoc2VuICsgcHVua3RlKTsKfQoKLy8gSGVhdG1hcCAoRGltIFgg w5cgU2VyaWUtRGltKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoK ZnVuY3Rpb24gX2hlYXRtYXAoZXJnKSB7CiAgICB2YXIga2F0ID0gZXJnLmthdGVnb3JpZW4sIHNl cmllbiA9IGVyZy5zZXJpZW47CiAgICBpZiAoIWthdC5sZW5ndGggfHwgIXNlcmllbi5sZW5ndGgp IHJldHVybiBfbGVlcigpOwogICAgdmFyIG1heCA9IDA7CiAgICBzZXJpZW4uZm9yRWFjaChmdW5j dGlvbihzZSl7IHNlLndlcnRlLmZvckVhY2goZnVuY3Rpb24odil7IG1heCA9IE1hdGgubWF4KG1h eCwgdiB8fCAwKTsgfSk7IH0pOwogICAgaWYgKG1heCA8PSAwKSByZXR1cm4gX2xlZXIoKTsKICAg IHZhciBtbCA9IDEyMCwgbXQgPSA5MCwgemVsbCA9IDM4LCBXID0gbWwgKyBrYXQubGVuZ3RoICog emVsbCArIDE2LCBIID0gbXQgKyBzZXJpZW4ubGVuZ3RoICogemVsbCArIDg7CiAgICB2YXIgaW5u ZXIgPSAnJzsKICAgIC8vIFNwYWx0ZW4tS29wZiAoS2F0ZWdvcmllbikg4oCUIHNjaHJhZWcuCiAg ICBrYXQuZm9yRWFjaChmdW5jdGlvbihrLCBpKSB7CiAgICAgICAgdmFyIHggPSBtbCArIGkgKiB6 ZWxsICsgemVsbCAvIDI7CiAgICAgICAgaW5uZXIgKz0gJzx0ZXh0IHg9IicgKyB4ICsgJyIgeT0i JyArIChtdCAtIDgpICsgJyIgdGV4dC1hbmNob3I9ImVuZCIgY2xhc3M9InN0YXQtYXgiIHRyYW5z Zm9ybT0icm90YXRlKC00NSAnICsgeCArICcgJyArIChtdCAtIDgpICsgJykiPicgKyBlc2NhcGVI VE1MKGsubGFiZWwpICsgJzwvdGV4dD4nOwogICAgfSk7CiAgICBzZXJpZW4uZm9yRWFjaChmdW5j dGlvbihzZSwgcikgewogICAgICAgIHZhciB5ID0gbXQgKyByICogemVsbDsKICAgICAgICBpbm5l ciArPSAnPHRleHQgeD0iJyArIChtbCAtIDgpICsgJyIgeT0iJyArICh5ICsgemVsbCAvIDIgKyA0 KSArICciIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJzdGF0LWF4IHN0YXQtYXgtbmFtZSI+JyAr IGVzY2FwZUhUTUwoc2UubmFtZSB8fCAn4oCUJykgKyAnPC90ZXh0Pic7CiAgICAgICAgc2Uud2Vy dGUuZm9yRWFjaChmdW5jdGlvbih2LCBjKSB7CiAgICAgICAgICAgIHZhciB4ID0gbWwgKyBjICog emVsbDsKICAgICAgICAgICAgdmFyIHQgPSBtYXggPyAodiB8fCAwKSAvIG1heCA6IDA7CiAgICAg ICAgICAgIGlubmVyICs9ICc8cmVjdCB4PSInICsgeCArICciIHk9IicgKyB5ICsgJyIgd2lkdGg9 IicgKyAoemVsbCAtIDMpICsgJyIgaGVpZ2h0PSInICsgKHplbGwgLSAzKSArICciIHJ4PSIzIiBm aWxsPSJ2YXIoLS1iZy1wcmltYXJ5KSIgZmlsbC1vcGFjaXR5PSInICsgKDAuMTIgKyB0ICogMC44 NSkudG9GaXhlZCgzKSArICciPjx0aXRsZT4nICsgZXNjYXBlQXR0cigoc2UubmFtZSA/IHNlLm5h bWUgKyAnIMK3ICcgOiAnJykgKyBrYXRbY10ubGFiZWwgKyAnOiAnICsgX251bSh2KSkgKyAnPC90 aXRsZT48L3JlY3Q+JzsKICAgICAgICAgICAgaWYgKHYpIGlubmVyICs9ICc8dGV4dCB4PSInICsg KHggKyAoemVsbCAtIDMpIC8gMikgKyAnIiB5PSInICsgKHkgKyB6ZWxsIC8gMiArIDMpICsgJyIg dGV4dC1hbmNob3I9Im1pZGRsZSIgY2xhc3M9InN0YXQtaGVhdC13ZXJ0IiBmaWxsPSInICsgKHQg PiAwLjU1ID8gJyNmZmYnIDogJ3ZhcigtLXRleHQtaGVhZGluZyknKSArICciPicgKyBfbnVtKHYp ICsgJzwvdGV4dD4nOwogICAgICAgIH0pOwogICAgfSk7CiAgICByZXR1cm4gX3N2ZyhXLCBILCBp bm5lcik7Cn0KCi8vIFBpdm90LVRhYmVsbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmZ1bmN0aW9uIF90YWJlbGxlKGVyZykgewogICAg dmFyIGthdCA9IGVyZy5rYXRlZ29yaWVuLCBzZXJpZW4gPSBlcmcuc2VyaWVuOwogICAgaWYgKCFr YXQubGVuZ3RoKSByZXR1cm4gX2xlZXIoKTsKICAgIHZhciBtZWhyID0gZXJnLm1laHJzZXJpZzsK ICAgIHZhciBrb3BmID0gJzx0cj48dGg+JyArIGVzY2FwZUhUTUwoZXJnLmRpbVhMYWJlbCB8fCAn JykgKyAnPC90aD4nICsKICAgICAgICBzZXJpZW4ubWFwKGZ1bmN0aW9uKHMpeyByZXR1cm4gJzx0 aCBjbGFzcz0iemFobCI+JyArIGVzY2FwZUhUTUwobWVociA/IChzLm5hbWUgfHwgJ+KAlCcpIDog KGVyZy5rZW5uemFobExhYmVsIHx8ICdXZXJ0JykpICsgJzwvdGg+JzsgfSkuam9pbignJykgKwog ICAgICAgIChtZWhyID8gJzx0aCBjbGFzcz0iemFobCI+zqM8L3RoPicgOiAnJykgKyAnPC90cj4n OwogICAgdmFyIHplaWxlbiA9IGthdC5tYXAoZnVuY3Rpb24oaywgaSkgewogICAgICAgIHZhciBz dW0gPSAwOwogICAgICAgIHZhciB0ZHMgPSBzZXJpZW4ubWFwKGZ1bmN0aW9uKHMpeyB2YXIgdiA9 IHMud2VydGVbaV0gfHwgMDsgc3VtICs9IHY7IHJldHVybiAnPHRkIGNsYXNzPSJ6YWhsIj4nICsg X251bSh2KSArICc8L3RkPic7IH0pLmpvaW4oJycpOwogICAgICAgIHJldHVybiAnPHRyPjx0ZD4n ICsgZXNjYXBlSFRNTChrLmxhYmVsKSArICc8L3RkPicgKyB0ZHMgKyAobWVociA/ICc8dGQgY2xh c3M9InphaGwiPjxiPicgKyBfbnVtKHN1bSkgKyAnPC9iPjwvdGQ+JyA6ICcnKSArICc8L3RyPic7 CiAgICB9KS5qb2luKCcnKTsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0idGFiZWxsZS1zY3JvbGwi Pjx0YWJsZSBjbGFzcz0iYWRtaW4tdGFiZWxsZSBzdGF0LXBpdm90Ij48dGhlYWQ+JyArIGtvcGYg KyAnPC90aGVhZD48dGJvZHk+JyArIHplaWxlbiArICc8L3Rib2R5PjwvdGFibGU+PC9kaXY+JzsK fQoKLy8gS1BJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQoKZnVuY3Rpb24gX2twaShlcmcpIHsKICAgIHZhciBrYXQgPSBl cmcua2F0ZWdvcmllbiwgc2VyaWVuID0gZXJnLnNlcmllbjsKICAgIHZhciBnZXNhbXQgPSAwOwog ICAgc2VyaWVuLmZvckVhY2goZnVuY3Rpb24ocyl7IHMud2VydGUuZm9yRWFjaChmdW5jdGlvbih2 KXsgZ2VzYW10ICs9IHYgfHwgMDsgfSk7IH0pOwogICAgdmFyIGthcnRlbiA9ICc8ZGl2IGNsYXNz PSJzdGF0LWtwaS1ncm9zcyI+PGRpdiBjbGFzcz0ic3RhdC1rcGktZ3Jvc3Mtd2VydCI+JyArIF9u dW0oZ2VzYW10KSArICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0ic3RhdC1rcGktZ3Jv c3MtbGFiZWwiPicgKyBlc2NhcGVIVE1MKGVyZy5rZW5uemFobExhYmVsIHx8ICdHZXNhbXQnKSAr ICc8L2Rpdj48L2Rpdj4nOwogICAgLy8gQmlzIHp1IDYgVG9wLUthdGVnb3JpZW4gYWxzIGtsZWlu ZSBLUElzLgogICAgdmFyIHdlcnRlID0ga2F0Lm1hcChmdW5jdGlvbihfLCBpKXsgdmFyIHMgPSAw OyBzZXJpZW4uZm9yRWFjaChmdW5jdGlvbihzZSl7IHMgKz0gc2Uud2VydGVbaV0gfHwgMDsgfSk7 IHJldHVybiB7IGxhYmVsOiBrYXRbaV0ubGFiZWwsIHY6IHMgfTsgfSk7CiAgICB3ZXJ0ZS5zb3J0 KGZ1bmN0aW9uKGEsIGIpeyByZXR1cm4gYi52IC0gYS52OyB9KTsKICAgIHZhciB0b3AgPSB3ZXJ0 ZS5zbGljZSgwLCA2KS5tYXAoZnVuY3Rpb24odykgewogICAgICAgIHJldHVybiAnPGRpdiBjbGFz cz0ic3RhdC1rcGkiPjxkaXYgY2xhc3M9InN0YXRzLWtwaS13ZXJ0Ij4nICsgX251bSh3LnYpICsg JzwvZGl2PjxkaXYgY2xhc3M9InN0YXRzLWtwaS1sYWJlbCI+JyArIGVzY2FwZUhUTUwody5sYWJl bCkgKyAnPC9kaXY+PC9kaXY+JzsKICAgIH0pLmpvaW4oJycpOwogICAgcmV0dXJuICc8ZGl2IGNs YXNzPSJzdGF0LWtwaS13cmFwIj4nICsga2FydGVuICsgJzxkaXYgY2xhc3M9InN0YXRzLWtwaXMg c3RhdC1rcGktbWluaSI+JyArIHRvcCArICc8L2Rpdj48L2Rpdj4nOwp9Cg== ### FILE: js/statistik_engine.js | 21368 Ly8gPT09IHN0YXRpc3Rpa19lbmdpbmUuanMgPT09Ci8vIE1laHJkaW1lbnNpb25hbGUgQW5hbHlz ZS1FbmdpbmUgZnVlciBkZW4gU3RhdGlzdGlrLUJ1aWxkZXIgKFBpdm90LWFydGlnKS4KLy8KLy8g SWRlZTogYXVzIFoucGxhbnVuZy5laW50cmFlZ2UgKyBaLnBlcnNvbmVuICsgWi5hZG1pbiB3aXJk IGNsaWVudHNlaXRpZyBlaW5lCi8vIEZBS1RFTi1UQUJFTExFIGdlYmF1dCDigJQgZWluZSBaZWls ZSBwcm8gKFBlcnNvbiDDlyBUYWcgw5cgQ29kZSkuIEF1ZiBkaWVzZXIKLy8gRmFrdGVudGFiZWxs ZSBsYWV1ZnQgZGFubiBlaW4ga2xhc3Npc2NoZXMgR3JvdXAtYnkvQWdncmVnYXQ6Ci8vCi8vICAg RmlsdGVyIC0+IERpbWVuc2lvbihlbikgLT4gS2VubnphaGwvQWdncmVnYXRpb24gLT4gRXJnZWJu aXMtU3RydWt0dXIKLy8KLy8gRGFzIEVyZ2VibmlzIGlzdCBkaWFncmFtbS1uZXV0cmFsOyBzdGF0 aXN0aWtfY2hhcnRzLmpzIHJlbmRlcnQgZXMgYWxzIFNWRy4KLy8gS2VpbmUgU2VydmVyLUFlbmRl cnVuZyBub2V0aWcg4oCUIGFsbGVzIGxhZXVmdCBhdWYgYmVyZWl0cyBnZWxhZGVuZW4gRGF0ZW4u CgppbXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpzJzsKaW1wb3J0IHsgcGlkS2V5LCBk YXR1bVN0ciwgaXN0V29jaGVuZW5kZSB9IGZyb20gJy4vY29yZV91dGlsLmpzJzsKaW1wb3J0IHsg ZmVpZXJ0YWdJbmZvIH0gZnJvbSAnLi9mZWllcnRhZ2VfZGUuanMnOwoKLy8gPT09PT0gS2FjaGVs LUthdGFsb2cgKFN0YXRpc3Rpay1MYXlvdXQtUmFzdGVyKSA9PT09PQovLyBMaWVndCBiZXd1c3N0 IGhpZXIgaW4gZGVyIFVOR0VHQVRFdGVuIEVuZ2luZSAobmljaHQgaW4gc3RhdGlzdGlrLmpzKTog ZGFzCi8vIEFkbWluLUxheW91dC1Nb2R1bCAoYWRtaW5fc3RhdGlzdGlrLmpzKSBicmF1Y2h0IHN0 YXRpc3Rpa1RpbGVzQWxsZSArIEJSRUlURV9TUEFOLAovLyBkYXJmIGFiZXIgc3RhdGlzdGlrLmpz IE5JQ0hUIHN0YXRpc2NoIGltcG9ydGllcmVuIOKAlCBzdGF0aXN0aWsuanMgaXN0IHNlcnZlci0K Ly8gc2VpdGlnIEdBVEUtNDA0LWdlc2NodWV0enQgKGtlaW4gU3RhdGlzdGlrLVJlY2h0KSwgdW5k IGVpbiBzdGF0aXNjaGVyIEltcG9ydAovLyB3dWVyZGUgZGllIEVTLU1vZHVsLUtldHRlIGZ1ZXIg cmVndWxhZXJlIFVzZXIga29tcGxldHQgYnJlY2hlbiAoQXBwLUJvb3RzdHJhcC0KLy8gRmVobGVy KS4gc3RhdGlzdGlrLmpzIGltcG9ydGllcnQgZGllc2UgU3ltYm9sZSBqZXR6dCBlYmVuZmFsbHMg dm9uIGhpZXIuCmV4cG9ydCB2YXIgQlJFSVRFX1NQQU4gID0geyB2b2xsOiA2LCBoYWxiOiAzLCBk cml0dGVsOiAyIH07CmV4cG9ydCB2YXIgQlJFSVRFX1JBTkcgID0geyBkcml0dGVsOiAwLCBoYWxi OiAxLCB2b2xsOiAyIH07CgovLyBGZXN0ZSBQYW5lbHM6IGlkICg9IGRhdGEtdGlsZS1pZCBpbSBI VE1MKSwgU3RhbmRhcmQtIHVuZCBNaW5kZXN0YnJlaXRlLgovLyBTY2h3ZXJlIFRhYmVsbGVuLVBh bmVscyBkdWVyZmVuIG5pY2h0IHVudGVyICJ2b2xsIiAoc29uc3QgYnJlY2hlbgovLyBIZWF0bWFw L1RhZ2VzYW50ZWlsZS9Qcm9zYSkuIHZlcnRlaWx1bmcvZmFpcm5lc3Mgc2luZCBmcmVpIHdhZWhs YmFyLgpleHBvcnQgdmFyIEJVSUxUSU5fVElMRVMgPSBbCiAgICB7IGlkOiAndmVydGVpbHVuZycs ICAgdGl0ZWw6ICdTY2hpY2h0dmVydGVpbHVuZycsICAgICAgICAgICAgICAgIGRlZmF1bHRCcmVp dGU6ICdoYWxiJywgbWluQnJlaXRlOiAnZHJpdHRlbCcgfSwKICAgIHsgaWQ6ICdmYWlybmVzcycs ICAgICB0aXRlbDogJ1dFLSAmIEZULUZhaXJuZXNzJywgICAgICAgICAgICAgICAgZGVmYXVsdEJy ZWl0ZTogJ2hhbGInLCBtaW5CcmVpdGU6ICdkcml0dGVsJyB9LAogICAgeyBpZDogJ21pa3JvdGVh bXMnLCAgIHRpdGVsOiAnTWlrcm90ZWFtcyDigJQgVmVyZsO8Z2JhcmtlaXQnLCAgICAgICBkZWZh dWx0QnJlaXRlOiAndm9sbCcsIG1pbkJyZWl0ZTogJ3ZvbGwnIH0sCiAgICB7IGlkOiAnbmViZW53 YWNoZW4nLCAgdGl0ZWw6ICdOZWJlbndhY2hlbi1WZXJhbnR3b3J0dW5nJywgICAgICAgIGRlZmF1 bHRCcmVpdGU6ICd2b2xsJywgbWluQnJlaXRlOiAndm9sbCcgfSwKICAgIHsgaWQ6ICd0YWdlc2Fu dGVpbGUnLCB0aXRlbDogJ1RhZ2VzLUFudGVpbGUgcHJvIFRlYW0nLCAgICAgICAgICAgZGVmYXVs dEJyZWl0ZTogJ3ZvbGwnLCBtaW5CcmVpdGU6ICd2b2xsJyB9LAogICAgeyBpZDogJ3Byb3NhJywg ICAgICAgIHRpdGVsOiAnRGV0YWlsYW5hbHlzZSBwcm8gUGVyc29uJywgICAgICAgICBkZWZhdWx0 QnJlaXRlOiAndm9sbCcsIG1pbkJyZWl0ZTogJ3ZvbGwnIH0KXTsKCi8vIEVpZ2VuZSAoaW0gQmF1 a2FzdGVuIGdlYmF1dGUpIEthY2hlbG4gYXVzIGRlciBBZG1pbi1Lb25maWd1cmF0aW9uLgpleHBv cnQgZnVuY3Rpb24gYWxsZUthY2hlbG4oKSB7CiAgICB2YXIgYXJyID0gKFouYWRtaW4gJiYgWi5h ZG1pbi5zdGF0aXN0aWtLYWNoZWxuKSB8fCBbXTsKICAgIHJldHVybiBBcnJheS5pc0FycmF5KGFy cikgPyBhcnIgOiBbXTsKfQoKLy8gVm9sbHN0YWVuZGlnZXIgVGlsZS1LYXRhbG9nIChmZXN0ZSBQ YW5lbHMgKyBlaWdlbmUgS2FjaGVsbikgZnVlciBkYXMKLy8gTGF5b3V0LVJhc3RlciBpbSBBZG1p bi1UYWIgdW5kIGRpZSBSZW5kZXItUmVpaGVuZm9sZ2UgaW0gU3RhdGlzdGlrLVRhYi4KZXhwb3J0 IGZ1bmN0aW9uIHN0YXRpc3Rpa1RpbGVzQWxsZSgpIHsKICAgIHZhciBvdXQgPSBCVUlMVElOX1RJ TEVTLm1hcChmdW5jdGlvbih0KXsKICAgICAgICByZXR1cm4geyBpZDogdC5pZCwgdGl0ZWw6IHQu dGl0ZWwsIG1pbkJyZWl0ZTogdC5taW5CcmVpdGUsIGRlZmF1bHRCcmVpdGU6IHQuZGVmYXVsdEJy ZWl0ZSwgaXN0S2FjaGVsOiBmYWxzZSB9OwogICAgfSk7CiAgICBhbGxlS2FjaGVsbigpLmZvckVh Y2goZnVuY3Rpb24oayl7CiAgICAgICAgb3V0LnB1c2goeyBpZDogay5pZCwgdGl0ZWw6IChrLnRp dGVsIHx8ICdFaWdlbmUgU3RhdGlzdGlrJyksIG1pbkJyZWl0ZTogJ2RyaXR0ZWwnLCBkZWZhdWx0 QnJlaXRlOiAnaGFsYicsIGlzdEthY2hlbDogdHJ1ZSB9KTsKICAgIH0pOwogICAgcmV0dXJuIG91 dDsKfQoKLy8gPT09PT0gQ29kZS1LbGFzc2lmaXppZXJ1bmcgKHNwaWVnZWx0IHNlcnZlci5weSBf aGFuZGxlX3N0YXRpc3RpaykgPT09PT0KCnZhciBTT05ERVJfQ09ERVMgICAgICA9IFsnU0QnLCAn U0UnXTsKdmFyIEZPUlRCSUxEVU5HX0NPREVTID0gWydBdUYnLCAnRVRNJywgJ1NlbScsICdUVCcs ICdUekYnXTsKdmFyIEZSRUlfQ09ERVMgICAgICAgID0gWyd3ZnInLCAnZGZyJywgJ8KnMjEnLCAn MjFhJ107CnZhciBBQldFU0VORF9DT0RFUyAgICA9IFsnVXJsJywgJ2tyJywgJ0t1cicsICdTVScs ICdMRycsICdEVScsICdCVicsICdhYmcnLCAnQkFPJywgJ0hPJywgJ2FidycsICdYWFgnXTsKCmZ1 bmN0aW9uIF9zY2hpY2h0Vm9uKGNvZGUpIHsKICAgIGlmICgvXkYtL2kudGVzdChjb2RlKSkgcmV0 dXJuICdGJzsKICAgIGlmICgvXlMtL2kudGVzdChjb2RlKSkgcmV0dXJuICdTJzsKICAgIGlmICgv Xk4tL2kudGVzdChjb2RlKSkgcmV0dXJuICdOJzsKICAgIHJldHVybiAnJzsKfQpmdW5jdGlvbiBf cm9sbGVWb24oY29kZSkgewogICAgLy8gRi1ER0wgLT4gREdMLCBTLVdERiAtPiBXREYsIE4tRkJQ IC0+IEZCUAogICAgaWYgKGNvZGUgJiYgY29kZS5sZW5ndGggPj0gNSAmJiBjb2RlLmNoYXJBdCgx KSA9PT0gJy0nKSB7CiAgICAgICAgdmFyIHIgPSBjb2RlLnN1YnN0cmluZygyLCA1KTsKICAgICAg ICBpZiAociA9PT0gJ0RHTCcgfHwgciA9PT0gJ1dERicgfHwgciA9PT0gJ0ZCUCcpIHJldHVybiBy OwogICAgfQogICAgcmV0dXJuICcnOwp9CmZ1bmN0aW9uIF9pc3REaWVuc3QoY29kZSkgewogICAg cmV0dXJuIF9zY2hpY2h0Vm9uKGNvZGUpICE9PSAnJyB8fCBTT05ERVJfQ09ERVMuaW5kZXhPZihj b2RlKSA+PSAwOwp9CmZ1bmN0aW9uIF9ncm9ia2xhc3NlKGNvZGUpIHsKICAgIC8vIEdyb2JlIFRh Zy1BcnQgZnVlciBkaWUgS2F0ZWdvcmllLURpbWVuc2lvbi4KICAgIGlmIChfc2NoaWNodFZvbihj b2RlKSkgcmV0dXJuICdEaWVuc3QnOwogICAgaWYgKFNPTkRFUl9DT0RFUy5pbmRleE9mKGNvZGUp ID49IDApIHJldHVybiAnU29uZGVyZGllbnN0JzsKICAgIGlmIChGT1JUQklMRFVOR19DT0RFUy5p bmRleE9mKGNvZGUpID49IDAgfHwgY29kZSA9PT0gJ0xHJykgcmV0dXJuICdBdXMtL0ZvcnRiaWxk dW5nJzsKICAgIGlmIChbJ1VybCcsICdTVSddLmluZGV4T2YoY29kZSkgPj0gMCkgcmV0dXJuICdV cmxhdWInOwogICAgaWYgKFsna3InLCAnS3VyJ10uaW5kZXhPZihjb2RlKSA+PSAwKSByZXR1cm4g J0tyYW5rL0t1cic7CiAgICBpZiAoRlJFSV9DT0RFUy5pbmRleE9mKGNvZGUpID49IDApIHJldHVy biAnRnJlaSc7CiAgICByZXR1cm4gJ1NvbnN0aWdlcyc7Cn0KCi8vID09PT09IEthbGVuZGVyLUhp bGZlbiA9PT09PQoKdmFyIF9mZWllcnRhZ1NldCA9IG51bGwsIF9mZXJpZW5TZXQgPSBudWxsLCBf a2FsZW5kZXJTaWcgPSBudWxsOwoKZnVuY3Rpb24gX2thbGVuZGVyQXVmYmF1ZW4oKSB7CiAgICB2 YXIgc2lnID0gKFouYWRtaW4gJiYgKFouYWRtaW4uZmVpZXJ0YWdlIHx8IFtdKS5sZW5ndGggKyAn eCcgKyAoWi5hZG1pbi5mZXJpZW4gfHwgW10pLmxlbmd0aCkgfHwgJyc7CiAgICBpZiAoX2thbGVu ZGVyU2lnID09PSBzaWcgJiYgX2ZlaWVydGFnU2V0KSByZXR1cm47CiAgICBfa2FsZW5kZXJTaWcg PSBzaWc7CiAgICAvLyBXZXJ0ID0gQmV6ZWljaG51bmcgKGZ1ZXIgYWRtaW4tZWlnZW5lIEZlaWVy dGFnZSBvaG5lIEthdGFsb2ctVHJlZmZlciksCiAgICAvLyBtaW5kZXN0ZW5zIGFiZXIgYHRydWVg LiBLYXRhbG9nIChidW5kZXN3ZWl0L05SVykga29tbXQgenVzYWV0emxpY2ggaW4KICAgIC8vIGZh a3RlbkJhdWVuIGRhenUuCiAgICBfZmVpZXJ0YWdTZXQgPSB7fTsKICAgIChaLmFkbWluICYmIFou YWRtaW4uZmVpZXJ0YWdlIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGYpIHsKICAgICAgICBpZiAo ZiAmJiBmLmRhdHVtICYmIGYuYWt0aXYgIT09IGZhbHNlKSBfZmVpZXJ0YWdTZXRbZi5kYXR1bV0g PSBmLmJlemVpY2hudW5nIHx8IHRydWU7CiAgICB9KTsKICAgIF9mZXJpZW5TZXQgPSB7fTsKICAg IChaLmFkbWluICYmIFouYWRtaW4uZmVyaWVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGZwKSB7 CiAgICAgICAgaWYgKCFmcCB8fCAhZnAudm9uIHx8ICFmcC5iaXMpIHJldHVybjsKICAgICAgICB2 YXIgZCA9IG5ldyBEYXRlKGZwLnZvbiArICdUMDA6MDA6MDAnKSwgZW5kZSA9IG5ldyBEYXRlKGZw LmJpcyArICdUMDA6MDA6MDAnKTsKICAgICAgICB2YXIgc2NodXR6ID0gMDsKICAgICAgICB3aGls ZSAoZCA8PSBlbmRlICYmIHNjaHV0eiA8IDQwMCkgeyBfZmVyaWVuU2V0W2RhdHVtU3RyKGQpXSA9 IHRydWU7IGQuc2V0RGF0ZShkLmdldERhdGUoKSArIDEpOyBzY2h1dHorKzsgfQogICAgfSk7Cn0K Ci8vIElTTy1LYWxlbmRlcndvY2hlIChNby1iYXNpZXJ0KS4KZnVuY3Rpb24gX2lzb0tXKGQpIHsK ICAgIHZhciB0ID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0 RGF0ZSgpKTsKICAgIHZhciB0YWcgPSAodC5nZXREYXkoKSArIDYpICUgNzsgICAgICAgICAgICAv LyBNbz0wIOKApiBTbz02CiAgICB0LnNldERhdGUodC5nZXREYXRlKCkgLSB0YWcgKyAzKTsgICAg ICAgICAgLy8gRG9ubmVyc3RhZyBkaWVzZXIgV29jaGUKICAgIHZhciBqYWhyU3RhcnQgPSBuZXcg RGF0ZSh0LmdldEZ1bGxZZWFyKCksIDAsIDQpOwogICAgdmFyIGt3ID0gMSArIE1hdGgucm91bmQo KCh0IC0gamFoclN0YXJ0KSAvIDg2NDAwMDAwIC0gMyArICgoamFoclN0YXJ0LmdldERheSgpICsg NikgJSA3KSkgLyA3KTsKICAgIHJldHVybiB7IGphaHI6IHQuZ2V0RnVsbFllYXIoKSwga3c6IGt3 IH07Cn0KCnZhciBXT0NIRU5UQUdFID0gWydTbycsICdNbycsICdEaScsICdNaScsICdEbycsICdG cicsICdTYSddOwp2YXIgTU9OQVRTTkFNRU4gPSBbJ0phbicsICdGZWInLCAnTcOkcicsICdBcHIn LCAnTWFpJywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPa3QnLCAnTm92JywgJ0Rleidd OwoKLy8gPT09PT0gRmFrdGVudGFiZWxsZSA9PT09PQoKdmFyIF9mYWt0ZW5DYWNoZSA9IG51bGws IF9mYWt0ZW5TaWcgPSBudWxsOwoKZnVuY3Rpb24gX3BlcnNvbkluZGV4KCkgewogICAgdmFyIGlk eCA9IHt9OwogICAgKFoucGVyc29uZW4gfHwgW10pLmZvckVhY2goZnVuY3Rpb24ocCkgeyBpZHhb cGlkS2V5KHAuaWQpXSA9IHA7IH0pOwogICAgcmV0dXJuIGlkeDsKfQoKLy8gQmF1dCAodW5kIGNh Y2hlZCkgZGllIEZha3RlbnRhYmVsbGU6IGVpbmUgWmVpbGUgcHJvIFBlcnNvbsOXVGFnw5dDb2Rl LgpleHBvcnQgZnVuY3Rpb24gZmFrdGVuQmF1ZW4oKSB7CiAgICB2YXIgZWludHIgPSAoWi5wbGFu dW5nICYmIFoucGxhbnVuZy5laW50cmFlZ2UpIHx8IHt9OwogICAgdmFyIHNpZyA9IE9iamVjdC5r ZXlzKGVpbnRyKS5sZW5ndGggKyAnOicgKyAoWi5wZXJzb25lbiB8fCBbXSkubGVuZ3RoICsgJzon ICsgKFoudGFnZSB8fCBbXSkubGVuZ3RoOwogICAgaWYgKF9mYWt0ZW5TaWcgPT09IHNpZyAmJiBf ZmFrdGVuQ2FjaGUpIHJldHVybiBfZmFrdGVuQ2FjaGU7CiAgICBfa2FsZW5kZXJBdWZiYXVlbigp OwogICAgdmFyIHBJZHggPSBfcGVyc29uSW5kZXgoKTsKICAgIHZhciBmYWt0ZW4gPSBbXTsKICAg IHZhciB0YWdlID0gKFoudGFnZSAmJiBaLnRhZ2UubGVuZ3RoKSA/IFoudGFnZS5tYXAoZGF0dW1T dHIpIDogT2JqZWN0LmtleXMoZWludHIpLnNvcnQoKTsKICAgIHRhZ2UuZm9yRWFjaChmdW5jdGlv bihkYXR1bSkgewogICAgICAgIHZhciB0YWcgPSBlaW50cltkYXR1bV07CiAgICAgICAgaWYgKCF0 YWcpIHJldHVybjsKICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKGRhdHVtICsgJ1QwMDowMDowMCcp OwogICAgICAgIHZhciB3ZCA9IGQuZ2V0RGF5KCk7CiAgICAgICAgdmFyIGlzbyA9IF9pc29LVyhk KTsKICAgICAgICB2YXIgbW9uYXQgPSBkYXR1bS5zdWJzdHJpbmcoMCwgNyk7ICAgICAgICAgICAg ICAgICAvLyAnWVlZWS1NTScKICAgICAgICBPYmplY3Qua2V5cyh0YWcpLmZvckVhY2goZnVuY3Rp b24ocGlkKSB7CiAgICAgICAgICAgIHZhciBjb2RlID0gdGFnW3BpZF07CiAgICAgICAgICAgIGlm ICghY29kZSkgcmV0dXJuOwogICAgICAgICAgICB2YXIgcCA9IHBJZHhbcGlkXTsKICAgICAgICAg ICAgaWYgKCFwKSByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5h a3RpdmUvdmVyc3RlY2t0ZSBQZXJzb24gLT4gbmljaHQgZ2V6YWVobHQKICAgICAgICAgICAgLy8g RmVpZXJ0YWdzLUtsYXNzaWZpa2F0aW9uOiBLYXRhbG9nIChidW5kZXN3ZWl0L05SVykgaGF0IFZv cnJhbmcsCiAgICAgICAgICAgIC8vIHNvbnN0IGFkbWluLWVpZ2VuZXIgRmVpZXJ0YWcgKC0+IFR5 cCAnc29uc3RpZ2UnKS4gaXN0RmVpZXJ0YWcKICAgICAgICAgICAgLy8gYmxlaWJ0IHRydWUsIHNv YmFsZCBlaW5lIGRlciBiZWlkZW4gUXVlbGxlbiBncmVpZnQuCiAgICAgICAgICAgIHZhciBrYXRJ bmZvID0gZmVpZXJ0YWdJbmZvKGRhdHVtKTsKICAgICAgICAgICAgdmFyIGFkbWluRnQgPSBfZmVp ZXJ0YWdTZXRbZGF0dW1dOwogICAgICAgICAgICB2YXIgZnROYW1lID0gJycsIGZ0VHlwID0gJyc7 CiAgICAgICAgICAgIGlmIChrYXRJbmZvKSB7IGZ0TmFtZSA9IGthdEluZm8ubmFtZTsgZnRUeXAg PSBrYXRJbmZvLnR5cDsgfQogICAgICAgICAgICBlbHNlIGlmIChhZG1pbkZ0KSB7IGZ0TmFtZSA9 ICh0eXBlb2YgYWRtaW5GdCA9PT0gJ3N0cmluZycpID8gYWRtaW5GdCA6ICcnOyBmdFR5cCA9ICdz b25zdGlnZSc7IH0KICAgICAgICAgICAgZmFrdGVuLnB1c2goewogICAgICAgICAgICAgICAgcGVy c29uSWQ6IHBpZCwKICAgICAgICAgICAgICAgIHBlcnNvbkxhYmVsOiBfcGVyc29uTGFiZWwocCks CiAgICAgICAgICAgICAgICBncnVwcGU6IHAuZ3J1cHBlIHx8ICfigJQnLAogICAgICAgICAgICAg ICAgZnVua3Rpb246IHAuZnVua3Rpb24gfHwgJ+KAlCcsCiAgICAgICAgICAgICAgICBzdGFuZG9y dDogcC5vZSB8fCAn4oCUJywKICAgICAgICAgICAgICAgIGRpZW5zdGdyYWQ6IHAuZGllbnN0Z3Jh ZCB8fCAn4oCUJywKICAgICAgICAgICAgICAgIGRhdHVtOiBkYXR1bSwKICAgICAgICAgICAgICAg IGphaHI6IFN0cmluZyhkLmdldEZ1bGxZZWFyKCkpLAogICAgICAgICAgICAgICAgbW9uYXQ6IG1v bmF0LAogICAgICAgICAgICAgICAgbW9uYXRMYWJlbDogTU9OQVRTTkFNRU5bZC5nZXRNb250aCgp XSArICcgJyArIGQuZ2V0RnVsbFllYXIoKSwKICAgICAgICAgICAgICAgIGt3S2V5OiBpc28uamFo ciArICctJyArIChpc28ua3cgPCAxMCA/ICcwJyA6ICcnKSArIGlzby5rdywKICAgICAgICAgICAg ICAgIGt3TGFiZWw6ICdLVyAnICsgaXNvLmt3LAogICAgICAgICAgICAgICAgd29jaGVudGFnOiB3 ZCwKICAgICAgICAgICAgICAgIHdvY2hlbnRhZ0xhYmVsOiBXT0NIRU5UQUdFW3dkXSwKICAgICAg ICAgICAgICAgIGlzdFdFOiBpc3RXb2NoZW5lbmRlKGQpLAogICAgICAgICAgICAgICAgaXN0RmVp ZXJ0YWc6ICEhYWRtaW5GdCB8fCAhIWthdEluZm8sCiAgICAgICAgICAgICAgICBmZWllcnRhZ05h bWU6IGZ0TmFtZSwKICAgICAgICAgICAgICAgIGZlaWVydGFnVHlwOiBmdFR5cCwgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vICdidW5kZXN3ZWl0JyB8ICducncnIHwgJ3NvbnN0aWdlJyB8ICcn CiAgICAgICAgICAgICAgICBpc3RGZXJpZW46ICEhX2ZlcmllblNldFtkYXR1bV0sCiAgICAgICAg ICAgICAgICBjb2RlOiBjb2RlLAogICAgICAgICAgICAgICAgc2NoaWNodDogX3NjaGljaHRWb24o Y29kZSksCiAgICAgICAgICAgICAgICByb2xsZTogX3JvbGxlVm9uKGNvZGUpLAogICAgICAgICAg ICAgICAga2F0ZWdvcmllOiBfZ3JvYmtsYXNzZShjb2RlKSwKICAgICAgICAgICAgICAgIGlzdERp ZW5zdDogX2lzdERpZW5zdChjb2RlKQogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIH0p OwogICAgX2Zha3RlbkNhY2hlID0gZmFrdGVuOyBfZmFrdGVuU2lnID0gc2lnOwogICAgcmV0dXJu IGZha3RlbjsKfQoKZnVuY3Rpb24gX3BlcnNvbkxhYmVsKHApIHsKICAgIHZhciBuID0gKHAubmFt ZSB8fCAnJykudHJpbSgpOwogICAgdmFyIHYgPSAocC52b3JuYW1lIHx8ICcnKS50cmltKCk7CiAg ICByZXR1cm4gdiA/IChuICsgJywgJyArIHYpIDogbjsKfQoKLy8gPT09PT0gRGltZW5zaW9uZW4g KEdyb3VwLWJ5LUFjaHNlbikgPT09PT0KLy8gd2VydChmKSAtPiBTY2hsdWVzc2VsICh6dWdsZWlj aCBTb3J0aWVya3JpdGVyaXVtIGZ1ZXIgJ3plaXQnLU9yZG51bmcpLAovLyBsYWJlbChrZXkpIC0+ IEFuemVpZ2UuIG9yZG51bmc6ICduYXR1cicgKGFscGhhYmV0aXNjaC9XZXJ0KSB8ICd6ZWl0JyB8 ICdmaXgnLgoKZXhwb3J0IHZhciBESU1FTlNJT05FTiA9IFsKICAgIHsga2V5OiAnZ3J1cHBlJywg ICAgIGxhYmVsOiAnRGllbnN0Z3J1cHBlJywgb3JkbnVuZzogJ25hdHVyJywgd2VydDogZnVuY3Rp b24oZil7IHJldHVybiBmLmdydXBwZTsgfSB9LAogICAgeyBrZXk6ICdmdW5rdGlvbicsICAgbGFi ZWw6ICdGdW5rdGlvbicsICAgICBvcmRudW5nOiAnbmF0dXInLCB3ZXJ0OiBmdW5jdGlvbihmKXsg cmV0dXJuIGYuZnVua3Rpb247IH0gfSwKICAgIHsga2V5OiAnc3RhbmRvcnQnLCAgIGxhYmVsOiAn U3RhbmRvcnQnLCAgICAgb3JkbnVuZzogJ25hdHVyJywgd2VydDogZnVuY3Rpb24oZil7IHJldHVy biBmLnN0YW5kb3J0OyB9IH0sCiAgICB7IGtleTogJ2RpZW5zdGdyYWQnLCBsYWJlbDogJ0RpZW5z dGdyYWQnLCAgIG9yZG51bmc6ICduYXR1cicsIHdlcnQ6IGZ1bmN0aW9uKGYpeyByZXR1cm4gZi5k aWVuc3RncmFkOyB9IH0sCiAgICB7IGtleTogJ3BlcnNvbicsICAgICBsYWJlbDogJ1BlcnNvbics ICAgICAgIG9yZG51bmc6ICduYXR1cicsIHdlcnQ6IGZ1bmN0aW9uKGYpeyByZXR1cm4gZi5wZXJz b25MYWJlbDsgfSB9LAogICAgeyBrZXk6ICdrYXRlZ29yaWUnLCAgbGFiZWw6ICdUYWctS2F0ZWdv cmllJywgb3JkbnVuZzogJ25hdHVyJywgd2VydDogZnVuY3Rpb24oZil7IHJldHVybiBmLmthdGVn b3JpZTsgfSB9LAogICAgeyBrZXk6ICdzY2hpY2h0JywgICAgbGFiZWw6ICdTY2hpY2h0IChGL1Mv TiknLCBvcmRudW5nOiAnZml4JywgZml4UmVpaGU6IFsnRicsICdTJywgJ04nLCAn4oCUJ10sCiAg ICAgICAgd2VydDogZnVuY3Rpb24oZil7IHJldHVybiBmLnNjaGljaHQgfHwgJ+KAlCc7IH0sIGxh YmVsMjogZnVuY3Rpb24oayl7IHJldHVybiAoe0Y6J0Zyw7xoJywgUzonU3DDpHQnLCBOOidOYWNo dCcsICfigJQnOidrZWluIERpZW5zdCd9KVtrXSB8fCBrOyB9IH0sCiAgICB7IGtleTogJ3JvbGxl JywgICAgICBsYWJlbDogJ0RHTC9XREYvRkJQJywgIG9yZG51bmc6ICdmaXgnLCBmaXhSZWloZTog WydER0wnLCAnV0RGJywgJ0ZCUCcsICfigJQnXSwKICAgICAgICB3ZXJ0OiBmdW5jdGlvbihmKXsg cmV0dXJuIGYucm9sbGUgfHwgJ+KAlCc7IH0gfSwKICAgIHsga2V5OiAnY29kZScsICAgICAgIGxh YmVsOiAnU2NoaWNodGNvZGUnLCAgb3JkbnVuZzogJ25hdHVyJywgd2VydDogZnVuY3Rpb24oZil7 IHJldHVybiBmLmNvZGU7IH0gfSwKICAgIHsga2V5OiAnbW9uYXQnLCAgICAgIGxhYmVsOiAnTW9u YXQnLCAgICAgICAgb3JkbnVuZzogJ3plaXQnLCB3ZXJ0OiBmdW5jdGlvbihmKXsgcmV0dXJuIGYu bW9uYXQ7IH0sIGxhYmVsMjogZnVuY3Rpb24oaywgZil7IHJldHVybiBmID8gZi5tb25hdExhYmVs IDogazsgfSB9LAogICAgeyBrZXk6ICdrdycsICAgICAgICAgbGFiZWw6ICdLYWxlbmRlcndvY2hl Jywgb3JkbnVuZzogJ3plaXQnLCB3ZXJ0OiBmdW5jdGlvbihmKXsgcmV0dXJuIGYua3dLZXk7IH0s IGxhYmVsMjogZnVuY3Rpb24oaywgZil7IHJldHVybiBmID8gZi5rd0xhYmVsIDogazsgfSB9LAog ICAgeyBrZXk6ICd3b2NoZW50YWcnLCAgbGFiZWw6ICdXb2NoZW50YWcnLCAgICBvcmRudW5nOiAn Zml4JywgZml4UmVpaGU6IFsnTW8nLCAnRGknLCAnTWknLCAnRG8nLCAnRnInLCAnU2EnLCAnU28n XSwKICAgICAgICB3ZXJ0OiBmdW5jdGlvbihmKXsgcmV0dXJuIGYud29jaGVudGFnTGFiZWw7IH0g fSwKICAgIHsga2V5OiAnamFocicsICAgICAgIGxhYmVsOiAnSmFocicsICAgICAgICAgb3JkbnVu ZzogJ3plaXQnLCB3ZXJ0OiBmdW5jdGlvbihmKXsgcmV0dXJuIGYuamFocjsgfSB9LAogICAgeyBr ZXk6ICdpc3RXRScsICAgICAgbGFiZWw6ICdXb2NoZW5lbmRlPycsICBvcmRudW5nOiAnZml4Jywg Zml4UmVpaGU6IFsnV29jaGVuZW5kZScsICdXZXJrdGFnJ10sCiAgICAgICAgd2VydDogZnVuY3Rp b24oZil7IHJldHVybiBmLmlzdFdFID8gJ1dvY2hlbmVuZGUnIDogJ1dlcmt0YWcnOyB9IH0sCiAg ICB7IGtleTogJ2ZlaWVydGFnJywgICAgbGFiZWw6ICdGZWllcnRhZyAoTmFtZSknLCBvcmRudW5n OiAnbmF0dXInLAogICAgICAgIHdlcnQ6IGZ1bmN0aW9uKGYpeyByZXR1cm4gZi5mZWllcnRhZ05h bWUgfHwgJ2tlaW4gRmVpZXJ0YWcnOyB9IH0sCiAgICB7IGtleTogJ2ZlaWVydGFnVHlwJywgbGFi ZWw6ICdGZWllcnRhZyAoQnVuZC9OUlcpJywgb3JkbnVuZzogJ2ZpeCcsCiAgICAgICAgZml4UmVp aGU6IFsnQnVuZGVzd2VpdCcsICdOUlctc3BlemlmaXNjaCcsICdTb25zdGlnZXIgRmVpZXJ0YWcn LCAna2VpbiBGZWllcnRhZyddLAogICAgICAgIHdlcnQ6IGZ1bmN0aW9uKGYpeyByZXR1cm4gX2Zl aWVydGFnVHlwTGFiZWwoZi5mZWllcnRhZ1R5cCk7IH0gfQpdOwoKLy8gQW56ZWlnZS1MYWJlbCBm dWVyIGRlbiBGZWllcnRhZ3MtVHlwIGVpbmVyIEZha3RlbnplaWxlLgpleHBvcnQgZnVuY3Rpb24g X2ZlaWVydGFnVHlwTGFiZWwodHlwKSB7CiAgICBpZiAodHlwID09PSAnYnVuZGVzd2VpdCcpIHJl dHVybiAnQnVuZGVzd2VpdCc7CiAgICBpZiAodHlwID09PSAnbnJ3JykgICAgICAgIHJldHVybiAn TlJXLXNwZXppZmlzY2gnOwogICAgaWYgKHR5cCA9PT0gJ3NvbnN0aWdlJykgICByZXR1cm4gJ1Nv bnN0aWdlciBGZWllcnRhZyc7CiAgICByZXR1cm4gJ2tlaW4gRmVpZXJ0YWcnOwp9CgpleHBvcnQg ZnVuY3Rpb24gZGltRmluZGVuKGtleSkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBESU1FTlNJ T05FTi5sZW5ndGg7IGkrKykgaWYgKERJTUVOU0lPTkVOW2ldLmtleSA9PT0ga2V5KSByZXR1cm4g RElNRU5TSU9ORU5baV07CiAgICByZXR1cm4gbnVsbDsKfQoKLy8gPT09PT0gS2VubnphaGxlbiAo WmVsbC1BZ2dyZWdhdGlvbiB1ZWJlciBGYWt0ZW4pID09PT09CgpleHBvcnQgdmFyIEtFTk5aQUhM RU4gPSBbCiAgICB7IGtleTogJ2FuemFobCcsICAgIGxhYmVsOiAnQW56YWhsIEVpbnRyw6RnZScs ICBlaW5oZWl0OiAnRWludHLDpGdlJyB9LAogICAgeyBrZXk6ICdwZXJzb25lbicsICBsYWJlbDog J1ZlcnNjaC4gUGVyc29uZW4nLCBlaW5oZWl0OiAnUGVyc29uZW4nIH0sCiAgICB7IGtleTogJ3Rh Z2UnLCAgICAgIGxhYmVsOiAnVmVyc2NoLiBUYWdlJywgICAgIGVpbmhlaXQ6ICdUYWdlJyB9LAog ICAgeyBrZXk6ICdwcm9QZXJzb24nLCBsYWJlbDogJ8OYIHBybyBQZXJzb24nLCAgICAgZWluaGVp dDogJ8OYL1BlcnNvbicgfSwKICAgIHsga2V5OiAnYW50ZWlsJywgICAgbGFiZWw6ICdBbnRlaWwg KCUpJywgICAgICAgZWluaGVpdDogJyUnIH0KXTsKCmV4cG9ydCBmdW5jdGlvbiBrZW5uemFobEZp bmRlbihrZXkpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgS0VOTlpBSExFTi5sZW5ndGg7IGkr KykgaWYgKEtFTk5aQUhMRU5baV0ua2V5ID09PSBrZXkpIHJldHVybiBLRU5OWkFITEVOW2ldOwog ICAgcmV0dXJuIG51bGw7Cn0KCmZ1bmN0aW9uIF9kaXN0aW5jdChhcnIpIHsKICAgIHZhciBzZWVu ID0ge30sIG4gPSAwOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsg aWYgKCFzZWVuW2FycltpXV0pIHsgc2VlblthcnJbaV1dID0gMTsgbisrOyB9IH0KICAgIHJldHVy biBuOwp9CmZ1bmN0aW9uIF9hZ2coZmFrdGVuLCBrZW5uemFobCkgewogICAgaWYgKCFmYWt0ZW4g fHwgIWZha3Rlbi5sZW5ndGgpIHJldHVybiAwOwogICAgaWYgKGtlbm56YWhsID09PSAncGVyc29u ZW4nKSByZXR1cm4gX2Rpc3RpbmN0KGZha3Rlbi5tYXAoZnVuY3Rpb24oZil7IHJldHVybiBmLnBl cnNvbklkOyB9KSk7CiAgICBpZiAoa2VubnphaGwgPT09ICd0YWdlJykgICAgIHJldHVybiBfZGlz dGluY3QoZmFrdGVuLm1hcChmdW5jdGlvbihmKXsgcmV0dXJuIGYuZGF0dW07IH0pKTsKICAgIGlm IChrZW5uemFobCA9PT0gJ3Byb1BlcnNvbicpIHsKICAgICAgICB2YXIgcCA9IF9kaXN0aW5jdChm YWt0ZW4ubWFwKGZ1bmN0aW9uKGYpeyByZXR1cm4gZi5wZXJzb25JZDsgfSkpOwogICAgICAgIHJl dHVybiBwID8gTWF0aC5yb3VuZChmYWt0ZW4ubGVuZ3RoIC8gcCAqIDEwKSAvIDEwIDogMDsKICAg IH0KICAgIHJldHVybiBmYWt0ZW4ubGVuZ3RoOyAvLyAnYW56YWhsJyAodW5kIEJhc2lzIGZ1ZXIg J2FudGVpbCcpCn0KCi8vID09PT09IEZpbHRlciA9PT09PQoKZnVuY3Rpb24gX2ZpbHRlclBhc3N0 KGYsIHNwZWMpIHsKICAgIHZhciBmaSA9IHNwZWMuZmlsdGVyIHx8IHt9OwogICAgaWYgKGZpLnBl cnNvbmVuICYmIGZpLnBlcnNvbmVuLmxlbmd0aCAmJiBmaS5wZXJzb25lbi5pbmRleE9mKGYucGVy c29uSWQpIDwgMCkgcmV0dXJuIGZhbHNlOwogICAgaWYgKGZpLmdydXBwZW4gJiYgZmkuZ3J1cHBl bi5sZW5ndGggJiYgZmkuZ3J1cHBlbi5pbmRleE9mKGYuZ3J1cHBlKSA8IDApIHJldHVybiBmYWxz ZTsKICAgIGlmIChmaS5mdW5rdGlvbmVuICYmIGZpLmZ1bmt0aW9uZW4ubGVuZ3RoICYmIGZpLmZ1 bmt0aW9uZW4uaW5kZXhPZihmLmZ1bmt0aW9uKSA8IDApIHJldHVybiBmYWxzZTsKICAgIGlmIChm aS5zdGFuZG9ydGUgJiYgZmkuc3RhbmRvcnRlLmxlbmd0aCAmJiBmaS5zdGFuZG9ydGUuaW5kZXhP ZihmLnN0YW5kb3J0KSA8IDApIHJldHVybiBmYWxzZTsKICAgIGlmIChmaS5kaWVuc3RncmFkZSAm JiBmaS5kaWVuc3RncmFkZS5sZW5ndGggJiYgZmkuZGllbnN0Z3JhZGUuaW5kZXhPZihmLmRpZW5z dGdyYWQpIDwgMCkgcmV0dXJuIGZhbHNlOwogICAgaWYgKGZpLmNvZGVzICYmIGZpLmNvZGVzLmxl bmd0aCAmJiBmaS5jb2Rlcy5pbmRleE9mKGYuY29kZSkgPCAwKSByZXR1cm4gZmFsc2U7CiAgICBp ZiAoZmkua2F0ZWdvcmllbiAmJiBmaS5rYXRlZ29yaWVuLmxlbmd0aCAmJiBmaS5rYXRlZ29yaWVu LmluZGV4T2YoZi5rYXRlZ29yaWUpIDwgMCkgcmV0dXJuIGZhbHNlOwogICAgaWYgKGZpLm51cldF ICYmICFmLmlzdFdFKSByZXR1cm4gZmFsc2U7CiAgICBpZiAoZmkubnVyRmVpZXJ0YWcgJiYgIWYu aXN0RmVpZXJ0YWcpIHJldHVybiBmYWxzZTsKICAgIGlmIChmaS5udXJGZWllcnRhZ0J1bmQgJiYg Zi5mZWllcnRhZ1R5cCAhPT0gJ2J1bmRlc3dlaXQnKSByZXR1cm4gZmFsc2U7CiAgICBpZiAoZmku bnVyRmVpZXJ0YWdOUlcgJiYgZi5mZWllcnRhZ1R5cCAhPT0gJ25ydycpIHJldHVybiBmYWxzZTsK ICAgIGlmIChmaS5udXJEaWVuc3QgJiYgIWYuaXN0RGllbnN0KSByZXR1cm4gZmFsc2U7CiAgICBp ZiAoZmkud29jaGVudGFnZSAmJiBmaS53b2NoZW50YWdlLmxlbmd0aCAmJiBmaS53b2NoZW50YWdl LmluZGV4T2YoZi53b2NoZW50YWcpIDwgMCkgcmV0dXJuIGZhbHNlOwogICAgaWYgKHNwZWMuemVp dFZvbiAmJiBmLmRhdHVtIDwgc3BlYy56ZWl0Vm9uKSByZXR1cm4gZmFsc2U7CiAgICBpZiAoc3Bl Yy56ZWl0QmlzICYmIGYuZGF0dW0gPiBzcGVjLnplaXRCaXMpIHJldHVybiBmYWxzZTsKICAgIHJl dHVybiB0cnVlOwp9CgovLyA9PT09PSBBdXN3ZXJ0dW5nID09PT09Ci8vCi8vIExpZWZlcnQgZWlu IGRpYWdyYW1tLW5ldXRyYWxlcyBFcmdlYm5pczoKLy8gICB7IGthdGVnb3JpZW46W3trZXksbGFi ZWx9XSwgc2VyaWVuOlt7bmFtZSwgd2VydGU6Wy4uLl19XSwgZWluaGVpdCwgZ2VzYW10LAovLyAg ICAgcHVua3RlOlt7bGFiZWwseCx5fV0gKFNjYXR0ZXIpLCBpc3RMZWVyIH0KCmV4cG9ydCBmdW5j dGlvbiBhdXN3ZXJ0ZW4oc3BlYykgewogICAgc3BlYyA9IHNwZWMgfHwge307CiAgICB2YXIgZmFr dGVuID0gZmFrdGVuQmF1ZW4oKS5maWx0ZXIoZnVuY3Rpb24oZil7IHJldHVybiBfZmlsdGVyUGFz c3QoZiwgc3BlYyk7IH0pOwogICAgaWYgKCFmYWt0ZW4ubGVuZ3RoKSByZXR1cm4geyBpc3RMZWVy OiB0cnVlLCBrYXRlZ29yaWVuOiBbXSwgc2VyaWVuOiBbXSwgcHVua3RlOiBbXSB9OwoKICAgIGlm IChzcGVjLmRpYWdyYW1tID09PSAnc2NhdHRlcicpIHJldHVybiBfYXVzd2VydGVuU2NhdHRlcihz cGVjLCBmYWt0ZW4pOwoKICAgIHZhciBkaW1YID0gZGltRmluZGVuKHNwZWMuZGltWCkgfHwgZGlt RmluZGVuKCdncnVwcGUnKTsKICAgIHZhciBkaW1TID0gc3BlYy5kaW1TZXJpZSA/IGRpbUZpbmRl bihzcGVjLmRpbVNlcmllKSA6IG51bGw7CiAgICB2YXIga2VubnphaGwgPSBzcGVjLmtlbm56YWhs IHx8ICdhbnphaGwnOwoKICAgIC8vIFplbGxlbjogY2F0S2V5IC0+IHNlcmllS2V5IC0+IGZha3Rl bltdCiAgICB2YXIgemVsbGVuID0ge30sIGNhdE1ldGEgPSB7fSwgc2VyaWVNZXRhID0ge307CiAg ICBmYWt0ZW4uZm9yRWFjaChmdW5jdGlvbihmKSB7CiAgICAgICAgdmFyIGNrID0gZGltWC53ZXJ0 KGYpOwogICAgICAgIHZhciBzayA9IGRpbVMgPyBkaW1TLndlcnQoZikgOiAnX19hbGwnOwogICAg ICAgIGlmICghY2F0TWV0YVtja10pIGNhdE1ldGFbY2tdID0geyBrZXk6IGNrLCBsYWJlbDogX2Rp bUxhYmVsKGRpbVgsIGNrLCBmKSwgYmVpc3BpZWw6IGYgfTsKICAgICAgICBpZiAoIXNlcmllTWV0 YVtza10pIHNlcmllTWV0YVtza10gPSB7IGtleTogc2ssIGxhYmVsOiBkaW1TID8gX2RpbUxhYmVs KGRpbVMsIHNrLCBmKSA6ICcnIH07CiAgICAgICAgKHplbGxlbltja10gfHwgKHplbGxlbltja10g PSB7fSkpOwogICAgICAgICh6ZWxsZW5bY2tdW3NrXSB8fCAoemVsbGVuW2NrXVtza10gPSBbXSkp LnB1c2goZik7CiAgICB9KTsKCiAgICB2YXIga2F0S2V5cyA9IF9zb3J0S2F0ZWdvcmllbihPYmpl Y3Qua2V5cyhjYXRNZXRhKSwgY2F0TWV0YSwgZGltWCk7CiAgICB2YXIgc2VyaWVLZXlzID0gX3Nv cnRLYXRlZ29yaWVuKE9iamVjdC5rZXlzKHNlcmllTWV0YSksIHNlcmllTWV0YSwgZGltUyB8fCBk aW1YKTsKCiAgICAvLyBSb2gtQWdncmVnYXRlCiAgICB2YXIgZ2VzYW10ID0gMDsKICAgIHZhciBz ZXJpZW4gPSBzZXJpZUtleXMubWFwKGZ1bmN0aW9uKHNrKSB7CiAgICAgICAgdmFyIHdlcnRlID0g a2F0S2V5cy5tYXAoZnVuY3Rpb24oY2spIHsKICAgICAgICAgICAgdmFyIHYgPSBfYWdnKCh6ZWxs ZW5bY2tdICYmIHplbGxlbltja11bc2tdKSB8fCBbXSwga2VubnphaGwgPT09ICdhbnRlaWwnID8g J2FuemFobCcgOiBrZW5uemFobCk7CiAgICAgICAgICAgIGdlc2FtdCArPSAoa2VubnphaGwgPT09 ICdhbnRlaWwnKSA/IHYgOiAwOwogICAgICAgICAgICByZXR1cm4gdjsKICAgICAgICB9KTsKICAg ICAgICByZXR1cm4geyBuYW1lOiBzZXJpZU1ldGFbc2tdLmxhYmVsLCB3ZXJ0ZTogd2VydGUgfTsK ICAgIH0pOwoKICAgIC8vIEFudGVpbCAoJSk6IGplZGUgWmVsbGUgcmVsYXRpdiB6dXIgR2VzYW10 c3VtbWUgYWxsZXIgWmVsbGVuLgogICAgaWYgKGtlbm56YWhsID09PSAnYW50ZWlsJyAmJiBnZXNh bXQgPiAwKSB7CiAgICAgICAgc2VyaWVuLmZvckVhY2goZnVuY3Rpb24ocykgewogICAgICAgICAg ICBzLndlcnRlID0gcy53ZXJ0ZS5tYXAoZnVuY3Rpb24odil7IHJldHVybiBNYXRoLnJvdW5kKHYg LyBnZXNhbXQgKiAxMDAwKSAvIDEwOyB9KTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvLyBTb3J0 aWVydW5nIGRlciBLYXRlZ29yaWVuIG5hY2ggV2VydCAoUmFua2luZykgKyBUb3BOLgogICAgdmFy IGVyZ2VibmlzID0gX3NvcnRVbmRUb3Aoc3BlYywga2F0S2V5cywgY2F0TWV0YSwgc2VyaWVuKTsK CiAgICByZXR1cm4gewogICAgICAgIGlzdExlZXI6IGZhbHNlLAogICAgICAgIGthdGVnb3JpZW46 IGVyZ2VibmlzLmthdGVnb3JpZW4sCiAgICAgICAgc2VyaWVuOiBlcmdlYm5pcy5zZXJpZW4sCiAg ICAgICAgbWVocnNlcmlnOiAhIWRpbVMsCiAgICAgICAgZWluaGVpdDogKGtlbm56YWhsRmluZGVu KGtlbm56YWhsKSB8fCB7fSkuZWluaGVpdCB8fCAnJywKICAgICAgICBkaW1YTGFiZWw6IGRpbVgu bGFiZWwsCiAgICAgICAgZGltU2VyaWVMYWJlbDogZGltUyA/IGRpbVMubGFiZWwgOiAnJywKICAg ICAgICBrZW5uemFobExhYmVsOiAoa2VubnphaGxGaW5kZW4oa2VubnphaGwpIHx8IHt9KS5sYWJl bCB8fCAnJwogICAgfTsKfQoKZnVuY3Rpb24gX2RpbUxhYmVsKGRpbSwga2V5LCBmYWt0KSB7CiAg ICBpZiAoZGltLmxhYmVsMikgcmV0dXJuIGRpbS5sYWJlbDIoa2V5LCBmYWt0KTsKICAgIHJldHVy biBrZXk7Cn0KCmZ1bmN0aW9uIF9zb3J0S2F0ZWdvcmllbihrZXlzLCBtZXRhLCBkaW0pIHsKICAg IGlmIChkaW0gJiYgZGltLm9yZG51bmcgPT09ICdmaXgnICYmIGRpbS5maXhSZWloZSkgewogICAg ICAgIHZhciByZWloZSA9IGRpbS5maXhSZWloZTsKICAgICAgICByZXR1cm4ga2V5cy5zbGljZSgp LnNvcnQoZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICB2YXIgaWEgPSByZWloZS5pbmRleE9m KGEpLCBpYiA9IHJlaWhlLmluZGV4T2YoYik7CiAgICAgICAgICAgIGlmIChpYSA8IDApIGlhID0g OTk5OyBpZiAoaWIgPCAwKSBpYiA9IDk5OTsKICAgICAgICAgICAgcmV0dXJuIGlhIC0gaWIgfHwg YS5sb2NhbGVDb21wYXJlKGIsICdkZScpOwogICAgICAgIH0pOwogICAgfQogICAgaWYgKGRpbSAm JiBkaW0ub3JkbnVuZyA9PT0gJ3plaXQnKSB7CiAgICAgICAgcmV0dXJuIGtleXMuc2xpY2UoKS5z b3J0KGZ1bmN0aW9uKGEsIGIpeyByZXR1cm4gYSA8IGIgPyAtMSA6IChhID4gYiA/IDEgOiAwKTsg fSk7CiAgICB9CiAgICByZXR1cm4ga2V5cy5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSwgYil7IHJl dHVybiBhLmxvY2FsZUNvbXBhcmUoYiwgJ2RlJyk7IH0pOwp9CgpmdW5jdGlvbiBfc29ydFVuZFRv cChzcGVjLCBrYXRLZXlzLCBjYXRNZXRhLCBzZXJpZW4pIHsKICAgIHZhciBzb3J0ID0gc3BlYy5z b3J0IHx8ICdsYWJlbCc7CiAgICB2YXIgaWR4UmVpaGUgPSBrYXRLZXlzLm1hcChmdW5jdGlvbihf LCBpKXsgcmV0dXJuIGk7IH0pOwoKICAgIGlmIChzb3J0ID09PSAnd2VydC1kZXNjJyB8fCBzb3J0 ID09PSAnd2VydC1hc2MnKSB7CiAgICAgICAgdmFyIHN1bW1lbiA9IGthdEtleXMubWFwKGZ1bmN0 aW9uKF8sIGkpIHsKICAgICAgICAgICAgdmFyIHMgPSAwOyBzZXJpZW4uZm9yRWFjaChmdW5jdGlv bihzZSl7IHMgKz0gc2Uud2VydGVbaV0gfHwgMDsgfSk7IHJldHVybiBzOwogICAgICAgIH0pOwog ICAgICAgIGlkeFJlaWhlLnNvcnQoZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICByZXR1cm4g c29ydCA9PT0gJ3dlcnQtZGVzYycgPyBzdW1tZW5bYl0gLSBzdW1tZW5bYV0gOiBzdW1tZW5bYV0g LSBzdW1tZW5bYl07CiAgICAgICAgfSk7CiAgICB9CiAgICAvLyAoc29uc3Q6IFJlaWhlbmZvbGdl IGF1cyBfc29ydEthdGVnb3JpZW4gYmVpYmVoYWx0ZW4pCgogICAgdmFyIHRvcE4gPSBzcGVjLnRv cE4gfHwgMDsKICAgIGlmICh0b3BOID4gMCAmJiBpZHhSZWloZS5sZW5ndGggPiB0b3BOKSBpZHhS ZWloZSA9IGlkeFJlaWhlLnNsaWNlKDAsIHRvcE4pOwoKICAgIHZhciBrYXRlZ29yaWVuID0gaWR4 UmVpaGUubWFwKGZ1bmN0aW9uKGkpeyByZXR1cm4geyBrZXk6IGthdEtleXNbaV0sIGxhYmVsOiBj YXRNZXRhW2thdEtleXNbaV1dLmxhYmVsIH07IH0pOwogICAgdmFyIG5ldWVTZXJpZW4gPSBzZXJp ZW4ubWFwKGZ1bmN0aW9uKHNlKSB7CiAgICAgICAgcmV0dXJuIHsgbmFtZTogc2UubmFtZSwgd2Vy dGU6IGlkeFJlaWhlLm1hcChmdW5jdGlvbihpKXsgcmV0dXJuIHNlLndlcnRlW2ldOyB9KSB9Owog ICAgfSk7CiAgICByZXR1cm4geyBrYXRlZ29yaWVuOiBrYXRlZ29yaWVuLCBzZXJpZW46IG5ldWVT ZXJpZW4gfTsKfQoKLy8gLS0tLS0gU2NhdHRlcjogendlaSBQZXJzb25lbi1LZW5uemFobGVuIGdl Z2VuZWluYW5kZXIgLS0tLS0KLy8gc2NhdHRlclgvc2NhdHRlclkgcmVmZXJlbnppZXJlbiBQRVJT T05fTUFTU0UgKFphZWhsdW5nZW4gcHJvIFBlcnNvbiB1ZWJlciBkaWUKLy8gZ2VmaWx0ZXJ0ZW4g RmFrdGVuIOKAlCB6LkIuIE5hY2h0ZGllbnN0ZSB2cy4gVXJsYXVic3RhZ2UgamUgUGVyc29uKS4K CmV4cG9ydCB2YXIgUEVSU09OX01BU1NFID0gWwogICAgeyBrZXk6ICdkaWVuc3RlJywgICAgIGxh YmVsOiAnRGllbnN0ZSBnZXNhbXQnLCB0ZXN0OiBmdW5jdGlvbihmKXsgcmV0dXJuIGYuaXN0RGll bnN0OyB9IH0sCiAgICB7IGtleTogJ2ZydWVoJywgICAgICAgbGFiZWw6ICdGcsO8aGRpZW5zdGUn LCAgICB0ZXN0OiBmdW5jdGlvbihmKXsgcmV0dXJuIGYuc2NoaWNodCA9PT0gJ0YnOyB9IH0sCiAg ICB7IGtleTogJ3NwYWV0JywgICAgICAgbGFiZWw6ICdTcMOkdGRpZW5zdGUnLCAgICB0ZXN0OiBm dW5jdGlvbihmKXsgcmV0dXJuIGYuc2NoaWNodCA9PT0gJ1MnOyB9IH0sCiAgICB7IGtleTogJ25h Y2h0JywgICAgICAgbGFiZWw6ICdOYWNodGRpZW5zdGUnLCAgIHRlc3Q6IGZ1bmN0aW9uKGYpeyBy ZXR1cm4gZi5zY2hpY2h0ID09PSAnTic7IH0gfSwKICAgIHsga2V5OiAnd2UnLCAgICAgICAgICBs YWJlbDogJ1dFLURpZW5zdGUnLCAgICAgdGVzdDogZnVuY3Rpb24oZil7IHJldHVybiBmLmlzdERp ZW5zdCAmJiBmLmlzdFdFOyB9IH0sCiAgICB7IGtleTogJ2ZlaWVydGFnJywgICAgbGFiZWw6ICdG ZWllcnRhZ3NkaWVuc3RlJywgdGVzdDogZnVuY3Rpb24oZil7IHJldHVybiBmLmlzdERpZW5zdCAm JiBmLmlzdEZlaWVydGFnOyB9IH0sCiAgICB7IGtleTogJ2ZlaWVydGFnTlJXJywgbGFiZWw6ICdO UlctRmVpZXJ0YWdzZGllbnN0ZScsIHRlc3Q6IGZ1bmN0aW9uKGYpeyByZXR1cm4gZi5pc3REaWVu c3QgJiYgZi5mZWllcnRhZ1R5cCA9PT0gJ25ydyc7IH0gfSwKICAgIHsga2V5OiAnZGdsJywgICAg ICAgICBsYWJlbDogJ0RHTC1FaW5zw6R0emUnLCAgIHRlc3Q6IGZ1bmN0aW9uKGYpeyByZXR1cm4g Zi5yb2xsZSA9PT0gJ0RHTCc7IH0gfSwKICAgIHsga2V5OiAndXJsYXViJywgICAgICBsYWJlbDog J1VybGF1YnN0YWdlJywgICAgdGVzdDogZnVuY3Rpb24oZil7IHJldHVybiBmLmNvZGUgPT09ICdV cmwnOyB9IH0sCiAgICB7IGtleTogJ2ZvcnRiaWxkdW5nJywgbGFiZWw6ICdGb3J0YmlsZHVuZycs ICAgIHRlc3Q6IGZ1bmN0aW9uKGYpeyByZXR1cm4gZi5rYXRlZ29yaWUgPT09ICdBdXMtL0ZvcnRi aWxkdW5nJzsgfSB9LAogICAgeyBrZXk6ICdmcmVpJywgICAgICAgIGxhYmVsOiAnRnJlaS1UYWdl JywgICAgICB0ZXN0OiBmdW5jdGlvbihmKXsgcmV0dXJuIGYua2F0ZWdvcmllID09PSAnRnJlaSc7 IH0gfQpdOwpleHBvcnQgZnVuY3Rpb24gcGVyc29uTWFzc0ZpbmRlbihrZXkpIHsKICAgIGZvciAo dmFyIGkgPSAwOyBpIDwgUEVSU09OX01BU1NFLmxlbmd0aDsgaSsrKSBpZiAoUEVSU09OX01BU1NF W2ldLmtleSA9PT0ga2V5KSByZXR1cm4gUEVSU09OX01BU1NFW2ldOwogICAgcmV0dXJuIG51bGw7 Cn0KCmZ1bmN0aW9uIF9hdXN3ZXJ0ZW5TY2F0dGVyKHNwZWMsIGZha3RlbikgewogICAgdmFyIG14 ID0gcGVyc29uTWFzc0ZpbmRlbihzcGVjLnNjYXR0ZXJYKSB8fCBQRVJTT05fTUFTU0VbM107IC8v IG5hY2h0CiAgICB2YXIgbXkgPSBwZXJzb25NYXNzRmluZGVuKHNwZWMuc2NhdHRlclkpIHx8IFBF UlNPTl9NQVNTRVs2XTsgLy8gdXJsYXViCiAgICB2YXIgcHJvUGVyc29uID0ge307CiAgICBmYWt0 ZW4uZm9yRWFjaChmdW5jdGlvbihmKSB7CiAgICAgICAgdmFyIGUgPSBwcm9QZXJzb25bZi5wZXJz b25JZF0gfHwgKHByb1BlcnNvbltmLnBlcnNvbklkXSA9IHsgbGFiZWw6IGYucGVyc29uTGFiZWws IHg6IDAsIHk6IDAgfSk7CiAgICAgICAgaWYgKG14LnRlc3QoZikpIGUueCsrOwogICAgICAgIGlm IChteS50ZXN0KGYpKSBlLnkrKzsKICAgIH0pOwogICAgdmFyIHB1bmt0ZSA9IE9iamVjdC5rZXlz KHByb1BlcnNvbikubWFwKGZ1bmN0aW9uKHBpZCl7IHJldHVybiBwcm9QZXJzb25bcGlkXTsgfSk7 CiAgICByZXR1cm4gewogICAgICAgIGlzdExlZXI6IHB1bmt0ZS5sZW5ndGggPT09IDAsCiAgICAg ICAgcHVua3RlOiBwdW5rdGUsCiAgICAgICAga2F0ZWdvcmllbjogW10sIHNlcmllbjogW10sCiAg ICAgICAgYWNoc2VYOiBteC5sYWJlbCwgYWNoc2VZOiBteS5sYWJlbAogICAgfTsKfQo= ### FILE: js/sync.js | 19474 Ly8gPT09IHN5bmMuanMgPT09Ci8vIExpdmUtU3luYy1DbGllbnQgKyBaZWxsLUxvY2stTWFuYWdl bWVudCBpbiBlaW5lbSBNb2R1bC4KLy8KLy8gTGl2ZS1TeW5jOiBXZWItV29ya2VyLWJhc2llcnRl cyBQb2xsaW5nLCBDcm9zcy1Ccm93c2VyLUF1ZmxldWNodGVuIHZvbgovLyByZW1vdGUtZ2VhZW5k ZXJ0ZW4gWmVsbGVuLCBTeW5jLVRvYXN0LURlYm91bmNlLgovLyBaZWxsLUxvY2s6IHBlc3NpbWlz dGljIENlbGwtTG9jay1DbGllbnQgKEFjcXVpcmUvRm9yY2UvUmVsZWFzZS9IZWFydGJlYXQpLAov LyBEaWZmLUFud2VuZHVuZyBmcmVtZGVyIExvY2tzIGF1ZnMgR3JpZCwgVG9vbHRpcC1UZXh0ZSBm dWVyIGxvY2tlZCBaZWxsZW4uCi8vCi8vIENyb3NzLU1vZHVsLUhvb2tzOiBlZGl0b3JTY2hsaWVz c2VuICsgemVsbGVWaXN1ZWxsQWt0dWFsaXNpZXJlbiB3ZXJkZW4KLy8genVyIExhdWZ6ZWl0IGlu aml6aWVydCAoWnlrbGVuIHZlcm1laWRlbiwgd2VpbCBncmlkX2VkaXRvci5qcyBhdWNoCi8vIGhp ZXJoaW4gaW1wb3J0aWVydCkuCgppbXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpzJzsK aW1wb3J0IHsgZGF0dW1Gb3JtYXRERSwgYW56ZWlnZU5hbWVGdWVyS2VubnVuZyB9IGZyb20gJy4v Y29yZV91dGlsLmpzJzsKaW1wb3J0IHsgYXBpU2FmZSB9IGZyb20gJy4vY29yZV9hcGkuanMnOwpp bXBvcnQgeyB0b2FzdCwgYmVzdGFldGlnZW4gfSBmcm9tICcuL3VpX2RpYWxvZy5qcyc7CgpleHBv cnQgdmFyIHN5bmNIb29rcyA9IHsKICAgIGVkaXRvclNjaGxpZXNzZW46IG51bGwsICAgICAgICAg ICAvLyAob2huZVJlbGVhc2U6IGJvb2wpIC0+IHZvaWQKICAgIHplbGxlVmlzdWVsbEFrdHVhbGlz aWVyZW46IG51bGwsICAvLyBncmlkL3JlbmRlci5qcwogICAgaGlud2Vpc2VBa3R1YWxpc2llcnQ6 IG51bGwgICAgICAgIC8vIChoaW53ZWlzZTogYXJyYXkpIC0+IHZvaWQgKGhpbndlaXNlLmpzIHZp YSBhcHAuanMpCn07CgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIExJVkUtU1lOQwovLyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CgovLyA9PT09PSBTeW5jLVRvYXN0LURlYm91bmNlID09PT09Ci8vIE1l aHJlcmUgTGl2ZS1FdmVudHMgaW4ga3VyemVyIEZvbGdlIHp1c2FtbWVuZmFzc2VuLCBzdGF0dCBm dWVyIGplZGUKLy8gQWVuZGVydW5nIGVpbmVuIHNlcGFyYXRlbiBUb2FzdC4KCnZhciBTWU5DX1RP QVNUX1BVRkZFUiA9IFtdOwp2YXIgU1lOQ19UT0FTVF9USU1FUiA9IG51bGw7CgpleHBvcnQgZnVu Y3Rpb24gc3luY1RvYXN0RGVib3VuY2VkKHRleHQpIHsKICAgIFNZTkNfVE9BU1RfUFVGRkVSLnB1 c2godGV4dCk7CiAgICBpZiAoU1lOQ19UT0FTVF9USU1FUikgcmV0dXJuOwogICAgU1lOQ19UT0FT VF9USU1FUiA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgU1lOQ19UT0FTVF9USU1F UiA9IG51bGw7CiAgICAgICAgdmFyIGFuemFobCA9IFNZTkNfVE9BU1RfUFVGRkVSLmxlbmd0aDsK ICAgICAgICBpZiAoYW56YWhsID09PSAxKSB0b2FzdChTWU5DX1RPQVNUX1BVRkZFUlswXSwgJ2lu Zm8nKTsKICAgICAgICBlbHNlIGlmIChhbnphaGwgPiAxKSB0b2FzdChhbnphaGwgKyAnIExpdmUt w4RuZGVydW5nZW4uIExldHp0ZSDDhG5kZXJ1bmc6ICcgKyBTWU5DX1RPQVNUX1BVRkZFUlthbnph aGwgLSAxXSwgJ2luZm8nKTsKICAgICAgICBTWU5DX1RPQVNUX1BVRkZFUiA9IFtdOwogICAgfSwg MzUwKTsKfQoKLy8gPT09PT0gVmlzdWVsbGVzIEF1ZmxldWNodGVuIChDU1MtS2xhc3NlIHplbGxl LWZsYXNoKSA9PT09PQoKZXhwb3J0IGZ1bmN0aW9uIHN5bmNGbGFzaChlbGVtLCBrbGFzc2UpIHsK ICAgIGlmICghZWxlbSkgcmV0dXJuOwogICAgdmFyIGsgPSBrbGFzc2UgfHwgJ3plbGxlLWZsYXNo JzsKICAgIGVsZW0uY2xhc3NMaXN0LnJlbW92ZShrKTsKICAgIHZvaWQgZWxlbS5vZmZzZXRXaWR0 aDsgIC8vIFJlZmxvdywgZGFtaXQgZGllIEFuaW1hdGlvbiBuZXUgc3RhcnRldAogICAgZWxlbS5j bGFzc0xpc3QuYWRkKGspOwogICAgLy8gRGF1ZXIgYXVzIGRlbSBFcnNjaGVpbnVuZ3NiaWxkLUVk aXRvciBsZXNlbiAoLS1tc2YtZGF1ZXIgaW4gbXMsCiAgICAvLyBEZWZhdWx0IDE1MDAgbXMpLiAr NTAgbXMgU2ljaGVyaGVpdHMtUG9sc3RlciwgZGFtaXQgZGVyIGZpbmFsZQogICAgLy8gS2V5ZnJh bWUgbm9jaCBncmVpZnQsIGJldm9yIHdpciBkaWUgS2xhc3NlIGVudGZlcm5lbi4KICAgIHZhciBk YXVlciA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 KS5nZXRQcm9wZXJ0eVZhbHVlKCctLW1zZi1kYXVlcicpLCAxMCk7CiAgICBpZiAoaXNOYU4oZGF1 ZXIpIHx8IGRhdWVyIDwgMjAwKSBkYXVlciA9IDE1MDA7CiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u KCkgeyBlbGVtLmNsYXNzTGlzdC5yZW1vdmUoayk7IH0sIGRhdWVyICsgNTApOwp9CgpleHBvcnQg ZnVuY3Rpb24gc3luY0ZsYXNoWmVsbGUoZFN0ciwgcGlkKSB7CiAgICB2YXIgeiA9IGRvY3VtZW50 LnF1ZXJ5U2VsZWN0b3IoJy5ncmlkLXplbGxlW2RhdGEtZGF0dW09IicgKyBkU3RyICsgJyJdW2Rh dGEtcGVyc29uPSInICsgcGlkICsgJyJdJyk7CiAgICBzeW5jRmxhc2goeiwgJ3plbGxlLWZsYXNo Jyk7Cn0KCi8vID09PT09IENoYW5nZS1Mb2ctQW53ZW5kdW5nID09PT09CgpleHBvcnQgZnVuY3Rp b24gc3luY0NoYW5nZXNBbndlbmRlbihjaGFuZ2VzKSB7CiAgICBpZiAoIWNoYW5nZXMgfHwgIWNo YW5nZXMubGVuZ3RoKSByZXR1cm47CiAgICB2YXIgYmVudXR6ZXJMb3dlciA9IChaLmJlbnV0emVy IHx8ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgdmFyIGJlbnV0emVyS3VyeiA9IGJlbnV0emVyTG93 ZXIuaW5kZXhPZignXFwnKSA+PSAwID8gYmVudXR6ZXJMb3dlci5zcGxpdCgnXFwnKS5wb3AoKSA6 IGJlbnV0emVyTG93ZXI7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYW5nZXMubGVuZ3RoOyBp KyspIHsKICAgICAgICB2YXIgYyA9IGNoYW5nZXNbaV07CiAgICAgICAgdmFyIHZvbiA9IChjLnZv biB8fCAnJykudG9Mb3dlckNhc2UoKTsKICAgICAgICB2YXIgZWlnZW4gPSAodm9uID09PSBiZW51 dHplckxvd2VyIHx8IHZvbiA9PT0gYmVudXR6ZXJLdXJ6KTsKICAgICAgICBpZiAoYy5raW5kID09 PSAnemVsbGUnKSB7CiAgICAgICAgICAgIGlmICghWi5wbGFudW5nLmVpbnRyYWVnZSkgWi5wbGFu dW5nLmVpbnRyYWVnZSA9IHt9OwogICAgICAgICAgICBpZiAoIVoucGxhbnVuZy5laW50cmFlZ2Vb Yy5kYXR1bV0pIFoucGxhbnVuZy5laW50cmFlZ2VbYy5kYXR1bV0gPSB7fTsKICAgICAgICAgICAg aWYgKGMubmV1KSBaLnBsYW51bmcuZWludHJhZWdlW2MuZGF0dW1dW2MucGVyc29uSWRdID0gYy5u ZXU7CiAgICAgICAgICAgIGVsc2UgZGVsZXRlIFoucGxhbnVuZy5laW50cmFlZ2VbYy5kYXR1bV1b Yy5wZXJzb25JZF07CiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3luY0hvb2tzLnplbGxlVmlzdWVs bEFrdHVhbGlzaWVyZW4gPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgICAgIHN5bmNIb29r cy56ZWxsZVZpc3VlbGxBa3R1YWxpc2llcmVuKGMuZGF0dW0sIGMucGVyc29uSWQsIGMubmV1IHx8 ICcnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWVpZ2VuKSB7CiAgICAgICAgICAg ICAgICBzeW5jRmxhc2haZWxsZShjLmRhdHVtLCBjLnBlcnNvbklkKTsKICAgICAgICAgICAgICAg IHZhciBsYWJlbCA9IGMubmV1ID8gYy5uZXUgOiAnKGxlZXIpJzsKICAgICAgICAgICAgICAgIHZh ciByb2xsZUhpbndlaXMgPSAoYy5yb2xsZSAmJiBjLnJvbGxlICE9PSAncmVndWxhZXInKSA/ICgn IFsnICsgYy5yb2xsZSArICddJykgOiAnJzsKICAgICAgICAgICAgICAgIHN5bmNUb2FzdERlYm91 bmNlZChhbnplaWdlTmFtZUZ1ZXJLZW5udW5nKGMudm9uKSArIHJvbGxlSGlud2VpcyArICcgc2V0 enRlICcgKyBsYWJlbCArICcgYW0gJyArIGRhdHVtRm9ybWF0REUoYy5kYXR1bSkpOwogICAgICAg ICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChjLmtpbmQgPT09ICdrb21tZW50YXInKSB7CiAgICAg ICAgICAgIGlmICghWi5wbGFudW5nLmtvbW1lbnRhcmUpIFoucGxhbnVuZy5rb21tZW50YXJlID0g e307CiAgICAgICAgICAgIGlmICghWi5wbGFudW5nLmtvbW1lbnRhcmVbYy5kYXR1bV0pIFoucGxh bnVuZy5rb21tZW50YXJlW2MuZGF0dW1dID0ge307CiAgICAgICAgICAgIGlmIChjLm5ldSkgewog ICAgICAgICAgICAgICAgWi5wbGFudW5nLmtvbW1lbnRhcmVbYy5kYXR1bV1bYy5wZXJzb25JZF0g PSB7CiAgICAgICAgICAgICAgICAgICAgdGV4dDogYy5uZXUsCiAgICAgICAgICAgICAgICAgICAg Z2VhZW5kZXJ0QW06IGMuemVpdHN0ZW1wZWwgfHwgbmV3IERhdGUoKS50b0lTT1N0cmluZygpLAog ICAgICAgICAgICAgICAgICAgIGdlYWVuZGVydFZvbjogYy52b24gfHwgJycKICAgICAgICAgICAg ICAgIH07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkZWxldGUgWi5wbGFu dW5nLmtvbW1lbnRhcmVbYy5kYXR1bV1bYy5wZXJzb25JZF07CiAgICAgICAgICAgIH0KICAgICAg ICAgICAgaWYgKHR5cGVvZiBzeW5jSG9va3MuemVsbGVWaXN1ZWxsQWt0dWFsaXNpZXJlbiA9PT0g J2Z1bmN0aW9uJykgewogICAgICAgICAgICAgICAgc3luY0hvb2tzLnplbGxlVmlzdWVsbEFrdHVh bGlzaWVyZW4oYy5kYXR1bSwgYy5wZXJzb25JZCwgKChaLnBsYW51bmcuZWludHJhZWdlIHx8IHt9 KVtjLmRhdHVtXSB8fCB7fSlbYy5wZXJzb25JZF0gfHwgJycpOwogICAgICAgICAgICB9CiAgICAg ICAgICAgIGlmICghZWlnZW4pIHsKICAgICAgICAgICAgICAgIHN5bmNGbGFzaFplbGxlKGMuZGF0 dW0sIGMucGVyc29uSWQpOwogICAgICAgICAgICAgICAgc3luY1RvYXN0RGVib3VuY2VkKGFuemVp Z2VOYW1lRnVlcktlbm51bmcoYy52b24pICsgJyDDpG5kZXJ0ZSBLb21tZW50YXIgYW0gJyArIGRh dHVtRm9ybWF0REUoYy5kYXR1bSkpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChj LmtpbmQgPT09ICdsb2NrX2ZvcmNlJykgewogICAgICAgICAgICBpZiAoIWVpZ2VuICYmIFouemVs bExvY2sgJiYgWi56ZWxsTG9jay5kYXR1bSA9PT0gYy5kYXR1bSAmJiBTdHJpbmcoWi56ZWxsTG9j ay5wZXJzb25JZCkgPT09IFN0cmluZyhjLnBlcnNvbklkKSkgewogICAgICAgICAgICAgICAgdG9h c3QoJ0RlaW5lIEJlYXJiZWl0dW5ncy1TcGVycmUgd3VyZGUgdm9uICcgKyBhbnplaWdlTmFtZUZ1 ZXJLZW5udW5nKGMudm9uKSArICcgw7xiZXJub21tZW4uJywgJ3dhcm51bmcnKTsKICAgICAgICAg ICAgICAgIFouemVsbExvY2sudG9rZW4gPSBudWxsOwogICAgICAgICAgICAgICAgaWYgKHR5cGVv ZiBzeW5jSG9va3MuZWRpdG9yU2NobGllc3NlbiA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAg ICAgICAgICAgIHN5bmNIb29rcy5lZGl0b3JTY2hsaWVzc2VuKHRydWUpOwogICAgICAgICAgICAg ICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgovLyA9PT09PSBTeW5jLVdvcmtl ciBzdGFydGVuID09PT09CgpleHBvcnQgZnVuY3Rpb24gc3luY1dvcmtlclN0YXJ0ZW4oKSB7CiAg ICBpZiAoWi5zeW5jV29ya2VyKSByZXR1cm47CiAgICB0cnkgewogICAgICAgIC8vIENhY2hlLUJ1 c3RlciB2ZXJoaW5kZXJ0LCBkYXNzIGVpbiBCcm93c2VyIGVpbmUgYWx0ZSBzeW5jLXdvcmtlci5q cwogICAgICAgIC8vIGF1cyBkZW0gSFRUUC1DYWNoZSBudXR6dCDigJQgYmVpIFdvcmtlci1Mb2dp ay1BZW5kZXJ1bmdlbiB3YWVyZSBkYXMKICAgICAgICAvLyBzb25zdCBlaW4gUGhhbnRvbS1CdWcg KFdvcmtlciBsYWV1ZnQsIGFiZXIgYWx0ZSBDb2RlLVBmYWRlKS4KICAgICAgICAvLyBEZXIgUXVl cnktU3RyaW5nIHdpcmQgbmljaHQgdm9tIFNlcnZlciBpbnRlcnByZXRpZXJ0LgogICAgICAgIFou c3luY1dvcmtlciA9IG5ldyBXb3JrZXIoJ3N5bmMtd29ya2VyLmpzP3Y9MjAyNi0wNi0xNS1zZXEn KTsKICAgICAgICBjb25zb2xlLmluZm8oJ1tWSTNdIHN5bmMtd29ya2VyIGVyc3RlbGx0Jyk7CiAg ICAgICAgLy8gV2F0Y2hkb2c6IHdlbm4gbmFjaCA4IHMga2VpbiBQdWxzIG9kZXIgbm9jaCBrZWlu IFN5bmMtUmVzdWx0YXQKICAgICAgICAvLyBhbmdla29tbWVuIGlzdCwgaGF0IGRlciBXb3JrZXIg ZW50d2VkZXIgbmljaHQgZ2VzdGFydGV0IG9kZXIgZGFzCiAgICAgICAgLy8gUG9sbGluZyBsYWV1 ZnQgaW5zIExlZXJlLiBUb2FzdCBmdWVyIFN1cGVyVXNlciwgZGFtaXQga2xhciBpc3QKICAgICAg ICAvLyB3byBkZXIgQnVnIHNpdHp0LgogICAgICAgIHZhciBzdGFydFRzID0gRGF0ZS5ub3coKTsK ICAgICAgICBaLnN5bmNXb3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGVycikgewogICAgICAgICAg ICBjb25zb2xlLmVycm9yKCdbVkkzXSBzeW5jLXdvcmtlciBvbmVycm9yOicsIGVyciAmJiAoZXJy Lm1lc3NhZ2UgfHwgZXJyLmZpbGVuYW1lICsgJzonICsgZXJyLmxpbmVubykgfHwgZXJyKTsKICAg ICAgICAgICAgaWYgKFoucmVjaHRlICYmIFoucmVjaHRlLmlzdFN1cGVyVXNlcikgewogICAgICAg ICAgICAgICAgdG9hc3QoJ1N5bmMtV29ya2VyLUZlaGxlciDigJQgRGV0YWlscyBpbiBEZXZUb29s cy1Lb25zb2xlJywgJ2ZlaGxlcicpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBa LnN5bmNXb3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoIWUu ZGF0YSkgcmV0dXJuOwogICAgICAgICAgICBpZiAoZS5kYXRhLnR5cGUgPT09ICdwdWxzJykgewog ICAgICAgICAgICAgICAgY29uc29sZS5pbmZvKCdbVkkzXSBzeW5jLXdvcmtlciBwdWxzJyArIChl LmRhdGEucGhhc2UgPyAnICgnK2UuZGF0YS5waGFzZSsnKScgOiAnJykgKyAnIG5hY2ggJyArIChE YXRlLm5vdygpIC0gc3RhcnRUcykgKyAnIG1zJyk7CiAgICAgICAgICAgICAgICBaLnN5bmNXb3Jr ZXJMZWJ0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAg ICAgICAgICBpZiAoZS5kYXRhLnR5cGUgPT09ICdzeW5jJykgewogICAgICAgICAgICAgICAgaWYg KGUuZGF0YS5zZXJ2ZXJUcykgWi5sYXN0U3luY1RzID0gZS5kYXRhLnNlcnZlclRzOwogICAgICAg ICAgICAgICAgaWYgKGUuZGF0YS5zZXJ2ZXJTZXEgIT0gbnVsbCkgWi5sYXN0U3luY1NlcSA9IGUu ZGF0YS5zZXJ2ZXJTZXE7CiAgICAgICAgICAgICAgICBpZiAoZS5kYXRhLmNoYW5nZXMpIHN5bmND aGFuZ2VzQW53ZW5kZW4oZS5kYXRhLmNoYW5nZXMpOwogICAgICAgICAgICAgICAgaWYgKGUuZGF0 YS5sb2NrcykgICBsb2NrU3RhdGVBbndlbmRlbihlLmRhdGEubG9ja3MpOwogICAgICAgICAgICAg ICAgLy8gSGlud2Vpcy1TeXN0ZW06IExpc3RlIHZvbSBTZXJ2ZXIgdWViZXJuZWhtZW4gKyBCYW5u ZXIvQmFkZ2UKICAgICAgICAgICAgICAgIC8vIG5ldSByZW5kZXJuLiBzeW5jSG9va3MuaGlud2Vp c2VBa3R1YWxpc2llcnQgd2lyZCBpbiBhcHAuanMKICAgICAgICAgICAgICAgIC8vIG1pdCBoaW53 ZWlzZS5qcyB2ZXJkcmFodGV0IChDcm9zcy1Nb2R1bCBvaG5lIHppcmt1bGFlcmVuIEltcG9ydCku CiAgICAgICAgICAgICAgICBpZiAoZS5kYXRhLmhpbndlaXNlICYmIHN5bmNIb29rcy5oaW53ZWlz ZUFrdHVhbGlzaWVydCkgewogICAgICAgICAgICAgICAgICAgIHN5bmNIb29rcy5oaW53ZWlzZUFr dHVhbGlzaWVydChlLmRhdGEuaGlud2Vpc2UpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg ICB9IGVsc2UgaWYgKGUuZGF0YS50eXBlID09PSAncGVybWlzc2lvbl9sb3N0JykgewogICAgICAg ICAgICAgICAgLy8gQXVkaXQtUGhhc2UgQS40ICgyMDI2LTA1LTIxKTogV29ya2VyIGhhdCBkcmVp IE1hbCBpbiBGb2xnZQogICAgICAgICAgICAgICAgLy8gNDAzIHZvbiAvYXBpL3BsYW51bmcvY2hh bmdlcyBvZGVyIC9hcGkvbG9jay96ZWxsZW4gZXJoYWx0ZW4uCiAgICAgICAgICAgICAgICAvLyBW ZXJtdXRsaWNoIGhhdCBlaW4gYW5kZXJlciBTVSBkaWUgUm9sbGUgZW50em9nZW4g4oCUIFVzZXIK ICAgICAgICAgICAgICAgIC8vIG11c3MgbmV1IGxhZGVuLCBkYW1pdCBaLnJlY2h0ZSBrb3JyZWt0 IGFrdHVhbGlzaWVydCB3aXJkLgogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8v IFVYLUF1ZGl0IFNwcmludCAxLjYgKDIwMjYtMDUtMjkpOiBUb2FzdCB2ZXJzY2h3aW5kZXQgbmFj aCA0cwogICAgICAgICAgICAgICAgLy8gdW5kIGthbm4gw7xiZXJzZWhlbiB3ZXJkZW4g4oCUIHN0 YXR0ZGVzc2VuIG1vZGFsZXIgRGlhbG9nIG1pdAogICAgICAgICAgICAgICAgLy8gUmVsb2FkLUFj dGlvbiwgZGFtaXQgZGVyIFVzZXIgYWt0aXYgcmVhZ2llcmVuIG11c3MuCiAgICAgICAgICAgICAg ICBiZXN0YWV0aWdlbigKICAgICAgICAgICAgICAgICAgICAnRGVpbmUgQmVyZWNodGlndW5nIHd1 cmRlIHfDpGhyZW5kIGRlciBTaXR6dW5nIGdlw6RuZGVydC4gJyArCiAgICAgICAgICAgICAgICAg ICAgJ0JpdHRlIGRpZSBTZWl0ZSBuZXUgbGFkZW4sIGRhbWl0IGRpZSBha3R1ZWxsZW4gUmVjaHRl IGdyZWlmZW4uJywKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgbG9jYXRpb24ucmVs b2FkKCk7IH0sCiAgICAgICAgICAgICAgICAgICAgeyB0aXRlbDogJ0JlcmVjaHRpZ3VuZyBnZcOk bmRlcnQnLCBqYVRleHQ6ICdOZXUgbGFkZW4nIH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAg ICAgIH0KICAgICAgICB9OwogICAgICAgIFouc3luY1dvcmtlci5wb3N0TWVzc2FnZSh7IGNtZDog J3N0YXJ0Jywgc2VpdDogWi5sYXN0U3luY1RzLCBzZWl0U2VxOiBaLmxhc3RTeW5jU2VxIH0pOwog ICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBmdW5j dGlvbigpIHsKICAgICAgICAgICAgWi5zeW5jV29ya2VyLnBvc3RNZXNzYWdlKHsgY21kOiBkb2N1 bWVudC5oaWRkZW4gPyAncGF1c2UnIDogJ3Jlc3VtZScsIHNlaXQ6IFoubGFzdFN5bmNUcywgc2Vp dFNlcTogWi5sYXN0U3luY1NlcSB9KTsKICAgICAgICB9KTsKICAgICAgICAvLyBXYXRjaGRvZzog bmFjaCA4IHMgcHJ1ZWZlbiwgb2IgZGVyIFdvcmtlciBnZWFudHdvcnRldCBoYXQuIFdlbm4KICAg ICAgICAvLyBuaWNodCwgbGF1dHN0YXJrIG1lbGRlbiDigJQgc29uc3Qgc3RpbGxlciBMaXZlLVN5 bmMtVG9kLgogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICgh Wi5zeW5jV29ya2VyTGVidCkgewogICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1ZJM10g c3luYy13b3JrZXIgaGF0IG5hY2ggOCBzIG5vY2gga2VpbmVuIFB1bHMgZ2VzZW5kZXQg4oCUIFdv cmtlciBzdGFydGV0IG5pY2h0IG9kZXIgcG9sbHQgbmljaHRzLicpOwogICAgICAgICAgICAgICAg aWYgKFoucmVjaHRlICYmIFoucmVjaHRlLmlzdFN1cGVyVXNlcikgewogICAgICAgICAgICAgICAg ICAgIHRvYXN0KCdMaXZlLVN5bmMgbMOkdWZ0IG5pY2h0IOKAlCBEZXRhaWxzIGluIERldlRvb2xz LUtvbnNvbGUnLCAnZmVobGVyJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAg ICAgICB9LCA4MDAwKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAvLyBGYWxsYmFjazogUG9s bGluZyBpbSBNYWludGhyZWFkICh6LkIuIGZpbGU6Ly8gc3RhdHQgaHR0cDovLykKICAgICAgICBz ZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKGRvY3VtZW50LmhpZGRlbikg cmV0dXJuOwogICAgICAgICAgICB2YXIgc3EgPSAoWi5sYXN0U3luY1NlcSAhPSBudWxsKSA/IFN0 cmluZyhaLmxhc3RTeW5jU2VxKSA6ICcnOwogICAgICAgICAgICBmZXRjaCgnL2FwaS9wbGFudW5n L2NoYW5nZXM/c2VpdF9zZXE9JyArIGVuY29kZVVSSUNvbXBvbmVudChzcSkgKyAnJnNlaXQ9JyAr IGVuY29kZVVSSUNvbXBvbmVudChaLmxhc3RTeW5jVHMgfHwgJycpKQogICAgICAgICAgICAgICAg LnRoZW4oZnVuY3Rpb24ocikgeyByZXR1cm4gci5qc29uKCk7IH0pLnRoZW4oZnVuY3Rpb24oZCkg ewogICAgICAgICAgICAgICAgICAgIGlmIChkLnNlcnZlclRzKSBaLmxhc3RTeW5jVHMgPSBkLnNl cnZlclRzOwogICAgICAgICAgICAgICAgICAgIGlmIChkLnNlcnZlclNlcSAhPSBudWxsKSBaLmxh c3RTeW5jU2VxID0gZC5zZXJ2ZXJTZXE7CiAgICAgICAgICAgICAgICAgICAgc3luY0NoYW5nZXNB bndlbmRlbihkLmNoYW5nZXMgfHwgW10pOwogICAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rp b24oKSB7fSk7CiAgICAgICAgICAgIGZldGNoKCcvYXBpL2xvY2svemVsbGVuJykKICAgICAgICAg ICAgICAgIC50aGVuKGZ1bmN0aW9uKHIpIHsgcmV0dXJuIHIuanNvbigpOyB9KS50aGVuKGZ1bmN0 aW9uKGQpIHsKICAgICAgICAgICAgICAgICAgICBsb2NrU3RhdGVBbndlbmRlbihkLmxvY2tzIHx8 IFtdKTsKICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKCkge30pOwogICAgICAgIH0s IDMwMDApOwogICAgfQp9CgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIFpFTEwtTE9DSwovLyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CgovLyA9PT09PSBJbnRlci1UYWItTG9jay1Ccm9hZGNhc3QgKFNw cmludCAzIOKAlCBSb2J1c3RoZWl0IDIwMjYtMDUtMjgpID09PT09Ci8vIFdlbm4gZGVyIGdsZWlj aGUgV2luZG93cy1Vc2VyIGRpZSBBcHAgaW4gbWVocmVyZW4gQnJvd3Nlci1UYWJzIG9mZmVuIGhh dAovLyAoei5CLiBlaW5lbiBUYWIgaW4gZGVyIFBsYW50YWZlbCwgZWluZW4gaW4gZGVyIFBlcnNv bmFsdmVyd2FsdHVuZyksIGthbm4KLy8gamVkZXIgVGFiIGdsZWljaHplaXRpZyBhdWYgZGllc2Vs YmUgWmVsbGUgTG9jay1BY3F1aXJlIHBvc3Rlbi4gU2VydmVyCi8vIHZlcmdsZWljaHQgbnVyICd1 c2VybmFtZSAtaWVxJywgZGFoZXIgYmVrb21tZW4gYmVpZGUgVGFicyBzY2hlaW5iYXIgRXJmb2xn Ci8vIOKAlCBhYmVyIGRlciBUb2tlbiBhdXMgVGFiIEEgd2lyZCBkdXJjaCBkYXMgVG9rZW4gYXVz IFRhYiBCIHVuYmVtZXJrdAovLyB1ZWJlcnNjaHJpZWJlbi4gSGVhcnRiZWF0IGF1cyBUYWIgQSB0 cmlmZnQgZGFubiBhdWYgNDA0ICgiZGVpbiBMb2NrIHdlZyIpLgovLyBNaXQgQnJvYWRjYXN0Q2hh bm5lbCBrdWVuZGlnZW4gd2lyIEFjcXVpcmUvUmVsZWFzZSB6d2lzY2hlbiBUYWJzIGFuIHVuZAov LyB3YXJuZW4gZGVuIFVzZXIgdm9yIChTZXJ2ZXItQWNxdWlyZSBsYWV1ZnQgdHJvdHpkZW0g4oCU IENoYW5uZWwgaXN0IG51cgovLyBJbnRlci1UYWItU2ljaHQsIGtlaW5lIEF1dGgtUXVlbGxlKS4K CnZhciBCQyA9ICh0eXBlb2YgQnJvYWRjYXN0Q2hhbm5lbCAhPT0gJ3VuZGVmaW5lZCcpID8gbmV3 IEJyb2FkY2FzdENoYW5uZWwoJ3ZpMy16ZWxsLWxvY2snKSA6IG51bGw7CnZhciBCQ19SRU1PVEVf TE9DS1MgPSB7fTsgIC8vICdkYXR1bXxwaWQnIC0+IDEgKHZvbiBhbmRlcmVuIFRhYnMgZ2VtZWxk ZXQpCgppZiAoQkMpIHsKICAgIEJDLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2KSB7CiAgICAgICAg dmFyIG1zZyA9IGV2LmRhdGEgfHwge307CiAgICAgICAgaWYgKCFtc2cudHlwZSB8fCAhbXNnLmRh dHVtIHx8IG1zZy5waWQgPT0gbnVsbCkgcmV0dXJuOwogICAgICAgIHZhciBrZXkgPSBtc2cuZGF0 dW0gKyAnfCcgKyBTdHJpbmcobXNnLnBpZCk7CiAgICAgICAgaWYgKG1zZy50eXBlID09PSAnYWNx dWlyZWQnKSBCQ19SRU1PVEVfTE9DS1Nba2V5XSA9IDE7CiAgICAgICAgZWxzZSBpZiAobXNnLnR5 cGUgPT09ICdyZWxlYXNlZCcpIGRlbGV0ZSBCQ19SRU1PVEVfTE9DS1Nba2V5XTsKICAgIH07Cn0K CmZ1bmN0aW9uIGJjQW5ub3VuY2VBY3F1aXJlKGRhdHVtLCBwaWQpIHsKICAgIGlmIChCQykgdHJ5 IHsgQkMucG9zdE1lc3NhZ2UoeyB0eXBlOiAnYWNxdWlyZWQnLCBkYXR1bTogZGF0dW0sIHBpZDog U3RyaW5nKHBpZCkgfSk7IH0gY2F0Y2ggKGUpIHt9Cn0KZnVuY3Rpb24gYmNBbm5vdW5jZVJlbGVh c2UoZGF0dW0sIHBpZCkgewogICAgaWYgKEJDKSB0cnkgeyBCQy5wb3N0TWVzc2FnZSh7IHR5cGU6 ICdyZWxlYXNlZCcsIGRhdHVtOiBkYXR1bSwgcGlkOiBTdHJpbmcocGlkKSB9KTsgfSBjYXRjaCAo ZSkge30KfQoKLy8gPT09PT0gRW5kcG9pbnRzID09PT09CgpleHBvcnQgZnVuY3Rpb24gbG9ja1pl bGxlQWNxdWlyZShkYXR1bSwgcGVyc29uSWQpIHsKICAgIHZhciBrZXkgPSBkYXR1bSArICd8JyAr IFN0cmluZyhwZXJzb25JZCk7CiAgICBpZiAoQkNfUkVNT1RFX0xPQ0tTW2tleV0pIHsKICAgICAg ICAvLyBWb3ItV2FybnVuZzogZWluIGFuZGVyZXIgVGFiIGRpZXNlcyBCcm93c2VycyBoYXQgZGll IFplbGxlIGdlcmFkZQogICAgICAgIC8vIG9mZmVuLiBXaXIgdmVyc3VjaGVuIGRlbiBMb2NrIHRy b3R6ZGVtIChVc2VyIGVudHNjaGVpZGV0KTsgU2VydmVyLQogICAgICAgIC8vIEFudHdvcnQgaXN0 IGRpZSBmaW5hbGUgV2FocmhlaXQuCiAgICAgICAgdG9hc3QoJ0RpZXNlIFplbGxlIGlzdCBpbiBl aW5lbSBhbmRlcmVuIFRhYiBnZcO2ZmZuZXQg4oCUIGRlciB6dWxldHp0IGdlw7ZmZm5ldGUgVGFi IGdld2lubnQuJywgJ3dhcm51bmcnKTsKICAgIH0KICAgIHJldHVybiBhcGlTYWZlKCcvYXBpL2xv Y2svemVsbGUnLCB7CiAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgaGVhZGVyczogeyAn Q29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sCiAgICAgICAgYm9keTogSlNPTi5z dHJpbmdpZnkoeyBkYXR1bTogZGF0dW0sIHBlcnNvbklkOiBTdHJpbmcocGVyc29uSWQpIH0pCiAg ICB9KS50aGVuKGZ1bmN0aW9uKHJlcykgewogICAgICAgIGlmIChyZXMgJiYgcmVzLnN0YXR1cyA9 PT0gMjAwKSBiY0Fubm91bmNlQWNxdWlyZShkYXR1bSwgcGVyc29uSWQpOwogICAgICAgIHJldHVy biByZXM7CiAgICB9KTsKfQoKZXhwb3J0IGZ1bmN0aW9uIGxvY2taZWxsZUZvcmNlKGRhdHVtLCBw ZXJzb25JZCkgewogICAgcmV0dXJuIGFwaVNhZmUoJy9hcGkvbG9jay96ZWxsZS9mb3JjZScsIHsK ICAgICAgICBtZXRob2Q6ICdQT1NUJywKICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUn OiAnYXBwbGljYXRpb24vanNvbicgfSwKICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGRh dHVtOiBkYXR1bSwgcGVyc29uSWQ6IFN0cmluZyhwZXJzb25JZCkgfSkKICAgIH0pOwp9CgpleHBv cnQgZnVuY3Rpb24gbG9ja1plbGxlUmVsZWFzZSh0b2tlbikgewogICAgaWYgKCF0b2tlbikgcmV0 dXJuIFByb21pc2UucmVzb2x2ZSh7IHN0YXR1czogMjAwLCBib2R5OiB7IG9rOiB0cnVlIH0gfSk7 CiAgICAvLyBUYWItQnJvYWRjYXN0IChTcHJpbnQgMyk6IGFuZGVyZSBUYWJzIGR1ZXJmZW4gZGll IFplbGxlIGpldHp0IHdpZWRlcgogICAgLy8gc3BlcnJlbi4gV2lyIGtlbm5lbiBEYXR1bSArIFBl cnNvbklkIGF1cyBaLnplbGxMb2NrIOKAlCBmYWxscyBkaWUgbm9jaAogICAgLy8gZ2VzZXR6dCBz aW5kIChyZWxlYXNlIHdpcmQgb2Z0IHZvciBkZW0gVG9rZW4tbnVsbCBnZXJ1ZmVuKS4KICAgIGlm IChaLnplbGxMb2NrICYmIFouemVsbExvY2suZGF0dW0gJiYgWi56ZWxsTG9jay5wZXJzb25JZCAh PSBudWxsKSB7CiAgICAgICAgYmNBbm5vdW5jZVJlbGVhc2UoWi56ZWxsTG9jay5kYXR1bSwgWi56 ZWxsTG9jay5wZXJzb25JZCk7CiAgICB9CiAgICByZXR1cm4gYXBpU2FmZSgnL2FwaS9sb2NrL3pl bGxlJywgewogICAgICAgIG1ldGhvZDogJ0RFTEVURScsCiAgICAgICAgaGVhZGVyczogeyAnQ29u dGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sCiAgICAgICAgYm9keTogSlNPTi5zdHJp bmdpZnkoeyB0b2tlbjogdG9rZW4gfSkKICAgIH0pOwp9CgpleHBvcnQgZnVuY3Rpb24gbG9ja1pl bGxlSGVhcnRiZWF0U2VuZGVuKHRva2VuKSB7CiAgICByZXR1cm4gYXBpU2FmZSgnL2FwaS9sb2Nr L3plbGxlL2hlYXJ0YmVhdCcsIHsKICAgICAgICBtZXRob2Q6ICdQT1NUJywKICAgICAgICBoZWFk ZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSwKICAgICAgICBib2R5 OiBKU09OLnN0cmluZ2lmeSh7IHRva2VuOiB0b2tlbiB9KQogICAgfSk7Cn0KCi8vID09PT09IEhl YXJ0YmVhdC1Mb29wIChhbGxlIDIwcywgc29sYW5nZSBFZGl0b3Igb2ZmZW4pID09PT09CgpleHBv cnQgZnVuY3Rpb24gbG9ja0hlYXJ0YmVhdFN0YXJ0ZW4odG9rZW4pIHsKICAgIGxvY2tIZWFydGJl YXRTdG9wcGVuKCk7CiAgICBaLnplbGxMb2NrLmhiVGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlv bigpIHsKICAgICAgICBpZiAoIVouemVsbExvY2sudG9rZW4pIHsgbG9ja0hlYXJ0YmVhdFN0b3Bw ZW4oKTsgcmV0dXJuOyB9CiAgICAgICAgbG9ja1plbGxlSGVhcnRiZWF0U2VuZGVuKFouemVsbExv Y2sudG9rZW4pLnRoZW4oZnVuY3Rpb24ocmVzKSB7CiAgICAgICAgICAgIGlmIChyZXMuc3RhdHVz ID09PSA0MDQpIHsKICAgICAgICAgICAgICAgIHRvYXN0KCdEZWluIEVkaXQtTG9jayB3dXJkZSBh dWZnZWhvYmVuICh2ZXJtdXRsaWNoIEZhY2hhdWZzaWNodC1PdmVycmlkZSkuJywgJ3dhcm51bmcn KTsKICAgICAgICAgICAgICAgIFouemVsbExvY2sudG9rZW4gPSBudWxsOwogICAgICAgICAgICAg ICAgaWYgKHR5cGVvZiBzeW5jSG9va3MuZWRpdG9yU2NobGllc3NlbiA9PT0gJ2Z1bmN0aW9uJykg ewogICAgICAgICAgICAgICAgICAgIHN5bmNIb29rcy5lZGl0b3JTY2hsaWVzc2VuKHRydWUpOwog ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24o KSB7fSk7CiAgICB9LCAyMDAwMCk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBsb2NrSGVhcnRiZWF0U3Rv cHBlbigpIHsKICAgIGlmIChaLnplbGxMb2NrICYmIFouemVsbExvY2suaGJUaW1lcikgeyBjbGVh ckludGVydmFsKFouemVsbExvY2suaGJUaW1lcik7IFouemVsbExvY2suaGJUaW1lciA9IG51bGw7 IH0KfQoKLy8gPT09PT0gTG9jay1TdGF0ZSBpbSBHcmlkID09PT09CgpleHBvcnQgZnVuY3Rpb24g bG9ja0tleShkYXR1bSwgcGVyc29uSWQpIHsgcmV0dXJuIGRhdHVtICsgJ3wnICsgU3RyaW5nKHBl cnNvbklkKTsgfQoKLy8gTlctS2VubnVuZyBkZXMgTG9ja3MgLT4gS2xhcm5hbWUgKFZvcm5hbWUg TmFjaG5hbWUpIGF1cyBkZXIgUGVyc29uYWwtCi8vIHZlcndhbHR1bmcsIGVyc2F0endlaXNlIEZh Y2hhdWZzaWNodC9TdXBlclVzZXIsIHNvbnN0IGRpZSBLZW5udW5nIG9obmUKLy8gRG9tYWluLiBC ZXd1c3N0IEtFSU4gIltzdXBlcnVzZXJdIi9Sb2xsZW4tU3VmZml4IHVuZCBrZWluZSBEYXVlciDi gJQgZGVyCi8vIEhpbndlaXMgc29sbCBzY2hsaWNodCBibGVpYmVuLgpmdW5jdGlvbiBsb2NrUGVy c29uTmFtZShsb2NrKSB7CiAgICB2YXIgdSA9IChsb2NrICYmIGxvY2sudXNlcm5hbWUgfHwgJycp LnRvTG93ZXJDYXNlKCk7CiAgICBpZiAoIXUpIHJldHVybiAnZWluZXIgYW5kZXJlbiBQZXJzb24n OwogICAgdmFyIHVTaG9ydCA9IHUuaW5kZXhPZignXFwnKSA+PSAwID8gdS5zcGxpdCgnXFwnKS5w b3AoKSA6IHU7CiAgICBmdW5jdGlvbiBwYXNzdChrKSB7IGlmICghaykgcmV0dXJuIGZhbHNlOyBr ID0gU3RyaW5nKGspLnRvTG93ZXJDYXNlKCk7IHJldHVybiBrID09PSB1IHx8IGsgPT09IHVTaG9y dDsgfQogICAgdmFyIHBlcnNvbmVuID0gKFoucGxhbnVuZyAmJiBaLnBsYW51bmcucGVyc29uZW4p IHx8IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwZXJzb25lbi5sZW5ndGg7IGkrKykgewog ICAgICAgIGlmIChwYXNzdChwZXJzb25lbltpXS5ud0tlbm51bmcpKSB7CiAgICAgICAgICAgIHZh ciBuID0gKChwZXJzb25lbltpXS52b3JuYW1lID8gcGVyc29uZW5baV0udm9ybmFtZSArICcgJyA6 ICcnKSArIChwZXJzb25lbltpXS5uYW1lIHx8ICcnKSkudHJpbSgpOwogICAgICAgICAgICBpZiAo bikgcmV0dXJuIG47CiAgICAgICAgfQogICAgfQogICAgdmFyIGZhID0gKFouYWRtaW4gJiYgWi5h ZG1pbi5mYWNoYXVmc2ljaHQpIHx8IFtdOwogICAgZm9yICh2YXIgaiA9IDA7IGogPCBmYS5sZW5n dGg7IGorKykgeyBpZiAocGFzc3QoZmFbal0ubndLZW5udW5nKSAmJiBmYVtqXS5uYW1lKSByZXR1 cm4gZmFbal0ubmFtZTsgfQogICAgdmFyIHN1ID0gKFouYWRtaW4gJiYgWi5hZG1pbi5zdXBlclVz ZXIpIHx8IFtdOwogICAgZm9yICh2YXIgayA9IDA7IGsgPCBzdS5sZW5ndGg7IGsrKykgeyBpZiAo cGFzc3Qoc3Vba10ubndLZW5udW5nKSAmJiBzdVtrXS5uYW1lKSByZXR1cm4gc3Vba10ubmFtZTsg fQogICAgLy8gRmFsbGJhY2s6IEtlbm51bmcgb2huZSBEb21haW4gKHouQi4gTm90ZmFsbC1BY2Nv dW50IG9obmUgUGxhbi1QZXJzb24pLgogICAgcmV0dXJuIGxvY2sudXNlcm5hbWUuaW5kZXhPZign XFwnKSA+PSAwID8gbG9jay51c2VybmFtZS5zcGxpdCgnXFwnKS5wb3AoKSA6IGxvY2sudXNlcm5h bWU7Cn0KCmV4cG9ydCBmdW5jdGlvbiBsb2NrVG9vbHRpcFRleHQobG9jaykgewogICAgcmV0dXJu ICdEaWVzZSBaZWxsZSB3aXJkIGdlcmFkZSB2b24gJyArIGxvY2tQZXJzb25OYW1lKGxvY2spICsg JyBiZWFyYmVpdGV0IHVuZCBpc3QgZGVzaGFsYiBnZXNwZXJydC4nOwp9CgpleHBvcnQgZnVuY3Rp b24gZnJlbWRMb2NrU2V0emVuKGRhdHVtLCBwZXJzb25JZCwgbG9jaykgewogICAgdmFyIGtleSA9 IGxvY2tLZXkoZGF0dW0sIHBlcnNvbklkKTsKICAgIGlmIChsb2NrKSBaLmZyZW1kZUxvY2tzW2tl eV0gPSBsb2NrOwogICAgZWxzZSBkZWxldGUgWi5mcmVtZGVMb2Nrc1trZXldOwogICAgdmFyIHog PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZ3JpZC16ZWxsZVtkYXRhLWRhdHVtPSInICsgZGF0 dW0gKyAnIl1bZGF0YS1wZXJzb249IicgKyBTdHJpbmcocGVyc29uSWQpICsgJyJdJyk7CiAgICBp ZiAoIXopIHJldHVybjsKICAgIGlmIChsb2NrKSB7CiAgICAgICAgei5jbGFzc0xpc3QuYWRkKCdn cmlkLXplbGxlLWxvY2tlZCcpOwogICAgICAgIC8vIE9yaWdpbmFsZW4gWmVsbC1UaXRlbCBlaW5t YWxpZyBzaWNoZXJuICh6dW0gV2llZGVyaGVyc3RlbGxlbiBiZWltCiAgICAgICAgLy8gRW50c3Bl cnJlbikuIE5JQ0hUIG1laHIgYW4gZGVuIExvY2stSGlud2VpcyBhbmhhZW5nZW4g4oCUIHNvbnN0 IHN0YXBlbHRlCiAgICAgICAgLy8gc2ljaCBiZWkgamVkZW0gSGVhcnRiZWF0LVVwZGF0ZSBlaW4g d2VpdGVyZXIgIldpcmQgYmVhcmJlaXRldCDigKYiLVRleHQKICAgICAgICAvLyAoZGVyIGRvcHBl bHRlIFRvb2x0aXAgaW0gU2NyZWVuc2hvdCkuIERlciBIaW53ZWlzIGJsZWlidCBzY2hsaWNodC4K ICAgICAgICBpZiAoIXouZ2V0QXR0cmlidXRlKCdkYXRhLW9yaWctdGl0bGUnKSkgei5zZXRBdHRy aWJ1dGUoJ2RhdGEtb3JpZy10aXRsZScsIHoudGl0bGUgfHwgJycpOwogICAgICAgIHoudGl0bGUg PSBsb2NrVG9vbHRpcFRleHQobG9jayk7CiAgICB9IGVsc2UgewogICAgICAgIHouY2xhc3NMaXN0 LnJlbW92ZSgnZ3JpZC16ZWxsZS1sb2NrZWQnKTsKICAgICAgICB2YXIgc2F2ZWQgPSB6LmdldEF0 dHJpYnV0ZSgnZGF0YS1vcmlnLXRpdGxlJyk7CiAgICAgICAgaWYgKHNhdmVkICE9PSBudWxsKSB7 IHoudGl0bGUgPSBzYXZlZDsgei5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtb3JpZy10aXRsZScpOyB9 CiAgICB9Cn0KCmV4cG9ydCBmdW5jdGlvbiBsb2NrU3RhdGVBbndlbmRlbihuZXVlTG9ja3MpIHsK ICAgIC8vIG5ldWVMb2NrczogQXJyYXkgdm9uIExvY2stT2JqZWt0ZW4gdm9tIC9hcGkvbG9jay96 ZWxsZW4KICAgIHZhciBuZXVNYXAgPSB7fTsKICAgIHZhciBiZW51dHplckxvd2VyID0gKFouYmVu dXR6ZXIgfHwgJycpLnRvTG93ZXJDYXNlKCk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5ldWVM b2Nrcy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBMID0gbmV1ZUxvY2tzW2ldOwogICAgICAg IC8vIEVpZ2VuZSBMb2NrcyBOSUNIVCBhbHMgZnJlbWQgcmVuZGVybgogICAgICAgIHZhciBsVXNl ciA9IChMLnVzZXJuYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgICAgIGlmIChsVXNlciA9 PT0gYmVudXR6ZXJMb3dlcikgY29udGludWU7CiAgICAgICAgdmFyIGJlbnV0emVyT2huZURvbWFp biA9IGJlbnV0emVyTG93ZXIuaW5kZXhPZignXFwnKSA+PSAwID8gYmVudXR6ZXJMb3dlci5zcGxp dCgnXFwnKS5wb3AoKSA6IGJlbnV0emVyTG93ZXI7CiAgICAgICAgaWYgKGxVc2VyID09PSBiZW51 dHplck9obmVEb21haW4pIGNvbnRpbnVlOwogICAgICAgIG5ldU1hcFtsb2NrS2V5KEwuZGF0dW0s IEwucGVyc29uSWQpXSA9IEw7CiAgICB9CiAgICAvLyBEaWZmOiBhbHRlIExvY2tzLCBkaWUgamV0 enQgd2VnIHNpbmQgLT4gZW50ZmVybmVuCiAgICBPYmplY3Qua2V5cyhaLmZyZW1kZUxvY2tzKS5m b3JFYWNoKGZ1bmN0aW9uKGspIHsKICAgICAgICBpZiAoIW5ldU1hcFtrXSkgewogICAgICAgICAg ICB2YXIgcGFydHMgPSBrLnNwbGl0KCd8Jyk7CiAgICAgICAgICAgIGZyZW1kTG9ja1NldHplbihw YXJ0c1swXSwgcGFydHNbMV0sIG51bGwpOwogICAgICAgIH0KICAgIH0pOwogICAgLy8gTmV1ZSBM b2NrcyAob2RlciBnZWFlbmRlcnRlKSAtPiBzZXR6ZW4KICAgIE9iamVjdC5rZXlzKG5ldU1hcCku Zm9yRWFjaChmdW5jdGlvbihrKSB7CiAgICAgICAgdmFyIGFsdCA9IFouZnJlbWRlTG9ja3Nba107 CiAgICAgICAgdmFyIG5ldSA9IG5ldU1hcFtrXTsKICAgICAgICBpZiAoIWFsdCB8fCBhbHQubGFz dEJlYXQgIT09IG5ldS5sYXN0QmVhdCkgewogICAgICAgICAgICB2YXIgcGFydHMgPSBrLnNwbGl0 KCd8Jyk7CiAgICAgICAgICAgIGZyZW1kTG9ja1NldHplbihwYXJ0c1swXSwgcGFydHNbMV0sIG5l dSk7CiAgICAgICAgfQogICAgfSk7Cn0KCi8vID09PT09IENsZWFudXAgYmVpbSBUYWItQ2xvc2Ug KHNlbmRCZWFjb24tc3R5bGUgbWl0IGtlZXBhbGl2ZSkgPT09PT0KCmV4cG9ydCBmdW5jdGlvbiBh bGxlRWlnZW5lbkxvY2tzRnJlaWdlYmVuQmVhY29uKCkgewogICAgaWYgKFouemVsbExvY2sgJiYg Wi56ZWxsTG9jay50b2tlbikgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGZldGNoKCcvYXBp L2xvY2svemVsbGU/dG9rZW49JyArIGVuY29kZVVSSUNvbXBvbmVudChaLnplbGxMb2NrLnRva2Vu KSwgewogICAgICAgICAgICAgICAgbWV0aG9kOiAnREVMRVRFJywKICAgICAgICAgICAgICAgIGtl ZXBhbGl2ZTogdHJ1ZQogICAgICAgICAgICB9KTsKICAgICAgICB9IGNhdGNoIChlKSB7fQogICAg ICAgIFouemVsbExvY2sudG9rZW4gPSBudWxsOwogICAgfQp9Cg== ### FILE: js/ui_dialog.js | 39021 Ly8gPT09IHVpL2RpYWxvZy5qcyA9PT0KLy8gU3RhbmQ6IDIwMjYtMDUtMTQKLy8gVUktRmVlZGJh Y2stUHJpbWl0aXZlOiBUb2FzdCwgTW9kYWwsIEJlc3RhZXRpZ2VuLCBFbnR3dXJmcy1Mb2NhbFN0 b3JhZ2UsCi8vIERpcnR5LVRyYWNrZXIuIEJld3Vzc3RlIEtvbnNvbGlkaWVydW5nIGdlZ2VuIEZM RCAoZG9ydCBzZXBhcmF0ZSBNb2R1bGUKLy8gdG9hc3QvbW9kYWwpOiBpbiBWSTMgbnV0emVuIGFs bGUgZHJlaSBkZW4gZ2xlaWNoZW4gTW9kYWwtU3RhdGUgKFoubW9kYWwqKQovLyB1bmQgZGFzIHF1 ZXJzY2huaXR0bGljaGUgRElSVFktUmVnaXN0cnkgcGFzc3QgbmlyZ2VuZHMgYmVzc2VyIGhpbi4K Ly8KLy8gTW9kdWwtc3BlemlmaXNjaGUgSW5pdC1GdW5rdGlvbmVuICh6LkIuIGRpcnR5VHJhY2tl ckVpbnJpY2h0ZW4pIGJsZWliZW4KLy8gaW0gYXVmcnVmZW5kZW4gTW9kdWwgKGFwcC5qcyBiencu IGFkbWluL2FkbWluLmpzIGluIFBoYXNlIDgpIHVuZAovLyBpbXBvcnRpZXJlbiBkaXJ0eVJlZ2lz dHJpZXJlL2RpcnR5QWt0aXZlIHZvbiBoaWVyLgoKaW1wb3J0IHsgWiB9IGZyb20gJy4vY29yZV9z dGF0ZS5qcyc7CmltcG9ydCB7IGVzY2FwZUhUTUwgfSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7Cmlt cG9ydCB7IHNhbml0aXplUmljaEh0bWwgfSBmcm9tICcuL3VpX3J0ZS5qcyc7CgovLyA9PT09PSBM YWRlLU92ZXJsYXkgKFBha2V0LUMgUXVpY2stV2luLCAyMDI2LTA1LTI5KSA9PT09PQovLwovLyBV bml2ZXJzZWxsZXIgU3Bpbm5lci1PdmVybGF5IGZ1ZXIgQXN5bmMtT3BlcmF0aW9uZW4uIFdpcmQg cGVyCi8vIGxhZGVPdmVybGF5WmVpZ2VuKGNvbnRhaW5lciwgdGV4dCkgYW5nZXplaWd0IHVuZCBt aXQgbGFkZU92ZXJsYXlWZXJzdGVja2VuKCkKLy8gd2llZGVyIHdlZ2dlbm9tbWVuLiBWZXJoaW5k ZXJ0IGJsYW5rZSBTY3JlZW5zIGJlaSBsYW5nc2FtZW4gU2VydmVyLQovLyBBbnR3b3J0ZW4gYXVm IGRlbiBQb2xpemVpLVBDcy4KCmV4cG9ydCBmdW5jdGlvbiBsYWRlT3ZlcmxheVplaWdlbihjb250 YWluZXJPZGVySWQsIHRleHQpIHsKICAgIHZhciBjID0gdHlwZW9mIGNvbnRhaW5lck9kZXJJZCA9 PT0gJ3N0cmluZycgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250YWluZXJPZGVySWQpIDog Y29udGFpbmVyT2RlcklkOwogICAgaWYgKCFjKSByZXR1cm47CiAgICAvLyBQb3NpdGlvbjpyZWxh dGl2ZSBub2V0aWcsIGRhbWl0IGRhcyBhYnNvbHV0ZSBPdmVybGF5IGlubmVyaGFsYiBkZXMKICAg IC8vIENvbnRhaW5lcnMgYmxlaWJ0LiBOdXIgc2V0emVuIHdlbm4gbm9jaCBuaWNodCBwb3NpdGlv bmllcnQuCiAgICB0cnkgewogICAgICAgIHZhciBjcyA9ICh0eXBlb2YgZ2V0Q29tcHV0ZWRTdHls ZSA9PT0gJ2Z1bmN0aW9uJykgPyBnZXRDb21wdXRlZFN0eWxlKGMpIDogbnVsbDsKICAgICAgICBp ZiAoY3MgJiYgY3MucG9zaXRpb24gPT09ICdzdGF0aWMnKSBjLnN0eWxlLnBvc2l0aW9uID0gJ3Jl bGF0aXZlJzsKICAgIH0gY2F0Y2ggKF8pIHsgLyogaWdub3JlIGluIFRlc3QtTW9jayAqLyB9CiAg ICB2YXIgYWx0ID0gYy5xdWVyeVNlbGVjdG9yID8gYy5xdWVyeVNlbGVjdG9yKCcubGFkZS1vdmVy bGF5JykgOiBudWxsOwogICAgaWYgKGFsdCAmJiBhbHQucmVtb3ZlKSBhbHQucmVtb3ZlKCk7CiAg ICB2YXIgb3YgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIG92LmNsYXNzTmFt ZSA9ICdsYWRlLW92ZXJsYXknOwogICAgb3Yuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3N0YXR1cycp OwogICAgb3Yuc2V0QXR0cmlidXRlKCdhcmlhLWxpdmUnLCAncG9saXRlJyk7CiAgICBvdi5pbm5l ckhUTUwgPSAnPGRpdiBjbGFzcz0ibGFkZS1vdmVybGF5LXNwaW5uZXIiIGFyaWEtaGlkZGVuPSJ0 cnVlIj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJsYWRlLW92ZXJs YXktdGV4dCI+JyArIGVzY2FwZUhUTUwodGV4dCB8fCAnTMOkZHQg4oCmJykgKyAnPC9kaXY+JzsK ICAgIGMuYXBwZW5kQ2hpbGQob3YpOwp9CgpleHBvcnQgZnVuY3Rpb24gbGFkZU92ZXJsYXlWZXJz dGVja2VuKGNvbnRhaW5lck9kZXJJZCkgewogICAgdmFyIGMgPSB0eXBlb2YgY29udGFpbmVyT2Rl cklkID09PSAnc3RyaW5nJyA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lck9kZXJJ ZCkgOiBjb250YWluZXJPZGVySWQ7CiAgICBpZiAoIWMgfHwgIWMucXVlcnlTZWxlY3RvcikgcmV0 dXJuOwogICAgdmFyIG92ID0gYy5xdWVyeVNlbGVjdG9yKCcubGFkZS1vdmVybGF5Jyk7CiAgICBp ZiAob3YgJiYgb3YucmVtb3ZlKSBvdi5yZW1vdmUoKTsKfQoKLy8gPT09PT0gTGFlbmdlbi1Db3Vu dGVyIChRdWljay1XaW4gUGFrZXQtQiwgMjAyNi0wNS0yOSkgPT09PT0KLy8KLy8gWmVpZ3QgdW50 ZXIgZWluZW0gVGV4dGZlbGQgZWluZW4ga2xlaW5lbiBDb3VudGVyICI0Ny8yNTAiLCBkYW1pdCBk ZXIgVXNlcgovLyBzaWVodCB3aWUgdmllbGUgWmVpY2hlbiBub2NoIGZyZWkgc2luZC4gQXV0b21h dGlzY2ggdWViZXIgZGF0YS1BdHRyaWJ1dAovLyBha3RpdmllcnQ6IHNldHplIGVpbmZhY2ggYGRh dGEtbWF4bGVuZ3RoLWNvdW50ZXI9IjEiYCArIGBtYXhsZW5ndGg9Ik4iYCBhbQovLyBJbnB1dC9U ZXh0YXJlYS4gRGVyIENvdW50ZXIgd2lyZCBiZWltIG1vZGFsWmVpZ2VuKCkgaW5pdGlhbGlzaWVy dCB1bmQgYmVpCi8vIGplZGVtIGlucHV0L2NoYW5nZSBha3R1YWxpc2llcnQgKERlbGVnYXRpb24g YXVmIGRvY3VtZW50KS4KCmZ1bmN0aW9uIF9sYWVuZ2VDb3VudGVyVXBkYXRlKGVsKSB7CiAgICBp ZiAoIWVsIHx8ICFlbC5wYXJlbnROb2RlKSByZXR1cm47CiAgICB2YXIgbWF4ID0gcGFyc2VJbnQo ZWwuZ2V0QXR0cmlidXRlKCdtYXhsZW5ndGgnKSwgMTApOwogICAgaWYgKCFtYXgpIHJldHVybjsK ICAgIHZhciBjb3VudGVyID0gZWwubmV4dEVsZW1lbnRTaWJsaW5nOwogICAgaWYgKCFjb3VudGVy IHx8ICFjb3VudGVyLmNsYXNzTGlzdCB8fCAhY291bnRlci5jbGFzc0xpc3QuY29udGFpbnMoJ2xh ZW5nZS1jb3VudGVyJykpIHsKICAgICAgICBjb3VudGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgnc3BhbicpOwogICAgICAgIGNvdW50ZXIuY2xhc3NOYW1lID0gJ2xhZW5nZS1jb3VudGVyJzsK ICAgICAgICBlbC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjb3VudGVyLCBlbC5uZXh0U2libGlu Zyk7CiAgICB9CiAgICB2YXIgbGVuID0gKGVsLnZhbHVlIHx8ICcnKS5sZW5ndGg7CiAgICBjb3Vu dGVyLnRleHRDb250ZW50ID0gbGVuICsgJyAvICcgKyBtYXg7CiAgICAvLyBXYXJuZmFyYmUgYWIg OTAlIEF1c2xhc3R1bmcsIEZlaGxlcmZhcmJlIGJlaSB2b2xsLgogICAgY291bnRlci5jbGFzc0xp c3QudG9nZ2xlKCdsYWVuZ2UtY291bnRlci13YXJuJywgbGVuID49IG1heCAqIDAuOSAmJiBsZW4g PCBtYXgpOwogICAgY291bnRlci5jbGFzc0xpc3QudG9nZ2xlKCdsYWVuZ2UtY291bnRlci12b2xs JywgbGVuID49IG1heCk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBsYWVuZ2VDb3VudGVySW1Db250YWlu ZXJJbml0aWFsaXNpZXJlbihjb250YWluZXIpIHsKICAgIGlmICghY29udGFpbmVyIHx8ICFjb250 YWluZXIucXVlcnlTZWxlY3RvckFsbCkgcmV0dXJuOwogICAgdmFyIGlucHV0cyA9IGNvbnRhaW5l ci5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1tYXhsZW5ndGgtY291bnRlcl0nKTsKICAgIGZvciAo dmFyIGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgaSsrKSBfbGFlbmdlQ291bnRlclVwZGF0ZShp bnB1dHNbaV0pOwp9CgppZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBl b2YgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykgewogICAgZG9jdW1l bnQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIGVs ID0gZS50YXJnZXQ7CiAgICAgICAgaWYgKCFlbCB8fCAhZWwuZ2V0QXR0cmlidXRlKSByZXR1cm47 CiAgICAgICAgaWYgKCFlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbWF4bGVuZ3RoLWNvdW50ZXInKSkg cmV0dXJuOwogICAgICAgIF9sYWVuZ2VDb3VudGVyVXBkYXRlKGVsKTsKICAgIH0pOwp9CgovLyA9 PT09PSBQZmxpY2h0ZmVsZC1WYWxpZGllcnVuZyAoVVgtQXVkaXQgU3ByaW50IDMuNCwgMjAyNi0w NS0yOSkgPT09PT0KLy8KLy8gSGVscGVyIGZ1ZXIgY2xpZW50c2VpdGlnZSBQZmxpY2h0ZmVsZC1W YWxpZGllcnVuZyBWT1IgZGVtIEFQSS1DYWxsLgovLyBNYXJraWVydCBkYXMgZmVobGVuZGUgRmVs ZCByb3QsIHNjcm9sbHQgZXMgaW5zIEJpbGQsIGZva3Vzc2llcnQgZXMgKwovLyB6ZWlndCBlaW5l biBXYXJuLVRvYXN0LiBCZWltIG5hZWNoc3RlbiBpbnB1dC9jaGFuZ2UgdmVyc2Nod2luZGV0IGRp ZQovLyByb3RlIE1hcmtpZXJ1bmcgd2llZGVyLCBkYW1pdCBkZXIgVXNlciBtZXJrdDogIkVpbmdh YmUgd3VyZGUKLy8gcmVnaXN0cmllcnQsIGpldHp0IG5vY2htYWwgU3BlaWNoZXJuIHByb2JpZXJl bi4iCmV4cG9ydCBmdW5jdGlvbiBwZmxpY2h0ZmVsZEZlaGxlcihlbGVtZW50T2RlcklkLCBtZWxk dW5nKSB7CiAgICB2YXIgZiA9IHR5cGVvZiBlbGVtZW50T2RlcklkID09PSAnc3RyaW5nJyA/IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRPZGVySWQpIDogZWxlbWVudE9kZXJJZDsKICAg IGlmIChmKSB7CiAgICAgICAgZi5jbGFzc0xpc3QuYWRkKCdmZWxkLWZlaGxlcicpOwogICAgICAg IHRyeSB7IGYuZm9jdXMoKTsgfSBjYXRjaCAoZSkge30KICAgICAgICB0cnkgeyBmLnNjcm9sbElu dG9WaWV3KHsgYmxvY2s6ICdjZW50ZXInLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7IH0gY2F0Y2gg KGUpIHt9CiAgICAgICAgdmFyIGNsZWFyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGYuY2xh c3NMaXN0LnJlbW92ZSgnZmVsZC1mZWhsZXInKTsKICAgICAgICAgICAgZi5yZW1vdmVFdmVudExp c3RlbmVyKCdpbnB1dCcsIGNsZWFyKTsKICAgICAgICAgICAgZi5yZW1vdmVFdmVudExpc3RlbmVy KCdjaGFuZ2UnLCBjbGVhcik7CiAgICAgICAgfTsKICAgICAgICBmLmFkZEV2ZW50TGlzdGVuZXIo J2lucHV0JywgY2xlYXIpOwogICAgICAgIGYuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgY2xl YXIpOwogICAgfQogICAgdG9hc3QobWVsZHVuZyB8fCAnUGZsaWNodGZlbGQgZmVobHQnLCAnd2Fy bnVuZycpOwp9CgovLyA9PT09PSBIaWxmZS1JY29uIChVWC1BdWRpdCBTcHJpbnQgMi4yLCAyMDI2 LTA1LTI5KSA9PT09PQovLwovLyBIZWxwZXIgZnVlciBJbmxpbmUtSGlsZmV0ZXh0ZTogZXJ6ZXVn dCBlaW5lbiBrbGVpbmVuIHJ1bmRlbiDik5gtQnV0dG9uIG1pdAovLyBgZGF0YS1oaWxmZWAtQXR0 cmlidXQuIEdsb2JhbGVyIENsaWNrLUxpc3RlbmVyICh3ZWl0ZXIgdW50ZW4pIGZhZW5ndCBkYXMK Ly8gdW5kIHplaWd0IGRlbiBUZXh0IGFscyBJbmZvLVRvYXN0ICg4cyBzaWNodGJhcikuIERhbWl0 IGxhbmRlbiBIaWxmZS1UZXh0ZQovLyAqKmFuIGRlciBTdGVsbGUgd28gc2llIGdlYnJhdWNodCB3 ZXJkZW4qKiwgbmljaHQgbnVyIGltIHplbnRyYWxlbiBJbmZvLU1vZGFsLgovLwovLyBOdXR6dW5n OiBgJzxsYWJlbD5EYXRlaTwvbGFiZWw+JyArIGhpbGZlSWNvbignRXJ3YXJ0ZXQgZGllIEV4Y2Vs LVZvcmxhZ2Ug4oCmJylgCmV4cG9ydCBmdW5jdGlvbiBoaWxmZUljb24odGV4dCkgewogICAgaWYg KCF0ZXh0KSByZXR1cm4gJyc7CiAgICB2YXIgdCA9IFN0cmluZyh0ZXh0KTsKICAgIHJldHVybiAn PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJoaWxmZS1pY29uIiBhcmlhLWxhYmVsPSJIaWxm ZSBhbnplaWdlbiInICsKICAgICAgICAgICAnIHRpdGxlPSInICsgdC5yZXBsYWNlKC8iL2csICcm cXVvdDsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpICsgJyIn ICsKICAgICAgICAgICAnIGRhdGEtaGlsZmU9IicgKyB0LnJlcGxhY2UoLyYvZywgJyZhbXA7Jyku cmVwbGFjZSgvIi9nLCAnJnF1b3Q7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4v ZywgJyZndDsnKSArICciPj88L2J1dHRvbj4nOwp9CgovLyBHbG9iYWxlciBMaXN0ZW5lciDigJQg ZWlubWFsIGJpbmRlbi4gZG9jdW1lbnQgZXhpc3RpZXJ0IG51ciBpbSBCcm93c2VyCi8vIChUZXN0 LVNldHVwIG1vY2t0IG51ciBlaW4gTWluaW1hbC1kb2N1bWVudCBvaG5lIGFkZEV2ZW50TGlzdGVu ZXIpLCBkYWhlcgovLyBkZWZlbnNpdmUgUHJ1ZWZ1bmcuCmlmICh0eXBlb2YgZG9jdW1lbnQgIT09 ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyID09PSAnZnVu Y3Rpb24nKSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9u KGUpIHsKICAgICAgICB2YXIgYnRuID0gZS50YXJnZXQgJiYgZS50YXJnZXQuY2xvc2VzdCAmJiBl LnRhcmdldC5jbG9zZXN0KCcuaGlsZmUtaWNvbicpOwogICAgICAgIGlmICghYnRuKSByZXR1cm47 CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIHZhciB0ID0gYnRuLmdldEF0dHJp YnV0ZSgnZGF0YS1oaWxmZScpOwogICAgICAgIGlmICh0KSB0b2FzdCh0LCAnaW5mbycsIHsgZGF1 ZXI6IDgwMDAgfSk7CiAgICB9KTsKfQoKLy8gPT09PT0gVG9hc3QgPT09PT0KCmV4cG9ydCBmdW5j dGlvbiB0b2FzdCh0ZXh0LCB0eXAsIG9wdCkgewogICAgb3B0ID0gb3B0IHx8IHt9OwogICAgdmFy IGMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9hc3QtY29udGFpbmVyJyk7CiAgICB2YXIg ZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGVsLmNsYXNzTmFtZSA9ICd0 b2FzdCB0b2FzdC0nICsgKHR5cCB8fCAnaW5mbycpOwogICAgZWwudGV4dENvbnRlbnQgPSB0ZXh0 OwogICAgaWYgKHR5cGVvZiBvcHQub25DbGljayA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIGVs LnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJzsKICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdj bGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0cnkgeyBvcHQub25DbGljaygpOyB9IGNh dGNoIChlKSB7fQogICAgICAgICAgICBlbC5yZW1vdmUoKTsKICAgICAgICB9KTsKICAgIH0KICAg IGMuYXBwZW5kQ2hpbGQoZWwpOwogICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgZWwucmVtb3Zl KCk7IH0sIG9wdC5kYXVlciB8fCA0MDAwKTsKfQoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBh MTF5IOKAlCBGb2N1cy1UcmFwICsgRVNDLUhhbmRsZXIgKFNwcmludCA2YSAyMDI2LTA1LTI5LCBG aW5kaW5nIDIyKQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIFBybyBPdmVybGF5LUNvbnRhaW5l ciBlaW4gZWlnZW5lciBIYW5kbGVyLiBmb2t1c1RyYXBBa3RpdmllcmVuIGZhZW5ndAovLyBUYWIv U2hpZnQrVGFiICsgRXNjYXBlLiBMSUZPOiBkYXMgenVsZXR6dCBnZW9lZmZuZXRlIE92ZXJsYXkg c2NobGllc3N0Ci8vIGF1ZiBFc2NhcGUgKFN0YWNrIHZpYSBfYWt0aXZlT3ZlcmxheXMpLiBCZWlt IFNjaGxpZXNzZW4gd2lyZCBkZXIgdm9yaGVyCi8vIGZva3Vzc2llcnRlIEtub3RlbiB3aWVkZXJo ZXJnZXN0ZWxsdCAoWi5tb2RhbEZvY3VzUmV0dXJuKS4KCnZhciBGT0tVU1NJRVJCQVJfU0VMRUtU T1IgPSAnYVtocmVmXSwgYnV0dG9uOm5vdChbZGlzYWJsZWRdKSwgdGV4dGFyZWE6bm90KFtkaXNh YmxlZF0pLCBpbnB1dDpub3QoW2Rpc2FibGVkXSk6bm90KFt0eXBlPSJoaWRkZW4iXSksIHNlbGVj dDpub3QoW2Rpc2FibGVkXSksIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD0iLTEiXSknOwoKdmFy IF9ha3RpdmVPdmVybGF5cyA9IFtdOyAgICAgICAgICAgLy8gTElGTy1TdGFjawp2YXIgX292ZXJs YXlIYW5kbGVyID0gbmV3IFdlYWtNYXAoKTsgLy8gb3ZlcmxheSAtPiBoYW5kbGVyLUZ1bmt0aW9u IGZ1ZXIga2V5ZG93bgoKZnVuY3Rpb24gZm9rdXNzaWVyYmFyU2FtbWVsbihjb250YWluZXIpIHsK ICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjb250YWluZXIucXVlcnlTZWxl Y3RvckFsbChGT0tVU1NJRVJCQVJfU0VMRUtUT1IpKQogICAgICAgIC5maWx0ZXIoZnVuY3Rpb24o ZWwpIHsgcmV0dXJuIGVsLm9mZnNldFBhcmVudCAhPT0gbnVsbDsgfSk7ICAvLyBzaWNodGJhcgp9 CgpmdW5jdGlvbiBmb2t1c1RyYXBBa3RpdmllcmVuKG92ZXJsYXkpIHsKICAgIGlmICghb3Zlcmxh eSkgcmV0dXJuOwogICAgLy8gRG9wcGVsYWt0aXZpZXJ1bmc6IHZvcmhlciBkZWFrdGl2aWVyZW4s IGRhbm4gbmV1ICh6LkIuIHdlbm4gZGFzc2VsYmUKICAgIC8vIG92ZXJsYXkgbmV1IGJlZnVlbGx0 IHd1cmRlKS4KICAgIGZva3VzVHJhcERlYWt0aXZpZXJlbihvdmVybGF5KTsKICAgIHZhciBoYW5k bGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHsKICAg ICAgICAgICAgLy8gTnVyIGRhcyBvYmVyc3RlIE92ZXJsYXkgc2NobGllc3N0IHNpY2gg4oCUIElu bmVyLU1vZGFsLUVybGVibmlzCiAgICAgICAgICAgIC8vIG1pdCBDb25maXJtLU92ZXJsYXkgZnVu a3Rpb25pZXJ0IHdlaXRlciAoTElGTykuCiAgICAgICAgICAgIGlmIChfYWt0aXZlT3ZlcmxheXNb X2FrdGl2ZU92ZXJsYXlzLmxlbmd0aCAtIDFdICE9PSBvdmVybGF5KSByZXR1cm47CiAgICAgICAg ICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgaWYgKG92ZXJsYXkuaWQgPT09ICdj b25maXJtLW92ZXJsYXknKSB7CiAgICAgICAgICAgICAgICBvdmVybGF5LmNsYXNzTGlzdC5hZGQo J3ZlcnN0ZWNrdCcpOwogICAgICAgICAgICAgICAgb3ZlcmxheS5zZXRBdHRyaWJ1dGUoJ2FyaWEt aGlkZGVuJywgJ3RydWUnKTsKICAgICAgICAgICAgICAgIGZva3VzVHJhcERlYWt0aXZpZXJlbihv dmVybGF5KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG1vZGFsU2NobGll c3NlbigpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAg ICAgaWYgKGUua2V5ICE9PSAnVGFiJykgcmV0dXJuOwogICAgICAgIHZhciBsaXN0ZSA9IGZva3Vz c2llcmJhclNhbW1lbG4ob3ZlcmxheSk7CiAgICAgICAgaWYgKGxpc3RlLmxlbmd0aCA9PT0gMCkg eyBlLnByZXZlbnREZWZhdWx0KCk7IHJldHVybjsgfQogICAgICAgIHZhciBlcnN0ZXIgPSBsaXN0 ZVswXSwgbGV0enRlciA9IGxpc3RlW2xpc3RlLmxlbmd0aCAtIDFdOwogICAgICAgIGlmIChlLnNo aWZ0S2V5ICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGVyc3RlcikgewogICAgICAgICAg ICBlLnByZXZlbnREZWZhdWx0KCk7IGxldHp0ZXIuZm9jdXMoKTsKICAgICAgICB9IGVsc2UgaWYg KCFlLnNoaWZ0S2V5ICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxldHp0ZXIpIHsKICAg ICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOyBlcnN0ZXIuZm9jdXMoKTsKICAgICAgICB9CiAg ICB9OwogICAgb3ZlcmxheS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlcik7CiAg ICBfb3ZlcmxheUhhbmRsZXIuc2V0KG92ZXJsYXksIGhhbmRsZXIpOwogICAgX2FrdGl2ZU92ZXJs YXlzLnB1c2gob3ZlcmxheSk7CiAgICAvLyBJbml0aWFsZW4gRm9rdXMgc2V0emVuOiBlcnN0ZXIg Zm9rdXNzaWVyYmFyZXIgS25vdGVuIChuaWNodCBkZXIKICAgIC8vIFNjaGxpZXNzLVgtQnV0dG9u IOKAlCBkZXIgaXN0IG5vcm1hbGVyd2Vpc2UgbGV0enRlciBUYWItU3RvcCkuCiAgICBzZXRUaW1l b3V0KGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBsaXN0ZSA9IGZva3Vzc2llcmJhclNhbW1lbG4o b3ZlcmxheSk7CiAgICAgICAgdmFyIHppZWwgPSBsaXN0ZS5maW5kKGZ1bmN0aW9uKGVsKSB7IHJl dHVybiAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdtb2RhbC1zY2hsaWVzc2VuJyk7IH0pIHx8IGxp c3RlWzBdOwogICAgICAgIGlmICh6aWVsKSB0cnkgeyB6aWVsLmZvY3VzKCk7IH0gY2F0Y2ggKGUp IHt9CiAgICB9LCAzMCk7Cn0KCmZ1bmN0aW9uIGZva3VzVHJhcERlYWt0aXZpZXJlbihvdmVybGF5 KSB7CiAgICBpZiAoIW92ZXJsYXkpIHJldHVybjsKICAgIHZhciBoYW5kbGVyID0gX292ZXJsYXlI YW5kbGVyLmdldChvdmVybGF5KTsKICAgIGlmIChoYW5kbGVyKSB7CiAgICAgICAgb3ZlcmxheS5y ZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlcik7CiAgICAgICAgX292ZXJsYXlI YW5kbGVyLmRlbGV0ZShvdmVybGF5KTsKICAgIH0KICAgIHZhciBpZHggPSBfYWt0aXZlT3Zlcmxh eXMuaW5kZXhPZihvdmVybGF5KTsKICAgIGlmIChpZHggPj0gMCkgX2FrdGl2ZU92ZXJsYXlzLnNw bGljZShpZHgsIDEpOwp9CgovLyBFeHBvcnRpZXJlbiBmdWVyIGJlc3RhZXRpZ2VuKCkg4oCUIGRl ciBudXR6dCBlaW4gYW5kZXJlcyBPdmVybGF5LgpleHBvcnQgeyBmb2t1c1RyYXBBa3RpdmllcmVu LCBmb2t1c1RyYXBEZWFrdGl2aWVyZW4gfTsKCi8vID09PT09IEJlc3RhZXRpZ2VuIChBc3luYy1D b25maXJtLVJlcGxhY2VtZW50KSA9PT09PQoKLy8gRXJzYXR6IGZ1ZXIgd2luZG93LmNvbmZpcm0o KSDigJQgYXN5bmNocm9uLCBub24tYmxvY2tpbmcsIGVpZ2VuZXMgTW9kYWwuCi8vIE51dHp1bmc6 Ci8vICAgYmVzdGFldGlnZW4oJ1RleHQnLCBmdW5jdGlvbigpIHsgd2VpdGVyTWFjaGVuKCk7IH0p OwovLyAgIGJlc3RhZXRpZ2VuKCdUZXh0JywgY2IsICdUaXRlbCcpOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIFRpdGVsLUt1cnpmb3JtCi8vICAgYmVzdGFldGlnZW4oJ1RleHQnLCBj YiwgeyB0aXRlbCwgamFUZXh0LCBqYURhbmdlciB9KTsgICAgICAgICAgLy8gT3B0aW9uZW4tRm9y bQovLyAgIGphRGFuZ2VyOiB0cnVlICAtPiByb3RlciBCZXN0YWV0aWd1bmdzLUJ1dHRvbiwgRGVm YXVsdC1qYVRleHQgIkzDtnNjaGVuIgovLwovLyBTcHJpbnQgNSDigJQgTW9kYWwtU3RhY2sgKDIw MjYtMDUtMjksIEZpbmRpbmcgMTcpOiBudXR6dCBlaW5lbiBERURJWklFUlRFTgovLyBDb25maXJt LU92ZXJsYXktQ29udGFpbmVyICgjY29uZmlybS1vdmVybGF5KSwgbmljaHQgZGFzIEhhdXB0LU1v ZGFsLgovLyBEYW1pdCBrYW5uIGJlc3RhZXRpZ2VuKCkgaW5uZXJoYWxiIGVpbmVzIGdlb2VmZm5l dGVuIEhhdXB0bW9kYWxzICh6LkIuCi8vIFBlcnNvbi1FZGl0KSBzaWNoZXIgYWxzIHp3ZWl0ZSBT dGFjay1FYmVuZSBhdWZ0YXVjaGVuLCBvaG5lIGRlbgovLyBIaW50ZXJncnVuZC1EaWFsb2cgenUg emVyc3RvZXJlbi4gRnJ1ZWhlcjogbW9kYWxaZWlnZW4oKS1BdWZydWYKLy8gdWViZXJzY2hyaWVi IGRhcyBTaW5nbGV0b24tTW9kYWwg4oCUIGJlaSAiQWJicmVjaGVuIiB3YXIgZGVyIEVkaXQtU3Rh bmQgd2VnLgpleHBvcnQgZnVuY3Rpb24gYmVzdGFldGlnZW4odGV4dCwgb25KYSwgb3B0KSB7CiAg ICB2YXIgdGl0ZWwgPSBudWxsLCBqYVRleHQgPSAnQmVzdMOkdGlnZW4nLCBqYURhbmdlciA9IGZh bHNlOwogICAgaWYgKHR5cGVvZiBvcHQgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgdGl0ZWwgPSBv cHQ7CiAgICB9IGVsc2UgaWYgKG9wdCkgewogICAgICAgIHRpdGVsID0gb3B0LnRpdGVsIHx8IG51 bGw7CiAgICAgICAgamFEYW5nZXIgPSAhIW9wdC5qYURhbmdlcjsKICAgICAgICBqYVRleHQgPSBv cHQuamFUZXh0IHx8IChqYURhbmdlciA/ICdMw7ZzY2hlbicgOiAnQmVzdMOkdGlnZW4nKTsKICAg IH0KICAgIHZhciBvdmVybGF5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbmZpcm0tb3Zl cmxheScpOwogICAgaWYgKCFvdmVybGF5KSB7CiAgICAgICAgLy8gRmFsbGJhY2sgZnVlciBUZXN0 LS9FZGdlLUZhZWxsZSBvaG5lIGRlbiBkZWRpemllcnRlbiBDb250YWluZXI6CiAgICAgICAgLy8g YWx0ZSBTaW5nbGV0b24tVmFyaWFudGUgdmlhIG1vZGFsWmVpZ2VuLgogICAgICAgIHZhciBrb2Vy cGVyRmIgPSAnPGRpdiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlLWxpbmU7bGluZS1oZWlnaHQ6MS41 O3BhZGRpbmc6OHB4IDAiPicgKyBlc2NhcGVIVE1MKHRleHQpICsgJzwvZGl2Pic7CiAgICAgICAg dmFyIGphQ2xzRmIgPSAnYnRuICcgKyAoamFEYW5nZXIgPyAnYnRuLWdlZmFocicgOiAnYnRuLXBy aW1hZXInKTsKICAgICAgICB2YXIgZnVzc0ZiID0gJzxidXR0b24gY2xhc3M9ImJ0biIgaWQ9ImJl c3QtbmVpbiIgdHlwZT0iYnV0dG9uIj5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAgICAg ICAgICAgICAgJzxidXR0b24gY2xhc3M9IicgKyBqYUNsc0ZiICsgJyIgaWQ9ImJlc3QtamEiIHR5 cGU9ImJ1dHRvbiI+JyArIGVzY2FwZUhUTUwoamFUZXh0KSArICc8L2J1dHRvbj4nOwogICAgICAg IG1vZGFsWmVpZ2VuKHRpdGVsIHx8ICdCZXN0w6R0aWd1bmcnLCBrb2VycGVyRmIsIGZ1c3NGYiwg bnVsbCwgbnVsbCwgeyByZWluZXJEaWFsb2c6IHRydWUgfSk7CiAgICAgICAgZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2Jlc3QtamEnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9u KCkgewogICAgICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICAgICAgICAgIGlmICh0 eXBlb2Ygb25KYSA9PT0gJ2Z1bmN0aW9uJykgb25KYSgpOwogICAgICAgIH0pOwogICAgICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZXN0LW5laW4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGlj aycsIGZ1bmN0aW9uKCkgeyBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7IH0pOwogICAgICAgIHJldHVy bjsKICAgIH0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25maXJtLXRpdGVsJykudGV4 dENvbnRlbnQgPSB0aXRlbCB8fCAnQmVzdMOkdGlndW5nJzsKICAgIGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdjb25maXJtLWtvZXJwZXInKS5pbm5lckhUTUwgPQogICAgICAgICc8ZGl2IHN0eWxl PSJ3aGl0ZS1zcGFjZTpwcmUtbGluZTtsaW5lLWhlaWdodDoxLjU7cGFkZGluZzo4cHggMCI+JyAr IGVzY2FwZUhUTUwodGV4dCkgKyAnPC9kaXY+JzsKICAgIHZhciBqYUNscyA9ICdidG4gJyArIChq YURhbmdlciA/ICdidG4tZ2VmYWhyJyA6ICdidG4tcHJpbWFlcicpOwogICAgZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2NvbmZpcm0tZnVzcycpLmlubmVySFRNTCA9CiAgICAgICAgJzxidXR0b24g Y2xhc3M9ImJ0biIgaWQ9ImJlc3QtbmVpbiIgdHlwZT0iYnV0dG9uIj5BYmJyZWNoZW48L2J1dHRv bj4nICsKICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iJyArIGphQ2xzICsgJyIgaWQ9ImJlc3QtamEi IHR5cGU9ImJ1dHRvbiI+JyArIGVzY2FwZUhUTUwoamFUZXh0KSArICc8L2J1dHRvbj4nOwogICAg b3ZlcmxheS5jbGFzc0xpc3QucmVtb3ZlKCd2ZXJzdGVja3QnKTsKICAgIG92ZXJsYXkuc2V0QXR0 cmlidXRlKCdhcmlhLWhpZGRlbicsICdmYWxzZScpOwoKICAgIC8vIFZvcmlnZW4gRm9rdXMgbWVy a2VuIChrYW5uIGRlciBUcmlnZ2VyIGltIEhhdXB0bW9kYWwgc2VpbiksIGRhbmFjaAogICAgLy8g d2llZGVyaGVyc3RlbGxlbi4gV2VubiBkYXMgQ29uZmlybS1PdmVybGF5IElOTkVSSEFMQiBlaW5l cyBhbmRlcmVuCiAgICAvLyBNb2RhbHMgZXJzY2hlaW50LCBpc3QgYWN0aXZlRWxlbWVudCBlaW4g QnV0dG9uIGltIEhhdXB0bW9kYWwg4oCUIGRlcgogICAgLy8gYmVrb21tdCBuYWNoIENvbmZpcm0t U2NobGllc3NlbiBkZW4gRm9rdXMgenVydWVjay4KICAgIHZhciBmb2t1c1JldHVybiA9IGRvY3Vt ZW50LmFjdGl2ZUVsZW1lbnQ7CiAgICBmdW5jdGlvbiBzY2hsaWVzc2VuKCkgewogICAgICAgIG92 ZXJsYXkuY2xhc3NMaXN0LmFkZCgndmVyc3RlY2t0Jyk7CiAgICAgICAgb3ZlcmxheS5zZXRBdHRy aWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTsKICAgICAgICBmb2t1c1RyYXBEZWFrdGl2aWVy ZW4ob3ZlcmxheSk7CiAgICAgICAgaWYgKGZva3VzUmV0dXJuICYmIHR5cGVvZiBmb2t1c1JldHVy bi5mb2N1cyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICB0cnkgeyBmb2t1c1JldHVybi5m b2N1cygpOyB9IGNhdGNoIChlKSB7fQogICAgICAgIH0KICAgIH0KICAgIGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdiZXN0LWphJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigp IHsKICAgICAgICBzY2hsaWVzc2VuKCk7CiAgICAgICAgaWYgKHR5cGVvZiBvbkphID09PSAnZnVu Y3Rpb24nKSBvbkphKCk7CiAgICB9KTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZXN0 LW5laW4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHNjaGxpZXNzZW4pOwogICAgdmFyIHNj aGxpZXNzQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbmZpcm0tc2NobGllc3Nlbi1i dG4nKTsKICAgIGlmIChzY2hsaWVzc0J0bikgc2NobGllc3NCdG4ub25jbGljayA9IHNjaGxpZXNz ZW47CiAgICAvLyBCYWNrZHJvcC1LbGljayAoYXVmIGRhcyBPdmVybGF5IHNlbGJzdCwgbmljaHQg ZGVuIEluaGFsdCkgc2NobGllc3N0IGF1Y2guCiAgICBvdmVybGF5Lm9uY2xpY2sgPSBmdW5jdGlv bihlKSB7IGlmIChlLnRhcmdldCA9PT0gb3ZlcmxheSkgc2NobGllc3NlbigpOyB9OwogICAgLy8g YTExeTogRm9jdXMtVHJhcCArIEVTQy4gRVNDIHNjaGxpZXNzdCBudXIgZGllc2VzIE92ZXJsYXkg KExJRk8gaW0KICAgIC8vIFN0YWNrKSwgSGF1cHRtb2RhbCBibGVpYnQgdW5hbmdldGFzdGV0Lgog ICAgZm9rdXNUcmFwQWt0aXZpZXJlbihvdmVybGF5KTsKfQoKLy8gPT09PT0gRW50d3VyZnMtTG9j YWxTdG9yYWdlIChTcGVjIEYuNCkgPT09PT0KLy8gU3BlaWNoZXJ1bmcgaW4gbG9jYWxTdG9yYWdl ICd2aTMubW9kYWxFbnR3dWVyZmUnIGFscyBNYXAKLy8geyA8bW9kYWxLZXk+OiB7IHRzLCB0aXRl bCwgZGF0ZW4gfSB9LCB3b2JlaSBkYXRlbiA9IHs8ZWxlbWVudElkPjogPHdlcnQ+fS4KLy8gQXV0 by1Mb2VzY2ggbmFjaCAxNCBUYWdlbiDigJQgQ2xlYW51cCBsYWV1ZnQgYmVpbSBBcHAtSW5pdC4K CmV4cG9ydCB2YXIgRU5UV1VSRl9UVExfVEFHRSA9IDE0OwpleHBvcnQgdmFyIEVOVFdVUkZfTFNf S0VZID0gJ3ZpMy5tb2RhbEVudHd1ZXJmZSc7CgpmdW5jdGlvbiBlbnR3dWVyZmVMYWRlbigpIHsK ICAgIHRyeSB7IHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKEVOVFdVUkZf TFNfS0VZKSB8fCAne30nKSB8fCB7fTsgfQogICAgY2F0Y2ggKGUpIHsgcmV0dXJuIHt9OyB9Cn0K ZnVuY3Rpb24gZW50d3VlcmZlU3BlaWNoZXJuKG1hcCkgewogICAgdHJ5IHsgbG9jYWxTdG9yYWdl LnNldEl0ZW0oRU5UV1VSRl9MU19LRVksIEpTT04uc3RyaW5naWZ5KG1hcCkpOyB9IGNhdGNoIChl KSB7fQp9CmV4cG9ydCBmdW5jdGlvbiBlbnR3dXJmRnVlcihtb2RhbEtleSkgewogICAgaWYgKCFt b2RhbEtleSkgcmV0dXJuIG51bGw7CiAgICB2YXIgbWFwID0gZW50d3VlcmZlTGFkZW4oKTsKICAg IHJldHVybiBtYXBbbW9kYWxLZXldIHx8IG51bGw7Cn0KZXhwb3J0IGZ1bmN0aW9uIGVudHd1cmZT cGVpY2hlcm4obW9kYWxLZXksIHRpdGVsLCBkYXRlbikgewogICAgaWYgKCFtb2RhbEtleSkgcmV0 dXJuOwogICAgdmFyIG1hcCA9IGVudHd1ZXJmZUxhZGVuKCk7CiAgICBtYXBbbW9kYWxLZXldID0g eyB0czogRGF0ZS5ub3coKSwgdGl0ZWw6IHRpdGVsIHx8ICcnLCBkYXRlbjogZGF0ZW4gfHwge30g fTsKICAgIGVudHd1ZXJmZVNwZWljaGVybihtYXApOwp9CmV4cG9ydCBmdW5jdGlvbiBlbnR3dXJm TG9lc2NoZW4obW9kYWxLZXkpIHsKICAgIGlmICghbW9kYWxLZXkpIHJldHVybjsKICAgIHZhciBt YXAgPSBlbnR3dWVyZmVMYWRlbigpOwogICAgaWYgKG1vZGFsS2V5IGluIG1hcCkgeyBkZWxldGUg bWFwW21vZGFsS2V5XTsgZW50d3VlcmZlU3BlaWNoZXJuKG1hcCk7IH0KfQpleHBvcnQgZnVuY3Rp b24gZW50d3VyZkF1dG9DbGVhbnVwKCkgewogICAgdmFyIG1hcCA9IGVudHd1ZXJmZUxhZGVuKCk7 CiAgICB2YXIgbnVuID0gRGF0ZS5ub3coKTsKICAgIHZhciBtYXggPSBFTlRXVVJGX1RUTF9UQUdF ICogODY0MDAwMDA7CiAgICB2YXIgZ2VhZW5kZXJ0ID0gZmFsc2U7CiAgICBPYmplY3Qua2V5cyht YXApLmZvckVhY2goZnVuY3Rpb24oaykgewogICAgICAgIGlmICghbWFwW2tdIHx8ICFtYXBba10u dHMgfHwgKG51biAtIG1hcFtrXS50cykgPiBtYXgpIHsKICAgICAgICAgICAgZGVsZXRlIG1hcFtr XTsgZ2VhZW5kZXJ0ID0gdHJ1ZTsKICAgICAgICB9CiAgICB9KTsKICAgIGlmIChnZWFlbmRlcnQp IGVudHd1ZXJmZVNwZWljaGVybihtYXApOwp9CgovLyA9PT09PSBUYWItRHJhZnQtTG9jYWxTdG9y YWdlIChQaGFzZSA5IOKAlCBBdXRvLVNhdmUgZnVlciBBZG1pbi1UYWJzKSA9PT09PQovLwovLyBF aWdlbmVyIE5hbWVzcGFjZSAndmkzLnRhYkRyYWZ0cycgKGdldHJlbm50IHZvbiB2aTMubW9kYWxF bnR3dWVyZmUpLCBkYW1pdAovLyBNb2RhbC0gdW5kIFRhYi1EcmFmdHMgc2ljaCBuaWNodCB1ZWJl cnNjaG5laWRlbi4gU2VsYmVyIFRUTCAoMTQgVGFnZSksCi8vIHNlbGJlIENsZWFudXAtTG9naWsu IEZvcm1hdCBwcm8gRWludHJhZzoKLy8gICB7IHRzLCBiYXNpc1RzLCBkYXRlbiB9Ci8vIC0gdHM6 ICAgICAgWmVpdHN0ZW1wZWwgZGVzIGxldHp0ZW4gQXV0by1TYXZlCi8vIC0gYmFzaXNUczogU2Vy dmVyLURhdGVuc3RhbmQtVFMgYmVpbSBCZWdpbm4gZGVyIEVkaXRpZXJ1bmcgKG5pY2h0IGFrdHVl bGwKLy8gICBnZW51dHp0IGZ1ZXIgS29uZmxpa3Rlcmtlbm51bmcsIGFiZXIgUGxhdHpoYWx0ZXIg ZnVlciBzcGFldGVyKQovLyAtIGRhdGVuOiAgIFRhYi1zcGV6aWZpc2NoZXIgU25hcHNob3QgKHBl ciBzbmFwc2hvdEZuIHByb2R1emllcnQpCmV4cG9ydCB2YXIgVEFCX0RSQUZUX0xTX0tFWSA9ICd2 aTMudGFiRHJhZnRzJzsKCmZ1bmN0aW9uIHRhYkRyYWZ0c0xhZGVuKCkgewogICAgdHJ5IHsgcmV0 dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oVEFCX0RSQUZUX0xTX0tFWSkgfHwg J3t9JykgfHwge307IH0KICAgIGNhdGNoIChlKSB7IHJldHVybiB7fTsgfQp9CmZ1bmN0aW9uIHRh YkRyYWZ0c1NwZWljaGVybihtYXApIHsKICAgIHRyeSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKFRB Ql9EUkFGVF9MU19LRVksIEpTT04uc3RyaW5naWZ5KG1hcCkpOyB9CiAgICBjYXRjaCAoZSkgeyAv KiBRdW90YSB2b2xsPyBBdXRvLVNhdmUgc2NoZWl0ZXJ0IHN0dW1tIOKAlCBTZXJ2ZXItU2F2ZSBi bGVpYnQgZGVyIHp1dmVybGFlc3NpZ2UgV2VnLiAqLyB9Cn0KZXhwb3J0IGZ1bmN0aW9uIHRhYkRy YWZ0RnVlcih0YWJLZXkpIHsKICAgIGlmICghdGFiS2V5KSByZXR1cm4gbnVsbDsKICAgIHJldHVy biB0YWJEcmFmdHNMYWRlbigpW3RhYktleV0gfHwgbnVsbDsKfQpleHBvcnQgZnVuY3Rpb24gdGFi RHJhZnRTcGVpY2hlcm4odGFiS2V5LCBkYXRlbiwgYmFzaXNUcykgewogICAgaWYgKCF0YWJLZXkp IHJldHVybjsKICAgIHZhciBtYXAgPSB0YWJEcmFmdHNMYWRlbigpOwogICAgbWFwW3RhYktleV0g PSB7IHRzOiBEYXRlLm5vdygpLCBiYXNpc1RzOiBiYXNpc1RzIHx8IDAsIGRhdGVuOiBkYXRlbiA9 PSBudWxsID8gbnVsbCA6IGRhdGVuIH07CiAgICB0YWJEcmFmdHNTcGVpY2hlcm4obWFwKTsKfQpl eHBvcnQgZnVuY3Rpb24gdGFiRHJhZnRMb2VzY2hlbih0YWJLZXkpIHsKICAgIGlmICghdGFiS2V5 KSByZXR1cm47CiAgICB2YXIgbWFwID0gdGFiRHJhZnRzTGFkZW4oKTsKICAgIGlmICh0YWJLZXkg aW4gbWFwKSB7IGRlbGV0ZSBtYXBbdGFiS2V5XTsgdGFiRHJhZnRzU3BlaWNoZXJuKG1hcCk7IH0K fQpleHBvcnQgZnVuY3Rpb24gdGFiRHJhZnRBdXRvQ2xlYW51cCgpIHsKICAgIHZhciBtYXAgPSB0 YWJEcmFmdHNMYWRlbigpOwogICAgdmFyIG51biA9IERhdGUubm93KCk7CiAgICB2YXIgbWF4ID0g RU5UV1VSRl9UVExfVEFHRSAqIDg2NDAwMDAwOwogICAgdmFyIGdlYWVuZGVydCA9IGZhbHNlOwog ICAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHsKICAgICAgICBpZiAoIW1h cFtrXSB8fCAhbWFwW2tdLnRzIHx8IChudW4gLSBtYXBba10udHMpID4gbWF4KSB7CiAgICAgICAg ICAgIGRlbGV0ZSBtYXBba107IGdlYWVuZGVydCA9IHRydWU7CiAgICAgICAgfQogICAgfSk7CiAg ICBpZiAoZ2VhZW5kZXJ0KSB0YWJEcmFmdHNTcGVpY2hlcm4obWFwKTsKfQoKLy8gPT09PT0gTW9k YWwtRm9ybS1EYXRlbiBsZXNlbi9zY2hyZWliZW4gPT09PT0KCi8vIExpZXN0IGFsbGUgRm9ybS1G ZWxkZXIgaW0gYWt0dWVsbGVuIE1vZGFsIGFscyB7aWQ6IHdlcnR9LU9iamVrdC4KLy8gR2VudXR6 dCBmdWVyIEVudHd1cmYtU2F2ZSB1bmQgRW50d3VyZi1SZXN0b3JlLiBSVEUtRmVsZGVyCi8vIChj b250ZW50ZWRpdGFibGU9dHJ1ZSkgd2VyZGVuIHZpYSBpbm5lckhUTUwgbWl0IE1hcmtlci1QcmFl Zml4IGVyZmFzc3QsCi8vIGRhbWl0IHNpZSBiZWltIFJlc3RvcmUga29ycmVrdCBhbHMgSFRNTCBz dGF0dCBQbGFpbiByZWluZ2VzZXR6dCB3ZXJkZW4uCmV4cG9ydCBmdW5jdGlvbiBtb2RhbEZvcm1E YXRlbkxlc2VuKCkgewogICAgdmFyIGtvZXJwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn bW9kYWwta29lcnBlcicpOwogICAgaWYgKCFrb2VycGVyKSByZXR1cm4ge307CiAgICB2YXIgZGF0 ZW4gPSB7fTsKICAgIGtvZXJwZXIucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQsIHRleHRhcmVhLCBz ZWxlY3QnKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgaWYgKCFlbC5pZCkgcmV0dXJu OwogICAgICAgIGlmIChlbC50eXBlID09PSAnY2hlY2tib3gnIHx8IGVsLnR5cGUgPT09ICdyYWRp bycpIGRhdGVuW2VsLmlkXSA9ICEhZWwuY2hlY2tlZDsKICAgICAgICBlbHNlIGRhdGVuW2VsLmlk XSA9IGVsLnZhbHVlOwogICAgfSk7CiAgICBrb2VycGVyLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tjb250 ZW50ZWRpdGFibGU9InRydWUiXScpLmZvckVhY2goZnVuY3Rpb24oZWwpIHsKICAgICAgICBpZiAo IWVsLmlkKSByZXR1cm47CiAgICAgICAgZGF0ZW5bZWwuaWRdID0gJ19faHRtbF9fJyArIGVsLmlu bmVySFRNTDsKICAgIH0pOwogICAgcmV0dXJuIGRhdGVuOwp9CgpleHBvcnQgZnVuY3Rpb24gbW9k YWxGb3JtRGF0ZW5TY2hyZWliZW4oZGF0ZW4pIHsKICAgIGlmICghZGF0ZW4pIHJldHVybjsKICAg IE9iamVjdC5rZXlzKGRhdGVuKS5mb3JFYWNoKGZ1bmN0aW9uKGlkKSB7CiAgICAgICAgdmFyIGVs ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgICAgIGlmICghZWwpIHJldHVybjsK ICAgICAgICB2YXIgd2VydCA9IGRhdGVuW2lkXTsKICAgICAgICAvLyBIVE1MLVdlcnRlIChFbnR3 dXJmLVJlc3RvcmUgYXVzIGxvY2FsU3RvcmFnZSwgY29udGVudGVkaXRhYmxlLVJURXMpOgogICAg ICAgIC8vIHN0cmlrdCBkdXJjaCBkaWUgQWxsb3dsaXN0LVNhbml0aXplci1Qb2xpY3kuIFNvbnN0 IGtvZW5udGUgZWluCiAgICAgICAgLy8gcHJhZXBhcmllcnRlciBQZXJzaXN0ZWQtSFRNTC1XZXJ0 ICh6LkIuIHZpYSBkaXJla3RlbSBhZG1pbi5qc29uLUVkaXQpCiAgICAgICAgLy8gYmVpbSBSZXN0 b3JlIGFrdGl2ZW4gU2NyaXB0LUNvZGUgaW5qaXppZXJlbi4KICAgICAgICBpZiAodHlwZW9mIHdl cnQgPT09ICdzdHJpbmcnICYmIHdlcnQuaW5kZXhPZignX19odG1sX18nKSA9PT0gMCkgewogICAg ICAgICAgICBlbC5pbm5lckhUTUwgPSBzYW5pdGl6ZVJpY2hIdG1sKHdlcnQuc2xpY2UoOCkpOwog ICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmIChlbC50eXBlID09PSAnY2hl Y2tib3gnIHx8IGVsLnR5cGUgPT09ICdyYWRpbycpIGVsLmNoZWNrZWQgPSAhIXdlcnQ7CiAgICAg ICAgZWxzZSBpZiAoZWwudGFnTmFtZSA9PT0gJ0lOUFVUJyB8fCBlbC50YWdOYW1lID09PSAnVEVY VEFSRUEnIHx8IGVsLnRhZ05hbWUgPT09ICdTRUxFQ1QnKSBlbC52YWx1ZSA9IHdlcnQ7CiAgICAg ICAgZWxzZSBlbC5pbm5lckhUTUwgPSBzYW5pdGl6ZVJpY2hIdG1sKHR5cGVvZiB3ZXJ0ID09PSAn c3RyaW5nJyA/IHdlcnQgOiAnJyk7CiAgICB9KTsKfQoKLy8gPT09PT0gTW9kYWwtU3lzdGVtID09 PT09CgpleHBvcnQgZnVuY3Rpb24gbW9kYWxEaXJ0eVRyYWNraW5nQWt0aXZpZXJlbigpIHsKICAg IHZhciBrb2VycGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLWtvZXJwZXInKTsK ICAgIGlmICgha29lcnBlcikgcmV0dXJuOwogICAgZnVuY3Rpb24gbWFya0RpcnR5KCkgeyBaLm1v ZGFsRGlydHkgPSB0cnVlOyB9CiAgICB2YXIgaW5wdXRzID0ga29lcnBlci5xdWVyeVNlbGVjdG9y QWxsKCdpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgW2NvbnRlbnRlZGl0YWJsZT0idHJ1ZSJdJyk7 CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlucHV0cy5sZW5ndGg7IGkrKykgewogICAgICAgIGlu cHV0c1tpXS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIG1hcmtEaXJ0eSk7CiAgICAgICAgaW5w dXRzW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIG1hcmtEaXJ0eSk7CiAgICB9Cn0KCmV4 cG9ydCBmdW5jdGlvbiBtb2RhbFNwZWljaGVyQnV0dG9uQmluZGVuKCkgewogICAgaWYgKCFaLm1v ZGFsT25TcGVpY2hlcm4pIHJldHVybjsKICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnZGxnLXNwZWljaGVybicpOwogICAgaWYgKCFidG4pIHJldHVybjsKICAgIGJ0bi5hZGRF dmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgIC8vIFJlLUVudHJ5LVNj aHV0eiAoQXVkaXQtUGhhc2UgQS4yLCAyMDI2LTA1LTIxKTogd2VubiBkZXIgVXNlcgogICAgICAg IC8vIG1laHJmYWNoIHNjaG5lbGwgaGludGVyZWluYW5kZXIga2xpY2t0L0VudGVydGlwcHQsIHNv bGwgZGVyIFNhdmUtCiAgICAgICAgLy8gQ2FsbGJhY2sgbnVyIGVpbiBNYWwgbGF1ZmVuLiBEaXJ0 eS1GbGFnIHdpcmQgYXVjaCBnbGVpY2ggenVydWVjay0KICAgICAgICAvLyBnZXNldHp0LCBkYW1p dCBlaW4gbmFjaGZvbGdlbmRlcyBtb2RhbFNjaGxpZXNzZW4oKSBpbSBDYWxsYmFjawogICAgICAg IC8vIG9obmUgQ29uZmlybSBkdXJjaGdlaHQuCiAgICAgICAgaWYgKGJ0bi5kaXNhYmxlZCkgcmV0 dXJuOwogICAgICAgIGJ0bi5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgWi5tb2RhbERpcnR5ID0g ZmFsc2U7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgWi5tb2RhbE9uU3BlaWNoZXJuKCk7CiAg ICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgLy8gRmFsbHMgZGFzIE1vZGFsIG5vY2ggb2Zm ZW4gaXN0IChWYWxpZGllcnVuZyBzY2hsdWcgZmVobCwKICAgICAgICAgICAgLy8gdG9hc3Qgc3Rh dHQgY2xvc2UpLCB3aWVkZXIgZnJlaWdlYmVuIOKAlCBzb25zdCBibGVpYnQgZGVyCiAgICAgICAg ICAgIC8vIEJ1dHRvbiBkYXVlcmhhZnQgaW5ha3RpdiB1bmQgZGVyIFVzZXIgc2l0enQgZmVzdC4K ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBz dGlsbE9wZW4gPSAhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLW92ZXJsYXknKS5jbGFz c0xpc3QuY29udGFpbnMoJ3ZlcnN0ZWNrdCcpOwogICAgICAgICAgICAgICAgdmFyIHNhbWVCdG4g PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLXNwZWljaGVybicpOwogICAgICAgICAgICAg ICAgaWYgKHN0aWxsT3BlbiAmJiBzYW1lQnRuID09PSBidG4pIGJ0bi5kaXNhYmxlZCA9IGZhbHNl OwogICAgICAgICAgICB9LCAwKTsKICAgICAgICB9CiAgICB9KTsKfQoKLy8gbW9kYWxaZWlnZW4o dGl0ZWwsIGtvZXJwZXJIdG1sLCBmdXNzSHRtbCwgb25TcGVpY2hlcm4sIG1vZGFsS2V5Pywgb3B0 PykKLy8gbW9kYWxLZXkgaXN0IG9wdGlvbmFsIOKAlCB3ZW5uIGdlc2V0enQsIHdpcmQgZGVyIEVu dHd1cmYtTWVjaGFuaXNtdXMKLy8gKFNwZWMgRi40KSBha3RpdmllcnQ6IFJlc3RvcmUtQmFubmVy IGJlaW0gT3BlbiwgIkFscyBFbnR3dXJmIi1PcHRpb24KLy8gYmVpbSBWZXJ3ZXJmZW4tRGlhbG9n LiBFbXBmb2hsZW4gZnVlciBhbGxlIE1vZGFscyBtaXQgbmljaHQtdHJpdmlhbGVuCi8vIEVpbmdh YmVuIChFLU1haWwtVm9ybGFnZW4sIFBlcnNvbi1FZGl0LCBTb25kZXJ0ZXJtaW4sIGV0Yy4pLgov LyBvcHQucmVpbmVyRGlhbG9nPXRydWUgdWViZXJzcHJpbmd0IERpcnR5LVRyYWNraW5nICsgU3Bl aWNoZXItQnV0dG9uLQovLyBCaW5kaW5nIOKAlCBmdWVyIENvbmZpcm0tL0luZm8tTW9kYWxzIG9o bmUgRm9ybS1JbnB1dHMgKEJlc3RhZXRpZ2VuLAovLyBWZXJhbnR3b3J0dW5ncy1VZWJlcmdhbmcp LiBTcGFydCBRdWVyeXMgdW5kIExpc3RlbmVyLUJpbmRpbmdzIGF1ZiBkZW4KLy8gbGFuZ3NhbWVu IEJlaG9lcmRlbi1QQ3MuCmV4cG9ydCBmdW5jdGlvbiBtb2RhbFplaWdlbih0aXRlbCwga29lcnBl ckh0bWwsIGZ1c3NIdG1sLCBvblNwZWljaGVybiwgbW9kYWxLZXksIG9wdCkgewogICAgb3B0ID0g b3B0IHx8IHt9OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLXRpdGVsJykudGV4 dENvbnRlbnQgPSB0aXRlbDsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1rb2Vy cGVyJykuaW5uZXJIVE1MID0ga29lcnBlckh0bWw7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgnbW9kYWwtZnVzcycpLmlubmVySFRNTCA9IGZ1c3NIdG1sOwogICAgdmFyIG92ZXJsYXkgPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtb3ZlcmxheScpOwogICAgb3ZlcmxheS5jbGFz c0xpc3QucmVtb3ZlKCd2ZXJzdGVja3QnKTsKICAgIG92ZXJsYXkuc2V0QXR0cmlidXRlKCdhcmlh LWhpZGRlbicsICdmYWxzZScpOwoKICAgIFoubW9kYWxEaXJ0eSA9IGZhbHNlOwogICAgWi5tb2Rh bE9uU3BlaWNoZXJuID0gb25TcGVpY2hlcm4gfHwgbnVsbDsKICAgIFoubW9kYWxTcGVpY2hlckZ1 c3NIdG1sID0gZnVzc0h0bWwgfHwgJyc7CiAgICBaLm1vZGFsS2V5ID0gbW9kYWxLZXkgfHwgbnVs bDsKICAgIC8vIEF1dG8tU2F2ZSAoUGFrZXQtQywgMjAyNi0wNS0yOSk6IHdlbm4gb3B0LmF1dG9T YXZlIGdlc2V0enQgaXN0LCBydWZ0CiAgICAvLyBtb2RhbFNjaGxpZXNzZW4oKSBiZWkgZGlydHkg YXV0b21hdGlzY2ggb25TcGVpY2hlcm4oKSBzdGF0dCBkZW4KICAgIC8vICJWZXJ3ZXJmZW4/IFNw ZWljaGVybj8iLURpYWxvZyB6dSB6ZWlnZW4uIFVzZXItUHJhZWZlcmVuejogd2VuaWdlcgogICAg Ly8gS2xpY2tzLCBFaW5nYWJlbiBnZWhlbiBuaWNodCBhdXMgVmVyc2VoZW4gdmVybG9yZW4uCiAg ICBaLm1vZGFsQXV0b1NhdmUgPSAhIW9wdC5hdXRvU2F2ZTsKCiAgICBpZiAoIW9wdC5yZWluZXJE aWFsb2cpIHsKICAgICAgICBtb2RhbFNwZWljaGVyQnV0dG9uQmluZGVuKCk7CiAgICAgICAgbW9k YWxEaXJ0eVRyYWNraW5nQWt0aXZpZXJlbigpOwogICAgfQoKICAgIC8vIExhZW5nZW4tQ291bnRl ciBmdWVyIEZlbGRlciBtaXQgZGF0YS1tYXhsZW5ndGgtY291bnRlciBpbml0aWFsaXNpZXJlbi4K ICAgIGxhZW5nZUNvdW50ZXJJbUNvbnRhaW5lckluaXRpYWxpc2llcmVuKGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdtb2RhbC1rb2VycGVyJykpOwoKICAgIC8vIEVudHd1cmYtUmVzdG9yZS1CYW5u ZXIgZmFsbHMgdm9yaGFuZGVuCiAgICBpZiAobW9kYWxLZXkpIHsKICAgICAgICB2YXIgZW50d3Vy ZiA9IGVudHd1cmZGdWVyKG1vZGFsS2V5KTsKICAgICAgICBpZiAoZW50d3VyZikgbW9kYWxFbnR3 dXJmQmFubmVyWmVpZ2VuKGVudHd1cmYpOwogICAgfQoKICAgIC8vIGExMXkgKFNwcmludCA2YSAy MDI2LTA1LTI5KTogRm9jdXMtVHJhcCBha3RpdmllcmVuICsgZXJzdGVuIEZva3VzCiAgICAvLyBp biBkYXMgTW9kYWwgc2V0emVuLiBWb3JoZXIgYWt0aXZlciBGb2t1cyB3aXJkIGluIFoubW9kYWxG b2N1c1JldHVybgogICAgLy8gZ2VtZXJrdCwgZGFtaXQgbW9kYWxTY2hsaWVzc2VuKCkgaWhuIHJl c3RhdXJpZXJ0LgogICAgWi5tb2RhbEZvY3VzUmV0dXJuID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVu dDsKICAgIGZva3VzVHJhcEFrdGl2aWVyZW4ob3ZlcmxheSk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBt b2RhbFNjaGxpZXNzZW4oZm9yY2UpIHsKICAgIGlmICghZm9yY2UgJiYgWi5tb2RhbERpcnR5KSB7 CiAgICAgICAgLy8gQXV0by1TYXZlLU1vZHVzIChQYWtldC1DLCAyMDI2LTA1LTI5KTogd2VubiBk ZXIgQXVmcnVmZXIKICAgICAgICAvLyB7YXV0b1NhdmU6dHJ1ZX0gZ2VzZXR6dCB1bmQgZWluZW4g U3BlaWNoZXItSGFuZGxlciByZWdpc3RyaWVydAogICAgICAgIC8vIGhhdCwgc3BlaWNoZXJuIHdp ciBkaXJla3QuIERlciBIYW5kbGVyIHNjaGxpZXNzdCBkYXMgTW9kYWwKICAgICAgICAvLyBzZWxi c3QgYmVpIEVyZm9sZyAob2RlciB6ZWlndCBWYWxpZGllcnVuZ3MtVG9hc3QgdW5kIGxhZXNzdCBl cwogICAgICAgIC8vIG9mZmVuKS4gQmVpIE1pc3NlcmZvbGcgc2llaHQgZGVyIFVzZXIgZGllIFBm bGljaHRmZWxkLUhlcnZvci0KICAgICAgICAvLyBoZWJ1bmcgdW5kIGthbm4gbmFjaGJlc3Nlcm4u CiAgICAgICAgaWYgKFoubW9kYWxBdXRvU2F2ZSAmJiB0eXBlb2YgWi5tb2RhbE9uU3BlaWNoZXJu ID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgIHRyeSB7IFoubW9kYWxPblNwZWljaGVybigp OyB9IGNhdGNoIChfKSB7fQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIG1v ZGFsRGlydHlCZXN0YWV0aWd1bmdaZWlnZW4oKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBa Lm1vZGFsRGlydHkgPSBmYWxzZTsKICAgIFoubW9kYWxPblNwZWljaGVybiA9IG51bGw7CiAgICBa Lm1vZGFsU3BlaWNoZXJGdXNzSHRtbCA9IG51bGw7CiAgICBaLm1vZGFsS2V5ID0gbnVsbDsKICAg IFoubW9kYWxPbkRpc2NhcmQgPSBudWxsOwogICAgWi5tb2RhbEF1dG9TYXZlID0gZmFsc2U7CiAg ICB2YXIgb3ZlcmxheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1vdmVybGF5Jyk7 CiAgICBvdmVybGF5LmNsYXNzTGlzdC5hZGQoJ3ZlcnN0ZWNrdCcpOwogICAgb3ZlcmxheS5zZXRB dHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTsKICAgIC8vIGRhdGEtbm8tY2xvc2UgKHNp ZWhlIGFwcC5qcyBCYWNrZHJvcC1IYW5kbGVyKSB6dXJ1ZWNrc2V0emVuLCBzb25zdAogICAgLy8g d3VlcmRlIGRhcyBuYWVjaHN0ZSBNb2RhbCBkZW4gU2NodXR6IGVyYmVuLgogICAgb3ZlcmxheS5y ZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtbm8tY2xvc2UnKTsKICAgIC8vIE1vZGFsLVNwZXppYWwtR3Jv ZXNzZW5rbGFzc2Ugd2llZGVyIGVudGZlcm5lbiwgZGFtaXQgZGFzIG5hZWNoc3RlCiAgICAvLyBN b2RhbCB3aWVkZXIgU3RhbmRhcmQtNjIwcHggaGF0CiAgICB2YXIgaW5oYWx0ID0gZG9jdW1lbnQu cXVlcnlTZWxlY3RvcignI21vZGFsLW92ZXJsYXkgLm1vZGFsLWluaGFsdCcpOwogICAgaWYgKGlu aGFsdCkgaW5oYWx0LmNsYXNzTGlzdC5yZW1vdmUoJ21vZGFsLWluaGFsdC1ncm9zcycpOwoKICAg IC8vIGExMXkgKFNwcmludCA2YSAyMDI2LTA1LTI5KTogRm9jdXMtVHJhcCBhdXMsIEZva3VzIHp1 cnVlY2suCiAgICBmb2t1c1RyYXBEZWFrdGl2aWVyZW4ob3ZlcmxheSk7CiAgICBpZiAoWi5tb2Rh bEZvY3VzUmV0dXJuICYmIHR5cGVvZiBaLm1vZGFsRm9jdXNSZXR1cm4uZm9jdXMgPT09ICdmdW5j dGlvbicpIHsKICAgICAgICB0cnkgeyBaLm1vZGFsRm9jdXNSZXR1cm4uZm9jdXMoKTsgfSBjYXRj aCAoZSkge30KICAgIH0KICAgIFoubW9kYWxGb2N1c1JldHVybiA9IG51bGw7Cn0KCmV4cG9ydCBm dW5jdGlvbiBtb2RhbERpcnR5QmVzdGFldGlndW5nWmVpZ2VuKCkgewogICAgdmFyIGZ1c3MgPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtZnVzcycpOwogICAgaWYgKCFmdXNzKSByZXR1 cm47CiAgICBpZiAoZnVzcy5xdWVyeVNlbGVjdG9yKCcuZGlydHktd2Fybi16ZWlsZScpKSByZXR1 cm47IC8vIGJlcmVpdHMgYWt0aXYKICAgIC8vIEVudHd1cmYtQnV0dG9uIG51ciB3ZW5uIGRlciBB dWZydWZlciBlaW5lbiBtb2RhbEtleSBnZXNldHp0IGhhdAogICAgdmFyIGVudHd1cmZCdG4gPSBa Lm1vZGFsS2V5CiAgICAgICAgPyAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsiIGlkPSJkaXJ0 eS1lbnR3dXJmIiB0eXBlPSJidXR0b24iIHRpdGxlPSJFaW5nYWJlbiBhbHMgRW50d3VyZiB6d2lz Y2hlbnNwZWljaGVybiAobWF4ICcgKyBFTlRXVVJGX1RUTF9UQUdFICsgJyBUYWdlKSI+QWxzIEVu dHd1cmY8L2J1dHRvbj4nCiAgICAgICAgOiAnJzsKICAgIC8vIFNwZWljaGVybi1CdXR0b24gbnVy IHdlbm4gZGVyIE1vZGFsLUNhbGxlciBlaW5lbiBvblNwZWljaGVybi1IYW5kbGVyCiAgICAvLyBy ZWdpc3RyaWVydCBoYXQuIFNwYXJ0IGRlbSBVc2VyIGRlbiBVbXdlZyB1ZWJlciAiV2VpdGVyIGJl YXJiZWl0ZW4iCiAgICAvLyArIEtsaWNrIGF1ZiBkZW4gZWlnZW50bGljaGVuIFNwZWljaGVybi1C dXR0b24gaW0gTW9kYWwtRm9vdGVyLgogICAgdmFyIHNwZWljaGVybkJ0biA9ICh0eXBlb2YgWi5t b2RhbE9uU3BlaWNoZXJuID09PSAnZnVuY3Rpb24nKQogICAgICAgID8gJzxidXR0b24gY2xhc3M9 ImJ0biBidG4tcHJpbWFlciIgaWQ9ImRpcnR5LXNwZWljaGVybiIgdHlwZT0iYnV0dG9uIj5TcGVp Y2hlcm48L2J1dHRvbj4nCiAgICAgICAgOiAnJzsKICAgIGZ1c3MuaW5uZXJIVE1MID0KICAgICAg ICAnPGRpdiBjbGFzcz0iZGlydHktd2Fybi16ZWlsZSIgc3R5bGU9Im1hcmdpbi1yaWdodDphdXRv O2NvbG9yOnZhcigtLWZhcmJlLXdhcm51bmcpO2ZvbnQtd2VpZ2h0OjYwMDtkaXNwbGF5OmZsZXg7 YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHgiPicgKwogICAgICAgICAgICAnPHNwYW4+VW5nZXNw ZWljaGVydGUgw4RuZGVydW5nZW48L3NwYW4+JyArCiAgICAgICAgJzwvZGl2PicgKwogICAgICAg ICc8YnV0dG9uIGNsYXNzPSJidG4iIGlkPSJkaXJ0eS16dXJ1ZWNrIiB0eXBlPSJidXR0b24iPldl aXRlciBiZWFyYmVpdGVuPC9idXR0b24+JyArCiAgICAgICAgZW50d3VyZkJ0biArCiAgICAgICAg JzxidXR0b24gY2xhc3M9ImJ0biBidG4tZ2VmYWhyIiBpZD0iZGlydHktdmVyd2VyZmVuIiB0eXBl PSJidXR0b24iPlZlcndlcmZlbjwvYnV0dG9uPicgKwogICAgICAgIHNwZWljaGVybkJ0bjsKICAg IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXJ0eS16dXJ1ZWNrJykuYWRkRXZlbnRMaXN0ZW5l cignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICBmdXNzLmlubmVySFRNTCA9IFoubW9kYWxT cGVpY2hlckZ1c3NIdG1sIHx8ICcnOwogICAgICAgIG1vZGFsU3BlaWNoZXJCdXR0b25CaW5kZW4o KTsKICAgIH0pOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpcnR5LXZlcndlcmZlbicp LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gV2VubiBl aW4gRW50d3VyZiBnZXNwZWljaGVydCB3YXI6IG5pY2h0IGF1dG9tYXRpc2NoIGxvZXNjaGVuLAog ICAgICAgIC8vIGRhbWl0IGRlciBVc2VyIGlobiBiZWltIG5hZWNoc3RlbiBPZWZmbmVuIHdpZWRl ciBmaW5kZXQg4oCUCiAgICAgICAgLy8gYWJlciBkZXIgYWt0dWVsbGUgVmVyd2VyZmVuLUtsaWNr IHNjaGxpZXNzdCB0cm90emRlbS4KICAgICAgICAvLyBadXNhZXR6bGljaDogTW9kdWwtc3Blemlm aXNjaGVyIERpc2NhcmQtSG9vayBmdWVyIFJvbGxiYWNrLUxvZ2lrCiAgICAgICAgLy8gKEV4Y2Vs LUltcG9ydC1NYXBwaW5nIHJvbGx0IGltcFN0YXRlIGF1ZiBTbmFwc2hvdCB6dXJ1ZWNrKS4KICAg ICAgICBpZiAodHlwZW9mIFoubW9kYWxPbkRpc2NhcmQgPT09ICdmdW5jdGlvbicpIHsKICAgICAg ICAgICAgdHJ5IHsgWi5tb2RhbE9uRGlzY2FyZCgpOyB9IGNhdGNoIChlKSB7fQogICAgICAgIH0K ICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICB9KTsKICAgIHZhciBlbnR3dXJmRWwg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlydHktZW50d3VyZicpOwogICAgaWYgKGVudHd1 cmZFbCkgZW50d3VyZkVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAg ICAgICAgdmFyIHRpdGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLXRpdGVsJykg PyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtdGl0ZWwnKS50ZXh0Q29udGVudCA6ICcn OwogICAgICAgIGVudHd1cmZTcGVpY2hlcm4oWi5tb2RhbEtleSwgdGl0ZWwsIG1vZGFsRm9ybURh dGVuTGVzZW4oKSk7CiAgICAgICAgdG9hc3QoJ0FscyBFbnR3dXJmIGdlc3BlaWNoZXJ0ICgnICsg RU5UV1VSRl9UVExfVEFHRSArICcgVGFnZSBoYWx0YmFyKScsICdlcmZvbGcnKTsKICAgICAgICBt b2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICB9KTsKICAgIHZhciBzcGVpY2hlcm5FbCA9IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdkaXJ0eS1zcGVpY2hlcm4nKTsKICAgIGlmIChzcGVpY2hlcm5F bCkgc3BlaWNoZXJuRWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAg ICAgICAvLyBSZS1FbnRyeS1TY2h1dHogKEF1ZGl0LVBoYXNlIEEuMiwgMjAyNi0wNS0yMSkuCiAg ICAgICAgaWYgKHNwZWljaGVybkVsLmRpc2FibGVkKSByZXR1cm47CiAgICAgICAgc3BlaWNoZXJu RWwuZGlzYWJsZWQgPSB0cnVlOwogICAgICAgIC8vIFZvcmdlbWVya3RlbiBTYXZlLUhhbmRsZXIg YXVmcnVmZW47IGRlciBpc3QgdmlhIG1vZGFsWmVpZ2VuKCkKICAgICAgICAvLyBnZXNldHp0IHVu ZCBrdWVtbWVydCBzaWNoIHVtIFZhbGlkaWVydW5nICsgQVBJLUF1ZnJ1ZiArIFNjaGxpZXNzZW4u CiAgICAgICAgdHJ5IHsgWi5tb2RhbE9uU3BlaWNoZXJuKCk7IH0gY2F0Y2ggKGUpIHsKICAgICAg ICAgICAgdG9hc3QoJ0ZlaGxlciBiZWltIFNwZWljaGVybjogJyArIChlICYmIGUubWVzc2FnZSB8 fCBlKSwgJ2ZlaGxlcicpOwogICAgICAgICAgICBzcGVpY2hlcm5FbC5kaXNhYmxlZCA9IGZhbHNl OwogICAgICAgIH0KICAgIH0pOwp9CgovLyBSZXN0b3JlLUJhbm5lciBiZWltIE1vZGFsLU9wZW4g KFNwZWMgRi40KTogd2VubiBmdWVyIGRlbiBtb2RhbEtleSBlaW4KLy8gRW50d3VyZiBleGlzdGll cnQsIG9iZW4gaW0gTW9kYWwtS29lcnBlciBlaW4gZGV6ZW50ZXMgQmFubmVyIG1pdAovLyBXaWVk ZXJoZXJzdGVsbGVuICsgVmVyd2VyZmVuLgpleHBvcnQgZnVuY3Rpb24gbW9kYWxFbnR3dXJmQmFu bmVyWmVpZ2VuKGVudHd1cmYpIHsKICAgIHZhciBrb2VycGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ21vZGFsLWtvZXJwZXInKTsKICAgIGlmICgha29lcnBlciB8fCAhZW50d3VyZikgcmV0 dXJuOwogICAgdmFyIGFsdFRhZ2UgPSBNYXRoLm1heCgwLCBNYXRoLmZsb29yKChEYXRlLm5vdygp IC0gZW50d3VyZi50cykgLyA4NjQwMDAwMCkpOwogICAgdmFyIGFsdFRleHQgPSBhbHRUYWdlID09 PSAwID8gJ2hldXRlJyA6IChhbHRUYWdlID09PSAxID8gJ2dlc3Rlcm4nIDogJ3ZvciAnICsgYWx0 VGFnZSArICcgVGFnZW4nKTsKICAgIHZhciBiYW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50 KCdkaXYnKTsKICAgIGJhbm5lci5jbGFzc05hbWUgPSAnbW9kYWwtZW50d3VyZi1iYW5uZXInOwog ICAgYmFubmVyLmlubmVySFRNTCA9CiAgICAgICAgJzxzcGFuIGNsYXNzPSJtZWItdGV4dCI+RHUg aGFzdCBoaWVyIGVpbmVuIEVudHd1cmYgdm9uIDxzdHJvbmc+JyArIGVzY2FwZUhUTUwoYWx0VGV4 dCkgKyAnPC9zdHJvbmc+IGxpZWdlbi4gV2llZGVyaGVyc3RlbGxlbj88L3NwYW4+JyArCiAgICAg ICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4ta2xlaW4gYnRuLXByaW1hZXIiIHR5cGU9ImJ1dHRv biIgaWQ9Im1lYi1yZXN0b3JlIj5XaWVkZXJoZXJzdGVsbGVuPC9idXR0b24+JyArCiAgICAgICAg JzxidXR0b24gY2xhc3M9ImJ0biBidG4ta2xlaW4iIHR5cGU9ImJ1dHRvbiIgaWQ9Im1lYi12ZXJ3 ZXJmZW4iIHRpdGxlPSJFbnR3dXJmIGVuZGfDvGx0aWcgbMO2c2NoZW4iPlZlcndlcmZlbjwvYnV0 dG9uPic7CiAgICBrb2VycGVyLmluc2VydEJlZm9yZShiYW5uZXIsIGtvZXJwZXIuZmlyc3RDaGls ZCk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWViLXJlc3RvcmUnKS5hZGRFdmVudExp c3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgIG1vZGFsRm9ybURhdGVuU2NocmVp YmVuKGVudHd1cmYuZGF0ZW4pOwogICAgICAgIGVudHd1cmZMb2VzY2hlbihaLm1vZGFsS2V5KTsK ICAgICAgICBiYW5uZXIucmVtb3ZlKCk7CiAgICAgICAgWi5tb2RhbERpcnR5ID0gdHJ1ZTsKICAg ICAgICB0b2FzdCgnRW50d3VyZiB3aWVkZXJoZXJnZXN0ZWxsdCcsICdlcmZvbGcnKTsKICAgIH0p OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lYi12ZXJ3ZXJmZW4nKS5hZGRFdmVudExp c3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgIGVudHd1cmZMb2VzY2hlbihaLm1v ZGFsS2V5KTsKICAgICAgICBiYW5uZXIucmVtb3ZlKCk7CiAgICAgICAgdG9hc3QoJ0VudHd1cmYg Z2Vsw7ZzY2h0JywgJ2luZm8nKTsKICAgIH0pOwp9CgovLyA9PT09PSBaZW50cmFsZXIgRGlydHkt VHJhY2tlciA9PT09PQovLyBNb3RpdmF0aW9uOiBUYWJlbGxlbi1JbnB1dHMgKEZhY2hhdWZzaWNo dCwgU3VwZXJVc2VyLCBEaWVuc3RncnVwcGVuLCDigKYpCi8vIHdlcmRlbiBudXIgYmVpbSBLbGlj ayBhdWYgIlNwZWljaGVybiIgcGVyc2lzdGllcnQuIFdlciBkZW4gVGFiIHZvcmhlcgovLyB3ZWNo c2VsdCwgdmVybGllcnQgZGllIEVpbmdhYmVuLiBEZXIgVHJhY2tlciBzYW1tZWx0IHBybyBUYWIg ZWluZW4KLy8gRGlydHktU3RhdGUsIGxhZXNzdCBkZW4gU2F2ZS1CdXR0b24gcHVsc2VuICsgZWlu ZW4gIlVuZ2VzcGVpY2hlcnRlCi8vIEFlbmRlcnVuZ2VuIi1IaW53ZWlzIGVyc2NoZWluZW4sIHVu ZCB6ZWlndCBiZWltIFRhYi1XZWNoc2VsIGVpbgovLyBCZXN0YWV0aWd1bmdzLU1vZGFsIG1pdCBT cGVpY2hlcm4vVmVyd2VyZmVuL0FiYnJlY2hlbi4KLy8KLy8gVGFiLXNwZXppZmlzY2hlIFJlZ2lz dHJhdGlvbnMgbGViZW4gaW4gZGVyIGF1ZnJ1ZmVuZGVuIEluaXQtRnVua3Rpb24KLy8gKGFrdHVl bGwgZGlydHlUcmFja2VyRWlucmljaHRlbiBpbiBhcHAuanMsIGFiIFBoYXNlIDggaW4gYWRtaW4v YWRtaW4uanMpLgovLyBIaWVyIG51ciBkaWUgZ2VuZXJpc2NoZSBSZWdpc3RyeS0gdW5kIEFrdGlv bnMtQVBJLgoKdmFyIERJUlRZID0ge307ICAvLyB0YWJJZCAtPiB7IGRpcnR5LCBsYWJlbCwgYnRu SWRzW10sIGhpbnRJZHNbXSwgc2F2ZUZuPywgZGlzY2FyZEZuPywgY2hhbmdlU3VtbWFyeT8gfQoK ZXhwb3J0IGZ1bmN0aW9uIGRpcnR5UmVnaXN0cmllcmUodGFiSWQsIGNmZykgewogICAgRElSVFlb dGFiSWRdID0gewogICAgICAgIGRpcnR5OiBmYWxzZSwKICAgICAgICBsYWJlbDogY2ZnLmxhYmVs IHx8IHRhYklkLAogICAgICAgIGJ0bklkczogY2ZnLmJ0bklkcyB8fCAoY2ZnLmJ0bklkID8gW2Nm Zy5idG5JZF0gOiBbXSksCiAgICAgICAgaGludElkczogY2ZnLmhpbnRJZHMgfHwgKGNmZy5oaW50 SWQgPyBbY2ZnLmhpbnRJZF0gOiBbXSksCiAgICAgICAgc2F2ZUZuOiBjZmcuc2F2ZUZuIHx8IG51 bGwsCiAgICAgICAgZGlzY2FyZEZuOiBjZmcuZGlzY2FyZEZuIHx8IG51bGwsCiAgICAgICAgLy8g Y2hhbmdlU3VtbWFyeTogZnVuY3Rpb24oKSAtPiBBcnJheTxTdHJpbmc+IG1pdCBrb25rcmV0ZW4K ICAgICAgICAvLyBBZW5kZXJ1bmdzLUJlc2NocmVpYnVuZ2VuICgiR3J1cHBlIEEgdW1iZW5hbm50 IHp1IEEtU2NoaWNodCIsCiAgICAgICAgLy8gIkZhcmJlIEdydXBwZSBCIGdlYWVuZGVydCIpLiBX aXJkIHZvbiBkaXJ0eVBydWVmZW4oKSBpbSBEaWFsb2cKICAgICAgICAvLyBwcm8gVGFiIGdlcmVu ZGVydC4gV2VubiBuaWNodCBnZXNldHp0OiBudXIgVGFiLUxhYmVsIGltIERpYWxvZy4KICAgICAg ICBjaGFuZ2VTdW1tYXJ5OiBjZmcuY2hhbmdlU3VtbWFyeSB8fCBudWxsLAogICAgICAgIC8vIFBo YXNlLTkgQXV0by1TYXZlIChsb2thbGVyIERyYWZ0IGltIGxvY2FsU3RvcmFnZSk6CiAgICAgICAg Ly8gLSBkcmFmdEtleTogICBTY2hsdWVzc2VsIGltIHZpMy50YWJEcmFmdHMtTmFtZXNwYWNlICh6 LkIuICdncnVwcGVuJykKICAgICAgICAvLyAtIHNuYXBzaG90Rm46IGZ1bmN0aW9uKCkgLT4gYmVs aWViaWdlIERhdGVuIOKAlCBsaWVmZXJ0IGFrdHVlbGxlbgogICAgICAgIC8vICAgU2VrdGlvbnMt U3RhbmQgenVtIFBlcnNpc3RpZXJlbiBhbHMgRHJhZnQKICAgICAgICAvLyAtIHJlc3RvcmVGbjog IGZ1bmN0aW9uKGRhdGVuKSAtPiB3ZW5kZXQgZWluZW4gRHJhZnQgYXVmIGRlbiBET00vU3RhdGUg YW4KICAgICAgICAvLyBOdXIgd2VubiBhbGxlIGRyZWkgZ2VzZXR6dCBzaW5kLCBzY2hyZWlidCBk ZXIgVHJhY2tlciBiZWkgamVkZW0KICAgICAgICAvLyBpbnB1dC9jaGFuZ2UtRXZlbnQgZWluZW4g RHJhZnQgKGRlYm91bmNlZCAycykuIEJlaW0gU2F2ZSB3aXJkIGVyCiAgICAgICAgLy8gdm9tIGpl d2VpbGlnZW4gSGFuZGxlciB2aWEgdGFiRHJhZnRMb2VzY2hlbiBhdWZnZXJhZXVtdC4KICAgICAg ICBkcmFmdEtleTogY2ZnLmRyYWZ0S2V5IHx8IG51bGwsCiAgICAgICAgc25hcHNob3RGbjogY2Zn LnNuYXBzaG90Rm4gfHwgbnVsbCwKICAgICAgICByZXN0b3JlRm46IGNmZy5yZXN0b3JlRm4gfHwg bnVsbAogICAgfTsKfQoKLy8gTGllZmVydCBkaWUgUmVnaXN0cnktRWludHJhZWdlIChyZWFkLW9u bHkgWnVncmlmZiBmdWVyIGRlbiBUcmFja2VyCi8vIGltIGFkbWluLmpzLCBkYW1pdCBlciBzbmFw c2hvdEZuL2RyYWZ0S2V5IGxlc2VuIGthbm4gb2huZSBlaW4KLy8gd2VpdGVyZXMgRXhwb3J0LVN5 bWJvbCkuIEJld3Vzc3Qga2xlaW4gZ2VoYWx0ZW46IG51ciBGZWxkZXIsIGRpZQovLyBkZXIgVHJh Y2tlciB0YXRzYWVjaGxpY2ggYnJhdWNodC4KZXhwb3J0IGZ1bmN0aW9uIGRpcnR5RWludHJhZyh0 YWJJZCkgewogICAgdmFyIHIgPSBESVJUWVt0YWJJZF07CiAgICBpZiAoIXIpIHJldHVybiBudWxs OwogICAgcmV0dXJuIHsgZHJhZnRLZXk6IHIuZHJhZnRLZXksIHNuYXBzaG90Rm46IHIuc25hcHNo b3RGbiwgcmVzdG9yZUZuOiByLnJlc3RvcmVGbiwgbGFiZWw6IHIubGFiZWwgfTsKfQoKZXhwb3J0 IGZ1bmN0aW9uIGRpcnR5U2V0emVuKHRhYklkLCB3ZXJ0KSB7CiAgICBpZiAoIURJUlRZW3RhYklk XSkgcmV0dXJuOwogICAgRElSVFlbdGFiSWRdLmRpcnR5ID0gISF3ZXJ0OwogICAgRElSVFlbdGFi SWRdLmJ0bklkcy5mb3JFYWNoKGZ1bmN0aW9uKGlkKSB7CiAgICAgICAgdmFyIGIgPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgICAgaWYgKGIpIGIuY2xhc3NMaXN0LnRvZ2dsZSgn ZGlydHktcHVsc2UnLCAhIXdlcnQpOwogICAgfSk7CiAgICBESVJUWVt0YWJJZF0uaGludElkcy5m b3JFYWNoKGZ1bmN0aW9uKGlkKSB7CiAgICAgICAgdmFyIGggPSBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZChpZCk7CiAgICAgICAgaWYgKGgpIGguc3R5bGUuZGlzcGxheSA9IHdlcnQgPyAnJyA6ICdu b25lJzsKICAgIH0pOwp9CgpleHBvcnQgZnVuY3Rpb24gZGlydHlJc3QodGFiSWQpIHsgcmV0dXJu ICEhKERJUlRZW3RhYklkXSAmJiBESVJUWVt0YWJJZF0uZGlydHkpOyB9CgovLyBFeGlzdGVuei1D aGVjazogaXN0IHRhYklkIHVlYmVyaGF1cHQgcmVnaXN0cmllcnQ/IFdpcmQgdm9tIERPTS1FdmVu dC1UcmFja2VyCi8vIGdlYnJhdWNodCwgZGVyIHBybyBTZWN0aW9uLS9UYWItL1RhYmVsbGUtSUQg bmFjaHNjaGF1ZW4gbXVzcywgb2IgZWluCi8vIERpcnR5LVNsb3QgZXhpc3RpZXJ0LCBiZXZvciBl ciBpaG4gYXVmIHRydWUgc2V0enQuCmV4cG9ydCBmdW5jdGlvbiBkaXJ0eUtlbm50KHRhYklkKSB7 IHJldHVybiAhIURJUlRZW3RhYklkXTsgfQoKZXhwb3J0IGZ1bmN0aW9uIGRpcnR5QWt0aXZlKCkg ewogICAgcmV0dXJuIE9iamVjdC5rZXlzKERJUlRZKS5maWx0ZXIoZnVuY3Rpb24oaykgeyByZXR1 cm4gRElSVFlba10uZGlydHk7IH0pOwp9CgovLyBDaGVjay1Nb2RhbCBiZWkgVGFiLVdlY2hzZWw6 IHplaWd0IExpc3RlIGRlciBkaXJ0eSBUYWJzICsgMyBBa3Rpb25lbi4KLy8gd2VpdGVyOiBDYWxs YmFjayBmdWVyIGRlbiBlaWdlbnRsaWNoZW4gV2VjaHNlbCAod2lyZCBudXIgYXVzZ2VmdWVocnQs Ci8vIHdlbm4gZGVyIFVzZXIgZW50d2VkZXIgc3BlaWNoZXJ0IG9kZXIgYmV3dXNzdCB2ZXJ3aXJm dCkuCmV4cG9ydCBmdW5jdGlvbiBkaXJ0eVBydWVmZW4od2VpdGVyKSB7CiAgICB2YXIgYWt0aXYg PSBkaXJ0eUFrdGl2ZSgpOwogICAgaWYgKGFrdGl2Lmxlbmd0aCA9PT0gMCkgeyB3ZWl0ZXIoKTsg cmV0dXJuOyB9CiAgICAvLyBQcm8gYmV0cm9mZmVuZW0gVGFiOiBMYWJlbCBmZXR0ICsgKHdlbm4g Y2hhbmdlU3VtbWFyeSB2b3JoYW5kZW4pCiAgICAvLyB2ZXJzY2hhY2h0ZWx0ZSBEZXRhaWwtTGlz dGUgbWl0IGtvbmtyZXRlbiBBZW5kZXJ1bmdlbi4gV2VubgogICAgLy8gY2hhbmdlU3VtbWFyeSBh dXNuYWhtc3dlaXNlIGVpbmUgRXhjZXB0aW9uIHdpcmZ0ICh6LkIuIHdlaWwgZWluCiAgICAvLyBE T00tS25vdGVuIHdlZyBpc3QpLCB3aXJkIGRlciBUYWIgbnVyIG1pdCBMYWJlbC1aZWlsZSBnZXJl bmRlcnQuCiAgICB2YXIgaXRlbXMgPSBha3Rpdi5tYXAoZnVuY3Rpb24oaykgewogICAgICAgIHZh ciBlbnRyeSA9IERJUlRZW2tdOwogICAgICAgIHZhciBoZWFkID0gJzxzdHJvbmc+JyArIGVzY2Fw ZUhUTUwoZW50cnkubGFiZWwpICsgJzwvc3Ryb25nPic7CiAgICAgICAgdmFyIGRldGFpbCA9ICcn OwogICAgICAgIGlmICh0eXBlb2YgZW50cnkuY2hhbmdlU3VtbWFyeSA9PT0gJ2Z1bmN0aW9uJykg ewogICAgICAgICAgICB2YXIgemVpbGVuID0gW107CiAgICAgICAgICAgIHRyeSB7IHplaWxlbiA9 IGVudHJ5LmNoYW5nZVN1bW1hcnkoKSB8fCBbXTsgfSBjYXRjaCAoZSkgeyB6ZWlsZW4gPSBbXTsg fQogICAgICAgICAgICBpZiAoemVpbGVuLmxlbmd0aCkgewogICAgICAgICAgICAgICAgaGVhZCA9 ICc8c3Ryb25nPicgKyBlc2NhcGVIVE1MKGVudHJ5LmxhYmVsKSArICc8L3N0cm9uZz4gPHNwYW4g c3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtc2l6ZToxMnB4Ij4oJyArIHplaWxl bi5sZW5ndGggKyAnKTwvc3Bhbj4nOwogICAgICAgICAgICAgICAgZGV0YWlsID0gJzx1bCBzdHls ZT0ibWFyZ2luOjRweCAwIDAgMThweDtwYWRkaW5nOjA7Zm9udC1zaXplOjEyLjVweDtjb2xvcjp2 YXIoLS10ZXh0LXNlY29uZGFyeSkiPicgKwogICAgICAgICAgICAgICAgICAgIHplaWxlbi5tYXAo ZnVuY3Rpb24oeikgeyByZXR1cm4gJzxsaT4nICsgZXNjYXBlSFRNTCh6KSArICc8L2xpPic7IH0p LmpvaW4oJycpICsKICAgICAgICAgICAgICAgICc8L3VsPic7CiAgICAgICAgICAgIH0KICAgICAg ICB9CiAgICAgICAgcmV0dXJuICc8bGkgc3R5bGU9Im1hcmdpbi1ib3R0b206OHB4Ij4nICsgaGVh ZCArIGRldGFpbCArICc8L2xpPic7CiAgICB9KS5qb2luKCcnKTsKICAgIHZhciBrb2VycGVyID0K ICAgICAgICAnPHA+RXMgZ2lidCB1bmdlc3BlaWNoZXJ0ZSDDhG5kZXJ1bmdlbjo8L3A+JyArCiAg ICAgICAgJzx1bCBzdHlsZT0ibWFyZ2luOjhweCAwIDE0cHggMjBweDtwYWRkaW5nOjA7bGlzdC1z dHlsZTpub25lIj4nICsgaXRlbXMgKyAnPC91bD4nICsKICAgICAgICAnPHA+TcO2Y2h0ZXN0IGR1 IGRpZSDDhG5kZXJ1bmdlbiBzcGVpY2hlcm4gb2RlciB2ZXJ3ZXJmZW4/PC9wPic7CiAgICB2YXIg ZnVzcyA9CiAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biIgaWQ9ImRwLWFiYnJlY2hlbiIgdHlw ZT0iYnV0dG9uIj5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAnPGJ1dHRvbiBjbGFzcz0i YnRuIGJ0bi1nZWZhaHIiIGlkPSJkcC12ZXJ3ZXJmZW4iIHR5cGU9ImJ1dHRvbiI+VmVyd2VyZmVu PC9idXR0b24+JyArCiAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFlciIgaWQ9 ImRwLXNwZWljaGVybiIgdHlwZT0iYnV0dG9uIj5TcGVpY2hlcm48L2J1dHRvbj4nOwogICAgbW9k YWxaZWlnZW4oJ1VuZ2VzcGVpY2hlcnRlIMOEbmRlcnVuZ2VuJywga29lcnBlciwgZnVzcyk7CiAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHAtYWJicmVjaGVuJykuYWRkRXZlbnRMaXN0ZW5l cignY2xpY2snLCBmdW5jdGlvbigpIHsgbW9kYWxTY2hsaWVzc2VuKHRydWUpOyB9KTsKICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcC12ZXJ3ZXJmZW4nKS5hZGRFdmVudExpc3RlbmVyKCdj bGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBwcm9taXNlcyA9IGFrdGl2Lm1hcChmdW5j dGlvbihrKSB7CiAgICAgICAgICAgIHRyeSB7IHJldHVybiAoRElSVFlba10uZGlzY2FyZEZuICYm IERJUlRZW2tdLmRpc2NhcmRGbigpKSB8fCBQcm9taXNlLnJlc29sdmUoKTsgfQogICAgICAgICAg ICBjYXRjaChlKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfQogICAgICAgIH0pOwogICAg ICAgIFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBh a3Rpdi5mb3JFYWNoKGZ1bmN0aW9uKGspIHsgZGlydHlTZXR6ZW4oaywgZmFsc2UpOyB9KTsKICAg ICAgICAgICAgbW9kYWxTY2hsaWVzc2VuKHRydWUpOwogICAgICAgICAgICB3ZWl0ZXIoKTsKICAg ICAgICB9KTsKICAgIH0pOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RwLXNwZWljaGVy bicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGJ0 biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcC1zcGVpY2hlcm4nKTsKICAgICAgICBidG4u ZGlzYWJsZWQgPSB0cnVlOyBidG4udGV4dENvbnRlbnQgPSAnU3BlaWNoZXJl4oCmJzsKICAgICAg ICB2YXIgcHJvbWlzZXMgPSBha3Rpdi5tYXAoZnVuY3Rpb24oaykgeyByZXR1cm4gZGlydHlTcGVp Y2hlcm4oayk7IH0pOwogICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKGZ1bmN0aW9u KCkgewogICAgICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICAgICAgICAgIHdlaXRl cigpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdG9hc3QoJ0Zl aGxlciBiZWltIFNwZWljaGVybjogJyArIChlICYmIGUubWVzc2FnZSB8fCBlKSwgJ2ZlaGxlcicp OwogICAgICAgICAgICBidG4uZGlzYWJsZWQgPSBmYWxzZTsgYnRuLnRleHRDb250ZW50ID0gJ1Nw ZWljaGVybic7CiAgICAgICAgfSk7CiAgICB9KTsKfQoKLy8gU3BlaWNoZXJ0IGVpbmVuIGRpcnR5 LVRhYi4gQmV2b3J6dWd0IHNhdmVGbjsgRmFsbGJhY2s6IENsaWNrIGF1ZgovLyBwcmltYWVyZW4g U2F2ZS1CdXR0b24gKyBQb2xsIGF1ZiBkaXJ0eT1mYWxzZSAobWF4IDVzKS4gQ2xpY2stSGFuZGxl cgovLyBzZXR6dCBkaXJ0eT1mYWxzZSBuYWNoIGVyZm9sZ3JlaWNoZW0gUFVUIChzaWVoZSBlaW56 ZWxuZSBTYXZlLUJpbmRpbmdzKS4KZXhwb3J0IGZ1bmN0aW9uIGRpcnR5U3BlaWNoZXJuKHRhYklk KSB7CiAgICB2YXIgciA9IERJUlRZW3RhYklkXTsKICAgIGlmICghcikgcmV0dXJuIFByb21pc2Uu cmVzb2x2ZSgpOwogICAgaWYgKHIuc2F2ZUZuKSB7CiAgICAgICAgcmV0dXJuIFByb21pc2UucmVz b2x2ZShyLnNhdmVGbigpKS50aGVuKGZ1bmN0aW9uKCkgeyBkaXJ0eVNldHplbih0YWJJZCwgZmFs c2UpOyB9KTsKICAgIH0KICAgIHZhciBidG4gPSAoci5idG5JZHNbMF0gJiYgZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoci5idG5JZHNbMF0pKSB8fCBudWxsOwogICAgaWYgKCFidG4pIHJldHVybiBQ cm9taXNlLnJlc29sdmUoKTsKICAgIGJ0bi5jbGljaygpOwogICAgcmV0dXJuIG5ldyBQcm9taXNl KGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgIHZhciBzdGFydCA9IERhdGUubm93 KCk7CiAgICAgICAgZnVuY3Rpb24gcG9sbCgpIHsKICAgICAgICAgICAgaWYgKCFESVJUWVt0YWJJ ZF0uZGlydHkpIHJldHVybiByZXNvbHZlKCk7CiAgICAgICAgICAgIGlmIChEYXRlLm5vdygpIC0g c3RhcnQgPiA1MDAwKSByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignU3BlaWNoZXJuIGRhdWVydCB6 dSBsYW5nZSAoJyArIHIubGFiZWwgKyAnKScpKTsKICAgICAgICAgICAgc2V0VGltZW91dChwb2xs LCAxMDApOwogICAgICAgIH0KICAgICAgICBwb2xsKCk7CiAgICB9KTsKfQoKLy8gPT09PT0gVGFn L05hY2h0LVRoZW1lLVRvZ2dsZSA9PT09PQovLyBQZXJzaXN0aWVydCBpbiBsb2NhbFN0b3JhZ2Ug dW50ZXIgJ3ZpMy10aGVtZScuIENTUy1WYXJpYWJsZW4tU3lzdGVtCi8vIHN0ZWh0IGluIHN0eWxl LmNzcyAoOnJvb3QgdnMuIFtkYXRhLXRoZW1lPSJuaWdodCJdKS4KCmV4cG9ydCBmdW5jdGlvbiB0 aGVtZVVtc2NoYWx0ZW4oKSB7CiAgICB2YXIgYWt0dWVsbCA9IGRvY3VtZW50LmRvY3VtZW50RWxl bWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGhlbWUnKTsKICAgIHZhciBuZXUgPSBha3R1ZWxsID09 PSAnbmlnaHQnID8gJycgOiAnbmlnaHQnOwogICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNl dEF0dHJpYnV0ZSgnZGF0YS10aGVtZScsIG5ldSk7CiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgn dmkzLXRoZW1lJywgbmV1KTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG4tdGhlbWUn KS50ZXh0Q29udGVudCA9IG5ldSA9PT0gJ25pZ2h0JyA/ICdUYWcnIDogJ05hY2h0JzsKfQoKZXhw b3J0IGZ1bmN0aW9uIHRoZW1lV2llZGVyaGVyc3RlbGxlbigpIHsKICAgIHZhciBnID0gbG9jYWxT dG9yYWdlLmdldEl0ZW0oJ3ZpMy10aGVtZScpIHx8ICcnOwogICAgaWYgKGcgPT09ICduaWdodCcp IHsKICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXRo ZW1lJywgJ25pZ2h0Jyk7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bi10aGVt ZScpLnRleHRDb250ZW50ID0gJ1RhZyc7CiAgICB9Cn0K ### FILE: js/ui_rte.js | 6951 Ly8gPT09IHVpL3J0ZS5qcyA9PT0KLy8gTWluaW1hbGVyIFJpY2gtVGV4dC1FZGl0b3IgKyBIVE1M LVNhbml0aXplciArIEVtb2ppLVBpY2tlci4KLy8KLy8gR2VudXR6dCBhbiBkcmVpIFN0ZWxsZW46 IFNvbmRlcnRlcm1pbi1FZGl0b3IsIEVtYWlsLVZvcmxhZ2VuLUVkaXRvcgovLyB1bmQgSW5mby1I aWxmZS1UYWIuIFJURS1Jbml0IGJpbmRldCBjb250ZW50RWRpdGFibGUtQnV0dG9ucyAoQi9JL1Us Ci8vIExpc3RlbiwgSW5kZW50KSwgU2FuaXRpemVyIGZhZWhydCBBbGxvd2xpc3QtUG9saWN5IChz aWVoZSBzYW5pdGl6ZVJpY2hIdG1sKS4KCmltcG9ydCB7IGVzY2FwZUhUTUwsIGVzY2FwZUF0dHIg fSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CgovLyA9PT09PSBIVE1MLVNhbml0aXplciA9PT09PQoK Ly8gTnVyIEJhc2lzLUZvcm1hdGllcnVuZywga2VpbmUgU2NyaXB0L1N0eWxlL0F0dHIgYXVzc2Vy IGhyZWYvdGFyZ2V0L3JlbCBhdWYgPGE+LgovLyBCTE9DS1FVT1RFIGlzdCBlcmxhdWJ0IGZ1ZXIg SW5kZW50IChlbnRzdGVodCBkdXJjaCBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5kZW50JykKLy8g d2VubiBzdHlsZVdpdGhDU1M9ZmFsc2UgZ2VzZXR6dCBpc3QgLSBzaWVoZSBydGVJbml0KS4KZXhw b3J0IGZ1bmN0aW9uIHNhbml0aXplUmljaEh0bWwoaHRtbCkgewogICAgaWYgKCFodG1sKSByZXR1 cm4gJyc7CiAgICB2YXIgYWxsb3dlZCA9IHsgQjoxLCBTVFJPTkc6MSwgSToxLCBFTToxLCBVOjEs IEJSOjEsIFA6MSwgVUw6MSwgT0w6MSwgTEk6MSwgQToxLCBESVY6MSwgU1BBTjoxLCBIMzoxLCBI NDoxLCBCTE9DS1FVT1RFOjEgfTsKICAgIHZhciBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VG cm9tU3RyaW5nKCc8IWRvY3R5cGUgaHRtbD48Ym9keT4nICsgaHRtbCArICc8L2JvZHk+JywgJ3Rl eHQvaHRtbCcpOwogICAgKGZ1bmN0aW9uIHdhbGsobm9kZSkgewogICAgICAgIHZhciBjaGlsZCA9 IG5vZGUuZmlyc3RDaGlsZDsKICAgICAgICB3aGlsZSAoY2hpbGQpIHsKICAgICAgICAgICAgdmFy IG5leHQgPSBjaGlsZC5uZXh0U2libGluZzsKICAgICAgICAgICAgaWYgKGNoaWxkLm5vZGVUeXBl ID09PSAxKSB7CiAgICAgICAgICAgICAgICB2YXIgdGFnID0gY2hpbGQudGFnTmFtZTsKICAgICAg ICAgICAgICAgIGlmICghYWxsb3dlZFt0YWddKSB7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUg KGNoaWxkLmZpcnN0Q2hpbGQpIG5vZGUuaW5zZXJ0QmVmb3JlKGNoaWxkLmZpcnN0Q2hpbGQsIGNo aWxkKTsKICAgICAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUNoaWxkKGNoaWxkKTsKICAgICAg ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IGNoaWxk LmF0dHJpYnV0ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgICAgICAg ICAgICAgdmFyIGF0dHIgPSBjaGlsZC5hdHRyaWJ1dGVzW2ldLm5hbWU7CiAgICAgICAgICAgICAg ICAgICAgICAgIHZhciBrZWVwID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0 YWcgPT09ICdBJyAmJiAoYXR0ciA9PT0gJ2hyZWYnIHx8IGF0dHIgPT09ICd0YXJnZXQnIHx8IGF0 dHIgPT09ICdyZWwnKSkga2VlcCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh a2VlcCkgY2hpbGQucmVtb3ZlQXR0cmlidXRlKGF0dHIpOwogICAgICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgICAgICBpZiAodGFnID09PSAnQScpIHsKICAgICAgICAgICAgICAgICAg ICAgICAgdmFyIGhyZWYgPSBjaGlsZC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSB8fCAnJzsKICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKC9eXHMqKGphdmFzY3JpcHR8ZGF0YSk6L2kudGVzdChocmVm KSkgY2hpbGQucmVtb3ZlQXR0cmlidXRlKCdocmVmJyk7CiAgICAgICAgICAgICAgICAgICAgICAg IGNoaWxkLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpOwogICAgICAgICAgICAgICAg ICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdub29wZW5lciBub3JlZmVycmVyJyk7 CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHdhbGsoY2hpbGQpOwog ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLm5vZGVUeXBlICE9 PSAzICYmIGNoaWxkLm5vZGVUeXBlICE9PSA4KSB7CiAgICAgICAgICAgICAgICAvLyBOdXIgRWxl bWVudC0sIFRleHQtLCBDb21tZW50LUtub3RlbiAtIENvbW1lbnRzIHdlcmRlbiBlbnRmZXJudAog ICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVDaGlsZChjaGlsZCk7CiAgICAgICAgICAgIH0KICAg ICAgICAgICAgY2hpbGQgPSBuZXh0OwogICAgICAgIH0KICAgIH0pKGRvYy5ib2R5KTsKICAgIC8v IEtvbW1lbnRhcmUgcmF1cwogICAgZG9jLmJvZHkucXVlcnlTZWxlY3RvckFsbCAmJiBkb2MuYm9k eS5jaGlsZE5vZGVzLmZvckVhY2ggJiYgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkb2Mu Ym9keS5jaGlsZE5vZGVzLCBmdW5jdGlvbigpIHt9KTsKICAgIHJldHVybiBkb2MuYm9keS5pbm5l ckhUTUw7Cn0KCi8vID09PT09IEVtb2ppLVBpY2tlciA9PT09PQoKLy8gTW9ub2Nocm9tZSBVbmlj b2RlLVN5bWJvbGUgc3RhdHQgYnVudGUgRW1vamkgKENoZXJyeS1QaWNrIDhiMmQwZmQpOgovLyAt IHJlbmRlcm4gaW4gZGVyIFRleHRmYXJiZSDihpIgT1MtIHVuZCBUaGVtZS11bmFiaGFlbmdpZyBr b25zaXN0ZW50Ci8vIC0gVmFyaWF0aW9uLVNlbGVjdG9yLTE1ICjvuI4pIGVyendpbmd0IGRpZSBH bHlwaC1EYXJzdGVsbHVuZyBpbgovLyAgIEJyb3dzZXJuLCBkaWUgZGFzIFN5bWJvbCBzb25zdCBh bHMgYnVudGUgRW1vamktVmFyaWFudGUgemVpZ2VuCmV4cG9ydCB2YXIgRU1PSklfU0VUID0gWwog ICAgeyBrYXQ6ICdBbGxnZW1laW4nLCAgICAgICAgZTogWyfihLnvuI4nLCfik5gnLCfinI4nLCfi mIUnLCfimIYnLCfimpEnXSB9LAogICAgeyBrYXQ6ICdXYXJudW5nICYgVmVyYm90JywgZTogWyfi mqDvuI4nLCfigLzvuI4nLCfinZfvuI4nLCfim5TvuI4nLCfinJYnLCfinJcnXSB9LAogICAgeyBr YXQ6ICdHZWZhaHIgJiBFaW5zYXR6JywgZTogWyfimqHvuI4nLCfimKLvuI4nLCfimKPvuI4nLCfi mKDvuI4nLCfimpLvuI4nXSB9LAogICAgeyBrYXQ6ICdUZXJtaW4gJiBaZWl0JywgICAgZTogWyfi jJrvuI4nLCfijJsnLCfij7HvuI4nLCfij7MnXSB9LAogICAgeyBrYXQ6ICdWZXJ3YWx0dW5nJywg ICAgICAgZTogWyfimpbvuI4nLCfimI7vuI4nLCfinInvuI4nLCfimJHvuI4nLCfimJLvuI4nLCfi mpnvuI4nXSB9Cl07Cgp2YXIgZW1vamlQaWNrZXJBa3RpdiA9IG51bGw7CgpleHBvcnQgZnVuY3Rp b24gZW1vamlQaWNrZXJaZWlnZW4oYW5jaG9yLCBvblNlbGVjdCkgewogICAgZW1vamlQaWNrZXJT Y2hsaWVzc2VuKCk7CiAgICB2YXIgcG9wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7 CiAgICBwb3AuY2xhc3NOYW1lID0gJ2Vtb2ppLXBpY2tlcic7CiAgICB2YXIgaHRtbCA9ICc8ZGl2 IGNsYXNzPSJlbW9qaS1waWNrZXItZ3JpZCI+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJl bW9qaS1waWNrZXItb3B0IGtlaW5lciIgZGF0YS12PSIiPihrZWlucyk8L2J1dHRvbj48L2Rpdj4n OwogICAgRU1PSklfU0VULmZvckVhY2goZnVuY3Rpb24oZykgewogICAgICAgIGh0bWwgKz0gJzxk aXYgY2xhc3M9ImVtb2ppLXBpY2tlci1rYXQiPicgKyBnLmthdCArICc8L2Rpdj4nICsKICAgICAg ICAgICAgJzxkaXYgY2xhc3M9ImVtb2ppLXBpY2tlci1ncmlkIj4nICsKICAgICAgICAgICAgZy5l Lm1hcChmdW5jdGlvbihlbSkgeyByZXR1cm4gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0i ZW1vamktcGlja2VyLW9wdCIgZGF0YS12PSInICsgZXNjYXBlQXR0cihlbSkgKyAnIj4nICsgZXNj YXBlSFRNTChlbSkgKyAnPC9idXR0b24+JzsgfSkuam9pbignJykgKwogICAgICAgICAgICAnPC9k aXY+JzsKICAgIH0pOwogICAgcG9wLmlubmVySFRNTCA9IGh0bWw7CiAgICBkb2N1bWVudC5ib2R5 LmFwcGVuZENoaWxkKHBvcCk7CiAgICB2YXIgciA9IGFuY2hvci5nZXRCb3VuZGluZ0NsaWVudFJl Y3QoKTsKICAgIHZhciBsZWZ0ID0gTWF0aC5taW4oci5sZWZ0LCB3aW5kb3cuaW5uZXJXaWR0aCAt IDI4NCk7CiAgICB2YXIgdG9wID0gci5ib3R0b20gKyA0OwogICAgaWYgKHRvcCArIDM0MCA+IHdp bmRvdy5pbm5lckhlaWdodCkgdG9wID0gTWF0aC5tYXgoOCwgci50b3AgLSAzNDQpOwogICAgcG9w LnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JzsKICAgIHBvcC5zdHlsZS50b3AgPSB0b3AgKyAncHgn OwogICAgcG9wLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAg IHZhciBiID0gZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtdl0nKTsKICAgICAgICBpZiAoIWIpIHJl dHVybjsKICAgICAgICBvblNlbGVjdChiLmdldEF0dHJpYnV0ZSgnZGF0YS12JykpOwogICAgICAg IGVtb2ppUGlja2VyU2NobGllc3NlbigpOwogICAgfSk7CiAgICBlbW9qaVBpY2tlckFrdGl2ID0g cG9wOwogICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICBkb2N1bWVudC5hZGRFdmVu dExpc3RlbmVyKCdjbGljaycsIGVtb2ppUGlja2VyQXV0b0Nsb3NlLCB7IG9uY2U6IHRydWUgfSk7 CiAgICB9LCAwKTsKfQoKZnVuY3Rpb24gZW1vamlQaWNrZXJBdXRvQ2xvc2UoZSkgewogICAgaWYg KGVtb2ppUGlja2VyQWt0aXYgJiYgIWVtb2ppUGlja2VyQWt0aXYuY29udGFpbnMoZS50YXJnZXQp KSBlbW9qaVBpY2tlclNjaGxpZXNzZW4oKTsKICAgIGVsc2UgaWYgKGVtb2ppUGlja2VyQWt0aXYp IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNr JywgZW1vamlQaWNrZXJBdXRvQ2xvc2UsIHsgb25jZTogdHJ1ZSB9KTsgfSwgMCk7Cn0KCmV4cG9y dCBmdW5jdGlvbiBlbW9qaVBpY2tlclNjaGxpZXNzZW4oKSB7CiAgICBpZiAoZW1vamlQaWNrZXJB a3RpdikgeyBlbW9qaVBpY2tlckFrdGl2LnJlbW92ZSgpOyBlbW9qaVBpY2tlckFrdGl2ID0gbnVs bDsgfQp9CgovLyA9PT09PSBNaW5pbWFsZXIgUmljaC1UZXh0LUVkaXRvciA9PT09PQoKZXhwb3J0 IGZ1bmN0aW9uIHJ0ZUluaXQoZWRpdG9yKSB7CiAgICAvLyBzdHlsZVdpdGhDU1M9ZmFsc2Ugendp bmd0IEJyb3dzZXIsIGZ1ZXIgSW5kZW50IDxibG9ja3F1b3RlPi1UYWdzIHp1CiAgICAvLyBlcnpl dWdlbiAoc3RhdHQgc3R5bGU9Im1hcmdpbi1sZWZ0OjQwcHgiKS4gVm9ydGVpbDogYmxvY2txdW90 ZQogICAgLy8gdWViZXJsZWJ0IHNhbml0aXplUmljaEh0bWwgKyBFbnRlci1UYXN0ZSBpbm5lcmhh bGIgYmVoYWVsdCBkYXMKICAgIC8vIEluZGVudC1MZXZlbCAoVXNlci1XdW5zY2g6ICJhdWNoIHpl aWxlbnVtYnJ1Y2h1ZWJlcmdyZWlmZW5kIikuCiAgICB0cnkgeyBkb2N1bWVudC5leGVjQ29tbWFu ZCgnc3R5bGVXaXRoQ1NTJywgZmFsc2UsIGZhbHNlKTsgfSBjYXRjaCAoZSkge30KICAgIHZhciB0 b29sYmFyID0gZWRpdG9yLnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLnJ0ZS10b29sYmFy Jyk7CiAgICBpZiAodG9vbGJhcikgewogICAgICAgIHRvb2xiYXIuYWRkRXZlbnRMaXN0ZW5lcign bW91c2Vkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgYnRuID0gZS50YXJnZXQu Y2xvc2VzdCgnW2RhdGEtY21kXScpOwogICAgICAgICAgICBpZiAoIWJ0bikgcmV0dXJuOwogICAg ICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7IC8vIGJlaMOkbHQgU2VsZWN0aW9uIGltIEVkaXRv cgogICAgICAgICAgICB2YXIgY21kID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS1jbWQnKTsKICAg ICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoY21kLCBmYWxzZSwgbnVsbCk7CiAgICAgICAg ICAgIHJ0ZUJ1dHRvblN0YXRlcyhlZGl0b3IsIHRvb2xiYXIpOwogICAgICAgIH0pOwogICAgICAg IGVkaXRvci5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIGZ1bmN0aW9uKCkgeyBydGVCdXR0b25T dGF0ZXMoZWRpdG9yLCB0b29sYmFyKTsgfSk7CiAgICAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVu ZXIoJ21vdXNldXAnLCBmdW5jdGlvbigpIHsgcnRlQnV0dG9uU3RhdGVzKGVkaXRvciwgdG9vbGJh cik7IH0pOwogICAgfQogICAgLy8gUGFzdGU6IEhUTUwgYmVyZWluaWdlbgogICAgZWRpdG9yLmFk ZEV2ZW50TGlzdGVuZXIoJ3Bhc3RlJywgZnVuY3Rpb24oZSkgewogICAgICAgIGUucHJldmVudERl ZmF1bHQoKTsKICAgICAgICB2YXIgaHRtbCA9IChlLmNsaXBib2FyZERhdGEgfHwgd2luZG93LmNs aXBib2FyZERhdGEpLmdldERhdGEoJ3RleHQvaHRtbCcpOwogICAgICAgIHZhciB0ZXh0ID0gKGUu Y2xpcGJvYXJkRGF0YSB8fCB3aW5kb3cuY2xpcGJvYXJkRGF0YSkuZ2V0RGF0YSgndGV4dC9wbGFp bicpOwogICAgICAgIHZhciBpbnNlcnQgPSBodG1sID8gc2FuaXRpemVSaWNoSHRtbChodG1sKSA6 IGVzY2FwZUhUTUwodGV4dCkucmVwbGFjZSgvXHI/XG4vZywgJzxicj4nKTsKICAgICAgICBkb2N1 bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRNTCcsIGZhbHNlLCBpbnNlcnQpOwogICAgfSk7Cn0K CmV4cG9ydCBmdW5jdGlvbiBydGVCdXR0b25TdGF0ZXMoZWRpdG9yLCB0b29sYmFyKSB7CiAgICB0 b29sYmFyLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWNtZF0nKS5mb3JFYWNoKGZ1bmN0aW9uKGJ0 bikgewogICAgICAgIHZhciBjbWQgPSBidG4uZ2V0QXR0cmlidXRlKCdkYXRhLWNtZCcpOwogICAg ICAgIHRyeSB7CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeUNvbW1hbmRTdGF0ZShjbWQp KSBidG4uY2xhc3NMaXN0LmFkZCgnYWt0aXYnKTsKICAgICAgICAgICAgZWxzZSBidG4uY2xhc3NM aXN0LnJlbW92ZSgnYWt0aXYnKTsKICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgfSk7Cn0K ### FILE: js/wochenplan.js | 15204 Ly8gPT09IHdvY2hlbnBsYW4vd29jaGVucGxhbi5qcyA9PT0KLy8gV29jaGVucGxhbi0gdW5kIFBl cnNvbmVuLVBsYW4tVGFiLgoKaW1wb3J0IHsgWiB9IGZyb20gJy4vY29yZV9zdGF0ZS5qcyc7Cmlt cG9ydCB7CiAgICBlc2NhcGVIVE1MLCBlc2NhcGVBdHRyLAogICAgZGF0dW1TdHIsIGRhdHVtRm9y bWF0REUsIGRhdHVtS3VyekRFLCB3b2NoZW50YWdLdXJ6LCBpc3RXb2NoZW5lbmRlLAogICAgZnVu a3Rpb25zUmFuZywgcmVuZGVyRXJyb3JCb3gKfSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CmltcG9y dCB7IHNvbmRlclRpdGVsQXVzVGV4dCB9IGZyb20gJy4vYWRtaW5fa2FsZW5kZXIuanMnOwppbXBv cnQgeyBrb21tZW50YXJUZXh0IH0gZnJvbSAnLi9ncmlkX2ludGVyYWN0aW9uLmpzJzsKCiAgICAv LyA9PT09PSBXb2NoZW5wbGFuID09PT09CgogICAgdmFyIHdwT2Zmc2V0ID0gMDsgLy8gV29jaGVu b2Zmc2V0IHJlbGF0aXYgenVyIGFrdHVlbGxlbiBXb2NoZQoKICAgIGZ1bmN0aW9uIHdwV29jaGVU YWdlKG9mZnNldCkgewogICAgICAgIHZhciBoZXV0ZSA9IG5ldyBEYXRlKCk7CiAgICAgICAgLy8g TW9udGFnIGRlciBha3R1ZWxsZW4gV29jaGUgYmVyZWNobmVuCiAgICAgICAgdmFyIHRhZyA9IGhl dXRlLmdldERheSgpOyAvLyAwPVNvLCAxPU1vLCAuLi4KICAgICAgICB2YXIgZGlmZiA9IHRhZyA9 PT0gMCA/IC02IDogMSAtIHRhZzsKICAgICAgICB2YXIgbW9udGFnID0gbmV3IERhdGUoaGV1dGUp OwogICAgICAgIG1vbnRhZy5zZXREYXRlKG1vbnRhZy5nZXREYXRlKCkgKyBkaWZmICsgKG9mZnNl dCAqIDcpKTsKICAgICAgICBtb250YWcuc2V0SG91cnMoMCwgMCwgMCwgMCk7CgogICAgICAgIHZh ciB0YWdlID0gW107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3OyBpKyspIHsKICAgICAg ICAgICAgdmFyIGQgPSBuZXcgRGF0ZShtb250YWcpOwogICAgICAgICAgICBkLnNldERhdGUoZC5n ZXREYXRlKCkgKyBpKTsKICAgICAgICAgICAgdGFnZS5wdXNoKGQpOwogICAgICAgIH0KICAgICAg ICByZXR1cm4gdGFnZTsKICAgIH0KCiAgICBmdW5jdGlvbiB3cFJlbmRlcm4oKSB7CiAgICAgICAg dHJ5IHsKICAgICAgICAgICAgX3dwUmVuZGVybkludGVybigpOwogICAgICAgIH0gY2F0Y2ggKGUp IHsKICAgICAgICAgICAgcmVuZGVyRXJyb3JCb3goZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fu c2ljaHQtd29jaGVucGxhbicpLCBlLCAnV29jaGVucGxhbicpOwogICAgICAgIH0KICAgIH0KICAg IGZ1bmN0aW9uIF93cFJlbmRlcm5JbnRlcm4oKSB7CiAgICAgICAgdmFyIHRhZ2UgPSB3cFdvY2hl VGFnZSh3cE9mZnNldCk7CiAgICAgICAgdmFyIGhldXRlS2V5ID0gWi5oZXV0ZVN0cjsKICAgICAg ICB2YXIgdm9uID0gdGFnZVswXSwgYmlzID0gdGFnZVs2XTsKCiAgICAgICAgZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ3dwLXplaXRyYXVtJykuaW5uZXJIVE1MID0KICAgICAgICAgICAgJzxzdHJv bmc+VkkzIOKAlCBXb2NoZW5wbGFuICcgKyBkYXR1bUt1cnpERSh2b24pICsgJ+KAkycgKyBkYXR1 bUt1cnpERShiaXMpICsgJyAnICsgdm9uLmdldEZ1bGxZZWFyKCkgKyAnPC9zdHJvbmc+JzsKCiAg ICAgICAgLy8gNiBTY2hpY2h0LVNwYWx0ZW46IERHTCBGL1MvTiArIFdERi9GQlAgRi9TL04KICAg ICAgICB2YXIgc3BhbHRlbiA9IFsKICAgICAgICAgICAgeyBjbHM6ICd3cC1zY2hpY2h0LWZydWVo JywgcHJlZml4ZTogW3sgY29kZTonRi1ER0wnLCBzdGVybjpmYWxzZSB9XSB9LAogICAgICAgICAg ICB7IGNsczogJ3dwLXNjaGljaHQtc3BhZXQnLCBwcmVmaXhlOiBbeyBjb2RlOidTLURHTCcsIHN0 ZXJuOmZhbHNlIH1dIH0sCiAgICAgICAgICAgIHsgY2xzOiAnd3Atc2NoaWNodC1uYWNodCcsIHBy ZWZpeGU6IFt7IGNvZGU6J04tREdMJywgc3Rlcm46ZmFsc2UgfV0gfSwKICAgICAgICAgICAgeyBj bHM6ICd3cC1zY2hpY2h0LWZydWVoJywgcHJlZml4ZTogW3sgY29kZTonRi1XREYnLCBzdGVybjpm YWxzZSB9LHsgY29kZTonRi1GQlAnLCBzdGVybjp0cnVlIH1dIH0sCiAgICAgICAgICAgIHsgY2xz OiAnd3Atc2NoaWNodC1zcGFldCcsIHByZWZpeGU6IFt7IGNvZGU6J1MtV0RGJywgc3Rlcm46ZmFs c2UgfSx7IGNvZGU6J1MtRkJQJywgc3Rlcm46dHJ1ZSB9XSB9LAogICAgICAgICAgICB7IGNsczog J3dwLXNjaGljaHQtbmFjaHQnLCBwcmVmaXhlOiBbeyBjb2RlOidOLVdERicsIHN0ZXJuOmZhbHNl IH0seyBjb2RlOidOLUZCUCcsIHN0ZXJuOnRydWUgfV0gfQogICAgICAgIF07CiAgICAgICAgdmFy IHd0TmFtZW4gPSBbJ01vJywnRGknLCdNaScsJ0RvJywnRnInLCdTYScsJ1NvJ107CgogICAgICAg IHZhciBibG9lY2tlSHRtbCA9ICcnOwogICAgICAgIHRhZ2UuZm9yRWFjaChmdW5jdGlvbihkLCBk aSkgewogICAgICAgICAgICB2YXIgZFN0ciA9IGRhdHVtU3RyKGQpOwogICAgICAgICAgICB2YXIg aW5mbyA9IFoudGFnSW5mb3NbZFN0cl0gfHwgeyB0eXA6ICdub3JtYWwnIH07CiAgICAgICAgICAg IHZhciBlaW50ciA9IChaLnBsYW51bmcuZWludHJhZWdlIHx8IHt9KVtkU3RyXSB8fCB7fTsKICAg ICAgICAgICAgdmFyIGlzdEhldXRlID0gZFN0ciA9PT0gaGV1dGVLZXk7CiAgICAgICAgICAgIHZh ciBpc3RGVCA9IGluZm8udHlwID09PSAnZmVpZXJ0YWcnOwogICAgICAgICAgICB2YXIgaXN0V0Ug PSBkaSA+PSA1OwoKICAgICAgICAgICAgdmFyIGJsb2NrQ2xzID0gJ3dwLXRhZ2Jsb2NrJzsKICAg ICAgICAgICAgaWYgKGlzdEhldXRlKSBibG9ja0NscyArPSAnIHdwLXRhZ2Jsb2NrLWhldXRlJzsK ICAgICAgICAgICAgaWYgKGlzdEZUKSBibG9ja0NscyArPSAnIHdwLXRhZ2Jsb2NrLWZ0JyArIChp bmZvLndpY2h0aWcgPyAnIHdwLXRhZ2Jsb2NrLWZ0LXdpY2h0aWcnIDogJycpOwogICAgICAgICAg ICBlbHNlIGlmIChpc3RXRSkgYmxvY2tDbHMgKz0gJyB3cC10YWdibG9jay13ZSc7CiAgICAgICAg ICAgIGVsc2UgaWYgKGluZm8udHlwID09PSAnZmVyaWVuJykgYmxvY2tDbHMgKz0gJyB3cC10YWdi bG9jay1ucyc7CgogICAgICAgICAgICAvLyBQZXJzb25lbiBqZSBTcGFsdGUgc2FtbWVsbiwgbmFj aCBQb3NpdGlvbiBzb3J0aWVydAogICAgICAgICAgICB2YXIgc3BhbHRlbkRhdGVuID0gc3BhbHRl bi5tYXAoZnVuY3Rpb24oc3ApIHsKICAgICAgICAgICAgICAgIHZhciBlcmcgPSBbXTsKICAgICAg ICAgICAgICAgIFoucGVyc29uZW4uZm9yRWFjaChmdW5jdGlvbihwKSB7CiAgICAgICAgICAgICAg ICAgICAgdmFyIHcgPSBlaW50cltTdHJpbmcocC5pZCldIHx8ICcnOwogICAgICAgICAgICAgICAg ICAgIHNwLnByZWZpeGUuZm9yRWFjaChmdW5jdGlvbihwcmVmKSB7CiAgICAgICAgICAgICAgICAg ICAgICAgIGlmICh3ID09PSBwcmVmLmNvZGUpIGVyZy5wdXNoKHsgaWQ6IHAuaWQsIG5hbWU6IHAu bmFtZSwgcG9zOiBwLnBvc2l0aW9uIHx8IDk5OSwgc3Rlcm46IHByZWYuc3Rlcm4gfSk7CiAgICAg ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGVy Zy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEucG9zIC0gYi5wb3M7IH0pOwogICAgICAg ICAgICAgICAgcmV0dXJuIGVyZzsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIC8vIEltbWVy IGV4YWt0IDggWmVpbGVuIHBybyBUYWcg4oCUIGhvbW9nZW5lcyBMYXlvdXQsIGdhcmFudGllcnQg ZWluc2VpdGlnZXIgRHJ1Y2sKICAgICAgICAgICAgdmFyIG1heFJvd3MgPSA4OwoKICAgICAgICAg ICAgLy8gVGFnLUxhYmVsIChsaW5rcywgdmVydGlrYWwva29tcGFrdCkKICAgICAgICAgICAgdmFy IHp1c2F0eiA9ICcnOwogICAgICAgICAgICBpZiAoaXN0RlQpIHp1c2F0eiA9ICc8c3BhbiBjbGFz cz0id3AtdGwtenVzYXR6IHdwLXRsLXotZnQiIHRpdGxlPSInICsgZXNjYXBlQXR0cihpbmZvLm5h bWUgfHwgJ0ZlaWVydGFnJykgKyAnIj7wn46JICcgKyBlc2NhcGVIVE1MKGluZm8ubmFtZSB8fCAn RmVpZXJ0YWcnKSArICc8L3NwYW4+JzsKICAgICAgICAgICAgZWxzZSBpZiAoaW5mby50eXAgPT09 ICdmZXJpZW4nKSB6dXNhdHogPSAnPHNwYW4gY2xhc3M9IndwLXRsLXp1c2F0eiB3cC10bC16LWZl cmllbiIgdGl0bGU9IicgKyBlc2NhcGVBdHRyKGluZm8ubmFtZSB8fCAnU2NodWxmZXJpZW4nKSAr ICciPvCfj5bvuI8gJyArIGVzY2FwZUhUTUwoaW5mby5uYW1lIHx8ICdTY2h1bGZlcmllbicpICsg Jzwvc3Bhbj4nOwogICAgICAgICAgICBpZiAoaW5mby5zb25kZXIpIHsKICAgICAgICAgICAgICAg IHZhciBzSWNvbiA9IGluZm8uc29uZGVyLmljb24gfHwgKGluZm8uc29uZGVyLnR5cCA9PT0gJ3dh cm51bmcnID8gJ+KaoCcgOiAn4oS5Jyk7CiAgICAgICAgICAgICAgICB2YXIgc1RpdCA9IGluZm8u c29uZGVyLnRpdGVsIHx8IHNvbmRlclRpdGVsQXVzVGV4dChpbmZvLnNvbmRlci50ZXh0KSB8fCAn SGlud2Vpcyc7CiAgICAgICAgICAgICAgICB6dXNhdHogKz0gJzxzcGFuIGNsYXNzPSJ3cC10bC16 dXNhdHogd3AtdGwtei0nICsgKGluZm8uc29uZGVyLnR5cCB8fCAnaGlud2VpcycpICsgJyIgdGl0 bGU9IicgKyBlc2NhcGVBdHRyKHNUaXQpICsgJyI+JyArIGVzY2FwZUhUTUwoc0ljb24pICsgJyAn ICsgZXNjYXBlSFRNTChzVGl0KSArICc8L3NwYW4+JzsKICAgICAgICAgICAgfQogICAgICAgICAg ICBpZiAoaW5mby5nZWJ1cnRzdGFnZSAmJiBpbmZvLmdlYnVydHN0YWdlLmxlbmd0aCkgewogICAg ICAgICAgICAgICAgenVzYXR6ICs9ICc8c3BhbiBjbGFzcz0id3AtdGwtenVzYXR6IHdwLXRsLXot Z2IiIHRpdGxlPSJHZWJ1cnRzdGFnIj7wn46CICcgKyBlc2NhcGVIVE1MKGluZm8uZ2VidXJ0c3Rh Z2UubWFwKGZ1bmN0aW9uKGcpe3JldHVybiBnLm5hbWU7fSkuam9pbignLCAnKSkgKyAnPC9zcGFu Pic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciB0YWdMYWJlbCA9ICc8ZGl2IGNsYXNz PSJ3cC10YWdibG9jay1sYWJlbCI+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0id3At dGwta29wZiI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJ3cC10bC13dCI+ JyArIHd0TmFtZW5bZGldICsgJy48L3NwYW4+JyArCiAgICAgICAgICAgICAgICAgICAgJzxzcGFu IGNsYXNzPSJ3cC10bC1kYXR1bSI+JyArIGRhdHVtRm9ybWF0REUoZFN0cikgKyAnPC9zcGFuPicg KwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgKHp1c2F0eiA/ICc8 ZGl2IGNsYXNzPSJ3cC10bC16dXNhdHotYm94Ij4nICsgenVzYXR6ICsgJzwvZGl2PicgOiAnJykg KwogICAgICAgICAgICAnPC9kaXY+JzsKCiAgICAgICAgICAgIC8vIFRhYmVsbGUgcHJvIFRhZyAo NiBTcGFsdGVuKTogREdMIEYvUy9OIHwgV0RGL0ZCUCBGL1MvTgogICAgICAgICAgICB2YXIgdGFi ID0gJzx0YWJsZSBjbGFzcz0id3AtdGFnYmxvY2stdGFiZWxsZSI+JyArCiAgICAgICAgICAgICAg ICAnPHRoZWFkPicgKwogICAgICAgICAgICAgICAgICAgICc8dHIgY2xhc3M9IndwLXRhZy1oMSI+ JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8dGggY29sc3Bhbj0iMyIgY2xhc3M9IndwLWgx LWRnbCI+REdMPC90aD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzx0aCBjb2xzcGFuPSIz IiBjbGFzcz0id3AtaDEtd2RmIj5XREYvRkJQPC90aD4nICsKICAgICAgICAgICAgICAgICAgICAn PC90cj4nICsKICAgICAgICAgICAgICAgICAgICAnPHRyIGNsYXNzPSJ3cC10YWctaDIiPicgKwog ICAgICAgICAgICAgICAgICAgICAgICAnPHRoIGNsYXNzPSJ3cC1zY2hpY2h0LWZydWVoIj5GcsO8 aDwvdGg+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8dGggY2xhc3M9IndwLXNjaGljaHQt c3BhZXQiPlNww6R0PC90aD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzx0aCBjbGFzcz0i d3Atc2NoaWNodC1uYWNodCI+TmFjaHQ8L3RoPicgKwogICAgICAgICAgICAgICAgICAgICAgICAn PHRoIGNsYXNzPSJ3cC1zY2hpY2h0LWZydWVoIj5GcsO8aDwvdGg+JyArCiAgICAgICAgICAgICAg ICAgICAgICAgICc8dGggY2xhc3M9IndwLXNjaGljaHQtc3BhZXQiPlNww6R0PC90aD4nICsKICAg ICAgICAgICAgICAgICAgICAgICAgJzx0aCBjbGFzcz0id3Atc2NoaWNodC1uYWNodCI+TmFjaHQ8 L3RoPicgKwogICAgICAgICAgICAgICAgICAgICc8L3RyPicgKwogICAgICAgICAgICAgICAgJzwv dGhlYWQ+JyArCiAgICAgICAgICAgICAgICAnPHRib2R5Pic7CiAgICAgICAgICAgIGZvciAodmFy IHIgPSAwOyByIDwgbWF4Um93czsgcisrKSB7CiAgICAgICAgICAgICAgICB0YWIgKz0gJzx0cj4n OwogICAgICAgICAgICAgICAgc3BhbHRlbkRhdGVuLmZvckVhY2goZnVuY3Rpb24oc3AsIHNpKSB7 CiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBzcFtyXTsKICAgICAgICAgICAgICAgICAgICB2 YXIgc2NoaWNodENscyA9IHNwYWx0ZW5bc2ldLmNsczsKICAgICAgICAgICAgICAgICAgICB2YXIg Y2VsbCA9ICcnOwogICAgICAgICAgICAgICAgICAgIGlmIChwKSB7CiAgICAgICAgICAgICAgICAg ICAgICAgIGNlbGwgPSAnPHNwYW4gY2xhc3M9IndwLW5hbWUnICsgKHAuc3Rlcm4gPyAnIHdwLW5h bWUtZmJwJyA6ICcnKSArICciIGRhdGEtcGVyc29uLWlkPSInICsgcC5pZCArICciPicgKwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBlSFRNTChwLm5hbWUpICsgKHAuc3Rlcm4gPyAn PHN1cD4qPC9zdXA+JyA6ICcnKSArICc8L3NwYW4+JzsKICAgICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAgICAgdGFiICs9ICc8dGQgY2xhc3M9IndwLXRkLW5hbWUgJyArIHNjaGlj aHRDbHMgKyAnIj4nICsgY2VsbCArICc8L3RkPic7CiAgICAgICAgICAgICAgICB9KTsKICAgICAg ICAgICAgICAgIHRhYiArPSAnPC90cj4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRhYiAr PSAnPC90Ym9keT48L3RhYmxlPic7CgogICAgICAgICAgICBibG9lY2tlSHRtbCArPSAnPGRpdiBj bGFzcz0iJyArIGJsb2NrQ2xzICsgJyI+JyArIHRhZ0xhYmVsICsgJzxkaXYgY2xhc3M9IndwLXRh Z2Jsb2NrLWluaGFsdCI+JyArIHRhYiArICc8L2Rpdj48L2Rpdj4nOwogICAgICAgIH0pOwoKICAg ICAgICAvLyBGb290ZXI6IEhpbndlaXMgdW5kIERydWNrZGF0dW0KICAgICAgICB2YXIgamV0enQg PSBuZXcgRGF0ZSgpOwogICAgICAgIHZhciBwYWQgPSBmdW5jdGlvbihuKXsgcmV0dXJuIChuPDEw PycwJzonJykgKyBuOyB9OwogICAgICAgIHZhciBkcnVja1plaXQgPSBkYXR1bUZvcm1hdERFKFou aGV1dGVTdHIpICsgJyAnICsgcGFkKGpldHp0LmdldEhvdXJzKCkpICsgJzonICsgcGFkKGpldHp0 LmdldE1pbnV0ZXMoKSk7CiAgICAgICAgdmFyIGZvb3RlciA9ICc8ZGl2IGNsYXNzPSJ3cC1zZWl0 ZS1mdXNzIj4nICsKICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJ3cC1mdXNzLW5vdGUiPjxzdXA+ Kjwvc3VwPiBCZXNldHp1bmcgZWluZXIgU3RyZWlmZSBhdXMgZGVtIEZ1bmt0aW9uc2Jlc2V0enVu Z3NwbGFuPC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9IndwLWZ1c3MtZHJ1Y2si PkRydWNrOiAnICsgZHJ1Y2taZWl0ICsgJzwvc3Bhbj4nICsKICAgICAgICAnPC9kaXY+JzsKCiAg ICAgICAgLy8gU2VpdGVuLUtvcGYgKG9wdGlvbmFsIGbDvHIgQmlsZHNjaGlybTsgd2lyZCBiZWlt IERydWNrIG9obmVoaW4gYXVzZ2VibGVuZGV0IGF1w59lcmhhbGIpCiAgICAgICAgdmFyIHNlaXRl S29wZiA9ICc8ZGl2IGNsYXNzPSJ3cC1zZWl0ZS1rb3BmIj4nICsKICAgICAgICAgICAgJzxoMT5W ZXJrZWhyc2luc3Bla3Rpb24gMyDigJQgV29jaGVucGxhbiB2b24gPHN0cm9uZz4nICsgZGF0dW1L dXJ6REUodm9uKSArICc8L3N0cm9uZz4gYmlzIDxzdHJvbmc+JyArIGRhdHVtS3VyekRFKGJpcykg KyAnPC9zdHJvbmc+ICcgKyB2b24uZ2V0RnVsbFllYXIoKSArICc8L2gxPicgKwogICAgICAgICc8 L2Rpdj4nOwoKICAgICAgICB2YXIgc2Nyb2xsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLndw LXNjcm9sbCcpOwogICAgICAgIGlmIChzY3JvbGwpIHNjcm9sbC5pbm5lckhUTUwgPSAnPGRpdiBj bGFzcz0id3Atc2VpdGUiPicgKyBzZWl0ZUtvcGYgKyBibG9lY2tlSHRtbCArIGZvb3RlciArICc8 L2Rpdj4nOwogICAgfQoKICAgIC8vID09PT09IFBlcnPDtm5saWNoZXIgUGxhbiA9PT09PQoKICAg IGZ1bmN0aW9uIHBwUmVuZGVybigpIHsKICAgICAgICAvLyBEcm9wZG93biBiZWbDvGxsZW4KICAg ICAgICB2YXIgc2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BwLXBlcnNvbi1hdXN3YWhs Jyk7CiAgICAgICAgaWYgKHNlbC5vcHRpb25zLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICBa LnBlcnNvbmVuLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAgICAgICAgICAgICAgdmFyIG9wdCA9 IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwogICAgICAgICAgICAgICAgb3B0LnZh bHVlID0gcC5pZDsKICAgICAgICAgICAgICAgIG9wdC50ZXh0Q29udGVudCA9IHAubmFtZSArIChw LnZvcm5hbWUgPyAnLCAnICsgcC52b3JuYW1lIDogJycpICsgJyAoJyArIHAuZ3J1cHBlICsgJykn OwogICAgICAgICAgICAgICAgc2VsLmFwcGVuZENoaWxkKG9wdCk7CiAgICAgICAgICAgIH0pOwog ICAgICAgIH0KCiAgICAgICAgdmFyIHBpZCA9IHNlbC52YWx1ZTsKICAgICAgICBpZiAoIXBpZCAm JiBaLnBlcnNvbmVuLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgcGlkID0gU3RyaW5nKFoucGVy c29uZW5bMF0uaWQpOwogICAgICAgICAgICBzZWwudmFsdWUgPSBwaWQ7CiAgICAgICAgfQogICAg ICAgIHZhciBwZXJzb24gPSBaLnBlcnNvbmVuLmZpbmQoZnVuY3Rpb24ocCkgeyByZXR1cm4gU3Ry aW5nKHAuaWQpID09PSBTdHJpbmcocGlkKTsgfSk7CiAgICAgICAgaWYgKCFwZXJzb24pIHJldHVy bjsKCiAgICAgICAgLy8gVGl0ZWwKICAgICAgICB2YXIgdGl0ZWxUZXh0ID0gJ1BlcnPDtm5saWNo ZXIgRGllbnN0cGxhbiB2b24gJyArIHBlcnNvbi5uYW1lICsKICAgICAgICAgICAgKHBlcnNvbi52 b3JuYW1lID8gJywgJyArIHBlcnNvbi52b3JuYW1lIDogJycpICsgJyDigJQgJyArIChaLmFkbWlu LmphaHIgfHwgJycpOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcC10aXRlbCcp LnRleHRDb250ZW50ID0gdGl0ZWxUZXh0OwoKICAgICAgICAvLyAxMiBNb25hdHNibMO2Y2tlCiAg ICAgICAgdmFyIGphaHIgPSBaLmFkbWluLmphaHIgfHwgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigp OwogICAgICAgIHZhciBtb25hdGVIdG1sID0gJyc7CiAgICAgICAgdmFyIHN0YXRzID0geyBmcnVl aDogMCwgc3BhZXQ6IDAsIG5hY2h0OiAwLCB1cmxhdWI6IDAsIGtyYW5rOiAwLCBsZWhyZ2FuZzog MCwgZnJlaTogMCwgc29uZGVyOiAwLCBnZXNhbXQ6IDAgfTsKICAgICAgICB2YXIgbW9OYW1lbiA9 IFsnSmFudWFyJywnRmVicnVhcicsJ03DpHJ6JywnQXByaWwnLCdNYWknLCdKdW5pJywnSnVsaScs J0F1Z3VzdCcsJ1NlcHRlbWJlcicsJ09rdG9iZXInLCdOb3ZlbWJlcicsJ0RlemVtYmVyJ107CiAg ICAgICAgdmFyIHd0S3VyeiA9IFsnTW8nLCdEaScsJ01pJywnRG8nLCdGcicsJ1NhJywnU28nXTsK CiAgICAgICAgZm9yICh2YXIgbSA9IDA7IG0gPCAxMzsgbSsrKSB7CiAgICAgICAgICAgIC8vIG09 MTIgLT4gQnVmZmVyLUphbnVhciBkZXMgRm9sZ2VqYWhyZXMgKERhdGUtS29uc3RydWt0b3Igbm9y bWFsaXNpZXJ0OiBqYWhyPTIwMjYsIG09MTIgLT4gMjAyNy0wMSkKICAgICAgICAgICAgdmFyIG1v bmF0TGFiZWwgPSBtID09PSAxMiA/IChtb05hbWVuWzBdICsgJyAnICsgKGphaHIgKyAxKSkgOiBt b05hbWVuW21dOwogICAgICAgICAgICBtb25hdGVIdG1sICs9ICc8ZGl2IGNsYXNzPSJwcC1tb25h dCI+PGRpdiBjbGFzcz0icHAtbW9uYXQta29wZiI+JyArIG1vbmF0TGFiZWwgKyAnPC9kaXY+JzsK ICAgICAgICAgICAgbW9uYXRlSHRtbCArPSAnPGRpdiBjbGFzcz0icHAtbW9uYXQtZ3JpZCI+JzsK CiAgICAgICAgICAgIC8vIFdvY2hlbnRhZy1IZWFkZXIKICAgICAgICAgICAgd3RLdXJ6LmZvckVh Y2goZnVuY3Rpb24odykgewogICAgICAgICAgICAgICAgbW9uYXRlSHRtbCArPSAnPGRpdiBjbGFz cz0icHAtd3Qta29wZiI+JyArIHcgKyAnPC9kaXY+JzsKICAgICAgICAgICAgfSk7CgogICAgICAg ICAgICAvLyBFcnN0ZXIgVGFnOiB3ZWxjaGVyIFdvY2hlbnRhZz8KICAgICAgICAgICAgdmFyIGVy c3RlclRhZyA9IG5ldyBEYXRlKGphaHIsIG0sIDEpOwogICAgICAgICAgICB2YXIgc3RhcnRXdCA9 IGVyc3RlclRhZy5nZXREYXkoKTsgLy8gMD1TbwogICAgICAgICAgICBzdGFydFd0ID0gc3RhcnRX dCA9PT0gMCA/IDYgOiBzdGFydFd0IC0gMTsgLy8gMD1NbwoKICAgICAgICAgICAgLy8gTGVlcmUg WmVsbGVuIHZvciBkZW0gMS4KICAgICAgICAgICAgZm9yICh2YXIgbGVlciA9IDA7IGxlZXIgPCBz dGFydFd0OyBsZWVyKyspIHsKICAgICAgICAgICAgICAgIG1vbmF0ZUh0bWwgKz0gJzxkaXYgY2xh c3M9InBwLXRhZyBwcC10YWctbGVlciI+PC9kaXY+JzsKICAgICAgICAgICAgfQoKICAgICAgICAg ICAgdmFyIHRhZ2VJbU1vbmF0ID0gbmV3IERhdGUoamFociwgbSArIDEsIDApLmdldERhdGUoKTsK ICAgICAgICAgICAgZm9yICh2YXIgdCA9IDE7IHQgPD0gdGFnZUltTW9uYXQ7IHQrKykgewogICAg ICAgICAgICAgICAgdmFyIGQgPSBuZXcgRGF0ZShqYWhyLCBtLCB0KTsKICAgICAgICAgICAgICAg IHZhciBkU3RyID0gZGF0dW1TdHIoZCk7CiAgICAgICAgICAgICAgICB2YXIgaW5mbyA9IFoudGFn SW5mb3NbZFN0cl0gfHwgeyB0eXA6ICdub3JtYWwnIH07CiAgICAgICAgICAgICAgICB2YXIgZWlu dHIgPSAoWi5wbGFudW5nLmVpbnRyYWVnZSB8fCB7fSlbZFN0cl0gfHwge307CiAgICAgICAgICAg ICAgICB2YXIgd2VydCA9IGVpbnRyW1N0cmluZyhwaWQpXSB8fCAnJzsKICAgICAgICAgICAgICAg IHZhciBmYXJiZW4gPSBaLmNvZGVNYXBbd2VydF0gfHwge307CiAgICAgICAgICAgICAgICAvLyBL b21tZW50YXI6IHNlaXQgU2NoZW1hLVVtc3RlbGx1bmcgaXN0IGRlciBFaW50cmFnIGVpbiBPYmpl a3QKICAgICAgICAgICAgICAgIC8vICh7dGV4dCwgZ2VhZW5kZXJ0QW0sIGdlYWVuZGVydFZvbn0p IOKAlCB2b3JoZXIgZWluIFBsYWluLVN0cmluZy4KICAgICAgICAgICAgICAgIC8vIGtvbW1lbnRh clRleHQoKSBoYWVuZGVsdCBiZWlkZSBGb3JtZW4gdW5kIGdpYnQgZWluZW4gc2F1YmVyZW4KICAg ICAgICAgICAgICAgIC8vIFN0cmluZyB6dXJ1ZWNrIChzb25zdCBsYW5kZXRlICJbb2JqZWN0IE9i amVjdF0iIGltIFRvb2x0aXApLgogICAgICAgICAgICAgICAgdmFyIGtvbW1lbnRhciA9IGtvbW1l bnRhclRleHQoKChaLnBsYW51bmcua29tbWVudGFyZSB8fCB7fSlbZFN0cl0gfHwge30pW1N0cmlu ZyhwaWQpXSk7CiAgICAgICAgICAgICAgICB2YXIgd2UgPSBpc3RXb2NoZW5lbmRlKGQpOwoKICAg ICAgICAgICAgICAgIHZhciB0YWdDbHMgPSAncHAtdGFnJzsKICAgICAgICAgICAgICAgIGlmIChk U3RyID09PSBaLmhldXRlU3RyKSB0YWdDbHMgKz0gJyBwcC10YWctaGV1dGUnOwogICAgICAgICAg ICAgICAgaWYgKGluZm8udHlwID09PSAnZmVpZXJ0YWcnKSB0YWdDbHMgKz0gJyBwcC10YWctZnQn OwogICAgICAgICAgICAgICAgZWxzZSBpZiAod2UpIHRhZ0NscyArPSAnIHBwLXRhZy13ZSc7CiAg ICAgICAgICAgICAgICBpZiAoa29tbWVudGFyKSB0YWdDbHMgKz0gJyBwcC10YWcta29tbWVudGFy JzsKCiAgICAgICAgICAgICAgICB2YXIgd2VydFN0eWxlID0gJyc7CiAgICAgICAgICAgICAgICB2 YXIgd2VydFRleHQgPSAnJzsKICAgICAgICAgICAgICAgIGlmICh3ZXJ0ICYmIGZhcmJlbi5oaW50 ZXJncnVuZCkgewogICAgICAgICAgICAgICAgICAgIHdlcnRTdHlsZSA9ICdiYWNrZ3JvdW5kOicg KyBlc2NhcGVBdHRyKGZhcmJlbi5oaW50ZXJncnVuZCkgKyAnO2NvbG9yOicgKyBlc2NhcGVBdHRy KGZhcmJlbi5zY2hyaWZ0IHx8ICcjMDAwJyk7CiAgICAgICAgICAgICAgICAgICAgd2VydFRleHQg PSBmYXJiZW4ua3VlcnplbCB8fCB3ZXJ0OwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3ZXJ0 KSB7CiAgICAgICAgICAgICAgICAgICAgd2VydFRleHQgPSB3ZXJ0OwogICAgICAgICAgICAgICAg fQoKICAgICAgICAgICAgICAgIC8vIFN0YXRpc3RpawogICAgICAgICAgICAgICAgaWYgKHdlcnQp IHsKICAgICAgICAgICAgICAgICAgICBpZiAod2VydC5pbmRleE9mKCdGLURHTCcpID09PSAwKSBz dGF0cy5mcnVlaCsrOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdlcnQuaW5kZXhPZign Uy1ER0wnKSA9PT0gMCkgc3RhdHMuc3BhZXQrKzsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlm ICh3ZXJ0LmluZGV4T2YoJ04tREdMJykgPT09IDApIHN0YXRzLm5hY2h0Kys7CiAgICAgICAgICAg ICAgICAgICAgaWYgKHdlcnQgPT09ICdVcmwnKSBzdGF0cy51cmxhdWIrKzsKICAgICAgICAgICAg ICAgICAgICBpZiAod2VydCA9PT0gJ2tyJyB8fCB3ZXJ0ID09PSAnS3VyJykgc3RhdHMua3Jhbmsr KzsKICAgICAgICAgICAgICAgICAgICBpZiAod2VydCA9PT0gJ0xHJyB8fCB3ZXJ0ID09PSAnU2Vt Jykgc3RhdHMubGVocmdhbmcrKzsKICAgICAgICAgICAgICAgICAgICBpZiAod2VydCA9PT0gJ3dm cicgfHwgd2VydCA9PT0gJ2RmcicpIHN0YXRzLmZyZWkrKzsKICAgICAgICAgICAgICAgICAgICBp ZiAod2VydC5pbmRleE9mKCdER0wnKSA+PSAwIHx8IHdlcnQuaW5kZXhPZignV0RGJykgPj0gMCB8 fCB3ZXJ0LmluZGV4T2YoJ0ZCUCcpID49IDApIHN0YXRzLmdlc2FtdCsrOwogICAgICAgICAgICAg ICAgfQoKICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IHdlcnQ7CiAgICAgICAgICAgICAgICBp ZiAoa29tbWVudGFyKSB0aXRsZSArPSAnIHwgJyArIGtvbW1lbnRhcjsKICAgICAgICAgICAgICAg IGlmIChpbmZvLm5hbWUpIHRpdGxlICs9ICcgfCAnICsgaW5mby5uYW1lOwoKICAgICAgICAgICAg ICAgIG1vbmF0ZUh0bWwgKz0gJzxkaXYgY2xhc3M9IicgKyB0YWdDbHMgKyAnIiB0aXRsZT0iJyAr IGVzY2FwZUF0dHIodGl0bGUpICsgJyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNs YXNzPSJwcC10YWctbnIiPicgKyB0ICsgJzwvc3Bhbj4nOwogICAgICAgICAgICAgICAgaWYgKHdl cnRUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgbW9uYXRlSHRtbCArPSAnPHNwYW4gY2xhc3M9 InBwLXRhZy13ZXJ0IiBzdHlsZT0iJyArIHdlcnRTdHlsZSArICciPicgKyBlc2NhcGVIVE1MKHdl cnRUZXh0KSArICc8L3NwYW4+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG1v bmF0ZUh0bWwgKz0gJzwvZGl2Pic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG1vbmF0ZUh0 bWwgKz0gJzwvZGl2PjwvZGl2Pic7CiAgICAgICAgfQogICAgICAgIGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdwcC1tb25hdGUnKS5pbm5lckhUTUwgPSBtb25hdGVIdG1sOwoKICAgICAgICAvLyBa dXNhbW1lbmZhc3N1bmcKICAgICAgICB2YXIgc3VtSHRtbCA9ICc8aDM+WnVzYW1tZW5mYXNzdW5n ICcgKyAoWi5hZG1pbi5qYWhyIHx8ICcnKSArICc8L2gzPjxkaXYgY2xhc3M9InBwLXN1bW1hcnkt Z3JpZCI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJwcC1zdGF0LWl0ZW0iPjxzcGFuIGNs YXNzPSJwcC1zdGF0LXphaGwiIHN0eWxlPSJjb2xvcjp2YXIoLS1mYXJiZS1mcnVlaCkiPicgKyBz dGF0cy5mcnVlaCArICc8L3NwYW4+PHNwYW4gY2xhc3M9InBwLXN0YXQtbGFiZWwiPkZyw7xoZGll bnN0ZTwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9InBwLXN0YXQtaXRl bSI+PHNwYW4gY2xhc3M9InBwLXN0YXQtemFobCIgc3R5bGU9ImNvbG9yOnZhcigtLWZhcmJlLXNw YWV0KSI+JyArIHN0YXRzLnNwYWV0ICsgJzwvc3Bhbj48c3BhbiBjbGFzcz0icHAtc3RhdC1sYWJl bCI+U3DDpHRkaWVuc3RlPC9zcGFuPjwvZGl2PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0i cHAtc3RhdC1pdGVtIj48c3BhbiBjbGFzcz0icHAtc3RhdC16YWhsIiBzdHlsZT0iY29sb3I6dmFy KC0tZmFyYmUtbmFjaHQpIj4nICsgc3RhdHMubmFjaHQgKyAnPC9zcGFuPjxzcGFuIGNsYXNzPSJw cC1zdGF0LWxhYmVsIj5OYWNodGRpZW5zdGU8L3NwYW4+PC9kaXY+JyArCiAgICAgICAgICAgICc8 ZGl2IGNsYXNzPSJwcC1zdGF0LWl0ZW0iPjxzcGFuIGNsYXNzPSJwcC1zdGF0LXphaGwiPicgKyBz dGF0cy5nZXNhbXQgKyAnPC9zcGFuPjxzcGFuIGNsYXNzPSJwcC1zdGF0LWxhYmVsIj5EaWVuc3Rl IGdlc2FtdDwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9InBwLXN0YXQt aXRlbSI+PHNwYW4gY2xhc3M9InBwLXN0YXQtemFobCI+JyArIHN0YXRzLnVybGF1YiArICc8L3Nw YW4+PHNwYW4gY2xhc3M9InBwLXN0YXQtbGFiZWwiPlVybGF1Yjwvc3Bhbj48L2Rpdj4nICsKICAg ICAgICAgICAgJzxkaXYgY2xhc3M9InBwLXN0YXQtaXRlbSI+PHNwYW4gY2xhc3M9InBwLXN0YXQt emFobCI+JyArIHN0YXRzLmxlaHJnYW5nICsgJzwvc3Bhbj48c3BhbiBjbGFzcz0icHAtc3RhdC1s YWJlbCI+TGVocmdhbmcvU2VtaW5hcjwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYg Y2xhc3M9InBwLXN0YXQtaXRlbSI+PHNwYW4gY2xhc3M9InBwLXN0YXQtemFobCI+JyArIHN0YXRz LmZyZWkgKyAnPC9zcGFuPjxzcGFuIGNsYXNzPSJwcC1zdGF0LWxhYmVsIj5EaWVuc3RmcmVpPC9z cGFuPjwvZGl2PicgKwogICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgncHAtc3VtbWFyeScpLmlubmVySFRNTCA9IHN1bUh0bWw7CiAgICB9CgpmdW5j dGlvbiB3cFZvcndvY2hlKCkgICAgICAgeyB3cE9mZnNldC0tOyB3cFJlbmRlcm4oKTsgfQpmdW5j dGlvbiB3cE5hZWNoc3RlV29jaGUoKSAgeyB3cE9mZnNldCsrOyB3cFJlbmRlcm4oKTsgfQpmdW5j dGlvbiB3cEFrdHVlbGxlV29jaGUoKSAgeyB3cE9mZnNldCA9IDA7IHdwUmVuZGVybigpOyB9Cgpl eHBvcnQgewogICAgd3BXb2NoZVRhZ2UsIHdwUmVuZGVybiwgcHBSZW5kZXJuLAogICAgd3BWb3J3 b2NoZSwgd3BOYWVjaHN0ZVdvY2hlLCB3cEFrdHVlbGxlV29jaGUKfTsK ### FILE: rollback.bat | 5223 QGVjaG8gb2ZmCnNldGxvY2FsCnNldCAiQkRJUj0lfmRwMCIKZWNoby4KZWNobyAgPT09IFZJMyBE R0wtUGxhbnVuZzogUm9sbGJhY2sgKG9mZmxpbmUpID09PQplY2hvICBTdGVsbHQgZGVuIFN0YW5k IHZvciBkZW0gbGV0enRlbiBVcGRhdGUgd2llZGVyIGhlci4KZWNoby4KcG93ZXJzaGVsbCAtTm9Q cm9maWxlIC1FeGVjdXRpb25Qb2xpY3kgQnlwYXNzIC1Db21tYW5kICIkbT0nIyMjIFBTJysnQ09E RSAjIyMnOyRtZT1bSU8uRmlsZV06OlJlYWRBbGxUZXh0KCclfmYwJyk7JHA9JG1lLkluZGV4T2Yo JG0pOyRubD0kbWUuSW5kZXhPZihbY2hhcl0xMCwkcCk7JHJvb3Q9JGVudjpCRElSLlRyaW1FbmQo J1wnKTskc3RvcEJhdD0nc3RvcC5iYXQnOyRzdGFydEJhdD0nZGdsLmJhdCc7SW52b2tlLUV4cHJl c3Npb24gJG1lLlN1YnN0cmluZygkbmwrMSkiCmVjaG8uCnBhdXNlCmV4aXQgL2IKIyMjIFBTQ09E RSAjIyMKJEVycm9yQWN0aW9uUHJlZmVyZW5jZSA9ICdTdG9wJwojIEVyd2FydGV0IGltIFNjb3Bl OiAkcm9vdCwgJHN0b3BCYXQsICRzdGFydEJhdAokX3N0b3BOYW1lICA9IGlmICgkbnVsbCAtbmUg JHN0b3BCYXQpICB7ICRzdG9wQmF0IH0gIGVsc2UgeyAnc3RvcC5iYXQnIH0KJF9zdGFydE5hbWUg PSBpZiAoJG51bGwgLW5lICRzdGFydEJhdCkgeyAkc3RhcnRCYXQgfSBlbHNlIHsgJ2RnbC5iYXQn IH0KCiMgQXVzc2NobHVzc2xpc3RlIChpZGVudGlzY2ggenUgdXBkYXRlLnBzMSk6IC5iYWNrdXAg bmllIGFuZmFzc2VuLCBwbHVzIGdyb8OfZQojIENvbnRlbnQtT3JkbmVyIGF1cyAuYmFja3VwaWdu b3JlIOKAlCBkaWVzZSBibGVpYmVuIGJlaW0gUm9sbGJhY2sgdW52ZXLDpG5kZXJ0LgokX2V4Y2wg PSBAKCcuYmFja3VwJykKJF9pZ25vcmVGaWxlID0gSm9pbi1QYXRoICRyb290ICcuYmFja3VwaWdu b3JlJwppZiAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkX2lnbm9yZUZpbGUpIHsKICAgICRfZXh0 cmEgPSBAKEdldC1Db250ZW50IC1MaXRlcmFsUGF0aCAkX2lnbm9yZUZpbGUgfCBGb3JFYWNoLU9i amVjdCB7ICRfLlRyaW0oKSB9IHwKICAgICAgICAgICAgICAgIFdoZXJlLU9iamVjdCB7ICRfIC1u ZSAnJyAtYW5kIC1ub3QgJF8uU3RhcnRzV2l0aCgnIycpIH0pCiAgICAkX2V4Y2wgPSAkX2V4Y2wg KyAkX2V4dHJhCn0KJF9leGNsID0gQCgkX2V4Y2wpICAgIyBzdHJpa3QgYWxzIEFycmF5ICh2ZXJo aW5kZXJ0IFNrYWxhci1FbnRwYWNrdW5nKQoKJGJrID0gSm9pbi1QYXRoICRyb290ICcuYmFja3Vw JwppZiAoLW5vdCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkYmspKSB7CiAgICBXcml0ZS1Ib3N0 ICJLZWluIEJhY2t1cC1WZXJ6ZWljaG5pcyBnZWZ1bmRlbi4gU2ljaGVydW5nZW4gZW50c3RlaGVu IGF1dG9tYXRpc2NoIGJlaW0gZXJzdGVuIFVwZGF0ZS4iIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAg ICByZXR1cm4KfQokc25hcHMgPSBHZXQtQ2hpbGRJdGVtIC1MaXRlcmFsUGF0aCAkYmsgLUZpbHRl ciAnc25hcHNob3QtKi56aXAnIC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlIHwgU29ydC1P YmplY3QgTmFtZSAtRGVzY2VuZGluZwppZiAoLW5vdCAkc25hcHMpIHsKICAgIFdyaXRlLUhvc3Qg IktlaW5lIFNpY2hlcnVuZ2VuIHZvcmhhbmRlbi4gU2ljaGVydW5nZW4gZW50c3RlaGVuIGF1dG9t YXRpc2NoIGJlaW0gZXJzdGVuIFVwZGF0ZS4iIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICByZXR1 cm4KfQoKV3JpdGUtSG9zdCAiIgpXcml0ZS1Ib3N0ICJWZXJmw7xnYmFyZSBTaWNoZXJ1bmdlbiAo bmV1ZXN0ZSB6dWVyc3QpOiIgLUZvcmVncm91bmRDb2xvciBDeWFuCiRpID0gMApmb3JlYWNoICgk cyBpbiAkc25hcHMpIHsKICAgICRzaXplID0gJ3swOk4xfSBNQicgLWYgKCRzLkxlbmd0aCAvIDFN QikKICAgICR0YWcgID0gaWYgKCRpIC1lcSAwKSB7ICIgIDwtIG5ldWVzdGUiIH0gZWxzZSB7ICIi IH0KICAgIFdyaXRlLUhvc3QgKCIgIFt7MH1dIHsxfSAgKHsyfSl7M30iIC1mICRpLCAkcy5OYW1l LCAkc2l6ZSwgJHRhZykKICAgICRpKysKfQpXcml0ZS1Ib3N0ICIiCiRjID0gUmVhZC1Ib3N0ICJO dW1tZXIgZGVyIFNpY2hlcnVuZyB3w6RobGVuIChFbnRlciA9IG5ldWVzdGUgWzBdKSIKaWYgKCRj IC1lcSAnJykgeyAkYyA9ICcwJyB9CmlmICgkYyAtbm90bWF0Y2ggJ15cZCskJyAtb3IgW2ludF0k YyAtZ2UgJHNuYXBzLkNvdW50KSB7CiAgICBXcml0ZS1Ib3N0ICJVbmfDvGx0aWdlIEF1c3dhaGwu IEFiZ2Vicm9jaGVuLiIgLUZvcmVncm91bmRDb2xvciBZZWxsb3cKICAgIHJldHVybgp9CiRjaG9z ZW4gPSAkc25hcHNbW2ludF0kY10KJHppcCAgICA9ICRjaG9zZW4uRnVsbE5hbWUKCiMgSW50ZWdy aXTDpHQgZGVyIFNpY2hlcnVuZyBwcsO8ZmVuLCBCRVZPUiBpcmdlbmRldHdhcyBlcnNldHp0IHdp cmQKQWRkLVR5cGUgLUFzc2VtYmx5TmFtZSBTeXN0ZW0uSU8uQ29tcHJlc3Npb24uRmlsZVN5c3Rl bQp0cnkgewogICAgJHogPSBbU3lzdGVtLklPLkNvbXByZXNzaW9uLlppcEZpbGVdOjpPcGVuUmVh ZCgkemlwKQogICAgJG51bGwgPSAkei5FbnRyaWVzLkNvdW50CiAgICAkei5EaXNwb3NlKCkKfSBj YXRjaCB7CiAgICBXcml0ZS1Ib3N0ICJGRUhMRVI6IFNpY2hlcnVuZyBpc3QgYmVzY2jDpGRpZ3Qg 4oCUIFJvbGxiYWNrIGFiZ2Vicm9jaGVuOiAkemlwIiAtRm9yZWdyb3VuZENvbG9yIFJlZAogICAg cmV0dXJuCn0KCldyaXRlLUhvc3QgIiIKJHluID0gUmVhZC1Ib3N0ICJTdGFuZCAnJCgkY2hvc2Vu Lk5hbWUpJyB3aWVkZXJoZXJzdGVsbGVuPyBEZXIgYWt0dWVsbGUgU3RhbmQgd2lyZCBlcnNldHp0 ISBbai9OXSIKaWYgKCR5biAtbm90aW4gJ2onLCdKJywneScsJ1knKSB7IFdyaXRlLUhvc3QgIkFi Z2Vicm9jaGVuLiI7IHJldHVybiB9CgojIFNlcnZlciBzdG9wcGVuCldyaXRlLUhvc3QgIlN0b3Bw ZSBTZXJ2ZXIgLi4uIgppZiAoJF9zdG9wTmFtZSAtbmUgJycpIHsKICAgICRzcCA9IEpvaW4tUGF0 aCAkcm9vdCAkX3N0b3BOYW1lCiAgICBpZiAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkc3ApIHsg JiBjbWQgL2MgImAiJHNwYCIiOyBTdGFydC1TbGVlcCAtU2Vjb25kcyAyIH0KICAgIGVsc2UgeyBX cml0ZS1Ib3N0ICIgIChTdG9wLVNrcmlwdCAnJF9zdG9wTmFtZScgbmljaHQgZ2VmdW5kZW4g4oCU IMO8YmVyc3BydW5nZW4pIiAtRm9yZWdyb3VuZENvbG9yIERhcmtZZWxsb3cgfQp9IGVsc2UgeyBX cml0ZS1Ib3N0ICIgIChLZWluIFN0b3AtU2tyaXB0IGtvbmZpZ3VyaWVydCDigJQgw7xiZXJzcHJ1 bmdlbikiIC1Gb3JlZ3JvdW5kQ29sb3IgRGFya1llbGxvdyB9CgojIEFrdHVlbGxlbiBTdGFuZCBi ZWlzZWl0ZSB2ZXJzY2hpZWJlbiAoU2ljaGVyaGVpdHNuZXR6LCBrZWluIERhdGVudmVybHVzdCkK JGFzaWRlID0gSm9pbi1QYXRoICRiayAoIl92b3Itcm9sbGJhY2stIiArIChHZXQtRGF0ZSAtRm9y bWF0ICd5eXl5TU1kZC1ISG1tc3MnKSkKTmV3LUl0ZW0gLUl0ZW1UeXBlIERpcmVjdG9yeSAtUGF0 aCAkYXNpZGUgLUZvcmNlIHwgT3V0LU51bGwKR2V0LUNoaWxkSXRlbSAtTGl0ZXJhbFBhdGggJHJv b3QgLUZvcmNlIHwgV2hlcmUtT2JqZWN0IHsgJF9leGNsIC1ub3Rjb250YWlucyAkXy5OYW1lIH0g fCBGb3JFYWNoLU9iamVjdCB7CiAgICBNb3ZlLUl0ZW0gLUxpdGVyYWxQYXRoICRfLkZ1bGxOYW1l IC1EZXN0aW5hdGlvbiAoSm9pbi1QYXRoICRhc2lkZSAkXy5OYW1lKSAtRm9yY2UKfQoKIyBTaWNo ZXJ1bmcgd2llZGVyaGVyc3RlbGxlbgp0cnkgewogICAgRXhwYW5kLUFyY2hpdmUgLUxpdGVyYWxQ YXRoICR6aXAgLURlc3RpbmF0aW9uUGF0aCAkcm9vdCAtRm9yY2UKICAgIFdyaXRlLUhvc3QgIlN0 YW5kIHdpZWRlcmhlcmdlc3RlbGx0OiAkKCRjaG9zZW4uTmFtZSkiIC1Gb3JlZ3JvdW5kQ29sb3Ig R3JlZW4KfSBjYXRjaCB7CiAgICBXcml0ZS1Ib3N0ICJGRUhMRVIgYmVpbSBXaWVkZXJoZXJzdGVs bGVuIOKAlCBtYWNoZSDDhG5kZXJ1bmcgcsO8Y2tnw6RuZ2lnIC4uLiIgLUZvcmVncm91bmRDb2xv ciBSZWQKICAgIEdldC1DaGlsZEl0ZW0gLUxpdGVyYWxQYXRoICRyb290IC1Gb3JjZSB8IFdoZXJl LU9iamVjdCB7ICRfZXhjbCAtbm90Y29udGFpbnMgJF8uTmFtZSB9IHwKICAgICAgICBSZW1vdmUt SXRlbSAtUmVjdXJzZSAtRm9yY2UgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGludWUKICAgIEdl dC1DaGlsZEl0ZW0gLUxpdGVyYWxQYXRoICRhc2lkZSAtRm9yY2UgfCBGb3JFYWNoLU9iamVjdCB7 CiAgICAgICAgTW92ZS1JdGVtIC1MaXRlcmFsUGF0aCAkXy5GdWxsTmFtZSAtRGVzdGluYXRpb24g KEpvaW4tUGF0aCAkcm9vdCAkXy5OYW1lKSAtRm9yY2UKICAgIH0KICAgIFdyaXRlLUhvc3QgIlZv cmhlcmlnZXIgWnVzdGFuZCB3aWVkZXJoZXJnZXN0ZWxsdCDigJQga2VpbiBEYXRlbnZlcmx1c3Qu IiAtRm9yZWdyb3VuZENvbG9yIFllbGxvdwogICAgcmV0dXJuCn0KCiMgQmVpc2VpdGUtT3JkbmVy IGF1ZnLDpHVtZW46IG51ciBkaWUgbGV0enRlbiAyIGJlaGFsdGVuCkdldC1DaGlsZEl0ZW0gLUxp dGVyYWxQYXRoICRiayAtRGlyZWN0b3J5IC1GaWx0ZXIgJ192b3Itcm9sbGJhY2stKicgLUVycm9y QWN0aW9uIFNpbGVudGx5Q29udGludWUgfAogICAgU29ydC1PYmplY3QgTmFtZSAtRGVzY2VuZGlu ZyB8IFNlbGVjdC1PYmplY3QgLVNraXAgMiB8CiAgICBSZW1vdmUtSXRlbSAtUmVjdXJzZSAtRm9y Y2UgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGludWUKCiMgU2VydmVyIHN0YXJ0ZW4KJHN0cCA9 IEpvaW4tUGF0aCAkcm9vdCAkX3N0YXJ0TmFtZQppZiAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAk c3RwKSB7CiAgICBTdGFydC1Qcm9jZXNzIC1GaWxlUGF0aCAnY21kLmV4ZScgLUFyZ3VtZW50TGlz dCAiL2MgYCIkc3RwYCIiIC1XaW5kb3dTdHlsZSBIaWRkZW4KICAgIFdyaXRlLUhvc3QgIlNlcnZl ciBnZXN0YXJ0ZXQuIiAtRm9yZWdyb3VuZENvbG9yIEdyZWVuCn0gZWxzZSB7CiAgICBXcml0ZS1I b3N0ICJTdGFydC1Ta3JpcHQgJyRfc3RhcnROYW1lJyBuaWNodCBnZWZ1bmRlbiDigJQgYml0dGUg U2VydmVyIG1hbnVlbGwgc3RhcnRlbi4iIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93Cn0KCldyaXRl LUhvc3QgIiIKV3JpdGUtSG9zdCAiPT09IFJvbGxiYWNrIGFiZ2VzY2hsb3NzZW4gPT09IiAtRm9y ZWdyb3VuZENvbG9yIEdyZWVuCldyaXRlLUhvc3QgIiAgICBXaWVkZXJoZXJnZXN0ZWxsdDogJCgk Y2hvc2VuLk5hbWUpIiAtRm9yZWdyb3VuZENvbG9yIEN5YW4K ### FILE: server.ps1 | 251867 IyBTdGFuZDogMjAyNi0wNS0xNA0KcGFyYW0oDQogICAgW2ludF0kUG9ydCA9IDgwODAsDQogICAg W3N0cmluZ10kUm9vdFBhdGggPSAnJywNCiAgICAjIE9wdGlvbmFsZXMgendlaXRlcyBSb290IGZ1 ZXIgZ2VtZWluc2FtZSBEYXRlbiAoYWRtaW4uanNvbiBldGMuKS4gV2Vubg0KICAgICMgZ2VzZXR6 dCwga29tbWVuIC9kYXRhLy1SZWFkcyArIFNjaHJlaWJ6dWdyaWZmZSBhdXMgZGllc2VtIFBmYWQg c3RhdHQNCiAgICAjIGF1cyAkUm9vdFBhdGgvZGF0YS4gRGFtaXQga29lbm5lbiBDbGllbnRzIGlo cmUgc3RhdGlzY2hlbiBBc3NldHMgYXVzDQogICAgIyBlaW5lciBsb2thbGVuIEtvcGllIGJlZGll bmVuIChTaGFyZSBsYWVzc3Qgc2ljaCBqZWRlcnplaXQgYWt0dWFsaXNpZXJlbiwNCiAgICAjIGtl aW5lIERhdGVpLUxvY2tzIG1laHIpIHVuZCB0cm90emRlbSBhdWYgZGVtIGdlbWVpbnNhbWVuIEpT T04tU3RhbmQNCiAgICAjIGFtIFNoYXJlIGFyYmVpdGVuLg0KICAgIFtzdHJpbmddJERhdGFQYXRo ID0gJycsDQogICAgIyBPcHRpb25hbGVyIFNoYXJlLUZhbGxiYWNrIGZ1ZXIgc3RhdGlzY2hlIERh dGVpZW4sIGRpZSBOSUNIVCBsb2thbA0KICAgICMgaW0gQ2FjaGUgbGllZ2VuICh6LkIuIHhsc3gu ZnVsbC5taW4uanMpIOKAlCB3ZXJkZW4gZGFubiB2b20gU2hhcmUNCiAgICAjIG5hY2hnZWxhZGVu LiBMZWVyID0ga2VpbiBGYWxsYmFjay4NCiAgICBbc3RyaW5nXSRBc3NldEZhbGxiYWNrID0gJycN CikNCg0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBWSTMgREdMLVBsYW51bmcgLSBQb3dlclNo ZWxsLVNlcnZlcg0KIyBTcGllZ2VsdCBkaWUgUHl0aG9uLVZhcmlhbnRlIChzZXJ2ZXIucHkpIGZ1 bmt0aW9uYWwuDQojIFBTIDUuMSArIENMTS1rb21wYXRpYmVsOiBudXIgRW5jb2Rpbmc6OlVURjgg U3RhdGljLCBrZWluZSBDb25zdHJ1Y3Rvci1DYWxscy4NCiMgRGF0ZWktSS9PIHVlYmVyIFtTeXN0 ZW0uSU8uRmlsZV06OlJlYWRBbGxCeXRlcyAvIFdyaXRlQWxsQnl0ZXMgKFVOQy1zaWNoZXIpLg0K IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KDQojIC0tLSBBcmJlaXRzdmVyemVpY2huaXMgYmVzdGlt bWVuIC0tLQ0KaWYgKC1ub3QgJFJvb3RQYXRoKSB7DQogICAgV3JpdGUtSG9zdCAnRkVITEVSOiAt Um9vdFBhdGggd3VyZGUgbmljaHQgdWViZXJnZWJlbi4nIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkDQog ICAgU3RhcnQtU2xlZXAgLVNlY29uZHMgNQ0KICAgIGV4aXQgMQ0KfQ0KaWYgKC1ub3QgKFRlc3Qt UGF0aCAtTGl0ZXJhbFBhdGggJFJvb3RQYXRoKSkgew0KICAgIFdyaXRlLUhvc3QgKCdGRUhMRVI6 IFJvb3RQYXRoIGV4aXN0aWVydCBuaWNodDogezB9JyAtZiAkUm9vdFBhdGgpIC1Gb3JlZ3JvdW5k Q29sb3IgUmVkDQogICAgU3RhcnQtU2xlZXAgLVNlY29uZHMgNQ0KICAgIGV4aXQgMQ0KfQ0KIyBQ cm92aWRlclBhdGggc3RhdHQgUGF0aDogbGllZmVydCByZWluZW4gV2luMzItL1VOQy1QZmFkIG9o bmUNCiMgIk1pY3Jvc29mdC5Qb3dlclNoZWxsLkNvcmVcRmlsZVN5c3RlbTo6IiBQcmVmaXgsIGRl biAuTkVULURhdGVpLUFQSXMNCiMgKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxCeXRlcyBldGMu KSBuaWNodCB2ZXJzdGVoZW4uDQokUm9vdCA9IChSZXNvbHZlLVBhdGggLUxpdGVyYWxQYXRoICRS b290UGF0aCkuUHJvdmlkZXJQYXRoDQoNCiMgQXNzZXRGYWxsYmFjayBmcnVlaCBhdWZsb2VzZW4s IGRhbWl0IGRpZSBEYXRhRGlyLVN1Y2hlIGlobiBhbHMgUXVlbGxlIG51dHplbg0KIyBrYW5uLiBF cmxhdWJ0IGVzLCBlaW56ZWxuZSBEYXRlaWVuICh6LkIuIHhsc3guZnVsbC5taW4uanMpIHZvbSBT aGFyZSB6dQ0KIyBiZWRpZW5lbiwgYXVjaCB3ZW5uIGRlciBSZXN0IGRlciBBcHAgYXVzIGxva2Fs ZXIgS29waWUga29tbXQuDQokc2NyaXB0OkFzc2V0RmFsbGJhY2sgPSAnJw0KaWYgKCRBc3NldEZh bGxiYWNrIC1hbmQgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJEFzc2V0RmFsbGJhY2spKSB7DQog ICAgJHNjcmlwdDpBc3NldEZhbGxiYWNrID0gKFJlc29sdmUtUGF0aCAtTGl0ZXJhbFBhdGggJEFz c2V0RmFsbGJhY2spLlByb3ZpZGVyUGF0aA0KfQ0KDQojIC0tLSBEYXRhRGlyIHJvYnVzdCBhdWZs b2VzZW4gKHVlYmVybGVidCBkYXMgVmVyc2NoaWViZW4gZGVzIEJlenVnb3JkbmVycykgLS0tDQoj IFdpciBwcm9iaWVyZW4gbWVocmVyZSBRdWVsbGVuIGluIFByaW9yaXRhZXQgdW5kIG5laG1lbiBk aWUgRVJTVEUsIGRpZSBlY2h0ZQ0KIyBEYXRlbiAoYWRtaW4uanNvbikgZW50aGFlbHQuIERhbWl0 IGZpbmRldCBkZXIgU2VydmVyIHNlaW5lIEpTT04gYXVjaCBkYW5uLA0KIyB3ZW5uIGRlciB1ZWJl cmdlYmVuZSAtRGF0YVBhdGggdmVyYWx0ZXQgb2RlciBsZWVyIGlzdCAoei5CLiBlaW4gYWx0ZXIN CiMgTGF1bmNoZXIgbWl0IGhhcnRjb2RpZXJ0ZW0gTGF1ZndlcmtzYnVjaHN0YWJlbiB3aWUgVzpc MDI1KSwgc29sYW5nZQ0KIyBpcmdlbmRlaW5lIGJla2FubnRlIFF1ZWxsZSBkaWUgRGF0ZW4gbm9j aCBoYXQ6DQojICAgMS4gLURhdGFQYXRoICAgICAgICAgIChleHBsaXppdCB1ZWJlcmdlYmVuKQ0K IyAgIDIuIDxBc3NldEZhbGxiYWNrPlxkYXRhICAoUXVlbGwtL1NoYXJlLU9yZG5lciDigJQgd2Fu ZGVydCBiZWltIFZlcnNjaGllYmVuIG1pdCkNCiMgICAzLiA8Um9vdD5cZGF0YSAgICAgICAgKGxv a2FsZXIgQXNzZXQtQ2FjaGUpDQojICAgNC4gPFNjcmlwdE9yZG5lcj5cZGF0YSAoU2VsYnN0YmV6 dWcsIGZhbGxzIHNlcnZlci5wczEgZGlyZWt0IGltIEJlenVnb3JkbmVyIGxpZWd0KQ0KJGRhdGFL YW5kaWRhdGVuID0gQCgpDQppZiAoJERhdGFQYXRoKSAgICAgICAgICAgICB7ICRkYXRhS2FuZGlk YXRlbiArPSAkRGF0YVBhdGggfQ0KaWYgKCRzY3JpcHQ6QXNzZXRGYWxsYmFjaykgeyAkZGF0YUth bmRpZGF0ZW4gKz0gKEpvaW4tUGF0aCAkc2NyaXB0OkFzc2V0RmFsbGJhY2sgJ2RhdGEnKSB9DQok ZGF0YUthbmRpZGF0ZW4gKz0gKEpvaW4tUGF0aCAkUm9vdCAnZGF0YScpDQppZiAoJFBTU2NyaXB0 Um9vdCkgICAgICAgICB7ICRkYXRhS2FuZGlkYXRlbiArPSAoSm9pbi1QYXRoICRQU1NjcmlwdFJv b3QgJ2RhdGEnKSB9DQoNCiREYXRhRGlyID0gJycNCmZvcmVhY2ggKCRjYW5kIGluICRkYXRhS2Fu ZGlkYXRlbikgew0KICAgIGlmICgkY2FuZCAtYW5kIChUZXN0LVBhdGggLUxpdGVyYWxQYXRoIChK b2luLVBhdGggJGNhbmQgJ2FkbWluLmpzb24nKSkpIHsNCiAgICAgICAgJERhdGFEaXIgPSAoUmVz b2x2ZS1QYXRoIC1MaXRlcmFsUGF0aCAkY2FuZCkuUHJvdmlkZXJQYXRoDQogICAgICAgIGJyZWFr DQogICAgfQ0KfQ0KDQppZiAoLW5vdCAkRGF0YURpcikgew0KICAgICMgS2VpbmUgUXVlbGxlIGhh dCBlY2h0ZSBEYXRlbi4gRnVlciBlaW5lIEVyc3RpbnN0YWxsYXRpb24gbGVnZW4gd2lyIGRlbg0K ICAgICMgWmllbG9yZG5lciBhbiDigJQgYWJlciBMQVVULCBuaWNodCBzdHVtbSwgZGFtaXQgZWlu IHZlcnNlaGVudGxpY2ggbGVlcmVyDQogICAgIyBEYXRlbnN0YW5kICh6LkIuIGRhdGFcLU9yZG5l ciBiZWltIFZlcnNjaGllYmVuIHZlcmdlc3Nlbiwgb2RlciBlaW4gYWx0ZXINCiAgICAjIExhdW5j aGVyIG1pdCB0b3RlbSAtRGF0YVBhdGgpIHNvZm9ydCBhdWZmYWVsbHQgc3RhdHQgYWxzICJsZWVy ZSBBcHAiLg0KICAgIGlmICgkRGF0YVBhdGgpIHsNCiAgICAgICAgaWYgKC1ub3QgKFRlc3QtUGF0 aCAtTGl0ZXJhbFBhdGggJERhdGFQYXRoKSkgeyBOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5 IC1QYXRoICREYXRhUGF0aCAtRm9yY2UgfCBPdXQtTnVsbCB9DQogICAgICAgICREYXRhRGlyID0g KFJlc29sdmUtUGF0aCAtTGl0ZXJhbFBhdGggJERhdGFQYXRoKS5Qcm92aWRlclBhdGgNCiAgICB9 IGVsc2Ugew0KICAgICAgICAkRGF0YURpciA9IEpvaW4tUGF0aCAkUm9vdCAnZGF0YScNCiAgICAg ICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJERhdGFEaXIpKSB7IE5ldy1JdGVt IC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJERhdGFEaXIgLUZvcmNlIHwgT3V0LU51bGwgfQ0K ICAgIH0NCiAgICBXcml0ZS1Ib3N0ICcnDQogICAgV3JpdGUtSG9zdCAnICAqKiogV0FSTlVORzog SW4ga2VpbmVyIGJla2FubnRlbiBRdWVsbGUgd3VyZGUgYWRtaW4uanNvbiBnZWZ1bmRlbiEgKioq JyAtRm9yZWdyb3VuZENvbG9yIFJlZA0KICAgIFdyaXRlLUhvc3QgJyAgRHVyY2hzdWNodGUgT3J0 ZTonIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93DQogICAgZm9yZWFjaCAoJGNhbmQgaW4gJGRhdGFL YW5kaWRhdGVuKSB7IFdyaXRlLUhvc3QgKCcgICAgLSB7MH0nIC1mICRjYW5kKSAtRm9yZWdyb3Vu ZENvbG9yIFllbGxvdyB9DQogICAgV3JpdGUtSG9zdCAoJyAgU2VydmVyIHN0YXJ0ZXQgbWl0IExF RVJFTSBEYXRlbm9yZG5lcjogezB9JyAtZiAkRGF0YURpcikgLUZvcmVncm91bmRDb2xvciBZZWxs b3cNCiAgICBXcml0ZS1Ib3N0ICcgIC0+IFd1cmRlIGRlciBPcmRuZXIgdmVyc2Nob2Jlbj8gRGFu biBkZW4gZGF0YVwtVW50ZXJvcmRuZXIgbWl0a29waWVyZW4uJyAtRm9yZWdyb3VuZENvbG9yIFll bGxvdw0KICAgIFdyaXRlLUhvc3QgJycNCn0NCg0KJHNjcmlwdDpDb3JzT3JpZ2luID0gImh0dHA6 Ly9sb2NhbGhvc3Q6JFBvcnQiDQokc2NyaXB0Okxhc3RIZWFydGJlYXQgPSBHZXQtRGF0ZQ0KJHNj cmlwdDpTaHV0ZG93blBlbmRpbmcgPSAkZmFsc2UNCg0KJFVzZXJuYW1lID0gJGVudjpVU0VSTkFN RQ0KaWYgKC1ub3QgJFVzZXJuYW1lKSB7ICRVc2VybmFtZSA9ICd1bmtub3duJyB9DQokRG9tYWlu ID0gJGVudjpVU0VSRE9NQUlODQppZiAoLW5vdCAkRG9tYWluKSB7ICREb21haW4gPSAnKicgfQ0K DQojIC0tLSBNSU1FIC0tLQ0KJE1pbWVUeXBlcyA9IEB7DQogICAgJy5odG1sJyA9ICd0ZXh0L2h0 bWw7IGNoYXJzZXQ9dXRmLTgnDQogICAgJy5jc3MnICA9ICd0ZXh0L2NzczsgY2hhcnNldD11dGYt OCcNCiAgICAnLmpzJyAgID0gJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgn DQogICAgJy5qc29uJyA9ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04Jw0KICAgICcu cG5nJyAgPSAnaW1hZ2UvcG5nJw0KICAgICcuanBnJyAgPSAnaW1hZ2UvanBlZycNCiAgICAnLmpw ZWcnID0gJ2ltYWdlL2pwZWcnDQogICAgJy5zdmcnICA9ICdpbWFnZS9zdmcreG1sJw0KICAgICcu aWNvJyAgPSAnaW1hZ2UveC1pY29uJw0KfQ0KDQojIC0tLSBMb2cgLS0tDQokc2NyaXB0OkFwaUxv ZyA9IEpvaW4tUGF0aCAkZW52OlRFTVAgJ1ZJM0RHTF9hcGkubG9nJw0KdHJ5IHsgUmVtb3ZlLUl0 ZW0gLUxpdGVyYWxQYXRoICRzY3JpcHQ6QXBpTG9nIC1Gb3JjZSAtRXJyb3JBY3Rpb24gU2lsZW50 bHlDb250aW51ZSB9IGNhdGNoIHt9DQpmdW5jdGlvbiBMb2ctQXBpKCRNZXNzYWdlKSB7DQogICAg dHJ5IHsNCiAgICAgICAgJGxpbmUgPSAiWyQoR2V0LURhdGUgLUZvcm1hdCAnSEg6bW06c3MuZmZm JyldICRNZXNzYWdlIg0KICAgICAgICBBZGQtQ29udGVudCAtTGl0ZXJhbFBhdGggJHNjcmlwdDpB cGlMb2cgLVZhbHVlICRsaW5lIC1FbmNvZGluZyBVVEY4DQogICAgfSBjYXRjaCB7fQ0KfQ0KDQpM b2ctQXBpICgnU1RBUlRVUCBSb290ICAgICAgICAgID0gezB9JyAtZiAkUm9vdCkNCkxvZy1BcGkg KCdTVEFSVFVQIERhdGFEaXIgICAgICAgPSB7MH0nIC1mICREYXRhRGlyKQ0KJF9hZkxvZyA9IGlm ICgkc2NyaXB0OkFzc2V0RmFsbGJhY2spIHsgJHNjcmlwdDpBc3NldEZhbGxiYWNrIH0gZWxzZSB7 ICcobmljaHQgZ2VzZXR6dCknIH0NCkxvZy1BcGkgKCdTVEFSVFVQIEFzc2V0RmFsbGJhY2sgPSB7 MH0nIC1mICRfYWZMb2cpDQojIEZhbGxzIGRlciB1ZWJlcmdlYmVuZSAtRGF0YVBhdGgga2VpbmUg RGF0ZW4gaGF0dGUgdW5kIGRpZSByb2J1c3RlIFN1Y2hlIGF1Zg0KIyBlaW5lIGFuZGVyZSBRdWVs bGUgYXVzZ2V3aWNoZW4gaXN0LCBkYXMgbGF1dCBpbnMgTG9nIHNjaHJlaWJlbiDigJQgc29uc3Qg c2llaHQNCiMgbWFuIGRlbSAiRGF0YURpciA9IC4uLiIgbmljaHQgYW4sIGRhc3MgZWluIHRvdGVy IC1EYXRhUGF0aCB1ZWJlcmJydWVja3Qgd3VyZGUuDQppZiAoJERhdGFQYXRoKSB7DQogICAgJF9k cEZ1bGwgPSAnJw0KICAgIGlmIChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICREYXRhUGF0aCkgeyAk X2RwRnVsbCA9IChSZXNvbHZlLVBhdGggLUxpdGVyYWxQYXRoICREYXRhUGF0aCkuUHJvdmlkZXJQ YXRoIH0NCiAgICBpZiAoJF9kcEZ1bGwgLW5lICREYXRhRGlyKSB7DQogICAgICAgIExvZy1BcGkg KCdTVEFSVFVQIEhJTldFSVM6IC1EYXRhUGF0aCAoezB9KSBvaG5lIGFkbWluLmpzb24g4oCUIHJv YnVzdGVyIEZhbGxiYWNrIGF1ZiB7MX0nIC1mICREYXRhUGF0aCwgJERhdGFEaXIpDQogICAgfQ0K fQ0KZm9yZWFjaCAoJGZuIGluICdhZG1pbi5qc29uJywncGxhbnVuZy5qc29uJywnbG9nYnVjaC5q c29uJykgew0KICAgICRmcCA9IEpvaW4tUGF0aCAkRGF0YURpciAkZm4NCiAgICBpZiAoVGVzdC1Q YXRoIC1MaXRlcmFsUGF0aCAkZnApIHsNCiAgICAgICAgJHN6ID0gKEdldC1JdGVtIC1MaXRlcmFs UGF0aCAkZnApLkxlbmd0aA0KICAgICAgICBMb2ctQXBpICgnU1RBUlRVUCB7MH06IGV4aXN0cyBz aXplPXsxfScgLWYgJGZuLCAkc3opDQogICAgfSBlbHNlIHsNCiAgICAgICAgTG9nLUFwaSAoJ1NU QVJUVVAgezB9OiBGRUhMVCcgLWYgJGZuKQ0KICAgIH0NCn0NCg0KIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KIyBEYXRlaS1DYWNoaW5nIChJbi1NZW1vcnkpDQojID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQoNCiMgSW4tTWVtb3J5LUNhY2hlIGZ1ZXIgRGF0ZWktSW5oYWx0ZS4gSG90LVBhdGgtUmVhZHMg KHouQi4gL2FwaS9wbGFudW5nKSBnZWhlbg0KIyBhbiBEaXNrLUlPIHZvcmJlaS4gSW52YWxpZGll cnVuZyB1ZWJlciBtdGltZS1WZXJnbGVpY2ggYmVpbSBuYWVjaHN0ZW4gUmVhZC4NCiMgS2V5ID0g RGF0ZWluYW1lLCBWYWx1ZSA9IEB7IFRleHQ9c3RyaW5nOyBNdGltZVRpY2tzPWxvbmcgfQ0KJHNj cmlwdDpGaWxlQ2FjaGUgPSBAe30NCg0KIyBad2VpdGUgQ2FjaGUtU3R1ZmU6IGJlcmVpdHMgdmlh IENvbnZlcnRGcm9tLUpzb24gemVybGVndGUgUFNDdXN0b21PYmplY3RzLg0KIyBSZWFkLUpzb25P YmplY3Qgb2huZSBkaWVzZW4gQ2FjaGUgcGFyc3QgZGllIDIwMCBLQiBncm9zc2VuIEpTT05zIGF1 ZiBqZWRlbQ0KIyAvYXBpL2luZm8tUmVxdWVzdCBtZWhyZmFjaCAoVGVzdC1Jc3RTdXBlclVzZXIs IEdldC1GYWNoYXVmc2ljaHRFaW50cmFnLA0KIyBHZXQtTWVpbmVQZXJzb24gbGVzZW4gamV3ZWls cyBhZG1pbi5qc29uIGJ6dy4gcGxhbnVuZy5qc29uIGVpZ2Vuc3RhZW5kaWcpDQojIOKAlCBhdWYg QmVob2VyZGVuLVBDcyBtaXQgUG93ZXJTaGVsbCA1LjEgc2luZCBkYXMgc2NobmVsbCBtYWwgMzAw LTUwMCBtcw0KIyBBdWZzY2hsYWcgcHJvIFN0YXJ0cGhhc2UtUmVxdWVzdC4NCiMgS2V5ID0gRGF0 ZWluYW1lLCBWYWx1ZSA9IEB7IE9iaj1QU0N1c3RvbU9iamVjdDsgTXRpbWVUaWNrcz1sb25nIH0N CiMgQWNodHVuZzogUFNDdXN0b21PYmplY3QgaXN0IG11dGFibGUuIEF1ZnJ1ZmVyIGR1ZXJmZW4g ZGFzIHp1cnVlY2tnZWdlYmVuZQ0KIyBPYmpla3QgTklDSFQgaW4tcGxhY2UgbW9kaWZpemllcmVu IOKAlCBlbnR3ZWRlciByZWFkb25seSBudXR6ZW4gb2RlciB2aWENCiMgQ29udmVydFRvLUpzb24g fCBDb252ZXJ0RnJvbS1Kc29uIGtsb25lbiwgYmV2b3IgRmVsZGVyIHVlYmVyc2NocmllYmVuDQoj IHdlcmRlbi4gUFVULUhhbmRsZXIgc2luZCBzaWNoZXI6IHNpZSBzY2hyZWliZW4gYW5zY2hsaWVz c2VuZCBXcml0ZS1Kc29uT2JqZWN0LA0KIyBkYXMgZGVuIENhY2hlIGVpbnRyYWdzd2Vpc2UgbmV1 IHNldHp0Lg0KJHNjcmlwdDpKc29uQ2FjaGUgPSBAe30NCg0KIyBCYWNrdXAtQnl0ZXMgYXVmIERp c2sgc2NocmVpYmVuIChLbGFydGV4dCkuDQojIFNwcmludCA1IOKAlCBXYXJ0dW5nc3NjaHVsZCAo MjAyNi0wNS0yOSwgRmluZGluZyAxOCk6IGRhbmFjaCB3aXJkIGRpZSBOVEZTLQ0KIyBBQ0wgYXVm ICJudXIgT3duZXIgKyBBZG1pbmlzdHJhdG9ycyIgZWluZ2VzY2hyYWVua3QgKGtlaW4gQXV0aGVu dGljYXRlZA0KIyBVc2VycyksIGRhbWl0IFBJSS1CYWNrdXBzIGluIGRhdGEvY2FjaGUvIG5pY2h0 IHZvbiBiZWxpZWJpZ2VuIGxva2FsZW4NCiMgUHJvZ3JhbW1lbiBsZXNiYXIgc2luZC4gQXVmIEZp bGVzeXN0ZW1lbiwgZGllIEFDTCBuaWNodCB1bnRlcnN0dWV0emVuDQojIChTaGFyZS9VTkMpLCBz dGlsbCB0b2xlcmllcmVuIOKAlCBGaW5kaW5nLUluaGFsdCBpc3QgQmVzdC1FZmZvcnQsIG5pY2h0 DQojIGtyaXRpc2NoZXIgUGZhZC4NCmZ1bmN0aW9uIFdyaXRlLUJhY2t1cEJ5dGVzKCRQZmFkQWJz LCAkS2xhcnRleHQpIHsNCiAgICBpZiAoLW5vdCAkS2xhcnRleHQpIHsgJEtsYXJ0ZXh0ID0gJycg fQ0KICAgICRwbGFpbiA9IFtTeXN0ZW0uVGV4dC5FbmNvZGluZ106OlVURjguR2V0Qnl0ZXMoJEts YXJ0ZXh0KQ0KICAgIFtTeXN0ZW0uSU8uRmlsZV06OldyaXRlQWxsQnl0ZXMoJFBmYWRBYnMsICRw bGFpbikNCiAgICB0cnkgew0KICAgICAgICAkYWNsID0gR2V0LUFjbCAtTGl0ZXJhbFBhdGggJFBm YWRBYnMNCiAgICAgICAgJGFjbC5TZXRBY2Nlc3NSdWxlUHJvdGVjdGlvbigkdHJ1ZSwgJGZhbHNl KSAgICMgSW5oZXJpdCBhdXMsIGtlaW5lIFZlcmVyYnVuZw0KICAgICAgICAkYWNsLkFjY2VzcyB8 IEZvckVhY2gtT2JqZWN0IHsgJGFjbC5SZW1vdmVBY2Nlc3NSdWxlQWxsKCRfKSB9IHwgT3V0LU51 bGwNCiAgICAgICAgJG93biA9ICIkZW52OlVTRVJET01BSU5cJGVudjpVU0VSTkFNRSINCiAgICAg ICAgJHJ1bGUgPSBOZXctT2JqZWN0IFN5c3RlbS5TZWN1cml0eS5BY2Nlc3NDb250cm9sLkZpbGVT eXN0ZW1BY2Nlc3NSdWxlKA0KICAgICAgICAgICAgJG93biwgJ0Z1bGxDb250cm9sJywgJ0FsbG93 JykNCiAgICAgICAgJGFjbC5TZXRBY2Nlc3NSdWxlKCRydWxlKQ0KICAgICAgICAjIEFkbWluaXN0 cmF0b3JzIGFscyBCYWNrdXAtUmVzZXJ2ZXp1Z2FuZyAoUmVjb3ZlcnkgZHVyY2ggSVQpDQogICAg ICAgIHRyeSB7DQogICAgICAgICAgICAkYWRtaW5zID0gTmV3LU9iamVjdCBTeXN0ZW0uU2VjdXJp dHkuUHJpbmNpcGFsLlNlY3VyaXR5SWRlbnRpZmllcigNCiAgICAgICAgICAgICAgICBbU3lzdGVt LlNlY3VyaXR5LlByaW5jaXBhbC5XZWxsS25vd25TaWRUeXBlXTo6QnVpbHRpbkFkbWluaXN0cmF0 b3JzU2lkLCAkbnVsbCkNCiAgICAgICAgICAgICRhZG1pblJ1bGUgPSBOZXctT2JqZWN0IFN5c3Rl bS5TZWN1cml0eS5BY2Nlc3NDb250cm9sLkZpbGVTeXN0ZW1BY2Nlc3NSdWxlKA0KICAgICAgICAg ICAgICAgICRhZG1pbnMsICdGdWxsQ29udHJvbCcsICdBbGxvdycpDQogICAgICAgICAgICAkYWNs LlNldEFjY2Vzc1J1bGUoJGFkbWluUnVsZSkNCiAgICAgICAgfSBjYXRjaCB7fQ0KICAgICAgICBT ZXQtQWNsIC1MaXRlcmFsUGF0aCAkUGZhZEFicyAtQWNsT2JqZWN0ICRhY2wgLUVycm9yQWN0aW9u IFN0b3ANCiAgICB9IGNhdGNoIHsNCiAgICAgICAgTG9nLUFwaSAoJ0JBQ0tVUC1BQ0wtTk9USUNF IHswfTogezF9JyAtZiAkUGZhZEFicywgJF8uRXhjZXB0aW9uLk1lc3NhZ2UpDQogICAgfQ0KfQ0K DQojIEJhY2t1cC1CeXRlcyBsZXNlbiwgQk9NLVN0cmlwcGluZywgbGllZmVydCBVVEYtOC1UZXh0 IHp1cnVlY2suDQpmdW5jdGlvbiBSZWFkLUJhY2t1cFRleHQoJFBmYWRBYnMpIHsNCiAgICBpZiAo LW5vdCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkUGZhZEFicykpIHsgcmV0dXJuICRudWxsIH0N CiAgICAkYnl0ZXMgPSBbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsQnl0ZXMoJFBmYWRBYnMpDQog ICAgaWYgKCRieXRlcy5MZW5ndGggLWVxIDApIHsgcmV0dXJuICRudWxsIH0NCiAgICAkb2Zmc2V0 ID0gMA0KICAgIGlmICgkYnl0ZXMuTGVuZ3RoIC1nZSAzIC1hbmQgJGJ5dGVzWzBdIC1lcSAweEVG IC1hbmQgJGJ5dGVzWzFdIC1lcSAweEJCIC1hbmQgJGJ5dGVzWzJdIC1lcSAweEJGKSB7ICRvZmZz ZXQgPSAzIH0NCiAgICByZXR1cm4gW1N5c3RlbS5UZXh0LkVuY29kaW5nXTo6VVRGOC5HZXRTdHJp bmcoJGJ5dGVzLCAkb2Zmc2V0LCAkYnl0ZXMuTGVuZ3RoIC0gJG9mZnNldCkNCn0NCg0KIyAtLS0g RGF0ZWktSS9PIChVTkMtc2ljaGVyLCBVVEYtOCBvaG5lIEJPTSwgbWl0IEluLU1lbW9yeS1DYWNo ZSkgLS0tDQpmdW5jdGlvbiBSZWFkLVRleHRGaWxlKCRGaWxlTmFtZSkgew0KICAgICMgQ2FjaGUt SGl0Pw0KICAgIGlmICgkc2NyaXB0OkZpbGVDYWNoZS5Db250YWluc0tleSgkRmlsZU5hbWUpKSB7 DQogICAgICAgICRlbnRyeSA9ICRzY3JpcHQ6RmlsZUNhY2hlWyRGaWxlTmFtZV0NCiAgICAgICAg dHJ5IHsNCiAgICAgICAgICAgICRwID0gSm9pbi1QYXRoICREYXRhRGlyICRGaWxlTmFtZQ0KICAg ICAgICAgICAgaWYgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJHApIHsNCiAgICAgICAgICAgICAg ICAkbXQgPSAoR2V0LUl0ZW0gLUxpdGVyYWxQYXRoICRwKS5MYXN0V3JpdGVUaW1lVXRjLlRpY2tz DQogICAgICAgICAgICAgICAgaWYgKCRtdCAtZXEgJGVudHJ5Lk10aW1lVGlja3MpIHsNCiAgICAg ICAgICAgICAgICAgICAgcmV0dXJuICRlbnRyeS5UZXh0DQogICAgICAgICAgICAgICAgfQ0KICAg ICAgICAgICAgfQ0KICAgICAgICB9IGNhdGNoIHt9DQogICAgICAgICRzY3JpcHQ6RmlsZUNhY2hl LlJlbW92ZSgkRmlsZU5hbWUpIHwgT3V0LU51bGwNCiAgICB9DQogICAgJHAgPSBKb2luLVBhdGgg JERhdGFEaXIgJEZpbGVOYW1lDQogICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGgg JHApKSB7DQogICAgICAgIExvZy1BcGkgKCdSRUFEIHswfTogTklDSFQgVk9SSEFOREVOICh7MX0p JyAtZiAkRmlsZU5hbWUsICRwKQ0KICAgICAgICByZXR1cm4gJG51bGwNCiAgICB9DQogICAgdHJ5 IHsNCiAgICAgICAgJGJ5dGVzID0gW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbEJ5dGVzKCRwKQ0K ICAgICAgICBpZiAoJGJ5dGVzLkxlbmd0aCAtZXEgMCkgew0KICAgICAgICAgICAgTG9nLUFwaSAo J1JFQUQgezB9OiBsZWVyJyAtZiAkRmlsZU5hbWUpDQogICAgICAgICAgICByZXR1cm4gJG51bGwN CiAgICAgICAgfQ0KICAgICAgICAkb2Zmc2V0ID0gMA0KICAgICAgICBpZiAoJGJ5dGVzLkxlbmd0 aCAtZ2UgMyAtYW5kICRieXRlc1swXSAtZXEgMHhFRiAtYW5kICRieXRlc1sxXSAtZXEgMHhCQiAt YW5kICRieXRlc1syXSAtZXEgMHhCRikgeyAkb2Zmc2V0ID0gMyB9DQogICAgICAgICR0ZXh0ID0g W1N5c3RlbS5UZXh0LkVuY29kaW5nXTo6VVRGOC5HZXRTdHJpbmcoJGJ5dGVzLCAkb2Zmc2V0LCAk Ynl0ZXMuTGVuZ3RoIC0gJG9mZnNldCkNCiAgICAgICAgTG9nLUFwaSAoJ1JFQUQgezB9OiB7MX0g Qnl0ZXMgb2snIC1mICRGaWxlTmFtZSwgKCRieXRlcy5MZW5ndGggLSAkb2Zmc2V0KSkNCiAgICAg ICAgJG10ID0gKEdldC1JdGVtIC1MaXRlcmFsUGF0aCAkcCkuTGFzdFdyaXRlVGltZVV0Yy5UaWNr cw0KICAgICAgICAkc2NyaXB0OkZpbGVDYWNoZVskRmlsZU5hbWVdID0gQHsgVGV4dCA9ICR0ZXh0 OyBNdGltZVRpY2tzID0gJG10IH0NCiAgICAgICAgcmV0dXJuICR0ZXh0DQogICAgfSBjYXRjaCB7 DQogICAgICAgIExvZy1BcGkgKCdSRUFEIHswfSBGRUhMRVI6IHsxfScgLWYgJEZpbGVOYW1lLCAk Xy5FeGNlcHRpb24uTWVzc2FnZSkNCiAgICAgICAgcmV0dXJuICRudWxsDQogICAgfQ0KfQ0KDQpm dW5jdGlvbiBXcml0ZS1UZXh0RmlsZSgkRmlsZU5hbWUsICRUZXh0KSB7DQogICAgJHAgPSBKb2lu LVBhdGggJERhdGFEaXIgJEZpbGVOYW1lDQogICAgdHJ5IHsNCiAgICAgICAgaWYgKC1ub3QgJFRl eHQpIHsgJFRleHQgPSAnJyB9DQogICAgICAgICRwbGFpbiA9IFtTeXN0ZW0uVGV4dC5FbmNvZGlu Z106OlVURjguR2V0Qnl0ZXMoJFRleHQpDQogICAgICAgICMgQXRvbWFyZXIgU2NocmVpYnZvcmdh bmc6IGVyc3Qgdm9sbHN0YWVuZGlnIGluIGVpbmUgVGVtcC1EYXRlaSwgZGFubg0KICAgICAgICAj IHBlciBSZXBsYWNlL01vdmUgdWViZXIgZGllIFppZWxkYXRlaSB0YXVzY2hlbi4gU28gaGludGVy bGFlc3N0IGVpbg0KICAgICAgICAjIENyYXNoIC8gU3Ryb21hdXNmYWxsIC8gIlBsYXR0ZSB2b2xs IiBtaXR0ZW4gaW0gU2NocmVpYmVuIE5JRSBlaW5lDQogICAgICAgICMgaGFsYiBnZXNjaHJpZWJl bmUsIGtvcnJ1cHRlIHBsYW51bmcuanNvbi9hZG1pbi5qc29uIOKAlCBlbnR3ZWRlciBkZXINCiAg ICAgICAgIyBhbHRlIG9kZXIgZGVyIG5ldWUgVm9sbHN0YW5kIGlzdCBkYS4gKERlciBEYXRlaS1M b2NrIHNjaHVldHp0IG51cg0KICAgICAgICAjIGdlZ2VuIFBhcmFsbGVsLVByb3plc3NlLCBuaWNo dCBnZWdlbiBUZWlsLVdyaXRlcy4pDQogICAgICAgICR0bXAgPSAkcCArICcudG1wJw0KICAgICAg ICBbU3lzdGVtLklPLkZpbGVdOjpXcml0ZUFsbEJ5dGVzKCR0bXAsICRwbGFpbikNCiAgICAgICAg dHJ5IHsNCiAgICAgICAgICAgIGlmIChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRwKSB7DQogICAg ICAgICAgICAgICAgIyBSZXBsYWNlIGlzdCBhdG9tYXIgKE1vdmVGaWxlRXggUkVQTEFDRV9FWElT VElORykgYXVmIE5URlMuDQogICAgICAgICAgICAgICAgW1N5c3RlbS5JTy5GaWxlXTo6UmVwbGFj ZSgkdG1wLCAkcCwgJG51bGwpDQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAg IFtTeXN0ZW0uSU8uRmlsZV06Ok1vdmUoJHRtcCwgJHApDQogICAgICAgICAgICB9DQogICAgICAg IH0gY2F0Y2ggew0KICAgICAgICAgICAgIyBGYWxsYmFjayBmdWVyIFNoYXJlcyBvaG5lIFJlcGxh Y2UtU3VwcG9ydDogVGVtcCBpc3QgYmVyZWl0cw0KICAgICAgICAgICAgIyB2b2xsc3RhZW5kaWcg 4oCUIFppZWwgZW50ZmVybmVuIHVuZCBUZW1wIHVtYmVuZW5uZW4gKFJlbmFtZSBpc3QNCiAgICAg ICAgICAgICMgYXVmIGRlbXNlbGJlbiBWb2x1bWUgZWluZSBNZXRhZGF0ZW4tT3BlcmF0aW9uKS4N CiAgICAgICAgICAgIGlmIChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRwKSB7IFJlbW92ZS1JdGVt IC1MaXRlcmFsUGF0aCAkcCAtRm9yY2UgfQ0KICAgICAgICAgICAgW1N5c3RlbS5JTy5GaWxlXTo6 TW92ZSgkdG1wLCAkcCkNCiAgICAgICAgfQ0KICAgICAgICAkbXQgPSAoR2V0LUl0ZW0gLUxpdGVy YWxQYXRoICRwKS5MYXN0V3JpdGVUaW1lVXRjLlRpY2tzDQogICAgICAgICRzY3JpcHQ6RmlsZUNh Y2hlWyRGaWxlTmFtZV0gPSBAeyBUZXh0ID0gJFRleHQ7IE10aW1lVGlja3MgPSAkbXQgfQ0KICAg ICAgICAjIEpTT04tQ2FjaGUgaW52YWxpZGllcmVuOiBkZXIgbmFlY2hzdGUgUmVhZC1Kc29uT2Jq ZWN0IG11c3MgbmV1IHBhcnNlbi4NCiAgICAgICAgaWYgKCRzY3JpcHQ6SnNvbkNhY2hlLkNvbnRh aW5zS2V5KCRGaWxlTmFtZSkpIHsNCiAgICAgICAgICAgICRzY3JpcHQ6SnNvbkNhY2hlLlJlbW92 ZSgkRmlsZU5hbWUpIHwgT3V0LU51bGwNCiAgICAgICAgfQ0KICAgICAgICBMb2ctQXBpICgnV1JJ VEUgezB9OiB7MX0gQnl0ZXMgb2snIC1mICRGaWxlTmFtZSwgJHBsYWluLkxlbmd0aCkNCiAgICAg ICAgcmV0dXJuICR0cnVlDQogICAgfSBjYXRjaCB7DQogICAgICAgIExvZy1BcGkgKCdXUklURSB7 MH0gRkVITEVSOiB7MX0nIC1mICRGaWxlTmFtZSwgJF8uRXhjZXB0aW9uLk1lc3NhZ2UpDQogICAg ICAgICMgVmVyd2Fpc3RlIFRlbXAtRGF0ZWkgYXVmcmFldW1lbiwgZmFsbHMgZGVyIFRhdXNjaCBz Y2hlaXRlcnRlLg0KICAgICAgICB0cnkgeyAkdG1wQyA9IChKb2luLVBhdGggJERhdGFEaXIgJEZp bGVOYW1lKSArICcudG1wJzsgaWYgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJHRtcEMpIHsgUmVt b3ZlLUl0ZW0gLUxpdGVyYWxQYXRoICR0bXBDIC1Gb3JjZSAtRXJyb3JBY3Rpb24gU2lsZW50bHlD b250aW51ZSB9IH0gY2F0Y2gge30NCiAgICAgICAgcmV0dXJuICRmYWxzZQ0KICAgIH0NCn0NCg0K IyA9PT09PT09PT09PT09PT09PT09PT0gUmljaC1UZXh0LVNhbml0aXplciAoU2VydmVyLXNlaXRp ZykgPT09PT09PT09PT09PT09PT09PT09DQojIFNwaWVnZWx0IGRpZSBDbGllbnQtQWxsb3dsaXN0 IGF1cyBqcy91aV9ydGUuanMgKHNhbml0aXplUmljaEh0bWwpIHVuZCBkZW4NCiMgUHl0aG9uLURl di1TZXJ2ZXIgKHNhbml0aXplX3JpY2hfaHRtbCkuIEJpc2xhbmcgbGllZiBkaWUgQmVyZWluaWd1 bmcgTlVSIGltDQojIEJyb3dzZXIg4oCUIGVpbiBtYW5pcHVsaWVydGVyIENsaWVudCAvIGRpcmVr dGVyIEFQSS1DYWxsIGtvbm50ZSBiZWxpZWJpZ2VzDQojIEhUTUwvPHNjcmlwdD4gaW4gaW5mb3Rl eHQvaGlsZmV0ZXh0L2VtYWlsVm9ybGFnZW4vTWl0dGVpbHVuZ2VuIHNjaHJlaWJlbiwNCiMgZGFz IGFuZGVyZSBBZG1pbnMvVXNlciB2aWEgaW5uZXJIVE1MIGdlcmVuZGVydCBiZWthbWVuIChTdG9y ZWQgWFNTKS4NCiMgUmVnZXgtYmFzaWVydCAoUG93ZXJTaGVsbCBoYXQga2VpbmVuIEhUTUwtUGFy c2VyIGluIGRlciBTdGRsaWIpIOKAlCBiZXd1c3N0DQojIGtvbnNlcnZhdGl2OiB1bmJla2FubnRl IFRhZ3Mgd2VyZGVuIGVudGZlcm50IChJbmhhbHQgYmxlaWJ0KSwgQXR0cmlidXRlDQojIGtvbXBs ZXR0IGdlc3RyaXBwdCAoQXVzbmFobWU6IHZhbGlkaWVydGVzIGhyZWYgYW4gPGE+KS4NCiRzY3Jp cHQ6U2FuaXRpemVBbGxvd2VkVGFncyA9IEAoJ2InLCdzdHJvbmcnLCdpJywnZW0nLCd1JywnYnIn LCdwJywndWwnLCdvbCcsJ2xpJywnYScsJ2RpdicsJ3NwYW4nLCdoMycsJ2g0JywnYmxvY2txdW90 ZScpDQoNCmZ1bmN0aW9uIENvbnZlcnRUby1TYWZlUmljaEh0bWwgew0KICAgIHBhcmFtKFtzdHJp bmddJEh0bWwpDQogICAgaWYgKFtzdHJpbmddOjpJc051bGxPckVtcHR5KCRIdG1sKSkgeyByZXR1 cm4gJycgfQ0KICAgICRzID0gJEh0bWwNCiAgICAjIDEuIEdlZmFlaHJsaWNoZSBFbGVtZW50LUJs b2Vja2UgaW5rbC4gSW5oYWx0IGtvbXBsZXR0IGVudGZlcm5lbi4NCiAgICAkcyA9IFtyZWdleF06 OlJlcGxhY2UoJHMsICcoP2lzKTwoc2NyaXB0fHN0eWxlfGlmcmFtZXxvYmplY3R8ZW1iZWR8c3Zn fG1hdGgpXGIuKj88L1wxXHMqPicsICcnKQ0KICAgICRzID0gW3JlZ2V4XTo6UmVwbGFjZSgkcywg Jyg/aXMpPChzY3JpcHR8c3R5bGV8aWZyYW1lfG9iamVjdHxlbWJlZHxzdmd8bWF0aClcYltePl0q Lz8+JywgJycpDQogICAgIyAyLiBIVE1MLUtvbW1lbnRhcmUgcmF1cyAoa29lbm5lbiBDb25kaXRp b25hbC1Db21tZW50LVRyaWNrcyB0cmFnZW4pLg0KICAgICRzID0gW3JlZ2V4XTo6UmVwbGFjZSgk cywgJyg/cyk8IS0tLio/LS0+JywgJycpDQogICAgIyAzLiBKZWRlcyB2ZXJibGVpYmVuZGUgVGFn IGR1cmNoIGRlbiBBbGxvd2xpc3QtRXZhbHVhdG9yIHNjaGlja2VuLg0KICAgICRhbGxvd2VkID0g JHNjcmlwdDpTYW5pdGl6ZUFsbG93ZWRUYWdzDQogICAgJGV2YWx1YXRvciA9IHsNCiAgICAgICAg cGFyYW0oJG0pDQogICAgICAgICRzbGFzaCA9ICRtLkdyb3Vwc1snc2xhc2gnXS5WYWx1ZQ0KICAg ICAgICAkbmFtZSAgPSAkbS5Hcm91cHNbJ25hbWUnXS5WYWx1ZS5Ub0xvd2VyKCkNCiAgICAgICAg aWYgKCRhbGxvd2VkIC1ub3Rjb250YWlucyAkbmFtZSkgeyByZXR1cm4gJycgfSAgICAgICAjIFVu d3JhcDogVGFnIHdlZywgSW5oYWx0IGJsZWlidA0KICAgICAgICBpZiAoJHNsYXNoIC1lcSAnLycp IHsgcmV0dXJuICI8LyRuYW1lPiIgfQ0KICAgICAgICBpZiAoJG5hbWUgLWVxICdicicpIHsgcmV0 dXJuICc8YnI+JyB9DQogICAgICAgIGlmICgkbmFtZSAtZXEgJ2EnKSB7DQogICAgICAgICAgICAk YXR0cnMgPSAkbS5Hcm91cHNbJ2F0dHJzJ10uVmFsdWUNCiAgICAgICAgICAgICRocmVmICA9ICcn DQogICAgICAgICAgICAkaG0gPSBbcmVnZXhdOjpNYXRjaCgkYXR0cnMsICcoP2kpaHJlZlxzKj1c cyooIihbXiJdKikifCcnKFteJyddKiknJ3woW15ccz5dKykpJykNCiAgICAgICAgICAgIGlmICgk aG0uU3VjY2VzcykgeyAkaHJlZiA9ICgkaG0uR3JvdXBzWzJdLlZhbHVlICsgJGhtLkdyb3Vwc1sz XS5WYWx1ZSArICRobS5Hcm91cHNbNF0uVmFsdWUpLlRyaW0oKSB9DQogICAgICAgICAgICAkb3V0 ID0gJzxhJw0KICAgICAgICAgICAgaWYgKCRocmVmIC1hbmQgJGhyZWYgLW5vdG1hdGNoICcoP2kp XlxzKihqYXZhc2NyaXB0fGRhdGF8dmJzY3JpcHQpOicpIHsNCiAgICAgICAgICAgICAgICAkaHJl ZkVzYyA9ICRocmVmIC1yZXBsYWNlICcmJywnJmFtcDsnIC1yZXBsYWNlICciJywnJnF1b3Q7JyAt cmVwbGFjZSAnPCcsJyZsdDsnIC1yZXBsYWNlICc+JywnJmd0OycNCiAgICAgICAgICAgICAgICAk b3V0ICs9ICIgaHJlZj0iIiRocmVmRXNjIiIiDQogICAgICAgICAgICB9DQogICAgICAgICAgICAk b3V0ICs9ICcgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+Jw0KICAg ICAgICAgICAgcmV0dXJuICRvdXQNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gIjwkbmFtZT4i ICAgIyBlcmxhdWJ0ZXMgVGFnLCBhbGxlIEF0dHJpYnV0ZSBnZXN0cmlwcHQNCiAgICB9DQogICAg JHMgPSBbcmVnZXhdOjpSZXBsYWNlKCRzLCAnKD9zKTwoPzxzbGFzaD4vPykoPzxuYW1lPlthLXpB LVpdW2EtekEtWjAtOV0qKSg/PGF0dHJzPltePl0qKT4nLCAkZXZhbHVhdG9yKQ0KICAgIHJldHVy biAkcw0KfQ0KDQojIEtleS1VbmlvbjogZmVobGVuZGUgVG9wLUxldmVsLUtleXMgYXVzIGRlbSBB bHQtU3RhbmQgZXJoYWx0ZW4uIFBVVCAvYXBpL2FkbWluDQojIHdhciBWb2xsLU92ZXJ3cml0ZSDi gJQgZWluIFBhcnRpYWwtUFVUIGxvZXNjaHRlIG5pY2h0IG1pdGdlc2VuZGV0ZSBUb3AtTGV2ZWwt DQojIEtleXMgKHNjaGljaHRjb2RlcywgZmVpZXJ0YWdlLCDigKYpLiBTY2h1ZXR6dCBnZWdlbiB2 ZXJzZWhlbnRsaWNoZXMgRW50a2VybmVuLg0KZnVuY3Rpb24gTWVyZ2UtQWRtaW5LZXlzKCRBbHQs ICROZXUpIHsNCiAgICBpZiAoJG51bGwgLWVxICRBbHQgLW9yICRudWxsIC1lcSAkTmV1KSB7IHJl dHVybiAkTmV1IH0NCiAgICBmb3JlYWNoICgkcHJvcCBpbiAkQWx0LlBTT2JqZWN0LlByb3BlcnRp ZXMpIHsNCiAgICAgICAgaWYgKC1ub3QgJE5ldS5QU09iamVjdC5Qcm9wZXJ0aWVzWyRwcm9wLk5h bWVdKSB7DQogICAgICAgICAgICAkTmV1IHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAk cHJvcC5OYW1lIC1Ob3RlUHJvcGVydHlWYWx1ZSAkcHJvcC5WYWx1ZSAtRm9yY2UNCiAgICAgICAg fQ0KICAgIH0NCiAgICByZXR1cm4gJE5ldQ0KfQ0KDQojIEJlcmVpbmlndCBkaWUgYmVrYW5udGVu IFJpY2gtVGV4dC1GZWxkZXIgZWluZXMgKFRlaWwtKUFkbWluLU9iamVrdHMgaW4tcGxhY2UuDQpm dW5jdGlvbiBJbnZva2UtQWRtaW5SaWNodGV4dFNhbml0aXplKCREYXRlbikgew0KICAgIGlmICgk bnVsbCAtZXEgJERhdGVuKSB7IHJldHVybiB9DQogICAgZm9yZWFjaCAoJGsgaW4gJ2hpbGZldGV4 dCcsJ2luZm90ZXh0JywnYmVkaWVudW5nc3RleHRlJywnaW1wcmVzc3VtJywnc2NobGllc3NpbmZv Jywnc3VwcG9ydGluZm8nLCdzdGFuZG9ydGVCZXNjaHJlaWJ1bmcnLCdzdXBwb3J0TWFpbFRleHQn KSB7DQogICAgICAgIGlmICgkRGF0ZW4uUFNPYmplY3QuUHJvcGVydGllc1ska10gLWFuZCAoJERh dGVuLiRrIC1pcyBbc3RyaW5nXSkpIHsNCiAgICAgICAgICAgICREYXRlbi4kayA9IENvbnZlcnRU by1TYWZlUmljaEh0bWwgJERhdGVuLiRrDQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCREYXRl bi5QU09iamVjdC5Qcm9wZXJ0aWVzWydlbWFpbFZvcmxhZ2VuJ10gLWFuZCAkbnVsbCAtbmUgJERh dGVuLmVtYWlsVm9ybGFnZW4pIHsNCiAgICAgICAgZm9yZWFjaCAoJHAgaW4gJERhdGVuLmVtYWls Vm9ybGFnZW4uUFNPYmplY3QuUHJvcGVydGllcykgew0KICAgICAgICAgICAgJHYgPSAkcC5WYWx1 ZQ0KICAgICAgICAgICAgaWYgKCRudWxsIC1uZSAkdiAtYW5kICR2LlBTT2JqZWN0LlByb3BlcnRp ZXNbJ3RleHQnXSAtYW5kICgkdi50ZXh0IC1pcyBbc3RyaW5nXSkpIHsNCiAgICAgICAgICAgICAg ICAkdi50ZXh0ID0gQ29udmVydFRvLVNhZmVSaWNoSHRtbCAkdi50ZXh0DQogICAgICAgICAgICB9 DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCREYXRlbi5QU09iamVjdC5Qcm9wZXJ0aWVzWydz b25kZXJ0ZXJtaW5lJ10gLWFuZCAkbnVsbCAtbmUgJERhdGVuLnNvbmRlcnRlcm1pbmUpIHsNCiAg ICAgICAgZm9yZWFjaCAoJGUgaW4gQCgkRGF0ZW4uc29uZGVydGVybWluZSkpIHsNCiAgICAgICAg ICAgIGlmICgkbnVsbCAtbmUgJGUgLWFuZCAkZS5QU09iamVjdC5Qcm9wZXJ0aWVzWyd0ZXh0J10g LWFuZCAoJGUudGV4dCAtaXMgW3N0cmluZ10pKSB7DQogICAgICAgICAgICAgICAgJGUudGV4dCA9 IENvbnZlcnRUby1TYWZlUmljaEh0bWwgJGUudGV4dA0KICAgICAgICAgICAgfQ0KICAgICAgICB9 DQogICAgfQ0KfQ0KDQojIFBTLTUuMS1BcnJheS1XcmFwcGVyLUJ1ZzogQ29udmVydFRvLUpzb24g c2VyaWFsaXNpZXJ0IGJlaSBiZXN0aW1tdGVuDQojIFBTQ3VzdG9tT2JqZWN0LS9bb2JqZWN0W11d LUtvbWJpbmF0aW9uZW4gZWluIEFycmF5IGFscw0KIyB7ICJ2YWx1ZSI6IFsuLi5dLCAiQ291bnQi OiBOIH0gc3RhdHQgYWxzIGVjaHRlcyBKU09OLUFycmF5LiBGb2xnZSBiZWltDQojIG5hZWNoc3Rl biBSZWFkOiBDb252ZXJ0RnJvbS1Kc29uIGxpZWZlcnQgZWluIFdyYXBwZXItT2JqZWt0LCBmb3Jl YWNoDQojIGl0ZXJpZXJ0IG51ciAxeCwgdW5kIG53S2VubnVuZy1NYXRjaGVzIChTdXBlclVzZXIs IEZhY2hhdWZzaWNodCkgbGF1ZmVuDQojIGxlZXIgLT4gRWludHJhZWdlIHdpcmtlbiB3aWUgZ2Vs b2VzY2h0LCBVc2VyIHdlcmRlbiBrZWluZSBSZWNodGUgenVnZW9yZG5ldC4NCiMNCiMgQ29udmVy dFRvLUpzb25TYWZlIGtvbnZlcnRpZXJ0IGRhcyBPYmpla3Qgdm9yIGRlciBTZXJpYWxpc2llcnVu ZyBpbg0KIyBlaW5lIHJlaW5lIEhhc2h0YWJsZS0vQXJyYXktL1ByaW1pdGl2ZS1TdHJ1a3R1ci4g RGFtaXQgdmVyc2Nod2luZGVuDQojIFBTQ3VzdG9tT2JqZWN0LVdyYXBwZXIgZ3J1bmRzYWV0emxp Y2gsIHVuZCB2b3JoYW5kZW5lIHsgdmFsdWUsIENvdW50IH0tDQojIFdyYXBwZXIgd2VyZGVuIGJl aSBkaWVzZXIgR2VsZWdlbmhlaXQgYXVjaCBnbGVpY2ggZW50cGFja3QuIEhlaWx0DQojIGV4aXN0 aWVyZW5kZSBrYXB1dHRlIERhdGVpZW4gYmVpbSBuYWVjaHN0ZW4gV3JpdGUtWnlrbHVzLg0KZnVu Y3Rpb24gVGVzdC1Jc1dyYXBwZXJPYmplY3QoJG8pIHsNCiAgICBpZiAoJG51bGwgLWVxICRvKSB7 IHJldHVybiAkZmFsc2UgfQ0KICAgIGlmICgtbm90ICgkbyAtaXMgW1BTQ3VzdG9tT2JqZWN0XSkp IHsgcmV0dXJuICRmYWxzZSB9DQogICAgJG5hbWVzID0gQCgkby5QU09iamVjdC5Qcm9wZXJ0aWVz IHwgRm9yRWFjaC1PYmplY3QgeyAkXy5OYW1lIH0pDQogICAgaWYgKCRuYW1lcy5Db3VudCAtbmUg MikgeyByZXR1cm4gJGZhbHNlIH0NCiAgICBpZiAoLW5vdCAoKCRuYW1lcyAtY29udGFpbnMgJ3Zh bHVlJykgLWFuZCAoJG5hbWVzIC1jb250YWlucyAnQ291bnQnKSkpIHsgcmV0dXJuICRmYWxzZSB9 DQogICAgcmV0dXJuICgkby52YWx1ZSAtaXMgW1N5c3RlbS5Db2xsZWN0aW9ucy5JTGlzdF0gLWFu ZCAtbm90ICgkby52YWx1ZSAtaXMgW3N0cmluZ10pKQ0KfQ0KDQpmdW5jdGlvbiBDb252ZXJ0VG8t SnNvblNhZmUoJG9iaikgew0KICAgIGlmICgkbnVsbCAtZXEgJG9iaikgeyByZXR1cm4gJG51bGwg fQ0KICAgIGlmICgkb2JqIC1pcyBbc3RyaW5nXSkgeyByZXR1cm4gJG9iaiB9DQogICAgaWYgKCRv YmogLWlzIFtib29sXSAtb3IgJG9iaiAtaXMgW2ludF0gLW9yICRvYmogLWlzIFtsb25nXSAtb3Ig JG9iaiAtaXMgW2RvdWJsZV0gLW9yICRvYmogLWlzIFtkZWNpbWFsXSkgeyByZXR1cm4gJG9iaiB9 DQogICAgaWYgKCRvYmouR2V0VHlwZSgpLklzVmFsdWVUeXBlKSB7IHJldHVybiAkb2JqIH0NCiAg ICBpZiAoJG9iaiAtaXMgW1N5c3RlbS5Db2xsZWN0aW9ucy5JRGljdGlvbmFyeV0pIHsNCiAgICAg ICAgJGggPSBbb3JkZXJlZF1Ae30NCiAgICAgICAgZm9yZWFjaCAoJGsgaW4gJG9iai5LZXlzKSB7 ICRoW1tzdHJpbmddJGtdID0gQ29udmVydFRvLUpzb25TYWZlICRvYmpbJGtdIH0NCiAgICAgICAg cmV0dXJuICRoDQogICAgfQ0KICAgIGlmICgkb2JqIC1pcyBbU3lzdGVtLkNvbGxlY3Rpb25zLklM aXN0XSkgew0KICAgICAgICAjIFdyYXBwZXIgc2l0enQgSU0gQXJyYXk6IFt7dmFsdWU6Wy4uLl0s IENvdW50Ok59XSAtPiBlcnNldHplIGRpZQ0KICAgICAgICAjIGFldXNzZXJlIExpc3RlIGR1cmNo IGRhcyBpbm5lcmUgdmFsdWUtQXJyYXkuDQogICAgICAgIGlmICgkb2JqLkNvdW50IC1lcSAxIC1h bmQgKFRlc3QtSXNXcmFwcGVyT2JqZWN0ICRvYmpbMF0pKSB7DQogICAgICAgICAgICAkaW5uZXIg PSAkb2JqWzBdLnZhbHVlDQogICAgICAgICAgICAkb3V0ID0gTmV3LU9iamVjdCBTeXN0ZW0uQ29s bGVjdGlvbnMuQXJyYXlMaXN0DQogICAgICAgICAgICBmb3JlYWNoICgkaXQgaW4gJGlubmVyKSB7 IFt2b2lkXSRvdXQuQWRkKChDb252ZXJ0VG8tSnNvblNhZmUgJGl0KSkgfQ0KICAgICAgICAgICAg cmV0dXJuICwoW29iamVjdFtdXSRvdXQuVG9BcnJheSgpKQ0KICAgICAgICB9DQogICAgICAgICRv dXQgPSBOZXctT2JqZWN0IFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QNCiAgICAgICAgZm9y ZWFjaCAoJGl0IGluICRvYmopIHsgW3ZvaWRdJG91dC5BZGQoKENvbnZlcnRUby1Kc29uU2FmZSAk aXQpKSB9DQogICAgICAgIHJldHVybiAsKFtvYmplY3RbXV0kb3V0LlRvQXJyYXkoKSkNCiAgICB9 DQogICAgaWYgKCRvYmogLWlzIFtQU0N1c3RvbU9iamVjdF0pIHsNCiAgICAgICAgJGggPSBbb3Jk ZXJlZF1Ae30NCiAgICAgICAgZm9yZWFjaCAoJHAgaW4gJG9iai5QU09iamVjdC5Qcm9wZXJ0aWVz KSB7ICRoWyRwLk5hbWVdID0gQ29udmVydFRvLUpzb25TYWZlICRwLlZhbHVlIH0NCiAgICAgICAg cmV0dXJuICRoDQogICAgfQ0KICAgIHJldHVybiAkb2JqDQp9DQoNCiMgUmVhZC1zZWl0aWdlIFdy YXBwZXItSGVpbHVuZzogZmFsbHMgZWluZSB2b3JoYW5kZW5lIERhdGVpIGJlcmVpdHMgZGVuDQoj IHt2YWx1ZSxDb3VudH0tRGVmZWt0IGhhdCwgZW50cGFja2VuIHdpciBiZWltIEVpbmxlc2VuLCBk YW1pdCBkZXIgcmVzdGxpY2hlDQojIENvZGUgKGZvcmVhY2ggdWViZXIgYWRtaW4uc3VwZXJVc2Vy IGV0Yy4pIHdpZWRlciBzYXViZXIgaXRlcmllcnQuDQpmdW5jdGlvbiBSZXBhaXItSnNvbldyYXBw ZXIoJG9iaikgew0KICAgIGlmICgkbnVsbCAtZXEgJG9iaikgeyByZXR1cm4gJG51bGwgfQ0KICAg IGlmICgkb2JqIC1pcyBbc3RyaW5nXSAtb3IgJG9iaiAtaXMgW2Jvb2xdKSB7IHJldHVybiAkb2Jq IH0NCiAgICBpZiAoJG9iai5HZXRUeXBlKCkuSXNWYWx1ZVR5cGUpIHsgcmV0dXJuICRvYmogfQ0K ICAgIGlmICgkb2JqIC1pcyBbU3lzdGVtLkNvbGxlY3Rpb25zLklMaXN0XSAtYW5kIC1ub3QgKCRv YmogLWlzIFtzdHJpbmddKSkgew0KICAgICAgICBpZiAoJG9iai5Db3VudCAtZXEgMSAtYW5kIChU ZXN0LUlzV3JhcHBlck9iamVjdCAkb2JqWzBdKSkgew0KICAgICAgICAgICAgJGlubmVyID0gJG9i alswXS52YWx1ZQ0KICAgICAgICAgICAgJG91dCA9IE5ldy1PYmplY3QgU3lzdGVtLkNvbGxlY3Rp b25zLkFycmF5TGlzdA0KICAgICAgICAgICAgZm9yZWFjaCAoJGl0IGluICRpbm5lcikgeyBbdm9p ZF0kb3V0LkFkZCgoUmVwYWlyLUpzb25XcmFwcGVyICRpdCkpIH0NCiAgICAgICAgICAgIHJldHVy biAsKFtvYmplY3RbXV0kb3V0LlRvQXJyYXkoKSkNCiAgICAgICAgfQ0KICAgICAgICAkb3V0ID0g TmV3LU9iamVjdCBTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0DQogICAgICAgIGZvcmVhY2gg KCRpdCBpbiAkb2JqKSB7IFt2b2lkXSRvdXQuQWRkKChSZXBhaXItSnNvbldyYXBwZXIgJGl0KSkg fQ0KICAgICAgICByZXR1cm4gLChbb2JqZWN0W11dJG91dC5Ub0FycmF5KCkpDQogICAgfQ0KICAg IGlmICgkb2JqIC1pcyBbUFNDdXN0b21PYmplY3RdKSB7DQogICAgICAgIGZvcmVhY2ggKCRwIGlu IEAoJG9iai5QU09iamVjdC5Qcm9wZXJ0aWVzKSkgew0KICAgICAgICAgICAgJG9iai4kKCRwLk5h bWUpID0gUmVwYWlyLUpzb25XcmFwcGVyICRwLlZhbHVlDQogICAgICAgIH0NCiAgICAgICAgcmV0 dXJuICRvYmoNCiAgICB9DQogICAgcmV0dXJuICRvYmoNCn0NCg0KZnVuY3Rpb24gUmVhZC1Kc29u T2JqZWN0KCRGaWxlTmFtZSkgew0KICAgICMgSlNPTi1DYWNoZS1IaXQ/IFBydWVmZW4gdWViZXIg ZGllc2VsYmUgTXRpbWUsIGRpZSBkZXIgVGV4dC1DYWNoZSBmdWVocnQuDQogICAgIyBEYXMgc3Bh cnQgcHJvIEhpdCBlaW4gQ29udmVydEZyb20tSnNvbiAoMjAwIEtCIC0+IH4xNTAgbXMgYXVmIFBT IDUuMSkuDQogICAgaWYgKCRzY3JpcHQ6SnNvbkNhY2hlLkNvbnRhaW5zS2V5KCRGaWxlTmFtZSkp IHsNCiAgICAgICAgJGpjZSA9ICRzY3JpcHQ6SnNvbkNhY2hlWyRGaWxlTmFtZV0NCiAgICAgICAg dHJ5IHsNCiAgICAgICAgICAgICRwID0gSm9pbi1QYXRoICREYXRhRGlyICRGaWxlTmFtZQ0KICAg ICAgICAgICAgaWYgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJHApIHsNCiAgICAgICAgICAgICAg ICAkbXQgPSAoR2V0LUl0ZW0gLUxpdGVyYWxQYXRoICRwKS5MYXN0V3JpdGVUaW1lVXRjLlRpY2tz DQogICAgICAgICAgICAgICAgaWYgKCRtdCAtZXEgJGpjZS5NdGltZVRpY2tzKSB7DQogICAgICAg ICAgICAgICAgICAgIHJldHVybiAkamNlLk9iag0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgIH0NCiAgICAgICAgfSBjYXRjaCB7fQ0KICAgICAgICAkc2NyaXB0Okpzb25DYWNoZS5SZW1v dmUoJEZpbGVOYW1lKSB8IE91dC1OdWxsDQogICAgfQ0KICAgICR0eHQgPSBSZWFkLVRleHRGaWxl ICRGaWxlTmFtZQ0KICAgIGlmICgkbnVsbCAtZXEgJHR4dCAtb3IgW3N0cmluZ106OklzTnVsbE9y V2hpdGVTcGFjZSgkdHh0KSkgeyByZXR1cm4gJG51bGwgfQ0KICAgIHRyeSB7DQogICAgICAgICRv YmogPSBSZXBhaXItSnNvbldyYXBwZXIgKCR0eHQgfCBDb252ZXJ0RnJvbS1Kc29uKQ0KICAgICAg ICAjIENhY2hlIG51ciBmdWVyIGRpZSBncm9zc2VuIEpTT05zIChhZG1pbi5qc29uLCBwbGFudW5n Lmpzb24sIGxvZ2J1Y2guanNvbikuDQogICAgICAgIGlmICgkRmlsZU5hbWUgLWVxICdhZG1pbi5q c29uJyAtb3IgJEZpbGVOYW1lIC1lcSAncGxhbnVuZy5qc29uJyAtb3IgJEZpbGVOYW1lIC1lcSAn bG9nYnVjaC5qc29uJykgew0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAkcCA9 IEpvaW4tUGF0aCAkRGF0YURpciAkRmlsZU5hbWUNCiAgICAgICAgICAgICAgICBpZiAoVGVzdC1Q YXRoIC1MaXRlcmFsUGF0aCAkcCkgew0KICAgICAgICAgICAgICAgICAgICAkbXQgPSAoR2V0LUl0 ZW0gLUxpdGVyYWxQYXRoICRwKS5MYXN0V3JpdGVUaW1lVXRjLlRpY2tzDQogICAgICAgICAgICAg ICAgICAgICRzY3JpcHQ6SnNvbkNhY2hlWyRGaWxlTmFtZV0gPSBAeyBPYmogPSAkb2JqOyBNdGlt ZVRpY2tzID0gJG10IH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGNhdGNoIHt9 DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRvYmoNCiAgICB9IGNhdGNoIHsNCiAgICAgICAg TG9nLUFwaSAoJ1BBUlNFIHswfSBGRUhMRVI6IHsxfScgLWYgJEZpbGVOYW1lLCAkXy5FeGNlcHRp b24uTWVzc2FnZSkNCiAgICAgICAgcmV0dXJuICRudWxsDQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBX cml0ZS1Kc29uT2JqZWN0KCRGaWxlTmFtZSwgJE9iaikgew0KICAgICRzYWZlID0gQ29udmVydFRv LUpzb25TYWZlICRPYmoNCiAgICAkanNvbiA9ICRzYWZlIHwgQ29udmVydFRvLUpzb24gLURlcHRo IDMwDQogICAgJGVyZyA9IFdyaXRlLVRleHRGaWxlICRGaWxlTmFtZSAkanNvbg0KICAgICMgV29j aGVucGxhbi1TbmFwc2hvdCAoc3RhdGlzY2hlIE9mZmxpbmUtRGF0ZWkpIGF1dG9tYXRpc2NoIG5h Y2h6aWVoZW4sDQogICAgIyBzb2JhbGQgUGxhbnVuZ3MtIG9kZXIgQWRtaW4tRGF0ZW4gZ2VzY2hy aWViZW4gd3VyZGVuLiBXaXJmdCBGZWhsZXIgd2VnDQogICAgIyBkYW1pdCBlaW4ga2FwdXR0ZXMg VGVtcGxhdGUgZGVuIGVpZ2VudGxpY2hlbiBXcml0ZSBuaWNodCBibG9ja2llcnQuDQogICAgaWYg KCRlcmcgLWFuZCAoJEZpbGVOYW1lIC1lcSAncGxhbnVuZy5qc29uJyAtb3IgJEZpbGVOYW1lIC1l cSAnYWRtaW4uanNvbicpKSB7DQogICAgICAgIHRyeSB7IEdlbmVyYXRlLVdvY2hlbnBsYW5TbmFw c2hvdCB9IGNhdGNoIHsNCiAgICAgICAgICAgIExvZy1BcGkgKCdTTkFQU0hPVCAoaG9vaykgRkVI TEVSOiB7MH0nIC1mICRfLkV4Y2VwdGlvbi5NZXNzYWdlKQ0KICAgICAgICB9DQogICAgfQ0KICAg IHJldHVybiAkZXJnDQp9DQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBXb2NoZW5wbGFuLU9m ZmxpbmUtU25hcHNob3QNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFcnpldWd0IGVpbmUgc3Rh dGlzY2hlICJWSTMvV29jaGVucGxhbi5odG1sIiBtaXQgZWluZ2ViZXR0ZXRlbiBQbGFudW5ncy0N CiMgRGF0ZW4uIERhdGVpIGxhZXVmdCBrb21wbGV0dCBvaG5lIFNlcnZlciAoRG9wcGVsa2xpY2sg cmVpY2h0KTogaW5saW5lIENTUw0KIyB1bmQgaW5saW5lIEpTLCBrZWluIEZldGNoLCBrZWluZSBl eHRlcm5lbiBBc3NldHMuIFdpcmQgbmFjaCBqZWRlbSBTY2hyZWliZW4NCiMgYXVmIHBsYW51bmcu anNvbiBvZGVyIGFkbWluLmpzb24gYXV0b21hdGlzY2ggcmVnZW5lcmllcnQgKHNpZWhlIEhvb2sg aW4NCiMgV3JpdGUtSnNvbk9iamVjdCkgdW5kIGVpbm1hbCBiZWltIFNlcnZlci1TdGFydC4NCmZ1 bmN0aW9uIEdlbmVyYXRlLVdvY2hlbnBsYW5TbmFwc2hvdCB7DQogICAgdHJ5IHsNCiAgICAgICAg IyBUZW1wbGF0ZS1TdWNoZTogZXJzdCBpbSAkUm9vdCAobG9rYWxlciBBc3NldC1DYWNoZSksIGRh bm4gaW0NCiAgICAgICAgIyBBc3NldEZhbGxiYWNrIChTaGFyZSkuIERhbWl0IGZ1bmt0aW9uaWVy dCBkZXIgU25hcHNob3QgYXVjaCwgd2Vubg0KICAgICAgICAjIGRlciBMYXVuY2hlciBkYXMgVGVt cGxhdGUgbm9jaCBuaWNodCBpbiBkZW4gQ2FjaGUga29waWVydCBoYXQNCiAgICAgICAgIyAoei5C LiB3ZWlsIGVpbmUgYWVsdGVyZSBkZ2wuYmF0IGltIEVpbnNhdHogd2FyLCBvZGVyIGJlaSBtYW51 ZWxsZXINCiAgICAgICAgIyBTZXJ2ZXItU3RhcnQtVmFyaWFudGUgb2huZSByb2JvY29weS1Wb3Js YXVmKS4NCiAgICAgICAgJHRwbFBhdGggPSBKb2luLVBhdGggJFJvb3QgJ1dvY2hlbnBsYW4udGVt cGxhdGUuaHRtbCcNCiAgICAgICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJHRw bFBhdGgpKSB7DQogICAgICAgICAgICBpZiAoJHNjcmlwdDpBc3NldEZhbGxiYWNrKSB7DQogICAg ICAgICAgICAgICAgJHRwbEZhbGxiYWNrID0gSm9pbi1QYXRoICRzY3JpcHQ6QXNzZXRGYWxsYmFj ayAnV29jaGVucGxhbi50ZW1wbGF0ZS5odG1sJw0KICAgICAgICAgICAgICAgIGlmIChUZXN0LVBh dGggLUxpdGVyYWxQYXRoICR0cGxGYWxsYmFjaykgew0KICAgICAgICAgICAgICAgICAgICAkdHBs UGF0aCA9ICR0cGxGYWxsYmFjaw0KICAgICAgICAgICAgICAgICAgICBMb2ctQXBpICgnU05BUFNI T1Q6IFRlbXBsYXRlIGF1cyBBc3NldEZhbGxiYWNrICh7MH0pJyAtZiAkdHBsRmFsbGJhY2spDQog ICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgTG9nLUFwaSAnU05B UFNIT1Q6IFRlbXBsYXRlIFdvY2hlbnBsYW4udGVtcGxhdGUuaHRtbCBmZWhsdCAod2VkZXIgJFJv b3Qgbm9jaCBBc3NldEZhbGxiYWNrKScNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRmYWxz ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAg ICAgTG9nLUFwaSAnU05BUFNIT1Q6IFRlbXBsYXRlIFdvY2hlbnBsYW4udGVtcGxhdGUuaHRtbCBm ZWhsdCAoa2VpbiBBc3NldEZhbGxiYWNrIGdlc2V0enQpJw0KICAgICAgICAgICAgICAgIHJldHVy biAkZmFsc2UNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkdHBsQnl0ZXMgPSBb U3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsQnl0ZXMoJHRwbFBhdGgpDQogICAgICAgICR0cGwgPSBb U3lzdGVtLlRleHQuRW5jb2RpbmddOjpVVEY4LkdldFN0cmluZygkdHBsQnl0ZXMpDQoNCiAgICAg ICAgJGFkbWluID0gUmVhZC1Kc29uT2JqZWN0ICdhZG1pbi5qc29uJw0KICAgICAgICAkcGxhbnVu ZyA9IFJlYWQtSnNvbk9iamVjdCAncGxhbnVuZy5qc29uJw0KDQogICAgICAgICMgU2NobGFua2Vy IERhdGVuLUJsb2NrOiBudXIgd2FzIGRlciBXb2NoZW5wbGFuLVJlbmRlcmVyIGJyYXVjaHQuDQog ICAgICAgICRkYXRlbiA9IFtvcmRlcmVkXUB7DQogICAgICAgICAgICBqYWhyICAgICAgICAgICA9 IGlmICgkYWRtaW4gLWFuZCAkYWRtaW4uUFNPYmplY3QuUHJvcGVydGllc1snamFociddKSB7ICRh ZG1pbi5qYWhyIH0gZWxzZSB7IChHZXQtRGF0ZSkuWWVhciB9DQogICAgICAgICAgICBmZWllcnRh Z2UgICAgICA9IGlmICgkYWRtaW4gLWFuZCAkYWRtaW4uUFNPYmplY3QuUHJvcGVydGllc1snZmVp ZXJ0YWdlJ10pICAgICAgeyAkYWRtaW4uZmVpZXJ0YWdlIH0gICAgICBlbHNlIHsgQCgpIH0NCiAg ICAgICAgICAgIGZlcmllbiAgICAgICAgID0gaWYgKCRhZG1pbiAtYW5kICRhZG1pbi5QU09iamVj dC5Qcm9wZXJ0aWVzWydmZXJpZW4nXSkgICAgICAgICB7ICRhZG1pbi5mZXJpZW4gfSAgICAgICAg IGVsc2UgeyBAKCkgfQ0KICAgICAgICAgICAgc29uZGVydGVybWluZSAgPSBpZiAoJGFkbWluIC1h bmQgJGFkbWluLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3NvbmRlcnRlcm1pbmUnXSkgIHsgJGFkbWlu LnNvbmRlcnRlcm1pbmUgfSAgZWxzZSB7IEAoKSB9DQogICAgICAgICAgICBmdW5rdGlvbmVuICAg ICA9IGlmICgkYWRtaW4gLWFuZCAkYWRtaW4uUFNPYmplY3QuUHJvcGVydGllc1snZnVua3Rpb25l biddKSAgICAgeyAkYWRtaW4uZnVua3Rpb25lbiB9ICAgICBlbHNlIHsgQCgpIH0NCiAgICAgICAg ICAgIGdydXBwZW4gICAgICAgID0gaWYgKCRhZG1pbiAtYW5kICRhZG1pbi5QU09iamVjdC5Qcm9w ZXJ0aWVzWydncnVwcGVuJ10pICAgICAgICB7ICRhZG1pbi5ncnVwcGVuIH0gICAgICAgIGVsc2Ug eyBAKCkgfQ0KICAgICAgICAgICAgcGVyc29uZW4gICAgICAgPSBpZiAoJHBsYW51bmcgLWFuZCAk cGxhbnVuZy5QU09iamVjdC5Qcm9wZXJ0aWVzWydwZXJzb25lbiddKSAgIHsgJHBsYW51bmcucGVy c29uZW4gfSAgICAgZWxzZSB7IEAoKSB9DQogICAgICAgICAgICBlaW50cmFlZ2UgICAgICA9IGlm ICgkcGxhbnVuZyAtYW5kICRwbGFudW5nLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2VpbnRyYWVnZSdd KSAgeyAkcGxhbnVuZy5laW50cmFlZ2UgfSAgICBlbHNlIHsgQHt9IH0NCiAgICAgICAgfQ0KDQog ICAgICAgICRzYWZlID0gQ29udmVydFRvLUpzb25TYWZlICRkYXRlbg0KICAgICAgICAkanNvbiA9 ICRzYWZlIHwgQ29udmVydFRvLUpzb24gLURlcHRoIDMwIC1Db21wcmVzcw0KDQogICAgICAgICMg U2NodXR6IHZvciAnPC9zY3JpcHQ+Jy1BdXNicnVjaCBhdXMgZGVtIGlubGluZSA8c2NyaXB0Pi1C bG9jazogd2Vubg0KICAgICAgICAjIGVpbiBQZXJzb25lbi1OYW1lIG9kZXIgU29uZGVydGVybWlu LUhUTUwgPC8gZW50aGFlbHQsIG11c3MgZGFyYXVzDQogICAgICAgICMgPFwvIHdlcmRlbiwgc29u c3Qgd3VlcmRlIGRlciBCcm93c2VyIGFuIGRpZXNlciBTdGVsbGUgZGFzIFNjcmlwdC0NCiAgICAg ICAgIyBUYWcgc2NobGllc3Nlbi4gSlNPTi1QYXJzZXIgYWt6ZXB0aWVydCBkaWUgQmFja3NsYXNo LUVzY2FwZXMuDQogICAgICAgICRqc29uID0gJGpzb24uUmVwbGFjZSgnPC8nLCAnPFwvJykNCg0K ICAgICAgICAkemVpdCA9IChHZXQtRGF0ZSAtRm9ybWF0ICdkZC5NTS55eXl5IEhIOm1tJykNCiAg ICAgICAgJGh0bWwgPSAkdHBsLlJlcGxhY2UoJ19fREFURU5fSlNPTl9fJywgJGpzb24pLlJlcGxh Y2UoJ19fU05BUFNIT1RfWkVJVF9fJywgJHplaXQpDQoNCiAgICAgICAgJHppZWwgPSBKb2luLVBh dGggJFJvb3QgJ1dvY2hlbnBsYW4uaHRtbCcNCiAgICAgICAgW1N5c3RlbS5JTy5GaWxlXTo6V3Jp dGVBbGxCeXRlcygkemllbCwgW1N5c3RlbS5UZXh0LkVuY29kaW5nXTo6VVRGOC5HZXRCeXRlcygk aHRtbCkpDQogICAgICAgIExvZy1BcGkgKCdTTkFQU0hPVCBXb2NoZW5wbGFuLmh0bWw6IHswfSBC eXRlcyBnZXNjaHJpZWJlbiAoU3RhbmQgezF9KScgLWYgJGh0bWwuTGVuZ3RoLCAkemVpdCkNCiAg ICAgICAgcmV0dXJuICR0cnVlDQogICAgfSBjYXRjaCB7DQogICAgICAgIExvZy1BcGkgKCdTTkFQ U0hPVCBGRUhMRVI6IHswfScgLWYgJF8uRXhjZXB0aW9uLk1lc3NhZ2UpDQogICAgICAgIHJldHVy biAkZmFsc2UNCiAgICB9DQp9DQoNCiMgQXV0by1CYWNrdXAgdm9yIGVpbmVtIEFkbWluLVdyaXRl LiBLb3N0ZXQgcXVhc2kgbmljaHRzIHVuZCBoYXQgc2Nob24NCiMgZWlubWFsIGRhcyBSZXBvIGdl cmV0dGV0IChBdWRpdC1VbmZhbGwgRi0wMDApLiBSb3RpZXJ0OiBtYXggMjAgS29waWVuLg0KZnVu Y3Rpb24gQmFja3VwLUFkbWluSnNvbihbc3RyaW5nXSRIaW53ZWlzID0gJ3ByZXNhdmUnKSB7DQog ICAgJHNyYyA9IEpvaW4tUGF0aCAkRGF0YURpciAnYWRtaW4uanNvbicNCiAgICBpZiAoLW5vdCAo VGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkc3JjKSkgeyByZXR1cm4gJG51bGwgfQ0KICAgIHRyeSB7 DQogICAgICAgICR0cyA9IChHZXQtRGF0ZSAtRm9ybWF0ICd5eXl5TU1kZF9ISG1tc3MnKQ0KICAg ICAgICAkbmFtZSA9ICgnYWRtaW5fYmFja3VwX3swfV97MX0uanNvbicgLWYgJHRzLCAkSGlud2Vp cykNCiAgICAgICAgJHppZWwgPSBKb2luLVBhdGggJERhdGFEaXIgJG5hbWUNCiAgICAgICAgJGts YXJ0ZXh0ID0gUmVhZC1UZXh0RmlsZSAnYWRtaW4uanNvbicNCiAgICAgICAgaWYgKCRudWxsIC1l cSAka2xhcnRleHQpIHsgcmV0dXJuICRudWxsIH0NCiAgICAgICAgV3JpdGUtQmFja3VwQnl0ZXMg JHppZWwgJGtsYXJ0ZXh0DQogICAgICAgICRhbGxlID0gQChHZXQtQ2hpbGRJdGVtIC1MaXRlcmFs UGF0aCAkRGF0YURpciAtRmlsdGVyICdhZG1pbl9iYWNrdXBfKi5qc29uJyAtRXJyb3JBY3Rpb24g U2lsZW50bHlDb250aW51ZSB8DQogICAgICAgICAgICAgICAgICBTb3J0LU9iamVjdCBMYXN0V3Jp dGVUaW1lIC1EZXNjZW5kaW5nKQ0KICAgICAgICBpZiAoJGFsbGUuQ291bnQgLWd0IDIwKSB7DQog ICAgICAgICAgICBmb3IgKCRpID0gMjA7ICRpIC1sdCAkYWxsZS5Db3VudDsgJGkrKykgew0KICAg ICAgICAgICAgICAgIHRyeSB7IFJlbW92ZS1JdGVtIC1MaXRlcmFsUGF0aCAkYWxsZVskaV0uRnVs bE5hbWUgLUZvcmNlIC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlIH0gY2F0Y2gge30NCiAg ICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gJG5hbWUNCiAgICB9IGNhdGNo IHsNCiAgICAgICAgTG9nLUFwaSAoIkJBQ0tVUCBhZG1pbi5qc29uIEZFSExFUjogezB9IiAtZiAk Xy5FeGNlcHRpb24uTWVzc2FnZSkNCiAgICAgICAgcmV0dXJuICRudWxsDQogICAgfQ0KfQ0KDQoj IFdpcGUtU2NodXR6OiB2ZXJoaW5kZXJ0LCBkYXNzIGVpbmUgYmVmdWVsbHRlIExpc3RlIGR1cmNo IGVpbiBsZWVyZXMNCiMgQXJyYXkgYXVzIFZlcnNlaGVuIGF1ZiAwIGdlc2V0enQgd2lyZC4gQXVz bG9lc2VyIHdhciBkZXIgQXVkaXQtVW5mYWxsDQojIHZvbSAyMDI2LTA0LTI0LiBVbWdlaHVuZyBl eHBsaXppdCB2aWEgP2NvbmZpcm1SZXNldD10cnVlIG9kZXIgQm9keS5jb25maXJtUmVzZXQuDQoj IEdpYnQgJG51bGwgenVydWVjayB3ZW5uIE9LLCBzb25zdCBlaW5lbiBGZWhsZXItU3RyaW5nIGZ1 ZXIgNDA5Lg0KZnVuY3Rpb24gVGVzdC1XaXBlU2NodXR6KFtzdHJpbmddJEZlbGQsICROZXVEYXRl biwgJEFkbWluLCAkUmVxdWVzdCwgJEJvZHlKc29uKSB7DQogICAgaWYgKCRudWxsIC1lcSAkQWRt aW4gLW9yIC1ub3QgJEFkbWluLlBTT2JqZWN0LlByb3BlcnRpZXNbJEZlbGRdKSB7IHJldHVybiAk bnVsbCB9DQogICAgJGFsdCA9ICRBZG1pbi4kRmVsZA0KICAgIGlmICgkbnVsbCAtZXEgJGFsdCAt b3IgLW5vdCAoJGFsdCAtaXMgW1N5c3RlbS5Db2xsZWN0aW9ucy5JTGlzdF0pKSB7IHJldHVybiAk bnVsbCB9DQogICAgJGFsdENvdW50ID0gQCgkYWx0KS5Db3VudA0KICAgIGlmICgkYWx0Q291bnQg LWVxIDApIHsgcmV0dXJuICRudWxsIH0NCiAgICAkbmV1Q291bnQgPSAwDQogICAgaWYgKCRudWxs IC1uZSAkTmV1RGF0ZW4pIHsNCiAgICAgICAgaWYgKCROZXVEYXRlbiAtaXMgW1N5c3RlbS5Db2xs ZWN0aW9ucy5JTGlzdF0pIHsgJG5ldUNvdW50ID0gQCgkTmV1RGF0ZW4pLkNvdW50IH0NCiAgICAg ICAgZWxzZSB7ICRuZXVDb3VudCA9IDEgfQ0KICAgIH0NCiAgICBpZiAoJG5ldUNvdW50IC1ndCAw KSB7IHJldHVybiAkbnVsbCB9DQogICAgIyBBdXNuYWhtZTogZXhwbGl6aXQgYmVzdGFldGlndGVy IFJlc2V0IChRdWVyeS1QYXJhbSBPREVSIEJvZHktRmxhZykNCiAgICB0cnkgew0KICAgICAgICBp ZiAoJFJlcXVlc3QgLWFuZCAkUmVxdWVzdC5VcmwgLWFuZCAkUmVxdWVzdC5VcmwuUXVlcnkgLW1h dGNoICdjb25maXJtUmVzZXQ9KHRydWV8MSknKSB7IHJldHVybiAkbnVsbCB9DQogICAgfSBjYXRj aCB7fQ0KICAgIGlmICgkQm9keUpzb24gLWFuZCAkQm9keUpzb24uUFNPYmplY3QuUHJvcGVydGll c1snY29uZmlybVJlc2V0J10gLWFuZCBbYm9vbF0kQm9keUpzb24uY29uZmlybVJlc2V0KSB7IHJl dHVybiAkbnVsbCB9DQogICAgcmV0dXJuICgiTGlzdGUgJ3swfScgd3VlcmRlIHZvbiB7MX0gRWlu dHJhZWdlbiBhdWYgMCBnZXNldHp0LiBBYnNpY2h0bGljaD8gUmVxdWVzdCBtaXQgP2NvbmZpcm1S ZXNldD10cnVlIHdpZWRlcmhvbGVuLiIgLWYgJEZlbGQsICRhbHRDb3VudCkNCn0NCg0KIyBDcm9z cy1wcm9jZXNzIExvY2sgcGVyIExvY2stRmlsZS4gVmVyaGluZGVydCwgZGFzcyB6d2VpIHBhcmFs bGVsZQ0KIyBTZXJ2ZXItSW5zdGFuemVuICh6LkIuIHp3ZWkgVXNlciBhdWYgZGVtc2VsYmVuIE5l dHpsYXVmd2Vyaywgb2RlciBlaW4NCiMgTGF1bmNoZXItUmFjZSB3YWVocmVuZCBkZXMgU2VydmVy d2VjaHNlbHMpIGdsZWljaHplaXRpZyBkaWVzZWxiZSBEYXRlaQ0KIyByZWFkLW1vZGlmeS13cml0 ZW4gdW5kIHNpY2ggZGFiZWkgemVyc2NoaWVzc2VuLiBJbm5lcmhhbGIgRUlORVMgU2VydmVyLQ0K IyBQcm96ZXNzZXMgaXN0IEh0dHBMaXN0ZW5lciB6d2FyIHNlcmllbGwsIGFiZXIgZGVyIExvY2sg c2NodWV0enQgenVzYWV0emxpY2gNCiMgZ2VnZW4gcGFyYWxsZWxlIFNlcnZlci1TdGFydHMuDQoj IFBTLTUuMS1VbndyYXAtU2NodXR6IGZ1ZXIgYWRtaW4uanNvbi1MaXN0ZW5mZWxkZXI6IExpc3Rl biBtaXQgbnVyIGVpbmVtDQojIEVsZW1lbnQgd2VyZGVuIHZvbSBKU09OLVJvdW5kdHJpcCAoQ29u dmVydEZyb20tSnNvbiArIHNwYWV0ZXJlcyBDb252ZXJ0VG8tSnNvbikNCiMgcmVnZWxtYWVzc2ln IHp1IEVpbnplbC1PYmpla3RlbiBlbnRwYWNrdCwgd2FzIGltIENsaWVudCB6dSAieC5mb3JFYWNo IGlzIG5vdA0KIyBhIGZ1bmN0aW9uIiB1bmQgaW4gYWRtaW4uanNvbiB6dSBkZWdlbmVyaWVydGVy IFN0cnVrdHVyIGZ1ZWhydC4gRGllIExpc3RlDQojIHNwaWVnZWx0IEFETUlOX0xJU1RfRkVMREVS IGluIGpzL2NvcmVfZGF0ZW5MYWRlbi5qcyDigJQgd2VubiBkZXIgQ2xpZW50IGVpbmVuDQojIHdl aXRlcmVuIExpc3Rlbi1GZWxkIGRhenUgbmltbXQsIGhpZXIgbWl0IGF1Zm5laG1lbi4NCiRzY3Jp cHQ6QWRtaW5MaXN0RmVsZGVyID0gQCgNCiAgICAnZmVpZXJ0YWdlJywnZmVyaWVuJywnc29uZGVy dGVybWluZScsJ3NjaGljaHRjb2RlcycsJ2dydXBwZW4nLCdzdGFuZG9ydGUnLA0KICAgICdmdW5r dGlvbmVuJywnZGllbnN0Z3JhZGUnLCdzdXBlclVzZXInLCdmYWNoYXVmc2ljaHQnLCdkaXJla3Rp b25zbGVpdHVuZycsJ2Z1ZWhydW5nc3N0ZWxsZScsJ3NjaGljaHRmb2xnZW4nLCdyb2xsZW4nLCdt aWtyb3RlYW1zJywNCiAgICAnc3RhdGlzdGlrS2FjaGVsbicsJ3N0YXRpc3Rpa0xheW91dCcNCikN Cg0KZnVuY3Rpb24gTm9ybWFsaXNpZXJlLUFkbWluTGlzdGVuKCREYXRlbikgew0KICAgIGlmICgt bm90ICREYXRlbikgeyByZXR1cm4gfQ0KICAgIGZvcmVhY2ggKCRmZWxkIGluICRzY3JpcHQ6QWRt aW5MaXN0RmVsZGVyKSB7DQogICAgICAgIGlmICgtbm90ICREYXRlbi5QU09iamVjdC5Qcm9wZXJ0 aWVzWyRmZWxkXSkgeyBjb250aW51ZSB9DQogICAgICAgICR3ZXJ0ID0gJERhdGVuLiRmZWxkDQog ICAgICAgIGlmICgkbnVsbCAtZXEgJHdlcnQpIHsNCiAgICAgICAgICAgICREYXRlbi4kZmVsZCA9 IEAoKQ0KICAgICAgICB9IGVsc2VpZiAoJHdlcnQgLWlzIFtTeXN0ZW0uQXJyYXldKSB7DQogICAg ICAgICAgICAjIFNjaG9uIEFycmF5IOKAlCB0cm90emRlbSBhbHMgW29iamVjdFtdXSB6d2luZ2Vu LCBkYW1pdA0KICAgICAgICAgICAgIyBTaW5nbGUtRWxlbWVudC1BcnJheXMgbmFjaCBkZW0gbmFl Y2hzdGVuIENvbnZlcnRUby1Kc29uIG5pY2h0DQogICAgICAgICAgICAjIGVybmV1dCBlbnRwYWNr dCB3ZXJkZW4uDQogICAgICAgICAgICAkRGF0ZW4uJGZlbGQgPSBbb2JqZWN0W11dQCgkd2VydCkN CiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICMgRWluemVsLU9iamVrdCBvZGVyIFNjYWxh ciAtPiBpbiBlaW5lbGVtZW50aWdlcyBBcnJheSBwYWNrZW4NCiAgICAgICAgICAgICREYXRlbi4k ZmVsZCA9IFtvYmplY3RbXV1AKCR3ZXJ0KQ0KICAgICAgICB9DQogICAgfQ0KfQ0KDQpmdW5jdGlv biBJbnZva2UtV2l0aEZpbGVMb2NrKCROYW1lLCAkQWN0aW9uLCAkTWF4V2FpdE1zID0gMjAwMCwg JFN0YWxlQWZ0ZXJTZWMgPSAxMCkgew0KICAgICRMb2NrUGF0aCA9IEpvaW4tUGF0aCAkRGF0YURp ciAoJE5hbWUgKyAnLmxvY2snKQ0KICAgICRTdGFydCA9IEdldC1EYXRlDQogICAgd2hpbGUgKCR0 cnVlKSB7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICAkU3RyZWFtID0gW1N5c3RlbS5JTy5G aWxlXTo6T3BlbigkTG9ja1BhdGgsIFtTeXN0ZW0uSU8uRmlsZU1vZGVdOjpDcmVhdGVOZXcsIFtT eXN0ZW0uSU8uRmlsZUFjY2Vzc106OldyaXRlLCBbU3lzdGVtLklPLkZpbGVTaGFyZV06Ok5vbmUp DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgIHJldHVybiAmICRBY3Rpb24NCiAg ICAgICAgICAgIH0gZmluYWxseSB7DQogICAgICAgICAgICAgICAgJFN0cmVhbS5DbG9zZSgpDQog ICAgICAgICAgICAgICAgdHJ5IHsgUmVtb3ZlLUl0ZW0gJExvY2tQYXRoIC1Gb3JjZSAtRXJyb3JB Y3Rpb24gU2lsZW50bHlDb250aW51ZSB9IGNhdGNoIHt9DQogICAgICAgICAgICB9DQogICAgICAg IH0gY2F0Y2ggW1N5c3RlbS5JTy5JT0V4Y2VwdGlvbl0gew0KICAgICAgICAgICAgaWYgKCgoR2V0 LURhdGUpIC0gJFN0YXJ0KS5Ub3RhbE1pbGxpc2Vjb25kcyAtZ3QgJE1heFdhaXRNcykgew0KICAg ICAgICAgICAgICAgIHRocm93ICJTcGVycmUgYXVmICROYW1lIGtvbm50ZSBuaWNodCBlcmxhbmd0 IHdlcmRlbiINCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICMgU3RhbGUtTG9jay1Fcmtlbm51 bmc6IExvY2tmaWxlIGFlbHRlciBhbHMgTiBTZWt1bmRlbiAtPiBlbnRmZXJuZW4NCiAgICAgICAg ICAgIGlmIChUZXN0LVBhdGggJExvY2tQYXRoKSB7DQogICAgICAgICAgICAgICAgJEFnZSA9ICgo R2V0LURhdGUpIC0gKEdldC1JdGVtICRMb2NrUGF0aCkuTGFzdFdyaXRlVGltZSkuVG90YWxTZWNv bmRzDQogICAgICAgICAgICAgICAgaWYgKCRBZ2UgLWd0ICRTdGFsZUFmdGVyU2VjKSB7DQogICAg ICAgICAgICAgICAgICAgIHRyeSB7IFJlbW92ZS1JdGVtICRMb2NrUGF0aCAtRm9yY2UgLUVycm9y QWN0aW9uIFNpbGVudGx5Q29udGludWUgfSBjYXRjaCB7fQ0KICAgICAgICAgICAgICAgICAgICBj b250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIFN0 YXJ0LVNsZWVwIC1NaWxsaXNlY29uZHMgNTANCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KZnVuY3Rp b24gUmVzb2x2ZS1TYWZlUGF0aCgkUmVsUGF0aCkgew0KICAgIHRyeSB7DQogICAgICAgICRGdWxs ID0gW1N5c3RlbS5JTy5QYXRoXTo6R2V0RnVsbFBhdGgoKEpvaW4tUGF0aCAkUm9vdCAkUmVsUGF0 aCkpDQogICAgfSBjYXRjaCB7IHJldHVybiAkbnVsbCB9DQogICAgIyBQcmVmaXgtQ2hlY2sgaXN0 IG51ciBzaWNoZXIsIHdlbm4gJFJvb3QgbWl0IERpcmVjdG9yeS1TZXBhcmF0b3IgZW5kZXQg4oCU DQogICAgIyBzb25zdCBwYXNzaWVydCAiQzpcVkkzX2V2aWwiIGRpZSBQcnVlZnVuZyBiZWkgJFJv b3Q9IkM6XFZJMyIuDQogICAgJHNlcCA9IFtTeXN0ZW0uSU8uUGF0aF06OkRpcmVjdG9yeVNlcGFy YXRvckNoYXINCiAgICAkcm9vdFdpdGhTZXAgPSBpZiAoJFJvb3QuRW5kc1dpdGgoJHNlcCkpIHsg JFJvb3QgfSBlbHNlIHsgJFJvb3QgKyAkc2VwIH0NCiAgICBpZiAoJEZ1bGwgLW5lICRSb290IC1h bmQgLW5vdCAkRnVsbC5TdGFydHNXaXRoKCRyb290V2l0aFNlcCwgW1N0cmluZ0NvbXBhcmlzb25d OjpPcmRpbmFsSWdub3JlQ2FzZSkpIHsNCiAgICAgICAgcmV0dXJuICRudWxsDQogICAgfQ0KICAg IHJldHVybiAkRnVsbA0KfQ0KDQojIC0tLSBIVFRQLUhlbGZlciAtLS0NCmZ1bmN0aW9uIEFkZC1T ZWN1cml0eUhlYWRlcnMoJFJlc3BvbnNlKSB7DQogICAgIyBXaXJkIGZ1ZXIgYWxsZSBBbnR3b3J0 ZW4gZ2VzZXR6dCDigJQgc3BpZWdlbHQgc2VydmVyLnB5LVZlcmhhbHRlbi4NCiAgICAkUmVzcG9u c2UuSGVhZGVycy5BZGQoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICRzY3JpcHQ6Q29y c09yaWdpbikNCiAgICAkUmVzcG9uc2UuSGVhZGVycy5BZGQoJ0FjY2Vzcy1Db250cm9sLUFsbG93 LU1ldGhvZHMnLCAnR0VULCBQT1NULCBQVVQsIERFTEVURSwgT1BUSU9OUycpDQogICAgJFJlc3Bv bnNlLkhlYWRlcnMuQWRkKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJywgJ0NvbnRlbnQt VHlwZScpDQogICAgJFJlc3BvbnNlLkhlYWRlcnMuQWRkKCdDYWNoZS1Db250cm9sJywgJ25vLXN0 b3JlJykNCiAgICAkUmVzcG9uc2UuSGVhZGVycy5BZGQoJ1gtQ29udGVudC1UeXBlLU9wdGlvbnMn LCAnbm9zbmlmZicpDQogICAgJFJlc3BvbnNlLkhlYWRlcnMuQWRkKCdYLUZyYW1lLU9wdGlvbnMn LCAnREVOWScpDQogICAgJFJlc3BvbnNlLkhlYWRlcnMuQWRkKCdSZWZlcnJlci1Qb2xpY3knLCAn bm8tcmVmZXJyZXInKQ0KICAgICMgQ1NQIChTcHJpbnQgMSDigJQgU2ljaGVyaGVpdHMtTm90YnJl bXNlIDIwMjYtMDUtMjgpOg0KICAgICMgVmFuaWxsYS1KUy1BcHAgb2huZSBleHRlcm5lIENETnMs IGFsbGVzIG11c3Mgdm9uICdzZWxmJyBrb21tZW4uIElubGluZS0NCiAgICAjIFN0eWxlcyBzaW5k IHRvbGVyaWVydCAoU2NoaWNodGNvZGUtRmFyYmVuLCBBdmF0YXItU3R5bGUtQXR0cmlidXRlIHdl cmRlbg0KICAgICMgZHluYW1pc2NoIHZpYSBzdHlsZT0iLi4uIiBnZXNldHp0KS4gSW5saW5lLVNj cmlwdHMgTklDSFQgZXJsYXVidCDigJQgd2lyDQogICAgIyBudXR6ZW4gYXVzc2NobGllc3NsaWNo IDxzY3JpcHQgdHlwZT0ibW9kdWxlIiBzcmM9Ii4uLiI+LiBkYXRhOi1CaWxkZXINCiAgICAjIHNp bmQgZXJsYXVidCAoQXZhdGFyZSBrb2VubmVuIGJhc2U2NCBzZWluKS4gd29ya2VyLXNyYyBkZWNr dCBzeW5jLSB1bmQNCiAgICAjIGhlYXJ0YmVhdC1Xb3JrZXIgYWIuDQogICAgJFJlc3BvbnNlLkhl YWRlcnMuQWRkKCdDb250ZW50LVNlY3VyaXR5LVBvbGljeScsDQogICAgICAgICJkZWZhdWx0LXNy YyAnc2VsZic7ICIgKw0KICAgICAgICAic2NyaXB0LXNyYyAnc2VsZic7ICIgKw0KICAgICAgICAi c3R5bGUtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZSc7ICIgKw0KICAgICAgICAiaW1nLXNyYyAn c2VsZicgZGF0YTo7ICIgKw0KICAgICAgICAiY29ubmVjdC1zcmMgJ3NlbGYnOyAiICsNCiAgICAg ICAgIndvcmtlci1zcmMgJ3NlbGYnOyAiICsNCiAgICAgICAgImZyYW1lLWFuY2VzdG9ycyAnbm9u ZSc7ICIgKw0KICAgICAgICAiYmFzZS11cmkgJ3NlbGYnOyAiICsNCiAgICAgICAgImZvcm0tYWN0 aW9uICdzZWxmJyIpDQp9DQoNCmZ1bmN0aW9uIFNlbmQtSnNvblRleHQoJFJlc3BvbnNlLCAkSnNv blRleHQsICRTdGF0dXNDb2RlID0gMjAwKSB7DQogICAgaWYgKCRudWxsIC1lcSAkSnNvblRleHQp IHsgJEpzb25UZXh0ID0gJ251bGwnIH0NCiAgICBpZiAoJEpzb25UZXh0Lkxlbmd0aCAtZ3QgMCAt YW5kIFtpbnRdKCRKc29uVGV4dFswXSkgLWVxIDB4RkVGRikgeyAkSnNvblRleHQgPSAkSnNvblRl eHQuU3Vic3RyaW5nKDEpIH0NCiAgICAkYnl0ZXMgPSBbU3lzdGVtLlRleHQuRW5jb2RpbmddOjpV VEY4LkdldEJ5dGVzKCRKc29uVGV4dCkNCiAgICB0cnkgew0KICAgICAgICAkUmVzcG9uc2UuU3Rh dHVzQ29kZSA9ICRTdGF0dXNDb2RlDQogICAgICAgICRSZXNwb25zZS5Db250ZW50VHlwZSA9ICdh cHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04Jw0KICAgICAgICBBZGQtU2VjdXJpdHlIZWFk ZXJzICRSZXNwb25zZQ0KICAgICAgICAkUmVzcG9uc2UuQ29udGVudExlbmd0aDY0ID0gJGJ5dGVz Lkxlbmd0aA0KICAgICAgICAkUmVzcG9uc2UuT3V0cHV0U3RyZWFtLldyaXRlKCRieXRlcywgMCwg JGJ5dGVzLkxlbmd0aCkNCiAgICB9IGNhdGNoIHsNCiAgICAgICAgTG9nLUFwaSAoJ1NFTkQgRkVI TEVSOiB7MH0nIC1mICRfLkV4Y2VwdGlvbi5NZXNzYWdlKQ0KICAgIH0gZmluYWxseSB7DQogICAg ICAgIHRyeSB7ICRSZXNwb25zZS5PdXRwdXRTdHJlYW0uQ2xvc2UoKSB9IGNhdGNoIHt9DQogICAg fQ0KfQ0KDQpmdW5jdGlvbiBTZW5kLUpzb25PYmplY3QoJFJlc3BvbnNlLCAkRGF0YSwgJFN0YXR1 c0NvZGUgPSAyMDApIHsNCiAgICBpZiAoJG51bGwgLWVxICREYXRhKSB7ICR0ZXh0ID0gJ251bGwn IH0NCiAgICBlbHNlaWYgKCREYXRhIC1pcyBbc3RyaW5nXSkgeyAkdGV4dCA9ICREYXRhIH0NCiAg ICBlbHNlIHsNCiAgICAgICAgdHJ5IHsgJHRleHQgPSAoQ29udmVydFRvLUpzb25TYWZlICREYXRh KSB8IENvbnZlcnRUby1Kc29uIC1EZXB0aCAzMCAtQ29tcHJlc3MgfQ0KICAgICAgICBjYXRjaCB7 ICR0ZXh0ID0gJ3siZmVobGVyIjoiSlNPTi1Lb252ZXJ0aWVydW5nIGZlaGxnZXNjaGxhZ2VuIn0n IH0NCiAgICB9DQogICAgU2VuZC1Kc29uVGV4dCAkUmVzcG9uc2UgJHRleHQgJFN0YXR1c0NvZGUN Cn0NCg0KZnVuY3Rpb24gU2VuZC1FcnJvcigkUmVzcG9uc2UsICRNZXNzYWdlLCAkU3RhdHVzQ29k ZSA9IDUwMCkgew0KICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgZmVobGVyID0gJE1l c3NhZ2UgfSAkU3RhdHVzQ29kZQ0KfQ0KDQpmdW5jdGlvbiBSZWFkLUJvZHkoJFJlcXVlc3QsICRN YXhTaXplID0gMTBNQikgew0KICAgICRsZW5ndGggPSBbaW50XSRSZXF1ZXN0LkNvbnRlbnRMZW5n dGg2NA0KICAgIGlmICgkbGVuZ3RoIC1sZSAwIC1vciAkbGVuZ3RoIC1ndCAkTWF4U2l6ZSkgeyBy ZXR1cm4gJG51bGwgfQ0KICAgICRidWZmZXIgPSBOZXctT2JqZWN0IGJ5dGVbXSAkbGVuZ3RoDQog ICAgJG9mZnNldCA9IDANCiAgICB3aGlsZSAoJG9mZnNldCAtbHQgJGxlbmd0aCkgew0KICAgICAg ICAkcmVhZCA9ICRSZXF1ZXN0LklucHV0U3RyZWFtLlJlYWQoJGJ1ZmZlciwgJG9mZnNldCwgJGxl bmd0aCAtICRvZmZzZXQpDQogICAgICAgIGlmICgkcmVhZCAtZXEgMCkgeyBicmVhayB9DQogICAg ICAgICRvZmZzZXQgKz0gJHJlYWQNCiAgICB9DQogICAgcmV0dXJuIFtTeXN0ZW0uVGV4dC5FbmNv ZGluZ106OlVURjguR2V0U3RyaW5nKCRidWZmZXIsIDAsICRvZmZzZXQpDQp9DQoNCiMgRS1NYWls LVZlcnNhbmQ6IGF1c3NjaGxpZXNzbGljaCBGcm9udGVuZC1zZWl0aWcgdmlhIG1haWx0bzotUG9w dXAgKE91dGxvb2sNCiMgb2VmZm5ldCBzaWNoIG1pdCB2b3JhdXNnZWZ1ZWxsdGVuIEZlbGRlcm4p LiBLZWluIFNNVFAsIGtlaW4gU2NoZWR1bGVyLg0KIyBEZXIgU2VydmVyIHBlcnNpc3RpZXJ0IG51 ciBWb3JsYWdlbiArIFRyaWdnZXItS29uZmlnIGluIGFkbWluLmpzb24gdW50ZXINCiMgZW1haWxW b3JsYWdlbiAvIGVtYWlsVHJpZ2dlci4NCiMgLS0tIExvZ2J1Y2ggLS0tDQpmdW5jdGlvbiBXcml0 ZS1Mb2dFaW50cmFnKCRBa3Rpb24sICREZXRhaWxzKSB7DQogICAgJGxvZ2J1Y2ggPSBSZWFkLUpz b25PYmplY3QgJ2xvZ2J1Y2guanNvbicNCiAgICBpZiAoJG51bGwgLWVxICRsb2didWNoKSB7ICRs b2didWNoID0gQCgpIH0NCiAgICAjIERldGFpbC1GZWxkZXIgd2VyZGVuIEZMQUNIIGluIGRlbiBF aW50cmFnIHVlYmVybm9tbWVuIChrb25zaXN0ZW50IG1pdA0KICAgICMgUHl0aG9uLURldi1TZXJ2 ZXIpLiBGcnVlaGVyIGFscyAkZWludHJhZy5kZXRhaWxzID0gJERldGFpbHMgZ2VuZXN0ZWQsDQog ICAgIyBhYmVyIGRlciBDbGllbnQgZ3JlaWZ0IGRpcmVrdCBhdWYgZS5hbHRlcldlcnQgLyBlLnBl cnNvbklkIHp1Lg0KICAgICRlaW50cmFnID0gW29yZGVyZWRdQHsNCiAgICAgICAgemVpdHN0ZW1w ZWwgPSAoR2V0LURhdGUgLUZvcm1hdCAneXl5eS1NTS1kZCBISDptbTpzcycpDQogICAgICAgIGJl bnV0emVyICAgID0gIiREb21haW5cJFVzZXJuYW1lIg0KICAgICAgICBha3Rpb24gICAgICA9ICRB a3Rpb24NCiAgICB9DQogICAgaWYgKCREZXRhaWxzKSB7DQogICAgICAgIGlmICgkRGV0YWlscyAt aXMgW1N5c3RlbS5Db2xsZWN0aW9ucy5JRGljdGlvbmFyeV0pIHsNCiAgICAgICAgICAgIGZvcmVh Y2ggKCRrIGluICREZXRhaWxzLktleXMpIHsgJGVpbnRyYWdbW3N0cmluZ10ka10gPSAkRGV0YWls c1ska10gfQ0KICAgICAgICB9IGVsc2VpZiAoJERldGFpbHMuUFNPYmplY3QpIHsNCiAgICAgICAg ICAgIGZvcmVhY2ggKCRwIGluICREZXRhaWxzLlBTT2JqZWN0LlByb3BlcnRpZXMpIHsgJGVpbnRy YWdbJHAuTmFtZV0gPSAkcC5WYWx1ZSB9DQogICAgICAgIH0NCiAgICB9DQogICAgJG5ldSA9IEAo JGVpbnRyYWcpICsgQCgkbG9nYnVjaCkNCiAgICBpZiAoJG5ldS5Db3VudCAtZ3QgMTAwMCkgeyAk bmV1ID0gJG5ldVswLi45OTldIH0NCiAgICBXcml0ZS1Kc29uT2JqZWN0ICdsb2didWNoLmpzb24n ICRuZXUgfCBPdXQtTnVsbA0KfQ0KDQpmdW5jdGlvbiBHZXQtQWt0dWVsbGVyQmVudXR6ZXIgeyBy ZXR1cm4gIiREb21haW5cJFVzZXJuYW1lIiB9DQoNCmZ1bmN0aW9uIFRlc3QtTWF0Y2hLZW5udW5n KCRFaW50cmFnKSB7DQogICAgaWYgKFtzdHJpbmddOjpJc051bGxPckVtcHR5KCRFaW50cmFnKSkg eyByZXR1cm4gJGZhbHNlIH0NCiAgICAkayA9ICRFaW50cmFnLlRvTG93ZXIoKQ0KICAgIHJldHVy biAoJGsgLWVxICRVc2VybmFtZS5Ub0xvd2VyKCkpIC1vciAoJGsgLWVxIChHZXQtQWt0dWVsbGVy QmVudXR6ZXIpLlRvTG93ZXIoKSkNCn0NCg0KIyBOb3RmYWxsLVN1cGVyVXNlcjogZGllc2UgS2Vu bnVuZ2VuIHNpbmQgSU1NRVIgU3VwZXJVc2VyLCBlZ2FsIHdhcyBpbg0KIyBhZG1pbi5qc29uIHN0 ZWh0LiBTY2h1ZXR6dCBkYXZvciwgc2ljaCBzZWxic3QgdmVyc2VoZW50bGljaCBhdXMgZGVyDQoj IFN1cGVyVXNlci1MaXN0ZSByYXVzenVuZWhtZW4gKG9kZXIgZHVyY2gga2FwdXR0ZSBhZG1pbi5q c29uIGF1c3p1c3BlcnJlbikuDQokc2NyaXB0Ok5vdGZhbGxTdXBlclVzZXIgPSBAKCdOVzA1MzYw OScsICdyaGlubycpDQoNCmZ1bmN0aW9uIFRlc3QtSXN0U3VwZXJVc2VyIHsNCiAgICAjIE5vdGZh bGwtQ2hlY2sgenVlcnN0OiBoYXJ0dmVyZHJhaHRldGUgS2VubnVuZ2VuIHNpbmQgaW1tZXIgU3Vw ZXJVc2VyDQogICAgJHVzZXJMb3dlciA9ICRVc2VybmFtZS5Ub0xvd2VyKCkNCiAgICBmb3JlYWNo ICgkayBpbiAkc2NyaXB0Ok5vdGZhbGxTdXBlclVzZXIpIHsNCiAgICAgICAgaWYgKCRrLlRvTG93 ZXIoKSAtZXEgJHVzZXJMb3dlcikgeyByZXR1cm4gJHRydWUgfQ0KICAgIH0NCiAgICAjIFJlZ3Vs YWVyZSBQcnVlZnVuZyB2aWEgYWRtaW4uanNvbg0KICAgICRhZG1pbiA9IFJlYWQtSnNvbk9iamVj dCAnYWRtaW4uanNvbicNCiAgICBpZiAoJG51bGwgLWVxICRhZG1pbiAtb3IgJG51bGwgLWVxICRh ZG1pbi5zdXBlclVzZXIpIHsgcmV0dXJuICRmYWxzZSB9DQogICAgZm9yZWFjaCAoJHN1IGluIEAo JGFkbWluLnN1cGVyVXNlcikpIHsNCiAgICAgICAgaWYgKFRlc3QtTWF0Y2hLZW5udW5nIChbc3Ry aW5nXSRzdS5ud0tlbm51bmcpKSB7IHJldHVybiAkdHJ1ZSB9DQogICAgfQ0KICAgIHJldHVybiAk ZmFsc2UNCn0NCg0KZnVuY3Rpb24gR2V0LUZhY2hhdWZzaWNodEVpbnRyYWcgew0KICAgICRhZG1p biA9IFJlYWQtSnNvbk9iamVjdCAnYWRtaW4uanNvbicNCiAgICBpZiAoJG51bGwgLWVxICRhZG1p biAtb3IgJG51bGwgLWVxICRhZG1pbi5mYWNoYXVmc2ljaHQpIHsgcmV0dXJuICRudWxsIH0NCiAg ICBmb3JlYWNoICgkZmEgaW4gQCgkYWRtaW4uZmFjaGF1ZnNpY2h0KSkgew0KICAgICAgICBpZiAo VGVzdC1NYXRjaEtlbm51bmcgKFtzdHJpbmddJGZhLm53S2VubnVuZykpIHsgcmV0dXJuICRmYSB9 DQogICAgfQ0KICAgIHJldHVybiAkbnVsbA0KfQ0KDQojIERpcmVrdGlvbnNsZWl0dW5nICsgRnVl aHJ1bmdzc3RlbGxlIChzZWl0IDIwMjYtMDUtMjMpIOKAlCBnbGVpY2hlcyBTY2hlbWENCiMgd2ll IEZhY2hhdWZzaWNodC4gR2VuZXJpc2NoZXIgSGVscGVyLCB3ZWlsIGRhcyBMb29rdXAtTXVzdGVy IGlkZW50aXNjaA0KIyBpc3QgdW5kIG51ciBkZXIgTGlzdGVuLU5hbWUgd2VjaHNlbHQuDQpmdW5j dGlvbiBHZXQtUm9sbGVuRWludHJhZyhbc3RyaW5nXSRMaXN0ZW5OYW1lKSB7DQogICAgJGFkbWlu ID0gUmVhZC1Kc29uT2JqZWN0ICdhZG1pbi5qc29uJw0KICAgIGlmICgkbnVsbCAtZXEgJGFkbWlu IC1vciAtbm90ICRhZG1pbi5QU09iamVjdC5Qcm9wZXJ0aWVzWyRMaXN0ZW5OYW1lXSkgeyByZXR1 cm4gJG51bGwgfQ0KICAgICRsaXN0ZSA9ICRhZG1pbi4kTGlzdGVuTmFtZQ0KICAgIGlmICgkbnVs bCAtZXEgJGxpc3RlKSB7IHJldHVybiAkbnVsbCB9DQogICAgZm9yZWFjaCAoJGUgaW4gQCgkbGlz dGUpKSB7DQogICAgICAgIGlmIChUZXN0LU1hdGNoS2VubnVuZyAoW3N0cmluZ10kZS5ud0tlbm51 bmcpKSB7IHJldHVybiAkZSB9DQogICAgfQ0KICAgIHJldHVybiAkbnVsbA0KfQ0KDQpmdW5jdGlv biBHZXQtTWVpbmVQZXJzb24gew0KICAgICRwbGFudW5nID0gUmVhZC1Kc29uT2JqZWN0ICdwbGFu dW5nLmpzb24nDQogICAgaWYgKCRudWxsIC1lcSAkcGxhbnVuZyAtb3IgJG51bGwgLWVxICRwbGFu dW5nLnBlcnNvbmVuKSB7IHJldHVybiAkbnVsbCB9DQogICAgZm9yZWFjaCAoJHAgaW4gQCgkcGxh bnVuZy5wZXJzb25lbikpIHsNCiAgICAgICAgaWYgKFRlc3QtTWF0Y2hLZW5udW5nIChbc3RyaW5n XSRwLm53S2VubnVuZykpIHsgcmV0dXJuICRwIH0NCiAgICB9DQogICAgcmV0dXJuICRudWxsDQp9 DQoNCiMgTXRpbWUtYmFzaWVydGVyIENhY2hlIGZ1ZXIgR2V0LVJlY2h0ZS4gRGVyIHplbnRyYWxl IFJlY2h0ZS1SZXNvbHZlciB3aXJkDQojIHBybyAvYXBpL2luZm8tUmVxdWVzdCBtZWhyZmFjaCBh dWZnZXJ1ZmVuIHVuZCBsaWVzdCBkYWJlaSBhZG1pbi5qc29uICsNCiMgcGxhbnVuZy5qc29uLiBT b2xhbmdlIGJlaWRlIERhdGVpZW4gbmljaHQgYWVuZGVydGVuLCBrb21tdCBkYXMgZ2xlaWNoZQ0K IyBFcmdlYm5pcyB6dXJ1ZWNrIOKAlCBkZXIgQ2FjaGUgaW52YWxpZGllcnQgYXV0b21hdGlzY2gg dWViZXIgTGFzdFdyaXRlVGltZVV0Yy4NCiRzY3JpcHQ6UmVjaHRlQ2FjaGUgPSBAeyBXZXJ0ID0g JG51bGw7IEFkbWluTXQgPSAwOyBQbGFudW5nTXQgPSAwIH0NCg0KZnVuY3Rpb24gR2V0LVJlY2h0 ZSB7DQogICAgIyBaZW50cmFsZXIgUm9sbGVuLSB1bmQgUmVjaHRlLVJlc29sdmVyIChQZW5kYW50 IHp1IHNlcnZlci5weSBiZXJlY2huZV9yZWNodGUoKSkuDQogICAgIyBMaWVmZXJ0IEhhc2h0YWJs ZSBtaXQgcm9sbGUsIGlzdFN1cGVyVXNlciwgaXN0RmFjaGF1ZnNpY2h0LCBzZWhlbnsuLi59LA0K ICAgICMgZWRpdGllcmVuey4uLn0gKG51bGwgPSB3aWxkY2FyZCBmdWVyIFN1cGVyVXNlciksIG1l aW5lUGVyc29uSWQuDQoNCiAgICAjIENhY2hlLVZhbGlkaWVydW5nIHVlYmVyIG10aW1lIGRlciBi ZWlkZW4gUXVlbGwtRGF0ZWllbi4NCiAgICAkYU10ID0gMDsgJHBNdCA9IDANCiAgICB0cnkgew0K ICAgICAgICAkYUZpbGUgPSBKb2luLVBhdGggJERhdGFEaXIgJ2FkbWluLmpzb24nDQogICAgICAg IGlmIChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRhRmlsZSkgeyAkYU10ID0gKEdldC1JdGVtIC1M aXRlcmFsUGF0aCAkYUZpbGUpLkxhc3RXcml0ZVRpbWVVdGMuVGlja3MgfQ0KICAgICAgICAkcEZp bGUgPSBKb2luLVBhdGggJERhdGFEaXIgJ3BsYW51bmcuanNvbicNCiAgICAgICAgaWYgKFRlc3Qt UGF0aCAtTGl0ZXJhbFBhdGggJHBGaWxlKSB7ICRwTXQgPSAoR2V0LUl0ZW0gLUxpdGVyYWxQYXRo ICRwRmlsZSkuTGFzdFdyaXRlVGltZVV0Yy5UaWNrcyB9DQogICAgfSBjYXRjaCB7fQ0KICAgIGlm ICgkc2NyaXB0OlJlY2h0ZUNhY2hlLldlcnQgLW5lICRudWxsIC1hbmQNCiAgICAgICAgJHNjcmlw dDpSZWNodGVDYWNoZS5BZG1pbk10IC1lcSAkYU10IC1hbmQNCiAgICAgICAgJHNjcmlwdDpSZWNo dGVDYWNoZS5QbGFudW5nTXQgLWVxICRwTXQpIHsNCiAgICAgICAgcmV0dXJuICRzY3JpcHQ6UmVj aHRlQ2FjaGUuV2VydA0KICAgIH0NCg0KICAgICRpc3RTVSA9IFRlc3QtSXN0U3VwZXJVc2VyDQog ICAgIyBSb2xsZW4tTG9va3VwOiBSZWloZW5mb2xnZSBiZXN0aW1tdCBWb3JyYW5nIGJlaSBLb25m bGlrdGVuLiBmYWNoYXVmc2ljaHQNCiAgICAjIHp1ZXJzdCAod2FyIGhpc3RvcmlzY2ggZXJzdGUg Um9sbGUpLCBkYW5uIGRpZSBuZXVlbiAiRGlyZWt0aW9uc2xlaXR1bmciDQogICAgIyB1bmQgIkZ1 ZWhydW5nc3N0ZWxsZSIgKDIwMjYtMDUtMjMpLiBEZXIgImlzdEZBIi1QZmFkIHdpcmQgZnVlciBh bGxlIGRyZWkNCiAgICAjIHdlaXRlcnZlcndlbmRldCDigJQgUm9sbGUgaW4gZGVyIEFQSSBpc3Qg dW50ZXJzY2hpZWRsaWNoLCBMb2dpayBpbiBkZXINCiAgICAjIFNpY2h0YmFya2VpdHMtL0VkaXQt QXVzd2VydHVuZyBpc3QgaWRlbnRpc2NoLg0KICAgICRmYSA9ICRudWxsDQogICAgJHJvbGxlUXVl bGxlID0gJG51bGwNCiAgICBpZiAoLW5vdCAkaXN0U1UpIHsNCiAgICAgICAgJGZhID0gR2V0LUZh Y2hhdWZzaWNodEVpbnRyYWcNCiAgICAgICAgaWYgKCRudWxsIC1uZSAkZmEpIHsgJHJvbGxlUXVl bGxlID0gJ2ZhY2hhdWZzaWNodCcgfQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICRmYSA9 IEdldC1Sb2xsZW5FaW50cmFnICdkaXJla3Rpb25zbGVpdHVuZycNCiAgICAgICAgICAgIGlmICgk bnVsbCAtbmUgJGZhKSB7ICRyb2xsZVF1ZWxsZSA9ICdkaXJla3Rpb25zbGVpdHVuZycgfQ0KICAg ICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgJGZhID0gR2V0LVJvbGxlbkVpbnRyYWcg J2Z1ZWhydW5nc3N0ZWxsZScNCiAgICAgICAgICAgICAgICBpZiAoJG51bGwgLW5lICRmYSkgeyAk cm9sbGVRdWVsbGUgPSAnZnVlaHJ1bmdzc3RlbGxlJyB9DQogICAgICAgICAgICB9DQogICAgICAg IH0NCiAgICB9DQogICAgJGlzdEZBID0gJG51bGwgLW5lICRmYQ0KDQogICAgJHNlaGVuID0gQHsg YWRtaW5pc3RyYXRpb24gPSAkZmFsc2U7IHN0YXRpc3RpayA9ICRmYWxzZTsgbG9nYnVjaCA9ICRm YWxzZTsgYmFja3VwcyA9ICRmYWxzZSB9DQogICAgaWYgKCRpc3RTVSkgew0KICAgICAgICBmb3Jl YWNoICgkayBpbiBAKCRzZWhlbi5LZXlzKSkgeyAkc2VoZW5bJGtdID0gJHRydWUgfQ0KICAgIH0g ZWxzZWlmICgkaXN0RkEgLWFuZCAkZmEuUFNPYmplY3QuUHJvcGVydGllc1snc2VoZW4nXSkgew0K ICAgICAgICBmb3JlYWNoICgkayBpbiBAKCdhZG1pbmlzdHJhdGlvbicsJ3N0YXRpc3RpaycsJ2xv Z2J1Y2gnLCdiYWNrdXBzJykpIHsNCiAgICAgICAgICAgIGlmICgkZmEuc2VoZW4uUFNPYmplY3Qu UHJvcGVydGllc1ska10pIHsgJHNlaGVuWyRrXSA9IFtib29sXSRmYS5zZWhlbi4kayB9DQogICAg ICAgIH0NCiAgICB9DQoNCiAgICAjIE1laW5lLVBlcnNvbiBlaW5tYWwgbGVzZW4g4oCUIHdpcmQg c293b2hsIGZ1ZXIgZWRpdFJlY2h0ZS1GYWxsYmFjayBhbHMNCiAgICAjIGF1Y2ggZnVlciBtZWlu ZUlkICsgcGVyLVBlcnNvbi1zZWhlbi1PdmVycmlkZXMgZ2VicmF1Y2h0Lg0KICAgICRtcCA9IEdl dC1NZWluZVBlcnNvbg0KDQogICAgJGVkaXRpZXJlbiA9ICRudWxsDQogICAgaWYgKC1ub3QgJGlz dFNVKSB7DQogICAgICAgICRxdWVsbGUgPSAkbnVsbA0KICAgICAgICBpZiAoJGlzdEZBIC1hbmQg JGZhLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2VkaXRpZXJlbiddKSB7ICRxdWVsbGUgPSAkZmEuZWRp dGllcmVuIH0NCiAgICAgICAgZWxzZWlmICgkbXAgLWFuZCAkbXAuUFNPYmplY3QuUHJvcGVydGll c1snZWRpdFJlY2h0ZSddKSB7ICRxdWVsbGUgPSAkbXAuZWRpdFJlY2h0ZSB9DQogICAgICAgICMg U3Ryb25nLXR5cGVkIEFycmF5cyBlcnp3aW5nZW46IFBvd2VyU2hlbGwgNS4xIHVud3JhcHMgc2lu Z2xlLUVsZW1lbnQtDQogICAgICAgICMgUGlwZWxpbmVzIHp1IGVpbmVtIFNrYWxhciAoRm9yRWFj aC1PYmplY3QgeyBbaW50XSRfIH0gbGllZmVydCBiZWkgZWluZXINCiAgICAgICAgIyBMaXN0ZSBt aXQgMSBFaW50cmFnIGVpbmUgWmFobCBzdGF0dCBBcnJheSkuIENvbnZlcnRUby1Kc29uIHd1ZXJk ZSBkYW5uDQogICAgICAgICMgInBlcnNvbmVuSWRzIjogNSBzdGF0dCBbNV0gc2NocmVpYmVuIOKA lCBDbGllbnQtc2lkZSAuaW5kZXhPZigpIHNjaGxhZWd0DQogICAgICAgICMgZmVobCB1bmQgZGll IFBsYW51bmdzLUFuc2ljaHQgYmxlaWJ0IGxlZXIgKENoZXJyeS1QaWNrIDFhZWZlMjYgQnVnICMx KS4NCiAgICAgICAgJGVkaXRpZXJlbiA9IEB7IHBlcnNvbmVuSWRzID0gQCgpOyBkaWVuc3RncnVw cGVuID0gQCgpOyBzdGFuZG9ydGUgPSBAKCkgfQ0KICAgICAgICBpZiAoJHF1ZWxsZSkgew0KICAg ICAgICAgICAgaWYgKCRxdWVsbGUuUFNPYmplY3QuUHJvcGVydGllc1sncGVyc29uZW5JZHMnXSkg IHsgJGVkaXRpZXJlbi5wZXJzb25lbklkcyAgID0gW2ludFtdXSAgIEAoJHF1ZWxsZS5wZXJzb25l bklkcyAgIHwgRm9yRWFjaC1PYmplY3QgeyBbaW50XSRfIH0pIH0NCiAgICAgICAgICAgIGlmICgk cXVlbGxlLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2RpZW5zdGdydXBwZW4nXSkgeyAkZWRpdGllcmVu LmRpZW5zdGdydXBwZW4gPSBbc3RyaW5nW11dQCgkcXVlbGxlLmRpZW5zdGdydXBwZW4gfCBGb3JF YWNoLU9iamVjdCB7IFtzdHJpbmddJF8gfSkgfQ0KICAgICAgICAgICAgaWYgKCRxdWVsbGUuUFNP YmplY3QuUHJvcGVydGllc1snc3RhbmRvcnRlJ10pICAgICB7ICRlZGl0aWVyZW4uc3RhbmRvcnRl ICAgICA9IFtzdHJpbmdbXV1AKCRxdWVsbGUuc3RhbmRvcnRlICAgICB8IEZvckVhY2gtT2JqZWN0 IHsgW3N0cmluZ10kXyB9KSB9DQogICAgICAgIH0NCiAgICAgICAgIyBTdGFuZGFyZHJlY2h0ZSAo Z2VnZW5zZWl0aWdlIFBsYW51bmcgamUgRGllbnN0Z3J1cHBlL1N0YW5kb3J0KSBhZGRpdGl2DQog ICAgICAgICMgaW4gZWRpdGllcmVuIGVpbndlYmVuIOKAlCBncmVpZnQgZGFubiBpbiBkYXJmX3pl bGxlX2VkaXRpZXJlbiB1bmQgaW0gQ2xpZW50Lg0KICAgICAgICB0cnkgew0KICAgICAgICAgICAg JHNyID0gJG51bGwNCiAgICAgICAgICAgICRhZG0yID0gUmVhZC1Kc29uT2JqZWN0ICdhZG1pbi5q c29uJw0KICAgICAgICAgICAgaWYgKCRhZG0yIC1hbmQgJGFkbTIuUFNPYmplY3QuUHJvcGVydGll c1snc3RhbmRhcmRSZWNodGUnXSkgeyAkc3IgPSAkYWRtMi5zdGFuZGFyZFJlY2h0ZSB9DQogICAg ICAgICAgICBpZiAoJHNyIC1hbmQgJG1wKSB7DQogICAgICAgICAgICAgICAgJG1nID0gaWYgKCRt cC5QU09iamVjdC5Qcm9wZXJ0aWVzWydncnVwcGUnXSkgeyBbc3RyaW5nXSRtcC5ncnVwcGUgfSBl bHNlIHsgJycgfQ0KICAgICAgICAgICAgICAgICRtbyA9IGlmICgkbXAuUFNPYmplY3QuUHJvcGVy dGllc1snb2UnXSkgICAgIHsgW3N0cmluZ10kbXAub2UgfSAgICAgZWxzZSB7ICcnIH0NCiAgICAg ICAgICAgICAgICAkZ2cgPSBAKCk7IGlmICgkc3IuUFNPYmplY3QuUHJvcGVydGllc1snZ2VnZW5z ZWl0aWdHcnVwcGVuJ10pICAgeyAkZ2cgPSBAKCRzci5nZWdlbnNlaXRpZ0dydXBwZW4gICB8IEZv ckVhY2gtT2JqZWN0IHsgW3N0cmluZ10kXyB9KSB9DQogICAgICAgICAgICAgICAgJGdzID0gQCgp OyBpZiAoJHNyLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2dlZ2Vuc2VpdGlnU3RhbmRvcnRlJ10pIHsg JGdzID0gQCgkc3IuZ2VnZW5zZWl0aWdTdGFuZG9ydGUgfCBGb3JFYWNoLU9iamVjdCB7IFtzdHJp bmddJF8gfSkgfQ0KICAgICAgICAgICAgICAgIGlmICgkbWcgLWFuZCAoJGdnIC1jb250YWlucyAk bWcpIC1hbmQgLW5vdCAoJGVkaXRpZXJlbi5kaWVuc3RncnVwcGVuIC1jb250YWlucyAkbWcpKSB7 DQogICAgICAgICAgICAgICAgICAgICRlZGl0aWVyZW4uZGllbnN0Z3J1cHBlbiA9IFtzdHJpbmdb XV1AKCRlZGl0aWVyZW4uZGllbnN0Z3J1cHBlbiArICRtZykNCiAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgaWYgKCRtbyAtYW5kICgkZ3MgLWNvbnRhaW5zICRtbykgLWFuZCAtbm90 ICgkZWRpdGllcmVuLnN0YW5kb3J0ZSAtY29udGFpbnMgJG1vKSkgew0KICAgICAgICAgICAgICAg ICAgICAkZWRpdGllcmVuLnN0YW5kb3J0ZSA9IFtzdHJpbmdbXV1AKCRlZGl0aWVyZW4uc3RhbmRv cnRlICsgJG1vKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfSBj YXRjaCB7fQ0KICAgIH0NCg0KICAgICRtZWluZUlkID0gJG51bGwNCiAgICBpZiAoJG1wKSB7ICRt ZWluZUlkID0gJG1wLmlkIH0NCg0KICAgICMgR2VzYW10dmVyYW50d29ydGxpY2hrZWl0OiBGbGFn IGFuIGRlciBGYWNoYXVmc2ljaHQgb2RlciBTdXBlclVzZXItQm9udXMNCiAgICAjIChTVSBkYXJm IHBlciBEZWZpbml0aW9uIGFsbGVzLCBiZWtvbW10IGFsc28gYXVjaCBkZW4gQmVzZXR6dW5nc2tv bnRyb2xsLVRhYikuDQogICAgJGlzdEdlc2FtdCA9ICRmYWxzZQ0KICAgIGlmICgkaXN0U1UpIHsg JGlzdEdlc2FtdCA9ICR0cnVlIH0NCiAgICBlbHNlaWYgKCRpc3RGQSAtYW5kICRmYS5QU09iamVj dC5Qcm9wZXJ0aWVzWydnZXNhbXR2ZXJhbnR3b3J0bGljaCddKSB7DQogICAgICAgICRpc3RHZXNh bXQgPSBbYm9vbF0kZmEuZ2VzYW10dmVyYW50d29ydGxpY2gNCiAgICB9DQoNCiAgICAjIEdyYW51 bGFyZSBTdWItU2ljaHRiYXJrZWl0IChGaW5kaW5nIEMuOSAvIFNwZWMgRi4yKToNCiAgICAjIFBy byBGYWNoYXVmc2ljaHQgb3B0aW9uYWwgZmEuYWRtaW5TaWNodGJhcmtlaXR7PHN1YnRhYj46IGJv b2x9IHVuZA0KICAgICMgZmEuc3RhdGlzdGlrU2ljaHRiYXJrZWl0ezxiZXJlaWNoPjogYm9vbH0u IFdlbm4gbmljaHQgZ2VzZXR6dCAtPiBmYWxsYmFjaw0KICAgICMgYXVmIGRhcyB1ZWJlcmdlb3Jk bmV0ZSBzZWhlbi5hZG1pbmlzdHJhdGlvbiAvIHNlaGVuLnN0YXRpc3RpayAoYWxsZXMgb2Rlcg0K ICAgICMgbmljaHRzKS4gU3VwZXJVc2VyIHNpZWh0IGltbWVyIGFsbGVzICgkbnVsbCA9IFdpbGRj YXJkKS4NCiAgICAkYWRtaW5TdWJ0YWJzID0gJG51bGwNCiAgICAkc3RhdEJlcmVpY2hlID0gJG51 bGwNCiAgICBpZiAoLW5vdCAkaXN0U1UpIHsNCiAgICAgICAgaWYgKCRpc3RGQSAtYW5kICRzZWhl bi5hZG1pbmlzdHJhdGlvbiAtYW5kICRmYS5QU09iamVjdC5Qcm9wZXJ0aWVzWydhZG1pblNpY2h0 YmFya2VpdCddIC1hbmQgJGZhLmFkbWluU2ljaHRiYXJrZWl0KSB7DQogICAgICAgICAgICAkYWRt aW5TdWJ0YWJzID0gQHt9DQogICAgICAgICAgICBmb3JlYWNoICgkcHJvcCBpbiAkZmEuYWRtaW5T aWNodGJhcmtlaXQuUFNPYmplY3QuUHJvcGVydGllcykgeyAkYWRtaW5TdWJ0YWJzWyRwcm9wLk5h bWVdID0gW2Jvb2xdJHByb3AuVmFsdWUgfQ0KICAgICAgICB9IGVsc2VpZiAoLW5vdCAoJGlzdEZB IC1hbmQgJHNlaGVuLmFkbWluaXN0cmF0aW9uKSkgew0KICAgICAgICAgICAgJGFkbWluU3VidGFi cyA9IEB7fSAgIyBsZWVyID0gbmljaHRzIGVybGF1YnQNCiAgICAgICAgfQ0KICAgICAgICBpZiAo JGlzdEZBIC1hbmQgJHNlaGVuLnN0YXRpc3RpayAtYW5kICRmYS5QU09iamVjdC5Qcm9wZXJ0aWVz WydzdGF0aXN0aWtTaWNodGJhcmtlaXQnXSAtYW5kICRmYS5zdGF0aXN0aWtTaWNodGJhcmtlaXQp IHsNCiAgICAgICAgICAgICRzdGF0QmVyZWljaGUgPSBAe30NCiAgICAgICAgICAgIGZvcmVhY2gg KCRwcm9wIGluICRmYS5zdGF0aXN0aWtTaWNodGJhcmtlaXQuUFNPYmplY3QuUHJvcGVydGllcykg eyAkc3RhdEJlcmVpY2hlWyRwcm9wLk5hbWVdID0gW2Jvb2xdJHByb3AuVmFsdWUgfQ0KICAgICAg ICB9IGVsc2VpZiAoLW5vdCAoJGlzdEZBIC1hbmQgJHNlaGVuLnN0YXRpc3RpaykpIHsNCiAgICAg ICAgICAgICRzdGF0QmVyZWljaGUgPSBAe30NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgICMgUGVy LVBlcnNvbi1TaWNodGJhcmtlaXRzLU92ZXJyaWRlIChTY2hlbWEgYmxlaWJ0IGFrdGl2IHVuYWJo YWVuZ2lnIHZvbQ0KICAgICMgZmVhdHVyZXMucGVyUGVyc29uU2ljaHRiYXJrZWl0LVRvZ2dsZSDi gJQgZGVyIHNjaGFsdGV0IG51ciBkaWUgVUkgaW0NCiAgICAjIFBlcnNvbi1Nb2RhbCBmcmVpLiBX ZW5uIGRpZSBQZXJzb24gZWluIGBzZWhlbntsb2didWNoLHN0YXRpc3Rpa31gIFByb3BlcnR5DQog ICAgIyBtaXQgYm9vbC1XZXJ0IGhhdCAobmljaHQgJG51bGwpLCB1ZWJlcnNjaHJlaWJ0IGRhcyBk ZW4gUm9sbGVuLURlZmF1bHQuDQogICAgaWYgKCRtcCAtYW5kICRtcC5QU09iamVjdC5Qcm9wZXJ0 aWVzWydzZWhlbiddIC1hbmQgJG1wLnNlaGVuKSB7DQogICAgICAgIGZvcmVhY2ggKCRrIGluIEAo J2xvZ2J1Y2gnLCdzdGF0aXN0aWsnKSkgew0KICAgICAgICAgICAgaWYgKCRtcC5zZWhlbi5QU09i amVjdC5Qcm9wZXJ0aWVzWyRrXSkgew0KICAgICAgICAgICAgICAgICR2YWwgPSAkbXAuc2VoZW4u JGsNCiAgICAgICAgICAgICAgICBpZiAoJG51bGwgLW5lICR2YWwpIHsgJHNlaGVuWyRrXSA9IFti b29sXSR2YWwgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgJHJvbGxl ID0gaWYgKCRpc3RTVSkgeyAnc3VwZXJ1c2VyJyB9IGVsc2VpZiAoJGlzdEZBKSB7ICRyb2xsZVF1 ZWxsZSB9IGVsc2UgeyAncmVndWxhZXInIH0NCiAgICAkZXJnZWJuaXMgPSBAew0KICAgICAgICBy b2xsZSAgICAgICAgICAgICAgICAgID0gJHJvbGxlDQogICAgICAgIGlzdFN1cGVyVXNlciAgICAg ICAgICAgPSAkaXN0U1UNCiAgICAgICAgaXN0RmFjaGF1ZnNpY2h0ICAgICAgICA9ICRpc3RGQQ0K ICAgICAgICBpc3RHZXNhbXR2ZXJhbnR3b3J0bGljaCA9ICRpc3RHZXNhbXQNCiAgICAgICAgc2Vo ZW4gICAgICAgICAgICAgICAgICA9ICRzZWhlbg0KICAgICAgICBhZG1pblN1YnRhYnMgICAgICAg ICAgID0gJGFkbWluU3VidGFicw0KICAgICAgICBzdGF0aXN0aWtCZXJlaWNoZSAgICAgID0gJHN0 YXRCZXJlaWNoZQ0KICAgICAgICBlZGl0aWVyZW4gICAgICAgICAgICAgID0gJGVkaXRpZXJlbg0K ICAgICAgICBtZWluZVBlcnNvbklkICAgICAgICAgID0gJG1laW5lSWQNCiAgICB9DQogICAgJHNj cmlwdDpSZWNodGVDYWNoZS5XZXJ0ICAgICAgPSAkZXJnZWJuaXMNCiAgICAkc2NyaXB0OlJlY2h0 ZUNhY2hlLkFkbWluTXQgICA9ICRhTXQNCiAgICAkc2NyaXB0OlJlY2h0ZUNhY2hlLlBsYW51bmdN dCA9ICRwTXQNCiAgICByZXR1cm4gJGVyZ2VibmlzDQp9DQoNCmZ1bmN0aW9uIFRlc3QtRGFyZkJl cmVpY2goW3N0cmluZ10kQmVyZWljaCkgew0KICAgICRyID0gR2V0LVJlY2h0ZQ0KICAgIGlmICgk ci5pc3RTdXBlclVzZXIpIHsgcmV0dXJuICR0cnVlIH0NCiAgICBpZiAoJHIuaXN0RmFjaGF1ZnNp Y2h0IC1hbmQgJHIuc2VoZW5bJEJlcmVpY2hdKSB7IHJldHVybiAkdHJ1ZSB9DQogICAgcmV0dXJu ICRmYWxzZQ0KfQ0KDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgSGlud2Vpcy1TeXN0ZW0gKElu LUFwcC1CYW5uZXIgKyBNb2RhbCBmdWVyIFN1cGVyVXNlciArIEdlc2FtdHZlcmFudHdvcnRsaWNo ZSkNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBTdGF0dCBtYWlsdG8tVHJpZ2dlcm4gZnVlciBS b3V0aW5lLUVyZWlnbmlzc2UgKElkZW50aXRhZXRzLUFlbmRlcnVuZywgQmFja3VwLQ0KIyBSZXN0 b3JlLCBLcmFua21lbGR1bmcsIC4uLikgZXJ6ZXVndCBkZXIgU2VydmVyIGhpZXIgZWluZW4gSGlu d2Vpcy1FaW50cmFnIGluDQojIGRhdGEvaGlud2Vpc2UuanNvbi4gU3VwZXJVc2VyICsgR2VzYW10 dmVyYW50d29ydGxpY2hlIHNlaGVuIGVpbmVuIEJhbm5lciBtaXQNCiMgQW56YWhsICsgQmFkZ2Ug YW0gZWlnZW5lbiBOYW1lbiB1bmQga29lbm5lbiBkaWUgSGlud2Vpc2UgaW0gTW9kYWwgYWJuaWNr ZW4uDQojDQojIEVtcGZhZW5nZXItU25hcHNob3Qgd2lyZCBiZWltIEVyemV1Z2VuIGZlc3RnZXNj aHJpZWJlbjogV2VyIGJlaW0gVHJpZ2dlciBub2NoDQojIG5pY2h0IGluIGRlciBTVS0vR2VzYW10 dmVyYW50d29ydGxpY2gtTGlzdGUgc3RhbmQsIGJla29tbXQgZGVuIEhpbndlaXMgbmljaHQNCiMg bmFjaHRyYWVnbGljaC4gRGFzIGlzdCBiZXd1c3N0IHNvIChrZWluIHdhaHJlcyAiUHViL1N1YiIs IHNvbmRlcm4gQXVkaXQtTG9nKS4NCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQojIExpZWZlcnQg ZWluIEFycmF5IGVpbmRldXRpZ2VyIG53S2VubnVuZ2VuIGFsbGVyIGFrdHVlbGxlbiBTVSArIEdl c2FtdC0NCiMgdmVyYW50d29ydGxpY2hlbiBhdXMgYWRtaW4uanNvbi4gRm9ybWF0IHdpZSBpbiBh ZG1pbi5qc29uIGhpbnRlcmxlZ3QNCiMgKHR5cC4gIk5XMDUzNjA5IiBvZGVyICJET01BSU5cTlcw NTM2MDkiKS4gTWF0Y2ggbGFldWZ0IGNhc2UtaW5zZW5zaXRpdi4NCmZ1bmN0aW9uIEdldC1IaW53 ZWlzRW1wZmFlbmdlciB7DQogICAgJGFkbWluID0gUmVhZC1Kc29uT2JqZWN0ICdhZG1pbi5qc29u Jw0KICAgIGlmICgkbnVsbCAtZXEgJGFkbWluKSB7IHJldHVybiBAKCkgfQ0KICAgICRzZXQgPSBA e30NCiAgICBmb3JlYWNoICgkc3UgaW4gQCgkYWRtaW4uc3VwZXJVc2VyKSkgew0KICAgICAgICAk ayA9IFtzdHJpbmddJHN1Lm53S2VubnVuZw0KICAgICAgICBpZiAoJGspIHsgJHNldFskay5Ub0xv d2VyKCldID0gJGsgfQ0KICAgIH0NCiAgICBmb3JlYWNoICgkZmEgaW4gQCgkYWRtaW4uZmFjaGF1 ZnNpY2h0KSkgew0KICAgICAgICBpZiAoJGZhLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2dlc2FtdHZl cmFudHdvcnRsaWNoJ10gLWFuZCBbYm9vbF0kZmEuZ2VzYW10dmVyYW50d29ydGxpY2gpIHsNCiAg ICAgICAgICAgICRrID0gW3N0cmluZ10kZmEubndLZW5udW5nDQogICAgICAgICAgICBpZiAoJGsp IHsgJHNldFskay5Ub0xvd2VyKCldID0gJGsgfQ0KICAgICAgICB9DQogICAgfQ0KICAgICMgTm90 ZmFsbC1TVSBzaW5kIGltbWVyIEVtcGZhZW5nZXIsIGF1Y2ggd2VubiBhZG1pbi5qc29uIHNpZSBu aWNodCBsaXN0ZXQNCiAgICBmb3JlYWNoICgkayBpbiAkc2NyaXB0Ok5vdGZhbGxTdXBlclVzZXIp IHsNCiAgICAgICAgaWYgKC1ub3QgJHNldC5Db250YWluc0tleSgkay5Ub0xvd2VyKCkpKSB7ICRz ZXRbJGsuVG9Mb3dlcigpXSA9ICRrIH0NCiAgICB9DQogICAgcmV0dXJuIEAoJHNldC5WYWx1ZXMp DQp9DQoNCiMgU2NocmVpYnQgZWluZW4gbmV1ZW4gSGlud2VpcyBpbiBkYXRhL2hpbndlaXNlLmpz b24uIEVtcGZhZW5nZXItU2xvdHMgd2VyZGVuDQojIG1pdCAkbnVsbCB2b3JiZWxlZ3QgKD0gdW5n ZWxlc2VuKS4gTG9jay1nZXNjaHVldHp0OyBiZWkgRmVobGVyIG51ciBsb2dnZW4sDQojIG5pY2h0 IHByb3BhZ2llcmVuLCBkYW1pdCBkZXIgYXVzbMO2c2VuZGUgUFVUIG5pY2h0IGtpcHB0Lg0KZnVu Y3Rpb24gTmV3LUhpbndlaXMoW3N0cmluZ10kVHlwLCAkS29udGV4dCwgW3N0cmluZ10kQXVzbG9l c2VyKSB7DQogICAgdHJ5IHsNCiAgICAgICAgJGVtcGZhZW5nZXIgPSBHZXQtSGlud2Vpc0VtcGZh ZW5nZXINCiAgICAgICAgaWYgKC1ub3QgJGVtcGZhZW5nZXIgLW9yICRlbXBmYWVuZ2VyLkNvdW50 IC1lcSAwKSB7IHJldHVybiAkbnVsbCB9DQogICAgICAgICRzY3JpcHQ6ZXJ6ZXVndGVJZCA9ICRu dWxsDQogICAgICAgIEludm9rZS1XaXRoRmlsZUxvY2sgJ2hpbndlaXNlLmpzb24nIHsNCiAgICAg ICAgICAgICRoID0gUmVhZC1Kc29uT2JqZWN0ICdoaW53ZWlzZS5qc29uJw0KICAgICAgICAgICAg aWYgKCRudWxsIC1lcSAkaCAtb3IgLW5vdCAkaC5QU09iamVjdC5Qcm9wZXJ0aWVzWydoaW53ZWlz ZSddIC1vciAtbm90ICRoLlBTT2JqZWN0LlByb3BlcnRpZXNbJ25hZWNoc3RlSWQnXSkgew0KICAg ICAgICAgICAgICAgICRoID0gW1BTQ3VzdG9tT2JqZWN0XUB7IGhpbndlaXNlID0gQCgpOyBuYWVj aHN0ZUlkID0gMSB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkaWQgPSBbaW50XSRoLm5h ZWNoc3RlSWQNCiAgICAgICAgICAgICRrbiA9IFtvcmRlcmVkXUB7fQ0KICAgICAgICAgICAgZm9y ZWFjaCAoJGUgaW4gJGVtcGZhZW5nZXIpIHsgJGtuWyRlXSA9ICRudWxsIH0NCiAgICAgICAgICAg ICRlaW50cmFnID0gW29yZGVyZWRdQHsNCiAgICAgICAgICAgICAgICBpZCAgICAgICAgICAgID0g JGlkDQogICAgICAgICAgICAgICAgdHlwICAgICAgICAgICA9ICRUeXANCiAgICAgICAgICAgICAg ICBlcnN0ZWxsdEFtICAgID0gKEdldC1EYXRlKS5Ub1VuaXZlcnNhbFRpbWUoKS5Ub1N0cmluZygn eXl5eS1NTS1kZFRISDptbTpzc1onKQ0KICAgICAgICAgICAgICAgIGF1c2xvZXNlciAgICAgPSAk QXVzbG9lc2VyDQogICAgICAgICAgICAgICAga29udGV4dCAgICAgICA9ICRLb250ZXh0DQogICAg ICAgICAgICAgICAga2VubnRuaXNuYWhtZW4gPSAka24NCiAgICAgICAgICAgIH0NCiAgICAgICAg ICAgICMgUFMtNS4xLVVud3JhcC1TY2h1dHo6IGVpbnplbG5lcyBFbGVtZW50IG11c3MgYWxzIEFy cmF5IGJsZWliZW4uDQogICAgICAgICAgICAkaC5oaW53ZWlzZSAgID0gW29iamVjdFtdXUAoQCgk aC5oaW53ZWlzZSkgKyBAKFtQU0N1c3RvbU9iamVjdF0kZWludHJhZykpDQogICAgICAgICAgICAk aC5uYWVjaHN0ZUlkID0gJGlkICsgMQ0KICAgICAgICAgICAgV3JpdGUtSnNvbk9iamVjdCAnaGlu d2Vpc2UuanNvbicgJGggfCBPdXQtTnVsbA0KICAgICAgICAgICAgJHNjcmlwdDplcnpldWd0ZUlk ID0gJGlkDQogICAgICAgIH0gfCBPdXQtTnVsbA0KICAgICAgICBXcml0ZS1Mb2dFaW50cmFnICdo aW53ZWlzLmVyemV1Z3QnIEB7IHR5cCA9ICRUeXA7IGVtcGZhZW5nZXIgPSAkZW1wZmFlbmdlci5D b3VudCB9DQogICAgICAgIHJldHVybiAkc2NyaXB0OmVyemV1Z3RlSWQNCiAgICB9IGNhdGNoIHsN CiAgICAgICAgTG9nLUFwaSAoIkhJTldFSVMtRVJaRVVHRU4gRkVITEVSICh7MH0pOiB7MX0iIC1m ICRUeXAsICRfLkV4Y2VwdGlvbi5NZXNzYWdlKQ0KICAgICAgICByZXR1cm4gJG51bGwNCiAgICB9 DQp9DQoNCiMgRW50ZmVybnQgb2ZmZW5lIEtyYW5rbWVsZHVuZ3MtSGlud2Vpc2UgZnVlciBlaW5l IGtvbmtyZXRlIFBlcnNvbiArIERhdHVtLg0KIyBBdWZnZXJ1ZmVuIHZvbSBaZWxsLUVkaXQtSGFu ZGxlciwgd2VubiBlaW4gImtyIi8iS3VyIi1FaW50cmFnIHdpZWRlcg0KIyB6dXJ1ZWNrZ2Vub21t ZW4gd2lyZCDigJQgc29uc3QgYmxlaWJ0IGRlciBIaW53ZWlzIDMwIFRhZ2Ugb2ZmZW4sIG9id29o bA0KIyBkYXMgRXJlaWduaXMgZXJsZWRpZ3QgaXN0IChQaGFzZSBELjMsIDIwMjYtMDUtMjEpLg0K ZnVuY3Rpb24gUmVtb3ZlLU9mZmVuZUtyYW5rbWVsZHVuZ3NIaW53ZWlzZShbaW50XSRQZXJzb25J ZCwgW3N0cmluZ10kRGF0dW0pIHsNCiAgICB0cnkgew0KICAgICAgICBJbnZva2UtV2l0aEZpbGVM b2NrICdoaW53ZWlzZS5qc29uJyB7DQogICAgICAgICAgICAkaCA9IFJlYWQtSnNvbk9iamVjdCAn aGlud2Vpc2UuanNvbicNCiAgICAgICAgICAgIGlmICgkbnVsbCAtZXEgJGggLW9yIC1ub3QgJGgu UFNPYmplY3QuUHJvcGVydGllc1snaGlud2Vpc2UnXSkgeyByZXR1cm4gfQ0KICAgICAgICAgICAg JGJlaGFsdGVuID0gQCgpDQogICAgICAgICAgICAkZW50ZmVybnQgPSAwDQogICAgICAgICAgICBm b3JlYWNoICgkZSBpbiBAKCRoLmhpbndlaXNlKSkgew0KICAgICAgICAgICAgICAgIGlmICgkZS50 eXAgLWVxICdrcmFua21lbGR1bmcnIC1hbmQgJGUua29udGV4dCAtYW5kIGANCiAgICAgICAgICAg ICAgICAgICAgW2ludF0kZS5rb250ZXh0LnBlcnNvbl9pZCAtZXEgJFBlcnNvbklkIC1hbmQgYA0K ICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXSRlLmtvbnRleHQuZGF0dW0gLWVxICREYXR1bSkg ew0KICAgICAgICAgICAgICAgICAgICAkZW50ZmVybnQrKw0KICAgICAgICAgICAgICAgICAgICBj b250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkYmVoYWx0ZW4gKz0g JGUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkZW50ZmVybnQgLWd0IDApIHsNCiAg ICAgICAgICAgICAgICAkaC5oaW53ZWlzZSA9IFtvYmplY3RbXV0kYmVoYWx0ZW4NCiAgICAgICAg ICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdoaW53ZWlzZS5qc29uJyAkaCB8IE91dC1OdWxsDQog ICAgICAgICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAnaGlud2Vpcy5rcmFua21lbGR1bmcuenVy dWVja2dlbm9tbWVuJyBAeyBwZXJzb25JZCA9ICRQZXJzb25JZDsgZGF0dW0gPSAkRGF0dW07IGVu dGZlcm50ID0gJGVudGZlcm50IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfSB8IE91dC1OdWxs DQogICAgfSBjYXRjaCB7DQogICAgICAgIExvZy1BcGkgKCJISU5XRUlTLUtSQU5LTUVMRFVORy1D TEVBTlVQIEZFSExFUjogezB9IiAtZiAkXy5FeGNlcHRpb24uTWVzc2FnZSkNCiAgICB9DQp9DQoN CiMgTG9lc2NodCBhYmdlbGF1ZmVuZSBIaW53ZWlzZSAoYWxsZSBTbG90cyAhPSBudWxsIFVORCA+ IDMwIFRhZ2UpLiBXaXJkIGxhenkNCiMgYmVpbSBHRVQgL2FwaS9oaW53ZWlzZSBhdWZnZXJ1ZmVu LCBtYXguIDF4IHBybyBNaW51dGUgKFNjcmlwdC1TY29wZS1DYWNoZSkuDQokc2NyaXB0Okhpbndl aXNQcnVuZVp1bGV0enQgPSBbRGF0ZVRpbWVdOjpNaW5WYWx1ZQ0KZnVuY3Rpb24gSW52b2tlLUhp bndlaXNQcnVuaW5nIHsNCiAgICAkamV0enQgPSBHZXQtRGF0ZQ0KICAgIGlmICgoJGpldHp0IC0g JHNjcmlwdDpIaW53ZWlzUHJ1bmVadWxldHp0KS5Ub3RhbFNlY29uZHMgLWx0IDYwKSB7IHJldHVy biB9DQogICAgJHNjcmlwdDpIaW53ZWlzUHJ1bmVadWxldHp0ID0gJGpldHp0DQogICAgdHJ5IHsN CiAgICAgICAgSW52b2tlLVdpdGhGaWxlTG9jayAnaGlud2Vpc2UuanNvbicgew0KICAgICAgICAg ICAgJGggPSBSZWFkLUpzb25PYmplY3QgJ2hpbndlaXNlLmpzb24nDQogICAgICAgICAgICBpZiAo JG51bGwgLWVxICRoIC1vciAtbm90ICRoLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2hpbndlaXNlJ10p IHsgcmV0dXJuIH0NCiAgICAgICAgICAgICRncmVuemUgPSAkamV0enQuQWRkRGF5cygtMzApLlRv VW5pdmVyc2FsVGltZSgpDQogICAgICAgICAgICAkYmVoYWx0ZW4gPSBAKCkNCiAgICAgICAgICAg IGZvcmVhY2ggKCRlaW50cmFnIGluIEAoJGguaGlud2Vpc2UpKSB7DQogICAgICAgICAgICAgICAg JGVyc3RlbGx0ID0gW0RhdGVUaW1lXTo6TWluVmFsdWUNCiAgICAgICAgICAgICAgICB0cnkgeyAk ZXJzdGVsbHQgPSBbRGF0ZVRpbWVdOjpQYXJzZShbc3RyaW5nXSRlaW50cmFnLmVyc3RlbGx0QW0p LlRvVW5pdmVyc2FsVGltZSgpIH0gY2F0Y2gge30NCiAgICAgICAgICAgICAgICAkYWxsZUdlbGVz ZW4gPSAkdHJ1ZQ0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwIGluICRlaW50cmFnLmtlbm50 bmlzbmFobWVuLlBTT2JqZWN0LlByb3BlcnRpZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYg KCRudWxsIC1lcSAkcC5WYWx1ZSkgeyAkYWxsZUdlbGVzZW4gPSAkZmFsc2U7IGJyZWFrIH0NCiAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgIyBCZWhhbHRlbiwgd2VubiBqdWVuZ2Vy IGFscyAzMCBUYWdlIE9ERVIgbm9jaCB1bmdlbGVzZW4NCiAgICAgICAgICAgICAgICBpZiAoJGVy c3RlbGx0IC1ndCAkZ3JlbnplIC1vciAtbm90ICRhbGxlR2VsZXNlbikgeyAkYmVoYWx0ZW4gKz0g JGVpbnRyYWcgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRiZWhhbHRlbi5Db3Vu dCAtbmUgQCgkaC5oaW53ZWlzZSkuQ291bnQpIHsNCiAgICAgICAgICAgICAgICAkaC5oaW53ZWlz ZSA9IFtvYmplY3RbXV0kYmVoYWx0ZW4NCiAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0 ICdoaW53ZWlzZS5qc29uJyAkaCB8IE91dC1OdWxsDQogICAgICAgICAgICB9DQogICAgICAgIH0g fCBPdXQtTnVsbA0KICAgIH0gY2F0Y2ggew0KICAgICAgICBMb2ctQXBpICgiSElOV0VJUy1QUlVO SU5HIEZFSExFUjogezB9IiAtZiAkXy5FeGNlcHRpb24uTWVzc2FnZSkNCiAgICB9DQp9DQoNCiMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNSVRURUlMVU5HRU4g4oCUIEZpbHRlciBmdWVyIGRlbiBh a3R1ZWxsZW4gVXNlci4gU3BpZWdlbCB2b24NCiMgX21pdHRlaWx1bmdlbl9mdWVyX2FrdHVlbGxl bl91c2VyKCkgaW0gUHl0aG9uLVNlcnZlciAoU3ByaW50IEQtM2EvRC0zYikuDQojIEJlYWNodGV0 IGVtcGZhZW5nZXIge2FsbGUsIHBlcnNvbmVuLCBncnVwcGVuLCByb2xsZW59LCBiaXNEYXR1bS1T dGljaHRhZw0KIyB1bmQgVHJpZ2dlci1SZWdlbCAoZWlubWFsIHZzLiBqZWRlc21hbC9iaXNEYXR1 bSBtaXQgIjF4IHBybyBLYWxlbmRlcnRhZyIpLg0KZnVuY3Rpb24gR2V0LU1pdHRlaWx1bmdlbkZ1 ZXJBa3R1ZWxsZW5Vc2VyIHsNCiAgICAkbSA9IFJlYWQtSnNvbk9iamVjdCAnbWl0dGVpbHVuZ2Vu Lmpzb24nDQogICAgaWYgKCRudWxsIC1lcSAkbSAtb3IgLW5vdCAkbS5QU09iamVjdC5Qcm9wZXJ0 aWVzWydtaXR0ZWlsdW5nZW4nXSkgeyByZXR1cm4gQCgpIH0NCiAgICAkZWludHJhZWdlID0gQCgk bS5taXR0ZWlsdW5nZW4pDQogICAgaWYgKCRlaW50cmFlZ2UuQ291bnQgLWVxIDApIHsgcmV0dXJu IEAoKSB9DQogICAgJHIgPSBHZXQtUmVjaHRlDQogICAgJHBpZCA9ICRyLm1laW5lUGVyc29uSWQN CiAgICAkcGVyc29uID0gJG51bGwNCiAgICBpZiAoJG51bGwgLW5lICRwaWQpIHsNCiAgICAgICAg JHBsYW51bmcgPSBSZWFkLUpzb25PYmplY3QgJ3BsYW51bmcuanNvbicNCiAgICAgICAgaWYgKCRu dWxsIC1uZSAkcGxhbnVuZyAtYW5kICRwbGFudW5nLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3BlcnNv bmVuJ10pIHsNCiAgICAgICAgICAgIGZvcmVhY2ggKCRwIGluIEAoJHBsYW51bmcucGVyc29uZW4p KSB7DQogICAgICAgICAgICAgICAgaWYgKFtzdHJpbmddJHAuaWQgLWVxIFtzdHJpbmddJHBpZCkg eyAkcGVyc29uID0gJHA7IGJyZWFrIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0N CiAgICAkbWVpbmVHcnVwcGUgICA9IGlmICgkcGVyc29uIC1hbmQgJHBlcnNvbi5QU09iamVjdC5Q cm9wZXJ0aWVzWydncnVwcGUnXSkgICB7IFtzdHJpbmddJHBlcnNvbi5ncnVwcGUgfSAgIGVsc2Ug eyAkbnVsbCB9DQogICAgJG1laW5lRnVua3Rpb24gPSBpZiAoJHBlcnNvbiAtYW5kICRwZXJzb24u UFNPYmplY3QuUHJvcGVydGllc1snZnVua3Rpb24nXSkgeyBbc3RyaW5nXSRwZXJzb24uZnVua3Rp b24gfSBlbHNlIHsgJG51bGwgfQ0KICAgICRpc3RTVSA9IFtib29sXSRyLmlzdFN1cGVyVXNlcg0K ICAgICRpc3RHViA9IFtib29sXSRyLmlzdEdlc2FtdHZlcmFudHdvcnRsaWNoDQogICAgJGhldXRl ID0gKEdldC1EYXRlKS5Ub1N0cmluZygneXl5eS1NTS1kZCcpDQogICAgJGdlbGVzZW5Vc2VyID0g W3BzY3VzdG9tb2JqZWN0XUB7fQ0KICAgIGlmICgkbnVsbCAtbmUgJHBpZCAtYW5kICRtLlBTT2Jq ZWN0LlByb3BlcnRpZXNbJ2dlbGVzZW4nXSkgew0KICAgICAgICAkcGlkU3RyID0gW3N0cmluZ10k cGlkDQogICAgICAgIGlmICgkbS5nZWxlc2VuLlBTT2JqZWN0LlByb3BlcnRpZXNbJHBpZFN0cl0p IHsNCiAgICAgICAgICAgICRnZWxlc2VuVXNlciA9ICRtLmdlbGVzZW4uJHBpZFN0cg0KICAgICAg ICB9DQogICAgfQ0KICAgICRyZWxldmFudCA9IEAoKQ0KICAgIGZvcmVhY2ggKCRlaW50cmFnIGlu ICRlaW50cmFlZ2UpIHsNCiAgICAgICAgaWYgKC1ub3QgJGVpbnRyYWcuUFNPYmplY3QuUHJvcGVy dGllc1snZW1wZmFlbmdlciddKSB7IGNvbnRpbnVlIH0NCiAgICAgICAgJGVtcCA9ICRlaW50cmFn LmVtcGZhZW5nZXINCiAgICAgICAgJGlzdFppZWxncnVwcGUgPSAkZmFsc2UNCiAgICAgICAgaWYg KCRlbXAuUFNPYmplY3QuUHJvcGVydGllc1snYWxsZSddIC1hbmQgJGVtcC5hbGxlKSB7ICRpc3Ra aWVsZ3J1cHBlID0gJHRydWUgfQ0KICAgICAgICBpZiAoJG51bGwgLW5lICRwaWQgLWFuZCAkZW1w LlBTT2JqZWN0LlByb3BlcnRpZXNbJ3BlcnNvbmVuJ10pIHsNCiAgICAgICAgICAgIGZvcmVhY2gg KCRwIGluIEAoJGVtcC5wZXJzb25lbikpIHsNCiAgICAgICAgICAgICAgICBpZiAoW3N0cmluZ10k cCAtZXEgW3N0cmluZ10kcGlkKSB7ICRpc3RaaWVsZ3J1cHBlID0gJHRydWU7IGJyZWFrIH0NCiAg ICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBpZiAoJG1laW5lR3J1cHBlIC1hbmQgJGVt cC5QU09iamVjdC5Qcm9wZXJ0aWVzWydncnVwcGVuJ10pIHsNCiAgICAgICAgICAgIGlmIChAKCRl bXAuZ3J1cHBlbikgLWNvbnRhaW5zICRtZWluZUdydXBwZSkgeyAkaXN0WmllbGdydXBwZSA9ICR0 cnVlIH0NCiAgICAgICAgfQ0KICAgICAgICAkcm9sbGVuID0gaWYgKCRlbXAuUFNPYmplY3QuUHJv cGVydGllc1sncm9sbGVuJ10pIHsgQCgkZW1wLnJvbGxlbikgfSBlbHNlIHsgQCgpIH0NCiAgICAg ICAgaWYgKCRtZWluZUZ1bmt0aW9uIC1hbmQgKCRyb2xsZW4gLWNvbnRhaW5zICRtZWluZUZ1bmt0 aW9uKSkgeyAkaXN0WmllbGdydXBwZSA9ICR0cnVlIH0NCiAgICAgICAgaWYgKCRpc3RTVSAtYW5k ICgkcm9sbGVuIC1jb250YWlucyAnU1UnKSkgICAgICAgICAgICAgICAgICAgeyAkaXN0WmllbGdy dXBwZSA9ICR0cnVlIH0NCiAgICAgICAgaWYgKCRpc3RHViAtYW5kICgkcm9sbGVuIC1jb250YWlu cyAnR2VzYW10dmVyYW50d29ydGxpY2gnKSkgeyAkaXN0WmllbGdydXBwZSA9ICR0cnVlIH0NCiAg ICAgICAgaWYgKC1ub3QgJGlzdFppZWxncnVwcGUpIHsgY29udGludWUgfQ0KICAgICAgICAjIGJp c0RhdHVtLVN0aWNodGFnDQogICAgICAgICRiaXMgPSBpZiAoJGVpbnRyYWcuUFNPYmplY3QuUHJv cGVydGllc1snYmlzRGF0dW0nXSkgeyBbc3RyaW5nXSRlaW50cmFnLmJpc0RhdHVtIH0gZWxzZSB7 ICRudWxsIH0NCiAgICAgICAgaWYgKCRiaXMgLWFuZCAoJGhldXRlIC1ndCAkYmlzKSkgeyBjb250 aW51ZSB9DQogICAgICAgICMgVHJpZ2dlci1SZWdlbA0KICAgICAgICAkdHJpZ2dlciA9IGlmICgk ZWludHJhZy5QU09iamVjdC5Qcm9wZXJ0aWVzWyd0cmlnZ2VyJ10gLWFuZCAkZWludHJhZy50cmln Z2VyKSB7IFtzdHJpbmddJGVpbnRyYWcudHJpZ2dlciB9IGVsc2UgeyAnZWlubWFsJyB9DQogICAg ICAgICRtaWQgPSBbc3RyaW5nXSRlaW50cmFnLmlkDQogICAgICAgICR6dWxldHp0R2VzZWhlbiA9 IGlmICgkZ2VsZXNlblVzZXIuUFNPYmplY3QuUHJvcGVydGllc1skbWlkXSkgeyBbc3RyaW5nXSRn ZWxlc2VuVXNlci4kbWlkIH0gZWxzZSB7ICRudWxsIH0NCiAgICAgICAgaWYgKCR0cmlnZ2VyIC1l cSAnZWlubWFsJykgew0KICAgICAgICAgICAgaWYgKCR6dWxldHp0R2VzZWhlbikgeyBjb250aW51 ZSB9DQogICAgICAgIH0gZWxzZWlmICgkdHJpZ2dlciAtZXEgJ2plZGVzbWFsJyAtb3IgJHRyaWdn ZXIgLWVxICdiaXNEYXR1bScpIHsNCiAgICAgICAgICAgIGlmICgkenVsZXR6dEdlc2VoZW4gLWVx ICRoZXV0ZSkgeyBjb250aW51ZSB9DQogICAgICAgIH0NCiAgICAgICAgJHJlbGV2YW50ICs9ICRl aW50cmFnDQogICAgfQ0KICAgIHJldHVybiBbb2JqZWN0W11dJHJlbGV2YW50DQp9DQoNCiMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KIyBEaWZmLUhlbHBlciBmdWVyIFJvbGxlbi1FbmRwb2ludHMgKFNV ICsgRmFjaGF1ZnNpY2h0KS4gTGllZmVydCBNYWlsdG8tDQojIERpZmZzIChyZWluL3JhdXMgYXVz IFZlcmFudHdvcnR1bmcpIHVuZCBIaW53ZWlzLURpZmZzIChSb2xsZW4tVXBkYXRlcw0KIyBvaG5l IFZlcmFudHdvcnR1bmdzLVdlY2hzZWwpIGdldHJlbm50IHp1cnVlY2suDQojIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCg0KZnVuY3Rpb24gX1BlcnNvbk5hbWVGdWVyS2VubnVuZyhbc3RyaW5nXSROd0tl bm51bmcpIHsNCiAgICBpZiAoLW5vdCAkTndLZW5udW5nKSB7IHJldHVybiAnJyB9DQogICAgJGtr ID0gJE53S2VubnVuZy5Ub0xvd2VyKCkNCiAgICAjIEJldm9yenVndDogUGVyc29uZW5kYXRlbiBh dXMgcGxhbnVuZy5qc29uIChpbmtsLiBWb3JuYW1lKS4NCiAgICAkcGwgPSBSZWFkLUpzb25PYmpl Y3QgJ3BsYW51bmcuanNvbicNCiAgICBpZiAoJHBsIC1hbmQgJHBsLnBlcnNvbmVuKSB7DQogICAg ICAgIGZvcmVhY2ggKCRwIGluIEAoJHBsLnBlcnNvbmVuKSkgew0KICAgICAgICAgICAgaWYgKFtz dHJpbmddJHAubndLZW5udW5nIC1hbmQgJHAubndLZW5udW5nLlRvTG93ZXIoKSAtZXEgJGtrKSB7 DQogICAgICAgICAgICAgICAgJHZuID0gJycNCiAgICAgICAgICAgICAgICBpZiAoJHAuUFNPYmpl Y3QuUHJvcGVydGllc1sndm9ybmFtZSddKSB7ICR2biA9IFtzdHJpbmddJHAudm9ybmFtZSB9DQog ICAgICAgICAgICAgICAgcmV0dXJuICgiJHZuICQoJHAubmFtZSkiKS5UcmltKCkNCiAgICAgICAg ICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICAjIEZhbGxiYWNrOiBSb2xsZS1MaXN0ZW4gaW4g YWRtaW4uanNvbiAoU3VwZXJVc2VyLCBGYWNoYXVmc2ljaHQsDQogICAgIyBEaXJla3Rpb25zbGVp dHVuZywgRnVlaHJ1bmdzc3RlbGxlKS4gU29sY2hlIEVpbnRyYWVnZSBmdWVocmVuIGVpbg0KICAg ICMgZWlnZW5lcyBuYW1lLUZlbGQgdW5kIGtvbW1lbiBvZnQgb2huZSBwbGFudW5nLnBlcnNvbmVu LVBlbmRhbnQgdm9yDQogICAgIyAoei5CLiBTdXBlclVzZXIgb2huZSBTY2hpY2h0ZGllbnN0KS4g T2huZSBkaWVzZW4gRmFsbGJhY2sgZ3J1ZcOfdCBkZXINCiAgICAjIFNlcnZlciBkaWUgUGVyc29u IG1pdCBpaHJlciBOVy1LZW5udW5nIHN0YXR0IG1pdCBpaHJlbSBOYW1lbi4NCiAgICAkYWRtaW4g PSBSZWFkLUpzb25PYmplY3QgJ2FkbWluLmpzb24nDQogICAgaWYgKCRhZG1pbikgew0KICAgICAg ICBmb3JlYWNoICgkZmVsZCBpbiAnc3VwZXJVc2VyJywnZmFjaGF1ZnNpY2h0JywnZGlyZWt0aW9u c2xlaXR1bmcnLCdmdWVocnVuZ3NzdGVsbGUnKSB7DQogICAgICAgICAgICBpZiAoLW5vdCAkYWRt aW4uUFNPYmplY3QuUHJvcGVydGllc1skZmVsZF0pIHsgY29udGludWUgfQ0KICAgICAgICAgICAg Zm9yZWFjaCAoJGUgaW4gQCgkYWRtaW4uJGZlbGQpKSB7DQogICAgICAgICAgICAgICAgaWYgKC1u b3QgJGUpIHsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgIGlmIChbc3RyaW5nXSRlLm53S2Vu bnVuZyAtYW5kICRlLm53S2VubnVuZy5Ub0xvd2VyKCkgLWVxICRraykgew0KICAgICAgICAgICAg ICAgICAgICBpZiAoJGUuUFNPYmplY3QuUHJvcGVydGllc1snbmFtZSddIC1hbmQgJGUubmFtZSkg ew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtzdHJpbmddJGUubmFtZQ0KICAgICAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAg ICB9DQogICAgfQ0KICAgIHJldHVybiAnJw0KfQ0KDQojIEdlbmVyaXNjaGVyIERpZmYgZnVlciBy ZWluZSAiTGlzdGUgbWl0IG53S2VubnVuZyItRW5kcG9pbnRzIChTdXBlclVzZXIpLg0KIyBMaWVm ZXJ0IGVpbiBBcnJheSB2b24gbWFpbHRvLURpZmYtT2JqZWt0ZW46IHJlaW4vcmF1cywgamV3ZWls cyBtaXQgTmFtZS4NCmZ1bmN0aW9uIEdldC1Sb2xsZURpZmZzKCRhbHRMaXN0ZSwgJG5ldUxpc3Rl LCBbc3RyaW5nXSRSb2xsZUxhYmVsLCBbYm9vbF0kTnVyTWl0R2VzYW10RmxhZykgew0KICAgICRh bHRTZXQgPSBAe30NCiAgICBmb3JlYWNoICgkZSBpbiBAKCRhbHRMaXN0ZSkpIHsNCiAgICAgICAg aWYgKCRlIC1hbmQgJGUubndLZW5udW5nKSB7ICRhbHRTZXRbW3N0cmluZ10kZS5ud0tlbm51bmcu VG9Mb3dlcigpXSA9ICRlIH0NCiAgICB9DQogICAgJG5ldVNldCA9IEB7fQ0KICAgIGZvcmVhY2gg KCRlIGluIEAoJG5ldUxpc3RlKSkgew0KICAgICAgICBpZiAoJGUgLWFuZCAkZS5ud0tlbm51bmcp IHsgJG5ldVNldFtbc3RyaW5nXSRlLm53S2VubnVuZy5Ub0xvd2VyKCldID0gJGUgfQ0KICAgIH0N CiAgICAkZGlmZnMgPSBAKCkNCiAgICBmb3JlYWNoICgkayBpbiAkbmV1U2V0LktleXMpIHsNCiAg ICAgICAgaWYgKC1ub3QgJGFsdFNldC5Db250YWluc0tleSgkaykpIHsNCiAgICAgICAgICAgICRl ID0gJG5ldVNldFska10NCiAgICAgICAgICAgIGlmICgkTnVyTWl0R2VzYW10RmxhZyAtYW5kIC1u b3QgKFtib29sXSRlLmdlc2FtdHZlcmFudHdvcnRsaWNoKSkgeyBjb250aW51ZSB9DQogICAgICAg ICAgICAkZGlmZnMgKz0gW29yZGVyZWRdQHsNCiAgICAgICAgICAgICAgICByaWNodHVuZyAgID0g J3JlaW4nDQogICAgICAgICAgICAgICAgcm9sbGUgICAgICA9ICRSb2xsZUxhYmVsDQogICAgICAg ICAgICAgICAgbndLZW5udW5nICA9IFtzdHJpbmddJGUubndLZW5udW5nDQogICAgICAgICAgICAg ICAgbmFtZSAgICAgICA9IF9QZXJzb25OYW1lRnVlcktlbm51bmcoW3N0cmluZ10kZS5ud0tlbm51 bmcpDQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgZm9yZWFjaCAoJGsgaW4g JGFsdFNldC5LZXlzKSB7DQogICAgICAgIGlmICgtbm90ICRuZXVTZXQuQ29udGFpbnNLZXkoJGsp KSB7DQogICAgICAgICAgICAkZSA9ICRhbHRTZXRbJGtdDQogICAgICAgICAgICBpZiAoJE51ck1p dEdlc2FtdEZsYWcgLWFuZCAtbm90IChbYm9vbF0kZS5nZXNhbXR2ZXJhbnR3b3J0bGljaCkpIHsg Y29udGludWUgfQ0KICAgICAgICAgICAgJGRpZmZzICs9IFtvcmRlcmVkXUB7DQogICAgICAgICAg ICAgICAgcmljaHR1bmcgICA9ICdyYXVzJw0KICAgICAgICAgICAgICAgIHJvbGxlICAgICAgPSAk Um9sbGVMYWJlbA0KICAgICAgICAgICAgICAgIG53S2VubnVuZyAgPSBbc3RyaW5nXSRlLm53S2Vu bnVuZw0KICAgICAgICAgICAgICAgIG5hbWUgICAgICAgPSBfUGVyc29uTmFtZUZ1ZXJLZW5udW5n KFtzdHJpbmddJGUubndLZW5udW5nKQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0K ICAgIHJldHVybiBbb2JqZWN0W11dJGRpZmZzDQp9DQoNCiMgRmFjaGF1ZnNpY2h0LURpZmY6IHRy ZW5udCBtYWlsdG8td3VlcmRpZ2UgVmVyYW50d29ydHVuZ3MtVWViZXJnYWVuZ2UNCiMgKEdlc2Ft dHZlcmFudHdvcnRsaWNoLVN0YXR1cy1XZWNoc2VsKSB2b24gSW4tQXBwLUhpbndlaXNlbiAoRkEg aGluenUvDQojIGVudGZlcm50IG9obmUgR2VzYW10ZmxhZywgb2RlciBTZWhlbi1GbGFnLURpZmYp Lg0KZnVuY3Rpb24gR2V0LUZhY2hhdWZzaWNodERpZmZzKCRhbHRMaXN0ZSwgJG5ldUxpc3RlKSB7 DQogICAgJGFsdE1hcCA9IEB7fQ0KICAgIGZvcmVhY2ggKCRlIGluIEAoJGFsdExpc3RlKSkgew0K ICAgICAgICBpZiAoJGUgLWFuZCAkZS5ud0tlbm51bmcpIHsgJGFsdE1hcFtbc3RyaW5nXSRlLm53 S2VubnVuZy5Ub0xvd2VyKCldID0gJGUgfQ0KICAgIH0NCiAgICAkbmV1TWFwID0gQHt9DQogICAg Zm9yZWFjaCAoJGUgaW4gQCgkbmV1TGlzdGUpKSB7DQogICAgICAgIGlmICgkZSAtYW5kICRlLm53 S2VubnVuZykgeyAkbmV1TWFwW1tzdHJpbmddJGUubndLZW5udW5nLlRvTG93ZXIoKV0gPSAkZSB9 DQogICAgfQ0KICAgICRtYWlsdG8gID0gQCgpDQogICAgJGhpbndlaXMgPSBAKCkNCiAgICAjIFZl cmVpbmlndGUgS2VubnVuZ3MtTWVuZ2UNCiAgICAkYWxsZUtleXMgPSBAe30NCiAgICBmb3JlYWNo ICgkayBpbiAkYWx0TWFwLktleXMpIHsgJGFsbGVLZXlzWyRrXSA9ICR0cnVlIH0NCiAgICBmb3Jl YWNoICgkayBpbiAkbmV1TWFwLktleXMpIHsgJGFsbGVLZXlzWyRrXSA9ICR0cnVlIH0NCiAgICBm b3JlYWNoICgkayBpbiAkYWxsZUtleXMuS2V5cykgew0KICAgICAgICAkYSA9ICRhbHRNYXBbJGtd DQogICAgICAgICRuID0gJG5ldU1hcFska10NCiAgICAgICAgJGFsdEdlc2FtdCA9ICRmYWxzZTsg aWYgKCRhIC1hbmQgJGEuUFNPYmplY3QuUHJvcGVydGllc1snZ2VzYW10dmVyYW50d29ydGxpY2gn XSkgeyAkYWx0R2VzYW10ID0gW2Jvb2xdJGEuZ2VzYW10dmVyYW50d29ydGxpY2ggfQ0KICAgICAg ICAkbmV1R2VzYW10ID0gJGZhbHNlOyBpZiAoJG4gLWFuZCAkbi5QU09iamVjdC5Qcm9wZXJ0aWVz WydnZXNhbXR2ZXJhbnR3b3J0bGljaCddKSB7ICRuZXVHZXNhbXQgPSBbYm9vbF0kbi5nZXNhbXR2 ZXJhbnR3b3J0bGljaCB9DQogICAgICAgICRuYW1lID0gX1BlcnNvbk5hbWVGdWVyS2VubnVuZygk aykNCiAgICAgICAgJG53SyAgPSBpZiAoJG4pIHsgW3N0cmluZ10kbi5ud0tlbm51bmcgfSBlbHNl aWYgKCRhKSB7IFtzdHJpbmddJGEubndLZW5udW5nIH0gZWxzZSB7ICcnIH0NCg0KICAgICAgICAj IEdlc2FtdHZlcmFudHdvcnRsaWNoLVN0YXR1cy1XZWNoc2VsIC0+IG1haWx0bw0KICAgICAgICBp ZiAoJGFsdEdlc2FtdCAtbmUgJG5ldUdlc2FtdCkgew0KICAgICAgICAgICAgJHJpY2h0dW5nID0g aWYgKCRuZXVHZXNhbXQpIHsgJ3JlaW4nIH0gZWxzZSB7ICdyYXVzJyB9DQogICAgICAgICAgICAk bWFpbHRvICs9IFtvcmRlcmVkXUB7DQogICAgICAgICAgICAgICAgcmljaHR1bmcgID0gJHJpY2h0 dW5nDQogICAgICAgICAgICAgICAgcm9sbGUgICAgID0gJ0dlc2FtdHZlcmFudHdvcnRsaWNoJw0K ICAgICAgICAgICAgICAgIG53S2VubnVuZyA9ICRud0sNCiAgICAgICAgICAgICAgICBuYW1lICAg ICAgPSAkbmFtZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY29udGludWUNCiAgICAgICAg fQ0KDQogICAgICAgICMgR2xlaWNoZXIgR2VzYW10LVN0YXR1cywgYWJlciBFaW50cmFnIHJlaW4v cmF1cyAtPiBIaW53ZWlzICJGYWNoYXVmc2ljaHQiDQogICAgICAgIGlmICgkYSAtYW5kIC1ub3Qg JG4pIHsNCiAgICAgICAgICAgICRoaW53ZWlzICs9IFtvcmRlcmVkXUB7DQogICAgICAgICAgICAg ICAgcmljaHR1bmcgICAgPSAncmF1cycNCiAgICAgICAgICAgICAgICByb2xsZSAgICAgICA9ICdG YWNoYXVmc2ljaHQnDQogICAgICAgICAgICAgICAgbndLZW5udW5nICAgPSAkbndLDQogICAgICAg ICAgICAgICAgcGVyc29uX25hbWUgPSAkbmFtZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg Y29udGludWUNCiAgICAgICAgfQ0KICAgICAgICBpZiAoJG4gLWFuZCAtbm90ICRhKSB7DQogICAg ICAgICAgICAkaGlud2VpcyArPSBbb3JkZXJlZF1Aew0KICAgICAgICAgICAgICAgIHJpY2h0dW5n ICAgID0gJ3JlaW4nDQogICAgICAgICAgICAgICAgcm9sbGUgICAgICAgPSAnRmFjaGF1ZnNpY2h0 Jw0KICAgICAgICAgICAgICAgIG53S2VubnVuZyAgID0gJG53Sw0KICAgICAgICAgICAgICAgIHBl cnNvbl9uYW1lID0gJG5hbWUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGNvbnRpbnVlDQog ICAgICAgIH0NCg0KICAgICAgICAjIEJlaWRlIGV4aXN0aWVyZW4sIGdsZWljaGVyIEdlc2FtdC1T dGF0dXM6IFNlaGVuLUZsYWdzIHZlcmdsZWljaGVuDQogICAgICAgICRzZWhlbkRpZmYgPSBAKCkN CiAgICAgICAgJGFsdFNlaGVuID0gaWYgKCRhLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3NlaGVuJ10p IHsgJGEuc2VoZW4gfSBlbHNlIHsgJG51bGwgfQ0KICAgICAgICAkbmV1U2VoZW4gPSBpZiAoJG4u UFNPYmplY3QuUHJvcGVydGllc1snc2VoZW4nXSkgeyAkbi5zZWhlbiB9IGVsc2UgeyAkbnVsbCB9 DQogICAgICAgIGZvcmVhY2ggKCRmbGFnIGluIEAoJ2FkbWluaXN0cmF0aW9uJywnc3RhdGlzdGlr JywnbG9nYnVjaCcsJ2JhY2t1cHMnKSkgew0KICAgICAgICAgICAgJGF2ID0gJGZhbHNlOyBpZiAo JGFsdFNlaGVuIC1hbmQgJGFsdFNlaGVuLlBTT2JqZWN0LlByb3BlcnRpZXNbJGZsYWddKSB7ICRh diA9IFtib29sXSRhbHRTZWhlbi4kZmxhZyB9DQogICAgICAgICAgICAkbnYgPSAkZmFsc2U7IGlm ICgkbmV1U2VoZW4gLWFuZCAkbmV1U2VoZW4uUFNPYmplY3QuUHJvcGVydGllc1skZmxhZ10pIHsg JG52ID0gW2Jvb2xdJG5ldVNlaGVuLiRmbGFnIH0NCiAgICAgICAgICAgIGlmICgkYXYgLW5lICRu dikgeyAkc2VoZW5EaWZmICs9ICIkZmxhZyA6ICRhdiAtPiAkbnYiIH0NCiAgICAgICAgfQ0KICAg ICAgICBpZiAoJHNlaGVuRGlmZi5Db3VudCAtZ3QgMCkgew0KICAgICAgICAgICAgJGhpbndlaXMg Kz0gW29yZGVyZWRdQHsNCiAgICAgICAgICAgICAgICByaWNodHVuZyAgICA9ICdha3R1YWxpc2ll cnQnDQogICAgICAgICAgICAgICAgcm9sbGUgICAgICAgPSAnRmFjaGF1ZnNpY2h0LVJlY2h0ZScN CiAgICAgICAgICAgICAgICBud0tlbm51bmcgICA9ICRud0sNCiAgICAgICAgICAgICAgICBwZXJz b25fbmFtZSA9ICRuYW1lDQogICAgICAgICAgICAgICAgYWVuZGVydW5nZW4gPSAoJHNlaGVuRGlm ZiAtam9pbiAnOyAnKQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIHJldHVy biBAeyBtYWlsdG9EaWZmcyA9IFtvYmplY3RbXV0kbWFpbHRvOyBoaW53ZWlzRGlmZnMgPSBbb2Jq ZWN0W11dJGhpbndlaXMgfQ0KfQ0KDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgU3RhdGlzdGlr LUJ1aWxkZXIgKEhlbHBlcikgLS0gbGllZmVydCBkYXMgUGVyLVBlcnNvbi1TdGF0aXN0aWstQXJy YXkuDQojIEhhdCBrZWluZW4gUmVzcG9uc2UtU2lkZS1FZmZlY3Q7IENhbGxlciBzZW5kIEpzb25P YmplY3QuDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCmZ1bmN0aW9uIEdldC1TdGF0aXN0aWtEYXRh KCRwbGFudW5nLCAkYWRtaW4pIHsNCiAgICBpZiAoJG51bGwgLWVxICRwbGFudW5nKSB7IHJldHVy biBAKCkgfQ0KICAgICMgSGFzaHRhYmxlIHN0YXR0IEdlbmVyaWMgSGFzaFNldCAoQ0xNLXNpY2hl cikNCiAgICAkZmVpZXJ0YWdlID0gQHt9DQogICAgaWYgKCRhZG1pbiAtYW5kICRhZG1pbi5mZWll cnRhZ2UpIHsNCiAgICAgICAgZm9yZWFjaCAoJGYgaW4gQCgkYWRtaW4uZmVpZXJ0YWdlKSkgew0K ICAgICAgICAgICAgJGQgPSBbc3RyaW5nXSRmLmRhdHVtDQogICAgICAgICAgICAjIGFrdGl2PWZh bHNlIHVlYmVyc3ByaW5nZW4gKHouQi4gZnVlciBrdWx0dXJlbGxlL3JlbGlnaW9lc2UgRmVpZXIt DQogICAgICAgICAgICAjIHRhZ2UsIGRpZSBkZXIgVXNlciBwZXIgVG9nZ2xlIGF1c2dlYmxlbmRl dCBoYXQpLiBGZWhsZW5kZXMgYWt0aXYtDQogICAgICAgICAgICAjIEZlbGQgPT0gYWt0aXYgKEJh Y2t3YXJkcy1Db21wYXQpLg0KICAgICAgICAgICAgJGFrdGl2ID0gJHRydWUNCiAgICAgICAgICAg IGlmICgkZi5QU09iamVjdC5Qcm9wZXJ0aWVzWydha3RpdiddKSB7ICRha3RpdiA9IFtib29sXSRm LmFrdGl2IH0NCiAgICAgICAgICAgIGlmICgkZCAtYW5kICRha3RpdikgeyAkZmVpZXJ0YWdlWyRk XSA9ICR0cnVlIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICAjIFplaXRyYXVtLUN1dDogbnVyIHJl YWxpc2llcnRlICsgbmFlY2hzdGUgMTQgVGFnZSB6YWVobGVuLg0KICAgICRqYWhyUGxhbnVuZyA9 ICRudWxsDQogICAgaWYgKCRhZG1pbiAtYW5kICRhZG1pbi5QU09iamVjdC5Qcm9wZXJ0aWVzWydq YWhyJ10pIHsgJGphaHJQbGFudW5nID0gJGFkbWluLmphaHIgfQ0KICAgIGlmICgtbm90ICRqYWhy UGxhbnVuZykgeyAkamFoclBsYW51bmcgPSAoR2V0LURhdGUpLlllYXIgfQ0KICAgICRjdXRTdGFy dCA9ICgnezB9LTAxLTAxJyAtZiAkamFoclBsYW51bmcpDQogICAgJGN1dEVuZGUgID0gKEdldC1E YXRlKS5BZGREYXlzKDE0KS5Ub1N0cmluZygneXl5eS1NTS1kZCcpDQogICAgIyBTT0xMLVBvb2w6 IEFuemFobCBTYStTby1UYWdlIGltIEN1dCwgZGllIEtFSU4gRmVpZXJ0YWcgc2luZC4NCiAgICAk d2VUYWdlTWF4ID0gMA0KICAgICRfZCA9IFtkYXRldGltZV06OlBhcnNlRXhhY3QoJGN1dFN0YXJ0 LCAneXl5eS1NTS1kZCcsICRudWxsKQ0KICAgICRfZSA9IFtkYXRldGltZV06OlBhcnNlRXhhY3Qo JGN1dEVuZGUsICAneXl5eS1NTS1kZCcsICRudWxsKQ0KICAgIHdoaWxlICgkX2QgLWxlICRfZSkg ew0KICAgICAgICBpZiAoKCRfZC5EYXlPZldlZWsgLWVxICdTYXR1cmRheScgLW9yICRfZC5EYXlP ZldlZWsgLWVxICdTdW5kYXknKSAtYW5kIC1ub3QgJGZlaWVydGFnZS5Db250YWluc0tleSgkX2Qu VG9TdHJpbmcoJ3l5eXktTU0tZGQnKSkpIHsNCiAgICAgICAgICAgICR3ZVRhZ2VNYXgrKw0KICAg ICAgICB9DQogICAgICAgICRfZCA9ICRfZC5BZGREYXlzKDEpDQogICAgfQ0KICAgICRzdGF0aXN0 aWtlbiA9IE5ldy1PYmplY3QgJ1N5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QnDQogICAgJHBl cnNvbmVuID0gQCgpDQogICAgaWYgKCRwbGFudW5nLnBlcnNvbmVuKSB7ICRwZXJzb25lbiA9IEAo JHBsYW51bmcucGVyc29uZW4pIH0NCiAgICAkZGF0ZW5Tb3J0aWVydCA9IEAoKQ0KICAgIGlmICgk cGxhbnVuZy5laW50cmFlZ2UpIHsNCiAgICAgICAgJGRhdGVuU29ydGllcnQgPSBAKCRwbGFudW5n LmVpbnRyYWVnZS5QU09iamVjdC5Qcm9wZXJ0aWVzIHwgRm9yRWFjaC1PYmplY3QgeyAkXy5OYW1l IH0gfCBTb3J0LU9iamVjdCkNCiAgICB9DQogICAgZm9yZWFjaCAoJHBlcnNvbiBpbiAkcGVyc29u ZW4pIHsNCiAgICAgICAgaWYgKCRwZXJzb24uUFNPYmplY3QuUHJvcGVydGllc1snYWt0aXYnXSAt YW5kIC1ub3QgJHBlcnNvbi5ha3RpdikgeyBjb250aW51ZSB9DQogICAgICAgICRwZXJzb25JZCA9 IFtzdHJpbmddJHBlcnNvbi5pZA0KICAgICAgICAkdm9ybmFtZVR4dCA9ICcnDQogICAgICAgIGlm ICgkcGVyc29uLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3Zvcm5hbWUnXSkgeyAkdm9ybmFtZVR4dCA9 IFtzdHJpbmddJHBlcnNvbi52b3JuYW1lIH0NCiAgICAgICAgJGdydXBwZVR4dCA9ICcnDQogICAg ICAgIGlmICgkcGVyc29uLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2dydXBwZSddKSB7ICRncnVwcGVU eHQgPSBbc3RyaW5nXSRwZXJzb24uZ3J1cHBlIH0NCiAgICAgICAgJGRncmFkVHh0ID0gJycNCiAg ICAgICAgaWYgKCRwZXJzb24uUFNPYmplY3QuUHJvcGVydGllc1snZGllbnN0Z3JhZCddKSB7ICRk Z3JhZFR4dCA9IFtzdHJpbmddJHBlcnNvbi5kaWVuc3RncmFkIH0NCiAgICAgICAgJGZ1bmtUeHQg ID0gJycNCiAgICAgICAgaWYgKCRwZXJzb24uUFNPYmplY3QuUHJvcGVydGllc1snZnVua3Rpb24n XSkgICB7ICRmdW5rVHh0ICA9IFtzdHJpbmddJHBlcnNvbi5mdW5rdGlvbiB9DQogICAgICAgICRz dGF0cyA9IFtvcmRlcmVkXUB7DQogICAgICAgICAgICBwZXJzb25JZCAgICAgICAgPSAkcGVyc29u LmlkDQogICAgICAgICAgICBuYW1lICAgICAgICAgICAgPSAoJ3swfSwgezF9JyAtZiAkcGVyc29u Lm5hbWUsICR2b3JuYW1lVHh0KQ0KICAgICAgICAgICAgZGllbnN0Z3JhZCAgICAgID0gJGRncmFk VHh0DQogICAgICAgICAgICBmdW5rdGlvbiAgICAgICAgPSAkZnVua1R4dA0KICAgICAgICAgICAg Z3J1cHBlICAgICAgICAgID0gJGdydXBwZVR4dA0KICAgICAgICAgICAgZnJ1ZWggICAgICAgICAg ID0gMDsgc3BhZXQgPSAwOyBuYWNodCA9IDA7IGdlc2FtdCA9IDANCiAgICAgICAgICAgIGRnbCAg ICAgICAgICAgICA9IDA7IHdkZiA9IDA7IGZicCA9IDA7IHNvbmRlcmRpZW5zdCA9IDANCiAgICAg ICAgICAgIGtyYW5rICAgICAgICAgICA9IDA7IGt1ciA9IDA7IHVybGF1YiA9IDA7IGxlaHJnYW5n ID0gMDsgYXpBdXNnbGVpY2ggPSAwOyBzb25kZXJ1cmxhdWIgPSAwDQogICAgICAgICAgICB3b2No ZW5lbmRUYWdlICAgPSAwOyBmZWllcnRhZ1RhZ2UgPSAwOyB2b3JGZWllcnRhZ1RhZ2UgPSAwDQog ICAgICAgICAgICBzYW1zdGFnRGllbnN0ZSAgPSAwOyBzb25udGFnRGllbnN0ZSA9IDA7IGZlaWVy dGFnRGllbnN0ZSA9IDANCiAgICAgICAgICAgIGtvbXBsZXR0ZVdFICAgICA9IDANCiAgICAgICAg ICAgIHdlVGFnZU1heCAgICAgICA9ICR3ZVRhZ2VNYXgNCiAgICAgICAgICAgIHdlVGFnZUFid2Vz ZW5kICA9IDANCiAgICAgICAgICAgIHdlVGFnZVZlcmZ1ZWdiYXIgPSAwDQogICAgICAgICAgICBm b3J0YmlsZHVuZyAgICAgPSAwDQogICAgICAgICAgICBkaWVuc3R1bnRlcnJpY2h0ID0gMA0KICAg ICAgICAgICAgbGVocmdhbmdMYW5nICAgID0gMA0KICAgICAgICAgICAgd2FjaGZyZWkgICAgICAg ID0gMA0KICAgICAgICAgICAgZGllbnN0ZnJlaVRhZyAgID0gMA0KICAgICAgICAgICAgcGFyYWdy YXBoMjEgICAgID0gMA0KICAgICAgICAgICAgYXpBdXNnbGVpY2hSZWluID0gMA0KICAgICAgICAg ICAgZWluZ2VzcHJ1bmdlbiAgID0gMA0KICAgICAgICAgICAgZWluZ2VzcHJ1bmdlbl9mID0gMA0K ICAgICAgICAgICAgZWluZ2VzcHJ1bmdlbl9zID0gMA0KICAgICAgICAgICAgZWluZ2VzcHJ1bmdl bl9uID0gMA0KICAgICAgICAgICAga3JhbmtQZXJpb2RlbiAgID0gTmV3LU9iamVjdCAnU3lzdGVt LkNvbGxlY3Rpb25zLkFycmF5TGlzdCcNCiAgICAgICAgfQ0KICAgICAgICAka3JhbmtTdGFydCA9 ICRudWxsDQogICAgICAgICRsZXR6dGVyS3JhbmtUYWcgPSAkbnVsbA0KICAgICAgICAkd2VEaWVu c3RQcm9Xb2NoZSA9IEB7fQ0KICAgICAgICBmb3JlYWNoICgkZGF0dW0gaW4gJGRhdGVuU29ydGll cnQpIHsNCiAgICAgICAgICAgIGlmICgkZGF0dW0gLWx0ICRjdXRTdGFydCAtb3IgJGRhdHVtIC1n dCAkY3V0RW5kZSkgew0KICAgICAgICAgICAgICAgIGlmICgka3JhbmtTdGFydCkgew0KICAgICAg ICAgICAgICAgICAgICBbdm9pZF0kc3RhdHMua3JhbmtQZXJpb2Rlbi5BZGQoW29yZGVyZWRdQHsg dm9uID0gJGtyYW5rU3RhcnQ7IGJpcyA9ICRsZXR6dGVyS3JhbmtUYWcgfSkNCiAgICAgICAgICAg ICAgICAgICAgJGtyYW5rU3RhcnQgPSAkbnVsbA0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGVpbnRyYWcgPSAk cGxhbnVuZy5laW50cmFlZ2UuJGRhdHVtDQogICAgICAgICAgICAkd2VydCA9ICRudWxsDQogICAg ICAgICAgICBpZiAoJGVpbnRyYWcgLWFuZCAkZWludHJhZy5QU09iamVjdC5Qcm9wZXJ0aWVzWyRw ZXJzb25JZF0pIHsgJHdlcnQgPSBbc3RyaW5nXSRlaW50cmFnLiRwZXJzb25JZCB9DQogICAgICAg ICAgICBpZiAoJG51bGwgLWVxICR3ZXJ0IC1vciAkd2VydCAtZXEgJycpIHsNCiAgICAgICAgICAg ICAgICBpZiAoJGtyYW5rU3RhcnQpIHsNCiAgICAgICAgICAgICAgICAgICAgW3ZvaWRdJHN0YXRz LmtyYW5rUGVyaW9kZW4uQWRkKFtvcmRlcmVkXUB7IHZvbiA9ICRrcmFua1N0YXJ0OyBiaXMgPSAk bGV0enRlcktyYW5rVGFnIH0pDQogICAgICAgICAgICAgICAgICAgICRrcmFua1N0YXJ0ID0gJG51 bGwNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAg ICAgIH0NCiAgICAgICAgICAgIHRyeSB7ICRkYXR1bU9iaiA9IFtkYXRldGltZV06OlBhcnNlRXhh Y3QoJGRhdHVtLCAneXl5eS1NTS1kZCcsICRudWxsKSB9IGNhdGNoIHsgY29udGludWUgfQ0KICAg ICAgICAgICAgJGlzdFdFICAgICAgPSAkZGF0dW1PYmouRGF5T2ZXZWVrIC1lcSAnU2F0dXJkYXkn IC1vciAkZGF0dW1PYmouRGF5T2ZXZWVrIC1lcSAnU3VuZGF5Jw0KICAgICAgICAgICAgJGlzdEZl aWVyICAgPSAkZmVpZXJ0YWdlLkNvbnRhaW5zS2V5KCRkYXR1bSkNCiAgICAgICAgICAgICRtb3Jn ZW4gICAgID0gJGRhdHVtT2JqLkFkZERheXMoMSkuVG9TdHJpbmcoJ3l5eXktTU0tZGQnKQ0KICAg ICAgICAgICAgJGlzdFZvckZlaWVyID0gJGZlaWVydGFnZS5Db250YWluc0tleSgkbW9yZ2VuKQ0K ICAgICAgICAgICAgJHplaXRQcmVmaXggPSAnJw0KICAgICAgICAgICAgaWYgKCR3ZXJ0Lkxlbmd0 aCAtZ2UgMiAtYW5kICR3ZXJ0LlN1YnN0cmluZygxLDEpIC1lcSAnLScpIHsgJHplaXRQcmVmaXgg PSAkd2VydC5TdWJzdHJpbmcoMCwyKSB9DQogICAgICAgICAgICAkaXN0RGllbnN0ID0gJGZhbHNl DQogICAgICAgICAgICBzd2l0Y2ggKCR6ZWl0UHJlZml4KSB7DQogICAgICAgICAgICAgICAgJ0Yt JyB7ICRzdGF0cy5mcnVlaCsrOyAkc3RhdHMuZ2VzYW10Kys7ICRpc3REaWVuc3QgPSAkdHJ1ZSB9 DQogICAgICAgICAgICAgICAgJ1MtJyB7ICRzdGF0cy5zcGFldCsrOyAkc3RhdHMuZ2VzYW10Kys7 ICRpc3REaWVuc3QgPSAkdHJ1ZSB9DQogICAgICAgICAgICAgICAgJ04tJyB7ICRzdGF0cy5uYWNo dCsrOyAkc3RhdHMuZ2VzYW10Kys7ICRpc3REaWVuc3QgPSAkdHJ1ZSB9DQogICAgICAgICAgICB9 DQogICAgICAgICAgICBpZiAoLW5vdCAkaXN0RGllbnN0IC1hbmQgKCR3ZXJ0IC1lcSAnU0QnIC1v ciAkd2VydCAtZXEgJ1NFJykpIHsNCiAgICAgICAgICAgICAgICAkc3RhdHMuc29uZGVyZGllbnN0 Kys7ICRzdGF0cy5nZXNhbXQrKzsgJGlzdERpZW5zdCA9ICR0cnVlDQogICAgICAgICAgICB9DQog ICAgICAgICAgICBpZiAoJHplaXRQcmVmaXggLWluIEAoJ0YtJywnUy0nLCdOLScpIC1hbmQgJHdl cnQuTGVuZ3RoIC1nZSA1KSB7DQogICAgICAgICAgICAgICAgJHJvbGxlID0gJHdlcnQuU3Vic3Ry aW5nKDIsMykNCiAgICAgICAgICAgICAgICBpZiAoJHJvbGxlIC1lcSAnREdMJykgeyAkc3RhdHMu ZGdsKysgfQ0KICAgICAgICAgICAgICAgIGVsc2VpZiAoJHJvbGxlIC1lcSAnV0RGJykgeyAkc3Rh dHMud2RmKysgfQ0KICAgICAgICAgICAgICAgIGVsc2VpZiAoJHJvbGxlIC1lcSAnRkJQJykgeyAk c3RhdHMuZmJwKysgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCR3ZXJ0IC1lcSAn a3InKSB7DQogICAgICAgICAgICAgICAgJHN0YXRzLmtyYW5rKysNCiAgICAgICAgICAgICAgICAk bGV0enRlcktyYW5rVGFnID0gJGRhdHVtDQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGtyYW5r U3RhcnQpIHsgJGtyYW5rU3RhcnQgPSAkZGF0dW0gfQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAg ICAgICAgICAgICAgICBpZiAoJGtyYW5rU3RhcnQpIHsNCiAgICAgICAgICAgICAgICAgICAgW3Zv aWRdJHN0YXRzLmtyYW5rUGVyaW9kZW4uQWRkKFtvcmRlcmVkXUB7IHZvbiA9ICRrcmFua1N0YXJ0 OyBiaXMgPSAkbGV0enRlcktyYW5rVGFnIH0pDQogICAgICAgICAgICAgICAgICAgICRrcmFua1N0 YXJ0ID0gJG51bGwNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAg ICBpZiAoJHdlcnQgLWVxICdLdXInKSB7ICRzdGF0cy5rdXIrKyB9DQogICAgICAgICAgICBpZiAo JHdlcnQgLWVxICdVcmwnKSB7ICRzdGF0cy51cmxhdWIrKyB9DQogICAgICAgICAgICBpZiAoJHdl cnQgLWVxICdTVScpICB7ICRzdGF0cy5zb25kZXJ1cmxhdWIrKyB9DQogICAgICAgICAgICBpZiAo JHdlcnQgLWluIEAoJ0xHJywnVFQnLCdBdUYnLCdGQicsJ1NlbScsJ0VUTScsJ0RVJykpIHsgJHN0 YXRzLmxlaHJnYW5nKysgfQ0KICAgICAgICAgICAgaWYgKCR3ZXJ0IC1pbiBAKCfCpzIxJywnMjFh JywnQVpBJykpIHsgJHN0YXRzLmF6QXVzZ2xlaWNoKysgfQ0KICAgICAgICAgICAgaWYgKCR3ZXJ0 IC1pbiBAKCdBdUYnLCdFVE0nLCdTZW0nLCdUVCcsJ1R6RicpKSB7ICRzdGF0cy5mb3J0YmlsZHVu ZysrIH0NCiAgICAgICAgICAgIGlmICgkd2VydCAtZXEgJ0RVJykgICB7ICRzdGF0cy5kaWVuc3R1 bnRlcnJpY2h0KysgfQ0KICAgICAgICAgICAgaWYgKCR3ZXJ0IC1lcSAnTEcnKSAgIHsgJHN0YXRz LmxlaHJnYW5nTGFuZysrIH0NCiAgICAgICAgICAgIGlmICgkd2VydCAtaW4gQCgnwqcyMScsJzIx YScpKSB7ICRzdGF0cy5wYXJhZ3JhcGgyMSsrIH0NCiAgICAgICAgICAgIGlmICgkd2VydCAtZXEg J0FaQScpICB7ICRzdGF0cy5hekF1c2dsZWljaFJlaW4rKyB9DQogICAgICAgICAgICBpZiAoJHdl cnQgLWVxICd3ZnInKSAgeyAkc3RhdHMud2FjaGZyZWkrKyB9DQogICAgICAgICAgICBpZiAoJHdl cnQgLWVxICdkZnInKSAgeyAkc3RhdHMuZGllbnN0ZnJlaVRhZysrIH0NCiAgICAgICAgICAgIGlm ICgkaXN0V0UgLWFuZCAkaXN0RGllbnN0KSAgICAgICB7ICRzdGF0cy53b2NoZW5lbmRUYWdlKysg fQ0KICAgICAgICAgICAgaWYgKCRpc3RGZWllciAtYW5kICRpc3REaWVuc3QpICAgIHsgJHN0YXRz LmZlaWVydGFnVGFnZSsrIH0NCiAgICAgICAgICAgIGlmICgkaXN0Vm9yRmVpZXIgLWFuZCAkaXN0 RGllbnN0KSB7ICRzdGF0cy52b3JGZWllcnRhZ1RhZ2UrKyB9DQogICAgICAgICAgICBpZiAoJGlz dERpZW5zdCkgew0KICAgICAgICAgICAgICAgIGlmICgkaXN0RmVpZXIpIHsNCiAgICAgICAgICAg ICAgICAgICAgJHN0YXRzLmZlaWVydGFnRGllbnN0ZSsrDQogICAgICAgICAgICAgICAgfSBlbHNl aWYgKCRkYXR1bU9iai5EYXlPZldlZWsgLWVxICdTYXR1cmRheScpIHsNCiAgICAgICAgICAgICAg ICAgICAgJHN0YXRzLnNhbXN0YWdEaWVuc3RlKysNCiAgICAgICAgICAgICAgICB9IGVsc2VpZiAo JGRhdHVtT2JqLkRheU9mV2VlayAtZXEgJ1N1bmRheScpIHsNCiAgICAgICAgICAgICAgICAgICAg JHN0YXRzLnNvbm50YWdEaWVuc3RlKysNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9 DQogICAgICAgICAgICBpZiAoKCRkYXR1bU9iai5EYXlPZldlZWsgLWVxICdTYXR1cmRheScgLW9y ICRkYXR1bU9iai5EYXlPZldlZWsgLWVxICdTdW5kYXknKSAtYW5kIC1ub3QgJGlzdEZlaWVyIC1h bmQgJHdlcnQgLWluIEAoJ1VybCcsJ2tyJywnS3VyJywnU1UnLCdMRycsJ0F1RicsJ0VUTScsJ1Nl bScsJ1RUJywnVHpGJywnRFUnLCdCVicsJ2FiZycsJ0JBTycsJ0hPJykpIHsNCiAgICAgICAgICAg ICAgICAkc3RhdHMud2VUYWdlQWJ3ZXNlbmQrKw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg aWYgKCRpc3REaWVuc3QgLWFuZCAoJGRhdHVtT2JqLkRheU9mV2VlayAtZXEgJ1NhdHVyZGF5JyAt b3IgJGRhdHVtT2JqLkRheU9mV2VlayAtZXEgJ1N1bmRheScpKSB7DQogICAgICAgICAgICAgICAg aWYgKCRkYXR1bU9iai5EYXlPZldlZWsgLWVxICdTYXR1cmRheScpIHsNCiAgICAgICAgICAgICAg ICAgICAgJGFua2VyID0gJGRhdHVtDQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAg ICAgICAgICAgICAgJGFua2VyID0gJGRhdHVtT2JqLkFkZERheXMoLTEpLlRvU3RyaW5nKCd5eXl5 LU1NLWRkJykNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJHdl RGllbnN0UHJvV29jaGUuQ29udGFpbnNLZXkoJGFua2VyKSkgew0KICAgICAgICAgICAgICAgICAg ICAkd2VEaWVuc3RQcm9Xb2NoZVskYW5rZXJdID0gQHsgc2EgPSAkZmFsc2U7IHNvID0gJGZhbHNl IH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKCRkYXR1bU9iai5EYXlP ZldlZWsgLWVxICdTYXR1cmRheScpIHsNCiAgICAgICAgICAgICAgICAgICAgJHdlRGllbnN0UHJv V29jaGVbJGFua2VyXS5zYSA9ICR0cnVlDQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAg ICAgICAgICAgICAgICAgJHdlRGllbnN0UHJvV29jaGVbJGFua2VyXS5zbyA9ICR0cnVlDQogICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmICgka3Jh bmtTdGFydCkgew0KICAgICAgICAgICAgW3ZvaWRdJHN0YXRzLmtyYW5rUGVyaW9kZW4uQWRkKFtv cmRlcmVkXUB7IHZvbiA9ICRrcmFua1N0YXJ0OyBiaXMgPSAkbGV0enRlcktyYW5rVGFnIH0pDQog ICAgICAgIH0NCiAgICAgICAgZm9yZWFjaCAoJHcgaW4gJHdlRGllbnN0UHJvV29jaGUuVmFsdWVz KSB7DQogICAgICAgICAgICBpZiAoJHcuc2EgLWFuZCAkdy5zbykgeyAkc3RhdHMua29tcGxldHRl V0UrKyB9DQogICAgICAgIH0NCiAgICAgICAgJHN0YXRzLndlVGFnZVZlcmZ1ZWdiYXIgPSBbTWF0 aF06Ok1heCgwLCAkc3RhdHMud2VUYWdlTWF4IC0gJHN0YXRzLndlVGFnZUFid2VzZW5kKQ0KICAg ICAgICBbdm9pZF0kc3RhdGlzdGlrZW4uQWRkKCRzdGF0cykNCiAgICB9DQoNCiAgICAjID09PT09 IEFnZ3JlZ2F0aW9uICJFaW5nZXNwcnVuZ2VuIiBhdXMgZGVtIExvZ2J1Y2ggPT09PT0NCiAgICAj IFphZWhsdCB2ZXJhbnR3b3J0dW5nLmVpbmdlc3BydW5nZW4tRWludHJhZWdlIHBybyBQZXJzb24s IGdydXBwaWVydCBuYWNoDQogICAgIyBTY2hpY2h0IChGL1MvTikuIFZlcmJpbmRsaWNoa2VpdHNm ZW5zdGVyLUxvZ2lrIGxpZWd0IGltIENsaWVudCAoZGFzDQogICAgIyBFdmVudCB3aXJkIG9obmVo aW4gbnVyIGluIGRlciBWZXJiaW5kbGljaGtlaXQgZW1pdHRpZXJ0KSDigJQgd2lyIHN1bW1pZXJl bg0KICAgICMgaGllciBlaW5mYWNoIGFsbGUgZXhpc3RpZXJlbmRlbiBFaW50cmFlZ2UgaW0gQ3V0 LVplaXRyYXVtLg0KICAgICRsb2didWNoID0gJG51bGwNCiAgICB0cnkgeyAkbG9nYnVjaCA9IFJl YWQtSnNvbk9iamVjdCAnbG9nYnVjaC5qc29uJyB9IGNhdGNoIHsgJGxvZ2J1Y2ggPSAkbnVsbCB9 DQogICAgaWYgKCRsb2didWNoKSB7DQogICAgICAgICRzdGF0c0J5UGlkID0gQHt9DQogICAgICAg IGZvcmVhY2ggKCRzIGluICRzdGF0aXN0aWtlbikgeyAkc3RhdHNCeVBpZFtbc3RyaW5nXSRzLnBl cnNvbklkXSA9ICRzIH0NCiAgICAgICAgZm9yZWFjaCAoJGVudHJ5IGluIEAoJGxvZ2J1Y2gpKSB7 DQogICAgICAgICAgICBpZiAoLW5vdCAkZW50cnkpIHsgY29udGludWUgfQ0KICAgICAgICAgICAg aWYgKC1ub3QgJGVudHJ5LlBTT2JqZWN0LlByb3BlcnRpZXNbJ2FrdGlvbiddKSB7IGNvbnRpbnVl IH0NCiAgICAgICAgICAgIGlmIChbc3RyaW5nXSRlbnRyeS5ha3Rpb24gLW5lICd2ZXJhbnR3b3J0 dW5nLmVpbmdlc3BydW5nZW4nKSB7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICRwaWRLZXkgPSAn Jw0KICAgICAgICAgICAgaWYgKCRlbnRyeS5QU09iamVjdC5Qcm9wZXJ0aWVzWydwZXJzb25JZCdd KSB7ICRwaWRLZXkgPSBbc3RyaW5nXSRlbnRyeS5wZXJzb25JZCB9DQogICAgICAgICAgICBpZiAo LW5vdCAkc3RhdHNCeVBpZC5Db250YWluc0tleSgkcGlkS2V5KSkgeyBjb250aW51ZSB9DQogICAg ICAgICAgICAjIEN1dC1aZWl0cmF1bTogbnVyIEV2ZW50cyBtaXQgRGF0dW0gaW0gQ3V0IHphZWhs ZW4gKFZlcmJpbmRsaWNoa2VpdA0KICAgICAgICAgICAgIyBsaWVndCBoZXV0ZSArIDE0IFRhZ2Us IGRhaGVyIHBhc3NlbiBkaWUgRWluZ2VzcHJpbmdlbi1FdmVudHMgbmFoZXp1DQogICAgICAgICAg ICAjIGltbWVyIHJlaW4sIGFiZXIgVm9yYXVzLUtvcnJla3R1cmVuIGtvZW5udGVuIHdlaXRlciBk cmF1c3NlbiBsaWVnZW4pLg0KICAgICAgICAgICAgJGRhdHVtID0gJycNCiAgICAgICAgICAgIGlm ICgkZW50cnkuUFNPYmplY3QuUHJvcGVydGllc1snZGF0dW0nXSkgeyAkZGF0dW0gPSBbc3RyaW5n XSRlbnRyeS5kYXR1bSB9DQogICAgICAgICAgICBpZiAoJGRhdHVtIC1hbmQgKCRkYXR1bSAtbHQg JGN1dFN0YXJ0IC1vciAkZGF0dW0gLWd0ICRjdXRFbmRlKSkgeyBjb250aW51ZSB9DQogICAgICAg ICAgICAkcyA9ICRzdGF0c0J5UGlkWyRwaWRLZXldDQogICAgICAgICAgICAkcy5laW5nZXNwcnVu Z2VuKysNCiAgICAgICAgICAgICRzY2ggPSAnJw0KICAgICAgICAgICAgaWYgKCRlbnRyeS5QU09i amVjdC5Qcm9wZXJ0aWVzWydzY2hpY2h0J10pIHsgJHNjaCA9IFtzdHJpbmddJGVudHJ5LnNjaGlj aHQgfQ0KICAgICAgICAgICAgaWYgICAgICgkc2NoIC1lcSAnRicpIHsgJHMuZWluZ2VzcHJ1bmdl bl9mKysgfQ0KICAgICAgICAgICAgZWxzZWlmICgkc2NoIC1lcSAnUycpIHsgJHMuZWluZ2VzcHJ1 bmdlbl9zKysgfQ0KICAgICAgICAgICAgZWxzZWlmICgkc2NoIC1lcSAnTicpIHsgJHMuZWluZ2Vz cHJ1bmdlbl9uKysgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgcmV0dXJuICwkc3RhdGlzdGlr ZW4NCn0NCg0KIyBMb2didWNoLVJlYWRlciAtLSBsaWVmZXJ0IGRlbiBVVEYtOC1UZXh0IGRlciBM b2didWNoLURhdGVpIChvZGVyICdbXScgd2VubiBsZWVyKS4NCmZ1bmN0aW9uIEdldC1Mb2didWNo VGV4dCB7DQogICAgJHR4dCA9IFJlYWQtVGV4dEZpbGUgJ2xvZ2J1Y2guanNvbicNCiAgICBpZiAo JG51bGwgLWVxICR0eHQpIHsgcmV0dXJuICdbXScgfQ0KICAgIHJldHVybiAkdHh0DQp9DQoNCmZ1 bmN0aW9uIFRlc3QtRGFyZlplbGxlRWRpdGllcmVuKCRaaWVsUGVyc29uKSB7DQogICAgJHIgPSBH ZXQtUmVjaHRlDQogICAgaWYgKCRudWxsIC1lcSAkci5lZGl0aWVyZW4pIHsgcmV0dXJuICR0cnVl IH0gICMgU3VwZXJVc2VyDQogICAgaWYgKCRudWxsIC1lcSAkWmllbFBlcnNvbikgeyByZXR1cm4g JGZhbHNlIH0NCiAgICBpZiAoJG51bGwgLW5lICRyLm1laW5lUGVyc29uSWQgLWFuZCBbaW50XSRa aWVsUGVyc29uLmlkIC1lcSBbaW50XSRyLm1laW5lUGVyc29uSWQpIHsgcmV0dXJuICR0cnVlIH0N CiAgICAjIE1pa3JvdGVhbS1NaXRnbGllZGVyIGR1ZXJmZW4gZWluYW5kZXIgbWl0LXBsYW5lbiAo VXNlci1XdW5zY2gNCiAgICAjIDIwMjYtMDUtMjMpLiBXaXIgbGVzZW4gTWlrcm90ZWFtLUxpc3Rl IGF1cyBhZG1pbi5qc29uIGZyaXNjaCDigJQgZGVyDQogICAgIyBtdGltZS1iYXNpZXJ0ZSBDYWNo ZSBpbiBHZXQtUmVjaHRlIGNhY2hlZCBkaWUgdm9sbGUgUmVjaHRlLVN0cnVrdHVyLA0KICAgICMg YWJlciBtaWtyb3RlYW1zIHNpbmQgZG9ydCBuaWNodCBlbnRoYWx0ZW4sIGRhaGVyIGhpZXIgb24t ZGVtYW5kLg0KICAgIGlmICgkbnVsbCAtbmUgJHIubWVpbmVQZXJzb25JZCkgew0KICAgICAgICB0 cnkgew0KICAgICAgICAgICAgJGFkbWluID0gUmVhZC1Kc29uT2JqZWN0ICdhZG1pbi5qc29uJw0K ICAgICAgICAgICAgaWYgKCRudWxsIC1uZSAkYWRtaW4gLWFuZCAkYWRtaW4uUFNPYmplY3QuUHJv cGVydGllc1snbWlrcm90ZWFtcyddKSB7DQogICAgICAgICAgICAgICAgJG1laW5lSWQgPSBbaW50 XSRyLm1laW5lUGVyc29uSWQNCiAgICAgICAgICAgICAgICAkemllbElkICA9IFtpbnRdJFppZWxQ ZXJzb24uaWQNCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdCBpbiBAKCRhZG1pbi5taWtyb3Rl YW1zKSkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICR0IC1vciAtbm90ICR0 LlBTT2JqZWN0LlByb3BlcnRpZXNbJ3BlcnNvbklkcyddKSB7IGNvbnRpbnVlIH0NCiAgICAgICAg ICAgICAgICAgICAgJGlkcyA9IEAoJHQucGVyc29uSWRzIHwgRm9yRWFjaC1PYmplY3QgeyBbaW50 XSRfIH0pDQogICAgICAgICAgICAgICAgICAgIGlmICgkaWRzIC1jb250YWlucyAkbWVpbmVJZCAt YW5kICRpZHMgLWNvbnRhaW5zICR6aWVsSWQpIHsgcmV0dXJuICR0cnVlIH0NCiAgICAgICAgICAg ICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0gY2F0Y2gge30NCiAgICB9DQogICAgJGVk ID0gJHIuZWRpdGllcmVuDQogICAgaWYgKCRlZC5wZXJzb25lbklkcyAtY29udGFpbnMgW2ludF0k WmllbFBlcnNvbi5pZCkgeyByZXR1cm4gJHRydWUgfQ0KICAgIGlmICgkWmllbFBlcnNvbi5QU09i amVjdC5Qcm9wZXJ0aWVzWydncnVwcGUnXSAtYW5kICRlZC5kaWVuc3RncnVwcGVuIC1jb250YWlu cyBbc3RyaW5nXSRaaWVsUGVyc29uLmdydXBwZSkgeyByZXR1cm4gJHRydWUgfQ0KICAgIGlmICgk WmllbFBlcnNvbi5QU09iamVjdC5Qcm9wZXJ0aWVzWydvZSddIC1hbmQgJGVkLnN0YW5kb3J0ZSAt Y29udGFpbnMgW3N0cmluZ10kWmllbFBlcnNvbi5vZSkgeyByZXR1cm4gJHRydWUgfQ0KICAgIHJl dHVybiAkZmFsc2UNCn0NCg0KIyBBbGlhcyBmdWVyIGJlc3RlaGVuZGUgR3VhcmRzIOKAlCBtYXBw dCBhdWYgJ2FkbWluaXN0cmF0aW9uJy1CZXJlaWNoLg0KZnVuY3Rpb24gVGVzdC1Jc3RBZG1pbiB7 IHJldHVybiAoVGVzdC1EYXJmQmVyZWljaCAnYWRtaW5pc3RyYXRpb24nKSB9DQoNCiMgRm9yY2Ut TG9jay1CZXJlY2h0aWd1bmc6IEZhY2hhdWZzaWNodCBvZGVyIFN1cGVyVXNlciBkdWVyZmVuIGpl ZGVuIEVkaXQtTG9jaw0KIyB1ZWJlcm5laG1lbi4gU2llaGUgUGhhc2UgRiAoTGl2ZS1TeW5jKS4N CmZ1bmN0aW9uIFRlc3QtRGFyZkxvY2tVZWJlcnNjaHJlaWJlbiB7DQogICAgJHIgPSBHZXQtUmVj aHRlDQogICAgaWYgKCRyLmlzdFN1cGVyVXNlcikgeyByZXR1cm4gJHRydWUgfQ0KICAgIGlmICgk ci5pc3RGYWNoYXVmc2ljaHQpIHsgcmV0dXJuICR0cnVlIH0NCiAgICByZXR1cm4gJGZhbHNlDQp9 DQoNCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgWkVMTC1MT0NLICsgQ0hBTkdFLUxPRyAoTGl2 ZS1TeW5jKQ0KIyBTdG9yYWdlOiBkYXRhLy5sb2Nrcy96ZWxsZV88ZGF0dW0+XzxwZXJzb25JZD4u bG9jaw0KIyAgICAgICAgICBkYXRhL2NoYW5nZXMuanNvbiAoRklGTywgbWF4IDUwMCBFaW50cmFl Z2UpDQojIFN0YWxlLUxvY2stVFRMOiA2MHMgb2huZSBIZWFydGJlYXQgLT4gYXV0b21hdGlzY2gg ZW50ZmVybnQNCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KJHNjcmlwdDpDZWxsTG9ja0RpciA9 IEpvaW4tUGF0aCAkRGF0YURpciAnLmxvY2tzJw0KJHNjcmlwdDpDZWxsTG9ja1N0YWxlU2VjID0g NjANCiRzY3JpcHQ6Q2hhbmdlTG9nTWF4ID0gNTAwDQoNCmZ1bmN0aW9uIEluaXRpYWxpemUtQ2Vs bExvY2tEaXIgew0KICAgIGlmICgtbm90IChUZXN0LVBhdGggJHNjcmlwdDpDZWxsTG9ja0Rpcikp IHsNCiAgICAgICAgdHJ5IHsgTmV3LUl0ZW0gLUl0ZW1UeXBlIERpcmVjdG9yeSAtUGF0aCAkc2Ny aXB0OkNlbGxMb2NrRGlyIC1Gb3JjZSB8IE91dC1OdWxsIH0gY2F0Y2gge30NCiAgICB9DQp9DQoN CmZ1bmN0aW9uIFRlc3QtTG9ja1NhZmVJZCgkV2VydCkgew0KICAgIGlmIChbc3RyaW5nXTo6SXNO dWxsT3JXaGl0ZVNwYWNlKCRXZXJ0KSkgeyByZXR1cm4gJGZhbHNlIH0NCiAgICByZXR1cm4gKCRX ZXJ0IC1tYXRjaCAnXltBLVphLXowLTlfXC1dKyQnKQ0KfQ0KDQpmdW5jdGlvbiBUZXN0LUxvY2tT YWZlRGF0dW0oJFdlcnQpIHsNCiAgICByZXR1cm4gKCRXZXJ0IC1tYXRjaCAnXlxkezR9LVxkezJ9 LVxkezJ9JCcpDQp9DQoNCmZ1bmN0aW9uIEdldC1DZWxsTG9ja1BhdGgoJERhdHVtLCAkUGVyc29u SWQpIHsNCiAgICBJbml0aWFsaXplLUNlbGxMb2NrRGlyDQogICAgJFNhZmUgPSAiemVsbGVfJCgk RGF0dW0pXyQoJFBlcnNvbklkKS5sb2NrIg0KICAgIHJldHVybiBKb2luLVBhdGggJHNjcmlwdDpD ZWxsTG9ja0RpciAkU2FmZQ0KfQ0KDQpmdW5jdGlvbiBSZWFkLUNlbGxMb2NrKCREYXR1bSwgJFBl cnNvbklkKSB7DQogICAgJFBhdGggPSBHZXQtQ2VsbExvY2tQYXRoICREYXR1bSAkUGVyc29uSWQN CiAgICBpZiAoLW5vdCAoVGVzdC1QYXRoICRQYXRoKSkgeyByZXR1cm4gJG51bGwgfQ0KICAgIHRy eSB7DQogICAgICAgICRDb250ZW50ID0gW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJFBh dGgsIFtTeXN0ZW0uVGV4dC5FbmNvZGluZ106OlVURjgpDQogICAgICAgIGlmIChbc3RyaW5nXTo6 SXNOdWxsT3JXaGl0ZVNwYWNlKCRDb250ZW50KSkgeyByZXR1cm4gJG51bGwgfQ0KICAgICAgICAk TG9jayA9ICRDb250ZW50IHwgQ29udmVydEZyb20tSnNvbg0KICAgICAgICAkTGFzdEJlYXQgPSBb RGF0ZVRpbWVdOjpQYXJzZSgkTG9jay5sYXN0QmVhdCkuVG9Vbml2ZXJzYWxUaW1lKCkNCiAgICAg ICAgJEFnZVNlYyA9ICgoR2V0LURhdGUpLlRvVW5pdmVyc2FsVGltZSgpIC0gJExhc3RCZWF0KS5U b3RhbFNlY29uZHMNCiAgICAgICAgaWYgKCRBZ2VTZWMgLWd0ICRzY3JpcHQ6Q2VsbExvY2tTdGFs ZVNlYykgew0KICAgICAgICAgICAgdHJ5IHsgUmVtb3ZlLUl0ZW0gJFBhdGggLUZvcmNlIC1FcnJv ckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlIH0gY2F0Y2gge30NCiAgICAgICAgICAgIHJldHVybiAk bnVsbA0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkTG9jaw0KICAgIH0gY2F0Y2ggew0KICAg ICAgICB0cnkgeyBSZW1vdmUtSXRlbSAkUGF0aCAtRm9yY2UgLUVycm9yQWN0aW9uIFNpbGVudGx5 Q29udGludWUgfSBjYXRjaCB7fQ0KICAgICAgICByZXR1cm4gJG51bGwNCiAgICB9DQp9DQoNCmZ1 bmN0aW9uIFdyaXRlLUNlbGxMb2NrKCRMb2NrKSB7DQogICAgJFBhdGggPSBHZXQtQ2VsbExvY2tQ YXRoICRMb2NrLmRhdHVtICRMb2NrLnBlcnNvbklkDQogICAgJEpzb24gPSAkTG9jayB8IENvbnZl cnRUby1Kc29uIC1EZXB0aCA1IC1Db21wcmVzcw0KICAgIFtTeXN0ZW0uSU8uRmlsZV06OldyaXRl QWxsVGV4dCgkUGF0aCwgJEpzb24sIFtTeXN0ZW0uVGV4dC5FbmNvZGluZ106OlVURjgpDQp9DQoN CmZ1bmN0aW9uIEFjcXVpcmUtQ2VsbExvY2soJERhdHVtLCAkUGVyc29uSWQsICRVc2VyLCAkUm9s bGUsICRGb3JjZSA9ICRmYWxzZSkgew0KICAgICRFeGlzdGluZyA9IFJlYWQtQ2VsbExvY2sgJERh dHVtICRQZXJzb25JZA0KICAgIGlmICgkbnVsbCAtbmUgJEV4aXN0aW5nKSB7DQogICAgICAgICRT ZWxic3QgPSAoJEV4aXN0aW5nLnVzZXJuYW1lIC1pZXEgJFVzZXIpDQogICAgICAgIGlmICgtbm90 ICRTZWxic3QgLWFuZCAtbm90ICRGb3JjZSkgew0KICAgICAgICAgICAgcmV0dXJuIEB7IG9rID0g JGZhbHNlOyBleGlzdGluZyA9ICRFeGlzdGluZyB9DQogICAgICAgIH0NCiAgICB9DQogICAgJE5v dyA9IChHZXQtRGF0ZSkuVG9Vbml2ZXJzYWxUaW1lKCkuVG9TdHJpbmcoJ28nKQ0KICAgICRMb2Nr ID0gW29yZGVyZWRdQHsNCiAgICAgICAgdG9rZW4gICAgPSBbR3VpZF06Ok5ld0d1aWQoKS5Ub1N0 cmluZygpDQogICAgICAgIGRhdHVtICAgID0gJERhdHVtDQogICAgICAgIHBlcnNvbklkID0gJFBl cnNvbklkDQogICAgICAgIHVzZXJuYW1lID0gJFVzZXINCiAgICAgICAgcm9sbGUgICAgPSAkUm9s bGUNCiAgICAgICAgbG9ja2VkQXQgPSAkTm93DQogICAgICAgIGxhc3RCZWF0ID0gJE5vdw0KICAg IH0NCiAgICBXcml0ZS1DZWxsTG9jayAkTG9jaw0KICAgIGlmICgkbnVsbCAtbmUgJEV4aXN0aW5n IC1hbmQgLW5vdCAoJEV4aXN0aW5nLnVzZXJuYW1lIC1pZXEgJFVzZXIpKSB7DQogICAgICAgIEFk ZC1DaGFuZ2VMb2dFaW50cmFnICdsb2NrX2ZvcmNlJyBAew0KICAgICAgICAgICAgZGF0dW0gICAg ICA9ICREYXR1bQ0KICAgICAgICAgICAgcGVyc29uSWQgICA9ICRQZXJzb25JZA0KICAgICAgICAg ICAgdmVyZHJhZW5ndCA9ICRFeGlzdGluZy51c2VybmFtZQ0KICAgICAgICB9DQogICAgfQ0KICAg IHJldHVybiBAeyBvayA9ICR0cnVlOyBsb2NrID0gJExvY2sgfQ0KfQ0KDQpmdW5jdGlvbiBGaW5k LUNlbGxMb2NrQnlUb2tlbigkVG9rZW4pIHsNCiAgICBJbml0aWFsaXplLUNlbGxMb2NrRGlyDQog ICAgaWYgKFtzdHJpbmddOjpJc051bGxPcldoaXRlU3BhY2UoJFRva2VuKSkgeyByZXR1cm4gJG51 bGwgfQ0KICAgIGZvcmVhY2ggKCRGIGluIEdldC1DaGlsZEl0ZW0gLVBhdGggJHNjcmlwdDpDZWxs TG9ja0RpciAtRmlsdGVyICd6ZWxsZV8qLmxvY2snIC1GaWxlIC1FcnJvckFjdGlvbiBTaWxlbnRs eUNvbnRpbnVlKSB7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICAkTCA9IFtTeXN0ZW0uSU8u RmlsZV06OlJlYWRBbGxUZXh0KCRGLkZ1bGxOYW1lLCBbU3lzdGVtLlRleHQuRW5jb2RpbmddOjpV VEY4KSB8IENvbnZlcnRGcm9tLUpzb24NCiAgICAgICAgICAgIGlmICgkTC50b2tlbiAtZXEgJFRv a2VuKSB7IHJldHVybiBAeyBsb2NrID0gJEw7IHBhdGggPSAkRi5GdWxsTmFtZSB9IH0NCiAgICAg ICAgfSBjYXRjaCB7fQ0KICAgIH0NCiAgICByZXR1cm4gJG51bGwNCn0NCg0KZnVuY3Rpb24gUmVm cmVzaC1DZWxsTG9jaygkVG9rZW4pIHsNCiAgICAkRiA9IEZpbmQtQ2VsbExvY2tCeVRva2VuICRU b2tlbg0KICAgIGlmICgkbnVsbCAtZXEgJEYpIHsgcmV0dXJuIEB7IG9rID0gJGZhbHNlIH0gfQ0K ICAgICRMID0gJEYubG9jaw0KICAgICRMLmxhc3RCZWF0ID0gKEdldC1EYXRlKS5Ub1VuaXZlcnNh bFRpbWUoKS5Ub1N0cmluZygnbycpDQogICAgV3JpdGUtQ2VsbExvY2sgJEwNCiAgICByZXR1cm4g QHsgb2sgPSAkdHJ1ZTsgbG9jayA9ICRMIH0NCn0NCg0KZnVuY3Rpb24gUmVsZWFzZS1DZWxsTG9j aygkVG9rZW4pIHsNCiAgICAkRiA9IEZpbmQtQ2VsbExvY2tCeVRva2VuICRUb2tlbg0KICAgIGlm ICgkbnVsbCAtZXEgJEYpIHsgcmV0dXJuIEB7IG9rID0gJGZhbHNlIH0gfQ0KICAgIHRyeSB7IFJl bW92ZS1JdGVtICRGLnBhdGggLUZvcmNlIC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlIH0g Y2F0Y2gge30NCiAgICByZXR1cm4gQHsgb2sgPSAkdHJ1ZTsgbG9jayA9ICRGLmxvY2sgfQ0KfQ0K DQpmdW5jdGlvbiBHZXQtQWxsQWN0aXZlQ2VsbExvY2tzIHsNCiAgICBJbml0aWFsaXplLUNlbGxM b2NrRGlyDQogICAgJFJlc3VsdCA9IE5ldy1PYmplY3QgU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5 TGlzdA0KICAgIGZvcmVhY2ggKCRGIGluIEdldC1DaGlsZEl0ZW0gLVBhdGggJHNjcmlwdDpDZWxs TG9ja0RpciAtRmlsdGVyICd6ZWxsZV8qLmxvY2snIC1GaWxlIC1FcnJvckFjdGlvbiBTaWxlbnRs eUNvbnRpbnVlKSB7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICAkTCA9IFtTeXN0ZW0uSU8u RmlsZV06OlJlYWRBbGxUZXh0KCRGLkZ1bGxOYW1lLCBbU3lzdGVtLlRleHQuRW5jb2RpbmddOjpV VEY4KSB8IENvbnZlcnRGcm9tLUpzb24NCiAgICAgICAgICAgICRMYXN0QmVhdCA9IFtEYXRlVGlt ZV06OlBhcnNlKCRMLmxhc3RCZWF0KS5Ub1VuaXZlcnNhbFRpbWUoKQ0KICAgICAgICAgICAgJEFn ZVNlYyA9ICgoR2V0LURhdGUpLlRvVW5pdmVyc2FsVGltZSgpIC0gJExhc3RCZWF0KS5Ub3RhbFNl Y29uZHMNCiAgICAgICAgICAgIGlmICgkQWdlU2VjIC1ndCAkc2NyaXB0OkNlbGxMb2NrU3RhbGVT ZWMpIHsNCiAgICAgICAgICAgICAgICB0cnkgeyBSZW1vdmUtSXRlbSAkRi5GdWxsTmFtZSAtRm9y Y2UgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGludWUgfSBjYXRjaCB7fQ0KICAgICAgICAgICAg ICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQogICAgICAgICAgICBbdm9pZF0kUmVzdWx0LkFk ZChbb3JkZXJlZF1Aew0KICAgICAgICAgICAgICAgIGRhdHVtICAgID0gJEwuZGF0dW0NCiAgICAg ICAgICAgICAgICBwZXJzb25JZCA9ICRMLnBlcnNvbklkDQogICAgICAgICAgICAgICAgdXNlcm5h bWUgPSAkTC51c2VybmFtZQ0KICAgICAgICAgICAgICAgIHJvbGxlICAgID0gJEwucm9sbGUNCiAg ICAgICAgICAgICAgICBsb2NrZWRBdCA9ICRMLmxvY2tlZEF0DQogICAgICAgICAgICAgICAgbGFz dEJlYXQgPSAkTC5sYXN0QmVhdA0KICAgICAgICAgICAgfSkNCiAgICAgICAgfSBjYXRjaCB7fQ0K ICAgIH0NCiAgICByZXR1cm4gLCRSZXN1bHQuVG9BcnJheSgpDQp9DQoNCiMgLS0tIENoYW5nZS1M b2c6IGFwcGVuZC1vbmx5IExpc3RlIGRlciBsZXR6dGVuIEFlbmRlcnVuZ2VuLCBmdWVyIExpdmUt U3luYyAtLS0NCiMgV0lDSFRJRzogUmVhZC1Nb2RpZnktV3JpdGUgaW5uZXJoYWxiIGVpbmVzIEZp bGVMb2NrLCBzb25zdCBnZWhlbiBiZWkNCiMgY29uY3VycmVudCBTY2hyZWliZXJuICh6d2VpIFVz ZXIgc3BlaWNoZXJuIGdsZWljaHplaXRpZykgRWludHJhZWdlDQojIHZlcmxvcmVuIOKAlCBsZXR6 dGVyIFNjaHJlaWJlciBnZXdpbm50Lg0KIyBIb2VjaHN0ZSBzZXEgaW0gQ2hhbmdlLUxvZyAoRklG Ty1zaWNoZXI6IGJsZWlidCBtb25vdG9uLCBhdWNoIHdlbm4gYWx0ZQ0KIyBFaW50cmFlZ2UgcmF1 c2ZhbGxlbikuIFNwaWVnZWx0IF9tYXhfY2hhbmdlX3NlcSBpbiBkZXYvc2VydmVyLnB5Lg0KZnVu Y3Rpb24gR2V0LU1heENoYW5nZVNlcSgkTG9nKSB7DQogICAgJG0gPSAwDQogICAgZm9yZWFjaCAo JGUgaW4gQCgkTG9nKSkgew0KICAgICAgICBpZiAoJG51bGwgLWVxICRlKSB7IGNvbnRpbnVlIH0N CiAgICAgICAgJHMgPSAkbnVsbA0KICAgICAgICBpZiAoJGUgLWlzIFtTeXN0ZW0uQ29sbGVjdGlv bnMuSURpY3Rpb25hcnldKSB7ICRzID0gJGVbJ3NlcSddIH0NCiAgICAgICAgZWxzZWlmICgkZS5Q U09iamVjdCAtYW5kICRlLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3NlcSddKSB7ICRzID0gJGUuc2Vx IH0NCiAgICAgICAgaWYgKCRudWxsIC1uZSAkcykgeyB0cnkgeyAkc3YgPSBbaW50XSRzOyBpZiAo JHN2IC1ndCAkbSkgeyAkbSA9ICRzdiB9IH0gY2F0Y2gge30gfQ0KICAgIH0NCiAgICByZXR1cm4g JG0NCn0NCg0KZnVuY3Rpb24gQWRkLUNoYW5nZUxvZ0VpbnRyYWcoJEtpbmQsICREZXRhaWxzKSB7 DQogICAgJGVpbnRyYWcgPSBbb3JkZXJlZF1Aew0KICAgICAgICB0cyAgICA9IChHZXQtRGF0ZSku VG9Vbml2ZXJzYWxUaW1lKCkuVG9TdHJpbmcoJ28nKQ0KICAgICAgICBraW5kICA9ICRLaW5kDQog ICAgICAgIHZvbiAgID0gIiREb21haW5cJFVzZXJuYW1lIg0KICAgICAgICByb2xsZSA9IChHZXQt UmVjaHRlKS5yb2xsZQ0KICAgIH0NCiAgICBpZiAoJERldGFpbHMpIHsNCiAgICAgICAgZm9yZWFj aCAoJGsgaW4gJERldGFpbHMuS2V5cykgeyAkZWludHJhZ1ska10gPSAkRGV0YWlsc1ska10gfQ0K ICAgIH0NCiAgICB0cnkgew0KICAgICAgICBJbnZva2UtV2l0aEZpbGVMb2NrICdjaGFuZ2VzLmpz b24nIHsNCiAgICAgICAgICAgICRsb2cgPSBSZWFkLUpzb25PYmplY3QgJ2NoYW5nZXMuanNvbicN CiAgICAgICAgICAgIGlmICgkbnVsbCAtZXEgJGxvZyAtb3IgLW5vdCAoJGxvZyAtaXMgW2FycmF5 XSkpIHsgJGxvZyA9IEAoKSB9DQogICAgICAgICAgICAjIE1vbm90b25lIHNlcSBmdWVyIGRlbiBy YWNlLWZyZWllbiBMaXZlLVN5bmMtQ3Vyc29yIChzdGF0dCBXYWxsLUNsb2NrKS4NCiAgICAgICAg ICAgICRlaW50cmFnWydzZXEnXSA9IChHZXQtTWF4Q2hhbmdlU2VxICRsb2cpICsgMQ0KICAgICAg ICAgICAgJG5ldSA9IEAoJGxvZykgKyBAKCRlaW50cmFnKQ0KICAgICAgICAgICAgaWYgKCRuZXUu Q291bnQgLWd0ICRzY3JpcHQ6Q2hhbmdlTG9nTWF4KSB7DQogICAgICAgICAgICAgICAgJG5ldSA9 ICRuZXVbKCRuZXUuQ291bnQgLSAkc2NyaXB0OkNoYW5nZUxvZ01heCkuLigkbmV1LkNvdW50IC0g MSldDQogICAgICAgICAgICB9DQogICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdjaGFuZ2Vz Lmpzb24nICRuZXUgfCBPdXQtTnVsbA0KICAgICAgICB9IHwgT3V0LU51bGwNCiAgICB9IGNhdGNo IHsNCiAgICAgICAgTG9nLUFwaSAoJ0NIQU5HRVMgV1JJVEUgRkVITEVSOiB7MH0nIC1mICRfLkV4 Y2VwdGlvbi5NZXNzYWdlKQ0KICAgIH0NCn0NCg0KIyBCYXRjaGVkLVZhcmlhbnRlIGZ1ZXIgQnVs ay1FbmRwb2ludHMgKHouQi4gL2FwaS9wbGFudW5nL3plbGxlbi1idWxrOg0KIyBEcmFnLUZpbGwg KyBMb2didWNoLVJlc3RvcmUpLiBTY2hyZWlidCBtZWhyZXJlIGNoYW5nZS1sb2ctRWludHJhZWdl DQojIGluIEVJTkVNIEZpbGUtTG9jayArIEVJTkVNIFJlYWQvV3JpdGUgZGVyIGNoYW5nZXMuanNv biDigJQgc29uc3Qgd3VlcmRlDQojIGVpbiAxNC1UYWdlLURyYWctRmlsbCAxNHggRmlsZS1Mb2Nr ICsgMTR4IFJlYWQvV3JpdGUgZXJ6ZXVnZW4uDQojIERldGFpbHNMaXN0ZSA9IExpc3RlIHZvbiBI YXNodGFibGVzLCBqZWRlIHRyYWVndCBkaWUgRGV0YWlsLUZlbGRlcg0KIyBmdWVyIGVpbmVuIGNo YW5nZSAoJ2RhdHVtJywgJ3BlcnNvbklkJywgJ2FsdCcsICduZXUnLCAuLi4pLiBGb3JtYXQNCiMg cHJvIEVpbnRyYWcgaXN0IGlkZW50aXNjaCB6dW0gU2luZ3VsYXItSGVscGVyIOKAlCBDbGllbnQt VmVyYXJiZWl0dW5nDQojIChzeW5jLmpzIHN5bmNDaGFuZ2VzQW53ZW5kZW4pIHVudmVyYWVuZGVy dC4NCmZ1bmN0aW9uIEFkZC1DaGFuZ2VMb2dFaW50cmFlZ2UoW3N0cmluZ10kS2luZCwgJERldGFp bHNMaXN0ZSkgew0KICAgIGlmICgtbm90ICREZXRhaWxzTGlzdGUpIHsgcmV0dXJuIH0NCiAgICAk bGlzdGVBcnIgPSBAKCREZXRhaWxzTGlzdGUpDQogICAgaWYgKCRsaXN0ZUFyci5Db3VudCAtZXEg MCkgeyByZXR1cm4gfQ0KICAgICR0cyAgICA9IChHZXQtRGF0ZSkuVG9Vbml2ZXJzYWxUaW1lKCku VG9TdHJpbmcoJ28nKQ0KICAgICR2b24gICA9ICIkRG9tYWluXCRVc2VybmFtZSINCiAgICAkcm9s bGUgPSAoR2V0LVJlY2h0ZSkucm9sbGUNCiAgICAkZWludHJhZWdlID0gTmV3LU9iamVjdCBTeXN0 ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0DQogICAgZm9yZWFjaCAoJGQgaW4gJGxpc3RlQXJyKSB7 DQogICAgICAgICRlID0gW29yZGVyZWRdQHsgdHMgPSAkdHM7IGtpbmQgPSAkS2luZDsgdm9uID0g JHZvbjsgcm9sbGUgPSAkcm9sbGUgfQ0KICAgICAgICBpZiAoJGQpIHsgZm9yZWFjaCAoJGsgaW4g JGQuS2V5cykgeyAkZVska10gPSAkZFska10gfSB9DQogICAgICAgIFt2b2lkXSRlaW50cmFlZ2Uu QWRkKCRlKQ0KICAgIH0NCiAgICB0cnkgew0KICAgICAgICBJbnZva2UtV2l0aEZpbGVMb2NrICdj aGFuZ2VzLmpzb24nIHsNCiAgICAgICAgICAgICRsb2cgPSBSZWFkLUpzb25PYmplY3QgJ2NoYW5n ZXMuanNvbicNCiAgICAgICAgICAgIGlmICgkbnVsbCAtZXEgJGxvZyAtb3IgLW5vdCAoJGxvZyAt aXMgW2FycmF5XSkpIHsgJGxvZyA9IEAoKSB9DQogICAgICAgICAgICAkYmFzZSA9IEdldC1NYXhD aGFuZ2VTZXEgJGxvZw0KICAgICAgICAgICAgJGkgPSAwDQogICAgICAgICAgICBmb3JlYWNoICgk ZSBpbiAkZWludHJhZWdlKSB7ICRlWydzZXEnXSA9ICRiYXNlICsgMSArICRpOyAkaSsrIH0NCiAg ICAgICAgICAgICRuZXUgPSBAKCRsb2cpICsgQCgkZWludHJhZWdlLlRvQXJyYXkoKSkNCiAgICAg ICAgICAgIGlmICgkbmV1LkNvdW50IC1ndCAkc2NyaXB0OkNoYW5nZUxvZ01heCkgew0KICAgICAg ICAgICAgICAgICRuZXUgPSAkbmV1WygkbmV1LkNvdW50IC0gJHNjcmlwdDpDaGFuZ2VMb2dNYXgp Li4oJG5ldS5Db3VudCAtIDEpXQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgV3JpdGUtSnNv bk9iamVjdCAnY2hhbmdlcy5qc29uJyAkbmV1IHwgT3V0LU51bGwNCiAgICAgICAgfSB8IE91dC1O dWxsDQogICAgfSBjYXRjaCB7DQogICAgICAgIExvZy1BcGkgKCdDSEFOR0VTIFdSSVRFIEZFSExF UjogezB9JyAtZiAkXy5FeGNlcHRpb24uTWVzc2FnZSkNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIEdl dC1DaGFuZ2VzU2luY2UoJFNlaXQpIHsNCiAgICAkbG9nID0gUmVhZC1Kc29uT2JqZWN0ICdjaGFu Z2VzLmpzb24nDQogICAgaWYgKCRudWxsIC1lcSAkbG9nKSB7IHJldHVybiBAKCkgfQ0KICAgIGlm IChbc3RyaW5nXTo6SXNOdWxsT3JXaGl0ZVNwYWNlKCRTZWl0KSkgeyByZXR1cm4gLEAoJGxvZykg fQ0KICAgIHRyeSB7DQogICAgICAgICRzZWl0RHQgPSBbRGF0ZVRpbWVdOjpQYXJzZSgkU2VpdCku VG9Vbml2ZXJzYWxUaW1lKCkNCiAgICAgICAgJHJlc3VsdCA9IE5ldy1PYmplY3QgU3lzdGVtLkNv bGxlY3Rpb25zLkFycmF5TGlzdA0KICAgICAgICBmb3JlYWNoICgkZSBpbiBAKCRsb2cpKSB7DQog ICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICRlRHQgPSBbRGF0ZVRpbWVdOjpQYXJz ZShbc3RyaW5nXSRlLnRzKS5Ub1VuaXZlcnNhbFRpbWUoKQ0KICAgICAgICAgICAgICAgIGlmICgk ZUR0IC1ndCAkc2VpdER0KSB7IFt2b2lkXSRyZXN1bHQuQWRkKCRlKSB9DQogICAgICAgICAgICB9 IGNhdGNoIHt9DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICwkcmVzdWx0LlRvQXJyYXkoKQ0K ICAgIH0gY2F0Y2ggew0KICAgICAgICByZXR1cm4gLEAoJGxvZykNCiAgICB9DQp9DQoNCiMgLS0t IEZ1ZWhydW5nc2tyYWZ0LVphZWhsdW5nIC8gVW50ZXJiZXNldHp1bmdzLVBydWVmdW5nIC0tLQ0K DQpmdW5jdGlvbiBHZXQtRnVlaHJ1bmdzU2NoaWNodExldHRlcigkV2VydCkgew0KICAgICMgTnVy IERHTCB6YWVobHQgYWxzIEZ1ZWhydW5nLiBXREYvRkJQIHNpbmQgUm9sbGVuIGltIERpZW5zdCwg YWJlciBrZWluZQ0KICAgICMgRnVlaHJ1bmdza3JhZWZ0ZSBmdWVyIGRpZSBNaW5kZXN0YmVzZXR6 dW5ncy1QcnVlZnVuZy4NCiAgICBpZiAoLW5vdCAkV2VydCAtb3IgJFdlcnQuTGVuZ3RoIC1sdCA1 KSB7IHJldHVybiAkbnVsbCB9DQogICAgJHByZWZpeCA9ICRXZXJ0LlN1YnN0cmluZygwLCAxKQ0K ICAgIGlmICgkcHJlZml4IC1uZSAnRicgLWFuZCAkcHJlZml4IC1uZSAnUycgLWFuZCAkcHJlZml4 IC1uZSAnTicpIHsgcmV0dXJuICRudWxsIH0NCiAgICBpZiAoJFdlcnQuU3Vic3RyaW5nKDIsIDMp IC1lcSAnREdMJykgeyByZXR1cm4gJHByZWZpeCB9DQogICAgcmV0dXJuICRudWxsDQp9DQoNCmZ1 bmN0aW9uIEdldC1GdWVocnVuZ3NDb3VudCgkUGxhbnVuZywgJERhdHVtLCAkU2NoaWNodCkgew0K ICAgIGlmICgkbnVsbCAtZXEgJFBsYW51bmcgLW9yICRudWxsIC1lcSAkUGxhbnVuZy5wZXJzb25l bikgeyByZXR1cm4gMCB9DQogICAgJGVpbnRyYWVnZSA9ICRudWxsDQogICAgaWYgKCRQbGFudW5n LlBTT2JqZWN0LlByb3BlcnRpZXNbJ2VpbnRyYWVnZSddIC1hbmQgJFBsYW51bmcuZWludHJhZWdl LlBTT2JqZWN0LlByb3BlcnRpZXNbJERhdHVtXSkgew0KICAgICAgICAkZWludHJhZWdlID0gJFBs YW51bmcuZWludHJhZWdlLiREYXR1bQ0KICAgIH0NCiAgICBpZiAoJG51bGwgLWVxICRlaW50cmFl Z2UpIHsgcmV0dXJuIDAgfQ0KICAgICRjb3VudCA9IDANCiAgICBmb3JlYWNoICgkcCBpbiBAKCRQ bGFudW5nLnBlcnNvbmVuKSkgew0KICAgICAgICBpZiAoJHAuUFNPYmplY3QuUHJvcGVydGllc1sn YWt0aXYnXSAtYW5kIC1ub3QgJHAuYWt0aXYpIHsgY29udGludWUgfQ0KICAgICAgICAkaWQgPSBb c3RyaW5nXSRwLmlkDQogICAgICAgIGlmICgtbm90ICRlaW50cmFlZ2UuUFNPYmplY3QuUHJvcGVy dGllc1skaWRdKSB7IGNvbnRpbnVlIH0NCiAgICAgICAgJHcgPSBbc3RyaW5nXSRlaW50cmFlZ2Uu JGlkDQogICAgICAgIGlmICgoR2V0LUZ1ZWhydW5nc1NjaGljaHRMZXR0ZXIgJHcpIC1lcSAkU2No aWNodCkgeyAkY291bnQrKyB9DQogICAgfQ0KICAgIHJldHVybiAkY291bnQNCn0NCg0KZnVuY3Rp b24gVGVzdC1JblZlcmJpbmRsaWNoa2VpdCgkRGF0dW1TdHIpIHsNCiAgICAjIFJlZ2VsOiBVbnRl cmJlc2V0enVuZ3MtQ2hlY2sgZ3JlaWZ0IG51ciBmdWVyIFRhZ2UgaW5uZXJoYWxiIGRlciBuYWVj aHN0ZW4NCiAgICAjIDE0IFRhZ2UgKGlua2wuIGhldXRlKS4gRGF2b3IvZGFuYWNoIGlzdCBkZXIg UGxhbnVuZ3MtS29ycmlkb3IgdW52ZXJiaW5kbGljaC4NCiAgICB0cnkgew0KICAgICAgICAkemll bCA9IFtkYXRldGltZV06OlBhcnNlRXhhY3QoJERhdHVtU3RyLCAneXl5eS1NTS1kZCcsICRudWxs KS5EYXRlDQogICAgICAgICRoZXV0ZSA9IChHZXQtRGF0ZSkuRGF0ZQ0KICAgICAgICAkZGlmZiA9 ICgkemllbCAtICRoZXV0ZSkuRGF5cw0KICAgICAgICByZXR1cm4gKCRkaWZmIC1nZSAwIC1hbmQg JGRpZmYgLWxlIDE0KQ0KICAgIH0gY2F0Y2ggeyByZXR1cm4gJGZhbHNlIH0NCn0NCg0KIyBQcmUt d2FybTogUmVhZC1Kc29uT2JqZWN0IHNjaG9uIGhpZXIgbGF1ZmVuIGxhc3NlbiwgZGFtaXQgZGVy IHRldXJlDQojIEVyc3QtUGFyc2UgKENvbnZlcnRGcm9tLUpzb24gZnVlciBkaWUgMjAwLUtCLUpT T05zKSB3YWVocmVuZCBkZXINCiMgU2VydmVyLVN0YXJ0LVBoYXNlIHBhc3NpZXJ0IOKAlCB1bmQg bmljaHQgenVtIFplaXRwdW5rdCwgYW4gZGVtIGRlcg0KIyBFbmRhbndlbmRlciBpbSBCcm93c2Vy IGF1ZiBkZW4gZXJzdGVuIC9hcGkvaW5mbyB3YXJ0ZXQuIFNwYXJ0IGF1Zg0KIyBCZWhvZXJkZW4t UENzIHNwdWVyYmFyIFdhcnRlemVpdCBiZWltIExvZ2luLg0KdHJ5IHsgUmVhZC1Kc29uT2JqZWN0 ICdhZG1pbi5qc29uJyAgIHwgT3V0LU51bGw7IExvZy1BcGkgJ1BSRVdBUk0gYWRtaW4uanNvbiBv aycgfSBjYXRjaCB7IExvZy1BcGkgKCdQUkVXQVJNIGFkbWluLmpzb24gRkVITEVSOiB7MH0nIC1m ICRfLkV4Y2VwdGlvbi5NZXNzYWdlKSB9DQp0cnkgeyBSZWFkLUpzb25PYmplY3QgJ3BsYW51bmcu anNvbicgfCBPdXQtTnVsbDsgTG9nLUFwaSAnUFJFV0FSTSBwbGFudW5nLmpzb24gb2snIH0gY2F0 Y2ggeyBMb2ctQXBpICgnUFJFV0FSTSBwbGFudW5nLmpzb24gRkVITEVSOiB7MH0nIC1mICRfLkV4 Y2VwdGlvbi5NZXNzYWdlKSB9DQoNCiMgPT09IFVwZGF0ZS1DaGVjayA9PT0NCiRzY3JpcHQ6VXBk YXRlQXZhaWxhYmxlICAgPSAkZmFsc2UNCiRzY3JpcHQ6UmVtb3RlVmVyc2lvbiAgICAgPSAnJw0K JHNjcmlwdDpVcGRhdGVMYXN0Q2hlY2tVdGMgPSBbZGF0ZXRpbWVdOjpNaW5WYWx1ZQ0KIyBCYXNp cy1VUkwgZGVzIERpc3QtUmVwb3MgKG9lZmZlbnRsaWNoZXMgR2l0ZWEgaGludGVyIGRlbSBQcm94 eSkuDQokc2NyaXB0OlVwZGF0ZUJhc2UgPSAnaHR0cHM6Ly91cGRhdGVzLnJoaW5vLm5ydy9yaGlu by9TdGF0dXNRdW9fVXBkYXRlcy9yYXcvYnJhbmNoL21haW4vVkkzREdMJw0KIyBJbi1BcHAtVXBk YXRlLUpvYiAoSHlicmlkKTogL2FwaS91cGRhdGUvc3RhcnQgc3RhcnRldCBkZW4gZXh0ZXJuZW4g dXBkYXRlLmJhdC0NCiMgTGF1ZiBhdXMgZGVyIEtBTk9OSVNDSEVOIFF1ZWxsZSAoQXNzZXRGYWxs YmFjay9TaGFyZSkuIERlciBsYXVmZW5kZSBTZXJ2ZXINCiMgYmVkaWVudCB3ZWl0ZXJoaW4gZGVu IGFsdGVuIGxva2FsZW4gQ29kZS1DYWNoZSAoUm9vdCA9IGFzc2V0c188dHM+KSAtPiBuYWNoDQoj IGVyZm9sZ3JlaWNoZW0gdXBkYXRlLmJhdCBpc3QgZWluIFNlcnZlci1ORVVTVEFSVCBub2V0aWcu IERlc2hhbGIgc3BpZWdlbG4gd2lyDQojIGhpZXIga2VpbmVuIEluLVByb2Nlc3MtQXBwbHktRm9y dHNjaHJpdHQsIHNvbmRlcm4gZGVuIFN0YXJ0LVp1c3RhbmQuDQokc2NyaXB0OlVwZGF0ZUpvYiA9 IFtvcmRlcmVkXUB7DQogICAgc3RhdGUgPSAnaWRsZSc7IHBlcmNlbnQgPSAwOyBzdGVwID0gJ2lk bGUnOyBtZXNzYWdlID0gJyc7IGVycm9yID0gJycNCiAgICBmcm9tVmVyc2lvbiA9ICcnOyB0b1Zl cnNpb24gPSAnJzsgc2VsZnRlc3QgPSBAKCk7IGxvZyA9IEAoKQ0KfQ0KDQojIEJlaG9lcmRlbi1Q cm94eSB2ZXJsYW5ndCBBdXRoZW50aWZpemllcnVuZyAtPiBvaG5lIG1pdGdlc2NoaWNrdGUgV2lu ZG93cy0NCiMgQ3JlZGVudGlhbHMgYW50d29ydGV0IGVyIG1pdCAoNDA3KSBQcm94eWF1dGhlbnRp Zml6aWVydW5nIGVyZm9yZGVybGljaCwgdW5kDQojIEpFREVSIGF1c2dlaGVuZGUgSFRUUFMtUmVx dWVzdCAoVXBkYXRlLUNoZWNrLCBzcGFldGVyIFVwZGF0ZS1Eb3dubG9hZCkNCiMgc2NoZWl0ZXJ0 LiBEZW0gU3lzdGVtLVByb3h5IGVpbm1hbGlnIGRpZSBhbmdlbWVsZGV0ZW4gRG9tYWVuZW4tQ3Jl ZGVudGlhbHMNCiMgKE5lZ290aWF0ZS9OVExNIGRlcyBsYXVmZW5kZW4gQmVudXR6ZXJzKSBtaXRn ZWJlbi4gV2lya3QgZ2xvYmFsIGZ1ZXINCiMgSW52b2tlLVdlYlJlcXVlc3QvV2ViQ2xpZW50IHVl YmVyIERlZmF1bHRXZWJQcm94eS4NCnRyeSB7DQogICAgJHN5c1Byb3h5ID0gW1N5c3RlbS5OZXQu V2ViUmVxdWVzdF06OkdldFN5c3RlbVdlYlByb3h5KCkNCiAgICBpZiAoJHN5c1Byb3h5KSB7DQog ICAgICAgICRzeXNQcm94eS5DcmVkZW50aWFscyA9IFtTeXN0ZW0uTmV0LkNyZWRlbnRpYWxDYWNo ZV06OkRlZmF1bHROZXR3b3JrQ3JlZGVudGlhbHMNCiAgICAgICAgW1N5c3RlbS5OZXQuV2ViUmVx dWVzdF06OkRlZmF1bHRXZWJQcm94eSA9ICRzeXNQcm94eQ0KICAgICAgICBMb2ctQXBpICdQUk9Y WTogU3lzdGVtLVByb3h5IG1pdCBhbmdlbWVsZGV0ZW4gV2luZG93cy1DcmVkZW50aWFscyBrb25m aWd1cmllcnQuJw0KICAgIH0NCn0gY2F0Y2ggew0KICAgIExvZy1BcGkgKCdQUk9YWS1TRVRVUCBG RUhMRVIgKFVwZGF0ZS1DaGVjayBldnRsLiBvaG5lIFByb3h5LUF1dGgpOiB7MH0nIC1mICRfLkV4 Y2VwdGlvbi5NZXNzYWdlKQ0KfQ0KDQpmdW5jdGlvbiBSZWZyZXNoLVVwZGF0ZUNoZWNrIHsNCiAg ICBpZiAoKFtkYXRldGltZV06OlV0Y05vdyAtICRzY3JpcHQ6VXBkYXRlTGFzdENoZWNrVXRjKS5U b3RhbE1pbnV0ZXMgLWx0IDYwKSB7IHJldHVybiB9DQogICAgJHNjcmlwdDpVcGRhdGVMYXN0Q2hl Y2tVdGMgPSBbZGF0ZXRpbWVdOjpVdGNOb3cNCiAgICAkbG9jYWxWZXIgPSAnMC4wLjAnDQogICAg JF92ZiA9IEpvaW4tUGF0aCAkUm9vdCAnVkVSU0lPTicNCiAgICBpZiAoVGVzdC1QYXRoIC1MaXRl cmFsUGF0aCAkX3ZmKSB7ICRsb2NhbFZlciA9IChHZXQtQ29udGVudCAtTGl0ZXJhbFBhdGggJF92 ZiAtUmF3KS5UcmltKCkgfQ0KICAgIHRyeSB7DQogICAgICAgICMgUHJveHktQXV0aCBsYWV1ZnQg dWViZXIgZGllIG9iZW4gZ2xvYmFsIGdlc2V0enRlbiBEZWZhdWx0V2ViUHJveHktDQogICAgICAg ICMgQ3JlZGVudGlhbHMuIFRpbWVvdXRTZWMgZ3Jvc3N6dWVnaWdlciAoOCBzdGF0dCAzIHMpLCB3 ZWlsIGRlciBOVExNLQ0KICAgICAgICAjIEhhbmRzaGFrZSBkdXJjaCBkZW4gUHJveHkgbGFlbmdl ciBkYXVlcm4ga2Fubi4NCiAgICAgICAgJHJ2ID0gKEludm9rZS1XZWJSZXF1ZXN0IC1VcmkgKCRz Y3JpcHQ6VXBkYXRlQmFzZSArICcvVkVSU0lPTicpIGANCiAgICAgICAgICAgICAgIC1Vc2VCYXNp Y1BhcnNpbmcgLVRpbWVvdXRTZWMgOCAtRXJyb3JBY3Rpb24gU3RvcCkuQ29udGVudC5UcmltKCkN CiAgICAgICAgJHNjcmlwdDpSZW1vdGVWZXJzaW9uICAgPSAkcnYNCiAgICAgICAgJHNjcmlwdDpV cGRhdGVBdmFpbGFibGUgPSAoW1N5c3RlbS5WZXJzaW9uXSRydiAtZ3QgW1N5c3RlbS5WZXJzaW9u XSRsb2NhbFZlcikNCiAgICAgICAgTG9nLUFwaSAoIlVQREFURS1DSEVDSzogbG9rYWw9JGxvY2Fs VmVyIHJlbW90ZT0kcnYgYXZhaWxhYmxlPSQoJHNjcmlwdDpVcGRhdGVBdmFpbGFibGUpIikNCiAg ICB9IGNhdGNoIHsNCiAgICAgICAgTG9nLUFwaSAoIlVQREFURS1DSEVDSzogbmljaHQgZXJyZWlj aGJhciAoJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkpIikNCiAgICB9DQp9DQpSZWZyZXNoLVVwZGF0 ZUNoZWNrDQoNCiMgTG9rYWxlIFZFUlNJT04gbGVzZW4gKGF1cyBkZW0gbGF1ZmVuZGVuIENvZGUt Q2FjaGUgPSAkUm9vdCkuDQpmdW5jdGlvbiBHZXQtTG9rYWxlVmVyc2lvbiB7DQogICAgJHZmID0g Sm9pbi1QYXRoICRSb290ICdWRVJTSU9OJw0KICAgIGlmIChUZXN0LVBhdGggLUxpdGVyYWxQYXRo ICR2ZikgeyByZXR1cm4gKEdldC1Db250ZW50IC1MaXRlcmFsUGF0aCAkdmYgLVJhdykuVHJpbSgp IH0NCiAgICByZXR1cm4gJzAuMC4wJw0KfQ0KDQojIENoYW5nZWxvZyBmdWVyIGRlbiBVcGRhdGUt QmVyZWljaDogYmV2b3J6dWd0IENIQU5HRUxPRy5tZCBhdXMgZGVtIERpc3QtUmVwbywNCiMgc29u c3QgZGllIERhdGVpbGlzdGUgYXVzIE1BTklGRVNULnR4dC4gU3BpZWdlbHQgX3VfZmV0Y2hfY2hh bmdlbG9nIChQeXRob24pLg0KZnVuY3Rpb24gR2V0LVVwZGF0ZUNoYW5nZWxvZygkbG9jYWxWLCAk cmVtb3RlVikgew0KICAgIHRyeSB7DQogICAgICAgICRtZCA9IChJbnZva2UtV2ViUmVxdWVzdCAt VXJpICgkc2NyaXB0OlVwZGF0ZUJhc2UgKyAnL0NIQU5HRUxPRy5tZCcpIGANCiAgICAgICAgICAg ICAgIC1Vc2VCYXNpY1BhcnNpbmcgLVRpbWVvdXRTZWMgOCAtRXJyb3JBY3Rpb24gU3RvcCkuQ29u dGVudA0KICAgICAgICBpZiAoJG1kIC1hbmQgJG1kLlRyaW0oKS5MZW5ndGggLWd0IDApIHsNCiAg ICAgICAgICAgIHJldHVybiBAeyBmb3JtYXQgPSAnbWFya2Rvd24nOyB0ZXh0ID0gJG1kIH0NCiAg ICAgICAgfQ0KICAgIH0gY2F0Y2gge30NCiAgICB0cnkgew0KICAgICAgICAkbWFuID0gKEludm9r ZS1XZWJSZXF1ZXN0IC1VcmkgKCRzY3JpcHQ6VXBkYXRlQmFzZSArICcvTUFOSUZFU1QudHh0Jykg YA0KICAgICAgICAgICAgICAgIC1Vc2VCYXNpY1BhcnNpbmcgLVRpbWVvdXRTZWMgOCAtRXJyb3JB Y3Rpb24gU3RvcCkuQ29udGVudA0KICAgICAgICAkZmlsZXMgPSBAKCRtYW4gLXNwbGl0ICJgbiIg fCBGb3JFYWNoLU9iamVjdCB7DQogICAgICAgICAgICAkcGFydHMgPSAkXyAtc3BsaXQgImB0Ig0K ICAgICAgICAgICAgaWYgKCRwYXJ0cy5Db3VudCAtZ2UgMikgeyAkcGFydHNbMV0uVHJpbSgpIH0N CiAgICAgICAgfSB8IFdoZXJlLU9iamVjdCB7ICRfIH0gfCBTb3J0LU9iamVjdCAtVW5pcXVlKQ0K ICAgICAgICByZXR1cm4gQHsgZm9ybWF0ID0gJ2ZpbGVzJzsgZmlsZXMgPSAkZmlsZXMNCiAgICAg ICAgICAgICAgICAgIHRleHQgPSAoJ1ZlcnNpb24gezB9IC0+IHsxfSAtIHsyfSBEYXRlaWVuIHdl cmRlbiBha3R1YWxpc2llcnQuJyAtZiAkbG9jYWxWLCAkcmVtb3RlViwgJGZpbGVzLkNvdW50KSB9 DQogICAgfSBjYXRjaCB7DQogICAgICAgIHJldHVybiBAeyBmb3JtYXQgPSAndGV4dCc7IHRleHQg PSAoJ1ZlcnNpb24gezB9IC0+IHsxfScgLWYgJGxvY2FsViwgJHJlbW90ZVYpIH0NCiAgICB9DQp9 DQoNCiMgS2Fub25pc2NoZSBDb2RlLVF1ZWxsZSA9IGRlciBPcmRuZXIsIGluIGRlbSB1cGRhdGUu YmF0IGxpZWd0IHVuZCBkZXIgcGVyc2lzdGVudA0KIyBha3R1YWxpc2llcnQgd2lyZC4gRGVyIGxh dWZlbmRlIFNlcnZlci1Db2RlIGltIGxva2FsZW4gQ2FjaGUgKCRSb290ID0NCiMgYXNzZXRzXzx0 cz4pIGlzdCBOSUNIVCBkaWUgcmljaHRpZ2UgU3RlbGxlIChhKSBlciB3aXJkIGJlaW0gbmFlY2hz dGVuIGRnbC5iYXQtDQojIFN0YXJ0IHVlYmVyc2NocmllYmVuIHVuZCAoYikgZGdsLmJhdCBrb3Bp ZXJ0IHVwZGF0ZS5iYXQgZ2FyIG5pY2h0IGRvcnRoaW4uDQojIEthbmRpZGF0ZW4gaW4gUHJpb3Jp dGFldDsgZ2Vub21tZW4gd2lyZCBkZXIgRVJTVEUsIGRlciB3aXJrbGljaCBlaW5lIHVwZGF0ZS5i YXQNCiMgZW50aGFlbHQ6DQojICAgMS4gQXNzZXRGYWxsYmFjayAodm9tIExhdW5jaGVyIGdlc2V0 enQgPSBTaGFyZS1RdWVsbGUpIC0gb2Z0IGFiZXIgbGVlcg0KIyAgIDIuIEVsdGVybm9yZG5lciB2 b24gRGF0YURpciAtIFN0YW5kYXJkLUluc3RhbGw6IERhdGFEaXI9PFF1ZWxsZT5cZGF0YSwNCiMg ICAgICBhbHNvIFF1ZWxsZSA9IFBhcmVudCAoZG9ydCBsaWVnZW4gZGdsLmJhdC9zZXJ2ZXIucHMx L3VwZGF0ZS5iYXQpDQojICAgMy4gUm9vdCAoZXBoZW1lcmVyIENhY2hlIC0gbGV0enRlIFJldHR1 bmcpDQpmdW5jdGlvbiBHZXQtVXBkYXRlUXVlbGxlIHsNCiAgICAka2FuZGlkYXRlbiA9IEAoKQ0K ICAgIGlmICgkc2NyaXB0OkFzc2V0RmFsbGJhY2spIHsgJGthbmRpZGF0ZW4gKz0gJHNjcmlwdDpB c3NldEZhbGxiYWNrIH0NCiAgICBpZiAoJERhdGFEaXIpIHsNCiAgICAgICAgJGRwID0gU3BsaXQt UGF0aCAtUGFyZW50ICREYXRhRGlyDQogICAgICAgIGlmICgkZHApIHsgJGthbmRpZGF0ZW4gKz0g JGRwIH0NCiAgICB9DQogICAgJGthbmRpZGF0ZW4gKz0gJFJvb3QNCiAgICBmb3JlYWNoICgkayBp biAka2FuZGlkYXRlbikgew0KICAgICAgICBpZiAoJGsgLWFuZCAoVGVzdC1QYXRoIC1MaXRlcmFs UGF0aCAoSm9pbi1QYXRoICRrICd1cGRhdGUuYmF0JykpKSB7IHJldHVybiAkayB9DQogICAgfQ0K ICAgIHJldHVybiAkUm9vdA0KfQ0KDQojIEluaXRpYWwtU25hcHNob3QgZGVyIE9mZmxpbmUtV29j aGVucGxhbi5odG1sIGJlaW0gU3RhcnQgcmVnZW5lcmllcmVuDQojIChhdWNoIHdlbm4gc2VpdCBk ZW0gbGV0enRlbiBMYXVmIG5pY2h0cyBnZWFlbmRlcnQgd3VyZGUsIGhhdCBzaWNoIHouQi4NCiMg ZGFzIERhdHVtIHZlcnNjaG9iZW4gdW5kIGRlciBIZXV0ZS1NYXJrZXIgemVpZ3Qgc29uc3QgZGll IGFsdGUgV29jaGUpLg0KdHJ5IHsgR2VuZXJhdGUtV29jaGVucGxhblNuYXBzaG90IHwgT3V0LU51 bGwgfSBjYXRjaCB7IExvZy1BcGkgKCdTTkFQU0hPVCAoaW5pdGlhbCkgRkVITEVSOiB7MH0nIC1m ICRfLkV4Y2VwdGlvbi5NZXNzYWdlKSB9DQoNCiMgLS0tIFNlcnZlciBzdGFydGVuIC0tLQ0KJExp c3RlbmVyID0gTmV3LU9iamVjdCBTeXN0ZW0uTmV0Lkh0dHBMaXN0ZW5lcg0KJExpc3RlbmVyLlBy ZWZpeGVzLkFkZCgiaHR0cDovL2xvY2FsaG9zdDokUG9ydC8iKQ0KdHJ5IHsNCiAgICAkTGlzdGVu ZXIuU3RhcnQoKQ0KfSBjYXRjaCB7DQogICAgV3JpdGUtSG9zdCAoJ0ZFSExFUjogTGlzdGVuZXIg YXVmIFBvcnQgezB9IGthbm4gbmljaHQgc3RhcnRlbi4nIC1mICRQb3J0KSAtRm9yZWdyb3VuZENv bG9yIFJlZA0KICAgIFdyaXRlLUhvc3QgJF8NCiAgICBMb2ctQXBpICgnTElTVEVORVIgRkVITEVS OiB7MH0nIC1mICRfLkV4Y2VwdGlvbi5NZXNzYWdlKQ0KICAgIFN0YXJ0LVNsZWVwIC1TZWNvbmRz IDUNCiAgICBleGl0IDENCn0NCg0KV3JpdGUtSG9zdCAoJ1ZJMyBER0wtUGxhbnVuZyBhdWYgaHR0 cDovL2xvY2FsaG9zdDp7MH0nIC1mICRQb3J0KQ0KV3JpdGUtSG9zdCAoJ1Jvb3Q6ICAgIHswfScg LWYgJFJvb3QpDQpXcml0ZS1Ib3N0ICgnRGF0YURpcjogezB9JyAtZiAkRGF0YURpcikNCldyaXRl LUhvc3QgKCdMb2c6ICAgICB7MH0nIC1mICRzY3JpcHQ6QXBpTG9nKQ0KDQojIC0tLSBIZWFydGJl YXQtV2F0Y2hkb2cgLS0tDQokV2F0Y2hkb2dUaW1lciA9IE5ldy1PYmplY3QgU3lzdGVtLlRpbWVy cy5UaW1lcg0KJFdhdGNoZG9nVGltZXIuSW50ZXJ2YWwgPSA1MDAwDQokV2F0Y2hkb2dUaW1lci5B dXRvUmVzZXQgPSAkdHJ1ZQ0KUmVnaXN0ZXItT2JqZWN0RXZlbnQgLUlucHV0T2JqZWN0ICRXYXRj aGRvZ1RpbWVyIC1FdmVudE5hbWUgRWxhcHNlZCAtQWN0aW9uIHsNCiAgICAkZWxhcHNlZCA9IChH ZXQtRGF0ZSkgLSAkc2NyaXB0Okxhc3RIZWFydGJlYXQNCiAgICBpZiAoJGVsYXBzZWQuVG90YWxT ZWNvbmRzIC1ndCAzMCkgew0KICAgICAgICBpZiAoLW5vdCAkc2NyaXB0OlNodXRkb3duUGVuZGlu Zykgew0KICAgICAgICAgICAgJHNjcmlwdDpTaHV0ZG93blBlbmRpbmcgPSAkdHJ1ZQ0KICAgICAg ICB9IGVsc2VpZiAoJGVsYXBzZWQuVG90YWxTZWNvbmRzIC1ndCAzNSkgew0KICAgICAgICAgICAg JExpc3RlbmVyLlN0b3AoKQ0KICAgICAgICAgICAgW0Vudmlyb25tZW50XTo6RXhpdCgwKQ0KICAg ICAgICB9DQogICAgfQ0KfSB8IE91dC1OdWxsDQokV2F0Y2hkb2dUaW1lci5TdGFydCgpDQoNCiMg LS0tIFJlcXVlc3QtTG9vcCAtLS0NCnRyeSB7DQogICAgd2hpbGUgKCRMaXN0ZW5lci5Jc0xpc3Rl bmluZykgew0KICAgICAgICAkQXN5bmNSZXN1bHQgPSAkTGlzdGVuZXIuQmVnaW5HZXRDb250ZXh0 KCRudWxsLCAkbnVsbCkNCiAgICAgICAgd2hpbGUgKC1ub3QgJEFzeW5jUmVzdWx0LkFzeW5jV2Fp dEhhbmRsZS5XYWl0T25lKDEwMDApKSB7IH0NCiAgICAgICAgJENvbnRleHQgPSAkTGlzdGVuZXIu RW5kR2V0Q29udGV4dCgkQXN5bmNSZXN1bHQpDQogICAgICAgICRSZXF1ZXN0ID0gJENvbnRleHQu UmVxdWVzdA0KICAgICAgICAkUmVzcG9uc2UgPSAkQ29udGV4dC5SZXNwb25zZQ0KICAgICAgICAk TWV0aG9kID0gJFJlcXVlc3QuSHR0cE1ldGhvZA0KICAgICAgICAkUGF0aCA9ICRSZXF1ZXN0LlVy bC5BYnNvbHV0ZVBhdGgNCiAgICAgICAgTG9nLUFwaSAoJ1JFUSB7MH0gezF9JyAtZiAkTWV0aG9k LCAkUGF0aCkNCg0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgIyA9PT09PSBDT1JTIFByZWZs aWdodCA9PT09PQ0KICAgICAgICAgICAgaWYgKCRNZXRob2QgLWVxICdPUFRJT05TJykgew0KICAg ICAgICAgICAgICAgICRSZXNwb25zZS5TdGF0dXNDb2RlID0gMjA0DQogICAgICAgICAgICAgICAg QWRkLVNlY3VyaXR5SGVhZGVycyAkUmVzcG9uc2UNCiAgICAgICAgICAgICAgICAkUmVzcG9uc2Uu T3V0cHV0U3RyZWFtLkNsb3NlKCkNCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAg ICAgfQ0KDQogICAgICAgICAgICAjID09PT09IENocm9taXVtIERldlRvb2xzLVByb2JlID09PT09 DQogICAgICAgICAgICAjIENocm9taXVtLUJyb3dzZXIgZnJhZ2VuIGJlaW0gT2VmZm5lbiBkZXIg RGV2VG9vbHMgYXV0b21hdGlzY2gNCiAgICAgICAgICAgICMgLy53ZWxsLWtub3duL2FwcHNwZWNp ZmljL2NvbS5jaHJvbWUuZGV2dG9vbHMuanNvbiBhYi4gRGllIERhdGVpDQogICAgICAgICAgICAj IGV4aXN0aWVydCBoaWVyIGJld3Vzc3QgbmljaHQg4oCUIGZydWVoZXIgZ2FiIGRhcyBlaW4gNDA0 IChTdG9lci0NCiAgICAgICAgICAgICMgcmF1c2NoZW4gaW0gTG9nKS4gV2lyIGFudHdvcnRlbiBt aXQgMjA0IE5vIENvbnRlbnQ7IGRpZSBSRVEtWmVpbGUNCiAgICAgICAgICAgICMgb2JlbiBibGVp YnQgZXJoYWx0ZW4sIGRhcyBMb2cgd2lyZCBhbHNvIHdlaXRlciBnZXNjaHJpZWJlbi4NCiAgICAg ICAgICAgIGlmICgkUGF0aCAtZXEgJy8ud2VsbC1rbm93bi9hcHBzcGVjaWZpYy9jb20uY2hyb21l LmRldnRvb2xzLmpzb24nKSB7DQogICAgICAgICAgICAgICAgJFJlc3BvbnNlLlN0YXR1c0NvZGUg PSAyMDQNCiAgICAgICAgICAgICAgICBBZGQtU2VjdXJpdHlIZWFkZXJzICRSZXNwb25zZQ0KICAg ICAgICAgICAgICAgICRSZXNwb25zZS5PdXRwdXRTdHJlYW0uQ2xvc2UoKQ0KICAgICAgICAgICAg ICAgIExvZy1BcGkgJ0RFVlRPT0xTIDIwNCAud2VsbC1rbm93bi9hcHBzcGVjaWZpYy9jb20uY2hy b21lLmRldnRvb2xzLmpzb24gKENocm9taXVtLVByb2JlLCBrZWluIEZlaGxlciknDQogICAgICAg ICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgIyA9PT09PSBT WVNURU0gPT09PT0NCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvaGVhcnRiZWF0JyAt YW5kICRNZXRob2QgLWVxICdQT1NUJykgew0KICAgICAgICAgICAgICAgICMgT3JpZ2luLUNoZWNr IChTcHJpbnQgMSDigJQgU2ljaGVyaGVpdHMtTm90YnJlbXNlIDIwMjYtMDUtMjgpOg0KICAgICAg ICAgICAgICAgICMgSGVhcnRiZWF0IGFremVwdGllcnQgbnVyIFJlcXVlc3RzIHZvbiBkZXIgZWln ZW5lbiBBcHAuIEFuZGVyZQ0KICAgICAgICAgICAgICAgICMgbG9rYWxlIFByb3plc3NlIGtvZW5u dGVuIHNvbnN0IHBlciBMb29wIGRpZSBBdXRvLVNodXRkb3duLUxvZ2lrDQogICAgICAgICAgICAg ICAgIyB1bWdlaGVuIG9kZXIgZGVuIFNlcnZlciBiZXd1c3N0IGFtIExlYmVuIGhhbHRlbi4gQnJv d3NlciBzZW5kZXQNCiAgICAgICAgICAgICAgICAjIE9yaWdpbiBhdXRvbWF0aXNjaDsgZmVobGVu ZGVyIEhlYWRlciB3aXJkIHRvbGVyaWVyZW4gKHNlbmRCZWFjb24NCiAgICAgICAgICAgICAgICAj IGluIG1hbmNoZW4gQnJvd3Nlcm4pLCBhYmVyIEZBTFNDSEVSIE9yaWdpbiB3aXJkIGFiZ2VsZWhu dC4NCiAgICAgICAgICAgICAgICAkb3JpZ2luID0gJFJlcXVlc3QuSGVhZGVyc1snT3JpZ2luJ10N CiAgICAgICAgICAgICAgICBpZiAoJG9yaWdpbiAtYW5kICRvcmlnaW4gLW5lICRzY3JpcHQ6Q29y c09yaWdpbikgew0KICAgICAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25zZSAnT3Jp Z2luIG5pY2h0IGVybGF1YnQnIDQwMw0KICAgICAgICAgICAgICAgICAgICBMb2ctQXBpICgnSEVB UlRCRUFUIDQwMyBPcmlnaW49ezB9JyAtZiAkb3JpZ2luKQ0KICAgICAgICAgICAgICAgICAgICBj b250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkc2NyaXB0Okxhc3RI ZWFydGJlYXQgPSBHZXQtRGF0ZQ0KICAgICAgICAgICAgICAgICRzY3JpcHQ6U2h1dGRvd25QZW5k aW5nID0gJGZhbHNlDQogICAgICAgICAgICAgICAgIyBhZG1pblZlcnNpb24gLyBwbGFudW5nVmVy c2lvbjogbXRpbWUgYWxzIFRpY2tzLiBFcmxhdWJ0IGRlbQ0KICAgICAgICAgICAgICAgICMgQ2xp ZW50LCBSZWNodGUtIGJ6dy4gUGVyc29uZW4tQWVuZGVydW5nZW4gaW0gSGludGVyZ3J1bmQgenUN CiAgICAgICAgICAgICAgICAjIGVya2VubmVuIHVuZCBaLnJlY2h0ZS9aLnBsYW51bmcgbmV1IHp1 IGxhZGVuLCBvaG5lIGRhc3MgZGVyDQogICAgICAgICAgICAgICAgIyBVc2VyIEY1IGRydWVja2Vu IG11c3MuIHBsYW51bmdWZXJzaW9uIGRlY2t0IGluc2Jlc29uZGVyZQ0KICAgICAgICAgICAgICAg ICMgZWRpdFJlY2h0ZS9zZWhlbi1VcGRhdGVzIGFiLCBkaWUgZGVyIExpdmUtU3luYy1EZWx0YSBu aWNodA0KICAgICAgICAgICAgICAgICMgbGllZmVydCAoQ2hlcnJ5LVBpY2sgMWFlZmUyNiBCdWcg IzMpLg0KICAgICAgICAgICAgICAgICRhZG1pblZlciAgID0gMA0KICAgICAgICAgICAgICAgICRw bGFudW5nVmVyID0gMA0KICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAg ICRhZG1pbkZpbGUgPSBKb2luLVBhdGggJERhdGFEaXIgJ2FkbWluLmpzb24nDQogICAgICAgICAg ICAgICAgICAgIGlmIChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRhZG1pbkZpbGUpIHsNCiAgICAg ICAgICAgICAgICAgICAgICAgICRhZG1pblZlciA9IChHZXQtSXRlbSAtTGl0ZXJhbFBhdGggJGFk bWluRmlsZSkuTGFzdFdyaXRlVGltZVV0Yy5UaWNrcw0KICAgICAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgICAgICRwbGFudW5nRmlsZSA9IEpvaW4tUGF0aCAkRGF0YURpciAncGxh bnVuZy5qc29uJw0KICAgICAgICAgICAgICAgICAgICBpZiAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0 aCAkcGxhbnVuZ0ZpbGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRwbGFudW5nVmVyID0g KEdldC1JdGVtIC1MaXRlcmFsUGF0aCAkcGxhbnVuZ0ZpbGUpLkxhc3RXcml0ZVRpbWVVdGMuVGlj a3MNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gY2F0Y2gge30NCiAg ICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0YXR1cyA9ICdvayc7 IGFkbWluVmVyc2lvbiA9ICRhZG1pblZlcjsgcGxhbnVuZ1ZlcnNpb24gPSAkcGxhbnVuZ1ZlciB9 DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlm ICgkUGF0aCAtZXEgJy9hcGkvc2h1dGRvd24nIC1hbmQgJE1ldGhvZCAtZXEgJ1BPU1QnKSB7DQog ICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBzdGF0dXMgPSAnc2h1 dGRvd24nIH0NCiAgICAgICAgICAgICAgICBTdGFydC1TbGVlcCAtTWlsbGlzZWNvbmRzIDMwMA0K ICAgICAgICAgICAgICAgICRMaXN0ZW5lci5TdG9wKCkNCiAgICAgICAgICAgICAgICBbRW52aXJv bm1lbnRdOjpFeGl0KDApDQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJFBhdGggLWVx ICcvYXBpL2luZm8nIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsNCiAgICAgICAgICAgICAgICBS ZWZyZXNoLVVwZGF0ZUNoZWNrDQogICAgICAgICAgICAgICAgJHIgPSBHZXQtUmVjaHRlDQogICAg ICAgICAgICAgICAgJGluZm9PYmogPSBAew0KICAgICAgICAgICAgICAgICAgICBiZW51dHplciAg ICAgICAgICAgICAgICA9ICIkRG9tYWluXCRVc2VybmFtZSINCiAgICAgICAgICAgICAgICAgICAg cm9sbGUgICAgICAgICAgICAgICAgICAgPSAkci5yb2xsZQ0KICAgICAgICAgICAgICAgICAgICBp c3RTdXBlclVzZXIgICAgICAgICAgICA9ICRyLmlzdFN1cGVyVXNlcg0KICAgICAgICAgICAgICAg ICAgICBpc3RGYWNoYXVmc2ljaHQgICAgICAgICA9ICRyLmlzdEZhY2hhdWZzaWNodA0KICAgICAg ICAgICAgICAgICAgICBpc3RHZXNhbXR2ZXJhbnR3b3J0bGljaCA9ICRyLmlzdEdlc2FtdHZlcmFu dHdvcnRsaWNoDQogICAgICAgICAgICAgICAgICAgIHNlaGVuICAgICAgICAgICAgICAgICAgID0g JHIuc2VoZW4NCiAgICAgICAgICAgICAgICAgICAgYWRtaW5TdWJ0YWJzICAgICAgICAgICAgPSAk ci5hZG1pblN1YnRhYnMNCiAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGlrQmVyZWljaGUgICAg ICAgPSAkci5zdGF0aXN0aWtCZXJlaWNoZQ0KICAgICAgICAgICAgICAgICAgICBlZGl0aWVyZW4g ICAgICAgICAgICAgICA9ICRyLmVkaXRpZXJlbiAgICMgbnVsbCBiZWkgU3VwZXJVc2VyID0gImFs bGVzIGVybGF1YnQiDQogICAgICAgICAgICAgICAgICAgIG1laW5lUGVyc29uSWQgICAgICAgICAg ID0gJHIubWVpbmVQZXJzb25JZA0KICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgICAgICAgICAg ICAgICAgICA9ICRzY3JpcHQ6Q29yc09yaWdpbg0KICAgICAgICAgICAgICAgICAgICB1cGRhdGVB dmFpbGFibGUgICAgICAgICA9ICRzY3JpcHQ6VXBkYXRlQXZhaWxhYmxlDQogICAgICAgICAgICAg ICAgICAgIHJlbW90ZVZlcnNpb24gICAgICAgICAgID0gJHNjcmlwdDpSZW1vdGVWZXJzaW9uDQog ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9u c2UgJGluZm9PYmoNCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KICAg ICAgICAgICAgIyA9PT09PT09PT09PT09PT09PT09PT0gVVBEQVRFOiBTVEFUVVMgKG51ciBTdXBl clVzZXIpID09PT09PT09PT09PT09PT09PT09PQ0KICAgICAgICAgICAgIyBCZWhlYnQgZGVuIDQw NCBhdWYgL2FwaS91cGRhdGUvc3RhdHVzLiBMaWVzdCBWZXJzaW9uICsgQ2hhbmdlbG9nDQogICAg ICAgICAgICAjIHVlYmVyIGRlbiAoamV0enQgcHJveHktYXV0aGVudGlmaXppZXJ0ZW4pIERpc3Qt UmVwby1adWdhbmcuDQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL3VwZGF0ZS9zdGF0 dXMnIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAo VGVzdC1Jc3RTdXBlclVzZXIpKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdOdXIgU3VwZXJVc2Vy LicgNDAzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJHNjcmlwdDpVcGRhdGVMYXN0Q2hl Y2tVdGMgPSBbZGF0ZXRpbWVdOjpNaW5WYWx1ZSAgIyBGb3JjZS1SZWZyZXNoDQogICAgICAgICAg ICAgICAgUmVmcmVzaC1VcGRhdGVDaGVjaw0KICAgICAgICAgICAgICAgICRsdiA9IEdldC1Mb2th bGVWZXJzaW9uDQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAew0K ICAgICAgICAgICAgICAgICAgICB1cGRhdGVBdmFpbGFibGUgPSAkc2NyaXB0OlVwZGF0ZUF2YWls YWJsZQ0KICAgICAgICAgICAgICAgICAgICBsb2NhbFZlcnNpb24gICAgPSAkbHYNCiAgICAgICAg ICAgICAgICAgICAgcmVtb3RlVmVyc2lvbiAgID0gJHNjcmlwdDpSZW1vdGVWZXJzaW9uDQogICAg ICAgICAgICAgICAgICAgIGNoYW5nZWxvZyAgICAgICA9IChHZXQtVXBkYXRlQ2hhbmdlbG9nICRs diAkc2NyaXB0OlJlbW90ZVZlcnNpb24pDQogICAgICAgICAgICAgICAgICAgIG1haW50ZW5hbmNl ICAgICA9IEB7IGxvY2tlZCA9ICRmYWxzZTsgcmVhc29uID0gJycgfQ0KICAgICAgICAgICAgICAg ICAgICBqb2IgICAgICAgICAgICAgPSBAew0KICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUg PSAkc2NyaXB0OlVwZGF0ZUpvYi5zdGF0ZTsgcGVyY2VudCA9ICRzY3JpcHQ6VXBkYXRlSm9iLnBl cmNlbnQNCiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXAgPSAkc2NyaXB0OlVwZGF0ZUpvYi5z dGVwOyBtZXNzYWdlID0gJHNjcmlwdDpVcGRhdGVKb2IubWVzc2FnZQ0KICAgICAgICAgICAgICAg ICAgICAgICAgZXJyb3IgPSAkc2NyaXB0OlVwZGF0ZUpvYi5lcnJvcjsgZnJvbVZlcnNpb24gPSAk c2NyaXB0OlVwZGF0ZUpvYi5mcm9tVmVyc2lvbg0KICAgICAgICAgICAgICAgICAgICAgICAgdG9W ZXJzaW9uID0gJHNjcmlwdDpVcGRhdGVKb2IudG9WZXJzaW9uDQogICAgICAgICAgICAgICAgICAg IH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAg ICAgIH0NCiAgICAgICAgICAgICMgPT09PT09PT09PT09PT09PT09PT09IFVQREFURTogUFJPR1JF U1MgKG51ciBTdXBlclVzZXIpID09PT09PT09PT09PT09PT09PT09PQ0KICAgICAgICAgICAgaWYg KCRQYXRoIC1lcSAnL2FwaS91cGRhdGUvcHJvZ3Jlc3MnIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcp IHsNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1Jc3RTdXBlclVzZXIpKSB7IFNlbmQt RXJyb3IgJFJlc3BvbnNlICdOdXIgU3VwZXJVc2VyLicgNDAzOyBjb250aW51ZSB9DQogICAgICAg ICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAew0KICAgICAgICAgICAgICAgICAg ICBzdGF0ZSA9ICRzY3JpcHQ6VXBkYXRlSm9iLnN0YXRlOyBwZXJjZW50ID0gJHNjcmlwdDpVcGRh dGVKb2IucGVyY2VudA0KICAgICAgICAgICAgICAgICAgICBzdGVwID0gJHNjcmlwdDpVcGRhdGVK b2Iuc3RlcDsgbWVzc2FnZSA9ICRzY3JpcHQ6VXBkYXRlSm9iLm1lc3NhZ2UNCiAgICAgICAgICAg ICAgICAgICAgZXJyb3IgPSAkc2NyaXB0OlVwZGF0ZUpvYi5lcnJvcjsgZnJvbVZlcnNpb24gPSAk c2NyaXB0OlVwZGF0ZUpvYi5mcm9tVmVyc2lvbg0KICAgICAgICAgICAgICAgICAgICB0b1ZlcnNp b24gPSAkc2NyaXB0OlVwZGF0ZUpvYi50b1ZlcnNpb247IHNlbGZ0ZXN0ID0gQCgkc2NyaXB0OlVw ZGF0ZUpvYi5zZWxmdGVzdCkNCiAgICAgICAgICAgICAgICAgICAgbG9nID0gQCgkc2NyaXB0OlVw ZGF0ZUpvYi5sb2cgfCBTZWxlY3QtT2JqZWN0IC1MYXN0IDYwKQ0KICAgICAgICAgICAgICAgICAg ICBtYWludGVuYW5jZSA9IEB7IGxvY2tlZCA9ICRmYWxzZTsgcmVhc29uID0gJycgfQ0KICAgICAg ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KICAg ICAgICAgICAgIyA9PT09PT09PT09PT09PT09PT09PT0gVVBEQVRFOiBTVEFSVCAobnVyIFN1cGVy VXNlcikgPT09PT09PT09PT09PT09PT09PT09DQogICAgICAgICAgICAjIEh5YnJpZDogc3RhcnRl dCBkaWUgZ2V0ZXN0ZXRlLCBzaGFyZS16aWVsZW5kZSB1cGRhdGUuYmF0IGFscyBlaWdlbmVuDQog ICAgICAgICAgICAjIFByb3plc3MgYXVzIGRlciBLQU5PTklTQ0hFTiBRdWVsbGUuIHVwZGF0ZS5i YXQgc3RvcHB0K3N0YXJ0ZXQgZGVuDQogICAgICAgICAgICAjIFNlcnZlciBzZWxic3QgKHN0b3Au YmF0L2RnbC5iYXQpLiBXaXIga29lbm5lbiBkZW4gZXh0ZXJuZW4gTGF1ZiBuaWNodA0KICAgICAg ICAgICAgIyBpbiBFY2h0emVpdCB2ZXJmb2xnZW4gLT4gSm9iIG1lbGRldCAnZXh0ZXJuIGdlc3Rh cnRldCcsIGRlciBDbGllbnQNCiAgICAgICAgICAgICMgemVpZ3QgZGVuIEhpbndlaXMgdW5kIGxh ZWR0IG5hY2ggZGVtIE5ldXN0YXJ0IG5ldS4NCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9h cGkvdXBkYXRlL3N0YXJ0JyAtYW5kICRNZXRob2QgLWVxICdQT1NUJykgew0KICAgICAgICAgICAg ICAgIGlmICgtbm90IChUZXN0LUlzdFN1cGVyVXNlcikpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2Ug J051ciBTdXBlclVzZXIgZGFyZiBVcGRhdGVzIHN0YXJ0ZW4uJyA0MDM7IGNvbnRpbnVlIH0NCiAg ICAgICAgICAgICAgICAkcXVlbGxlID0gR2V0LVVwZGF0ZVF1ZWxsZQ0KICAgICAgICAgICAgICAg ICRiYXQgPSBKb2luLVBhdGggJHF1ZWxsZSAndXBkYXRlLmJhdCcNCiAgICAgICAgICAgICAgICBp ZiAoLW5vdCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkYmF0KSkgew0KICAgICAgICAgICAgICAg ICAgICAkbXNnID0gJ3VwZGF0ZS5iYXQgbmljaHQgZ2VmdW5kZW4gKFF1ZWxsZTogJyArICRxdWVs bGUgKyAnKS4gVXBkYXRlIGJpdHRlIHVlYmVyIHVwZGF0ZS5iYXQgaW4gZGVyIFBvcnRhbC1XdXJ6 ZWwgYXVzZnVlaHJlbi4nDQogICAgICAgICAgICAgICAgICAgICRzY3JpcHQ6VXBkYXRlSm9iLnN0 YXRlICAgPSAnZmFpbGVkJw0KICAgICAgICAgICAgICAgICAgICAkc2NyaXB0OlVwZGF0ZUpvYi5z dGVwICAgID0gJ2ZhaWxlZCcNCiAgICAgICAgICAgICAgICAgICAgJHNjcmlwdDpVcGRhdGVKb2Iu ZXJyb3IgICA9ICRtc2cNCiAgICAgICAgICAgICAgICAgICAgJHNjcmlwdDpVcGRhdGVKb2IubWVz c2FnZSA9ICRtc2cNCiAgICAgICAgICAgICAgICAgICAgTG9nLUFwaSAoJ1VQREFURS1TVEFSVCBG RUhMRVI6ICcgKyAkbXNnKQ0KICAgICAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25z ZSAkbXNnIDUwMA0KICAgICAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgICAg IH0NCiAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAkdHMgPSAoR2V0 LURhdGUgLUZvcm1hdCAneXl5eS1NTS1kZFRISDptbTpzcycpDQogICAgICAgICAgICAgICAgICAg ICMgc3RkaW4gYXVzIG51bCAoZWluIEFyZ3VtZW50TGlzdC1TdHJpbmcsIHZvbiBTdGFydC1Qcm9j ZXNzDQogICAgICAgICAgICAgICAgICAgICMgdmVyYmF0aW0gYW4gY21kKSAtPiBkYXMgYWJzY2hs aWVzc2VuZGUgJ3BhdXNlJyBpbiB1cGRhdGUuYmF0DQogICAgICAgICAgICAgICAgICAgICMgbGll c3QgRU9GIHVuZCBrZWhydCBzb2ZvcnQgenVydWVjaywga2VpbiBoYWVuZ2VuZGVyIFByb3plc3Mu DQogICAgICAgICAgICAgICAgICAgIFN0YXJ0LVByb2Nlc3MgLUZpbGVQYXRoICdjbWQuZXhlJyAt QXJndW1lbnRMaXN0ICgnL2MgIicgKyAkYmF0ICsgJyIgPG51bCcpIGANCiAgICAgICAgICAgICAg ICAgICAgICAgIC1Xb3JraW5nRGlyZWN0b3J5ICRxdWVsbGUgLVdpbmRvd1N0eWxlIEhpZGRlbg0K ICAgICAgICAgICAgICAgICAgICAkc2NyaXB0OlVwZGF0ZUpvYi5zdGF0ZSAgICAgICA9ICdydW5u aW5nJw0KICAgICAgICAgICAgICAgICAgICAkc2NyaXB0OlVwZGF0ZUpvYi5zdGVwICAgICAgICA9 ICdleHRlcm4nDQogICAgICAgICAgICAgICAgICAgICRzY3JpcHQ6VXBkYXRlSm9iLnBlcmNlbnQg ICAgID0gNQ0KICAgICAgICAgICAgICAgICAgICAkc2NyaXB0OlVwZGF0ZUpvYi5lcnJvciAgICAg ICA9ICcnDQogICAgICAgICAgICAgICAgICAgICRzY3JpcHQ6VXBkYXRlSm9iLmZyb21WZXJzaW9u ID0gKEdldC1Mb2thbGVWZXJzaW9uKQ0KICAgICAgICAgICAgICAgICAgICAkc2NyaXB0OlVwZGF0 ZUpvYi50b1ZlcnNpb24gICA9ICRzY3JpcHQ6UmVtb3RlVmVyc2lvbg0KICAgICAgICAgICAgICAg ICAgICAkc2NyaXB0OlVwZGF0ZUpvYi5zZWxmdGVzdCAgICA9IEAoKQ0KICAgICAgICAgICAgICAg ICAgICAkc2NyaXB0OlVwZGF0ZUpvYi5tZXNzYWdlICAgICA9ICdFeHRlcm5lciBVcGRhdGVyICh1 cGRhdGUuYmF0KSBnZXN0YXJ0ZXQuIERlciBTZXJ2ZXIgd2lyZCBnbGVpY2ggZ2VzdG9wcHQgdW5k IG5ldSBnZXN0YXJ0ZXQgLSBiaXR0ZSBkYW5hY2ggZGllIFNlaXRlIG5ldSBsYWRlbi4nDQogICAg ICAgICAgICAgICAgICAgICRzY3JpcHQ6VXBkYXRlSm9iLmxvZyAgICAgICAgID0gQChAeyB0ID0g JHRzOyBtc2cgPSAndXBkYXRlLmJhdCBhdXMgJyArICRxdWVsbGUgKyAnIGdlc3RhcnRldC4nIH0p DQogICAgICAgICAgICAgICAgICAgIExvZy1BcGkgKCdVUERBVEUtU1RBUlQ6IHVwZGF0ZS5iYXQg YXVzIHswfSBnZXN0YXJ0ZXQgKFN1cGVyVXNlcikuJyAtZiAkcXVlbGxlKQ0KICAgICAgICAgICAg ICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0YXJ0ZWQgPSAkdHJ1ZSB9DQog ICAgICAgICAgICAgICAgfSBjYXRjaCB7DQogICAgICAgICAgICAgICAgICAgICRzY3JpcHQ6VXBk YXRlSm9iLnN0YXRlID0gJ2ZhaWxlZCcNCiAgICAgICAgICAgICAgICAgICAgJHNjcmlwdDpVcGRh dGVKb2IuZXJyb3IgPSAkXy5FeGNlcHRpb24uTWVzc2FnZQ0KICAgICAgICAgICAgICAgICAgICBM b2ctQXBpICgnVVBEQVRFLVNUQVJUIEZFSExFUjogezB9JyAtZiAkXy5FeGNlcHRpb24uTWVzc2Fn ZSkNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgKCdVcGRhdGUtU3Rh cnQgZmVobGdlc2NobGFnZW46ICcgKyAkXy5FeGNlcHRpb24uTWVzc2FnZSkgNTAwDQogICAgICAg ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQogICAg ICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL2RlYnVnJyAtYW5kICRNZXRob2QgLWVxICdHRVQn KSB7DQogICAgICAgICAgICAgICAgJGRhdCA9IEB7IFJvb3QgPSAkUm9vdDsgRGF0YURpciA9ICRE YXRhRGlyOyBGaWxlcyA9IEB7fSB9DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGYgaW4gJ2Fk bWluLmpzb24nLCdwbGFudW5nLmpzb24nLCdsb2didWNoLmpzb24nKSB7DQogICAgICAgICAgICAg ICAgICAgICRmcCA9IEpvaW4tUGF0aCAkRGF0YURpciAkZg0KICAgICAgICAgICAgICAgICAgICAk aW5mbyA9IEB7IGV4aXN0cyA9IChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRmcCkgfQ0KICAgICAg ICAgICAgICAgICAgICBpZiAoJGluZm8uZXhpc3RzKSB7ICRpbmZvLnNpemUgPSAoR2V0LUl0ZW0g LUxpdGVyYWxQYXRoICRmcCkuTGVuZ3RoIH0NCiAgICAgICAgICAgICAgICAgICAgJGRhdC5GaWxl c1skZl0gPSAkaW5mbw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAjIFJlY2h0 ZS1JbmZvICh3aWNodGlnIGZ1ZXIgQWRtaW4tVGFiLVNpY2h0YmFya2VpdCkNCiAgICAgICAgICAg ICAgICAkZGF0LkJlbnV0emVyID0gIiREb21haW5cJFVzZXJuYW1lIg0KICAgICAgICAgICAgICAg IHRyeSB7DQogICAgICAgICAgICAgICAgICAgICRyID0gR2V0LVJlY2h0ZQ0KICAgICAgICAgICAg ICAgICAgICAkZGF0LlJlY2h0ZSA9IEB7DQogICAgICAgICAgICAgICAgICAgICAgICByb2xsZSAg ICAgICAgICAgPSAkci5yb2xsZQ0KICAgICAgICAgICAgICAgICAgICAgICAgaXN0U3VwZXJVc2Vy ICAgID0gJHIuaXN0U3VwZXJVc2VyDQogICAgICAgICAgICAgICAgICAgICAgICBpc3RGYWNoYXVm c2ljaHQgPSAkci5pc3RGYWNoYXVmc2ljaHQNCiAgICAgICAgICAgICAgICAgICAgICAgIHNlaGVu ICAgICAgICAgICA9ICRyLnNlaGVuDQogICAgICAgICAgICAgICAgICAgICAgICBtZWluZVBlcnNv bklkICAgPSAkci5tZWluZVBlcnNvbklkDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgICAgICB9IGNhdGNoIHsNCiAgICAgICAgICAgICAgICAgICAgJGRhdC5SZWNodGUgPSBAeyBm ZWhsZXIgPSAkXy5FeGNlcHRpb24uTWVzc2FnZSB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgICMgQWRtaW4uanNvbiBLdXJ6Y2hlY2sNCiAgICAgICAgICAgICAgICAkYWRtaW5P YmogPSBSZWFkLUpzb25PYmplY3QgJ2FkbWluLmpzb24nDQogICAgICAgICAgICAgICAgaWYgKCRu dWxsIC1lcSAkYWRtaW5PYmopIHsNCiAgICAgICAgICAgICAgICAgICAgJGRhdC5BZG1pbkpzb25M ZXNiYXIgPSAkZmFsc2UNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAg ICAgICAkYW56U1UgPSAwDQogICAgICAgICAgICAgICAgICAgIGlmICgkYWRtaW5PYmouc3VwZXJV c2VyKSB7ICRhbnpTVSA9IEAoJGFkbWluT2JqLnN1cGVyVXNlcikuQ291bnQgfQ0KICAgICAgICAg ICAgICAgICAgICAkc3VLZW5udW5nZW4gPSBAKCkNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRh ZG1pbk9iai5zdXBlclVzZXIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRz IGluIEAoJGFkbWluT2JqLnN1cGVyVXNlcikpIHsgJHN1S2VubnVuZ2VuICs9IFtzdHJpbmddJHMu bndLZW5udW5nIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAk ZGF0LkFkbWluSnNvbkxlc2JhciA9ICR0cnVlDQogICAgICAgICAgICAgICAgICAgICRkYXQuU3Vw ZXJVc2VyQW56YWhsID0gJGFuelNVDQogICAgICAgICAgICAgICAgICAgICRkYXQuU3VwZXJVc2Vy S2VubnVuZ2VuID0gJHN1S2VubnVuZ2VuDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgJGRhdA0KICAgICAgICAgICAgICAgIGNvbnRp bnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMgPT09PT0gU1lOQy1DSEVDSyA9PT09 PQ0KICAgICAgICAgICAgIyBWZXJnbGVpY2h0IHBybyBXZWItQXNzZXQgZGllIERhdGVpLUdyb2Vz c2UgaW4gZGVyIFNvdXJjZSAoZ2VwdWxsdGVzDQogICAgICAgICAgICAjIFJlcG8sICRzY3JpcHQ6 QXNzZXRGYWxsYmFjaykgZ2VnZW4gZGllIERhdGVpLUdyb2Vzc2UgaW0gQXNzZXQtQ2FjaGUNCiAg ICAgICAgICAgICMgKCRSb290LCBSb2JvY29weS1aaWVsKS4gRXJrZW5udCB1bnZvbGxzdGFlbmRp Z2UgUm9ib2NvcHktVWViZXItDQogICAgICAgICAgICAjIHRyYWd1bmdlbiwgdmVyYWx0ZXRlIEFz c2V0LUNhY2hlcyB1bmQgZmVobGVuZGUgRGF0ZWllbi4NCiAgICAgICAgICAgIGlmICgkUGF0aCAt ZXEgJy9hcGkvc3luYy1jaGVjay9kYXRlaWVuJyAtYW5kICRNZXRob2QgLWVxICdHRVQnKSB7DQog ICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtSXN0QWRtaW4pKSB7IFNlbmQtRXJyb3IgJFJl c3BvbnNlICdLZWluZSBBZG1pbi1SZWNodGUnIDQwMzsgY29udGludWUgfQ0KICAgICAgICAgICAg ICAgIGlmICgtbm90ICRzY3JpcHQ6QXNzZXRGYWxsYmFjaykgew0KICAgICAgICAgICAgICAgICAg ICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7DQogICAgICAgICAgICAgICAgICAgICAgICBv ayA9ICRmYWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgZmVobGVyID0gJ0Fzc2V0RmFsbGJh Y2sgbmljaHQga29uZmlndXJpZXJ0IOKAlCBTb3VyY2UtUGZhZCB1bmJla2FubnQsIFZlcmdsZWlj aCBuaWNodCBtb2VnbGljaC4gKFNlcnZlciB3dXJkZSBvaG5lIC1Bc3NldEZhbGxiYWNrIGdlc3Rh cnRldC4pJw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGNvbnRp bnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICR3ZWJFeHQgPSAnLmpzJywn LmNzcycsJy5odG1sJywnLmljbycsJy5wbmcnLCcuanBnJywnLmpwZWcnLCcuc3ZnJw0KICAgICAg ICAgICAgICAgICRpZ25vcmllcmVUb3AgPSBAKCcuZ2l0JywnZG9jcycsJ2RldicsJ3Rlc3RzJywn ZGF0YScsJ2NhY2hlJykNCiAgICAgICAgICAgICAgICAkZGF0ZWllbiA9IEAoKQ0KICAgICAgICAg ICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICRhbGxlID0gR2V0LUNoaWxkSXRlbSAt TGl0ZXJhbFBhdGggJHNjcmlwdDpBc3NldEZhbGxiYWNrIC1SZWN1cnNlIC1GaWxlIC1FcnJvckFj dGlvbiBTaWxlbnRseUNvbnRpbnVlDQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRmIGlu ICRhbGxlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcmVsID0gJGYuRnVsbE5hbWUuU3Vi c3RyaW5nKCRzY3JpcHQ6QXNzZXRGYWxsYmFjay5MZW5ndGggKyAxKSAtcmVwbGFjZSAnXFwnLCAn LycNCiAgICAgICAgICAgICAgICAgICAgICAgICR0b3AgPSAoJHJlbCAtc3BsaXQgJy8nKVswXQ0K ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpZ25vcmllcmVUb3AgLWNvbnRhaW5zICR0b3Ap IHsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGV4dCA9ICRmLkV4dGVuc2lv bi5Ub0xvd2VyKCkNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkd2ViRXh0IC1ub3Rjb250 YWlucyAkZXh0KSB7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICRkYXRlaWVu ICs9ICRyZWwNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAjIGRh dGEvLVNvbmRlcmZhZWxsZTogbnVyIGRpZSB6d2VpIFRhcm4tTWFya3VwcywgYWxsZXMgYW5kZXJl DQogICAgICAgICAgICAgICAgICAgICMgbGllZ3QgaW0gRGF0YURpciAoYWRtaW4uanNvbi9wbGFu dW5nLmpzb24vLi4uKSB1bmQgd2lyZCBuaWNodA0KICAgICAgICAgICAgICAgICAgICAjIGluIGRl biBBc3NldC1DYWNoZSBrb3BpZXJ0Lg0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZXh0 cmEgaW4gJ2RhdGEvbWFpbmZyYW1lLmh0bWwnLCdkYXRhL3Nhbml0aXplci5odG1sJykgew0KICAg ICAgICAgICAgICAgICAgICAgICAgJHNyY0V4dHJhID0gSm9pbi1QYXRoICRzY3JpcHQ6QXNzZXRG YWxsYmFjayAkZXh0cmENCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChUZXN0LVBhdGggLUxp dGVyYWxQYXRoICRzcmNFeHRyYSkgeyAkZGF0ZWllbiArPSAkZXh0cmEgfQ0KICAgICAgICAgICAg ICAgICAgICB9DQogICAgICAgICAgICAgICAgfSBjYXRjaCB7DQogICAgICAgICAgICAgICAgICAg IFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgb2sgPSAkZmFsc2U7IGZlaGxlciA9ICgnU291 cmNlLVZlcnplaWNobmlzIG5pY2h0IGxlc2JhcjogJyArICRfLkV4Y2VwdGlvbi5NZXNzYWdlKSB9 DQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgICRkYXRlaWVuID0gJGRhdGVpZW4gfCBTb3J0LU9iamVjdCAtVW5pcXVlDQogICAg ICAgICAgICAgICAgJGVpbnRyYWVnZSA9IEAoKQ0KICAgICAgICAgICAgICAgICRhbnpPayA9IDA7 ICRhbnpEaWZmID0gMDsgJGFuekZlaGx0QXNzZXQgPSAwOyAkYW56RmVobHRTb3VyY2UgPSAwDQog ICAgICAgICAgICAgICAgZm9yZWFjaCAoJHJlbCBpbiAkZGF0ZWllbikgew0KICAgICAgICAgICAg ICAgICAgICAkYXNzZXRQZmFkICA9IEpvaW4tUGF0aCAkUm9vdCAkcmVsDQogICAgICAgICAgICAg ICAgICAgICRzb3VyY2VQZmFkID0gSm9pbi1QYXRoICRzY3JpcHQ6QXNzZXRGYWxsYmFjayAkcmVs DQogICAgICAgICAgICAgICAgICAgICRhc3NldEJ5dGVzICA9ICRudWxsDQogICAgICAgICAgICAg ICAgICAgICRzb3VyY2VCeXRlcyA9ICRudWxsDQogICAgICAgICAgICAgICAgICAgIGlmIChUZXN0 LVBhdGggLUxpdGVyYWxQYXRoICRhc3NldFBmYWQpICB7ICRhc3NldEJ5dGVzICA9IChHZXQtSXRl bSAtTGl0ZXJhbFBhdGggJGFzc2V0UGZhZCkuTGVuZ3RoIH0NCiAgICAgICAgICAgICAgICAgICAg aWYgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJHNvdXJjZVBmYWQpIHsgJHNvdXJjZUJ5dGVzID0g KEdldC1JdGVtIC1MaXRlcmFsUGF0aCAkc291cmNlUGZhZCkuTGVuZ3RoIH0NCiAgICAgICAgICAg ICAgICAgICAgJHN0YXR1cyA9ICd1bmJla2FubnQnDQogICAgICAgICAgICAgICAgICAgIGlmICgk bnVsbCAtZXEgJHNvdXJjZUJ5dGVzIC1hbmQgJG51bGwgLWVxICRhc3NldEJ5dGVzKSB7ICRzdGF0 dXMgPSAnYmVpZGVfZmVobGVuJyB9DQogICAgICAgICAgICAgICAgICAgIGVsc2VpZiAoJG51bGwg LWVxICRhc3NldEJ5dGVzKSAgeyAkc3RhdHVzID0gJ2Fzc2V0X2ZlaGx0JzsgICRhbnpGZWhsdEFz c2V0KysgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlaWYgKCRudWxsIC1lcSAkc291cmNlQnl0 ZXMpIHsgJHN0YXR1cyA9ICdzb3VyY2VfZmVobHQnOyAkYW56RmVobHRTb3VyY2UrKyB9DQogICAg ICAgICAgICAgICAgICAgIGVsc2VpZiAoJGFzc2V0Qnl0ZXMgLWVxICRzb3VyY2VCeXRlcykgeyAk c3RhdHVzID0gJ29rJzsgJGFuek9rKysgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsgJHN0 YXR1cyA9ICdncm9lc3NlX2RpZmYnOyAkYW56RGlmZisrIH0NCiAgICAgICAgICAgICAgICAgICAg JGVpbnRyYWVnZSArPSBbb3JkZXJlZF1Aew0KICAgICAgICAgICAgICAgICAgICAgICAgcGZhZCAg ICAgICAgPSAkcmVsDQogICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VCeXRlcyA9ICRzb3Vy Y2VCeXRlcw0KICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRCeXRlcyAgPSAkYXNzZXRCeXRl cw0KICAgICAgICAgICAgICAgICAgICAgICAgZGlmZkJ5dGVzICAgPSBpZiAoJG51bGwgLW5lICRz b3VyY2VCeXRlcyAtYW5kICRudWxsIC1uZSAkYXNzZXRCeXRlcykgeyAkYXNzZXRCeXRlcyAtICRz b3VyY2VCeXRlcyB9IGVsc2UgeyAkbnVsbCB9DQogICAgICAgICAgICAgICAgICAgICAgICBzdGF0 dXMgICAgICA9ICRzdGF0dXMNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg IH0NCiAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7DQogICAgICAg ICAgICAgICAgICAgIG9rICAgICAgICAgID0gJHRydWUNCiAgICAgICAgICAgICAgICAgICAgc291 cmNlUm9vdCAgPSAkc2NyaXB0OkFzc2V0RmFsbGJhY2sNCiAgICAgICAgICAgICAgICAgICAgYXNz ZXRSb290ICAgPSAkUm9vdA0KICAgICAgICAgICAgICAgICAgICBhbnphaGwgICAgICA9ICRlaW50 cmFlZ2UuQ291bnQNCiAgICAgICAgICAgICAgICAgICAgYW56T2sgICAgICAgPSAkYW56T2sNCiAg ICAgICAgICAgICAgICAgICAgYW56RGlmZiAgICAgPSAkYW56RGlmZg0KICAgICAgICAgICAgICAg ICAgICBhbnpGZWhsdEFzc2V0ICA9ICRhbnpGZWhsdEFzc2V0DQogICAgICAgICAgICAgICAgICAg IGFuekZlaGx0U291cmNlID0gJGFuekZlaGx0U291cmNlDQogICAgICAgICAgICAgICAgICAgIGRh dGVpZW4gICAgID0gJGVpbnRyYWVnZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAjID09PT09IEFETUlOID09 PT09DQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL2FkbWluJyAtYW5kICRNZXRob2Qg LWVxICdHRVQnKSB7DQogICAgICAgICAgICAgICAgJHR4dCA9IFJlYWQtVGV4dEZpbGUgJ2FkbWlu Lmpzb24nDQogICAgICAgICAgICAgICAgaWYgKCRudWxsIC1lcSAkdHh0KSB7IFNlbmQtRXJyb3Ig JFJlc3BvbnNlICdhZG1pbi5qc29uIG5pY2h0IGdlZnVuZGVuJyA0MDQgfQ0KICAgICAgICAgICAg ICAgIGVsc2UgeyBTZW5kLUpzb25UZXh0ICRSZXNwb25zZSAkdHh0IH0NCiAgICAgICAgICAgICAg ICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2Fw aS9hZG1pbicgLWFuZCAkTWV0aG9kIC1lcSAnUFVUJykgew0KICAgICAgICAgICAgICAgIGlmICgt bm90IChUZXN0LURhcmZCZXJlaWNoICdhZG1pbmlzdHJhdGlvbicpKSB7IFNlbmQtRXJyb3IgJFJl c3BvbnNlICdLZWluZSBBZG1pbi1SZWNodGUnIDQwMzsgY29udGludWUgfQ0KICAgICAgICAgICAg ICAgICRib2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0DQogICAgICAgICAgICAgICAgaWYgKC1ub3Qg JGJvZHkpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0FuZnJhZ2UgenUgZ3Jvc3MnIDQxMzsgY29u dGludWUgfQ0KICAgICAgICAgICAgICAgICRkYXRlbiA9ICRib2R5IHwgQ29udmVydEZyb20tSnNv bg0KICAgICAgICAgICAgICAgIGlmICgkZGF0ZW4uUFNPYmplY3QuUHJvcGVydGllc1snYWRtaW5L ZW5udW5nZW4nXSkgeyAkZGF0ZW4uUFNPYmplY3QuUHJvcGVydGllcy5SZW1vdmUoJ2FkbWluS2Vu bnVuZ2VuJykgfQ0KICAgICAgICAgICAgICAgICMgUFMtNS4xLVVud3JhcC1TY2h1dHo6IGFsbGUg TGlzdGVuLUZlbGRlciwgZGllIGRlciBDbGllbnQgdW50ZXINCiAgICAgICAgICAgICAgICAjIEFE TUlOX0xJU1RfRkVMREVSIGZ1ZWhydCwgc2VydmVyLXNlaXRpZyBhbHMgQXJyYXlzIGVyendpbmdl bi4NCiAgICAgICAgICAgICAgICAjIFNvbnN0IHdlcmRlbiBMaXN0ZW4gbWl0IG51ciBlaW5lbSBF bGVtZW50IHZvbSBQb3dlclNoZWxsLUpTT04tDQogICAgICAgICAgICAgICAgIyBSb3VuZHRyaXAg enVtIEVpbnplbC1PYmpla3QgZW50cGFja3QgdW5kIGNsaWVudC1zZWl0aWcga29tbXQNCiAgICAg ICAgICAgICAgICAjIGFkbWluTGlzdGVuTm9ybWFsaXNpZXJlbiBnZ2YuIHp1IHNwYWV0ICh6LkIu IG5hY2ggSG90LVJlbG9hZCkuDQogICAgICAgICAgICAgICAgTm9ybWFsaXNpZXJlLUFkbWluTGlz dGVuICRkYXRlbg0KICAgICAgICAgICAgICAgICMgU2VydmVyLXNlaXRpZ2UgUmljaC1UZXh0LVNh bml0aXNpZXJ1bmcgKFN0b3JlZC1YU1MtU2NodXR6KS4NCiAgICAgICAgICAgICAgICBJbnZva2Ut QWRtaW5SaWNodGV4dFNhbml0aXplICRkYXRlbg0KICAgICAgICAgICAgICAgICRpc3RTVSA9IFRl c3QtSXN0U3VwZXJVc2VyDQogICAgICAgICAgICAgICAgJGxvY2tFcmdlYm5pcyA9ICRudWxsDQog ICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgJGxvY2tFcmdlYm5pcyA9 IEludm9rZS1XaXRoRmlsZUxvY2sgJ2FkbWluLmpzb24nIHsNCiAgICAgICAgICAgICAgICAgICAg ICAgICMgTnVyIFN1cGVyVXNlciBkYXJmIGRpZSBSb2xsZW4tTGlzdGVuIHN1cGVyVXNlci9mYWNo YXVmc2ljaHQNCiAgICAgICAgICAgICAgICAgICAgICAgICMgdWViZXIgL2FwaS9hZG1pbiBhZW5k ZXJuIOKAlCBzb25zdCBrb2VubnRlIGplbWFuZCBzaWNoIHNlbGJzdA0KICAgICAgICAgICAgICAg ICAgICAgICAgIyB6dW0gU3VwZXJVc2VyIGJlZm9lcmRlcm4gdW5kIGRhbWl0IGRpZSBzZXBhcmF0 ZW4gR3VhcmRzIGF1Zg0KICAgICAgICAgICAgICAgICAgICAgICAgIyAvYXBpL2FkbWluL3N1cGVy dXNlciBiencuIC9hcGkvYWRtaW4vZmFjaGF1ZnNpY2h0IHVtZ2VoZW4uDQogICAgICAgICAgICAg ICAgICAgICAgICAjIGFkbWluS2VubnVuZ2VuIGlzdCBnZW5lcmVsbCBhYmdlc2NoYWZmdCB1bmQg d2lyZCBlbnRmZXJudC4NCiAgICAgICAgICAgICAgICAgICAgICAgICMgUmVhZCBkZXIgYWx0ZW4g V2VydGUgbXVzcyBJTk5FUkhBTEIgZGVzIExvY2tzIHBhc3NpZXJlbiwNCiAgICAgICAgICAgICAg ICAgICAgICAgICMgZGFtaXQgZGllIFNVL0ZhY2hhdWZzaWNodC1MaXN0ZW4gYXRvbWFyIGVyaGFs dGVuIGJsZWliZW4uDQogICAgICAgICAgICAgICAgICAgICAgICAkYWx0ID0gUmVhZC1Kc29uT2Jq ZWN0ICdhZG1pbi5qc29uJw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC1ub3QgJGlzdFNV KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGZlbGQgaW4gJ3N1cGVy VXNlcicsJ2ZhY2hhdWZzaWNodCcsJ2RpcmVrdGlvbnNsZWl0dW5nJywnZnVlaHJ1bmdzc3RlbGxl Jykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGFsdCAtYW5kICRhbHQu UFNPYmplY3QuUHJvcGVydGllc1skZmVsZF0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmICgkZGF0ZW4uUFNPYmplY3QuUHJvcGVydGllc1skZmVsZF0pIHsgJGRhdGVu LiRmZWxkID0gJGFsdC4kZmVsZCB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlbHNlIHsgJGRhdGVuIHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAkZmVsZCAtTm90 ZVByb3BlcnR5VmFsdWUgJGFsdC4kZmVsZCAtRm9yY2UgfQ0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9IGVsc2VpZiAoJGRhdGVuLlBTT2JqZWN0LlByb3BlcnRpZXNbJGZlbGRdKSB7 DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGF0ZW4uUFNPYmplY3QuUHJv cGVydGllcy5SZW1vdmUoJGZlbGQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgICAgICAgICAjIEtleS1VbmlvbjogbmljaHQgbWl0Z2VzZW5kZXRl IFRvcC1MZXZlbC1LZXlzIGVyaGFsdGVuLg0KICAgICAgICAgICAgICAgICAgICAgICAgW3ZvaWRd KE1lcmdlLUFkbWluS2V5cyAkYWx0ICRkYXRlbikNCiAgICAgICAgICAgICAgICAgICAgICAgIFdy aXRlLUpzb25PYmplY3QgJ2FkbWluLmpzb24nICRkYXRlbiB8IE91dC1OdWxsDQogICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gQHsgb2sgPSAkdHJ1ZSB9DQogICAgICAgICAgICAgICAgICAg IH0NCiAgICAgICAgICAgICAgICB9IGNhdGNoIHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1F cnJvciAkUmVzcG9uc2UgKCJMb2NrLUZlaGxlcjogJF8iKSA1MDM7IGNvbnRpbnVlDQogICAgICAg ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICgtbm90ICRsb2NrRXJnZWJuaXMub2spIHsg U2VuZC1FcnJvciAkUmVzcG9uc2UgJGxvY2tFcmdlYm5pcy5tc2cgJGxvY2tFcmdlYm5pcy5zdGF0 dXM7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICBXcml0ZS1Mb2dFaW50cmFnICdhZG1pbi5n ZWFlbmRlcnQnIEB7fQ0KICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2Ug QHsgc3RhdHVzID0gJ2dlc3BlaWNoZXJ0JyB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAg ICAgICAgICAgIH0NCg0KICAgICAgICAgICAgIyBTdXBlci1Vc2VyLUxpc3RlOiBudXIgU3VwZXJV c2VyIGRhcmYgU3VwZXJVc2VyIHZlcndhbHRlbg0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAn L2FwaS9hZG1pbi9zdXBlcnVzZXInIC1hbmQgJE1ldGhvZCAtZXEgJ1BVVCcpIHsNCiAgICAgICAg ICAgICAgICBpZiAoLW5vdCAoVGVzdC1Jc3RTdXBlclVzZXIpKSB7IFNlbmQtRXJyb3IgJFJlc3Bv bnNlICdOdXIgU3VwZXJVc2VyIGR1ZXJmZW4gU3VwZXJVc2VyIHZlcndhbHRlbicgNDAzOyBjb250 aW51ZSB9DQogICAgICAgICAgICAgICAgJGJvZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QNCiAgICAg ICAgICAgICAgICBpZiAoLW5vdCAkYm9keSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnQW5mcmFn ZSB6dSBncm9zcycgNDEzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgIyBAKC4uLikgZXJ6 d2luZ3QgQXJyYXkgYXVjaCBiZWkgMSBFbGVtZW50IChQUyA1LjEgZW50cGFja3Qgc29uc3QgenUg RWluemVsLU9iamVrdCwNCiAgICAgICAgICAgICAgICAjIGRhbm4gd2lyZCBkaWUgTGlzdGUgaW4g YWRtaW4uanNvbiB6dW0gT2JqZWt0IGRlZ2VuZXJpZXJ0IC0+IENsaWVudC1GZWhsZXIpLg0KICAg ICAgICAgICAgICAgICRib2R5T2JqID0gJGJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uDQogICAgICAg ICAgICAgICAgJGRhdGVuID0gW29iamVjdFtdXUAoJGJvZHlPYmopDQogICAgICAgICAgICAgICAg JGxvY2tFcmdlYm5pcyA9ICRudWxsDQogICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAg ICAgICAgICAgJGxvY2tFcmdlYm5pcyA9IEludm9rZS1XaXRoRmlsZUxvY2sgJ2FkbWluLmpzb24n IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRhZG1pbiA9IFJlYWQtSnNvbk9iamVjdCAnYWRt aW4uanNvbicNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbnVsbCAtZXEgJGFkbWluKSB7 IHJldHVybiBAeyBvayA9ICRmYWxzZTsgc3RhdHVzID0gNTAwOyBtc2cgPSAnYWRtaW4uanNvbiBu aWNodCBsZXNiYXInIH0gfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHdpcGVNc2cgPSBUZXN0 LVdpcGVTY2h1dHogJ3N1cGVyVXNlcicgJGRhdGVuICRhZG1pbiAkUmVxdWVzdCAkYm9keU9iag0K ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR3aXBlTXNnKSB7IHJldHVybiBAeyBvayA9ICRm YWxzZTsgc3RhdHVzID0gNDA5OyBtc2cgPSAkd2lwZU1zZyB9IH0NCiAgICAgICAgICAgICAgICAg ICAgICAgICMgQWx0ZSBMaXN0ZSB2b3IgZGVtIE92ZXJ3cml0ZSBzbmFwc2hvdHRlbiDigJQgd2ly IGJyYXVjaGVuDQogICAgICAgICAgICAgICAgICAgICAgICAjIHNpZSBuYWNoIGRlbSBMb2NrIGZ1 ZXIgZGllIERpZmYtQmVyZWNobnVuZyAobWFpbHRvIGJlaQ0KICAgICAgICAgICAgICAgICAgICAg ICAgIyBTVSByZWluL3JhdXMpLg0KICAgICAgICAgICAgICAgICAgICAgICAgJGFsdFNVID0gQCgp DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGFkbWluLlBTT2JqZWN0LlByb3BlcnRpZXNb J3N1cGVyVXNlciddKSB7ICRhbHRTVSA9IFtvYmplY3RbXV1AKCRhZG1pbi5zdXBlclVzZXIpIH0N CiAgICAgICAgICAgICAgICAgICAgICAgIFt2b2lkXShCYWNrdXAtQWRtaW5Kc29uICdzdXBlclVz ZXInKQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhZG1pbi5QU09iamVjdC5Qcm9wZXJ0 aWVzWydzdXBlclVzZXInXSkgeyAkYWRtaW4uc3VwZXJVc2VyID0gJGRhdGVuIH0NCiAgICAgICAg ICAgICAgICAgICAgICAgIGVsc2UgeyAkYWRtaW4gfCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlO YW1lICdzdXBlclVzZXInIC1Ob3RlUHJvcGVydHlWYWx1ZSAkZGF0ZW4gLUZvcmNlIH0NCiAgICAg ICAgICAgICAgICAgICAgICAgIFdyaXRlLUpzb25PYmplY3QgJ2FkbWluLmpzb24nICRhZG1pbiB8 IE91dC1OdWxsDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQHsgb2sgPSAkdHJ1ZTsg YWx0ID0gJGFsdFNVIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0g Y2F0Y2ggew0KICAgICAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25zZSAoIkxvY2st RmVobGVyOiAkXyIpIDUwMzsgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg ICAgICAgaWYgKC1ub3QgJGxvY2tFcmdlYm5pcy5vaykgeyBTZW5kLUVycm9yICRSZXNwb25zZSAk bG9ja0VyZ2VibmlzLm1zZyAkbG9ja0VyZ2VibmlzLnN0YXR1czsgY29udGludWUgfQ0KICAgICAg ICAgICAgICAgICMgRGlmZiBhbHQvbmV1IG5hY2ggbndLZW5udW5nLiBTVS1SZWluL1JhdXMgbG9l c3QgbWFpbHRvIHZpYSBDbGllbnQgYXVzDQogICAgICAgICAgICAgICAgIyAoVmVyYW50d29ydHVu Z3MtVWViZXJnYW5nIFZvcmxhZ2UgJ3JvbGxlX3ZlcmFudHdvcnR1bmcnKS4NCiAgICAgICAgICAg ICAgICAkbWFpbHRvRGlmZnMgPSBHZXQtUm9sbGVEaWZmcyAkbG9ja0VyZ2VibmlzLmFsdCAkZGF0 ZW4gJ1N1cGVyVXNlcicgJGZhbHNlDQogICAgICAgICAgICAgICAgIyBhbnphaGwgbWl0Z2ViZW4g 4oCUIGRlciBMb2didWNoLUNsaWVudCBsaWVzdCBlLmFuemFobDsgb2huZSBkYXMNCiAgICAgICAg ICAgICAgICAjIEZlbGQgYmxpZWIgZGllIERldGFpbC1TcGFsdGUgYmVpIFNVLUxpc3RlbmFlbmRl cnVuZ2VuIGxlZXINCiAgICAgICAgICAgICAgICAjIChmYWNoYXVmc2ljaHQuZ2VhZW5kZXJ0IHVu dGVuIG1hY2h0IGVzIGdlbmF1c28pLg0KICAgICAgICAgICAgICAgIFdyaXRlLUxvZ0VpbnRyYWcg J3N1cGVyVXNlci5nZWFlbmRlcnQnIEB7IGFuemFobCA9ICRkYXRlbi5Db3VudDsgZGlmZnMgPSAk bWFpbHRvRGlmZnMuQ291bnQgfQ0KICAgICAgICAgICAgICAgICRyZXNwID0gQHsgc3RhdHVzID0g J2dlc3BlaWNoZXJ0JyB9DQogICAgICAgICAgICAgICAgaWYgKCRtYWlsdG9EaWZmcy5Db3VudCAt Z3QgMCkgew0KICAgICAgICAgICAgICAgICAgICAjIFBTLTUuMS1VbndyYXAtU2NodXR6OiBAKCR4 KSBlcnp3aW5ndCBBcnJheSBhdWNoIGJlaSAxIEVsZW1lbnQuDQogICAgICAgICAgICAgICAgICAg ICRyZXNwWydfYnJhdWNodF9tYWlsdG8nXSA9IFtvcmRlcmVkXUB7IHRyaWdnZXIgPSAncm9sbGVf dmVyYW50d29ydHVuZyc7IGRpZmZzID0gW29iamVjdFtdXUAoJG1haWx0b0RpZmZzKSB9DQogICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2Ug JHJlc3ANCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KDQogICAgICAg ICAgICAjIEZhY2hhdWZzaWNodC1MaXN0ZTogbnVyIFN1cGVyVXNlciBkYXJmIEZhY2hhdWZzaWNo dCB2ZXJ3YWx0ZW4NCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvYWRtaW4vZmFjaGF1 ZnNpY2h0JyAtYW5kICRNZXRob2QgLWVxICdQVVQnKSB7DQogICAgICAgICAgICAgICAgaWYgKC1u b3QgKFRlc3QtSXN0U3VwZXJVc2VyKSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnTnVyIFN1cGVy VXNlciBkdWVyZmVuIEZhY2hhdWZzaWNodCB2ZXJ3YWx0ZW4nIDQwMzsgY29udGludWUgfQ0KICAg ICAgICAgICAgICAgICRib2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0DQogICAgICAgICAgICAgICAg aWYgKC1ub3QgJGJvZHkpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0FuZnJhZ2UgenUgZ3Jvc3Mn IDQxMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRib2R5T2JqID0gJGJvZHkgfCBDb252 ZXJ0RnJvbS1Kc29uDQogICAgICAgICAgICAgICAgJGRhdGVuID0gW29iamVjdFtdXUAoJGJvZHlP YmopDQogICAgICAgICAgICAgICAgJGxvY2tFcmdlYm5pcyA9ICRudWxsDQogICAgICAgICAgICAg ICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgJGxvY2tFcmdlYm5pcyA9IEludm9rZS1XaXRo RmlsZUxvY2sgJ2FkbWluLmpzb24nIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRhZG1pbiA9 IFJlYWQtSnNvbk9iamVjdCAnYWRtaW4uanNvbicNCiAgICAgICAgICAgICAgICAgICAgICAgIGlm ICgkbnVsbCAtZXEgJGFkbWluKSB7IHJldHVybiBAeyBvayA9ICRmYWxzZTsgc3RhdHVzID0gNTAw OyBtc2cgPSAnYWRtaW4uanNvbiBuaWNodCBsZXNiYXInIH0gfQ0KICAgICAgICAgICAgICAgICAg ICAgICAgJHdpcGVNc2cgPSBUZXN0LVdpcGVTY2h1dHogJ2ZhY2hhdWZzaWNodCcgJGRhdGVuICRh ZG1pbiAkUmVxdWVzdCAkYm9keU9iag0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR3aXBl TXNnKSB7IHJldHVybiBAeyBvayA9ICRmYWxzZTsgc3RhdHVzID0gNDA5OyBtc2cgPSAkd2lwZU1z ZyB9IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICRhbHRGQSA9IEAoKQ0KICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKCRhZG1pbi5QU09iamVjdC5Qcm9wZXJ0aWVzWydmYWNoYXVmc2ljaHQn XSkgeyAkYWx0RkEgPSBbb2JqZWN0W11dQCgkYWRtaW4uZmFjaGF1ZnNpY2h0KSB9DQogICAgICAg ICAgICAgICAgICAgICAgICBbdm9pZF0oQmFja3VwLUFkbWluSnNvbiAnZmFjaGF1ZnNpY2h0JykN CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYWRtaW4uUFNPYmplY3QuUHJvcGVydGllc1sn ZmFjaGF1ZnNpY2h0J10pIHsgJGFkbWluLmZhY2hhdWZzaWNodCA9ICRkYXRlbiB9DQogICAgICAg ICAgICAgICAgICAgICAgICBlbHNlIHsgJGFkbWluIHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5 TmFtZSAnZmFjaGF1ZnNpY2h0JyAtTm90ZVByb3BlcnR5VmFsdWUgJGRhdGVuIC1Gb3JjZSB9DQog ICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdhZG1pbi5qc29uJyAkYWRt aW4gfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEB7IG9rID0gJHRy dWU7IGFsdCA9ICRhbHRGQSB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICB9IGNhdGNoIHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgKCJM b2NrLUZlaGxlcjogJF8iKSA1MDM7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgIGlmICgtbm90ICRsb2NrRXJnZWJuaXMub2spIHsgU2VuZC1FcnJvciAkUmVzcG9u c2UgJGxvY2tFcmdlYm5pcy5tc2cgJGxvY2tFcmdlYm5pcy5zdGF0dXM7IGNvbnRpbnVlIH0NCiAg ICAgICAgICAgICAgICAjIEZhY2hhdWZzaWNodC1EaWZmOiB0cmVubnQgbWFpbHRvLXd1ZXJkaWdl IFZlcmFudHdvcnR1bmdzLQ0KICAgICAgICAgICAgICAgICMgVWViZXJnYWVuZ2UgKEdlc2FtdHZl cmFudHdvcnRsaWNoIHJlaW4vcmF1cykgdm9tIHJlc3RsaWNoZW4NCiAgICAgICAgICAgICAgICAj IFJvbGxlbi1VcGRhdGVzIChGQSBoaW56dS9yYXVzIG9obmUgR2VzYW10LCBvZGVyIFNlaGVuLUZs YWctDQogICAgICAgICAgICAgICAgIyBXZWNoc2VsKS4gRXJzdGUgZmxpZcOfZW4gaW4gZGVuIG1h aWx0by1UcmlnZ2VyLCBkZXIgUmVzdCB3aXJkDQogICAgICAgICAgICAgICAgIyB6dSBJbi1BcHAt SGlud2Vpc2VuLg0KICAgICAgICAgICAgICAgICRmYUF1c3dlcnR1bmcgPSBHZXQtRmFjaGF1ZnNp Y2h0RGlmZnMgJGxvY2tFcmdlYm5pcy5hbHQgJGRhdGVuDQogICAgICAgICAgICAgICAgV3JpdGUt TG9nRWludHJhZyAnZmFjaGF1ZnNpY2h0LmdlYWVuZGVydCcgQHsgYW56YWhsID0gJGRhdGVuLkNv dW50OyBtYWlsdG8gPSAkZmFBdXN3ZXJ0dW5nLm1haWx0b0RpZmZzLkNvdW50OyBoaW53ZWlzZSA9 ICRmYUF1c3dlcnR1bmcuaGlud2Vpc0RpZmZzLkNvdW50IH0NCiAgICAgICAgICAgICAgICBmb3Jl YWNoICgkaCBpbiAkZmFBdXN3ZXJ0dW5nLmhpbndlaXNEaWZmcykgew0KICAgICAgICAgICAgICAg ICAgICBOZXctSGlud2VpcyAncm9sbGVfZ2VhZW5kZXJ0JyAkaCAoR2V0LUFrdHVlbGxlckJlbnV0 emVyKSB8IE91dC1OdWxsDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRyZXNw ID0gQHsgc3RhdHVzID0gJ2dlc3BlaWNoZXJ0JyB9DQogICAgICAgICAgICAgICAgaWYgKCRmYUF1 c3dlcnR1bmcubWFpbHRvRGlmZnMuQ291bnQgLWd0IDApIHsNCiAgICAgICAgICAgICAgICAgICAg IyBQUy01LjEtVW53cmFwLVNjaHV0ejogQCgkeCkgZXJ6d2luZ3QgQXJyYXkgYXVjaCBiZWkgMSBF bGVtZW50Lg0KICAgICAgICAgICAgICAgICAgICAkcmVzcFsnX2JyYXVjaHRfbWFpbHRvJ10gPSBb b3JkZXJlZF1AeyB0cmlnZ2VyID0gJ3JvbGxlX3ZlcmFudHdvcnR1bmcnOyBkaWZmcyA9IFtvYmpl Y3RbXV1AKCRmYUF1c3dlcnR1bmcubWFpbHRvRGlmZnMpIH0NCiAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSAkcmVzcA0KICAgICAgICAg ICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMgRGlyZWt0aW9u c2xlaXR1bmcgKyBGdWVocnVuZ3NzdGVsbGUgKGdsZWljaGVzIFNjaGVtYSB3aWUNCiAgICAgICAg ICAgICMgRmFjaGF1ZnNpY2h0LCBudXIgc2VwYXJhdGUgTGlzdGVuKS4gQmVpZGUgUm91dGVuIHRl aWxlbiBkaWUNCiAgICAgICAgICAgICMgZ2xlaWNoZSBMb2dpazogU1Utb25seSBQVVQsIEJhY2t1 cCwgU2NocmVpYmVuLCBEaWZmcyB6dQ0KICAgICAgICAgICAgIyBJbi1BcHAtSGlud2Vpc2VuIHVt c2V0emVuLg0KICAgICAgICAgICAgaWYgKCgkUGF0aCAtZXEgJy9hcGkvYWRtaW4vZGlyZWt0aW9u c2xlaXR1bmcnIC1vciAkUGF0aCAtZXEgJy9hcGkvYWRtaW4vZnVlaHJ1bmdzc3RlbGxlJykgLWFu ZCAkTWV0aG9kIC1lcSAnUFVUJykgew0KICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LUlz dFN1cGVyVXNlcikpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ051ciBTdXBlclVzZXIgZHVlcmZl biBSb2xsZW4gdmVyd2FsdGVuJyA0MDM7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAkZmVs ZE5hbWUgPSBpZiAoJFBhdGggLWVxICcvYXBpL2FkbWluL2RpcmVrdGlvbnNsZWl0dW5nJykgeyAn ZGlyZWt0aW9uc2xlaXR1bmcnIH0gZWxzZSB7ICdmdWVocnVuZ3NzdGVsbGUnIH0NCiAgICAgICAg ICAgICAgICAkYm9keSA9IFJlYWQtQm9keSAkUmVxdWVzdA0KICAgICAgICAgICAgICAgIGlmICgt bm90ICRib2R5KSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdBbmZyYWdlIHp1IGdyb3NzJyA0MTM7 IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAkYm9keU9iaiA9ICRib2R5IHwgQ29udmVydEZy b20tSnNvbg0KICAgICAgICAgICAgICAgICRkYXRlbiA9IFtvYmplY3RbXV1AKCRib2R5T2JqKQ0K ICAgICAgICAgICAgICAgICRsb2NrRXJnZWJuaXMgPSAkbnVsbA0KICAgICAgICAgICAgICAgIHRy eSB7DQogICAgICAgICAgICAgICAgICAgICRsb2NrRXJnZWJuaXMgPSBJbnZva2UtV2l0aEZpbGVM b2NrICdhZG1pbi5qc29uJyB7DQogICAgICAgICAgICAgICAgICAgICAgICAkYWRtaW4gPSBSZWFk LUpzb25PYmplY3QgJ2FkbWluLmpzb24nDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG51 bGwgLWVxICRhZG1pbikgeyByZXR1cm4gQHsgb2sgPSAkZmFsc2U7IHN0YXR1cyA9IDUwMDsgbXNn ID0gJ2FkbWluLmpzb24gbmljaHQgbGVzYmFyJyB9IH0NCiAgICAgICAgICAgICAgICAgICAgICAg ICRhbHQgPSBAKCkNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYWRtaW4uUFNPYmplY3Qu UHJvcGVydGllc1skZmVsZE5hbWVdKSB7ICRhbHQgPSBbb2JqZWN0W11dQCgkYWRtaW4uJGZlbGRO YW1lKSB9DQogICAgICAgICAgICAgICAgICAgICAgICBbdm9pZF0oQmFja3VwLUFkbWluSnNvbiAk ZmVsZE5hbWUpDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGFkbWluLlBTT2JqZWN0LlBy b3BlcnRpZXNbJGZlbGROYW1lXSkgeyAkYWRtaW4uJGZlbGROYW1lID0gJGRhdGVuIH0NCiAgICAg ICAgICAgICAgICAgICAgICAgIGVsc2UgeyAkYWRtaW4gfCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVy dHlOYW1lICRmZWxkTmFtZSAtTm90ZVByb3BlcnR5VmFsdWUgJGRhdGVuIC1Gb3JjZSB9DQogICAg ICAgICAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdhZG1pbi5qc29uJyAkYWRtaW4g fCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEB7IG9rID0gJHRydWU7 IGFsdCA9ICRhbHQgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSBj YXRjaCB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICgiTG9jay1G ZWhsZXI6ICRfIikgNTAzOyBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg ICAgICBpZiAoLW5vdCAkbG9ja0VyZ2VibmlzLm9rKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICRs b2NrRXJnZWJuaXMubXNnICRsb2NrRXJnZWJuaXMuc3RhdHVzOyBjb250aW51ZSB9DQogICAgICAg ICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAoJGZlbGROYW1lICsgJy5nZWFlbmRlcnQnKSBAeyBh bnphaGwgPSAkZGF0ZW4uQ291bnQgfQ0KICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAk UmVzcG9uc2UgQHsgc3RhdHVzID0gJ2dlc3BlaWNoZXJ0JyB9DQogICAgICAgICAgICAgICAgY29u dGludWUNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgIyBCZXplaWNobnVuZ2VuOiBPYmpl a3QgKE1hcCBrZXktPmxhYmVsKS4gTGVlcmVzIE9iamVrdCA9IFJlc2V0Lg0KICAgICAgICAgICAg aWYgKCRQYXRoIC1lcSAnL2FwaS9hZG1pbi9iZXplaWNobnVuZ2VuJyAtYW5kICRNZXRob2QgLWVx ICdQVVQnKSB7DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtSXN0QWRtaW4pKSB7IFNl bmQtRXJyb3IgJFJlc3BvbnNlICdLZWluZSBBZG1pbi1SZWNodGUnIDQwMzsgY29udGludWUgfQ0K ICAgICAgICAgICAgICAgICRib2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0DQogICAgICAgICAgICAg ICAgaWYgKC1ub3QgJGJvZHkpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0FuZnJhZ2UgenUgZ3Jv c3MnIDQxMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRkYXRlbiA9ICRib2R5IHwgQ29u dmVydEZyb20tSnNvbg0KICAgICAgICAgICAgICAgICRsb2NrRXJnZWJuaXMgPSAkbnVsbA0KICAg ICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICRsb2NrRXJnZWJuaXMgPSBJ bnZva2UtV2l0aEZpbGVMb2NrICdhZG1pbi5qc29uJyB7DQogICAgICAgICAgICAgICAgICAgICAg ICAkYWRtaW4gPSBSZWFkLUpzb25PYmplY3QgJ2FkbWluLmpzb24nDQogICAgICAgICAgICAgICAg ICAgICAgICBpZiAoJG51bGwgLWVxICRhZG1pbikgeyByZXR1cm4gQHsgb2sgPSAkZmFsc2U7IHN0 YXR1cyA9IDUwMDsgbXNnID0gJ2FkbWluLmpzb24gbmljaHQgbGVzYmFyJyB9IH0NCiAgICAgICAg ICAgICAgICAgICAgICAgIGlmICgkYWRtaW4uUFNPYmplY3QuUHJvcGVydGllc1snYmV6ZWljaG51 bmdlbiddKSB7ICRhZG1pbi5iZXplaWNobnVuZ2VuID0gJGRhdGVuIH0NCiAgICAgICAgICAgICAg ICAgICAgICAgIGVsc2UgeyAkYWRtaW4gfCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlOYW1lICdi ZXplaWNobnVuZ2VuJyAtTm90ZVByb3BlcnR5VmFsdWUgJGRhdGVuIC1Gb3JjZSB9DQogICAgICAg ICAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdhZG1pbi5qc29uJyAkYWRtaW4gfCBP dXQtTnVsbA0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEB7IG9rID0gJHRydWUgfQ0K ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSBjYXRjaCB7DQogICAgICAg ICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICgiTG9jay1GZWhsZXI6ICRfIikgNTAz OyBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAk bG9ja0VyZ2VibmlzLm9rKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICRsb2NrRXJnZWJuaXMubXNn ICRsb2NrRXJnZWJuaXMuc3RhdHVzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgV3JpdGUt TG9nRWludHJhZyAnYmV6ZWljaG51bmdlbi5nZWFlbmRlcnQnIEB7fQ0KICAgICAgICAgICAgICAg IFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0gJ2dlc3BlaWNoZXJ0JyB9DQog ICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgIyBT dGF0aXN0aWstQmF1a2FzdGVuIChzZWxic3RnZWJhdXRlIEthY2hlbG4pICsgU3VwZXJVc2VyLUxh eW91dC1SYXN0ZXIuDQogICAgICAgICAgICAjIEdhdGUgYmV3dXNzdCBTVSBPREVSIEdlc2FtdHZl cmFudHdvcnRsaWNoIChuaWNodCBUZXN0LUlzdEFkbWluKSDigJQgZGVyDQogICAgICAgICAgICAj IEJ1aWxkZXIgbGVidCBpbSBTdGF0aXN0aWstVGFiIHVuZCBtdXNzIGF1Y2ggZnVlciBHZXNhbXR2 ZXJhbnR3b3J0bGljaGUNCiAgICAgICAgICAgICMgb2huZSBhZG1pbmlzdHJhdGlvbi1adWdhbmcg c3BlaWNoZXJiYXIgc2Vpbi4gUGFydGlhbC1NZXJnZSBudXIgZGVyDQogICAgICAgICAgICAjIGJl aWRlbiBiZWthbm50ZW4gS2V5czsgYmVpZGUgYWxzIFtvYmplY3RbXV0gendpbmdlbiAoUFMtNS4x LVVud3JhcCkuDQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL2FkbWluL3N0YXRpc3Rp aycgLWFuZCAkTWV0aG9kIC1lcSAnUFVUJykgew0KICAgICAgICAgICAgICAgICRyID0gR2V0LVJl Y2h0ZQ0KICAgICAgICAgICAgICAgIGlmICgtbm90ICgoVGVzdC1Jc3RBZG1pbikgLW9yICRyLmlz dEdlc2FtdHZlcmFudHdvcnRsaWNoKSkgew0KICAgICAgICAgICAgICAgICAgICBTZW5kLUVycm9y ICRSZXNwb25zZSAnTnVyIEFkbWlucyB1bmQgR2VzYW10dmVyYW50d29ydGxpY2hlIGR1ZXJmZW4g U3RhdGlzdGlrLUthY2hlbG4gYWVuZGVybicgNDAzOyBjb250aW51ZQ0KICAgICAgICAgICAgICAg IH0NCiAgICAgICAgICAgICAgICAkYm9keSA9IFJlYWQtQm9keSAkUmVxdWVzdA0KICAgICAgICAg ICAgICAgIGlmICgtbm90ICRib2R5KSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdBbmZyYWdlIHp1 IGdyb3NzJyA0MTM7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAkZGF0ZW4gPSAkYm9keSB8 IENvbnZlcnRGcm9tLUpzb24NCiAgICAgICAgICAgICAgICAkaGF0S2FjaGVsbiA9ICgkbnVsbCAt bmUgJGRhdGVuIC1hbmQgJGRhdGVuLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3N0YXRpc3Rpa0thY2hl bG4nXSkNCiAgICAgICAgICAgICAgICAkaGF0TGF5b3V0ICA9ICgkbnVsbCAtbmUgJGRhdGVuIC1h bmQgJGRhdGVuLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3N0YXRpc3Rpa0xheW91dCddKQ0KICAgICAg ICAgICAgICAgICRsb2NrRXJnZWJuaXMgPSAkbnVsbA0KICAgICAgICAgICAgICAgIHRyeSB7DQog ICAgICAgICAgICAgICAgICAgICRsb2NrRXJnZWJuaXMgPSBJbnZva2UtV2l0aEZpbGVMb2NrICdh ZG1pbi5qc29uJyB7DQogICAgICAgICAgICAgICAgICAgICAgICAkYWRtaW4gPSBSZWFkLUpzb25P YmplY3QgJ2FkbWluLmpzb24nDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVx ICRhZG1pbikgeyByZXR1cm4gQHsgb2sgPSAkZmFsc2U7IHN0YXR1cyA9IDUwMDsgbXNnID0gJ2Fk bWluLmpzb24gbmljaHQgbGVzYmFyJyB9IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgk aGF0S2FjaGVsbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRrID0gW29iamVjdFtd XUAoJGRhdGVuLnN0YXRpc3Rpa0thY2hlbG4pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgKCRhZG1pbi5QU09iamVjdC5Qcm9wZXJ0aWVzWydzdGF0aXN0aWtLYWNoZWxuJ10pIHsgJGFk bWluLnN0YXRpc3Rpa0thY2hlbG4gPSAkayB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ZWxzZSB7ICRhZG1pbiB8IEFkZC1NZW1iZXIgLU5vdGVQcm9wZXJ0eU5hbWUgJ3N0YXRpc3Rpa0th Y2hlbG4nIC1Ob3RlUHJvcGVydHlWYWx1ZSAkayAtRm9yY2UgfQ0KICAgICAgICAgICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRoYXRMYXlvdXQpIHsNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAkbCA9IFtvYmplY3RbXV1AKCRkYXRlbi5zdGF0aXN0aWtM YXlvdXQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhZG1pbi5QU09iamVjdC5Q cm9wZXJ0aWVzWydzdGF0aXN0aWtMYXlvdXQnXSkgeyAkYWRtaW4uc3RhdGlzdGlrTGF5b3V0ID0g JGwgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAkYWRtaW4gfCBBZGQtTWVt YmVyIC1Ob3RlUHJvcGVydHlOYW1lICdzdGF0aXN0aWtMYXlvdXQnIC1Ob3RlUHJvcGVydHlWYWx1 ZSAkbCAtRm9yY2UgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg ICAgICAgICAgV3JpdGUtSnNvbk9iamVjdCAnYWRtaW4uanNvbicgJGFkbWluIHwgT3V0LU51bGwN CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBAeyBvayA9ICR0cnVlIH0NCiAgICAgICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gY2F0Y2ggew0KICAgICAgICAgICAgICAg ICAgICBTZW5kLUVycm9yICRSZXNwb25zZSAoIkxvY2stRmVobGVyOiAkXyIpIDUwMzsgY29udGlu dWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGxvY2tFcmdl Ym5pcy5vaykgeyBTZW5kLUVycm9yICRSZXNwb25zZSAkbG9ja0VyZ2VibmlzLm1zZyAkbG9ja0Vy Z2VibmlzLnN0YXR1czsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgIFdyaXRlLUxvZ0VpbnRy YWcgJ3N0YXRpc3Rpay5jb25maWcuZ2VhZW5kZXJ0JyBAe30NCiAgICAgICAgICAgICAgICBTZW5k LUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0YXR1cyA9ICdnZXNwZWljaGVydCcgfQ0KICAgICAg ICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMgU3RhbmRh cmRyZWNodGUgKHJlZ3VsYWVyZSBVc2VyKTogZ2VnZW5zZWl0aWdlIFBsYW51bmcgamUgRGllbnN0 Z3J1cHBlLw0KICAgICAgICAgICAgIyBTdGFuZG9ydC4gU1Utb25seS4gV2lyZCBpbiBHZXQtUmVj aHRlIGFkZGl0aXYgaW4gZWRpdGllcmVuIGVpbmdld29iZW4uDQogICAgICAgICAgICBpZiAoJFBh dGggLWVxICcvYXBpL2FkbWluL3N0YW5kYXJkcmVjaHRlJyAtYW5kICRNZXRob2QgLWVxICdQVVQn KSB7DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtSXN0U3VwZXJVc2VyKSkgeyBTZW5k LUVycm9yICRSZXNwb25zZSAnTnVyIFN1cGVyVXNlciBkdWVyZmVuIFN0YW5kYXJkcmVjaHRlIGFl bmRlcm4nIDQwMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRib2R5ID0gUmVhZC1Cb2R5 ICRSZXF1ZXN0DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGJvZHkpIHsgU2VuZC1FcnJvciAk UmVzcG9uc2UgJ0FuZnJhZ2UgenUgZ3Jvc3MnIDQxMzsgY29udGludWUgfQ0KICAgICAgICAgICAg ICAgICRkYXRlbiA9ICRib2R5IHwgQ29udmVydEZyb20tSnNvbg0KICAgICAgICAgICAgICAgICRn ZyA9IEAoKTsgaWYgKCRkYXRlbiAtYW5kICRkYXRlbi5QU09iamVjdC5Qcm9wZXJ0aWVzWydnZWdl bnNlaXRpZ0dydXBwZW4nXSkgICB7ICRnZyA9IFtzdHJpbmdbXV1AKCRkYXRlbi5nZWdlbnNlaXRp Z0dydXBwZW4gICB8IEZvckVhY2gtT2JqZWN0IHsgW3N0cmluZ10kXyB9KSB9DQogICAgICAgICAg ICAgICAgJGdzID0gQCgpOyBpZiAoJGRhdGVuIC1hbmQgJGRhdGVuLlBTT2JqZWN0LlByb3BlcnRp ZXNbJ2dlZ2Vuc2VpdGlnU3RhbmRvcnRlJ10pIHsgJGdzID0gW3N0cmluZ1tdXUAoJGRhdGVuLmdl Z2Vuc2VpdGlnU3RhbmRvcnRlIHwgRm9yRWFjaC1PYmplY3QgeyBbc3RyaW5nXSRfIH0pIH0NCiAg ICAgICAgICAgICAgICAkc3IgPSBAeyBnZWdlbnNlaXRpZ0dydXBwZW4gPSAkZ2c7IGdlZ2Vuc2Vp dGlnU3RhbmRvcnRlID0gJGdzIH0NCiAgICAgICAgICAgICAgICAkbG9ja0VyZ2VibmlzID0gJG51 bGwNCiAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAkbG9ja0VyZ2Vi bmlzID0gSW52b2tlLVdpdGhGaWxlTG9jayAnYWRtaW4uanNvbicgew0KICAgICAgICAgICAgICAg ICAgICAgICAgJGFkbWluID0gUmVhZC1Kc29uT2JqZWN0ICdhZG1pbi5qc29uJw0KICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKCRudWxsIC1lcSAkYWRtaW4pIHsgcmV0dXJuIEB7IG9rID0gJGZh bHNlOyBzdGF0dXMgPSA1MDA7IG1zZyA9ICdhZG1pbi5qc29uIG5pY2h0IGxlc2JhcicgfSB9DQog ICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGFkbWluLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3N0 YW5kYXJkUmVjaHRlJ10pIHsgJGFkbWluLnN0YW5kYXJkUmVjaHRlID0gJHNyIH0NCiAgICAgICAg ICAgICAgICAgICAgICAgIGVsc2UgeyAkYWRtaW4gfCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlO YW1lICdzdGFuZGFyZFJlY2h0ZScgLU5vdGVQcm9wZXJ0eVZhbHVlICRzciAtRm9yY2UgfQ0KICAg ICAgICAgICAgICAgICAgICAgICAgV3JpdGUtSnNvbk9iamVjdCAnYWRtaW4uanNvbicgJGFkbWlu IHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBAeyBvayA9ICR0cnVl IH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gY2F0Y2ggew0KICAg ICAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25zZSAoIkxvY2stRmVobGVyOiAkXyIp IDUwMzsgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKC1u b3QgJGxvY2tFcmdlYm5pcy5vaykgeyBTZW5kLUVycm9yICRSZXNwb25zZSAkbG9ja0VyZ2Vibmlz Lm1zZyAkbG9ja0VyZ2VibmlzLnN0YXR1czsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgIFdy aXRlLUxvZ0VpbnRyYWcgJ3N0YW5kYXJkcmVjaHRlLmdlYWVuZGVydCcgQHt9DQogICAgICAgICAg ICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBzdGF0dXMgPSAnZ2VzcGVpY2hlcnQn IH0NCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAg ICAjIEUtTWFpbC1Wb3JsYWdlbjogT2JqZWt0IChuaWNodCBBcnJheSkg4oCUIGVpZ2VuZXIgSGFu ZGxlci4NCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvYWRtaW4vZW1haWx2b3JsYWdl bicgLWFuZCAkTWV0aG9kIC1lcSAnUFVUJykgew0KICAgICAgICAgICAgICAgIGlmICgtbm90IChU ZXN0LUlzdEFkbWluKSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnS2VpbmUgQWRtaW4tUmVjaHRl JyA0MDM7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAkYm9keSA9IFJlYWQtQm9keSAkUmVx dWVzdA0KICAgICAgICAgICAgICAgIGlmICgtbm90ICRib2R5KSB7IFNlbmQtRXJyb3IgJFJlc3Bv bnNlICdBbmZyYWdlIHp1IGdyb3NzJyA0MTM7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAk ZGF0ZW4gPSAkYm9keSB8IENvbnZlcnRGcm9tLUpzb24NCiAgICAgICAgICAgICAgICAjIFJpY2gt VGV4dC1Cb2R5IGplIFZvcmxhZ2Ugc2VydmVyc2VpdGlnIGJlcmVpbmlnZW4gKFN0b3JlZC1YU1Mp Lg0KICAgICAgICAgICAgICAgIGlmICgkbnVsbCAtbmUgJGRhdGVuKSB7DQogICAgICAgICAgICAg ICAgICAgIGZvcmVhY2ggKCRwIGluICRkYXRlbi5QU09iamVjdC5Qcm9wZXJ0aWVzKSB7DQogICAg ICAgICAgICAgICAgICAgICAgICAkdiA9ICRwLlZhbHVlDQogICAgICAgICAgICAgICAgICAgICAg ICBpZiAoJG51bGwgLW5lICR2IC1hbmQgJHYuUFNPYmplY3QuUHJvcGVydGllc1sndGV4dCddIC1h bmQgKCR2LnRleHQgLWlzIFtzdHJpbmddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICR2LnRleHQgPSBDb252ZXJ0VG8tU2FmZVJpY2hIdG1sICR2LnRleHQNCiAgICAgICAgICAgICAg ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAg ICAgICAgICAgICAgICAkbG9ja0VyZ2VibmlzID0gJG51bGwNCiAgICAgICAgICAgICAgICB0cnkg ew0KICAgICAgICAgICAgICAgICAgICAkbG9ja0VyZ2VibmlzID0gSW52b2tlLVdpdGhGaWxlTG9j ayAnYWRtaW4uanNvbicgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGFkbWluID0gUmVhZC1K c29uT2JqZWN0ICdhZG1pbi5qc29uJw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRudWxs IC1lcSAkYWRtaW4pIHsgcmV0dXJuIEB7IG9rID0gJGZhbHNlOyBzdGF0dXMgPSA1MDA7IG1zZyA9 ICdhZG1pbi5qc29uIG5pY2h0IGxlc2JhcicgfSB9DQogICAgICAgICAgICAgICAgICAgICAgICBp ZiAoJGFkbWluLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2VtYWlsVm9ybGFnZW4nXSkgeyAkYWRtaW4u ZW1haWxWb3JsYWdlbiA9ICRkYXRlbiB9DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsg JGFkbWluIHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAnZW1haWxWb3JsYWdlbicgLU5v dGVQcm9wZXJ0eVZhbHVlICRkYXRlbiAtRm9yY2UgfQ0KICAgICAgICAgICAgICAgICAgICAgICAg V3JpdGUtSnNvbk9iamVjdCAnYWRtaW4uanNvbicgJGFkbWluIHwgT3V0LU51bGwNCiAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBAeyBvayA9ICR0cnVlIH0NCiAgICAgICAgICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgICAgIH0gY2F0Y2ggew0KICAgICAgICAgICAgICAgICAgICBTZW5k LUVycm9yICRSZXNwb25zZSAoIkxvY2stRmVobGVyOiAkXyIpIDUwMzsgY29udGludWUNCiAgICAg ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGxvY2tFcmdlYm5pcy5vaykg eyBTZW5kLUVycm9yICRSZXNwb25zZSAkbG9ja0VyZ2VibmlzLm1zZyAkbG9ja0VyZ2VibmlzLnN0 YXR1czsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgIFdyaXRlLUxvZ0VpbnRyYWcgJ2VtYWls dm9ybGFnZW4uZ2VhZW5kZXJ0JyBAe30NCiAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3Qg JFJlc3BvbnNlIEB7IHN0YXR1cyA9ICdnZXNwZWljaGVydCcgfQ0KICAgICAgICAgICAgICAgIGNv bnRpbnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMgRS1NYWlsLVRyaWdnZXItS29u ZmlnIChwcm8gVHJpZ2dlcjogYWt0aXYgKyBFbXBmYWVuZ2VyLVRhZ3MpIOKAlA0KICAgICAgICAg ICAgIyBhdXNzY2hsaWVzc2xpY2ggU3RldWVydW5nIGZ1ZXIgZGVuIEZyb250ZW5kLW1haWx0bzot RGlzcGF0Y2hlci4NCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvYWRtaW4vZW1haWx0 cmlnZ2VyJyAtYW5kICRNZXRob2QgLWVxICdQVVQnKSB7DQogICAgICAgICAgICAgICAgaWYgKC1u b3QgKFRlc3QtSXN0QWRtaW4pKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdLZWluZSBBZG1pbi1S ZWNodGUnIDQwMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRib2R5ID0gUmVhZC1Cb2R5 ICRSZXF1ZXN0DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGJvZHkpIHsgU2VuZC1FcnJvciAk UmVzcG9uc2UgJ0FuZnJhZ2UgenUgZ3Jvc3MnIDQxMzsgY29udGludWUgfQ0KICAgICAgICAgICAg ICAgICRkYXRlbiA9ICRib2R5IHwgQ29udmVydEZyb20tSnNvbg0KICAgICAgICAgICAgICAgICRs b2NrRXJnZWJuaXMgPSAkbnVsbA0KICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAg ICAgICAgICRsb2NrRXJnZWJuaXMgPSBJbnZva2UtV2l0aEZpbGVMb2NrICdhZG1pbi5qc29uJyB7 DQogICAgICAgICAgICAgICAgICAgICAgICAkYWRtaW4gPSBSZWFkLUpzb25PYmplY3QgJ2FkbWlu Lmpzb24nDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICRhZG1pbikgeyBy ZXR1cm4gQHsgb2sgPSAkZmFsc2U7IHN0YXR1cyA9IDUwMDsgbXNnID0gJ2FkbWluLmpzb24gbmlj aHQgbGVzYmFyJyB9IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYWRtaW4uUFNPYmpl Y3QuUHJvcGVydGllc1snZW1haWxUcmlnZ2VyJ10pIHsgJGFkbWluLmVtYWlsVHJpZ2dlciA9ICRk YXRlbiB9DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgJGFkbWluIHwgQWRkLU1lbWJl ciAtTm90ZVByb3BlcnR5TmFtZSAnZW1haWxUcmlnZ2VyJyAtTm90ZVByb3BlcnR5VmFsdWUgJGRh dGVuIC1Gb3JjZSB9DQogICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdh ZG1pbi5qc29uJyAkYWRtaW4gfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIEB7IG9rID0gJHRydWUgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg ICAgfSBjYXRjaCB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICgi TG9jay1GZWhsZXI6ICRfIikgNTAzOyBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgICAgICBpZiAoLW5vdCAkbG9ja0VyZ2VibmlzLm9rKSB7IFNlbmQtRXJyb3IgJFJlc3Bv bnNlICRsb2NrRXJnZWJuaXMubXNnICRsb2NrRXJnZWJuaXMuc3RhdHVzOyBjb250aW51ZSB9DQog ICAgICAgICAgICAgICAgJGFueiA9IGlmICgkZGF0ZW4pIHsgKCRkYXRlbi5QU09iamVjdC5Qcm9w ZXJ0aWVzIHwgTWVhc3VyZS1PYmplY3QpLkNvdW50IH0gZWxzZSB7IDAgfQ0KICAgICAgICAgICAg ICAgIFdyaXRlLUxvZ0VpbnRyYWcgJ2VtYWlsdHJpZ2dlci5nZWFlbmRlcnQnIEB7IGFuemFobF90 cmlnZ2VyID0gJGFueiB9DQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25z ZSBAeyBzdGF0dXMgPSAnZ2VzcGVpY2hlcnQnIH0NCiAgICAgICAgICAgICAgICBjb250aW51ZQ0K ICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkYWRtaW5LZXlzID0gQHsNCiAgICAgICAgICAg ICAgICAnL2FwaS9hZG1pbi9mZWllcnRhZ2UnICAgICAgPSAnZmVpZXJ0YWdlJw0KICAgICAgICAg ICAgICAgICcvYXBpL2FkbWluL2ZlcmllbicgICAgICAgICA9ICdmZXJpZW4nDQogICAgICAgICAg ICAgICAgJy9hcGkvYWRtaW4vc29uZGVydGVybWluZScgID0gJ3NvbmRlcnRlcm1pbmUnDQogICAg ICAgICAgICAgICAgJy9hcGkvYWRtaW4vc3RhbmRvcnRlJyAgICAgID0gJ3N0YW5kb3J0ZScNCiAg ICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkYWRtaW5LZXlzLkNvbnRhaW5zS2V5KCRQYXRo KSAtYW5kICRNZXRob2QgLWVxICdQVVQnKSB7DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRl c3QtSXN0QWRtaW4pKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdLZWluZSBBZG1pbi1SZWNodGUn IDQwMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRib2R5ID0gUmVhZC1Cb2R5ICRSZXF1 ZXN0DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGJvZHkpIHsgU2VuZC1FcnJvciAkUmVzcG9u c2UgJ0FuZnJhZ2UgenUgZ3Jvc3MnIDQxMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRr ZXkgPSAkYWRtaW5LZXlzWyRQYXRoXQ0KICAgICAgICAgICAgICAgICMgQCguLi4pIGVyendpbmd0 IEFycmF5IGF1Y2ggYmVpIDEgRWxlbWVudCAoUFMgNS4xIGVudHBhY2t0IHNvbnN0KS4NCiAgICAg ICAgICAgICAgICAkYm9keU9iaiA9ICRib2R5IHwgQ29udmVydEZyb20tSnNvbg0KICAgICAgICAg ICAgICAgICRkYXRlbiA9IFtvYmplY3RbXV1AKCRib2R5T2JqKQ0KICAgICAgICAgICAgICAgICMg c29uZGVydGVybWluZSB0cmFnZW4gUmljaC1UZXh0ICh0ZXh0KSDigJQgc2VydmVyc2VpdGlnIGJl cmVpbmlnZW4uDQogICAgICAgICAgICAgICAgaWYgKCRrZXkgLWVxICdzb25kZXJ0ZXJtaW5lJykg ew0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZSBpbiAkZGF0ZW4pIHsNCiAgICAgICAg ICAgICAgICAgICAgICAgIGlmICgkbnVsbCAtbmUgJGUgLWFuZCAkZS5QU09iamVjdC5Qcm9wZXJ0 aWVzWyd0ZXh0J10gLWFuZCAoJGUudGV4dCAtaXMgW3N0cmluZ10pKSB7DQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgJGUudGV4dCA9IENvbnZlcnRUby1TYWZlUmljaEh0bWwgJGUudGV4dA0K ICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRsb2NrRXJnZWJuaXMgPSAkbnVsbA0KICAgICAg ICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICRsb2NrRXJnZWJuaXMgPSBJbnZv a2UtV2l0aEZpbGVMb2NrICdhZG1pbi5qc29uJyB7DQogICAgICAgICAgICAgICAgICAgICAgICAk YWRtaW4gPSBSZWFkLUpzb25PYmplY3QgJ2FkbWluLmpzb24nDQogICAgICAgICAgICAgICAgICAg ICAgICBpZiAoJG51bGwgLWVxICRhZG1pbikgeyByZXR1cm4gQHsgb2sgPSAkZmFsc2U7IHN0YXR1 cyA9IDUwMDsgbXNnID0gJ2FkbWluLmpzb24gbmljaHQgbGVzYmFyJyB9IH0NCiAgICAgICAgICAg ICAgICAgICAgICAgICR3aXBlTXNnID0gVGVzdC1XaXBlU2NodXR6ICRrZXkgJGRhdGVuICRhZG1p biAkUmVxdWVzdCAkYm9keU9iag0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR3aXBlTXNn KSB7IHJldHVybiBAeyBvayA9ICRmYWxzZTsgc3RhdHVzID0gNDA5OyBtc2cgPSAkd2lwZU1zZyB9 IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIFt2b2lkXShCYWNrdXAtQWRtaW5Kc29uICRrZXkp DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGFkbWluLlBTT2JqZWN0LlByb3BlcnRpZXNb JGtleV0pIHsgJGFkbWluLiRrZXkgPSAkZGF0ZW4gfQ0KICAgICAgICAgICAgICAgICAgICAgICAg ZWxzZSB7ICRhZG1pbiB8IEFkZC1NZW1iZXIgLU5vdGVQcm9wZXJ0eU5hbWUgJGtleSAtTm90ZVBy b3BlcnR5VmFsdWUgJGRhdGVuIC1Gb3JjZSB9DQogICAgICAgICAgICAgICAgICAgICAgICBXcml0 ZS1Kc29uT2JqZWN0ICdhZG1pbi5qc29uJyAkYWRtaW4gfCBPdXQtTnVsbA0KICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIEB7IG9rID0gJHRydWUgfQ0KICAgICAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgfSBjYXRjaCB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJy b3IgJFJlc3BvbnNlICgiTG9jay1GZWhsZXI6ICRfIikgNTAzOyBjb250aW51ZQ0KICAgICAgICAg ICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkbG9ja0VyZ2VibmlzLm9rKSB7IFNl bmQtRXJyb3IgJFJlc3BvbnNlICRsb2NrRXJnZWJuaXMubXNnICRsb2NrRXJnZWJuaXMuc3RhdHVz OyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAiJGtleS5nZWFl bmRlcnQiIEB7fQ0KICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsg c3RhdHVzID0gJ2dlc3BlaWNoZXJ0JyB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAg ICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvYWRtaW4vZWluc3RlbGx1 bmdlbicgLWFuZCAkTWV0aG9kIC1lcSAnUFVUJykgew0KICAgICAgICAgICAgICAgIGlmICgtbm90 IChUZXN0LUlzdEFkbWluKSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnS2VpbmUgQWRtaW4tUmVj aHRlJyA0MDM7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAkYm9keSA9IFJlYWQtQm9keSAk UmVxdWVzdA0KICAgICAgICAgICAgICAgIGlmICgtbm90ICRib2R5KSB7IFNlbmQtRXJyb3IgJFJl c3BvbnNlICdBbmZyYWdlIHp1IGdyb3NzJyA0MTM7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAg ICAkZGF0ZW4gPSAkYm9keSB8IENvbnZlcnRGcm9tLUpzb24NCiAgICAgICAgICAgICAgICAjIFJp Y2gtVGV4dCBzZXJ2ZXJzZWl0aWcgc2FuaXRpc2llcmVuIOKAlCBkaWVzZXIgUGZhZCBzcGVpY2hl cnQNCiAgICAgICAgICAgICAgICAjIGluZm90ZXh0L2hpbGZldGV4dC9iZWRpZW51bmdzdGV4dGUv aW1wcmVzc3VtL3N1cHBvcnRpbmZvLw0KICAgICAgICAgICAgICAgICMgc2NobGllc3NpbmZvLCB3 YXIgYWJlciBiaXNoZXIgYW0gU2VydmVyLVNhbml0aXplciB2b3JiZWkgKGRlcg0KICAgICAgICAg ICAgICAgICMgbnVyIGFtIFZvbGwtUFVUIC9hcGkvYWRtaW4gaGluZykuIFNjaHV0eiBnZWdlbiBt YW5pcHVsaWVydGVuDQogICAgICAgICAgICAgICAgIyBDbGllbnQgLyBEaXJla3QtQVBJLUNhbGwu DQogICAgICAgICAgICAgICAgSW52b2tlLUFkbWluUmljaHRleHRTYW5pdGl6ZSAkZGF0ZW4NCiAg ICAgICAgICAgICAgICAkbG9ja0VyZ2VibmlzID0gJG51bGwNCiAgICAgICAgICAgICAgICB0cnkg ew0KICAgICAgICAgICAgICAgICAgICAkbG9ja0VyZ2VibmlzID0gSW52b2tlLVdpdGhGaWxlTG9j ayAnYWRtaW4uanNvbicgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGFkbWluID0gUmVhZC1K c29uT2JqZWN0ICdhZG1pbi5qc29uJw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRudWxs IC1lcSAkYWRtaW4pIHsgcmV0dXJuIEB7IG9rID0gJGZhbHNlOyBzdGF0dXMgPSA1MDA7IG1zZyA9 ICdhZG1pbi5qc29uIG5pY2h0IGxlc2JhcicgfSB9DQogICAgICAgICAgICAgICAgICAgICAgICBm b3JlYWNoICgkayBpbiAnamFocicsJ2luZm90ZXh0Jywnc3VwcG9ydGluZm8nLCdzY2hsaWVzc2lu Zm8nLCdoaWxmZXRleHQnLCdiZWRpZW51bmdzdGV4dGUnLCdwYXBpZXJrb3JiVGFnZUF1ZmJld2Fo cnVuZycsJ2VtYWlsQXV0b0RvbWFpbicsJ2F2YXRhckdyb2Vzc2UnLCdpbXByZXNzdW0nLCdzdXBw b3J0TWFpbFRleHQnLCdlZGl0b3JUcmlnZ2VyJykgew0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmICgkZGF0ZW4uUFNPYmplY3QuUHJvcGVydGllc1ska10pIHsNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKCRhZG1pbi5QU09iamVjdC5Qcm9wZXJ0aWVzWyRrXSkgeyAk YWRtaW4uJGsgPSAkZGF0ZW4uJGsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bHNlIHsgJGFkbWluIHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAkayAtTm90ZVByb3Bl cnR5VmFsdWUgJGRhdGVuLiRrIC1Gb3JjZSB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg fQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgIyBl ZGl0b3JUcmlnZ2VyIGlzdCBlaW4gRW51bSDigJQgZnJlbWRlIFdlcnRlIChEaXJla3QtQVBJKSBh dWYNCiAgICAgICAgICAgICAgICAgICAgICAgICMgZGVuIERlZmF1bHQga2xlbW1lbiwgZGFtaXQg bmllIE11ZWxsIGluIGFkbWluLmpzb24gbGFuZGV0Lg0KICAgICAgICAgICAgICAgICAgICAgICAg JGV0VmFsID0gaWYgKCRhZG1pbi5QU09iamVjdC5Qcm9wZXJ0aWVzWydlZGl0b3JUcmlnZ2VyJ10p IHsgW3N0cmluZ10kYWRtaW4uZWRpdG9yVHJpZ2dlciB9IGVsc2UgeyAnJyB9DQogICAgICAgICAg ICAgICAgICAgICAgICBpZiAoQCgncmVjaHRzJywnbGlua3MnLCdtaXR0ZScsJ2RvcHBlbCcpIC1u b3Rjb250YWlucyAkZXRWYWwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGFk bWluLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2VkaXRvclRyaWdnZXInXSkgeyAkYWRtaW4uZWRpdG9y VHJpZ2dlciA9ICdyZWNodHMnIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsg JGFkbWluIHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAnZWRpdG9yVHJpZ2dlcicgLU5v dGVQcm9wZXJ0eVZhbHVlICdyZWNodHMnIC1Gb3JjZSB9DQogICAgICAgICAgICAgICAgICAgICAg ICB9DQogICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdhZG1pbi5qc29u JyAkYWRtaW4gfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEB7IG9r ID0gJHRydWUgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSBjYXRj aCB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICgiTG9jay1GZWhs ZXI6ICRfIikgNTAzOyBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICBpZiAoLW5vdCAkbG9ja0VyZ2VibmlzLm9rKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICRsb2Nr RXJnZWJuaXMubXNnICRsb2NrRXJnZWJuaXMuc3RhdHVzOyBjb250aW51ZSB9DQogICAgICAgICAg ICAgICAgV3JpdGUtTG9nRWludHJhZyAnZWluc3RlbGx1bmdlbi5nZWFlbmRlcnQnIEB7fQ0KICAg ICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0gJ2dlc3Bl aWNoZXJ0JyB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCg0KICAg ICAgICAgICAgIyA9PT09PSBQTEFOVU5HID09PT09DQogICAgICAgICAgICBpZiAoJFBhdGggLWVx ICcvYXBpL3BsYW51bmcnIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsNCiAgICAgICAgICAgICAg ICAkdHh0ID0gUmVhZC1UZXh0RmlsZSAncGxhbnVuZy5qc29uJw0KICAgICAgICAgICAgICAgIGlm ICgkbnVsbCAtZXEgJHR4dCkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAncGxhbnVuZy5qc29uIG5p Y2h0IGdlZnVuZGVuJyA0MDQgfQ0KICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAg ICAgICAgICAjIFZlcnNpb25zLVN0ZW1wZWwgKG10aW1lLVRpY2tzKSBmdWVyIG9wdGltaXN0aXNj aGUgU3BlcnJlIGRlcw0KICAgICAgICAgICAgICAgICAgICAjIEV4Y2VsLUltcG9ydHMuIERlciBD bGllbnQgc2NoaWNrdCBpaG4gYmVpbSBQVVQgenVydWVjay4NCiAgICAgICAgICAgICAgICAgICAg dHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRwcFYgPSBKb2luLVBhdGggJERhdGFEaXIg J3BsYW51bmcuanNvbicNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChUZXN0LVBhdGggLUxp dGVyYWxQYXRoICRwcFYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUmVzcG9uc2Uu SGVhZGVycy5BZGQoJ1gtUGxhbnVuZy1WZXJzaW9uJywgW3N0cmluZ10oR2V0LUl0ZW0gLUxpdGVy YWxQYXRoICRwcFYpLkxhc3RXcml0ZVRpbWVVdGMuVGlja3MpDQogICAgICAgICAgICAgICAgICAg ICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge30NCiAgICAgICAgICAgICAgICAg ICAgU2VuZC1Kc29uVGV4dCAkUmVzcG9uc2UgJHR4dA0KICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRQYXRo IC1lcSAnL2FwaS9wbGFudW5nJyAtYW5kICRNZXRob2QgLWVxICdQVVQnKSB7DQogICAgICAgICAg ICAgICAgaWYgKC1ub3QgKFRlc3QtSXN0QWRtaW4pKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdL ZWluZSBBZG1pbi1SZWNodGUnIDQwMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRib2R5 ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGJvZHkpIHsg U2VuZC1FcnJvciAkUmVzcG9uc2UgJ0FuZnJhZ2UgenUgZ3Jvc3MnIDQxMzsgY29udGludWUgfQ0K ICAgICAgICAgICAgICAgICMgUmVhZC1Nb2RpZnktV3JpdGUgYXRvbWFyIGluIGRlciBnbGVpY2hl biBTcGVycmUgd2llIGRpZSBFaW56ZWwtDQogICAgICAgICAgICAgICAgIyB6ZWxsLUVuZHBvaW50 cywgZGFtaXQgZGVyIFZvbGwtSW1wb3J0IG5pY2h0IG1pdCBwYXJhbGxlbGVuDQogICAgICAgICAg ICAgICAgIyBaZWxsLVNjaHJlaWJ2b3JnYWVuZ2VuIHZlcnphaG50LiBPcHRpb25hbGVyIFZlcnNp b25zLUNoZWNrDQogICAgICAgICAgICAgICAgIyAob3B0aW1pc3Rpc2NoZSBOZWJlbmxhZXVmaWdr ZWl0KTogaGF0IGRlciBDbGllbnQgZWluZW4NCiAgICAgICAgICAgICAgICAjIElmLVBsYW51bmct VmVyc2lvbi1IZWFkZXIgZ2VzY2hpY2t0IHVuZCBzdGltbXQgZGVyIG5pY2h0IG1laHINCiAgICAg ICAgICAgICAgICAjIG1pdCBkZW0gYWt0dWVsbGVuIFN0YW5kIHVlYmVyZWluLCB3dXJkZSB6d2lz Y2hlbnplaXRsaWNoDQogICAgICAgICAgICAgICAgIyBnZXNjaHJpZWJlbiAtPiA0MDksIE5JQ0hU UyB3aXJkIHVlYmVyc2NocmllYmVuLg0KICAgICAgICAgICAgICAgICRlcndhcnRldGVWZXJzaW9u ID0gJFJlcXVlc3QuSGVhZGVyc1snSWYtUGxhbnVuZy1WZXJzaW9uJ10NCiAgICAgICAgICAgICAg ICAkbG9ja0VyZ2VibmlzID0gJG51bGwNCiAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAg ICAgICAgICAgICAkbG9ja0VyZ2VibmlzID0gSW52b2tlLVdpdGhGaWxlTG9jayAncGxhbnVuZy5q c29uJyB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGVyd2FydGV0ZVZlcnNpb24pIHsN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHBWID0gSm9pbi1QYXRoICREYXRhRGlyICdw bGFudW5nLmpzb24nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFrdHVlbGxlVmVyc2lv biA9ICcnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFRlc3QtUGF0aCAtTGl0ZXJh bFBhdGggJHBwVikgeyAkYWt0dWVsbGVWZXJzaW9uID0gW3N0cmluZ10oR2V0LUl0ZW0gLUxpdGVy YWxQYXRoICRwcFYpLkxhc3RXcml0ZVRpbWVVdGMuVGlja3MgfQ0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmICgkYWt0dWVsbGVWZXJzaW9uIC1uZSAkZXJ3YXJ0ZXRlVmVyc2lvbikgew0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQHsgdHlwID0gJ2tvbmZsaWt0 JzsgYWt0dWVsbCA9ICRha3R1ZWxsZVZlcnNpb24gfQ0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAg IFdyaXRlLVRleHRGaWxlICdwbGFudW5nLmpzb24nICRib2R5IHwgT3V0LU51bGwNCiAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBAeyB0eXAgPSAnb2snIH0NCiAgICAgICAgICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgICAgIH0gY2F0Y2ggew0KICAgICAgICAgICAgICAgICAgICBTZW5k LUVycm9yICRSZXNwb25zZSAoIkxvY2stRmVobGVyOiAkXyIpIDUwMzsgY29udGludWUNCiAgICAg ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKCRsb2NrRXJnZWJuaXMudHlwIC1lcSAn a29uZmxpa3QnKSB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9u c2UgQHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZlaGxlciAgICAgICAgICA9ICdrb25mbGlr dCcNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lbGR1bmcgICAgICAgICA9ICdEaWUgUGxhbnVu ZyB3dXJkZSB6d2lzY2hlbnplaXRsaWNoIHZvbiBlaW5lciBhbmRlcmVuIFBlcnNvbiBnZWFlbmRl cnQuJw0KICAgICAgICAgICAgICAgICAgICAgICAgYWt0dWVsbGVWZXJzaW9uID0gJGxvY2tFcmdl Ym5pcy5ha3R1ZWxsDQogICAgICAgICAgICAgICAgICAgIH0gNDA5DQogICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIFNlbmQtSnNv bk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0gJ2dlc3BlaWNoZXJ0JyB9DQogICAgICAgICAg ICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEg Jy9hcGkvcGxhbnVuZy96ZWxsZScgLWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcpIHsNCiAgICAgICAg ICAgICAgICAkYm9keSA9IFJlYWQtQm9keSAkUmVxdWVzdA0KICAgICAgICAgICAgICAgIGlmICgt bm90ICRib2R5KSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdBbmZyYWdlIHp1IGdyb3NzJyA0MTM7 IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAkYSA9ICRib2R5IHwgQ29udmVydEZyb20tSnNv bg0KICAgICAgICAgICAgICAgICRkYXR1bSA9ICRhLmRhdHVtDQogICAgICAgICAgICAgICAgJHBl cnNvbklkID0gW3N0cmluZ10kYS5wZXJzb25JZA0KICAgICAgICAgICAgICAgICR3ZXJ0ID0gaWYg KCRhLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3dlcnQnXSkgeyAkYS53ZXJ0IH0gZWxzZSB7ICcnIH0N CiAgICAgICAgICAgICAgICAjIE9wdGltaXN0aWMtQ29uY3VycmVuY3k6IFdlbm4gZGVyIENsaWVu dCBzZWluZW4genVsZXR6dCBnZXNlaGVuZW4NCiAgICAgICAgICAgICAgICAjIFdlcnQgbWl0bGll ZmVydCwgcHJ1ZWZlbiB3aXIgdm9yIGRlbSBTY2hyZWliZW4gb2IgZGVyIFNlcnZlcg0KICAgICAg ICAgICAgICAgICMgbm9jaCBkZW5zZWxiZW4gU3RhbmQgaGF0LiBNaXNtYXRjaCAtPiA0MDkgbWl0 IGFrdHVlbGxlcldlcnQuDQogICAgICAgICAgICAgICAgJGhhdEVyd2FydGV0ID0gJGEuUFNPYmpl Y3QuUHJvcGVydGllc1snZXJ3YXJ0ZXRlckFsdGVyV2VydCddDQogICAgICAgICAgICAgICAgJGVy d2FydGV0ID0gaWYgKCRoYXRFcndhcnRldCkgeyBbc3RyaW5nXSRhLmVyd2FydGV0ZXJBbHRlcldl cnQgfSBlbHNlIHsgJG51bGwgfQ0KDQogICAgICAgICAgICAgICAgIyBFZGl0LVJlY2h0IGdlZ2Vu IGFrdHVlbGxlbiBTdGFuZCBwcnVlZmVuIChub2NoIG9obmUgTG9jayDigJQgbnVyIExvb2t1cCkN CiAgICAgICAgICAgICAgICAkcGxhbnVuZ0NoZWNrID0gUmVhZC1Kc29uT2JqZWN0ICdwbGFudW5n Lmpzb24nDQogICAgICAgICAgICAgICAgaWYgKCRudWxsIC1lcSAkcGxhbnVuZ0NoZWNrKSB7IFNl bmQtRXJyb3IgJFJlc3BvbnNlICdwbGFudW5nLmpzb24gbmljaHQgZ2VmdW5kZW4nIDQwNDsgY29u dGludWUgfQ0KICAgICAgICAgICAgICAgICR6aWVsUGVyc29uID0gJG51bGwNCiAgICAgICAgICAg ICAgICBpZiAoJHBsYW51bmdDaGVjay5wZXJzb25lbikgew0KICAgICAgICAgICAgICAgICAgICBm b3JlYWNoICgkcHAgaW4gQCgkcGxhbnVuZ0NoZWNrLnBlcnNvbmVuKSkgew0KICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKFtzdHJpbmddJHBwLmlkIC1lcSAkcGVyc29uSWQpIHsgJHppZWxQZXJz b24gPSAkcHA7IGJyZWFrIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg IH0NCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1EYXJmWmVsbGVFZGl0aWVyZW4gJHpp ZWxQZXJzb24pKSB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICdL ZWluZSBCZXJlY2h0aWd1bmcgZnVlciBkaWVzZSBaZWxsZScgNDAzOyBjb250aW51ZQ0KICAgICAg ICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICMgUmVhZC1Nb2RpZnktV3JpdGUgYXRvbWFy IGluIExvY2s6DQogICAgICAgICAgICAgICAgJGNsaWVudFF1aXR0aWVydCA9ICgkYS5QU09iamVj dC5Qcm9wZXJ0aWVzWyd1bnRlcmJlc2V0enVuZ1NjaGljaHQnXSAtYW5kICRhLnVudGVyYmVzZXR6 dW5nU2NoaWNodCkNCiAgICAgICAgICAgICAgICAkbG9ja0VyZ2VibmlzID0gJG51bGwNCiAgICAg ICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAkbG9ja0VyZ2VibmlzID0gSW52 b2tlLVdpdGhGaWxlTG9jayAncGxhbnVuZy5qc29uJyB7DQogICAgICAgICAgICAgICAgICAgICAg ICAkcGxhbnVuZyA9IFJlYWQtSnNvbk9iamVjdCAncGxhbnVuZy5qc29uJw0KICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKCRudWxsIC1lcSAkcGxhbnVuZykgeyByZXR1cm4gQHsgdHlwID0gJ2Vy cm9yJzsgY29kZSA9IDQwNDsgbXNnID0gJ3BsYW51bmcuanNvbiBuaWNodCBnZWZ1bmRlbicgfSB9 DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAkcGxhbnVuZy5QU09iamVjdC5Qcm9w ZXJ0aWVzWydlaW50cmFlZ2UnXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwbGFu dW5nIHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAnZWludHJhZWdlJyAtTm90ZVByb3Bl cnR5VmFsdWUgKE5ldy1PYmplY3QgUFNPYmplY3QpIC1Gb3JjZQ0KICAgICAgICAgICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC1ub3QgJHBsYW51bmcuZWludHJh ZWdlLlBTT2JqZWN0LlByb3BlcnRpZXNbJGRhdHVtXSkgew0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICRwbGFudW5nLmVpbnRyYWVnZSB8IEFkZC1NZW1iZXIgLU5vdGVQcm9wZXJ0eU5hbWUg JGRhdHVtIC1Ob3RlUHJvcGVydHlWYWx1ZSAoTmV3LU9iamVjdCBQU09iamVjdCkgLUZvcmNlDQog ICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkYWx0ZXIg PSAnJw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRwbGFudW5nLmVpbnRyYWVnZS4kZGF0 dW0uUFNPYmplY3QuUHJvcGVydGllc1skcGVyc29uSWRdKSB7ICRhbHRlciA9IFtzdHJpbmddJHBs YW51bmcuZWludHJhZWdlLiRkYXR1bS4kcGVyc29uSWQgfQ0KDQogICAgICAgICAgICAgICAgICAg ICAgICAjIE9wdGltaXN0aWMtQ29uY3VycmVuY3ktQ2hlY2sNCiAgICAgICAgICAgICAgICAgICAg ICAgIGlmICgkaGF0RXJ3YXJ0ZXQgLWFuZCAkZXJ3YXJ0ZXQgLW5lICRhbHRlcikgew0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBAeyB0eXAgPSAna29uZmxpa3QnOyBha3R1ZWxs ID0gJGFsdGVyIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAg ICAgICAgICAgIyBGdWVocnVuZ3MtVW50ZXJiZXNldHp1bmcgKFZlcmJpbmRsaWNoa2VpdHNmZW5z dGVyKSAtIGdsZWljaGVzIFByaW56aXAgd2llIHZvcmhlciwNCiAgICAgICAgICAgICAgICAgICAg ICAgICMgamV0enQgYWJlciBnZWdlbiBkZW4gZ2Vsb2NrdGVuIFN0YW5kLg0KICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKC1ub3QgJGNsaWVudFF1aXR0aWVydCAtYW5kIChUZXN0LUluVmVyYmlu ZGxpY2hrZWl0ICRkYXR1bSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWx0ZVNj aGljaHQgPSBHZXQtRnVlaHJ1bmdzU2NoaWNodExldHRlciAkYWx0ZXINCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAkbmV1ZVNjaGljaHQgPSBHZXQtRnVlaHJ1bmdzU2NoaWNodExldHRlciAk d2VydA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYWx0ZVNjaGljaHQgLWFuZCAk YWx0ZVNjaGljaHQgLW5lICRuZXVlU2NoaWNodCkgew0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAkYWt0dWVsbENvdW50ID0gR2V0LUZ1ZWhydW5nc0NvdW50ICRwbGFudW5nICRkYXR1 bSAkYWx0ZVNjaGljaHQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgkYWt0 dWVsbENvdW50IC0gMSkgLWx0IDIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBAeyB0eXAgPSAndW50ZXJiZXNldHp1bmcnOyBzY2hpY2h0ID0gJGFsdGVTY2hp Y2h0OyBha3R1ZWxsQ291bnQgPSAkYWt0dWVsbENvdW50OyBhbHRlciA9ICRhbHRlciB9DQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAg IGlmICgtbm90ICR3ZXJ0IC1vciBbc3RyaW5nXTo6SXNOdWxsT3JXaGl0ZVNwYWNlKCR3ZXJ0KSkg ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcGxhbnVuZy5laW50cmFlZ2UuJGRh dHVtLlBTT2JqZWN0LlByb3BlcnRpZXNbJHBlcnNvbklkXSkgew0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAkcGxhbnVuZy5laW50cmFlZ2UuJGRhdHVtLlBTT2JqZWN0LlByb3BlcnRp ZXMuUmVtb3ZlKCRwZXJzb25JZCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAg ICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmICgkcGxhbnVuZy5laW50cmFlZ2UuJGRhdHVtLlBTT2JqZWN0LlByb3BlcnRpZXNbJHBlcnNv bklkXSkgeyAkcGxhbnVuZy5laW50cmFlZ2UuJGRhdHVtLiRwZXJzb25JZCA9ICR3ZXJ0IH0NCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgJHBsYW51bmcuZWludHJhZWdlLiRkYXR1 bSB8IEFkZC1NZW1iZXIgLU5vdGVQcm9wZXJ0eU5hbWUgJHBlcnNvbklkIC1Ob3RlUHJvcGVydHlW YWx1ZSAkd2VydCAtRm9yY2UgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgICAgICAgICAgICAgV3JpdGUtSnNvbk9iamVjdCAncGxhbnVuZy5qc29uJyAkcGxhbnVuZyB8 IE91dC1OdWxsDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQHsgdHlwID0gJ29rJzsg YWx0ZXIgPSAkYWx0ZXIgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg fSBjYXRjaCB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICgiTG9j ay1GZWhsZXI6ICRfIikgNTAzOyBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAg ICAgICAgICAgIGlmICgkbG9ja0VyZ2VibmlzLnR5cCAtZXEgJ2Vycm9yJykgeyBTZW5kLUVycm9y ICRSZXNwb25zZSAkbG9ja0VyZ2VibmlzLm1zZyAkbG9ja0VyZ2VibmlzLmNvZGU7IGNvbnRpbnVl IH0NCiAgICAgICAgICAgICAgICBpZiAoJGxvY2tFcmdlYm5pcy50eXAgLWVxICdrb25mbGlrdCcp IHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAew0KICAg ICAgICAgICAgICAgICAgICAgICAgZmVobGVyICAgICAgICA9ICdrb25mbGlrdCcNCiAgICAgICAg ICAgICAgICAgICAgICAgIG1lbGR1bmcgICAgICAgPSAnRGllc2UgWmVsbGUgd3VyZGUgaW56d2lz Y2hlbiBnZWFlbmRlcnQuJw0KICAgICAgICAgICAgICAgICAgICAgICAgYWt0dWVsbGVyV2VydCA9 ICRsb2NrRXJnZWJuaXMuYWt0dWVsbA0KICAgICAgICAgICAgICAgICAgICB9IDQwOQ0KICAgICAg ICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICBpZiAoJGxvY2tFcmdlYm5pcy50eXAgLWVxICd1bnRlcmJlc2V0enVuZycpIHsNCiAgICAgICAg ICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAew0KICAgICAgICAgICAgICAg ICAgICAgICAgZmVobGVyICAgICAgICAgPSAnRnVlaHJ1bmdzLVVudGVyYmVzZXR6dW5nJw0KICAg ICAgICAgICAgICAgICAgICAgICAga29uZmxpa3RUeXAgICAgPSAndW50ZXJiZXNldHp1bmcnDQog ICAgICAgICAgICAgICAgICAgICAgICBzY2hpY2h0ICAgICAgICA9ICRsb2NrRXJnZWJuaXMuc2No aWNodA0KICAgICAgICAgICAgICAgICAgICAgICAgYWt0dWVsbENvdW50ICAgPSAkbG9ja0VyZ2Vi bmlzLmFrdHVlbGxDb3VudA0KICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJXZXJ0ICAgICAg PSAkbG9ja0VyZ2VibmlzLmFsdGVyDQogICAgICAgICAgICAgICAgICAgICAgICBuZXVlcldlcnQg ICAgICA9ICR3ZXJ0DQogICAgICAgICAgICAgICAgICAgIH0gNDA5DQogICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgJGFsdGVy ID0gJGxvY2tFcmdlYm5pcy5hbHRlcg0KICAgICAgICAgICAgICAgIFdyaXRlLUxvZ0VpbnRyYWcg J3plbGxlLmdlYWVuZGVydCcgQHsgZGF0dW0gPSAkZGF0dW07IHBlcnNvbklkID0gJHBlcnNvbklk OyBhbHRlcldlcnQgPSAiJGFsdGVyIjsgbmV1ZXJXZXJ0ID0gIiR3ZXJ0IiB9DQogICAgICAgICAg ICAgICAgIyBMaXZlLVN5bmM6IENoYW5nZS1Mb2cgZnVlciBkZW4gc3luYy13b3JrZXIuDQogICAg ICAgICAgICAgICAgQWRkLUNoYW5nZUxvZ0VpbnRyYWcgJ3plbGxlJyBAew0KICAgICAgICAgICAg ICAgICAgICBkYXR1bSAgICA9ICRkYXR1bQ0KICAgICAgICAgICAgICAgICAgICBwZXJzb25JZCA9 ICRwZXJzb25JZA0KICAgICAgICAgICAgICAgICAgICBhbHQgICAgICA9ICIkYWx0ZXIiDQogICAg ICAgICAgICAgICAgICAgIG5ldSAgICAgID0gIiR3ZXJ0Ig0KICAgICAgICAgICAgICAgIH0NCg0K ICAgICAgICAgICAgICAgICMgVW50ZXJiZXNldHp1bmdzLVF1aXR0dW5nOiBleHRyYSBMb2didWNo LUVpbnRyYWcsIGRlbiBGYWNoYXVmc2ljaHQvV0wgc2VoZW4gc29sbA0KICAgICAgICAgICAgICAg IGlmICgkYS5QU09iamVjdC5Qcm9wZXJ0aWVzWyd1bnRlcmJlc2V0enVuZ1NjaGljaHQnXSAtYW5k ICRhLnVudGVyYmVzZXR6dW5nU2NoaWNodCkgew0KICAgICAgICAgICAgICAgICAgICAkc2NoaWNo dExldHRlciA9IFtzdHJpbmddJGEudW50ZXJiZXNldHp1bmdTY2hpY2h0DQogICAgICAgICAgICAg ICAgICAgICRzY2hpY2h0VGV4dCA9IHN3aXRjaCAoJHNjaGljaHRMZXR0ZXIpIHsNCiAgICAgICAg ICAgICAgICAgICAgICAgICdGJyB7ICdGcnVlaHNjaGljaHQnIH0NCiAgICAgICAgICAgICAgICAg ICAgICAgICdTJyB7ICdTcGFldHNjaGljaHQnIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICdO JyB7ICdOYWNodHNjaGljaHQnIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgeyAk c2NoaWNodExldHRlciB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg ICAgJG9lVHh0ID0gJycNCiAgICAgICAgICAgICAgICAgICAgaWYgKCR6aWVsUGVyc29uIC1hbmQg JHppZWxQZXJzb24uUFNPYmplY3QuUHJvcGVydGllc1snb2UnXSkgeyAkb2VUeHQgPSBbc3RyaW5n XSR6aWVsUGVyc29uLm9lIH0NCiAgICAgICAgICAgICAgICAgICAgJG5hbWVUeHQgPSAnJw0KICAg ICAgICAgICAgICAgICAgICBpZiAoJHppZWxQZXJzb24pIHsNCiAgICAgICAgICAgICAgICAgICAg ICAgICR2biA9ICcnOyBpZiAoJHppZWxQZXJzb24uUFNPYmplY3QuUHJvcGVydGllc1sndm9ybmFt ZSddKSB7ICR2biA9IFtzdHJpbmddJHppZWxQZXJzb24udm9ybmFtZSB9DQogICAgICAgICAgICAg ICAgICAgICAgICAkbmFtZVR4dCA9ICgiJHZuICQoJHppZWxQZXJzb24ubmFtZSkiKS5UcmltKCkN CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBXcml0ZS1Mb2dFaW50 cmFnICd1bnRlcmJlc2V0enVuZy5xdWl0dGllcnQnIEB7DQogICAgICAgICAgICAgICAgICAgICAg ICBkYXR1bSAgICAgPSAkZGF0dW0NCiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbklkICA9 ICRwZXJzb25JZA0KICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29uICAgID0gJG5hbWVUeHQN CiAgICAgICAgICAgICAgICAgICAgICAgIG9lICAgICAgICA9ICRvZVR4dA0KICAgICAgICAgICAg ICAgICAgICAgICAgc2NoaWNodCAgID0gJHNjaGljaHRUZXh0DQogICAgICAgICAgICAgICAgICAg ICAgICBhbHRlcldlcnQgPSAiJGFsdGVyIg0KICAgICAgICAgICAgICAgICAgICAgICAgbmV1ZXJX ZXJ0ID0gIiR3ZXJ0Ig0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgICMgUGhhc2UgRC4zICgyMDI2LTA1LTIxKTogd2VubiBkaWUgS3Jhbmtt ZWxkdW5nIHp1cnVlY2tnZW5vbW1lbg0KICAgICAgICAgICAgICAgICMgd2lyZCAoYWx0ZXIgV2Vy dCB3YXIga3IvS3VyLCBuZXVlciBXZXJ0IGlzdCBlcyBuaWNodCBtZWhyKSwNCiAgICAgICAgICAg ICAgICAjIGVudGZlcm5lbiB3aXIgZGVuIG9mZmVuZW4gSGlud2VpcyDigJQgc29uc3QgaXN0IGVy IGJpcyB6dQ0KICAgICAgICAgICAgICAgICMgMzAgVGFnZSBwcmFlc2VudCwgb2J3b2hsIGRhcyBF cmVpZ25pcyBlcmxlZGlndCBpc3QuDQogICAgICAgICAgICAgICAgaWYgKCgkYWx0ZXIgLWVxICdr cicgLW9yICRhbHRlciAtZXEgJ0t1cicpIC1hbmQgKCR3ZXJ0IC1uZSAna3InIC1hbmQgJHdlcnQg LW5lICdLdXInKSkgew0KICAgICAgICAgICAgICAgICAgICBSZW1vdmUtT2ZmZW5lS3JhbmttZWxk dW5nc0hpbndlaXNlICRwZXJzb25JZCAkZGF0dW0NCiAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICAgICAgIyBIaW53ZWlzLVRyaWdnZXI6IEtyYW5rbWVsZHVuZyBlcnpldWd0IGVpbmVuIElu LUFwcC1IaW53ZWlzDQogICAgICAgICAgICAgICAgIyBmdWVyIFNVICsgR2VzYW10dmVyYW50d29y dGxpY2hlIChTY2hpY2h0bG9jaCBpbSBNb2RhbCBkaXJla3QNCiAgICAgICAgICAgICAgICAjIGFk cmVzc2llcmJhciB2aWEgIkthbmRpZGF0ZW4gYW5zY2hyZWliZW4iLUJ1dHRvbikuDQogICAgICAg ICAgICAgICAgaWYgKCR3ZXJ0IC1lcSAna3InIC1vciAkd2VydCAtZXEgJ0t1cicpIHsNCiAgICAg ICAgICAgICAgICAgICAgJGttTmFtZSA9ICcnDQogICAgICAgICAgICAgICAgICAgIGlmICgkemll bFBlcnNvbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGt2biA9ICcnOyBpZiAoJHppZWxQ ZXJzb24uUFNPYmplY3QuUHJvcGVydGllc1sndm9ybmFtZSddKSB7ICRrdm4gPSBbc3RyaW5nXSR6 aWVsUGVyc29uLnZvcm5hbWUgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGttTmFtZSA9ICgi JGt2biAkKCR6aWVsUGVyc29uLm5hbWUpIikuVHJpbSgpDQogICAgICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgICAgICAgICAgJGttR3J1cHBlID0gJycNCiAgICAgICAgICAgICAgICAgICAg aWYgKCR6aWVsUGVyc29uIC1hbmQgJHppZWxQZXJzb24uUFNPYmplY3QuUHJvcGVydGllc1snZ3J1 cHBlJ10pIHsgJGttR3J1cHBlID0gW3N0cmluZ10kemllbFBlcnNvbi5ncnVwcGUgfQ0KICAgICAg ICAgICAgICAgICAgICAka21TY2hpY2h0TGV0dGVyID0gJycNCiAgICAgICAgICAgICAgICAgICAg aWYgKCIkYWx0ZXIiIC1tYXRjaCAnXihbRlNOXSktJykgeyAka21TY2hpY2h0TGV0dGVyID0gJE1h dGNoZXNbMV0gfQ0KICAgICAgICAgICAgICAgICAgICBOZXctSGlud2VpcyAna3JhbmttZWxkdW5n JyAoW29yZGVyZWRdQHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbl9pZCAgICA9ICRw ZXJzb25JZA0KICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29uX25hbWUgID0gJGttTmFtZQ0K ICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cHBlICAgICAgID0gJGttR3J1cHBlDQogICAgICAg ICAgICAgICAgICAgICAgICBkYXR1bSAgICAgICAgPSAkZGF0dW0NCiAgICAgICAgICAgICAgICAg ICAgICAgIHNjaGljaHRDb2RlICA9ICIkYWx0ZXIiDQogICAgICAgICAgICAgICAgICAgICAgICBz Y2hpY2h0S3VyeiAgPSAka21TY2hpY2h0TGV0dGVyDQogICAgICAgICAgICAgICAgICAgICAgICBj b2RlICAgICAgICAgPSAiJHdlcnQiDQogICAgICAgICAgICAgICAgICAgIH0pIChHZXQtQWt0dWVs bGVyQmVudXR6ZXIpIHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg ICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBzdGF0dXMgPSAnZ2VzcGVpY2hlcnQnOyBh bHRlcldlcnQgPSAkYWx0ZXIgfQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAg ICB9DQogICAgICAgICAgICAjIEJ1bGstU2NocmVpYmVuIG1laHJlcmVyIFplbGxlbiBpbiBlaW5l bSBTY2hyaXR0IOKAlCBhdWZnZXJ1ZmVuDQogICAgICAgICAgICAjIHZvbSBFeGNlbC1GdWVsbC1H cmlmZi4gU3BhcnQgcHJvIERyYWcgYmlzIHp1IDEwMCsgSFRUUC1Sb3VuZHRyaXBzDQogICAgICAg ICAgICAjIHVuZCBEYXRlaS1TY2hyZWlidm9yZ2FlbmdlLiBQZXJtaXNzaW9uLUNoZWNrIHBybyBa ZWxsZSwgZWluDQogICAgICAgICAgICAjIGVpbnppZ2VyIExvZ2J1Y2gtRWludHJhZyBmYXNzdCBk aWUgQWt0aW9uIHp1c2FtbWVuLg0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2FwaS9wbGFu dW5nL3plbGxlbi1idWxrJyAtYW5kICRNZXRob2QgLWVxICdQT1NUJykgew0KICAgICAgICAgICAg ICAgICRib2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0DQogICAgICAgICAgICAgICAgaWYgKC1ub3Qg JGJvZHkpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0FuZnJhZ2UgenUgZ3Jvc3MnIDQxMzsgY29u dGludWUgfQ0KICAgICAgICAgICAgICAgICRhID0gJGJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uDQog ICAgICAgICAgICAgICAgJGVpbnRyYWVnZSA9IEAoJGEuZWludHJhZWdlKQ0KICAgICAgICAgICAg ICAgIGlmICgtbm90ICRlaW50cmFlZ2UgLW9yICRlaW50cmFlZ2UuQ291bnQgLWVxIDApIHsNCiAg ICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBzdGF0dXMgPSAn b2snOyBvayA9IDA7IGFiZ2VsZWhudCA9IEAoKSB9DQogICAgICAgICAgICAgICAgICAgIGNvbnRp bnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICMgUmVhZC1Nb2RpZnktV3Jp dGUgYXRvbWFyIGluIGRlciBEYXRlaS1TcGVycmUg4oCUIHdpZSBkZXIgRWluemVsLQ0KICAgICAg ICAgICAgICAgICMgemVsbC1FbmRwb2ludC4gT2huZSBMb2NrIGthbm4gZWluIHBhcmFsbGVsZXIg RWRpdC9CdWxrIChhdWNoDQogICAgICAgICAgICAgICAgIyBhdXMgZWluZW0gYW5kZXJlbiBTZXJ2 ZXItUHJvemVzcyBhdWYgZGVtc2VsYmVuIFNoYXJlKSBkZW4NCiAgICAgICAgICAgICAgICAjIGdl cmFkZSBnZWxlc2VuZW4gR2VzYW10c3RhbmQgdWViZXJzY2hyZWliZW4gKExvc3QgVXBkYXRlIHVl YmVyDQogICAgICAgICAgICAgICAgIyBkaWUgR0FOWkUgRGF0ZWkpLiBMb2didWNoICsgTGl2ZS1T eW5jIGxhdWZlbiBOQUNIIGRlciBTcGVycmUsDQogICAgICAgICAgICAgICAgIyB1bSBnZXNjaGFj aHRlbHRlIExvY2tzIChsb2didWNoL2NoYW5nZXMpIHp1IHZlcm1laWRlbi4NCiAgICAgICAgICAg ICAgICAkcmVzID0gJG51bGwNCiAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAg ICAgICAkcmVzID0gSW52b2tlLVdpdGhGaWxlTG9jayAncGxhbnVuZy5qc29uJyB7DQogICAgICAg ICAgICAgICAgICAgICAgICAkcGxhbnVuZyA9IFJlYWQtSnNvbk9iamVjdCAncGxhbnVuZy5qc29u Jw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRudWxsIC1lcSAkcGxhbnVuZykgeyByZXR1 cm4gQHsgdHlwID0gJ2Vycm9yJzsgY29kZSA9IDQwNDsgbXNnID0gJ3BsYW51bmcuanNvbiBuaWNo dCBnZWZ1bmRlbicgfSB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAkcGxhbnVu Zy5QU09iamVjdC5Qcm9wZXJ0aWVzWydlaW50cmFlZ2UnXSkgew0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICRwbGFudW5nIHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAnZWludHJh ZWdlJyAtTm90ZVByb3BlcnR5VmFsdWUgKFtQU0N1c3RvbU9iamVjdF1Ae30pIC1Gb3JjZQ0KICAg ICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgIyBQZXJzb25l bi1NYXAgZWlubWFsIGF1ZmJhdWVuIOKAlCBQZXJtaXNzaW9uLUNoZWNrIHBybw0KICAgICAgICAg ICAgICAgICAgICAgICAgIyBFaW50cmFnIG9obmUgUmVzY2FuIGRlciBQZXJzb25lbmxpc3RlLg0K ICAgICAgICAgICAgICAgICAgICAgICAgJHBlcnNvbk1hcCA9IEB7fQ0KICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKCRwbGFudW5nLnBlcnNvbmVuKSB7DQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgZm9yZWFjaCAoJHBwIGluIEAoJHBsYW51bmcucGVyc29uZW4pKSB7ICRwZXJzb25NYXBb W3N0cmluZ10kcHAuaWRdID0gJHBwIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgICAgICAgICAgICAgICRva0NvdW50ID0gMA0KICAgICAgICAgICAgICAgICAgICAgICAg JGFiZ2VsZWhudCA9IEAoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGVyc3Rlc1BpZCA9ICRu dWxsDQogICAgICAgICAgICAgICAgICAgICAgICAkZXJzdGVzV2VydCA9ICRudWxsDQogICAgICAg ICAgICAgICAgICAgICAgICAkZXJzdGVzRGF0dW0gPSAkbnVsbA0KICAgICAgICAgICAgICAgICAg ICAgICAgJGxldHp0ZXNEYXR1bSA9ICRudWxsDQogICAgICAgICAgICAgICAgICAgICAgICAjIGFs dGVXZXJ0ZS1NYXAgZnVlciBMb2didWNoLVJlc3RvcmU6IEtleSA9ICI8ZGF0dW0+fDxwZXJzb25J ZD4iLg0KICAgICAgICAgICAgICAgICAgICAgICAgJGFsdGVXZXJ0ZSA9IEB7fQ0KICAgICAgICAg ICAgICAgICAgICAgICAgIyBzeW5jRWludHJhZWdlOiBwcm8gZ2VtdXRpZXJ0ZXIgWmVsbGUgZWlu IEVpbnRyYWcgZnVlcg0KICAgICAgICAgICAgICAgICAgICAgICAgIyBkZW4gTGl2ZS1TeW5jLUNo YW5nZS1Mb2cgKEZvcm1hdCB3aWUgU2luZ2xlLUNlbGwpLg0KICAgICAgICAgICAgICAgICAgICAg ICAgJHN5bmNFaW50cmFlZ2UgPSBOZXctT2JqZWN0IFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxp c3QNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRlIGluICRlaW50cmFlZ2UpIHsN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGF0dW0gPSBbc3RyaW5nXSRlLmRhdHVtDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBlcnNvbklkID0gW3N0cmluZ10kZS5wZXJzb25J ZA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3ZXJ0ID0gaWYgKCRlLlBTT2JqZWN0LlBy b3BlcnRpZXNbJ3dlcnQnXSAtYW5kICRudWxsIC1uZSAkZS53ZXJ0KSB7IFtzdHJpbmddJGUud2Vy dCB9IGVsc2UgeyAnJyB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC1ub3QgJGRh dHVtIC1vciAtbm90ICRwZXJzb25JZCkgeyAkYWJnZWxlaG50ICs9IEB7IGRhdHVtID0gJGRhdHVt OyBwZXJzb25JZCA9ICRwZXJzb25JZDsgZ3J1bmQgPSAndW52b2xsc3RhZW5kaWcnIH07IGNvbnRp bnVlIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkemllbFBlcnNvbiA9ICRwZXJzb25N YXBbJHBlcnNvbklkXQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0 LURhcmZaZWxsZUVkaXRpZXJlbiAkemllbFBlcnNvbikpIHsNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJGFiZ2VsZWhudCArPSBAeyBkYXR1bSA9ICRkYXR1bTsgcGVyc29uSWQgPSAk cGVyc29uSWQ7IGdydW5kID0gJ2tlaW4tcmVjaHQnIH0NCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKC1ub3QgJHBsYW51bmcuZWludHJhZWdlLlBTT2JqZWN0 LlByb3BlcnRpZXNbJGRhdHVtXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk cGxhbnVuZy5laW50cmFlZ2UgfCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlOYW1lICRkYXR1bSAt Tm90ZVByb3BlcnR5VmFsdWUgKFtQU0N1c3RvbU9iamVjdF1Ae30pIC1Gb3JjZQ0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFsdGVu IFdlcnQgbWVya2VuIEJFVk9SIHdpciBkaWUgWmVsbGUgdWViZXJzY2hyZWliZW4uDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgJGFsdGVyV2VydCA9ICcnDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKCRwbGFudW5nLmVpbnRyYWVnZS4kZGF0dW0uUFNPYmplY3QuUHJvcGVydGll c1skcGVyc29uSWRdKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhbHRlcldl cnQgPSBbc3RyaW5nXSRwbGFudW5nLmVpbnRyYWVnZS4kZGF0dW0uJHBlcnNvbklkDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhbHRl V2VydGVbKCJ7MH18ezF9IiAtZiAkZGF0dW0sICRwZXJzb25JZCldID0gJGFsdGVyV2VydA0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChbc3RyaW5nXTo6SXNOdWxsT3JFbXB0eSgkd2Vy dCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRwbGFudW5nLmVpbnRy YWVnZS4kZGF0dW0uUFNPYmplY3QuUHJvcGVydGllc1skcGVyc29uSWRdKSB7DQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAkcGxhbnVuZy5laW50cmFlZ2UuJGRhdHVtLlBTT2Jq ZWN0LlByb3BlcnRpZXMuUmVtb3ZlKCRwZXJzb25JZCkNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcGxhbnVuZy5laW50cmFlZ2UuJGRhdHVtLlBT T2JqZWN0LlByb3BlcnRpZXNbJHBlcnNvbklkXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJHBsYW51bmcuZWludHJhZWdlLiRkYXR1bS4kcGVyc29uSWQgPSAkd2VydA0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJHBsYW51bmcuZWludHJhZWdlLiRkYXR1bSB8IEFkZC1NZW1i ZXIgLU5vdGVQcm9wZXJ0eU5hbWUgJHBlcnNvbklkIC1Ob3RlUHJvcGVydHlWYWx1ZSAkd2VydCAt Rm9yY2UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2tDb3VudCsrDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRudWxsIC1lcSAkZXJzdGVzUGlkKSB7ICRl cnN0ZXNQaWQgPSAkcGVyc29uSWQ7ICRlcnN0ZXNXZXJ0ID0gJHdlcnQ7ICRlcnN0ZXNEYXR1bSA9 ICRkYXR1bSB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxldHp0ZXNEYXR1bSA9ICRk YXR1bQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2b2lkXSRzeW5jRWludHJhZWdlLkFk ZChAeyBkYXR1bSA9ICRkYXR1bTsgcGVyc29uSWQgPSAkcGVyc29uSWQ7IGFsdCA9ICIkYWx0ZXJX ZXJ0IjsgbmV1ID0gIiR3ZXJ0IiB9KQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgICAgICAgICAgIyBEYXRlaSBudXIgc2NocmVpYmVuLCB3ZW5uIHRhdHNhZWNobGlj aCB3YXMgZ2VhZW5kZXJ0IHd1cmRlLg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRva0Nv dW50IC1ndCAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUtSnNvbk9iamVj dCAncGxhbnVuZy5qc29uJyAkcGxhbnVuZyB8IE91dC1OdWxsDQogICAgICAgICAgICAgICAgICAg ICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQHsgdHlwID0gJ29rJzsgb2tD b3VudCA9ICRva0NvdW50OyBhYmdlbGVobnQgPSAkYWJnZWxlaG50OyBlcnN0ZXNQaWQgPSAkZXJz dGVzUGlkOyBlcnN0ZXNXZXJ0ID0gJGVyc3Rlc1dlcnQ7IGVyc3Rlc0RhdHVtID0gJGVyc3Rlc0Rh dHVtOyBsZXR6dGVzRGF0dW0gPSAkbGV0enRlc0RhdHVtOyBhbHRlV2VydGUgPSAkYWx0ZVdlcnRl OyBzeW5jRWludHJhZWdlID0gJHN5bmNFaW50cmFlZ2UgfQ0KICAgICAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgfSBjYXRjaCB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJy b3IgJFJlc3BvbnNlICgiTG9jay1GZWhsZXI6ICRfIikgNTAzOyBjb250aW51ZQ0KICAgICAgICAg ICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoJHJlcy50eXAgLWVxICdlcnJvcicpIHsgU2Vu ZC1FcnJvciAkUmVzcG9uc2UgJHJlcy5tc2cgJHJlcy5jb2RlOyBjb250aW51ZSB9DQogICAgICAg ICAgICAgICAgIyBMb2didWNoICsgTGl2ZS1TeW5jIE5BQ0ggZGVtIExvY2sgKGtlaW4gZ2VzY2hh Y2h0ZWx0ZXMgTG9jaykuDQogICAgICAgICAgICAgICAgaWYgKCRyZXMub2tDb3VudCAtZ3QgMCkg ew0KICAgICAgICAgICAgICAgICAgICBXcml0ZS1Mb2dFaW50cmFnICd6ZWxsZW4uYnVsay5nZWFl bmRlcnQnIEB7DQogICAgICAgICAgICAgICAgICAgICAgICBwZXJzb25JZCAgICA9ICRyZXMuZXJz dGVzUGlkDQogICAgICAgICAgICAgICAgICAgICAgICB3ZXJ0ICAgICAgICA9ICRyZXMuZXJzdGVz V2VydA0KICAgICAgICAgICAgICAgICAgICAgICAgYW56YWhsICAgICAgPSAkcmVzLm9rQ291bnQN CiAgICAgICAgICAgICAgICAgICAgICAgIGVyc3RlclRhZyAgID0gJHJlcy5lcnN0ZXNEYXR1bQ0K ICAgICAgICAgICAgICAgICAgICAgICAgbGV0enRlclRhZyAgPSAkcmVzLmxldHp0ZXNEYXR1bQ0K ICAgICAgICAgICAgICAgICAgICAgICAgYWJnZWxlaG50ICAgPSAkcmVzLmFiZ2VsZWhudC5Db3Vu dA0KICAgICAgICAgICAgICAgICAgICAgICAgIyBSZXN0b3JlLVBheWxvYWQ6IHBybyBaZWxsZSBk ZXIgV2VydCB2b3IgZGVyIEFlbmRlcnVuZy4NCiAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVX ZXJ0ZSAgID0gJHJlcy5hbHRlV2VydGUNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgICAgICAgICAjIExpdmUtU3luYzogcHJvIFplbGxlIGVpbiAnemVsbGUnLUVpbnRyYWcgaW5z IGNoYW5nZXMuanNvbi4NCiAgICAgICAgICAgICAgICAgICAgQWRkLUNoYW5nZUxvZ0VpbnRyYWVn ZSAnemVsbGUnICRyZXMuc3luY0VpbnRyYWVnZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0YXR1cyA9ICdvayc7IG9rID0g JHJlcy5va0NvdW50OyBhYmdlbGVobnQgPSBAKCRyZXMuYWJnZWxlaG50KSB9DQogICAgICAgICAg ICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICMgUE9TVCAvYXBpL3Bs YW51bmcva29tbWVudGFyDQogICAgICAgICAgICAjIEhhZW5ndCBlaW5lbiBuZXVlbiBLb21tZW50 YXIgYW4gZGllIExpc3RlIGZ1ZXIgKGRhdHVtLHBlcnNvbklkKSBhbi4NCiAgICAgICAgICAgICMg U2NoZW1hLU1pZ3JhdGlvbiAobGF6eSk6IHZvcmhhbmRlbmVyIFN0cmluZyBvZGVyIE9iamVrdC1F aW50cmFnIHdpcmQNCiAgICAgICAgICAgICMgYmVpbSBlcnN0ZW4gU2NocmVpYmVuIGluIGVpbmUg TGlzdGUga29udmVydGllcnQuIExlZXJlciBUZXh0IHdpcmQNCiAgICAgICAgICAgICMgYWJnZWxl aG50IOKAlCBMb2VzY2hlbiBlaW56ZWxuZXIgS29tbWVudGFyZSBsYWV1ZnQgdWViZXIgZGVuIERF TEVURS0NCiAgICAgICAgICAgICMgRW5kcHVua3QgKG1pdCBLb21tZW50YXItSUQpLCBkYXMgTG9l c2NoZW4gZ2FuemVyIExpc3RlbiBpc3QgdWViZXINCiAgICAgICAgICAgICMgZGllIEFQSSBuaWNo dCBtZWhyIG1vZWdsaWNoICh2ZXJzZWhlbnRsaWNoZXIgVmVybHVzdCBhdXNnZXNjaGxvc3Nlbiku DQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL3BsYW51bmcva29tbWVudGFyJyAtYW5k ICRNZXRob2QgLWVxICdQT1NUJykgew0KICAgICAgICAgICAgICAgICRib2R5ID0gUmVhZC1Cb2R5 ICRSZXF1ZXN0DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGJvZHkpIHsgU2VuZC1FcnJvciAk UmVzcG9uc2UgJ0FuZnJhZ2UgenUgZ3Jvc3MnIDQxMzsgY29udGludWUgfQ0KICAgICAgICAgICAg ICAgICRhID0gJGJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uDQogICAgICAgICAgICAgICAgJGRhdHVt ID0gJGEuZGF0dW0NCiAgICAgICAgICAgICAgICAkcGVyc29uSWQgPSBbc3RyaW5nXSRhLnBlcnNv bklkDQogICAgICAgICAgICAgICAgJHRleHQgPSBpZiAoJGEuUFNPYmplY3QuUHJvcGVydGllc1sn dGV4dCddKSB7ICgiJCgkYS50ZXh0KSIpLlRyaW0oKSB9IGVsc2UgeyAnJyB9DQogICAgICAgICAg ICAgICAgaWYgKC1ub3QgJHRleHQpIHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAk UmVzcG9uc2UgJ0xlZXJlciBLb21tZW50YXIg4oCUIGJpdHRlIERFTEVURSAvYXBpL3BsYW51bmcv a29tbWVudGFyIGZ1ZXIgTG9lc2NoZW4gdmVyd2VuZGVuJyA0MDANCiAgICAgICAgICAgICAgICAg ICAgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgIyBFZGl0LVJl Y2h0IHZvciBMb2NrIHBydWVmZW4NCiAgICAgICAgICAgICAgICAkcGxhbnVuZ0NoZWNrID0gUmVh ZC1Kc29uT2JqZWN0ICdwbGFudW5nLmpzb24nDQogICAgICAgICAgICAgICAgaWYgKCRudWxsIC1l cSAkcGxhbnVuZ0NoZWNrKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdwbGFudW5nLmpzb24gbmlj aHQgZ2VmdW5kZW4nIDQwNDsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICR6aWVsUGVyc29u ID0gJG51bGwNCiAgICAgICAgICAgICAgICBpZiAoJHBsYW51bmdDaGVjay5wZXJzb25lbikgew0K ICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcHAgaW4gQCgkcGxhbnVuZ0NoZWNrLnBlcnNv bmVuKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFtzdHJpbmddJHBwLmlkIC1lcSAk cGVyc29uSWQpIHsgJHppZWxQZXJzb24gPSAkcHA7IGJyZWFrIH0NCiAgICAgICAgICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1E YXJmWmVsbGVFZGl0aWVyZW4gJHppZWxQZXJzb24pKSB7DQogICAgICAgICAgICAgICAgICAgIFNl bmQtRXJyb3IgJFJlc3BvbnNlICdLZWluZSBCZXJlY2h0aWd1bmcgZnVlciBkaWVzZW4gS29tbWVu dGFyJyA0MDM7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRq ZXR6dCA9IChHZXQtRGF0ZSkuVG9TdHJpbmcoJ28nKSAgIyBJU08gODYwMSBtaXQgWmVpdHpvbmUN CiAgICAgICAgICAgICAgICAkYmVudXR6ZXIgPSAiJERvbWFpblwkVXNlcm5hbWUiDQogICAgICAg ICAgICAgICAgJG5ldWVJZCA9ICdrXycgKyAoW0RhdGVUaW1lT2Zmc2V0XTo6Tm93LlRvVW5peFRp bWVNaWxsaXNlY29uZHMoKSkgKyAnXycgKyAoR2V0LVJhbmRvbSAtTWF4aW11bSA5OTk5OSkNCiAg ICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAkbnVsbCA9IEludm9rZS1X aXRoRmlsZUxvY2sgJ3BsYW51bmcuanNvbicgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHBs YW51bmcgPSBSZWFkLUpzb25PYmplY3QgJ3BsYW51bmcuanNvbicNCiAgICAgICAgICAgICAgICAg ICAgICAgIGlmICgkbnVsbCAtZXEgJHBsYW51bmcpIHsgcmV0dXJuICRudWxsIH0NCiAgICAgICAg ICAgICAgICAgICAgICAgIGlmICgtbm90ICRwbGFudW5nLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2tv bW1lbnRhcmUnXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwbGFudW5nIHwgQWRk LU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAna29tbWVudGFyZScgLU5vdGVQcm9wZXJ0eVZhbHVl IChOZXctT2JqZWN0IFBTT2JqZWN0KSAtRm9yY2UNCiAgICAgICAgICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtbm90ICRwbGFudW5nLmtvbW1lbnRhcmUuUFNP YmplY3QuUHJvcGVydGllc1skZGF0dW1dKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg JHBsYW51bmcua29tbWVudGFyZSB8IEFkZC1NZW1iZXIgLU5vdGVQcm9wZXJ0eU5hbWUgJGRhdHVt IC1Ob3RlUHJvcGVydHlWYWx1ZSAoTmV3LU9iamVjdCBQU09iamVjdCkgLUZvcmNlDQogICAgICAg ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAjIEFrdHVlbGxlIExp c3RlIGhlcmF1c3ppZWhlbiArIGdnZi4gYXVzIEFsdHNjaGVtYSBtaWdyaWVyZW4uDQogICAgICAg ICAgICAgICAgICAgICAgICAjIExpc3RlIGlzdCBjaHJvbm9sb2dpc2NoIChhZWx0ZXN0ZSB6dWVy c3QpLCBkZXIgbmV1ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgIyBFaW50cmFnIHdpcmQgaGlu dGVuIGFuZ2VoYWVuZ3QuDQogICAgICAgICAgICAgICAgICAgICAgICAkbGlzdGUgPSBOZXctT2Jq ZWN0IFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3Rbb2JqZWN0XQ0KICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKCRwbGFudW5nLmtvbW1lbnRhcmUuJGRhdHVtLlBTT2JqZWN0LlByb3Bl cnRpZXNbJHBlcnNvbklkXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2b3JoID0g JHBsYW51bmcua29tbWVudGFyZS4kZGF0dW0uJHBlcnNvbklkDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKCR2b3JoIC1pcyBbc3RyaW5nXSAtYW5kICR2b3JoKSB7DQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgQWx0ZXIgU3RyaW5nLUVpbnRyYWcg4oCUIGVpbiBFbGVt ZW50IG9obmUgTWV0YQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGlzdGUuQWRk KFtQU0N1c3RvbU9iamVjdF1Aew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWQgICAgICAgICAgID0gJ2tfbGVnYWN5XycgKyAoR2V0LVJhbmRvbSAtTWF4aW11bSA5OTk5OSkN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgICAgICAgICA9ICR2b3Jo DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZWFlbmRlcnRBbSAgPSAkbnVs bA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VhZW5kZXJ0Vm9uID0gJG51 bGwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgfCBPdXQtTnVsbA0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkdm9yaCAtaXMgW2FycmF5XSAtb3IgKCR2 b3JoIC1pcyBbU3lzdGVtLkNvbGxlY3Rpb25zLklFbnVtZXJhYmxlXSAtYW5kIC1ub3QgKCR2b3Jo IC1pcyBbc3RyaW5nXSkpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU2No b24gZWluIEFycmF5IChuZXVlcyBTY2hlbWEpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZvcmVhY2ggKCRlIGluIEAoJHZvcmgpKSB7ICRsaXN0ZS5BZGQoJGUpIHwgT3V0LU51bGwg fQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkdm9yaCAtYW5kICR2b3Jo LlBTT2JqZWN0LlByb3BlcnRpZXNbJ3RleHQnXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjIEFsdGVzIE9iamVrdC1TY2hlbWEgeyB0ZXh0LCBnZWFlbmRlcnRBbSwgZ2VhZW5k ZXJ0Vm9uIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1pZ0lkID0gaWYgKCR2 b3JoLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2lkJ10pIHsgW3N0cmluZ10kdm9yaC5pZCB9IGVsc2Ug eyAna19sZWdhY3lfJyArIChHZXQtUmFuZG9tIC1NYXhpbXVtIDk5OTk5KSB9DQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICRsaXN0ZS5BZGQoW1BTQ3VzdG9tT2JqZWN0XUB7DQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCAgICAgICAgICAgPSAkbWlnSWQNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgICAgICAgICA9IFtzdHJpbmdd JHZvcmgudGV4dA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VhZW5kZXJ0 QW0gID0gaWYgKCR2b3JoLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2dlYWVuZGVydEFtJ10pICB7ICR2 b3JoLmdlYWVuZGVydEFtIH0gIGVsc2UgeyAkbnVsbCB9DQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnZWFlbmRlcnRWb24gPSBpZiAoJHZvcmguUFNPYmplY3QuUHJvcGVydGll c1snZ2VhZW5kZXJ0Vm9uJ10pIHsgJHZvcmguZ2VhZW5kZXJ0Vm9uIH0gZWxzZSB7ICRudWxsIH0N CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgfCBPdXQtTnVsbA0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgICAgICAgICAgICAgICRsaXN0ZS5BZGQoW1BTQ3VzdG9tT2JqZWN0XUB7DQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWQgICAgICAgICAgID0gJG5ldWVJZA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRleHQgICAgICAgICA9ICR0ZXh0DQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2VhZW5kZXJ0QW0gID0gJGpldHp0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2VhZW5kZXJ0Vm9uID0gJGJlbnV0emVyDQogICAgICAgICAgICAgICAgICAgICAgICB9KSB8IE91 dC1OdWxsDQogICAgICAgICAgICAgICAgICAgICAgICAjIFp1cnVlY2sgYWxzIEFycmF5IChQUy1T ZXJpYWxpc2llcnVuZykNCiAgICAgICAgICAgICAgICAgICAgICAgICRhcnIgPSBAKCRsaXN0ZS5U b0FycmF5KCkpDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHBsYW51bmcua29tbWVudGFy ZS4kZGF0dW0uUFNPYmplY3QuUHJvcGVydGllc1skcGVyc29uSWRdKSB7DQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgJHBsYW51bmcua29tbWVudGFyZS4kZGF0dW0uJHBlcnNvbklkID0gJGFy cg0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAkcGxhbnVuZy5rb21tZW50YXJlLiRkYXR1bSB8IEFkZC1NZW1iZXIgLU5vdGVQcm9w ZXJ0eU5hbWUgJHBlcnNvbklkIC1Ob3RlUHJvcGVydHlWYWx1ZSAkYXJyIC1Gb3JjZQ0KICAgICAg ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUtSnNvbk9i amVjdCAncGxhbnVuZy5qc29uJyAkcGxhbnVuZyB8IE91dC1OdWxsDQogICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gJG51bGwNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ICAgIH0gY2F0Y2ggew0KICAgICAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25zZSAo IkxvY2stRmVobGVyOiAkXyIpIDUwMzsgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAg ICAgICAgICAgICAgIyBSZWRhY3Rpb24gd2llIGJlaSBrb21tZW50YXIuZ2Vsb2VzY2h0IChTcHJp bnQgMSDigJQgU2ljaGVyaGVpdHMtDQogICAgICAgICAgICAgICAgIyBOb3RicmVtc2UgMjAyNi0w NS0yOCk6IFZvbGx0ZXh0IGJsZWlidCBpbiBwbGFudW5nLmpzb24gKGRvcnQNCiAgICAgICAgICAg ICAgICAjIGVkaXRpZXJiYXIvbG9lc2NoYmFyKSwgZGFzIExvZ2J1Y2ggYmVrb21tdCBudXIgVm9y c2NoYXUgKyBMYWVuZ2UuDQogICAgICAgICAgICAgICAgIyBWZXJtZWlkZXQgUElJLUVjaG8sIHdl bm4gZWluIEtvbW1lbnRhciBzcGFldGVyIGdlbG9lc2NodCB3aXJkDQogICAgICAgICAgICAgICAg IyBhYmVyIGltIExvZyBpbW1lciBub2NoIGtvbXBsZXR0IGxpZXN0IHN0ZWh0Lg0KICAgICAgICAg ICAgICAgICR0ZXh0Vm9yc2NoYXUgPSAkdGV4dA0KICAgICAgICAgICAgICAgIGlmICgkdGV4dFZv cnNjaGF1Lkxlbmd0aCAtZ3QgNDApIHsgJHRleHRWb3JzY2hhdSA9ICR0ZXh0Vm9yc2NoYXUuU3Vi c3RyaW5nKDAsIDQwKSArICfigKYnIH0NCiAgICAgICAgICAgICAgICBXcml0ZS1Mb2dFaW50cmFn ICdrb21tZW50YXIuaGluenVnZWZ1ZWd0JyBAew0KICAgICAgICAgICAgICAgICAgICBkYXR1bSAg ICAgICAgID0gJGRhdHVtDQogICAgICAgICAgICAgICAgICAgIHBlcnNvbklkICAgICAgPSAkcGVy c29uSWQNCiAgICAgICAgICAgICAgICAgICAga29tbWVudGFySWQgICA9ICRuZXVlSWQNCiAgICAg ICAgICAgICAgICAgICAgdGV4dFZvcnNjaGF1ICA9ICR0ZXh0Vm9yc2NoYXUNCiAgICAgICAgICAg ICAgICAgICAgdGV4dExhZW5nZSAgICA9ICR0ZXh0Lkxlbmd0aA0KICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgICAgICBBZGQtQ2hhbmdlTG9nRWludHJhZyAna29tbWVudGFyJyBAew0KICAg ICAgICAgICAgICAgICAgICBkYXR1bSAgICA9ICRkYXR1bQ0KICAgICAgICAgICAgICAgICAgICBw ZXJzb25JZCA9ICRwZXJzb25JZA0KICAgICAgICAgICAgICAgICAgICBrb21tZW50YXJJZCA9ICRu ZXVlSWQNCiAgICAgICAgICAgICAgICAgICAgIyBMaXZlLVN5bmMgYnJhdWNodCBkZW4gVGV4dCBu aWNodCDigJQgbmFlY2hzdGVyIFJlbmRlciBsYWVkdA0KICAgICAgICAgICAgICAgICAgICAjIGlo biBhdXMgcGxhbnVuZy5qc29uLiBOdXIgTWV0YWRhdGVuIGZ1ZXIgQWt0aXZpdGFldHMtQW56ZWln ZS4NCiAgICAgICAgICAgICAgICAgICAgemVpdHN0ZW1wZWwgPSAkamV0enQNCiAgICAgICAgICAg ICAgICB9DQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAew0KICAg ICAgICAgICAgICAgICAgICBzdGF0dXMgICAgICAgPSAnaGluenVnZWZ1ZWd0Jw0KICAgICAgICAg ICAgICAgICAgICBrb21tZW50YXJJZCAgPSAkbmV1ZUlkDQogICAgICAgICAgICAgICAgICAgIGdl YWVuZGVydEFtICA9ICRqZXR6dA0KICAgICAgICAgICAgICAgICAgICBnZWFlbmRlcnRWb24gPSAk YmVudXR6ZXINCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAg ICAgICAgICAgIH0NCg0KICAgICAgICAgICAgIyBERUxFVEUgL2FwaS9wbGFudW5nL2tvbW1lbnRh cg0KICAgICAgICAgICAgIyBCb2R5OiB7IGRhdHVtLCBwZXJzb25JZCwga29tbWVudGFySWQgfQ0K ICAgICAgICAgICAgIyBCZXJlY2h0aWd1bmc6IFN1cGVyVXNlciBvZGVyIEdlc2FtdHZlcmFudHdv cnRsaWNoZS4gQW5kZXJlIFJvbGxlbg0KICAgICAgICAgICAgIyBiZWtvbW1lbiA0MDMg4oCUIGF1 Y2ggZGVyIFZlcmZhc3NlciBzZWxic3QgZGFyZiBuaWNodCBsb2VzY2hlbg0KICAgICAgICAgICAg IyAoYmV3dXNzdGUgRGVzaWduZW50c2NoZWlkdW5nOiBLb21tZW50YXItVmVybGF1ZiBpc3QgQ2hy b25paykuDQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL3BsYW51bmcva29tbWVudGFy JyAtYW5kICRNZXRob2QgLWVxICdERUxFVEUnKSB7DQogICAgICAgICAgICAgICAgJGJvZHkgPSBS ZWFkLUJvZHkgJFJlcXVlc3QNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkYm9keSkgeyBTZW5k LUVycm9yICRSZXNwb25zZSAnQW5mcmFnZSB6dSBncm9zcycgNDEzOyBjb250aW51ZSB9DQogICAg ICAgICAgICAgICAgJGEgPSAkYm9keSB8IENvbnZlcnRGcm9tLUpzb24NCiAgICAgICAgICAgICAg ICAkZGF0dW0gPSAkYS5kYXR1bQ0KICAgICAgICAgICAgICAgICRwZXJzb25JZCA9IFtzdHJpbmdd JGEucGVyc29uSWQNCiAgICAgICAgICAgICAgICAka29tbWVudGFySWQgPSBbc3RyaW5nXSRhLmtv bW1lbnRhcklkDQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGRhdHVtIC1vciAtbm90ICRwZXJz b25JZCAtb3IgLW5vdCAka29tbWVudGFySWQpIHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1F cnJvciAkUmVzcG9uc2UgJ2RhdHVtLCBwZXJzb25JZCB1bmQga29tbWVudGFySWQgc2luZCBQZmxp Y2h0JyA0MDA7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRy ID0gR2V0LVJlY2h0ZQ0KICAgICAgICAgICAgICAgIGlmICgtbm90ICgkci5pc3RTdXBlclVzZXIg LW9yICRyLmlzdEdlc2FtdHZlcmFudHdvcnRsaWNoKSkgew0KICAgICAgICAgICAgICAgICAgICBT ZW5kLUVycm9yICRSZXNwb25zZSAnTnVyIFN1cGVyVXNlciB1bmQgR2VzYW10dmVyYW50d29ydGxp Y2hlIGR1ZXJmZW4gS29tbWVudGFyZSBsb2VzY2hlbicgNDAzDQogICAgICAgICAgICAgICAgICAg IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRnZWxvZXNjaHRl clRleHQgPSAkbnVsbA0KICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAg ICRlcmcgPSBJbnZva2UtV2l0aEZpbGVMb2NrICdwbGFudW5nLmpzb24nIHsNCiAgICAgICAgICAg ICAgICAgICAgICAgICRwbGFudW5nID0gUmVhZC1Kc29uT2JqZWN0ICdwbGFudW5nLmpzb24nDQog ICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICRwbGFudW5nIC1vciAtbm90ICRw bGFudW5nLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2tvbW1lbnRhcmUnXSkgeyByZXR1cm4gQHsgdGV4 dCA9ICRudWxsIH0gfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC1ub3QgJHBsYW51bmcu a29tbWVudGFyZS5QU09iamVjdC5Qcm9wZXJ0aWVzWyRkYXR1bV0pIHsgcmV0dXJuIEB7IHRleHQg PSAkbnVsbCB9IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtbm90ICRwbGFudW5nLmtv bW1lbnRhcmUuJGRhdHVtLlBTT2JqZWN0LlByb3BlcnRpZXNbJHBlcnNvbklkXSkgeyByZXR1cm4g QHsgdGV4dCA9ICRudWxsIH0gfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHZvcmggPSAkcGxh bnVuZy5rb21tZW50YXJlLiRkYXR1bS4kcGVyc29uSWQNCiAgICAgICAgICAgICAgICAgICAgICAg ICMgQ29tcGF0IGZ1ZXIgQWx0LUZvcm1hdGUgKFNwcmludCAzIOKAlCBEcmlmdC9Sb2J1c3RoZWl0 DQogICAgICAgICAgICAgICAgICAgICAgICAjIDIwMjYtMDUtMjgpOiBDbGllbnQga2VubnplaWNo bmV0IFN0cmluZy0gb2RlciBTaW5nbGUtDQogICAgICAgICAgICAgICAgICAgICAgICAjIE9iamVj dC1vaG5lLUlEIEVpbnRyYWVnZSBpbiBrb21tZW50YXJMaXN0ZSgpIG1pdA0KICAgICAgICAgICAg ICAgICAgICAgICAgIyBTZW50aW5lbC1JRCAna19sZWdhY3knLiBERUxFVEUgbWl0IGRpZXNlciBJ RCBnZWdlbg0KICAgICAgICAgICAgICAgICAgICAgICAgIyBlaW5lbiBBbHQtRWludHJhZyA9IGtv bXBsZXR0ZXIgRWludHJhZyB3aXJkIGVudGZlcm50DQogICAgICAgICAgICAgICAgICAgICAgICAj IChNaWdyYXRpb24gKyBMb2VzY2h1bmcgaW4gZWluZW0gU2Nocml0dCkuDQogICAgICAgICAgICAg ICAgICAgICAgICAkdHJlZmZlciA9ICRudWxsDQogICAgICAgICAgICAgICAgICAgICAgICAkbmV1 ZUxpc3RlID0gTmV3LU9iamVjdCBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0W29iamVj dF0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdm9yaCAtaXMgW3N0cmluZ10gLWFuZCAk dm9yaCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgka29tbWVudGFySWQgLWVx ICdrX2xlZ2FjeScpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRyZWZmZXIg PSBbUFNDdXN0b21PYmplY3RdQHsgdGV4dCA9ICR2b3JoIH0NCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g QHsgdGV4dCA9ICRudWxsOyBmZWhsZXIgPSAna29tbWVudGFyTmljaHRHZWZ1bmRlbicgfQ0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz ZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpc3RlID0gQCgpDQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKCR2b3JoIC1pcyBbYXJyYXldIC1vciAoJHZvcmggLWlzIFtT eXN0ZW0uQ29sbGVjdGlvbnMuSUVudW1lcmFibGVdIC1hbmQgLW5vdCAoJHZvcmggLWlzIFtzdHJp bmddKSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpc3RlID0gQCgkdm9y aCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJHZvcmggLWFuZCAkdm9y aC5QU09iamVjdC5Qcm9wZXJ0aWVzWyd0ZXh0J10pIHsNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJGFsdElkID0gaWYgKCR2b3JoLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2lkJ10pIHsg W3N0cmluZ10kdm9yaC5pZCB9IGVsc2UgeyAnJyB9DQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmICgtbm90ICRhbHRJZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKCRrb21tZW50YXJJZCAtZXEgJ2tfbGVnYWN5Jykgew0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICR0cmVmZmVyID0gJHZvcmgNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIEB7IHRleHQgPSAkbnVsbDsgZmVobGVyID0gJ2tvbW1lbnRh ck5pY2h0R2VmdW5kZW4nIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICRsaXN0ZSA9IEAoJHZvcmgpDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKC1ub3QgJHRyZWZmZXIpIHsNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGUgaW4gJGxpc3RlKSB7DQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAkZWlkID0gaWYgKCRlIC1hbmQgJGUuUFNPYmplY3QuUHJv cGVydGllc1snaWQnXSkgeyBbc3RyaW5nXSRlLmlkIH0gZWxzZSB7ICcnIH0NCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZWlkIC1lcSAka29tbWVudGFySWQpIHsNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHJlZmZlciA9ICRlDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICRuZXVlTGlzdGUuQWRkKCRlKSB8IE91dC1OdWxsDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAkdHJlZmZl cikgeyByZXR1cm4gQHsgdGV4dCA9ICRudWxsOyBmZWhsZXIgPSAna29tbWVudGFyTmljaHRHZWZ1 bmRlbicgfSB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG5ldWVMaXN0ZS5Db3VudCAt ZXEgMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTGV0enRlciBLb21tZW50YXIg ZW50ZmVybnQgLT4gUHJvcGVydHkga29tcGxldHQgcmF1cw0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICRwbGFudW5nLmtvbW1lbnRhcmUuJGRhdHVtLlBTT2JqZWN0LlByb3BlcnRpZXMuUmVt b3ZlKCRwZXJzb25JZCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIExlZXJlciBUYWdl cy1CdWNrZXQgYXVmcmFldW1lbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YWdQcm9w cyA9IEAoJHBsYW51bmcua29tbWVudGFyZS4kZGF0dW0uUFNPYmplY3QuUHJvcGVydGllcykNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRhZ1Byb3BzLkNvdW50IC1lcSAwKSB7DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwbGFudW5nLmtvbW1lbnRhcmUuUFNPYmpl Y3QuUHJvcGVydGllcy5SZW1vdmUoJGRhdHVtKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgJHBsYW51bmcua29tbWVudGFyZS4kZGF0dW0uJHBlcnNvbklkID0gQCgkbmV1ZUxp c3RlLlRvQXJyYXkoKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICAgICAgICAgIFdyaXRlLUpzb25PYmplY3QgJ3BsYW51bmcuanNvbicgJHBsYW51bmcgfCBPdXQt TnVsbA0KICAgICAgICAgICAgICAgICAgICAgICAgJGVudGZlcm50VGV4dCA9IGlmICgkdHJlZmZl ci5QU09iamVjdC5Qcm9wZXJ0aWVzWyd0ZXh0J10pIHsgW3N0cmluZ10kdHJlZmZlci50ZXh0IH0g ZWxzZSB7ICcnIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBAeyB0ZXh0ID0gJGVu dGZlcm50VGV4dCB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAg aWYgKCRlcmcuZmVobGVyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGVyZy5mZWhs ZXIgLWVxICdrb21tZW50YXJOaWNodEdlZnVuZGVuJykgew0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICdLb21tZW50YXIgbWl0IGRpZXNlciBJRCBuaWNo dCBnZWZ1bmRlbicgNDA0OyBjb250aW51ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAg ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICRnZWxvZXNjaHRlclRleHQg PSAkZXJnLnRleHQNCiAgICAgICAgICAgICAgICB9IGNhdGNoIHsNCiAgICAgICAgICAgICAgICAg ICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgKCJMb2NrLUZlaGxlcjogJF8iKSA1MDM7IGNvbnRpbnVl DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICMgUmVkYWN0aW9uIChTcHJpbnQg MSDigJQgU2ljaGVyaGVpdHMtTm90YnJlbXNlIDIwMjYtMDUtMjgpOg0KICAgICAgICAgICAgICAg ICMgUElJLVNjaHV0ei4gRnJ1ZWhlciBsYW5kZXRlIGRlciB2b2xsc3RhZW5kaWdlIEtvbW1lbnRh ci1UZXh0IGltDQogICAgICAgICAgICAgICAgIyBMb2didWNoIOKAlCB3ZW5uIGRlciBLb21tZW50 YXIgS3JhbmtoZWl0cy0vRGlzemlwbGluYXItSW5mbyBlbnRoaWVsdCwNCiAgICAgICAgICAgICAg ICAjIGxlYnRlIHNpZSBuYWNoICdMb2VzY2hlbicgd2VpdGVyIGltIExvZy4gSmV0enQgbnVyIExh ZW5nZSArIGt1cnplcg0KICAgICAgICAgICAgICAgICMgQXVzenVnICg0MCBaZWljaGVuKSwgZ2Vu dWcgZnVlciBOYWNodm9sbHppZWhiYXJrZWl0IG9obmUgVm9sbHRleHQuDQogICAgICAgICAgICAg ICAgJHRleHRWb3JzY2hhdSA9ICcnDQogICAgICAgICAgICAgICAgaWYgKCRnZWxvZXNjaHRlclRl eHQpIHsNCiAgICAgICAgICAgICAgICAgICAgJGt1cnogPSAkZ2Vsb2VzY2h0ZXJUZXh0DQogICAg ICAgICAgICAgICAgICAgIGlmICgka3Vyei5MZW5ndGggLWd0IDQwKSB7ICRrdXJ6ID0gJGt1cnou U3Vic3RyaW5nKDAsIDQwKSArICfigKYnIH0NCiAgICAgICAgICAgICAgICAgICAgJHRleHRWb3Jz Y2hhdSA9ICRrdXJ6DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICR0ZXh0TGFl bmdlID0gaWYgKCRnZWxvZXNjaHRlclRleHQpIHsgJGdlbG9lc2NodGVyVGV4dC5MZW5ndGggfSBl bHNlIHsgMCB9DQogICAgICAgICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAna29tbWVudGFyLmdl bG9lc2NodCcgQHsNCiAgICAgICAgICAgICAgICAgICAgZGF0dW0gICAgICAgICA9ICRkYXR1bQ0K ICAgICAgICAgICAgICAgICAgICBwZXJzb25JZCAgICAgID0gJHBlcnNvbklkDQogICAgICAgICAg ICAgICAgICAgIGtvbW1lbnRhcklkICAgPSAka29tbWVudGFySWQNCiAgICAgICAgICAgICAgICAg ICAgdGV4dFZvcnNjaGF1ICA9ICR0ZXh0Vm9yc2NoYXUNCiAgICAgICAgICAgICAgICAgICAgdGV4 dExhZW5nZSAgICA9ICR0ZXh0TGFlbmdlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ICAgIEFkZC1DaGFuZ2VMb2dFaW50cmFnICdrb21tZW50YXInIEB7DQogICAgICAgICAgICAgICAg ICAgIGRhdHVtICAgID0gJGRhdHVtDQogICAgICAgICAgICAgICAgICAgIHBlcnNvbklkID0gJHBl cnNvbklkDQogICAgICAgICAgICAgICAgICAgIGtvbW1lbnRhcklkID0gJGtvbW1lbnRhcklkDQog ICAgICAgICAgICAgICAgICAgICMgTGl2ZS1TeW5jLUNoYW5uZWwgYnJhdWNodCBkZW4gVGV4dCBu aWNodCDigJQgQnJvd3NlciBsYWVkdA0KICAgICAgICAgICAgICAgICAgICAjIGJlaSBuYWVjaHN0 ZW0gUmVuZGVyIGVoIGF1cyBwbGFudW5nLmpzb24gKHdvIGRlciBFaW50cmFnDQogICAgICAgICAg ICAgICAgICAgICMgd2VnIGlzdCkuIEhpZXIgbnVyIE1ldGFkYXRlbiBmdWVyIEFrdGl2aXRhZXRz LUFuemVpZ2UuDQogICAgICAgICAgICAgICAgICAgIG5ldSAgICAgID0gJycNCiAgICAgICAgICAg ICAgICAgICAgemVpdHN0ZW1wZWwgPSAoR2V0LURhdGUpLlRvU3RyaW5nKCdvJykNCiAgICAgICAg ICAgICAgICB9DQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBz dGF0dXMgPSAnZ2Vsb2VzY2h0Jzsga29tbWVudGFySWQgPSAka29tbWVudGFySWQgfQ0KICAgICAg ICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMgPT09PT0g UEVSU09ORU4gPT09PT0NCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvcGVyc29uZW4n IC1hbmQgJE1ldGhvZCAtZXEgJ1BPU1QnKSB7DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRl c3QtSXN0QWRtaW4pKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdLZWluZSBBZG1pbi1SZWNodGUn IDQwMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRib2R5ID0gUmVhZC1Cb2R5ICRSZXF1 ZXN0DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGJvZHkpIHsgU2VuZC1FcnJvciAkUmVzcG9u c2UgJ0FuZnJhZ2UgenUgZ3Jvc3MnIDQxMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRu ZXUgPSAkYm9keSB8IENvbnZlcnRGcm9tLUpzb24NCiAgICAgICAgICAgICAgICAjIFJlYWQtTW9k aWZ5LVdyaXRlIGF0b21hciBpbiBkZXIgRGF0ZWktU3BlcnJlLiBXaWNodGlnIG5pY2h0IG51cg0K ICAgICAgICAgICAgICAgICMgZ2VnZW4gTG9zdCBVcGRhdGVzLCBzb25kZXJuIGdlZ2VuIGRpZSBt YXhJZC1SYWNlOiB6d2VpIHBhcmFsbGVsZQ0KICAgICAgICAgICAgICAgICMgUGVyc29uZW4tQW5s YWdlbiB3dWVyZGVuIHNvbnN0IGRpZXNlbGJlIG1heElkIGxlc2VuIHVuZCBJREVOVElTQ0hFDQog ICAgICAgICAgICAgICAgIyBJRHMgdmVyZ2ViZW4gKGRvcHBlbHRlIFBlcnNvbmVuLUlEcyA9IGtv cnJ1cHRlciBTdGF0ZSkuDQogICAgICAgICAgICAgICAgJHBlcnNSZXMgPSAkbnVsbA0KICAgICAg ICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgJHBlcnNSZXMgPSBJbnZva2UtV2l0aEZp bGVMb2NrICdwbGFudW5nLmpzb24nIHsNCiAgICAgICAgICAgICAgICAkcGxhbnVuZyA9IFJlYWQt SnNvbk9iamVjdCAncGxhbnVuZy5qc29uJw0KICAgICAgICAgICAgICAgICRtYXhJZCA9IDANCiAg ICAgICAgICAgICAgICBmb3JlYWNoICgkcCBpbiAkcGxhbnVuZy5wZXJzb25lbikgeyBpZiAoJHAu aWQgLWd0ICRtYXhJZCkgeyAkbWF4SWQgPSAkcC5pZCB9IH0NCiAgICAgICAgICAgICAgICAkbmV1 ZUlkID0gJG1heElkICsgMQ0KDQogICAgICAgICAgICAgICAgIyBFaW5yZWlodW5ncy1Mb2dpazog InVudGVuIiAoRGVmYXVsdCksICJ2b3IiIG9kZXIgIm5hY2giIGVpbmVyIFJlZmVyZW56cGVyc29u DQogICAgICAgICAgICAgICAgJGVpbnJlaWhlbiA9ICd1bnRlbicNCiAgICAgICAgICAgICAgICBp ZiAoJG5ldS5QU09iamVjdC5Qcm9wZXJ0aWVzWydlaW5yZWloZW4nXSAtYW5kICRuZXUuZWlucmVp aGVuKSB7ICRlaW5yZWloZW4gPSAoW3N0cmluZ10kbmV1LmVpbnJlaWhlbikuVG9Mb3dlcigpIH0N CiAgICAgICAgICAgICAgICAkcmVmSWQgPSAkbnVsbA0KICAgICAgICAgICAgICAgIGlmICgkbmV1 LlBTT2JqZWN0LlByb3BlcnRpZXNbJ3JlZmVyZW56SWQnXSAtYW5kICRudWxsIC1uZSAkbmV1LnJl ZmVyZW56SWQpIHsgJHJlZklkID0gW2ludF0kbmV1LnJlZmVyZW56SWQgfQ0KDQogICAgICAgICAg ICAgICAgJHppZWxQb3MgPSAkbnVsbA0KICAgICAgICAgICAgICAgIGlmICgoJGVpbnJlaWhlbiAt ZXEgJ3ZvcicgLW9yICRlaW5yZWloZW4gLWVxICduYWNoJykgLWFuZCAkbnVsbCAtbmUgJHJlZklk KSB7DQogICAgICAgICAgICAgICAgICAgICRyZWZQb3MgPSAkbnVsbA0KICAgICAgICAgICAgICAg ICAgICBmb3JlYWNoICgkcCBpbiAkcGxhbnVuZy5wZXJzb25lbikgew0KICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKFtpbnRdJHAuaWQgLWVxICRyZWZJZCkgew0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICRyZWZQb3MgPSBpZiAoJHAuUFNPYmplY3QuUHJvcGVydGllc1sncG9zaXRpb24n XSAtYW5kICRwLnBvc2l0aW9uKSB7IFtpbnRdJHAucG9zaXRpb24gfSBlbHNlIHsgMCB9DQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJG51bGwgLW5l ICRyZWZQb3MpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR6aWVsUG9zID0gaWYgKCRlaW5y ZWloZW4gLWVxICd2b3InKSB7ICRyZWZQb3MgfSBlbHNlIHsgJHJlZlBvcyArIDEgfQ0KICAgICAg ICAgICAgICAgICAgICAgICAgIyBQb3NpdGlvbmVuIGFiIHppZWxQb3MgdW0gMSBuYWNoIGhpbnRl biBzY2hpZWJlbg0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHAgaW4gJHBsYW51 bmcucGVyc29uZW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHAgPSBpZiAoJHAu UFNPYmplY3QuUHJvcGVydGllc1sncG9zaXRpb24nXSAtYW5kICRwLnBvc2l0aW9uKSB7IFtpbnRd JHAucG9zaXRpb24gfSBlbHNlIHsgMCB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KCRwcCAtZ2UgJHppZWxQb3MpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KCRwLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3Bvc2l0aW9uJ10pIHsgJHAucG9zaXRpb24gPSAkcHAg KyAxIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7ICRwIHwgQWRkLU1l bWJlciAtTm90ZVByb3BlcnR5TmFtZSAncG9zaXRpb24nIC1Ob3RlUHJvcGVydHlWYWx1ZSAoJHBw ICsgMSkgLUZvcmNlIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgaWYgKCRudWxsIC1lcSAkemllbFBvcykgew0KICAgICAgICAgICAg ICAgICAgICAkbWF4UG9zID0gMA0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcCBpbiAk cGxhbnVuZy5wZXJzb25lbikgeyAkcG9zID0gaWYgKCRwLnBvc2l0aW9uKSB7IFtpbnRdJHAucG9z aXRpb24gfSBlbHNlIHsgMCB9OyBpZiAoJHBvcyAtZ3QgJG1heFBvcykgeyAkbWF4UG9zID0gJHBv cyB9IH0NCiAgICAgICAgICAgICAgICAgICAgJHppZWxQb3MgPSAkbWF4UG9zICsgMQ0KICAgICAg ICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICRwZXJzb24gPSBbb3JkZXJlZF1Aew0KICAg ICAgICAgICAgICAgICAgICBpZCA9ICRuZXVlSWQNCiAgICAgICAgICAgICAgICAgICAgYWt0aXYg PSBpZiAoJG5ldS5QU09iamVjdC5Qcm9wZXJ0aWVzWydha3RpdiddKSB7ICRuZXUuYWt0aXYgfSBl bHNlIHsgJHRydWUgfQ0KICAgICAgICAgICAgICAgICAgICBuYW1lID0gJG5ldS5uYW1lDQogICAg ICAgICAgICAgICAgICAgIHZvcm5hbWUgPSBpZiAoJG5ldS5QU09iamVjdC5Qcm9wZXJ0aWVzWyd2 b3JuYW1lJ10pIHsgJG5ldS52b3JuYW1lIH0gZWxzZSB7ICcnIH0NCiAgICAgICAgICAgICAgICAg ICAgZGllbnN0Z3JhZCA9IGlmICgkbmV1LlBTT2JqZWN0LlByb3BlcnRpZXNbJ2RpZW5zdGdyYWQn XSkgeyAkbmV1LmRpZW5zdGdyYWQgfSBlbHNlIHsgJycgfQ0KICAgICAgICAgICAgICAgICAgICBm dW5rdGlvbiA9IGlmICgkbmV1LlBTT2JqZWN0LlByb3BlcnRpZXNbJ2Z1bmt0aW9uJ10pIHsgJG5l dS5mdW5rdGlvbiB9IGVsc2UgeyAnJyB9DQogICAgICAgICAgICAgICAgICAgIGdydXBwZSA9IGlm ICgkbmV1LlBTT2JqZWN0LlByb3BlcnRpZXNbJ2dydXBwZSddKSB7ICRuZXUuZ3J1cHBlIH0gZWxz ZSB7ICcnIH0NCiAgICAgICAgICAgICAgICAgICAgb2UgPSBpZiAoJG5ldS5QU09iamVjdC5Qcm9w ZXJ0aWVzWydvZSddKSB7ICRuZXUub2UgfSBlbHNlIHsgJycgfQ0KICAgICAgICAgICAgICAgICAg ICBkaWVuc3RudW1tZXIgPSBpZiAoJG5ldS5QU09iamVjdC5Qcm9wZXJ0aWVzWydkaWVuc3RudW1t ZXInXSkgeyAkbmV1LmRpZW5zdG51bW1lciB9IGVsc2UgeyAnJyB9DQogICAgICAgICAgICAgICAg ICAgIHRlbGVmb24gPSBpZiAoJG5ldS5QU09iamVjdC5Qcm9wZXJ0aWVzWyd0ZWxlZm9uJ10pIHsg JG5ldS50ZWxlZm9uIH0gZWxzZSB7ICcnIH0NCiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24g PSAkemllbFBvcw0KICAgICAgICAgICAgICAgICAgICBlbWFpbCA9IGlmICgkbmV1LlBTT2JqZWN0 LlByb3BlcnRpZXNbJ2VtYWlsJ10pIHsgJG5ldS5lbWFpbCB9IGVsc2UgeyAnJyB9DQogICAgICAg ICAgICAgICAgICAgIG53S2VubnVuZyA9IGlmICgkbmV1LlBTT2JqZWN0LlByb3BlcnRpZXNbJ253 S2VubnVuZyddKSB7ICRuZXUubndLZW5udW5nIH0gZWxzZSB7ICcnIH0NCiAgICAgICAgICAgICAg ICAgICAgZ2VidXJ0c2RhdHVtID0gaWYgKCRuZXUuUFNPYmplY3QuUHJvcGVydGllc1snZ2VidXJ0 c2RhdHVtJ10pIHsgJG5ldS5nZWJ1cnRzZGF0dW0gfSBlbHNlIHsgJycgfQ0KICAgICAgICAgICAg ICAgICAgICBlbERnbFF1YWxpZml6aWVydCA9IGlmICgkbmV1LlBTT2JqZWN0LlByb3BlcnRpZXNb J2VsRGdsUXVhbGlmaXppZXJ0J10pIHsgW2Jvb2xdJG5ldS5lbERnbFF1YWxpZml6aWVydCB9IGVs c2UgeyAkZmFsc2UgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAjIE1hcmtl ciBmdWVyIFBlcnNvbmVuLCBkaWUgcGVyIEV4Y2VsLUltcG9ydCBmcmlzY2ggYW5nZWxlZ3QNCiAg ICAgICAgICAgICAgICAjIHd1cmRlbi4gUGVyc29uYWx2ZXJ3YWx0dW5nIGJsZW5kZXQgc2llIGlt IE5ldWltcG9ydC1CbG9jaw0KICAgICAgICAgICAgICAgICMgb2JlbiBlaW4sIGJpcyBkYXMgRmxh ZyBtYW51ZWxsIHdlZ2dlc2V0enQgd2lyZCAoRXJsZWRpZ3QtDQogICAgICAgICAgICAgICAgIyBC dXR0b24pIG9kZXIgZGFzIGxldHp0ZSBQZmxpY2h0ZmVsZCAoRGllbnN0Z3J1cHBlKSBnZXBmbGVn dA0KICAgICAgICAgICAgICAgICMgaXN0IHVuZCBkZXIgVXNlciBhdWYgIkJsb2NrIGxlZXJlbiIg a2xpY2t0Lg0KICAgICAgICAgICAgICAgIGlmICgkbmV1LlBTT2JqZWN0LlByb3BlcnRpZXNbJ2lt cG9ydE5ldUFtJ10gLWFuZCAkbmV1LmltcG9ydE5ldUFtKSB7DQogICAgICAgICAgICAgICAgICAg ICRwZXJzb25bJ2ltcG9ydE5ldUFtJ10gPSBbc3RyaW5nXSRuZXUuaW1wb3J0TmV1QW0NCiAgICAg ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHBsYW51bmcucGVyc29uZW4gKz0gW1BTQ3Vz dG9tT2JqZWN0XSRwZXJzb24NCiAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdwbGFu dW5nLmpzb24nICRwbGFudW5nIHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICByZXR1cm4gQHsg bmV1ZUlkID0gJG5ldWVJZDsgemllbFBvcyA9ICR6aWVsUG9zOyBlaW5yZWloZW4gPSAkZWlucmVp aGVuIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSBjYXRjaCB7DQogICAg ICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICgiTG9jay1GZWhsZXI6ICRfIikg NTAzOyBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBXcml0ZS1M b2dFaW50cmFnICdwZXJzb24uYW5nZWxlZ3QnIEB7IHBlcnNvbklkID0gJHBlcnNSZXMubmV1ZUlk OyBuYW1lID0gIiQoJG5ldS52b3JuYW1lKSAkKCRuZXUubmFtZSkiLlRyaW0oKTsgZWlucmVpaGVu ID0gJHBlcnNSZXMuZWlucmVpaGVuOyBwb3NpdGlvbiA9ICRwZXJzUmVzLnppZWxQb3MgfQ0KICAg ICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0gJ2FuZ2Vs ZWd0JzsgaWQgPSAkcGVyc1Jlcy5uZXVlSWQ7IHBvc2l0aW9uID0gJHBlcnNSZXMuemllbFBvcyB9 DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlm ICgkUGF0aCAtbWF0Y2ggJ14vYXBpL3BlcnNvbmVuLyhcZCspJCcgLWFuZCAkTWV0aG9kIC1lcSAn UFVUJykgew0KICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LUlzdEFkbWluKSkgeyBTZW5k LUVycm9yICRSZXNwb25zZSAnS2VpbmUgQWRtaW4tUmVjaHRlJyA0MDM7IGNvbnRpbnVlIH0NCiAg ICAgICAgICAgICAgICAkcGVyc29uSWQgPSBbaW50XSRNYXRjaGVzWzFdDQogICAgICAgICAgICAg ICAgJGJvZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAk Ym9keSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnQW5mcmFnZSB6dSBncm9zcycgNDEzOyBjb250 aW51ZSB9DQogICAgICAgICAgICAgICAgJHVwZGF0ZSA9ICRib2R5IHwgQ29udmVydEZyb20tSnNv bg0KICAgICAgICAgICAgICAgICMgQXVkaXQtUGhhc2UgQS4zICgyMDI2LTA1LTIxKTogUHJpdmls ZWdpZW4tU2NodXR6LiBSZWluZQ0KICAgICAgICAgICAgICAgICMgRmFjaGF1ZnNpY2h0LUFkbWlu cyAoc2VoZW4uYWRtaW5pc3RyYXRpb249dHJ1ZSwgYWJlciBrZWluIFNVKQ0KICAgICAgICAgICAg ICAgICMgZHVlcmZlbiBTdGFtbWRhdGVuIGVkaXRpZXJlbiwgYWJlciBLRUlORSBTaWNodGJhcmtl aXRzLQ0KICAgICAgICAgICAgICAgICMgT3ZlcnJpZGVzIChgc2VoZW5gKSBvZGVyIGVkaXRpZXIt UmVjaHRlIChgZWRpdFJlY2h0ZWApIHNldHplbg0KICAgICAgICAgICAgICAgICMg4oCUIHNvbnN0 IGtvZW5udGVuIHNpZSBzaWNoIExvZ2J1Y2gtL1N0YXRpc3Rpay1TaWNodCBzZWxic3QNCiAgICAg ICAgICAgICAgICAjIGZyZWlzY2hhbHRlbi4gUGVyIERldlRvb2xzLW1hbmlwdWxpZXJ0ZXMgUGF5 bG9hZCBhYmZhbmdlbi4NCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1Jc3RTdXBlclVz ZXIpKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICgkdXBkYXRlLlBTT2JqZWN0LlByb3BlcnRp ZXNbJ3NlaGVuJ10pICAgICAgeyAkdXBkYXRlLlBTT2JqZWN0LlByb3BlcnRpZXMuUmVtb3ZlKCdz ZWhlbicpIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKCR1cGRhdGUuUFNPYmplY3QuUHJvcGVy dGllc1snZWRpdFJlY2h0ZSddKSB7ICR1cGRhdGUuUFNPYmplY3QuUHJvcGVydGllcy5SZW1vdmUo J2VkaXRSZWNodGUnKSB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRwdXRS ZXMgPSAkbnVsbA0KICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgJHB1dFJl cyA9IEludm9rZS1XaXRoRmlsZUxvY2sgJ3BsYW51bmcuanNvbicgew0KICAgICAgICAgICAgICAg ICRwbGFudW5nID0gUmVhZC1Kc29uT2JqZWN0ICdwbGFudW5nLmpzb24nDQogICAgICAgICAgICAg ICAgJGdlZnVuZGVuICAgPSAkZmFsc2UNCiAgICAgICAgICAgICAgICAkYWx0ZVdlcnRlICA9IEB7 fQ0KICAgICAgICAgICAgICAgICRwZXJzb25OYW1lID0gJycNCiAgICAgICAgICAgICAgICBmb3Jl YWNoICgkcCBpbiAkcGxhbnVuZy5wZXJzb25lbikgew0KICAgICAgICAgICAgICAgICAgICBpZiAo JHAuaWQgLWVxICRwZXJzb25JZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHBlcnNvbk5h bWUgPSAoKCIkKCRwLnZvcm5hbWUpICQoJHAubmFtZSkiKS5UcmltKCkpDQogICAgICAgICAgICAg ICAgICAgICAgICBmb3JlYWNoICgkcHJvcCBpbiAkdXBkYXRlLlBTT2JqZWN0LlByb3BlcnRpZXMp IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHByb3AuTmFtZSAtbmUgJ2lkJykg ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWx0ZVdlcnRlWyRwcm9wLk5hbWVd ID0gaWYgKCRwLlBTT2JqZWN0LlByb3BlcnRpZXNbJHByb3AuTmFtZV0pIHsgJHAuKCRwcm9wLk5h bWUpIH0gZWxzZSB7ICRudWxsIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KCRwLlBTT2JqZWN0LlByb3BlcnRpZXNbJHByb3AuTmFtZV0pIHsgJHAuKCRwcm9wLk5hbWUpID0g JHByb3AuVmFsdWUgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgJHAg fCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlOYW1lICRwcm9wLk5hbWUgLU5vdGVQcm9wZXJ0eVZh bHVlICRwcm9wLlZhbHVlIC1Gb3JjZSB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGdlZnVu ZGVuID0gJHRydWUNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrDQogICAgICAgICAgICAg ICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGdl ZnVuZGVuKSB7IHJldHVybiBAeyBnZWZ1bmRlbiA9ICRmYWxzZSB9IH0NCiAgICAgICAgICAgICAg ICBXcml0ZS1Kc29uT2JqZWN0ICdwbGFudW5nLmpzb24nICRwbGFudW5nIHwgT3V0LU51bGwNCiAg ICAgICAgICAgICAgICByZXR1cm4gQHsgZ2VmdW5kZW4gPSAkdHJ1ZTsgYWx0ZVdlcnRlID0gJGFs dGVXZXJ0ZTsgcGVyc29uTmFtZSA9ICRwZXJzb25OYW1lIH0NCiAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgfSBjYXRjaCB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3Ig JFJlc3BvbnNlICgiTG9jay1GZWhsZXI6ICRfIikgNTAzOyBjb250aW51ZQ0KICAgICAgICAgICAg ICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkcHV0UmVzLmdlZnVuZGVuKSB7IFNlbmQt RXJyb3IgJFJlc3BvbnNlICJQZXJzb24gJHBlcnNvbklkIG5pY2h0IGdlZnVuZGVuIiA0MDQ7IGNv bnRpbnVlIH0NCiAgICAgICAgICAgICAgICAkYWx0ZVdlcnRlICA9ICRwdXRSZXMuYWx0ZVdlcnRl DQogICAgICAgICAgICAgICAgJHBlcnNvbk5hbWUgPSAkcHV0UmVzLnBlcnNvbk5hbWUNCg0KICAg ICAgICAgICAgICAgICMgRGlmZi1EaWN0IOKAlCBudXIgRmVsZGVyLCBpbiBkZW5lbiBzaWNoIGRl ciBXZXJ0IHRhdHNhZWNobGljaA0KICAgICAgICAgICAgICAgICMgZ2VhZW5kZXJ0IGhhdC4gSlNP Ti1zdGFiaWxlIFZlcmdsZWljaHNiYXNpcy4NCiAgICAgICAgICAgICAgICAkZ2VhZW5kZXJ0ID0g W29yZGVyZWRdQHt9DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHByb3AgaW4gJHVwZGF0ZS5Q U09iamVjdC5Qcm9wZXJ0aWVzKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICgkcHJvcC5OYW1l IC1lcSAnaWQnKSB7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAgICAgJGFsdFZhbCAgPSAk YWx0ZVdlcnRlWyRwcm9wLk5hbWVdDQogICAgICAgICAgICAgICAgICAgICRuZXVWYWwgID0gJHBy b3AuVmFsdWUNCiAgICAgICAgICAgICAgICAgICAgJGFsdEpzb24gPSAoJGFsdFZhbCB8IENvbnZl cnRUby1Kc29uIC1Db21wcmVzcyAtRGVwdGggOCkNCiAgICAgICAgICAgICAgICAgICAgJG5ldUpz b24gPSAoJG5ldVZhbCB8IENvbnZlcnRUby1Kc29uIC1Db21wcmVzcyAtRGVwdGggOCkNCiAgICAg ICAgICAgICAgICAgICAgaWYgKCRhbHRKc29uIC1uZSAkbmV1SnNvbikgew0KICAgICAgICAgICAg ICAgICAgICAgICAgJGdlYWVuZGVydFskcHJvcC5OYW1lXSA9IFtvcmRlcmVkXUB7IGFsdCA9ICRh bHRWYWw7IG5ldSA9ICRuZXVWYWwgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg ICAgICAgfQ0KDQogICAgICAgICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAncGVyc29uLmdlYWVu ZGVydCcgKFtvcmRlcmVkXUB7DQogICAgICAgICAgICAgICAgICAgIHBlcnNvbklkICA9ICRwZXJz b25JZA0KICAgICAgICAgICAgICAgICAgICBuYW1lICAgICAgPSAkcGVyc29uTmFtZQ0KICAgICAg ICAgICAgICAgICAgICBnZWFlbmRlcnQgPSAkZ2VhZW5kZXJ0DQogICAgICAgICAgICAgICAgfSkN CiAgICAgICAgICAgICAgICAjIEhpbndlaXMtVHJpZ2dlcjogSWRlbnRpdGFldHMtQWVuZGVydW5n IChud0tlbm51bmcgLyBlbWFpbCkgYmVrb21tdA0KICAgICAgICAgICAgICAgICMgZWluZW4gSW4t QXBwLUhpbndlaXMgZnVlciBTVSArIEdlc2FtdHZlcmFudHdvcnRsaWNoZS4gUHJvIEZlbGQgZWlu DQogICAgICAgICAgICAgICAgIyBlaWdlbmVyIEVpbnRyYWcsIGRhbWl0IGRhcyBNb2RhbCBsZXNi YXIgYmxlaWJ0Lg0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRmZWxkIGluIEAoJ253S2VubnVu ZycsICdlbWFpbCcpKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICgkZ2VhZW5kZXJ0LkNvbnRh aW5zKCRmZWxkKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGRpZmYgPSAkZ2VhZW5kZXJ0 WyRmZWxkXQ0KICAgICAgICAgICAgICAgICAgICAgICAgTmV3LUhpbndlaXMgJ2lkZW50aXRhZXRf Z2VhZW5kZXJ0JyAoW29yZGVyZWRdQHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJz b25faWQgICA9ICRwZXJzb25JZA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbl9u YW1lID0gJHBlcnNvbk5hbWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWxkICAgICAg ICA9ICRmZWxkDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJfd2VydCAgPSAiJCgk ZGlmZi5hbHQpIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldWVyX3dlcnQgID0gIiQo JGRpZmYubmV1KSINCiAgICAgICAgICAgICAgICAgICAgICAgIH0pIChHZXQtQWt0dWVsbGVyQmVu dXR6ZXIpIHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg IH0NCiAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0YXR1cyA9 ICdha3R1YWxpc2llcnQnIH0NCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAg fQ0KICAgICAgICAgICAgIyBERUxFVEUgL2FwaS9wZXJzb25lbi97aWR9ICAgICAgICAgICAgLT4g U29mdC1EZWxldGUgKGdlbG9lc2NodEFtIGdlc2V0enQsIFBlcnNvbiBibGVpYnQgaW0gRGF0ZW5z YXR6IGZ1ZXIgUGFwaWVya29yYi1SdWVja2hvbHVuZykNCiAgICAgICAgICAgICMgREVMRVRFIC9h cGkvcGVyc29uZW4ve2lkfT9lbmRndWVsdGlnPTEgLT4gSGFyZC1EZWxldGUgKFBlcnNvbiBrb21w bGV0dCBlbnRmZXJuZW4sIEVpbnRyYWVnZS9Lb21tZW50YXJlIHZlcndhaXNlbikNCiAgICAgICAg ICAgICMgVm9yIGRlbSBTb2Z0LURlbGV0ZSB3ZXJkZW4gaW0gc2VsYmVuIFp1ZyBiZXJlaXRzIFBh cGllcmtvcmItRWludHJhZWdlIGF1ZmdlcmFldW10LCBkaWUgYWVsdGVyIGFscw0KICAgICAgICAg ICAgIyBhZG1pbi5wYXBpZXJrb3JiVGFnZUF1ZmJld2FocnVuZyAoRGVmYXVsdCAzMCBUYWdlKSBz aW5kLiBTbyBibGVpYnQgZGVyIERhdGVuc2F0eiBzY2hsYW5rLCBvaG5lDQogICAgICAgICAgICAj IGVpbmVuIHNlcGFyYXRlbiBDcm9uLUpvYiB6dSBicmF1Y2hlbi4NCiAgICAgICAgICAgIGlmICgk UGF0aCAtbWF0Y2ggJ14vYXBpL3BlcnNvbmVuLyhcZCspJCcgLWFuZCAkTWV0aG9kIC1lcSAnREVM RVRFJykgew0KICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LUlzdEFkbWluKSkgeyBTZW5k LUVycm9yICRSZXNwb25zZSAnS2VpbmUgQWRtaW4tUmVjaHRlJyA0MDM7IGNvbnRpbnVlIH0NCiAg ICAgICAgICAgICAgICAkcGVyc29uSWQgPSBbaW50XSRNYXRjaGVzWzFdDQogICAgICAgICAgICAg ICAgJGVuZGd1ZWx0aWcgPSAkZmFsc2UNCiAgICAgICAgICAgICAgICBpZiAoJFJlcXVlc3QuVXJs LlF1ZXJ5KSB7DQogICAgICAgICAgICAgICAgICAgICRxID0gW1N5c3RlbS5XZWIuSHR0cFV0aWxp dHldOjpQYXJzZVF1ZXJ5U3RyaW5nKCRSZXF1ZXN0LlVybC5RdWVyeSkNCiAgICAgICAgICAgICAg ICAgICAgJGVuZGd1ZWx0aWcgPSAoW3N0cmluZ10kcVsnZW5kZ3VlbHRpZyddKSAtZXEgJzEnDQog ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRkZWxSZXMgPSAkbnVsbA0KICAgICAg ICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgJGRlbFJlcyA9IEludm9rZS1XaXRoRmls ZUxvY2sgJ3BsYW51bmcuanNvbicgew0KICAgICAgICAgICAgICAgICRwbGFudW5nID0gUmVhZC1K c29uT2JqZWN0ICdwbGFudW5nLmpzb24nDQogICAgICAgICAgICAgICAgJGFkbWluICAgPSBSZWFk LUpzb25PYmplY3QgJ2FkbWluLmpzb24nDQogICAgICAgICAgICAgICAgJGF1ZmJld2FocnVuZyA9 IDMwDQogICAgICAgICAgICAgICAgaWYgKCRhZG1pbiAtYW5kICRhZG1pbi5QU09iamVjdC5Qcm9w ZXJ0aWVzWydwYXBpZXJrb3JiVGFnZUF1ZmJld2FocnVuZyddKSB7DQogICAgICAgICAgICAgICAg ICAgIHRyeSB7ICRhdWZiZXdhaHJ1bmcgPSBbaW50XSRhZG1pbi5wYXBpZXJrb3JiVGFnZUF1ZmJl d2FocnVuZyB9IGNhdGNoIHt9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRq ZXR6dCA9IChHZXQtRGF0ZSkuVG9TdHJpbmcoJ28nKQ0KICAgICAgICAgICAgICAgICRwZXJzb25O YW1lID0gJycNCiAgICAgICAgICAgICAgICAkZ2VmdW5kZW4gPSAkZmFsc2UNCiAgICAgICAgICAg ICAgICAkbmV1ZVBlcnNvbmVuID0gQCgpDQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHAgaW4g JHBsYW51bmcucGVyc29uZW4pIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRwLmlkIC1lcSAk cGVyc29uSWQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRnZWZ1bmRlbiA9ICR0cnVlDQog ICAgICAgICAgICAgICAgICAgICAgICAkcGVyc29uTmFtZSA9ICgoIiQoJHAudm9ybmFtZSkgJCgk cC5uYW1lKSIpLlRyaW0oKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZW5kZ3VlbHRp Zykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSGFyZC1EZWxldGU6IHVlYmVyc3By aW5nZW4sIFBlcnNvbiBmbGllZ3QgcmF1cw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlDQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmICgkcC5QU09iamVjdC5Qcm9wZXJ0aWVzWydnZWxvZXNjaHRBbSddKSB7 ICRwLmdlbG9lc2NodEFtID0gJGpldHp0IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bHNlIHsgJHAgfCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlOYW1lICdnZWxvZXNjaHRBbScgLU5v dGVQcm9wZXJ0eVZhbHVlICRqZXR6dCAtRm9yY2UgfQ0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICRuZXVlUGVyc29uZW4gKz0gJHANCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICMgQXV0by1Q dXJnZTogU29mdC1EZWxldGVkLVBlcnNvbmVuLCBkZXJlbiBnZWxvZXNjaHRBbSBhZWx0ZXINCiAg ICAgICAgICAgICAgICAgICAgICAgICMgYWxzICRhdWZiZXdhaHJ1bmcgVGFnZSBpc3QsIHdlcmRl biBoaWVyIGVuZGd1ZWx0aWcgZW50ZmVybnQuDQogICAgICAgICAgICAgICAgICAgICAgICAkcHVy Z2UgPSAkZmFsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcC5QU09iamVjdC5Qcm9w ZXJ0aWVzWydnZWxvZXNjaHRBbSddIC1hbmQgJHAuZ2Vsb2VzY2h0QW0pIHsNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk YWx0ZXIgPSBbZGF0ZXRpbWVdJHAuZ2Vsb2VzY2h0QW0NCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKChOZXctVGltZVNwYW4gLVN0YXJ0ICRhbHRlciAtRW5kIChHZXQtRGF0ZSkp LlRvdGFsRGF5cyAtZ3QgJGF1ZmJld2FocnVuZykgeyAkcHVyZ2UgPSAkdHJ1ZSB9DQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7fQ0KICAgICAgICAgICAgICAgICAgICAgICAg fQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC1ub3QgJHB1cmdlKSB7ICRuZXVlUGVyc29u ZW4gKz0gJHAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAg ICAgICAgICAgICAgIGlmICgtbm90ICRnZWZ1bmRlbikgeyByZXR1cm4gQHsgZ2VmdW5kZW4gPSAk ZmFsc2UgfSB9DQogICAgICAgICAgICAgICAgJHBsYW51bmcucGVyc29uZW4gPSBbb2JqZWN0W11d QCgkbmV1ZVBlcnNvbmVuKQ0KICAgICAgICAgICAgICAgIFdyaXRlLUpzb25PYmplY3QgJ3BsYW51 bmcuanNvbicgJHBsYW51bmcgfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgIHJldHVybiBAeyBn ZWZ1bmRlbiA9ICR0cnVlOyBwZXJzb25OYW1lID0gJHBlcnNvbk5hbWU7IGpldHp0ID0gJGpldHp0 IH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSBjYXRjaCB7DQogICAgICAg ICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICgiTG9jay1GZWhsZXI6ICRfIikgNTAz OyBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAk ZGVsUmVzLmdlZnVuZGVuKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICJQZXJzb24gJHBlcnNvbklk IG5pY2h0IGdlZnVuZGVuIiA0MDQ7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAkcGVyc29u TmFtZSA9ICRkZWxSZXMucGVyc29uTmFtZQ0KICAgICAgICAgICAgICAgICRqZXR6dCA9ICRkZWxS ZXMuamV0enQNCiAgICAgICAgICAgICAgICBpZiAoJGVuZGd1ZWx0aWcpIHsNCiAgICAgICAgICAg ICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAncGVyc29uLmVuZGd1ZWx0aWcuZ2Vsb2VzY2h0JyBA eyBwZXJzb25JZCA9ICRwZXJzb25JZDsgbmFtZSA9ICRwZXJzb25OYW1lIH0NCiAgICAgICAgICAg ICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBXcml0ZS1Mb2dFaW50cmFnICdwZXJz b24uaW4ucGFwaWVya29yYicgQHsgcGVyc29uSWQgPSAkcGVyc29uSWQ7IG5hbWUgPSAkcGVyc29u TmFtZTsgZ2Vsb2VzY2h0QW0gPSAkamV0enQgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0YXR1cyA9ICdnZWxvZXNjaHQn OyBtb2R1cyA9IGlmICgkZW5kZ3VlbHRpZykgeyAnZW5kZ3VlbHRpZycgfSBlbHNlIHsgJ3BhcGll cmtvcmInIH0gfQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQogICAg ICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL3BlcnNvbmVuL3JlaWhlbmZvbGdlJyAtYW5kICRN ZXRob2QgLWVxICdQVVQnKSB7DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtSXN0QWRt aW4pKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdLZWluZSBBZG1pbi1SZWNodGUnIDQwMzsgY29u dGludWUgfQ0KICAgICAgICAgICAgICAgICRib2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0DQogICAg ICAgICAgICAgICAgaWYgKC1ub3QgJGJvZHkpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0FuZnJh Z2UgenUgZ3Jvc3MnIDQxMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRyZWloZW5mb2xn ZSA9ICRib2R5IHwgQ29udmVydEZyb20tSnNvbg0KICAgICAgICAgICAgICAgIHRyeSB7DQogICAg ICAgICAgICAgICAgICAgIEludm9rZS1XaXRoRmlsZUxvY2sgJ3BsYW51bmcuanNvbicgew0KICAg ICAgICAgICAgICAgICAgICAgICAgJHBsYW51bmcgPSBSZWFkLUpzb25PYmplY3QgJ3BsYW51bmcu anNvbicNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRyIGluICRyZWloZW5mb2xn ZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwIGluICRwbGFudW5n LnBlcnNvbmVuKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcC5pZCAt ZXEgJHIuaWQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcC5Q U09iamVjdC5Qcm9wZXJ0aWVzWydwb3NpdGlvbiddKSB7ICRwLnBvc2l0aW9uID0gJHIucG9zaXRp b24gfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7ICRwIHwgQWRk LU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAncG9zaXRpb24nIC1Ob3RlUHJvcGVydHlWYWx1ZSAk ci5wb3NpdGlvbiAtRm9yY2UgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YnJlYWsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICAgICAgICAgIFdyaXRlLUpzb25PYmplY3QgJ3BsYW51bmcuanNvbicgJHBsYW51bmcgfCBPdXQt TnVsbA0KICAgICAgICAgICAgICAgICAgICB9IHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICB9 IGNhdGNoIHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgKCJMb2Nr LUZlaGxlcjogJF8iKSA1MDM7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgICAgIFdyaXRlLUxvZ0VpbnRyYWcgJ3BlcnNvbmVuLnJlaWhlbmZvbGdlLmdlYWVuZGVydCcg QHt9DQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBzdGF0dXMg PSAnYWt0dWFsaXNpZXJ0JyB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAg IH0NCg0KICAgICAgICAgICAgIyA9PT09PSBISU5XRUlTRSAoSW4tQXBwLUJhbm5lci9Nb2RhbC1T eXN0ZW0pID09PT09DQogICAgICAgICAgICAjIEdFVCAgL2FwaS9oaW53ZWlzZSAgICAgICAgICAg IC0+IG9mZmVuZSBIaW53ZWlzZSBmdWVyIGRlbiBlaW5nZWxvZ2d0ZW4gVXNlcg0KICAgICAgICAg ICAgIyBQT1NUIC9hcGkvaGlud2Vpc2Uve2lkfS9rZW5udG5pcyAtPiBLZW5udG5pc25haG1lIHNl dHplbg0KICAgICAgICAgICAgIyBHRVQgIC9hcGkvaGlud2Vpc2UvdWViZXJzaWNodCAtPiBTVS1v bmx5LCB2b2xsc3RhZW5kaWdlIFNpY2h0IGlua2wuIExlc2UtU3RhdHVzDQogICAgICAgICAgICBp ZiAoJFBhdGggLWVxICcvYXBpL2hpbndlaXNlJyAtYW5kICRNZXRob2QgLWVxICdHRVQnKSB7DQog ICAgICAgICAgICAgICAgIyBHYXRlZDogbnVyIEVtcGZhZW5nZXIgKFNVIG9kZXIgR2VzYW10dmVy YW50d29ydGxpY2gpIGR1ZXJmZW4gdWViZXJoYXVwdCBmcmFnZW4NCiAgICAgICAgICAgICAgICAk ciA9IEdldC1SZWNodGUNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoJHIuaXN0U3VwZXJVc2Vy IC1vciAkci5pc3RHZXNhbXR2ZXJhbnR3b3J0bGljaCkpIHsNCiAgICAgICAgICAgICAgICAgICAg U2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBoaW53ZWlzZSA9IEAoKSB9DQogICAgICAgICAg ICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIElu dm9rZS1IaW53ZWlzUHJ1bmluZw0KICAgICAgICAgICAgICAgICRoID0gUmVhZC1Kc29uT2JqZWN0 ICdoaW53ZWlzZS5qc29uJw0KICAgICAgICAgICAgICAgIGlmICgkbnVsbCAtZXEgJGggLW9yIC1u b3QgJGguUFNPYmplY3QuUHJvcGVydGllc1snaGlud2Vpc2UnXSkgew0KICAgICAgICAgICAgICAg ICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IGhpbndlaXNlID0gQCgpIH0NCiAgICAg ICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg ICAgJG9mZmVuID0gQCgpDQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGVpbnRyYWcgaW4gQCgk aC5oaW53ZWlzZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgJGlzdEVtcGZhZW5nZXIgPSAkZmFs c2UNCiAgICAgICAgICAgICAgICAgICAgJGlzdEdlbGVzZW4gICAgPSAkZmFsc2UNCiAgICAgICAg ICAgICAgICAgICAgZm9yZWFjaCAoJHAgaW4gJGVpbnRyYWcua2VubnRuaXNuYWhtZW4uUFNPYmpl Y3QuUHJvcGVydGllcykgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFRlc3QtTWF0Y2hL ZW5udW5nIChbc3RyaW5nXSRwLk5hbWUpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg JGlzdEVtcGZhZW5nZXIgPSAkdHJ1ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgk bnVsbCAtbmUgJHAuVmFsdWUpIHsgJGlzdEdlbGVzZW4gPSAkdHJ1ZSB9DQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJGlzdEVtcGZhZW5nZXIgLWFu ZCAtbm90ICRpc3RHZWxlc2VuKSB7ICRvZmZlbiArPSAkZWludHJhZyB9DQogICAgICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgaGlud2Vp c2UgPSBbb2JqZWN0W11dJG9mZmVuIH0NCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRQYXRoIC1tYXRjaCAnXi9hcGkvaGlud2Vpc2UvKFxk Kykva2VubnRuaXMkJyAtYW5kICRNZXRob2QgLWVxICdQT1NUJykgew0KICAgICAgICAgICAgICAg ICRoaW53ZWlzSWQgPSBbaW50XSRNYXRjaGVzWzFdDQogICAgICAgICAgICAgICAgJHIgPSBHZXQt UmVjaHRlDQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKCRyLmlzdFN1cGVyVXNlciAtb3IgJHIu aXN0R2VzYW10dmVyYW50d29ydGxpY2gpKSB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJy b3IgJFJlc3BvbnNlICdLZWluZSBCZXJlY2h0aWd1bmcnIDQwMzsgY29udGludWUNCiAgICAgICAg ICAgICAgICB9DQogICAgICAgICAgICAgICAgJHNjcmlwdDpoaW53ZWlzS2VubnRuaXNHZXNldHp0 ID0gJGZhbHNlDQogICAgICAgICAgICAgICAgJHNjcmlwdDpoaW53ZWlzS2VubnRuaXNUeXAgPSAk bnVsbA0KICAgICAgICAgICAgICAgIEludm9rZS1XaXRoRmlsZUxvY2sgJ2hpbndlaXNlLmpzb24n IHsNCiAgICAgICAgICAgICAgICAgICAgJGggPSBSZWFkLUpzb25PYmplY3QgJ2hpbndlaXNlLmpz b24nDQogICAgICAgICAgICAgICAgICAgIGlmICgkbnVsbCAtZXEgJGggLW9yIC1ub3QgJGguUFNP YmplY3QuUHJvcGVydGllc1snaGlud2Vpc2UnXSkgeyByZXR1cm4gfQ0KICAgICAgICAgICAgICAg ICAgICBmb3JlYWNoICgkZWludHJhZyBpbiBAKCRoLmhpbndlaXNlKSkgew0KICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKFtpbnRdJGVpbnRyYWcuaWQgLW5lICRoaW53ZWlzSWQpIHsgY29udGlu dWUgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgIyBFcnN0IGRlbiBNYXRjaC1TbG90IGVybWl0 dGVsbiwgZGFubiBhdXNzZXJoYWxiIGRlcg0KICAgICAgICAgICAgICAgICAgICAgICAgIyBQcm9w ZXJ0eS1FbnVtZXJhdGlvbiBpbi1wbGFjZSBzZXR6ZW4gKFBTIDUuMSBtYWcgZGFzDQogICAgICAg ICAgICAgICAgICAgICAgICAjIE1vZGlmaXppZXJlbiB3YWVocmVuZCBmb3JlYWNoIG5pY2h0IGlt bWVyKS4NCiAgICAgICAgICAgICAgICAgICAgICAgICRtYXRjaE5hbWUgPSAkbnVsbA0KICAgICAg ICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHAgaW4gJGVpbnRyYWcua2VubnRuaXNuYWhtZW4u UFNPYmplY3QuUHJvcGVydGllcykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChU ZXN0LU1hdGNoS2VubnVuZyAoW3N0cmluZ10kcC5OYW1lKSkgeyAkbWF0Y2hOYW1lID0gJHAuTmFt ZTsgYnJlYWsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKCRtYXRjaE5hbWUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHMg PSAoR2V0LURhdGUpLlRvVW5pdmVyc2FsVGltZSgpLlRvU3RyaW5nKCd5eXl5LU1NLWRkVEhIOm1t OnNzWicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVpbnRyYWcua2VubnRuaXNuYWht ZW4gfCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlOYW1lICRtYXRjaE5hbWUgLU5vdGVQcm9wZXJ0 eVZhbHVlICR0cyAtRm9yY2UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NyaXB0Omhp bndlaXNLZW5udG5pc0dlc2V0enQgPSAkdHJ1ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmICgkZWludHJhZy5QU09iamVjdC5Qcm9wZXJ0aWVzWyd0eXAnXSkgeyAkc2NyaXB0Omhpbndl aXNLZW5udG5pc1R5cCA9IFtzdHJpbmddJGVpbnRyYWcudHlwIH0NCiAgICAgICAgICAgICAgICAg ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrDQogICAgICAgICAgICAgICAg ICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY3JpcHQ6aGlud2Vpc0tlbm50bmlzR2Vz ZXR6dCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUtSnNvbk9iamVjdCAnaGlud2Vp c2UuanNvbicgJGggfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg ICAgICAgfSB8IE91dC1OdWxsDQogICAgICAgICAgICAgICAgJGdlc2V0enQgPSBbYm9vbF0kc2Ny aXB0OmhpbndlaXNLZW5udG5pc0dlc2V0enQNCiAgICAgICAgICAgICAgICAka2VubnRuaXNUeXAg PSAkc2NyaXB0OmhpbndlaXNLZW5udG5pc1R5cA0KICAgICAgICAgICAgICAgICRzY3JpcHQ6aGlu d2Vpc0tlbm50bmlzR2VzZXR6dCA9ICRmYWxzZQ0KICAgICAgICAgICAgICAgICRzY3JpcHQ6aGlu d2Vpc0tlbm50bmlzVHlwID0gJG51bGwNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkZ2VzZXR6 dCkgew0KICAgICAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25zZSAiSGlud2VpcyAk aGlud2Vpc0lkIG5pY2h0IGdlZnVuZGVuIG9kZXIgbmljaHQgZnVlciBTaWUgYmVzdGltbXQiIDQw NDsgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJGxvZ0ZlbGRl ciA9IEB7IGhpbndlaXNJZCA9ICRoaW53ZWlzSWQgfQ0KICAgICAgICAgICAgICAgIGlmICgka2Vu bnRuaXNUeXApIHsgJGxvZ0ZlbGRlclsndHlwJ10gPSAka2VubnRuaXNUeXAgfQ0KICAgICAgICAg ICAgICAgIFdyaXRlLUxvZ0VpbnRyYWcgJ2hpbndlaXMua2VubnRuaXMnICRsb2dGZWxkZXINCiAg ICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0YXR1cyA9ICdrZW5u dG5pc19nZXNldHp0JyB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0N CiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvaGlud2Vpc2UvdWViZXJzaWNodCcgLWFu ZCAkTWV0aG9kIC1lcSAnR0VUJykgew0KICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LUlz dFN1cGVyVXNlcikpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ051ciBTdXBlclVzZXInIDQwMzsg Y29udGludWUgfQ0KICAgICAgICAgICAgICAgIEludm9rZS1IaW53ZWlzUHJ1bmluZw0KICAgICAg ICAgICAgICAgICRoID0gUmVhZC1Kc29uT2JqZWN0ICdoaW53ZWlzZS5qc29uJw0KICAgICAgICAg ICAgICAgIGlmICgkbnVsbCAtZXEgJGggLW9yIC1ub3QgJGguUFNPYmplY3QuUHJvcGVydGllc1sn aGlud2Vpc2UnXSkgew0KICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3Bv bnNlIEB7IGhpbndlaXNlID0gQCgpIH0NCiAgICAgICAgICAgICAgICAgICAgY29udGludWUNCiAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25z ZSBAeyBoaW53ZWlzZSA9IFtvYmplY3RbXV1AKCRoLmhpbndlaXNlKSB9DQogICAgICAgICAgICAg ICAgY29udGludWUNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgIyA9PT09PSBNSVRURUlM VU5HRU4gKFNwcmludCBELTNiLCAyMDI2LTA1LTI5KSA9PT09PQ0KICAgICAgICAgICAgIyBWb20g U1UgbWFudWVsbCBnZXBmbGVndGVzIEhpbndlaXMtTW9kYWwtU3lzdGVtIChzZXBhcmF0IHZvbg0K ICAgICAgICAgICAgIyAvYXBpL2hpbndlaXNlLCBkYXMgaXN0IG51ciBmdWVyIFN5c3RlbS1FcmVp Z25pc3NlIFNVL0dWKS4NCiAgICAgICAgICAgICMgU2NoZW1hICsgRmlsdGVydW5nLUxvZ2lrIGdl c3BpZWdlbHQgYXVzIGRldi9zZXJ2ZXIucHk6DQogICAgICAgICAgICAjICAgX21pdHRlaWx1bmdl bl9mdWVyX2FrdHVlbGxlbl91c2VyKCkgYnp3LiBfcGVyc29uX2F1c19waWQoKS4NCiAgICAgICAg ICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvbWl0dGVpbHVuZ2VuJyAtYW5kICRNZXRob2QgLWVxICdH RVQnKSB7DQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBtaXR0 ZWlsdW5nZW4gPSAoR2V0LU1pdHRlaWx1bmdlbkZ1ZXJBa3R1ZWxsZW5Vc2VyKSB9DQogICAgICAg ICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkUGF0aCAt ZXEgJy9hcGkvbWl0dGVpbHVuZ2VuL2FsbGUnIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsNCiAg ICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1Jc3RTdXBlclVzZXIpKSB7IFNlbmQtRXJyb3Ig JFJlc3BvbnNlICdOdXIgU3VwZXJVc2VyJyA0MDM7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAg ICAkbSA9IFJlYWQtSnNvbk9iamVjdCAnbWl0dGVpbHVuZ2VuLmpzb24nDQogICAgICAgICAgICAg ICAgJGxpc3RlID0gQCgpDQogICAgICAgICAgICAgICAgaWYgKCRudWxsIC1uZSAkbSAtYW5kICRt LlBTT2JqZWN0LlByb3BlcnRpZXNbJ21pdHRlaWx1bmdlbiddKSB7DQogICAgICAgICAgICAgICAg ICAgICRsaXN0ZSA9IEAoJG0ubWl0dGVpbHVuZ2VuKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IG1pdHRlaWx1bmdlbiA9IFtv YmplY3RbXV0kbGlzdGUgfQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9 DQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL21pdHRlaWx1bmdlbicgLWFuZCAkTWV0 aG9kIC1lcSAnUE9TVCcpIHsNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1Jc3RTdXBl clVzZXIpKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdOdXIgU3VwZXJVc2VyIGR1ZXJmZW4gTWl0 dGVpbHVuZ2VuIGFubGVnZW4nIDQwMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRyYXcg PSBSZWFkLUJvZHkgJFJlcXVlc3QNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkcmF3KSB7IFNl bmQtRXJyb3IgJFJlc3BvbnNlICdCb2R5IGZlaGx0JyA0MDA7IGNvbnRpbnVlIH0NCiAgICAgICAg ICAgICAgICB0cnkgeyAkYm9keSA9ICRyYXcgfCBDb252ZXJ0RnJvbS1Kc29uIH0gY2F0Y2ggeyBT ZW5kLUVycm9yICRSZXNwb25zZSAnVW5ndWVsdGlnZXMgSlNPTicgNDAwOyBjb250aW51ZSB9DQog ICAgICAgICAgICAgICAgIyBTZXJ2ZXItc2VpdGlnZSBTYW5pdGlzaWVydW5nIChTdG9yZWQtWFNT KTogdGl0ZWwgKyB0ZXh0IHdlcmRlbg0KICAgICAgICAgICAgICAgICMgaW0gQ2xpZW50IHZpYSBp bm5lckhUTUwgZ2VyZW5kZXJ0Lg0KICAgICAgICAgICAgICAgICR0aXRlbCA9IENvbnZlcnRUby1T YWZlUmljaEh0bWwgKChbc3RyaW5nXSgkYm9keS50aXRlbCkpLlRyaW0oKSkNCiAgICAgICAgICAg ICAgICAkdGV4dCAgPSBDb252ZXJ0VG8tU2FmZVJpY2hIdG1sICgoW3N0cmluZ10oJGJvZHkudGV4 dCkpLlRyaW0oKSkNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkdGl0ZWwpIHsgU2VuZC1FcnJv ciAkUmVzcG9uc2UgJ1RpdGVsIGlzdCBQZmxpY2h0ZmVsZCcgNDAwOyBjb250aW51ZSB9DQogICAg ICAgICAgICAgICAgaWYgKC1ub3QgJHRleHQpICB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdUZXh0 IGlzdCBQZmxpY2h0ZmVsZCcgIDQwMDsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRyYW5k ID0gLWpvaW4gKCg0OC4uNTcpICsgKDk3Li4xMjIpIHwgR2V0LVJhbmRvbSAtQ291bnQgNiB8IEZv ckVhY2gtT2JqZWN0IHsgW2NoYXJdJF8gfSkNCiAgICAgICAgICAgICAgICAkbXMgPSBbaW50NjRd KFtEYXRlVGltZU9mZnNldF06OlV0Y05vdy5Ub1VuaXhUaW1lTWlsbGlzZWNvbmRzKCkpDQogICAg ICAgICAgICAgICAgJG5ldWVJZCA9ICJtXyR7bXN9XyR7cmFuZH0iDQogICAgICAgICAgICAgICAg JGVtcGZEZWZhdWx0ID0gW3BzY3VzdG9tb2JqZWN0XUB7DQogICAgICAgICAgICAgICAgICAgIGFs bGUgPSAkdHJ1ZTsgcGVyc29uZW4gPSBAKCk7IGdydXBwZW4gPSBAKCk7IHJvbGxlbiA9IEAoKQ0K ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkZW1wZiA9IGlmICgkYm9keS5QU09i amVjdC5Qcm9wZXJ0aWVzWydlbXBmYWVuZ2VyJ10pIHsgJGJvZHkuZW1wZmFlbmdlciB9IGVsc2Ug eyAkZW1wZkRlZmF1bHQgfQ0KICAgICAgICAgICAgICAgICRuZXUgPSBbcHNjdXN0b21vYmplY3Rd QHsNCiAgICAgICAgICAgICAgICAgICAgaWQgICAgICAgICAgID0gJG5ldWVJZA0KICAgICAgICAg ICAgICAgICAgICB0aXRlbCAgICAgICAgPSAkdGl0ZWwNCiAgICAgICAgICAgICAgICAgICAgdGV4 dCAgICAgICAgID0gJHRleHQNCiAgICAgICAgICAgICAgICAgICAgdGh1bWJuYWlsICAgID0gaWYg KCRib2R5LlBTT2JqZWN0LlByb3BlcnRpZXNbJ3RodW1ibmFpbCddKSB7ICRib2R5LnRodW1ibmFp bCB9IGVsc2UgeyAkbnVsbCB9DQogICAgICAgICAgICAgICAgICAgIHBkZiAgICAgICAgICA9IGlm ICgkYm9keS5QU09iamVjdC5Qcm9wZXJ0aWVzWydwZGYnXSkgICAgICAgeyAkYm9keS5wZGYgfSAg ICAgICBlbHNlIHsgJG51bGwgfQ0KICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyICAgICAgPSBp ZiAoJGJvZHkuUFNPYmplY3QuUHJvcGVydGllc1sndHJpZ2dlciddIC1hbmQgJGJvZHkudHJpZ2dl cikgeyBbc3RyaW5nXSRib2R5LnRyaWdnZXIgfSBlbHNlIHsgJ2Vpbm1hbCcgfQ0KICAgICAgICAg ICAgICAgICAgICBiaXNEYXR1bSAgICAgPSBpZiAoJGJvZHkuUFNPYmplY3QuUHJvcGVydGllc1sn YmlzRGF0dW0nXSkgIHsgJGJvZHkuYmlzRGF0dW0gfSAgZWxzZSB7ICRudWxsIH0NCiAgICAgICAg ICAgICAgICAgICAgZW1wZmFlbmdlciAgID0gJGVtcGYNCiAgICAgICAgICAgICAgICAgICAgZXJz dGVsbHRBbSAgID0gKEdldC1EYXRlKS5Ub1VuaXZlcnNhbFRpbWUoKS5Ub1N0cmluZygneXl5eS1N TS1kZFRISDptbTpzc1onKQ0KICAgICAgICAgICAgICAgICAgICBlcnN0ZWxsdFZvbiAgPSAoR2V0 LUFrdHVlbGxlckJlbnV0emVyKQ0KICAgICAgICAgICAgICAgICAgICBnZWFlbmRlcnRBbSAgPSAk bnVsbA0KICAgICAgICAgICAgICAgICAgICBnZWFlbmRlcnRWb24gPSAkbnVsbA0KICAgICAgICAg ICAgICAgIH0NCiAgICAgICAgICAgICAgICBJbnZva2UtV2l0aEZpbGVMb2NrICdtaXR0ZWlsdW5n ZW4uanNvbicgew0KICAgICAgICAgICAgICAgICAgICAkbSA9IFJlYWQtSnNvbk9iamVjdCAnbWl0 dGVpbHVuZ2VuLmpzb24nDQogICAgICAgICAgICAgICAgICAgIGlmICgkbnVsbCAtZXEgJG0pIHsg JG0gPSBbcHNjdXN0b21vYmplY3RdQHsgbWl0dGVpbHVuZ2VuID0gQCgpOyBnZWxlc2VuID0gW3Bz Y3VzdG9tb2JqZWN0XUB7fSB9IH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKC1ub3QgJG0uUFNP YmplY3QuUHJvcGVydGllc1snbWl0dGVpbHVuZ2VuJ10pIHsNCiAgICAgICAgICAgICAgICAgICAg ICAgICRtIHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSBtaXR0ZWlsdW5nZW4gLU5vdGVQ cm9wZXJ0eVZhbHVlIEAoKSAtRm9yY2UNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgICAgICAgICBpZiAoLW5vdCAkbS5QU09iamVjdC5Qcm9wZXJ0aWVzWydnZWxlc2VuJ10pIHsN CiAgICAgICAgICAgICAgICAgICAgICAgICRtIHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFt ZSBnZWxlc2VuIC1Ob3RlUHJvcGVydHlWYWx1ZSAoW3BzY3VzdG9tb2JqZWN0XUB7fSkgLUZvcmNl DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgIyBuZXVlc3RlIG9i ZW4NCiAgICAgICAgICAgICAgICAgICAgJG0ubWl0dGVpbHVuZ2VuID0gQCgkbmV1KSArIEAoJG0u bWl0dGVpbHVuZ2VuKQ0KICAgICAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdtaXR0 ZWlsdW5nZW4uanNvbicgJG0gfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgIH0gfCBPdXQtTnVs bA0KICAgICAgICAgICAgICAgIFdyaXRlLUxvZ0VpbnRyYWcgJ21pdHRlaWx1bmcuYW5nZWxlZ3Qn IEB7IGlkID0gJG5ldWVJZDsgdGl0ZWwgPSAkdGl0ZWwgfQ0KICAgICAgICAgICAgICAgIFNlbmQt SnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0gJ2FuZ2VsZWd0JzsgbWl0dGVpbHVuZyA9 ICRuZXUgfQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQogICAgICAg ICAgICBpZiAoJFBhdGggLW1hdGNoICdeL2FwaS9taXR0ZWlsdW5nZW4vKFtcdy1dKykkJyAtYW5k ICRNZXRob2QgLWVxICdQVVQnKSB7DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtSXN0 U3VwZXJVc2VyKSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnTnVyIFN1cGVyVXNlcicgNDAzOyBj b250aW51ZSB9DQogICAgICAgICAgICAgICAgJG1pZCA9ICRNYXRjaGVzWzFdDQogICAgICAgICAg ICAgICAgJHJhdyA9IFJlYWQtQm9keSAkUmVxdWVzdA0KICAgICAgICAgICAgICAgIGlmICgtbm90 ICRyYXcpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0JvZHkgZmVobHQnIDQwMDsgY29udGludWUg fQ0KICAgICAgICAgICAgICAgIHRyeSB7ICRib2R5ID0gJHJhdyB8IENvbnZlcnRGcm9tLUpzb24g fSBjYXRjaCB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdVbmd1ZWx0aWdlcyBKU09OJyA0MDA7IGNv bnRpbnVlIH0NCiAgICAgICAgICAgICAgICAkc2NyaXB0Om1pdHRlaWx1bmdHZWZ1bmRlbiA9ICRm YWxzZQ0KICAgICAgICAgICAgICAgICRzY3JpcHQ6bWl0dGVpbHVuZ1ppZWwgPSAkbnVsbA0KICAg ICAgICAgICAgICAgIEludm9rZS1XaXRoRmlsZUxvY2sgJ21pdHRlaWx1bmdlbi5qc29uJyB7DQog ICAgICAgICAgICAgICAgICAgICRtID0gUmVhZC1Kc29uT2JqZWN0ICdtaXR0ZWlsdW5nZW4uanNv bicNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRudWxsIC1lcSAkbSAtb3IgLW5vdCAkbS5QU09i amVjdC5Qcm9wZXJ0aWVzWydtaXR0ZWlsdW5nZW4nXSkgeyByZXR1cm4gfQ0KICAgICAgICAgICAg ICAgICAgICBmb3JlYWNoICgkZWludHJhZyBpbiBAKCRtLm1pdHRlaWx1bmdlbikpIHsNCiAgICAg ICAgICAgICAgICAgICAgICAgIGlmIChbc3RyaW5nXSRlaW50cmFnLmlkIC1uZSAkbWlkKSB7IGNv bnRpbnVlIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRmZWxkIGluICd0aXRl bCcsJ3RleHQnLCd0aHVtYm5haWwnLCdwZGYnLCd0cmlnZ2VyJywnYmlzRGF0dW0nLCdlbXBmYWVu Z2VyJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYm9keS5QU09iamVjdC5Q cm9wZXJ0aWVzWyRmZWxkXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2Vy dCA9ICRib2R5LiRmZWxkDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoJGZl bGQgLWVxICd0aXRlbCcgLW9yICRmZWxkIC1lcSAndGV4dCcpIC1hbmQgKCR3ZXJ0IC1pcyBbc3Ry aW5nXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3ZXJ0ID0gQ29u dmVydFRvLVNhZmVSaWNoSHRtbCAkd2VydA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlaW50cmFnIHwgQWRkLU1lbWJl ciAtTm90ZVByb3BlcnR5TmFtZSAkZmVsZCAtTm90ZVByb3BlcnR5VmFsdWUgJHdlcnQgLUZvcmNl DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAg fQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGVpbnRyYWcgfCBBZGQtTWVtYmVyIC1Ob3RlUHJv cGVydHlOYW1lIGdlYWVuZGVydEFtICAtTm90ZVByb3BlcnR5VmFsdWUgKChHZXQtRGF0ZSkuVG9V bml2ZXJzYWxUaW1lKCkuVG9TdHJpbmcoJ3l5eXktTU0tZGRUSEg6bW06c3NaJykpIC1Gb3JjZQ0K ICAgICAgICAgICAgICAgICAgICAgICAgJGVpbnRyYWcgfCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVy dHlOYW1lIGdlYWVuZGVydFZvbiAtTm90ZVByb3BlcnR5VmFsdWUgKEdldC1Ba3R1ZWxsZXJCZW51 dHplcikgLUZvcmNlDQogICAgICAgICAgICAgICAgICAgICAgICAkc2NyaXB0Om1pdHRlaWx1bmdH ZWZ1bmRlbiA9ICR0cnVlDQogICAgICAgICAgICAgICAgICAgICAgICAkc2NyaXB0Om1pdHRlaWx1 bmdaaWVsID0gJGVpbnRyYWcNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrDQogICAgICAg ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY3JpcHQ6bWl0dGVpbHVu Z0dlZnVuZGVuKSB7IFdyaXRlLUpzb25PYmplY3QgJ21pdHRlaWx1bmdlbi5qc29uJyAkbSB8IE91 dC1OdWxsIH0NCiAgICAgICAgICAgICAgICB9IHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICBp ZiAoLW5vdCAkc2NyaXB0Om1pdHRlaWx1bmdHZWZ1bmRlbikgew0KICAgICAgICAgICAgICAgICAg ICBTZW5kLUVycm9yICRSZXNwb25zZSAiTWl0dGVpbHVuZyAkbWlkIG5pY2h0IGdlZnVuZGVuIiA0 MDQ7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICR6aWVsID0g JHNjcmlwdDptaXR0ZWlsdW5nWmllbA0KICAgICAgICAgICAgICAgICRzY3JpcHQ6bWl0dGVpbHVu Z0dlZnVuZGVuID0gJGZhbHNlOyAkc2NyaXB0Om1pdHRlaWx1bmdaaWVsID0gJG51bGwNCiAgICAg ICAgICAgICAgICBXcml0ZS1Mb2dFaW50cmFnICdtaXR0ZWlsdW5nLmdlYWVuZGVydCcgQHsgaWQg PSAkbWlkIH0NCiAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0 YXR1cyA9ICdnZWFlbmRlcnQnOyBtaXR0ZWlsdW5nID0gJHppZWwgfQ0KICAgICAgICAgICAgICAg IGNvbnRpbnVlDQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJFBhdGggLW1hdGNoICde L2FwaS9taXR0ZWlsdW5nZW4vKFtcdy1dKykkJyAtYW5kICRNZXRob2QgLWVxICdERUxFVEUnKSB7 DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtSXN0U3VwZXJVc2VyKSkgeyBTZW5kLUVy cm9yICRSZXNwb25zZSAnTnVyIFN1cGVyVXNlcicgNDAzOyBjb250aW51ZSB9DQogICAgICAgICAg ICAgICAgJG1pZCA9ICRNYXRjaGVzWzFdDQogICAgICAgICAgICAgICAgJHNjcmlwdDptaXR0ZWls dW5nR2Vsb2VzY2h0ID0gJGZhbHNlDQogICAgICAgICAgICAgICAgSW52b2tlLVdpdGhGaWxlTG9j ayAnbWl0dGVpbHVuZ2VuLmpzb24nIHsNCiAgICAgICAgICAgICAgICAgICAgJG0gPSBSZWFkLUpz b25PYmplY3QgJ21pdHRlaWx1bmdlbi5qc29uJw0KICAgICAgICAgICAgICAgICAgICBpZiAoJG51 bGwgLWVxICRtIC1vciAtbm90ICRtLlBTT2JqZWN0LlByb3BlcnRpZXNbJ21pdHRlaWx1bmdlbidd KSB7IHJldHVybiB9DQogICAgICAgICAgICAgICAgICAgICR2b3JoZXIgPSBAKCRtLm1pdHRlaWx1 bmdlbikNCiAgICAgICAgICAgICAgICAgICAgJG5hY2hoZXIgPSBAKCR2b3JoZXIgfCBXaGVyZS1P YmplY3QgeyBbc3RyaW5nXSRfLmlkIC1uZSAkbWlkIH0pDQogICAgICAgICAgICAgICAgICAgIGlm ICgkdm9yaGVyLkNvdW50IC1lcSAkbmFjaGhlci5Db3VudCkgeyByZXR1cm4gfQ0KICAgICAgICAg ICAgICAgICAgICAkbS5taXR0ZWlsdW5nZW4gPSAkbmFjaGhlcg0KICAgICAgICAgICAgICAgICAg ICAjIGdlbGVzZW4tRWludHJhZWdlIGZ1ZXIgZGllc2UgTWl0dGVpbHVuZyBhdWZyYWV1bWVuDQog ICAgICAgICAgICAgICAgICAgIGlmICgkbS5QU09iamVjdC5Qcm9wZXJ0aWVzWydnZWxlc2VuJ10p IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwIGluIEAoJG0uZ2VsZXNlbi5Q U09iamVjdC5Qcm9wZXJ0aWVzKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgk cC5WYWx1ZS5QU09iamVjdC5Qcm9wZXJ0aWVzWyRtaWRdKSB7DQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICRwLlZhbHVlLlBTT2JqZWN0LlByb3BlcnRpZXMuUmVtb3ZlKCRtaWQpDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIFdyaXRlLUpzb25PYmpl Y3QgJ21pdHRlaWx1bmdlbi5qc29uJyAkbSB8IE91dC1OdWxsDQogICAgICAgICAgICAgICAgICAg ICRzY3JpcHQ6bWl0dGVpbHVuZ0dlbG9lc2NodCA9ICR0cnVlDQogICAgICAgICAgICAgICAgfSB8 IE91dC1OdWxsDQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJHNjcmlwdDptaXR0ZWlsdW5nR2Vs b2VzY2h0KSB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICJNaXR0 ZWlsdW5nICRtaWQgbmljaHQgZ2VmdW5kZW4iIDQwNDsgY29udGludWUNCiAgICAgICAgICAgICAg ICB9DQogICAgICAgICAgICAgICAgJHNjcmlwdDptaXR0ZWlsdW5nR2Vsb2VzY2h0ID0gJGZhbHNl DQogICAgICAgICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAnbWl0dGVpbHVuZy5nZWxvZXNjaHQn IEB7IGlkID0gJG1pZCB9DQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25z ZSBAeyBzdGF0dXMgPSAnZ2Vsb2VzY2h0JyB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAg ICAgICAgICAgIH0NCiAgICAgICAgICAgICMgUE9TVCAvYXBpL21pdHRlaWx1bmdlbi91cGxvYWQg 4oCUIFNVLW9ubHksIEJpbGQgKDIgTUIpIG9kZXIgUERGICgxMCBNQikNCiAgICAgICAgICAgICMg Qm9keTogeyJhcnQiOiAiYmlsZCJ8InBkZiIsICJkYXRlaW5hbWUiOiAieC5wbmciLCAiZGF0YVVy bCI6ICJkYXRhOi4uLiJ9DQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL21pdHRlaWx1 bmdlbi91cGxvYWQnIC1hbmQgJE1ldGhvZCAtZXEgJ1BPU1QnKSB7DQogICAgICAgICAgICAgICAg aWYgKC1ub3QgKFRlc3QtSXN0U3VwZXJVc2VyKSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnTnVy IFN1cGVyVXNlciBkdWVyZmVuIE1pdHRlaWx1bmdzLUFuaGFlbmdlIGhvY2hsYWRlbicgNDAzOyBj b250aW51ZSB9DQogICAgICAgICAgICAgICAgIyAxNCBNQiBNYXhTaXplLCB3ZWlsIDEwTUIgUERG IGJhc2U2NC1jb2RpZXJ0IH4xMy40IE1CIFBheWxvYWQgd2lyZA0KICAgICAgICAgICAgICAgICRy YXcgPSBSZWFkLUJvZHkgJFJlcXVlc3QgLU1heFNpemUgMTRNQg0KICAgICAgICAgICAgICAgIGlm ICgtbm90ICRyYXcpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0FuZnJhZ2UgenUgZ3Jvc3MgKG1h eCAxNCBNQiknIDQxMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgIHRyeSB7ICRib2R5ID0g JHJhdyB8IENvbnZlcnRGcm9tLUpzb24gfSBjYXRjaCB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdV bmd1ZWx0aWdlcyBKU09OJyA0MDA7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAkYXJ0ID0g KFtzdHJpbmddJGJvZHkuYXJ0KS5Ub0xvd2VyKCkNCiAgICAgICAgICAgICAgICAkZGF0YVVybCA9 IFtzdHJpbmddJGJvZHkuZGF0YVVybA0KICAgICAgICAgICAgICAgIGlmICgkYXJ0IC1uZSAnYmls ZCcgLWFuZCAkYXJ0IC1uZSAncGRmJykgew0KICAgICAgICAgICAgICAgICAgICBTZW5kLUVycm9y ICRSZXNwb25zZSAnYXJ0IG11c3MgImJpbGQiIG9kZXIgInBkZiIgc2VpbicgNDAwOyBjb250aW51 ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkZXh0ID0gJG51bGw7ICRtYXhC eXRlcyA9IDANCiAgICAgICAgICAgICAgICBpZiAoJGFydCAtZXEgJ2JpbGQnKSB7DQogICAgICAg ICAgICAgICAgICAgIGlmICgkZGF0YVVybCAtbWF0Y2ggJ15kYXRhOmltYWdlLyhqcGVnfGpwZ3xw bmd8d2VicCk7YmFzZTY0LCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRleHQgPSAoJE1h dGNoZXNbMV0gLXJlcGxhY2UgJ2pwZWcnLCdqcGcnKQ0KICAgICAgICAgICAgICAgICAgICAgICAg JG1heEJ5dGVzID0gMiAqIDEwMjQgKiAxMDI0DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7 DQogICAgICAgICAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25zZSAnQmlsZDogZXJ3 YXJ0ZXQgZGF0YTppbWFnZS8oanBlZ3xwbmd8d2VicCk7YmFzZTY0LC4uLicgNDAwOyBjb250aW51 ZQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAg ICAgICAgICAgICAgICAgaWYgKCRkYXRhVXJsIC1saWtlICdkYXRhOmFwcGxpY2F0aW9uL3BkZjti YXNlNjQsKicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRleHQgPSAncGRmJw0KICAgICAg ICAgICAgICAgICAgICAgICAgJG1heEJ5dGVzID0gMTAgKiAxMDI0ICogMTAyNA0KICAgICAgICAg ICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAk UmVzcG9uc2UgJ1BERjogZXJ3YXJ0ZXQgZGF0YTphcHBsaWNhdGlvbi9wZGY7YmFzZTY0LC4uLicg NDAwOyBjb250aW51ZQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgICRiYXNlNjQgPSAkZGF0YVVybCAtcmVwbGFjZSAnXmRhdGE6W147XSs7 YmFzZTY0LCcsICcnDQogICAgICAgICAgICAgICAgdHJ5IHsgJGJ5dGVzID0gW1N5c3RlbS5Db252 ZXJ0XTo6RnJvbUJhc2U2NFN0cmluZygkYmFzZTY0KSB9DQogICAgICAgICAgICAgICAgY2F0Y2gg eyBTZW5kLUVycm9yICRSZXNwb25zZSAnVW5ndWVsdGlnZSBiYXNlNjQtRGF0ZW4nIDQwMDsgY29u dGludWUgfQ0KICAgICAgICAgICAgICAgIGlmICgkYnl0ZXMuTGVuZ3RoIC1ndCAkbWF4Qnl0ZXMp IHsNCiAgICAgICAgICAgICAgICAgICAgJGxpbWl0S2IgPSBbaW50XSgkbWF4Qnl0ZXMgLyAxMDI0 KQ0KICAgICAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25zZSAiJGFydCB6dSBncm9z cyAobWF4ICRsaW1pdEtiIEtCKSIgNDEzOyBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAg ICAgICAgICAgICAgICAkdXBsb2FkRGlyID0gSm9pbi1QYXRoICREYXRhRGlyICd1cGxvYWRzJyB8 IEpvaW4tUGF0aCAtQ2hpbGRQYXRoICdtaXR0ZWlsdW5nZW4nDQogICAgICAgICAgICAgICAgaWYg KC1ub3QgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJHVwbG9hZERpcikpIHsNCiAgICAgICAgICAg ICAgICAgICAgdHJ5IHsgTmV3LUl0ZW0gLUl0ZW1UeXBlIERpcmVjdG9yeSAtUGF0aCAkdXBsb2Fk RGlyIC1Gb3JjZSB8IE91dC1OdWxsIH0gY2F0Y2gge30NCiAgICAgICAgICAgICAgICB9DQogICAg ICAgICAgICAgICAgJHJhbmQgPSAtam9pbiAoKDQ4Li41NykgKyAoOTcuLjEyMikgfCBHZXQtUmFu ZG9tIC1Db3VudCA2IHwgRm9yRWFjaC1PYmplY3QgeyBbY2hhcl0kXyB9KQ0KICAgICAgICAgICAg ICAgICRtcyA9IFtpbnQ2NF0oW0RhdGVUaW1lT2Zmc2V0XTo6VXRjTm93LlRvVW5peFRpbWVNaWxs aXNlY29uZHMoKSkNCiAgICAgICAgICAgICAgICAkZmlsZW5hbWUgPSAibV8ke21zfV8ke3JhbmR9 LiRleHQiDQogICAgICAgICAgICAgICAgJHppZWxQZmFkID0gSm9pbi1QYXRoICR1cGxvYWREaXIg JGZpbGVuYW1lDQogICAgICAgICAgICAgICAgW1N5c3RlbS5JTy5GaWxlXTo6V3JpdGVBbGxCeXRl cygkemllbFBmYWQsICRieXRlcykNCiAgICAgICAgICAgICAgICAjIEtlaW5lIEFDTC1SZXN0cmlj dGlvbjogVXBsb2FkcyBzaW5kIGZ1ZXIgZGllIEVtcGZhZW5nZXItDQogICAgICAgICAgICAgICAg IyBHcnVwcGUgKG1hbnVlbGwgdm9tIFNVIHZlcnRlaWx0KSBnZWRhY2h0LCBuaWNodCBnZWhlaW0u DQogICAgICAgICAgICAgICAgJHJlbFBmYWQgPSAiL2RhdGEvdXBsb2Fkcy9taXR0ZWlsdW5nZW4v JGZpbGVuYW1lIg0KICAgICAgICAgICAgICAgIFdyaXRlLUxvZ0VpbnRyYWcgJ21pdHRlaWx1bmcu dXBsb2FkJyBAeyBhcnQgPSAkYXJ0OyBkYXRlaSA9ICRmaWxlbmFtZTsgYnl0ZXMgPSAkYnl0ZXMu TGVuZ3RoIH0NCiAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0 YXR1cyA9ICdvayc7IHBmYWQgPSAkcmVsUGZhZDsgYnl0ZXMgPSAkYnl0ZXMuTGVuZ3RoIH0NCiAg ICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAo JFBhdGggLW1hdGNoICdeL2FwaS9taXR0ZWlsdW5nZW4vKFtcdy1dKykva2VubnRuaXMkJyAtYW5k ICRNZXRob2QgLWVxICdQT1NUJykgew0KICAgICAgICAgICAgICAgICRtaWQgPSAkTWF0Y2hlc1sx XQ0KICAgICAgICAgICAgICAgICRyID0gR2V0LVJlY2h0ZQ0KICAgICAgICAgICAgICAgICRwaWQg PSAkci5tZWluZVBlcnNvbklkDQogICAgICAgICAgICAgICAgaWYgKCRudWxsIC1lcSAkcGlkKSB7 IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdLZWluZSBQZXJzb24genVnZW9yZG5ldCcgNDAzOyBjb250 aW51ZSB9DQogICAgICAgICAgICAgICAgJHNjcmlwdDptaXR0ZWlsdW5nS2VubnRuaXNPSyA9ICRm YWxzZQ0KICAgICAgICAgICAgICAgIEludm9rZS1XaXRoRmlsZUxvY2sgJ21pdHRlaWx1bmdlbi5q c29uJyB7DQogICAgICAgICAgICAgICAgICAgICRtID0gUmVhZC1Kc29uT2JqZWN0ICdtaXR0ZWls dW5nZW4uanNvbicNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRudWxsIC1lcSAkbSAtb3IgLW5v dCAkbS5QU09iamVjdC5Qcm9wZXJ0aWVzWydtaXR0ZWlsdW5nZW4nXSkgeyByZXR1cm4gfQ0KICAg ICAgICAgICAgICAgICAgICAkZXhpc3RpZXJ0ID0gQCgkbS5taXR0ZWlsdW5nZW4gfCBXaGVyZS1P YmplY3QgeyBbc3RyaW5nXSRfLmlkIC1lcSAkbWlkIH0pLkNvdW50IC1ndCAwDQogICAgICAgICAg ICAgICAgICAgIGlmICgtbm90ICRleGlzdGllcnQpIHsgcmV0dXJuIH0NCiAgICAgICAgICAgICAg ICAgICAgaWYgKC1ub3QgJG0uUFNPYmplY3QuUHJvcGVydGllc1snZ2VsZXNlbiddKSB7DQogICAg ICAgICAgICAgICAgICAgICAgICAkbSB8IEFkZC1NZW1iZXIgLU5vdGVQcm9wZXJ0eU5hbWUgZ2Vs ZXNlbiAtTm90ZVByb3BlcnR5VmFsdWUgKFtwc2N1c3RvbW9iamVjdF1Ae30pIC1Gb3JjZQ0KICAg ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICRwaWRTdHIgPSBbc3RyaW5n XSRwaWQNCiAgICAgICAgICAgICAgICAgICAgaWYgKC1ub3QgJG0uZ2VsZXNlbi5QU09iamVjdC5Q cm9wZXJ0aWVzWyRwaWRTdHJdKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkbS5nZWxlc2Vu IHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAkcGlkU3RyIC1Ob3RlUHJvcGVydHlWYWx1 ZSAoW3BzY3VzdG9tb2JqZWN0XUB7fSkgLUZvcmNlDQogICAgICAgICAgICAgICAgICAgIH0NCiAg ICAgICAgICAgICAgICAgICAgJGhldXRlID0gKEdldC1EYXRlKS5Ub1N0cmluZygneXl5eS1NTS1k ZCcpDQogICAgICAgICAgICAgICAgICAgICRtLmdlbGVzZW4uJHBpZFN0ciB8IEFkZC1NZW1iZXIg LU5vdGVQcm9wZXJ0eU5hbWUgJG1pZCAtTm90ZVByb3BlcnR5VmFsdWUgJGhldXRlIC1Gb3JjZQ0K ICAgICAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdtaXR0ZWlsdW5nZW4uanNvbicg JG0gfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgICAgICAkc2NyaXB0Om1pdHRlaWx1bmdLZW5u dG5pc09LID0gJHRydWUNCiAgICAgICAgICAgICAgICB9IHwgT3V0LU51bGwNCiAgICAgICAgICAg ICAgICBpZiAoLW5vdCAkc2NyaXB0Om1pdHRlaWx1bmdLZW5udG5pc09LKSB7DQogICAgICAgICAg ICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICJNaXR0ZWlsdW5nICRtaWQgbmljaHQgZ2Vm dW5kZW4iIDQwNDsgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg JHNjcmlwdDptaXR0ZWlsdW5nS2VubnRuaXNPSyA9ICRmYWxzZQ0KICAgICAgICAgICAgICAgIFNl bmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0gJ2tlbm50bmlzX2dlc2V0enQnIH0N CiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAj ID09PT09IEJBQ0tVUFMgPT09PT0NCiAgICAgICAgICAgICMgQmFja3VwLU5hbWluZyAoZ2V0YXJu dCwgaW4gZGF0YS9jYWNoZS8pOg0KICAgICAgICAgICAgIyAtIHNuYXBfPHRzPi5iYWsgID0gQnVu ZGxlIChwbGFudW5nK2FkbWluKSAtLSBtYW51ZWxsZSBCYWNrdXBzICsgU2ljaGVydW5nZW4NCiAg ICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIHZvciBXaWVkZXJoZXJzdGVsbHVuZw0KICAg ICAgICAgICAgIyAtIGxlZ188dHM+LmJhayAgID0gTnVyIFBsYW51bmcgLS0gTGVnYWN5LUJhY2t1 cHMgKyBBdXRvLVNpY2hlcnVuZ2VuDQogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICB2 b3IgUmVzZXQvRHVtbXlkYXRlbg0KICAgICAgICAgICAgIyAtIGNmZ188dHM+XzxoaW53ZWlzPi5i YWsgPSBhZG1pbi5qc29uLUF1dG8tQmFja3VwcyAoQmFja3VwLUFkbWluSnNvbikNCiAgICAgICAg ICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvcGxhbnVuZy9iYWNrdXAnIC1hbmQgJE1ldGhvZCAtZXEg J1BPU1QnKSB7DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtRGFyZkJlcmVpY2ggJ2Jh Y2t1cHMnKSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnS2VpbmUgQmVyZWNodGlndW5nIChCYWNr dXBzKScgNDAzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJHBsYW51bmdQYXRoID0gSm9p bi1QYXRoICREYXRhRGlyICdwbGFudW5nLmpzb24nDQogICAgICAgICAgICAgICAgaWYgKC1ub3Qg KFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJHBsYW51bmdQYXRoKSkgeyBTZW5kLUVycm9yICRSZXNw b25zZSAnUGxhbnVuZyBuaWNodCBnZWZ1bmRlbicgNDA0OyBjb250aW51ZSB9DQogICAgICAgICAg ICAgICAgJHBsYW51bmdPYmogPSBSZWFkLUpzb25PYmplY3QgJ3BsYW51bmcuanNvbicNCiAgICAg ICAgICAgICAgICAkYWRtaW5PYmogICA9IFJlYWQtSnNvbk9iamVjdCAnYWRtaW4uanNvbicNCiAg ICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICRhZG1pbk9iaikgeyAkYWRtaW5PYmogPSBOZXct T2JqZWN0IFBTT2JqZWN0IH0NCiAgICAgICAgICAgICAgICAkdHMgPSBHZXQtRGF0ZSAtRm9ybWF0 ICd5eXl5TU1kZF9ISG1tc3MnDQogICAgICAgICAgICAgICAgJGJuYW1lID0gInNuYXBfJHRzLmJh ayINCiAgICAgICAgICAgICAgICAkYnVuZGxlID0gW29yZGVyZWRdQHsNCiAgICAgICAgICAgICAg ICAgICAgZm9ybWF0ICA9ICd2aTMtYmFja3VwLXYxJw0KICAgICAgICAgICAgICAgICAgICB0cyAg ICAgID0gJHRzDQogICAgICAgICAgICAgICAgICAgIHBsYW51bmcgPSAkcGxhbnVuZ09iag0KICAg ICAgICAgICAgICAgICAgICBhZG1pbiAgID0gJGFkbWluT2JqDQogICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgICRqc29uID0gJGJ1bmRsZSB8IENvbnZlcnRUby1Kc29uIC1EZXB0aCAz MA0KICAgICAgICAgICAgICAgICRjYWNoZURpciA9IEpvaW4tUGF0aCAkRGF0YURpciAnY2FjaGUn DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJGNhY2hl RGlyKSkgeyBOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5IC1QYXRoICRjYWNoZURpciAtRm9y Y2UgfCBPdXQtTnVsbCB9DQogICAgICAgICAgICAgICAgV3JpdGUtQmFja3VwQnl0ZXMgKEpvaW4t UGF0aCAkY2FjaGVEaXIgJGJuYW1lKSAkanNvbg0KICAgICAgICAgICAgICAgIFdyaXRlLUxvZ0Vp bnRyYWcgJ2JhY2t1cC5lcnN0ZWxsdCcgQHsgZGF0ZWluYW1lID0gJGJuYW1lOyBpbmhhbHQgPSAn cGxhbnVuZythZG1pbicgfQ0KICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9u c2UgQHsgc3RhdHVzID0gJ2Vyc3RlbGx0JzsgZGF0ZWluYW1lID0gJGJuYW1lIH0NCiAgICAgICAg ICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRQYXRoIC1l cSAnL2FwaS9wbGFudW5nL2JhY2t1cHMnIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsNCiAgICAg ICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1EYXJmQmVyZWljaCAnYmFja3VwcycpKSB7IFNlbmQt RXJyb3IgJFJlc3BvbnNlICdLZWluZSBCZXJlY2h0aWd1bmcgKEJhY2t1cHMpJyA0MDM7IGNvbnRp bnVlIH0NCiAgICAgICAgICAgICAgICAkZWludHJhZWdlID0gQCgpDQogICAgICAgICAgICAgICAg JGNhY2hlRGlyID0gSm9pbi1QYXRoICREYXRhRGlyICdjYWNoZScNCiAgICAgICAgICAgICAgICBp ZiAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkY2FjaGVEaXIpIHsNCiAgICAgICAgICAgICAgICAg ICAgZm9yZWFjaCAoJG11c3RlciBpbiAnc25hcF8qLmJhaycsJ2xlZ18qLmJhaycpIHsNCiAgICAg ICAgICAgICAgICAgICAgICAgIEdldC1DaGlsZEl0ZW0gLUxpdGVyYWxQYXRoICRjYWNoZURpciAt RmlsdGVyICRtdXN0ZXIgLUZpbGUgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGludWUgfCBGb3JF YWNoLU9iamVjdCB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAkXy5OYW1l DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cCA9IGlmICgkbmFtZSAtbWF0Y2ggJ192 b3JfZHVtbXlfJykgeyAndm9yIER1bW15ZGF0ZW4nIH0NCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVsc2VpZiAoJG5hbWUgLW1hdGNoICdfdm9yX3Jlc2V0XycpIHsgJ3ZvciBSZXNl dCcgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmICgkbmFtZSAtbWF0 Y2ggJ192b3Jfd2llZGVyaGVyc3RlbGx1bmdfJykgeyAndm9yIFdpZWRlcmhlcnN0ZWxsdW5nJyB9 DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgJ21hbnVlbGwnIH0NCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAkYnVuZGxlID0gJG5hbWUuU3RhcnRzV2l0aCgnc25h cF8nKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlaW50cmFlZ2UgKz0gW29yZGVyZWRd QHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZWluYW1lICAgPSAkbmFtZQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm9lc3NlICAgICA9ICRfLkxlbmd0aA0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnN0ZWxsdEFtICA9ICRfLkxhc3RXcml0 ZVRpbWUuVG9TdHJpbmcoJ3MnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXAg ICAgICAgICA9ICR0eXANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oYWx0ICAg ICAgPSBpZiAoJGJ1bmRsZSkgeyAnS29tcGxldHQgKFBsYW51bmcgKyBBZG1pbiknIH0gZWxzZSB7 ICdOdXIgUGxhbnVuZycgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3RCdW5k bGUgICA9ICRidW5kbGUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgJGVpbnRyYWVnZSA9IEAoJGVpbnRyYWVnZSB8IFNvcnQtT2JqZWN0 IC1Qcm9wZXJ0eSBlcnN0ZWxsdEFtIC1EZXNjZW5kaW5nKQ0KICAgICAgICAgICAgICAgIFNlbmQt SnNvbk9iamVjdCAkUmVzcG9uc2UgJGVpbnRyYWVnZQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVl DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJFBhdGggLW1hdGNoICdeL2FwaS9wbGFu dW5nL2JhY2t1cC9kb3dubG9hZC8oLispJCcgLWFuZCAkTWV0aG9kIC1lcSAnR0VUJykgew0KICAg ICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LURhcmZCZXJlaWNoICdiYWNrdXBzJykpIHsgU2Vu ZC1FcnJvciAkUmVzcG9uc2UgJ0tlaW5lIEJlcmVjaHRpZ3VuZyAoQmFja3VwcyknIDQwMzsgY29u dGludWUgfQ0KICAgICAgICAgICAgICAgICRuYW1lID0gJE1hdGNoZXNbMV0NCiAgICAgICAgICAg ICAgICBpZiAoLW5vdCAoJG5hbWUgLW1hdGNoICdeKHNuYXBffGxlZ18pWzAtOV9hLXpBLVpdK1wu YmFrJCcpKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdVbmd1ZWx0aWdlciBEYXRlaW5hbWUnIDQw MDsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRmcCA9IEpvaW4tUGF0aCAkRGF0YURpciAo J2NhY2hlLycgKyAkbmFtZSkNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1QYXRoIC1M aXRlcmFsUGF0aCAkZnApKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdCYWNrdXAgbmljaHQgZ2Vm dW5kZW4nIDQwNDsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRrbGFydGV4dCA9IFJlYWQt QmFja3VwVGV4dCAkZnANCiAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICRrbGFydGV4dCkg eyBTZW5kLUVycm9yICRSZXNwb25zZSAnQmFja3VwLURhdGVpIGtvbm50ZSBuaWNodCBnZWxlc2Vu IHdlcmRlbicgNTAwOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJGJ5dGVzID0gW1N5c3Rl bS5UZXh0LkVuY29kaW5nXTo6VVRGOC5HZXRCeXRlcygka2xhcnRleHQpDQogICAgICAgICAgICAg ICAgJFJlc3BvbnNlLlN0YXR1c0NvZGUgPSAyMDANCiAgICAgICAgICAgICAgICAkUmVzcG9uc2Uu Q29udGVudFR5cGUgPSAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCcNCiAgICAgICAg ICAgICAgICBBZGQtU2VjdXJpdHlIZWFkZXJzICRSZXNwb25zZQ0KICAgICAgICAgICAgICAgICRS ZXNwb25zZS5IZWFkZXJzLkFkZCgnQ29udGVudC1EaXNwb3NpdGlvbicsICJhdHRhY2htZW50OyBm aWxlbmFtZT1gIiRuYW1lYCIiKQ0KICAgICAgICAgICAgICAgICRSZXNwb25zZS5Db250ZW50TGVu Z3RoNjQgPSAkYnl0ZXMuTGVuZ3RoDQogICAgICAgICAgICAgICAgJFJlc3BvbnNlLk91dHB1dFN0 cmVhbS5Xcml0ZSgkYnl0ZXMsIDAsICRieXRlcy5MZW5ndGgpDQogICAgICAgICAgICAgICAgJFJl c3BvbnNlLk91dHB1dFN0cmVhbS5DbG9zZSgpDQogICAgICAgICAgICAgICAgY29udGludWUNCiAg ICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvcGxhbnVuZy9iYWNr dXAvd2llZGVyaGVyc3RlbGxlbicgLWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcpIHsNCiAgICAgICAg ICAgICAgICBpZiAoLW5vdCAoVGVzdC1EYXJmQmVyZWljaCAnYmFja3VwcycpKSB7IFNlbmQtRXJy b3IgJFJlc3BvbnNlICdLZWluZSBCZXJlY2h0aWd1bmcgKEJhY2t1cHMpJyA0MDM7IGNvbnRpbnVl IH0NCiAgICAgICAgICAgICAgICAkYm9keSA9IFJlYWQtQm9keSAkUmVxdWVzdA0KICAgICAgICAg ICAgICAgICRkYXRlbiA9ICRib2R5IHwgQ29udmVydEZyb20tSnNvbg0KICAgICAgICAgICAgICAg ICRuYW1lID0gIiQoJGRhdGVuLmRhdGVpbmFtZSkiDQogICAgICAgICAgICAgICAgaWYgKC1ub3Qg KCRuYW1lIC1tYXRjaCAnXihzbmFwX3xsZWdfKVswLTlfYS16QS1aXStcLmJhayQnKSkgeyBTZW5k LUVycm9yICRSZXNwb25zZSAnVW5ndWVsdGlnZXIgRGF0ZWluYW1lJyA0MDA7IGNvbnRpbnVlIH0N CiAgICAgICAgICAgICAgICAkY2FjaGVEaXIgPSBKb2luLVBhdGggJERhdGFEaXIgJ2NhY2hlJw0K ICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRjYWNoZURp cikpIHsgTmV3LUl0ZW0gLUl0ZW1UeXBlIERpcmVjdG9yeSAtUGF0aCAkY2FjaGVEaXIgLUZvcmNl IHwgT3V0LU51bGwgfQ0KICAgICAgICAgICAgICAgICRxdWVsbCA9IEpvaW4tUGF0aCAkY2FjaGVE aXIgJG5hbWUNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0 aCAkcXVlbGwpKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdCYWNrdXAgbmljaHQgZ2VmdW5kZW4n IDQwNDsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICR0cyA9IEdldC1EYXRlIC1Gb3JtYXQg J3l5eXlNTWRkX0hIbW1zcycNCiAgICAgICAgICAgICAgICAkc2ljaGVyID0gInNuYXBfdm9yX3dp ZWRlcmhlcnN0ZWxsdW5nXyR0cy5iYWsiDQogICAgICAgICAgICAgICAgIyBTaWNoZXJoZWl0cy1C dW5kbGUgZGVyIGFrdHVlbGxlbiBEYXRlbiB2b3IgVWViZXJzY2hyZWliZW4uDQogICAgICAgICAg ICAgICAgJHNpY2hlckJ1bmRsZSA9IFtvcmRlcmVkXUB7DQogICAgICAgICAgICAgICAgICAgIGZv cm1hdCAgPSAndmkzLWJhY2t1cC12MScNCiAgICAgICAgICAgICAgICAgICAgdHMgICAgICA9ICR0 cw0KICAgICAgICAgICAgICAgICAgICBwbGFudW5nID0gKFJlYWQtSnNvbk9iamVjdCAncGxhbnVu Zy5qc29uJykNCiAgICAgICAgICAgICAgICAgICAgYWRtaW4gICA9IChSZWFkLUpzb25PYmplY3Qg J2FkbWluLmpzb24nKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBXcml0ZS1C YWNrdXBCeXRlcyAoSm9pbi1QYXRoICRjYWNoZURpciAkc2ljaGVyKSAoJHNpY2hlckJ1bmRsZSB8 IENvbnZlcnRUby1Kc29uIC1EZXB0aCAzMCkNCg0KICAgICAgICAgICAgICAgICRxdWVsbEluaGFs dCA9IFJlYWQtQmFja3VwVGV4dCAkcXVlbGwNCiAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVx ICRxdWVsbEluaGFsdCkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnQmFja3VwLURhdGVpIGtvbm50 ZSBuaWNodCBnZWxlc2VuIHdlcmRlbicgNTAwOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAg dHJ5IHsgJHF1ZWxsRGF0ZW4gPSAkcXVlbGxJbmhhbHQgfCBDb252ZXJ0RnJvbS1Kc29uIH0gY2F0 Y2ggeyBTZW5kLUVycm9yICRSZXNwb25zZSAnQmFja3VwLURhdGVpIG5pY2h0IHBhcnNpZXJiYXIn IDQwMDsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICR3aWVkZXJoZXJnZXN0ZWxsdCA9IEAo KQ0KICAgICAgICAgICAgICAgIGlmICgkcXVlbGxEYXRlbiAtYW5kICRxdWVsbERhdGVuLlBTT2Jq ZWN0LlByb3BlcnRpZXNbJ2Zvcm1hdCddIC1hbmQgIiQoJHF1ZWxsRGF0ZW4uZm9ybWF0KSIuU3Rh cnRzV2l0aCgndmkzLWJhY2t1cCcpKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICgkcXVlbGxE YXRlbi5QU09iamVjdC5Qcm9wZXJ0aWVzWydwbGFudW5nJ10pIHsNCiAgICAgICAgICAgICAgICAg ICAgICAgIFdyaXRlLUpzb25PYmplY3QgJ3BsYW51bmcuanNvbicgJHF1ZWxsRGF0ZW4ucGxhbnVu ZyB8IE91dC1OdWxsDQogICAgICAgICAgICAgICAgICAgICAgICAkd2llZGVyaGVyZ2VzdGVsbHQg Kz0gJ3BsYW51bmcnDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAg aWYgKCRxdWVsbERhdGVuLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2FkbWluJ10pIHsNCiAgICAgICAg ICAgICAgICAgICAgICAgIFdyaXRlLUpzb25PYmplY3QgJ2FkbWluLmpzb24nICRxdWVsbERhdGVu LmFkbWluIHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICAgICAgICAgICR3aWVkZXJoZXJnZXN0 ZWxsdCArPSAnYWRtaW4nDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9 IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAjIExlZ2FjeS1Gb3JtYXQgKG51ciBwbGFudW5n Lmpzb24tSW5oYWx0KS4NCiAgICAgICAgICAgICAgICAgICAgV3JpdGUtSnNvbk9iamVjdCAncGxh bnVuZy5qc29uJyAkcXVlbGxEYXRlbiB8IE91dC1OdWxsDQogICAgICAgICAgICAgICAgICAgICR3 aWVkZXJoZXJnZXN0ZWxsdCArPSAncGxhbnVuZycNCiAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAnYmFja3VwLndpZWRlcmhlcmdlc3RlbGx0JyBAeyBx dWVsbGUgPSAkbmFtZTsgc2ljaGVydW5nID0gJHNpY2hlcjsgaW5oYWx0ID0gKCR3aWVkZXJoZXJn ZXN0ZWxsdCAtam9pbiAnKycpIH0NCiAgICAgICAgICAgICAgICBOZXctSGlud2VpcyAnYmFja3Vw X3dpZWRlcmhlcmdlc3RlbGx0JyAoW29yZGVyZWRdQHsNCiAgICAgICAgICAgICAgICAgICAgYmFj a3VwICAgID0gJG5hbWUNCiAgICAgICAgICAgICAgICAgICAgc2ljaGVydW5nID0gJHNpY2hlcg0K ICAgICAgICAgICAgICAgICAgICBpbmhhbHQgICAgPSAoJHdpZWRlcmhlcmdlc3RlbGx0IC1qb2lu ICcrJykNCiAgICAgICAgICAgICAgICB9KSAoR2V0LUFrdHVlbGxlckJlbnV0emVyKSB8IE91dC1O dWxsDQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBzdGF0dXMg PSAnd2llZGVyaGVyZ2VzdGVsbHQnOyBzaWNoZXJ1bmcgPSAkc2ljaGVyOyBpbmhhbHQgPSAkd2ll ZGVyaGVyZ2VzdGVsbHQgfQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9 DQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL3BsYW51bmcvYmFja3VwL2xvZXNjaGVu JyAtYW5kICRNZXRob2QgLWVxICdQT1NUJykgew0KICAgICAgICAgICAgICAgIGlmICgtbm90IChU ZXN0LURhcmZCZXJlaWNoICdiYWNrdXBzJykpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0tlaW5l IEJlcmVjaHRpZ3VuZyAoQmFja3VwcyknIDQwMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAg ICRib2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0DQogICAgICAgICAgICAgICAgJGRhdGVuID0gJGJv ZHkgfCBDb252ZXJ0RnJvbS1Kc29uDQogICAgICAgICAgICAgICAgJG5hbWUgPSAiJCgkZGF0ZW4u ZGF0ZWluYW1lKSINCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoJG5hbWUgLW1hdGNoICdeKHNu YXBffGxlZ18pWzAtOV9hLXpBLVpdK1wuYmFrJCcpKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdV bmd1ZWx0aWdlciBEYXRlaW5hbWUnIDQwMDsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRm cCA9IEpvaW4tUGF0aCAkRGF0YURpciAoJ2NhY2hlLycgKyAkbmFtZSkNCiAgICAgICAgICAgICAg ICBpZiAoLW5vdCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkZnApKSB7IFNlbmQtRXJyb3IgJFJl c3BvbnNlICdCYWNrdXAgbmljaHQgZ2VmdW5kZW4nIDQwNDsgY29udGludWUgfQ0KICAgICAgICAg ICAgICAgIFJlbW92ZS1JdGVtIC1MaXRlcmFsUGF0aCAkZnAgLUZvcmNlDQogICAgICAgICAgICAg ICAgV3JpdGUtTG9nRWludHJhZyAnYmFja3VwLmdlbG9lc2NodCcgQHsgZGF0ZWluYW1lID0gJG5h bWUgfQ0KICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVz ID0gJ2dlbG9lc2NodCcgfQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9 DQoNCiAgICAgICAgICAgICMgPT09PT0gUkVTRVQgLyBEVU1NWURBVEVOID09PT09DQogICAgICAg ICAgICBpZiAoJFBhdGggLWVxICcvYXBpL3BsYW51bmcvcmVzZXQnIC1hbmQgJE1ldGhvZCAtZXEg J1BPU1QnKSB7DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtSXN0U3VwZXJVc2VyKSkg eyBTZW5kLUVycm9yICRSZXNwb25zZSAnTnVyIFN1cGVyVXNlciBkdWVyZmVuIGRpZSBQbGFudW5n IHp1cnVlY2tzZXR6ZW4nIDQwMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRwbGFudW5n UGF0aCA9IEpvaW4tUGF0aCAkRGF0YURpciAncGxhbnVuZy5qc29uJw0KICAgICAgICAgICAgICAg ICRiYWNrdXBOYW1lID0gJG51bGwNCiAgICAgICAgICAgICAgICBpZiAoVGVzdC1QYXRoIC1MaXRl cmFsUGF0aCAkcGxhbnVuZ1BhdGgpIHsNCiAgICAgICAgICAgICAgICAgICAgJHRzID0gR2V0LURh dGUgLUZvcm1hdCAneXl5eU1NZGRfSEhtbXNzJw0KICAgICAgICAgICAgICAgICAgICAkY2FjaGVE aXIgPSBKb2luLVBhdGggJERhdGFEaXIgJ2NhY2hlJw0KICAgICAgICAgICAgICAgICAgICBpZiAo LW5vdCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkY2FjaGVEaXIpKSB7IE5ldy1JdGVtIC1JdGVt VHlwZSBEaXJlY3RvcnkgLVBhdGggJGNhY2hlRGlyIC1Gb3JjZSB8IE91dC1OdWxsIH0NCiAgICAg ICAgICAgICAgICAgICAgIyBSZXN0YXVyaWVyYmFyZXIgTmFtZSAocGxhbnVuZ19iYWNrdXBfdm9y X3Jlc2V0XyouanNvbikgc3RhdHQNCiAgICAgICAgICAgICAgICAgICAgIyAuYmFrIC0+IHdpcmQg dm9tIEJhY2t1cHMtVGFiIGdlbGlzdGV0IHVuZCBrYW5uIHdpZWRlcmhlcmdlc3RlbGx0DQogICAg ICAgICAgICAgICAgICAgICMgd2VyZGVuLiBGcnVlaGVyIHp1ZGVtIG5pY2h0IGFuIGRlbiBDbGll bnQgenVydWVja2dlZ2ViZW4NCiAgICAgICAgICAgICAgICAgICAgIyAtPiAiQmFja3VwOiB1bmRl ZmluZWQiIGluIGRlciBVSS4NCiAgICAgICAgICAgICAgICAgICAgJGJhY2t1cE5hbWUgPSAicGxh bnVuZ19iYWNrdXBfdm9yX3Jlc2V0XyR0cy5qc29uIg0KICAgICAgICAgICAgICAgICAgICBDb3B5 LUl0ZW0gLUxpdGVyYWxQYXRoICRwbGFudW5nUGF0aCAtRGVzdGluYXRpb24gKEpvaW4tUGF0aCAk Y2FjaGVEaXIgJGJhY2t1cE5hbWUpDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg ICRwbGFudW5nID0gUmVhZC1Kc29uT2JqZWN0ICdwbGFudW5nLmpzb24nDQogICAgICAgICAgICAg ICAgaWYgKCRudWxsIC1uZSAkcGxhbnVuZykgew0KICAgICAgICAgICAgICAgICAgICBpZiAoJHBs YW51bmcuUFNPYmplY3QuUHJvcGVydGllc1snZWludHJhZWdlJ10pIHsgJHBsYW51bmcuZWludHJh ZWdlID0gTmV3LU9iamVjdCBQU09iamVjdCB9DQogICAgICAgICAgICAgICAgICAgIGlmICgkcGxh bnVuZy5QU09iamVjdC5Qcm9wZXJ0aWVzWydrb21tZW50YXJlJ10pIHsgJHBsYW51bmcua29tbWVu dGFyZSA9IE5ldy1PYmplY3QgUFNPYmplY3QgfQ0KICAgICAgICAgICAgICAgICAgICBXcml0ZS1K c29uT2JqZWN0ICdwbGFudW5nLmpzb24nICRwbGFudW5nIHwgT3V0LU51bGwNCiAgICAgICAgICAg ICAgICB9DQogICAgICAgICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAncGxhbnVuZy5yZXNldCcg QHt9DQogICAgICAgICAgICAgICAgTmV3LUhpbndlaXMgJ3BsYW51bmdfcmVzZXQnIChbb3JkZXJl ZF1Aew0KICAgICAgICAgICAgICAgICAgICBoaW53ZWlzID0gJ0VpbnRyYWVnZSB1bmQgS29tbWVu dGFyZSB3dXJkZW4gZ2Vsb2VzY2h0OyBTaWNoZXJ1bmcgbGllZ3QgaW4gZGF0YS9jYWNoZS8uJw0K ICAgICAgICAgICAgICAgIH0pIChHZXQtQWt0dWVsbGVyQmVudXR6ZXIpIHwgT3V0LU51bGwNCiAg ICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0YXR1cyA9ICd6dXJ1 ZWNrZ2VzZXR6dCc7IGJhY2t1cCA9ICRiYWNrdXBOYW1lIH0NCiAgICAgICAgICAgICAgICBjb250 aW51ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2FwaS9wbGFu dW5nL2R1bW15ZGF0ZW4nIC1hbmQgJE1ldGhvZCAtZXEgJ1BPU1QnKSB7DQogICAgICAgICAgICAg ICAgaWYgKC1ub3QgKFRlc3QtSXN0U3VwZXJVc2VyKSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAn TnVyIFN1cGVyVXNlciBkdWVyZmVuIER1bW15ZGF0ZW4gZWluc3BpZWxlbicgNDAzOyBjb250aW51 ZSB9DQogICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0R1bW15ZGF0ZW4gbnVy IGltIERlYnVnLVNlcnZlciAoZGV2L3NlcnZlci5weSkgaW1wbGVtZW50aWVydC4nIDUwMQ0KICAg ICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMgUE9T VCAvYXBpL2FkbWluL3Byb3Rva29sbC1sb2VzY2hlbg0KICAgICAgICAgICAgIyBFaW5tYWwtUmVz ZXQgZnVlciBMb2didWNoICsgQVBJLUxvZy4gU2V0enQgbG9nYnVjaC5qc29uIGF1ZiBbXSwNCiAg ICAgICAgICAgICMgbG9lc2NodCBkaWUgQVBJLUxvZy1EYXRlaSBhdXMgJVRFTVAlLCB1bmQgc2No cmVpYnQgZWluZW4gZWluemlnZW4NCiAgICAgICAgICAgICMgbmV1ZW4gTG9nYnVjaC1FaW50cmFn IChwcm90b2tvbGwuZ2Vsb2VzY2h0KSwgZGFtaXQgZGFzIEVyZWlnbmlzDQogICAgICAgICAgICAj IHNlbGJzdCBuYWNodm9sbHppZWhiYXIgYmxlaWJ0Lg0KICAgICAgICAgICAgaWYgKCRQYXRoIC1l cSAnL2FwaS9hZG1pbi9wcm90b2tvbGwtbG9lc2NoZW4nIC1hbmQgJE1ldGhvZCAtZXEgJ1BPU1Qn KSB7DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtSXN0U3VwZXJVc2VyKSkgeyBTZW5k LUVycm9yICRSZXNwb25zZSAnTnVyIFN1cGVyVXNlciBkdWVyZmVuIGRhcyBQcm90b2tvbGwgbG9l c2NoZW4nIDQwMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICR2b3JoZXIgPSBSZWFkLUpz b25PYmplY3QgJ2xvZ2J1Y2guanNvbicNCiAgICAgICAgICAgICAgICAkYW56YWhsVm9yaGVyID0g MA0KICAgICAgICAgICAgICAgIGlmICgkbnVsbCAtbmUgJHZvcmhlcikgew0KICAgICAgICAgICAg ICAgICAgICAkYW56YWhsVm9yaGVyID0gQCgkdm9yaGVyKS5Db3VudA0KICAgICAgICAgICAgICAg IH0NCiAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdsb2didWNoLmpzb24nIEAoKSB8 IE91dC1OdWxsDQoNCiAgICAgICAgICAgICAgICAkYXBpTG9nQnl0ZXMgPSAwDQogICAgICAgICAg ICAgICAgaWYgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJHNjcmlwdDpBcGlMb2cpIHsNCiAgICAg ICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRhcGlMb2dCeXRl cyA9IChHZXQtSXRlbSAtTGl0ZXJhbFBhdGggJHNjcmlwdDpBcGlMb2cpLkxlbmd0aA0KICAgICAg ICAgICAgICAgICAgICAgICAgUmVtb3ZlLUl0ZW0gLUxpdGVyYWxQYXRoICRzY3JpcHQ6QXBpTG9n IC1Gb3JjZSAtRXJyb3JBY3Rpb24gU3RvcA0KICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHsN CiAgICAgICAgICAgICAgICAgICAgICAgICMgRGF0ZWkgZXZ0bC4gbm9jaCBvZmZlbjsgaWdub3Jp ZXJlbiwgTG9nYnVjaCBpc3QgZGllIHdpY2h0aWdlcmUgU3B1cg0KICAgICAgICAgICAgICAgICAg ICAgICAgJGFwaUxvZ0J5dGVzID0gLTENCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIFdyaXRlLUxvZ0VpbnRyYWcgJ3Byb3Rva29sbC5n ZWxvZXNjaHQnIEB7DQogICAgICAgICAgICAgICAgICAgIGxvZ2J1Y2hFaW50cmFlZ2VWb3JoZXIg PSAkYW56YWhsVm9yaGVyDQogICAgICAgICAgICAgICAgICAgIGFwaUxvZ0J5dGVzICAgICAgICAg ICAgPSAkYXBpTG9nQnl0ZXMNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgU2Vu ZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAew0KICAgICAgICAgICAgICAgICAgICBzdGF0dXMgICAg ICAgICAgICAgICAgID0gJ2dlbG9lc2NodCcNCiAgICAgICAgICAgICAgICAgICAgbG9nYnVjaEVp bnRyYWVnZVZvcmhlciA9ICRhbnphaGxWb3JoZXINCiAgICAgICAgICAgICAgICAgICAgYXBpTG9n Qnl0ZXMgICAgICAgICAgICA9ICRhcGlMb2dCeXRlcw0KICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAjID09PT09 IFNUQVRJU1RJSyAvIExPR0JVQ0ggPT09PT0NCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9h cGkvc3RhdGlzdGlrJyAtYW5kICRNZXRob2QgLWVxICdHRVQnKSB7DQogICAgICAgICAgICAgICAg aWYgKC1ub3QgKFRlc3QtRGFyZkJlcmVpY2ggJ3N0YXRpc3RpaycpKSB7DQogICAgICAgICAgICAg ICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICdLZWluZSBCZXJlY2h0aWd1bmcgKFN0YXRpc3Rp ayknIDQwMzsgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHBs YW51bmcgPSBSZWFkLUpzb25PYmplY3QgJ3BsYW51bmcuanNvbicNCiAgICAgICAgICAgICAgICAk YWRtaW4gICA9IFJlYWQtSnNvbk9iamVjdCAnYWRtaW4uanNvbicNCiAgICAgICAgICAgICAgICBT ZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIChHZXQtU3RhdGlzdGlrRGF0YSAkcGxhbnVuZyAkYWRt aW4pDQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAg IGlmICgkUGF0aCAtZXEgJy9hcGkvbG9nYnVjaCcgLWFuZCAkTWV0aG9kIC1lcSAnR0VUJykgew0K ICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LURhcmZCZXJlaWNoICdsb2didWNoJykpIHsN CiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0tlaW5lIEJlcmVjaHRp Z3VuZyAoTG9nYnVjaCknIDQwMzsgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICAgICAgU2VuZC1Kc29uVGV4dCAkUmVzcG9uc2UgKEdldC1Mb2didWNoVGV4dCkNCiAgICAg ICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAjID09PT09 PT09PT09PT09PT09PT09PSBaRUxMLUxPQ0sgKyBDSEFOR0VTIChMaXZlLVN5bmMpID09PT09PT09 PT09PT09PT09PT09PQ0KICAgICAgICAgICAgIyBQT1NUIC9hcGkvbG9jay96ZWxsZSAgeyBkYXR1 bSwgcGVyc29uSWQgfSAtPiB7IG9rLCB0b2tlbiwgLi4uIH0gb2RlciA0MjMgeyBzcGVycmVyLCAu Li4gfQ0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2FwaS9sb2NrL3plbGxlJyAtYW5kICRN ZXRob2QgLWVxICdQT1NUJykgew0KICAgICAgICAgICAgICAgICRib2R5ID0gUmVhZC1Cb2R5ICRS ZXF1ZXN0DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGJvZHkpIHsgU2VuZC1FcnJvciAkUmVz cG9uc2UgJ0FuZnJhZ2UgenUgZ3Jvc3MnIDQxMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAg ICRhID0gJGJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uDQogICAgICAgICAgICAgICAgJGRhdHVtID0g W3N0cmluZ10kYS5kYXR1bQ0KICAgICAgICAgICAgICAgICRwZXJzb25JZCA9IFtzdHJpbmddJGEu cGVyc29uSWQNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1Mb2NrU2FmZURhdHVtICRk YXR1bSkgLW9yIC1ub3QgKFRlc3QtTG9ja1NhZmVJZCAkcGVyc29uSWQpKSB7DQogICAgICAgICAg ICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICdVbmd1ZWx0aWdlIGRhdHVtL3BlcnNvbklk JyA0MDA7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICR1c2Vy ID0gR2V0LUFrdHVlbGxlckJlbnV0emVyDQogICAgICAgICAgICAgICAgJHJvbGxlID0gKEdldC1S ZWNodGUpLnJvbGxlDQogICAgICAgICAgICAgICAgJHJlcyA9IEFjcXVpcmUtQ2VsbExvY2sgJGRh dHVtICRwZXJzb25JZCAkdXNlciAkcm9sbGUgJGZhbHNlDQogICAgICAgICAgICAgICAgaWYgKC1u b3QgJHJlcy5vaykgew0KICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3Bv bnNlIEB7DQogICAgICAgICAgICAgICAgICAgICAgICBmZWhsZXIgICAgPSAnZ2VzcGVycnQnDQog ICAgICAgICAgICAgICAgICAgICAgICBtZWxkdW5nICAgPSAiV2lyZCBiZWFyYmVpdGV0IHZvbiAk KCRyZXMuZXhpc3RpbmcudXNlcm5hbWUpIg0KICAgICAgICAgICAgICAgICAgICAgICAgc3BlcnJl ciAgID0gJHJlcy5leGlzdGluZy51c2VybmFtZQ0KICAgICAgICAgICAgICAgICAgICAgICAgcm9s bGUgICAgID0gJHJlcy5leGlzdGluZy5yb2xsZQ0KICAgICAgICAgICAgICAgICAgICAgICAgc2Vp dCAgICAgID0gJHJlcy5leGlzdGluZy5sb2NrZWRBdA0KICAgICAgICAgICAgICAgICAgICAgICAg a2FubkZvcmNlID0gKFRlc3QtRGFyZkxvY2tVZWJlcnNjaHJlaWJlbikNCiAgICAgICAgICAgICAg ICAgICAgfSA0MjMNCiAgICAgICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgICAg ICB9DQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAew0KICAgICAg ICAgICAgICAgICAgICBvayAgICAgICA9ICR0cnVlDQogICAgICAgICAgICAgICAgICAgIHRva2Vu ICAgID0gJHJlcy5sb2NrLnRva2VuDQogICAgICAgICAgICAgICAgICAgIGRhdHVtICAgID0gJGRh dHVtDQogICAgICAgICAgICAgICAgICAgIHBlcnNvbklkID0gJHBlcnNvbklkDQogICAgICAgICAg ICAgICAgICAgIHJvbGxlICAgID0gJHJvbGxlDQogICAgICAgICAgICAgICAgICAgIGxvY2tlZEF0 ID0gJHJlcy5sb2NrLmxvY2tlZEF0DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg IGNvbnRpbnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMgUE9TVCAvYXBpL2xvY2sv emVsbGUvZm9yY2UgIHsgZGF0dW0sIHBlcnNvbklkIH0gLT4gdWViZXJzY2hyZWlidCBmcmVtZGVu IExvY2sNCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvbG9jay96ZWxsZS9mb3JjZScg LWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcpIHsNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVz dC1EYXJmTG9ja1VlYmVyc2NocmVpYmVuKSkgew0KICAgICAgICAgICAgICAgICAgICBTZW5kLUVy cm9yICRSZXNwb25zZSAnRm9yY2UtTG9jayBudXIgZnVlciBGYWNoYXVmc2ljaHQvU3VwZXJVc2Vy JyA0MDM7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRib2R5 ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGJvZHkpIHsg U2VuZC1FcnJvciAkUmVzcG9uc2UgJ0FuZnJhZ2UgenUgZ3Jvc3MnIDQxMzsgY29udGludWUgfQ0K ICAgICAgICAgICAgICAgICRhID0gJGJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uDQogICAgICAgICAg ICAgICAgJGRhdHVtID0gW3N0cmluZ10kYS5kYXR1bQ0KICAgICAgICAgICAgICAgICRwZXJzb25J ZCA9IFtzdHJpbmddJGEucGVyc29uSWQNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1M b2NrU2FmZURhdHVtICRkYXR1bSkgLW9yIC1ub3QgKFRlc3QtTG9ja1NhZmVJZCAkcGVyc29uSWQp KSB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICdVbmd1ZWx0aWdl IGRhdHVtL3BlcnNvbklkJyA0MDA7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgICR1c2VyID0gR2V0LUFrdHVlbGxlckJlbnV0emVyDQogICAgICAgICAgICAgICAg JHJvbGxlID0gKEdldC1SZWNodGUpLnJvbGxlDQogICAgICAgICAgICAgICAgJHJlcyA9IEFjcXVp cmUtQ2VsbExvY2sgJGRhdHVtICRwZXJzb25JZCAkdXNlciAkcm9sbGUgJHRydWUNCiAgICAgICAg ICAgICAgICBXcml0ZS1Mb2dFaW50cmFnICdsb2NrLmZvcmNlJyBAeyBkYXR1bSA9ICRkYXR1bTsg cGVyc29uSWQgPSAkcGVyc29uSWQ7IHJvbGxlID0gJHJvbGxlIH0NCiAgICAgICAgICAgICAgICBT ZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7DQogICAgICAgICAgICAgICAgICAgIG9rICAgICAg ID0gJHRydWUNCiAgICAgICAgICAgICAgICAgICAgdG9rZW4gICAgPSAkcmVzLmxvY2sudG9rZW4N CiAgICAgICAgICAgICAgICAgICAgZGF0dW0gICAgPSAkZGF0dW0NCiAgICAgICAgICAgICAgICAg ICAgcGVyc29uSWQgPSAkcGVyc29uSWQNCiAgICAgICAgICAgICAgICAgICAgcm9sbGUgICAgPSAk cm9sbGUNCiAgICAgICAgICAgICAgICAgICAgbG9ja2VkQXQgPSAkcmVzLmxvY2subG9ja2VkQXQN CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAg IH0NCg0KICAgICAgICAgICAgIyBQT1NUIC9hcGkvbG9jay96ZWxsZS9oZWFydGJlYXQgIHsgdG9r ZW4gfSAtPiBha3R1YWxpc2llcnQgbGFzdEJlYXQNCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEg Jy9hcGkvbG9jay96ZWxsZS9oZWFydGJlYXQnIC1hbmQgJE1ldGhvZCAtZXEgJ1BPU1QnKSB7DQog ICAgICAgICAgICAgICAgJGJvZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QNCiAgICAgICAgICAgICAg ICBpZiAoLW5vdCAkYm9keSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnQW5mcmFnZSB6dSBncm9z cycgNDEzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJGEgPSAkYm9keSB8IENvbnZlcnRG cm9tLUpzb24NCiAgICAgICAgICAgICAgICAkdG9rZW4gPSBpZiAoJGEuUFNPYmplY3QuUHJvcGVy dGllc1sndG9rZW4nXSkgeyBbc3RyaW5nXSRhLnRva2VuIH0gZWxzZSB7ICcnIH0NCiAgICAgICAg ICAgICAgICBpZiAoW3N0cmluZ106OklzTnVsbE9yV2hpdGVTcGFjZSgkdG9rZW4pKSB7IFNlbmQt RXJyb3IgJFJlc3BvbnNlICdUb2tlbiBmZWhsdCcgNDAwOyBjb250aW51ZSB9DQogICAgICAgICAg ICAgICAgJHJlcyA9IFJlZnJlc2gtQ2VsbExvY2sgJHRva2VuDQogICAgICAgICAgICAgICAgaWYg KC1ub3QgJHJlcy5vaykgew0KICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJl c3BvbnNlIEB7IGZlaGxlciA9ICd1bmJla2FubnRlcl9sb2NrJzsgbWVsZHVuZyA9ICdMb2NrIGV4 aXN0aWVydCBuaWNodCAobWVocikuJyB9IDQwNA0KICAgICAgICAgICAgICAgICAgICBjb250aW51 ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJl c3BvbnNlIEB7IG9rID0gJHRydWU7IGxhc3RCZWF0ID0gJHJlcy5sb2NrLmxhc3RCZWF0IH0NCiAg ICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAjIERF TEVURSAvYXBpL2xvY2svemVsbGUgIHsgdG9rZW4gfSAtPiBMb2NrIGZyZWlnZWJlbiAoYXVjaCB2 aWEgUXVlcnktU3RyaW5nIGZ1ZXIgc2VuZEJlYWNvbikNCiAgICAgICAgICAgIGlmICgkUGF0aCAt ZXEgJy9hcGkvbG9jay96ZWxsZScgLWFuZCAkTWV0aG9kIC1lcSAnREVMRVRFJykgew0KICAgICAg ICAgICAgICAgICRib2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0DQogICAgICAgICAgICAgICAgJHRv a2VuID0gJG51bGwNCiAgICAgICAgICAgICAgICBpZiAoJGJvZHkpIHsNCiAgICAgICAgICAgICAg ICAgICAgdHJ5IHsgJGEgPSAkYm9keSB8IENvbnZlcnRGcm9tLUpzb247IGlmICgkYS5QU09iamVj dC5Qcm9wZXJ0aWVzWyd0b2tlbiddKSB7ICR0b2tlbiA9IFtzdHJpbmddJGEudG9rZW4gfSB9IGNh dGNoIHt9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChbc3RyaW5nXTo6 SXNOdWxsT3JXaGl0ZVNwYWNlKCR0b2tlbikgLWFuZCAkUmVxdWVzdC5VcmwuUXVlcnkpIHsNCiAg ICAgICAgICAgICAgICAgICAgJHEgPSBbU3lzdGVtLldlYi5IdHRwVXRpbGl0eV06OlBhcnNlUXVl cnlTdHJpbmcoJFJlcXVlc3QuVXJsLlF1ZXJ5KQ0KICAgICAgICAgICAgICAgICAgICAkdG9rZW4g PSBbc3RyaW5nXSRxWyd0b2tlbiddDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg IGlmIChbc3RyaW5nXTo6SXNOdWxsT3JXaGl0ZVNwYWNlKCR0b2tlbikpIHsgU2VuZC1FcnJvciAk UmVzcG9uc2UgJ1Rva2VuIGZlaGx0JyA0MDA7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAk cmVzID0gUmVsZWFzZS1DZWxsTG9jayAkdG9rZW4NCiAgICAgICAgICAgICAgICBTZW5kLUpzb25P YmplY3QgJFJlc3BvbnNlIEB7IG9rID0gJHJlcy5vayB9DQogICAgICAgICAgICAgICAgY29udGlu dWUNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgIyBHRVQgL2FwaS9sb2NrL3plbGxlbiAt PiBMaXN0ZSBhbGxlciBha3RpdmVuIExvY2tzIChmdWVyIExpdmUtSW5kaWNhdG9yKQ0KICAgICAg ICAgICAgaWYgKCRQYXRoIC1lcSAnL2FwaS9sb2NrL3plbGxlbicgLWFuZCAkTWV0aG9kIC1lcSAn R0VUJykgew0KICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgbG9j a3MgPSAoR2V0LUFsbEFjdGl2ZUNlbGxMb2NrcykgfQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVl DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMgUE9TVCAvYXBpL3ZlcmFudHdvcnR1bmcv YXVmZ2VydWVja3Qg4oCUIFN0YXRpc3Rpay1DYXB0dXJlIGZ1ZXIgZGVuDQogICAgICAgICAgICAj ICJFaW5nZXNwcnVuZ2VuIi1CYWxrZW4gaW4gZGVyIFNjaGljaHR2ZXJ0ZWlsdW5nLiBXaXJkIHZv bSBDbGllbnQNCiAgICAgICAgICAgICMgZ2VmZXVlcnQsIHNvYmFsZCBqZW1hbmQgaW5uZXJoYWxi IGRlciAxNC1UYWdlLVZlcmJpbmRsaWNoa2VpdCBuZXUNCiAgICAgICAgICAgICMgaW4gZGllIFRv cC0yICgxLi8yLiBWSTMtREdMKSBlaW5lciBTY2hpY2h0IGF1ZnJ1ZWNrdCDigJQgYWxzbw0KICAg ICAgICAgICAgIyBhdXNzZXJwbGFubWFlc3NpZyBWZXJhbnR3b3J0dW5nIHVlYmVybmltbXQuDQog ICAgICAgICAgICAjIEJvZHk6IHsgcGVyc29uSWQsIGRhdHVtLCBzY2hpY2h0LCBzdHVmZSwgdm9y aGVyV2VydCwgYXVzbG9lc2VyUGVyc29uSWQgfQ0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAn L2FwaS92ZXJhbnR3b3J0dW5nL2F1ZmdlcnVlY2t0JyAtYW5kICRNZXRob2QgLWVxICdQT1NUJykg ew0KICAgICAgICAgICAgICAgICRib2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0DQogICAgICAgICAg ICAgICAgaWYgKC1ub3QgJGJvZHkpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0FuZnJhZ2UgenUg Z3Jvc3MnIDQxMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgIHRyeSB7ICRhID0gJGJvZHkg fCBDb252ZXJ0RnJvbS1Kc29uIH0gY2F0Y2ggeyBTZW5kLUVycm9yICRSZXNwb25zZSAnVW5ndWVs dGlnZXMgSlNPTicgNDAwOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJHBpZCA9IGlmICgk YS5QU09iamVjdC5Qcm9wZXJ0aWVzWydwZXJzb25JZCddKSB7IFtzdHJpbmddJGEucGVyc29uSWQg fSBlbHNlIHsgJycgfQ0KICAgICAgICAgICAgICAgICRkYXQgPSBpZiAoJGEuUFNPYmplY3QuUHJv cGVydGllc1snZGF0dW0nXSkgeyBbc3RyaW5nXSRhLmRhdHVtIH0gZWxzZSB7ICcnIH0NCiAgICAg ICAgICAgICAgICBpZiAoLW5vdCAkcGlkIC1vciAtbm90ICRkYXQpIHsgU2VuZC1FcnJvciAkUmVz cG9uc2UgJ3BlcnNvbklkL2RhdHVtIGZlaGx0JyA0MDA7IGNvbnRpbnVlIH0NCiAgICAgICAgICAg ICAgICAkZmVsZGVyID0gW29yZGVyZWRdQHsNCiAgICAgICAgICAgICAgICAgICAgcGVyc29uSWQg ICA9ICRwaWQNCiAgICAgICAgICAgICAgICAgICAgZGF0dW0gICAgICA9ICRkYXQNCiAgICAgICAg ICAgICAgICAgICAgc2NoaWNodCAgICA9IGlmICgkYS5QU09iamVjdC5Qcm9wZXJ0aWVzWydzY2hp Y2h0J10pIHsgW3N0cmluZ10kYS5zY2hpY2h0IH0gZWxzZSB7ICcnIH0NCiAgICAgICAgICAgICAg ICAgICAgc3R1ZmUgICAgICA9IGlmICgkYS5QU09iamVjdC5Qcm9wZXJ0aWVzWydzdHVmZSddKSB7 IFtpbnRdJGEuc3R1ZmUgfSBlbHNlIHsgMCB9DQogICAgICAgICAgICAgICAgICAgIHZvcmhlcldl cnQgPSBpZiAoJGEuUFNPYmplY3QuUHJvcGVydGllc1sndm9yaGVyV2VydCddKSB7IFtzdHJpbmdd JGEudm9yaGVyV2VydCB9IGVsc2UgeyAnJyB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgICAgIGlmICgkYS5QU09iamVjdC5Qcm9wZXJ0aWVzWydhdXNsb2VzZXJQZXJzb25JZCddKSB7 DQogICAgICAgICAgICAgICAgICAgICRmZWxkZXJbJ2F1c2xvZXNlclBlcnNvbklkJ10gPSBbc3Ry aW5nXSRhLmF1c2xvZXNlclBlcnNvbklkDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ICAgIFdyaXRlLUxvZ0VpbnRyYWcgJ3ZlcmFudHdvcnR1bmcuZWluZ2VzcHJ1bmdlbicgJGZlbGRl cg0KICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgb2sgPSAkdHJ1 ZSB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCg0KDQogICAgICAg ICAgICAjIEdFVCAvYXBpL3BsYW51bmcvY2hhbmdlcz9zZWl0PTxpc28tdHM+IC0+IERlbHRhLUxp c3RlIGZ1ZXIgTGl2ZS1TeW5jDQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL3BsYW51 bmcvY2hhbmdlcycgLWFuZCAkTWV0aG9kIC1lcSAnR0VUJykgew0KICAgICAgICAgICAgICAgICRx ID0gW1N5c3RlbS5XZWIuSHR0cFV0aWxpdHldOjpQYXJzZVF1ZXJ5U3RyaW5nKCRSZXF1ZXN0LlVy bC5RdWVyeSkNCiAgICAgICAgICAgICAgICAkbG9nID0gUmVhZC1Kc29uT2JqZWN0ICdjaGFuZ2Vz Lmpzb24nDQogICAgICAgICAgICAgICAgaWYgKCRudWxsIC1lcSAkbG9nIC1vciAtbm90ICgkbG9n IC1pcyBbYXJyYXldKSkgeyAkbG9nID0gQCgpIH0NCiAgICAgICAgICAgICAgICAkbWF4U2VxID0g R2V0LU1heENoYW5nZVNlcSAkbG9nDQogICAgICAgICAgICAgICAgaWYgKCRxLkFsbEtleXMgLWNv bnRhaW5zICdzZWl0X3NlcScpIHsNCiAgICAgICAgICAgICAgICAgICAgIyBOZXVlciByYWNlLWZy ZWllciBzZXEtQ3Vyc29yIChDaGFuZ2VzICsgc2VydmVyU2VxIGF1cw0KICAgICAgICAgICAgICAg ICAgICAjIERFTVNFTEJFTiBSZWFkKS4gTGVlcmVyIHNlaXRfc2VxID0gRXJzdC1TeW5jIC0+IG51 ciBDdXJzb3IuDQogICAgICAgICAgICAgICAgICAgICRyYXcgPSBbc3RyaW5nXSRxWydzZWl0X3Nl cSddDQogICAgICAgICAgICAgICAgICAgIGlmIChbc3RyaW5nXTo6SXNOdWxsT3JFbXB0eSgkcmF3 KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGNoYW5nZXMgPSBAKCkNCiAgICAgICAgICAg ICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzcSA9IDA7IFt2b2lk XVtpbnRdOjpUcnlQYXJzZSgkcmF3LCBbcmVmXSRzcSkNCiAgICAgICAgICAgICAgICAgICAgICAg ICRjaGFuZ2VzID0gQCgkbG9nIHwgV2hlcmUtT2JqZWN0IHsgJG51bGwgLW5lICRfLnNlcSAtYW5k IFtpbnRdJF8uc2VxIC1ndCAkc3EgfSkNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7DQogICAgICAgICAgICAgICAg ICAgICAgICBzZXJ2ZXJUcyAgPSAoR2V0LURhdGUpLlRvVW5pdmVyc2FsVGltZSgpLlRvU3RyaW5n KCdvJykNCiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclNlcSA9ICRtYXhTZXENCiAgICAg ICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgICA9IFtvYmplY3RbXV0kY2hhbmdlcw0KICAgICAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAg ICAgICAgIyBCYWNrd2FyZC1jb21wYXQ6IGFsdGVyIFdhbGwtQ2xvY2stQ3Vyc29yIChhbHRlIENs aWVudHMpLg0KICAgICAgICAgICAgICAgICAgICAkc2VpdCA9IFtzdHJpbmddJHFbJ3NlaXQnXQ0K ICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7DQogICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJUcyAgPSAoR2V0LURhdGUpLlRvVW5pdmVyc2FsVGltZSgp LlRvU3RyaW5nKCdvJykNCiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclNlcSA9ICRtYXhT ZXENCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgICA9IChHZXQtQ2hhbmdlc1NpbmNl ICRzZWl0KQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMgPT09PT0g UHJvZmlsYmlsZGVyIChBdmF0YXJlKSA9PT09PQ0KICAgICAgICAgICAgIyBEYXRlaTogJERhdGFE aXIvYXZhdGFycy88aWQ+LmpwZyAgIChKUEVHLCB2b20gQ2xpZW50IGF1ZiAyMDB4MjAwDQogICAg ICAgICAgICAjIGhlcnVudGVyZ2VyZWNobmV0LCB1ZWJsaWNoIDUtMjUgS0IpLg0KICAgICAgICAg ICAgIw0KICAgICAgICAgICAgIyBCZXJlY2h0aWd1bmc6DQogICAgICAgICAgICAjICAgUE9TVC9E RUxFVEU6IFNVL0ZBIE9ERVIgZWlnZW5lIFBlcnNvbklkIChTZWxmLVNlcnZpY2UpLg0KICAgICAg ICAgICAgIyAgIEdFVDogICAgICAgICBhbGxlIGVpbmdlbG9nZ3RlbiBVc2VyIChpbSBHcmlkIHNp Y2h0YmFyKS4NCiAgICAgICAgICAgICMNCiAgICAgICAgICAgICMgUE9TVC1Cb2R5OiB7ICJkYXRh VXJsIjogImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsPC4uLj4iIH0NCiAgICAgICAgICAgICMgMjUw IEtCIGhhcnRlciBDYXAgKGRlZmVuc2l2IOKAlCBDbGllbnQgc2NoaWNrdCB0eXBpc2NoIDwzMCBL QikuDQogICAgICAgICAgICBpZiAoJFBhdGggLW1hdGNoICdeL2FwaS9wZXJzb25lbi8oXGQrKS9h dmF0YXIkJykgew0KICAgICAgICAgICAgICAgICRwZXJzb25JZCA9ICRtYXRjaGVzWzFdDQogICAg ICAgICAgICAgICAgJHIgPSBHZXQtUmVjaHRlDQogICAgICAgICAgICAgICAgJGlzdEVpZ2VuID0g KCRudWxsIC1uZSAkci5tZWluZVBlcnNvbklkIC1hbmQgW2ludF0kcGVyc29uSWQgLWVxIFtpbnRd JHIubWVpbmVQZXJzb25JZCkNCiAgICAgICAgICAgICAgICAkaXN0QmVyZWNodGlndCA9IChUZXN0 LUlzdEFkbWluKSAtb3IgJGlzdEVpZ2VuDQogICAgICAgICAgICAgICAgJGF2YXRhckRpciA9IEpv aW4tUGF0aCAkRGF0YURpciAnYXZhdGFycycNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVz dC1QYXRoIC1MaXRlcmFsUGF0aCAkYXZhdGFyRGlyKSkgew0KICAgICAgICAgICAgICAgICAgICB0 cnkgeyBOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5IC1QYXRoICRhdmF0YXJEaXIgLUZvcmNl IHwgT3V0LU51bGwgfSBjYXRjaCB7fQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICAkYXZhdGFyRmlsZSA9IEpvaW4tUGF0aCAkYXZhdGFyRGlyICgkcGVyc29uSWQgKyAnLmpwZycp DQogICAgICAgICAgICAgICAgaWYgKCRNZXRob2QgLWVxICdQT1NUJykgew0KICAgICAgICAgICAg ICAgICAgICBpZiAoLW5vdCAkaXN0QmVyZWNodGlndCkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAn S2VpbmUgQmVyZWNodGlndW5nJyA0MDM7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAgICAg JGJvZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QNCiAgICAgICAgICAgICAgICAgICAgaWYgKC1ub3Qg JGJvZHkpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0FuZnJhZ2UgenUgZ3Jvc3MnIDQxMzsgY29u dGludWUgfQ0KICAgICAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAg ICAgJG9iaiA9ICRib2R5IHwgQ29udmVydEZyb20tSnNvbg0KICAgICAgICAgICAgICAgICAgICAg ICAgJGRhdGFVcmwgPSBbc3RyaW5nXSRvYmouZGF0YVVybA0KICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKC1ub3QgJGRhdGFVcmwgLW9yIC1ub3QgJGRhdGFVcmwuU3RhcnRzV2l0aCgnZGF0YTpp bWFnZS8nKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3Bv bnNlICdVbmd1ZWx0aWdlcyBCaWxkZm9ybWF0IChlcndhcnRlIGRhdGE6aW1hZ2UvLi4uO2Jhc2U2 NCwuLi4pJyA0MDA7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICAgICAgICAgICAgICAkYmFzZTY0ID0gJGRhdGFVcmwgLXJlcGxhY2UgJ15kYXRhOmltYWdl L1thLXpBLVpdKztiYXNlNjQsJywgJycNCiAgICAgICAgICAgICAgICAgICAgICAgICRieXRlcyA9 IFtTeXN0ZW0uQ29udmVydF06OkZyb21CYXNlNjRTdHJpbmcoJGJhc2U2NCkNCiAgICAgICAgICAg ICAgICAgICAgICAgIGlmICgkYnl0ZXMuTGVuZ3RoIC1ndCAyNjIxNDQpIHsgU2VuZC1FcnJvciAk UmVzcG9uc2UgJ0JpbGQgenUgZ3Jvc3MgKG1heCAyNTAgS0IpJyA0MTM7IGNvbnRpbnVlIH0NCiAg ICAgICAgICAgICAgICAgICAgICAgIFtTeXN0ZW0uSU8uRmlsZV06OldyaXRlQWxsQnl0ZXMoJGF2 YXRhckZpbGUsICRieXRlcykNCiAgICAgICAgICAgICAgICAgICAgICAgICMgYXZhdGFyVHMgaW4g cGxhbnVuZy5qc29uIHNldHplbiwgZGFtaXQgZGVyIENhY2hlLUJ1c3Rlcg0KICAgICAgICAgICAg ICAgICAgICAgICAgIyBuYWNoIFJlbG9hZCBiZWthbm50IGlzdCAoQ2xpZW50IGhhZW5ndCA/dHM9 PGF2YXRhclRzPg0KICAgICAgICAgICAgICAgICAgICAgICAgIyBhbiBkaWUgQmlsZC1VUkwpLg0K ICAgICAgICAgICAgICAgICAgICAgICAgJHRzID0gW2xvbmddKFtEYXRlVGltZU9mZnNldF06OlV0 Y05vdy5Ub1VuaXhUaW1lTWlsbGlzZWNvbmRzKCkpDQogICAgICAgICAgICAgICAgICAgICAgICBJ bnZva2UtV2l0aEZpbGVMb2NrICdwbGFudW5nLmpzb24nIHsNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAkcGxhbnVuZyA9IFJlYWQtSnNvbk9iamVjdCAncGxhbnVuZy5qc29uJw0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmICgkbnVsbCAtbmUgJHBsYW51bmcgLWFuZCAkcGxhbnVu Zy5wZXJzb25lbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgk cCBpbiAkcGxhbnVuZy5wZXJzb25lbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKFtzdHJpbmddJHAuaWQgLWVxIFtzdHJpbmddJHBlcnNvbklkKSB7DQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRwLlBTT2JqZWN0LlByb3BlcnRp ZXNbJ2F2YXRhclRzJ10pIHsgJHAuYXZhdGFyVHMgPSAkdHMgfQ0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAkcCB8IEFkZC1NZW1iZXIgLU5vdGVQcm9wZXJ0 eU5hbWUgJ2F2YXRhclRzJyAtTm90ZVByb3BlcnR5VmFsdWUgJHRzIC1Gb3JjZSB9DQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdwbGFudW5n Lmpzb24nICRwbGFudW5nIHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgICAgICAgICB9IHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICAg ICAgICAgIFdyaXRlLUxvZ0VpbnRyYWcgJ2F2YXRhci5nZXNldHp0JyBAeyBwZXJzb25JZCA9ICRw ZXJzb25JZDsgYnl0ZXMgPSAkYnl0ZXMuTGVuZ3RoIH0NCiAgICAgICAgICAgICAgICAgICAgICAg IFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0gJ2dlc3BlaWNoZXJ0JzsgYnl0 ZXMgPSAkYnl0ZXMuTGVuZ3RoOyBhdmF0YXJUcyA9ICR0cyB9DQogICAgICAgICAgICAgICAgICAg IH0gY2F0Y2ggew0KICAgICAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2Ug KCJBdmF0YXItVXBsb2FkIGZlaGxnZXNjaGxhZ2VuOiAiICsgJF8uRXhjZXB0aW9uLk1lc3NhZ2Up IDUwMA0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICgkTWV0aG9kIC1lcSAnREVM RVRFJykgew0KICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAkaXN0QmVyZWNodGlndCkgeyBT ZW5kLUVycm9yICRSZXNwb25zZSAnS2VpbmUgQmVyZWNodGlndW5nJyA0MDM7IGNvbnRpbnVlIH0N CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChU ZXN0LVBhdGggLUxpdGVyYWxQYXRoICRhdmF0YXJGaWxlKSB7DQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgUmVtb3ZlLUl0ZW0gLUxpdGVyYWxQYXRoICRhdmF0YXJGaWxlIC1Gb3JjZSAtRXJy b3JBY3Rpb24gU2lsZW50bHlDb250aW51ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdy aXRlLUxvZ0VpbnRyYWcgJ2F2YXRhci5lbnRmZXJudCcgQHsgcGVyc29uSWQgPSAkcGVyc29uSWQg fQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgSW52 b2tlLVdpdGhGaWxlTG9jayAncGxhbnVuZy5qc29uJyB7DQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgJHBsYW51bmcgPSBSZWFkLUpzb25PYmplY3QgJ3BsYW51bmcuanNvbicNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAoJG51bGwgLW5lICRwbGFudW5nIC1hbmQgJHBsYW51bmcu cGVyc29uZW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHAg aW4gJHBsYW51bmcucGVyc29uZW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIChbc3RyaW5nXSRwLmlkIC1lcSBbc3RyaW5nXSRwZXJzb25JZCAtYW5kICRwLlBTT2Jq ZWN0LlByb3BlcnRpZXNbJ2F2YXRhclRzJ10pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAkcC5QU09iamVjdC5Qcm9wZXJ0aWVzLlJlbW92ZSgnYXZhdGFyVHMnKQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrDQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUtSnNvbk9iamVjdCAn cGxhbnVuZy5qc29uJyAkcGxhbnVuZyB8IE91dC1OdWxsDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSB8IE91dC1OdWxsDQogICAgICAgICAg ICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0YXR1cyA9ICdnZWxv ZXNjaHQnIH0NCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7DQogICAgICAgICAgICAgICAg ICAgICAgICBTZW5kLUVycm9yICRSZXNwb25zZSAoIkF2YXRhci1Mb2VzY2hlbiBmZWhsZ2VzY2hs YWdlbjogIiArICRfLkV4Y2VwdGlvbi5NZXNzYWdlKSA1MDANCiAgICAgICAgICAgICAgICAgICAg fQ0KICAgICAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgIH0NCiAgICAgICAgICAgICMgQXZhdGFyLVN0YXRpYy1TZXJ2aW5nOiAvZGF0YS9hdmF0 YXJzLzxpZD4uanBnIGxpZXN0IGRpcmVrdCBhdXMNCiAgICAgICAgICAgICMgJERhdGFEaXIvYXZh dGFycy8uIEJld3Vzc3QgZWlnZW5lciBQZmFkIHN0YXR0IHVlYmVyIFJlc29sdmUtDQogICAgICAg ICAgICAjIFNhZmVQYXRoLCB3ZWlsIGRvcnQgZGVyIEFzc2V0LUNhY2hlLVJvb3QgZ2VudXR6dCB3 aXJkIChBdmF0YXJlDQogICAgICAgICAgICAjIGxpZWdlbiBhYmVyIHVudGVyIERhdGFEaXIpLg0K ICAgICAgICAgICAgaWYgKCRQYXRoIC1tYXRjaCAnXi9kYXRhL2F2YXRhcnMvKFxkKylcLmpwZyQn IC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsNCiAgICAgICAgICAgICAgICAkYXZhdGFyRmlsZSA9 IEpvaW4tUGF0aCAoSm9pbi1QYXRoICREYXRhRGlyICdhdmF0YXJzJykgKCRtYXRjaGVzWzFdICsg Jy5qcGcnKQ0KICAgICAgICAgICAgICAgIGlmIChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRhdmF0 YXJGaWxlIC1QYXRoVHlwZSBMZWFmKSB7DQogICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0g W1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbEJ5dGVzKCRhdmF0YXJGaWxlKQ0KICAgICAgICAgICAg ICAgICAgICAkUmVzcG9uc2UuU3RhdHVzQ29kZSA9IDIwMA0KICAgICAgICAgICAgICAgICAgICAk UmVzcG9uc2UuQ29udGVudFR5cGUgPSAnaW1hZ2UvanBlZycNCiAgICAgICAgICAgICAgICAgICAg QWRkLVNlY3VyaXR5SGVhZGVycyAkUmVzcG9uc2UNCiAgICAgICAgICAgICAgICAgICAgJFJlc3Bv bnNlLkNvbnRlbnRMZW5ndGg2NCA9ICRjb250ZW50Lkxlbmd0aA0KICAgICAgICAgICAgICAgICAg ICAkUmVzcG9uc2UuT3V0cHV0U3RyZWFtLldyaXRlKCRjb250ZW50LCAwLCAkY29udGVudC5MZW5n dGgpDQogICAgICAgICAgICAgICAgICAgICRSZXNwb25zZS5PdXRwdXRTdHJlYW0uQ2xvc2UoKQ0K ICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3Ig JFJlc3BvbnNlICgiQXZhdGFyIG5pY2h0IGdlZnVuZGVuOiAiICsgJFBhdGgpIDQwNA0KICAgICAg ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KDQog ICAgICAgICAgICAjID09PT09IFN0YXRpc2NoZSBEYXRlaWVuID09PT09DQogICAgICAgICAgICBp ZiAoJFBhdGggLWVxICcvJyAtb3IgJFBhdGggLWVxICcnKSB7ICRQYXRoID0gJy9pbmRleC5odG1s JyB9DQogICAgICAgICAgICAkUmVsUGF0aCA9ICRQYXRoLlRyaW1TdGFydCgnLycpDQogICAgICAg ICAgICAjIGRhdGEvLURpcmVrdHp1Z3JpZmYtR2F0ZSAoU3ByaW50IDEg4oCUIFNpY2hlcmhlaXRz LU5vdGJyZW1zZSAyMDI2LTA1LTI4KToNCiAgICAgICAgICAgICMgR0VUIC9kYXRhL2FkbWluLmpz b24gKHVuZCBwbGFudW5nLmpzb24sIGxvZ2J1Y2guanNvbiwgaGlud2Vpc2UuanNvbiwNCiAgICAg ICAgICAgICMgY2hhbmdlcy5qc29uLCBzb3dpZSBhbGxlIEJhY2t1cC1EYXRlaWVuKSBsaWVmZXJ0 ZSB2b3JoZXIgUm9oLUpTT04gT0hORQ0KICAgICAgICAgICAgIyBBdXRoLUNoZWNrLiBBdmF0YXIt U3VicGZhZCB3aXJkIG9iZW4gc2VwYXJhdCBnZXJvdXRldC4gQWxsZXMgYW5kZXJlDQogICAgICAg ICAgICAjIHVudGVyIC9kYXRhLyBkYXJmIE5VUiBkdXJjaCBlaW5lIGV4cGxpeml0ZSBXaGl0ZWxp c3QgKFN0YXRpc3Rpay0gdW5kDQogICAgICAgICAgICAjIExvZ2J1Y2gtVGFybi1NYXJrdXBzLCB3 ZWl0ZXIgdW50ZW4gZ2VnYXRlZCkuIFNvbnN0IDQwNC4NCiAgICAgICAgICAgICMgTWl0dGVpbHVu Z3MtVXBsb2FkcyAoU3ByaW50IEQtM2IsIDIwMjYtMDUtMjkpOiB2b20gU1UgaG9jaGdlbGFkZW5l DQogICAgICAgICAgICAjIEJpbGRlciArIFBERnMgdW50ZXIgZGF0YS91cGxvYWRzL21pdHRlaWx1 bmdlbi9tXzx0cz5fPHJhbmQ+LjxleHQ+Lg0KICAgICAgICAgICAgIyBFbmR1bmdzLVdoaXRlbGlz dCB2ZXJoaW5kZXJ0IENvZGUtU211Z2dsaW5nIHVlYmVyIGRlbiBQZmFkLg0KICAgICAgICAgICAg JGlzdE1pdHRlaWx1bmdVcGxvYWQgPSAoJFJlbFBhdGggLW1hdGNoICdeZGF0YS91cGxvYWRzL21p dHRlaWx1bmdlbi9tX1xkK19bYS16MC05XStcLihqcGd8cG5nfHdlYnB8cGRmKSQnKQ0KICAgICAg ICAgICAgaWYgKCRSZWxQYXRoIC1saWtlICdkYXRhLyonIC1hbmQNCiAgICAgICAgICAgICAgICAk UmVsUGF0aCAtbmUgJ2RhdGEvbWFpbmZyYW1lLmh0bWwnIC1hbmQNCiAgICAgICAgICAgICAgICAk UmVsUGF0aCAtbmUgJ2RhdGEvc2FuaXRpemVyLmh0bWwnIC1hbmQNCiAgICAgICAgICAgICAgICAt bm90ICRpc3RNaXR0ZWlsdW5nVXBsb2FkKSB7DQogICAgICAgICAgICAgICAgTG9nLUFwaSAoJ0dB VEUgNDA0IHswfSAoZGF0YS8tRGlyZWt0enVncmlmZiBibG9ja2llcnQpJyAtZiAkUmVsUGF0aCkN CiAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25zZSAoIlVuYmVrYW5udGVyIEVuZHB1 bmt0OiAkTWV0aG9kICRQYXRoIikgNDA0DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAg ICAgICAgIH0NCiAgICAgICAgICAgICMgVmVyc2NobGVpZXJ1bmdzLUZpbHRlcjogZGFzIFN0YXRp c3Rpay0gdW5kIExvZ2J1Y2gtTW9kdWwgc2FtdA0KICAgICAgICAgICAgIyBNYXJrdXAtRnJhZ21l bnQgd2VyZGVuIG51ciBhbiBCZXJlY2h0aWd0ZSBhdXNnZWxpZWZlcnQuDQogICAgICAgICAgICAj IERpcmVrdGVyIFp1Z3JpZmYgZHVyY2ggVW5iZXJlY2h0aWd0ZSAoQnJvd3Nlci1VUkwtRWluZ2Fi ZSwNCiAgICAgICAgICAgICMgU291cmNlLVN0b2ViZXJuKSBiZWtvbW10IDQwNCDigJQgd2llIGJl aSBqZWRlbSBuaWNodCBleGlzdGllcmVuZGVuDQogICAgICAgICAgICAjIFBmYWQsIGtlaW4gU3Rh dHVzY29kZS1WZXJyYXQuDQogICAgICAgICAgICBpZiAoJFJlbFBhdGggLWVxICdqcy9zdGF0aXN0 aWsuanMnIC1vciAkUmVsUGF0aCAtZXEgJ2RhdGEvbWFpbmZyYW1lLmh0bWwnKSB7DQogICAgICAg ICAgICAgICAgaWYgKC1ub3QgKFRlc3QtRGFyZkJlcmVpY2ggJ3N0YXRpc3RpaycpKSB7DQogICAg ICAgICAgICAgICAgICAgIExvZy1BcGkgKCdHQVRFIDQwNCB7MH0gKGtlaW4gU3RhdGlzdGlrLVJl Y2h0KScgLWYgJFJlbFBhdGgpDQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3Bv bnNlICgiVW5iZWthbm50ZXIgRW5kcHVua3Q6ICRNZXRob2QgJFBhdGgiKSA0MDQNCiAgICAgICAg ICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGVs c2VpZiAoJFJlbFBhdGggLWVxICdqcy9sb2didWNoLmpzJyAtb3IgJFJlbFBhdGggLWVxICdkYXRh L3Nhbml0aXplci5odG1sJykgew0KICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LURhcmZC ZXJlaWNoICdsb2didWNoJykpIHsNCiAgICAgICAgICAgICAgICAgICAgTG9nLUFwaSAoJ0dBVEUg NDA0IHswfSAoa2VpbiBMb2didWNoLVJlY2h0KScgLWYgJFJlbFBhdGgpDQogICAgICAgICAgICAg ICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICgiVW5iZWthbm50ZXIgRW5kcHVua3Q6ICRNZXRo b2QgJFBhdGgiKSA0MDQNCiAgICAgICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAg ICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkRmlsZVBhdGggPSBSZXNvbHZlLVNh ZmVQYXRoICRSZWxQYXRoDQogICAgICAgICAgICAkdm9uRmFsbGJhY2sgPSAkZmFsc2UNCiAgICAg ICAgICAgICMgU2hhcmUtRmFsbGJhY2s6IHdlbm4gZGllIERhdGVpIGxva2FsIGZlaGx0ICh6LkIu IHhsc3guZnVsbC5taW4uanMNCiAgICAgICAgICAgICMgd2lyZCBiZXd1c3N0IG5pY2h0IGluIGRl biBDbGllbnQtQ2FjaGUga29waWVydCksIHZlcnN1Y2hlIHNpZQ0KICAgICAgICAgICAgIyB2b20g a29uZmlndXJpZXJ0ZW4gQXNzZXRGYWxsYmFjay1QZmFkIG5hY2h6dWxhZGVuLg0KICAgICAgICAg ICAgaWYgKCgtbm90ICRGaWxlUGF0aCAtb3IgLW5vdCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAk RmlsZVBhdGggLVBhdGhUeXBlIExlYWYpKSAtYW5kICRzY3JpcHQ6QXNzZXRGYWxsYmFjaykgew0K ICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICRmYWxsYmFja1RyeSA9 IEpvaW4tUGF0aCAkc2NyaXB0OkFzc2V0RmFsbGJhY2sgJFJlbFBhdGgNCiAgICAgICAgICAgICAg ICAgICAgJGZhbGxiYWNrTm9ybSA9IFtTeXN0ZW0uSU8uUGF0aF06OkdldEZ1bGxQYXRoKCRmYWxs YmFja1RyeSkNCiAgICAgICAgICAgICAgICAgICAgJGZhbGxiYWNrUm9vdE5vcm0gPSBbU3lzdGVt LklPLlBhdGhdOjpHZXRGdWxsUGF0aCgkc2NyaXB0OkFzc2V0RmFsbGJhY2spDQogICAgICAgICAg ICAgICAgICAgIGlmICgkZmFsbGJhY2tOb3JtLlN0YXJ0c1dpdGgoJGZhbGxiYWNrUm9vdE5vcm0s IFtTeXN0ZW0uU3RyaW5nQ29tcGFyaXNvbl06Ok9yZGluYWxJZ25vcmVDYXNlKSAtYW5kDQogICAg ICAgICAgICAgICAgICAgICAgICAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkZmFsbGJhY2tOb3Jt IC1QYXRoVHlwZSBMZWFmKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJEZpbGVQYXRoID0g JGZhbGxiYWNrTm9ybQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHZvbkZhbGxiYWNrID0gJHRy dWUNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gY2F0Y2ggew0KICAg ICAgICAgICAgICAgICAgICBMb2ctQXBpICgnRkFMTEJBQ0stRkVITEVSIHswfTogezF9JyAtZiAk UmVsUGF0aCwgJF8uRXhjZXB0aW9uLk1lc3NhZ2UpDQogICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRGaWxlUGF0aCAtYW5kIChUZXN0LVBhdGggLUxpdGVy YWxQYXRoICRGaWxlUGF0aCAtUGF0aFR5cGUgTGVhZikpIHsNCiAgICAgICAgICAgICAgICAkZXh0 ID0gW1N5c3RlbS5JTy5QYXRoXTo6R2V0RXh0ZW5zaW9uKCRGaWxlUGF0aCkuVG9Mb3dlcigpDQog ICAgICAgICAgICAgICAgJG1pbWUgPSBpZiAoJE1pbWVUeXBlcy5Db250YWluc0tleSgkZXh0KSkg eyAkTWltZVR5cGVzWyRleHRdIH0gZWxzZSB7ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0N CiAgICAgICAgICAgICAgICAkY29udGVudCA9IFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxCeXRl cygkRmlsZVBhdGgpDQogICAgICAgICAgICAgICAgJFJlc3BvbnNlLlN0YXR1c0NvZGUgPSAyMDAN CiAgICAgICAgICAgICAgICAkUmVzcG9uc2UuQ29udGVudFR5cGUgPSAkbWltZQ0KICAgICAgICAg ICAgICAgIEFkZC1TZWN1cml0eUhlYWRlcnMgJFJlc3BvbnNlDQogICAgICAgICAgICAgICAgJFJl c3BvbnNlLkNvbnRlbnRMZW5ndGg2NCA9ICRjb250ZW50Lkxlbmd0aA0KICAgICAgICAgICAgICAg ICRSZXNwb25zZS5PdXRwdXRTdHJlYW0uV3JpdGUoJGNvbnRlbnQsIDAsICRjb250ZW50Lkxlbmd0 aCkNCiAgICAgICAgICAgICAgICAkUmVzcG9uc2UuT3V0cHV0U3RyZWFtLkNsb3NlKCkNCiAgICAg ICAgICAgICAgICBpZiAoJHZvbkZhbGxiYWNrKSB7IExvZy1BcGkgKCdGSUxFIDIwMCB7MH0gKEZh bGxiYWNrLCB7MX0gQnl0ZXMpJyAtZiAkUmVsUGF0aCwgJGNvbnRlbnQuTGVuZ3RoKSB9DQogICAg ICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIExvZy1BcGkgKCdGSUxFIDQwNCB7MH0g KHdlZGVyIGltIFJvb3Qgbm9jaCB1ZWJlciBBc3NldEZhbGxiYWNrIGdlZnVuZGVuKScgLWYgJFJl bFBhdGgpDQogICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgKCJVbmJla2FubnRl ciBFbmRwdW5rdDogJE1ldGhvZCAkUGF0aCIpIDQwNA0KICAgICAgICAgICAgfQ0KICAgICAgICB9 DQogICAgICAgIGNhdGNoIHsNCiAgICAgICAgICAgIExvZy1BcGkgKCdFWENFUFRJT04gezB9IHsx fTogezJ9JyAtZiAkTWV0aG9kLCAkUGF0aCwgJF8uRXhjZXB0aW9uLk1lc3NhZ2UpDQogICAgICAg ICAgICB0cnkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAkXy5FeGNlcHRpb24uTWVzc2FnZSA1MDAg fSBjYXRjaCB7fQ0KICAgICAgICB9DQogICAgfQ0KfQ0KY2F0Y2ggew0KICAgIFdyaXRlLUhvc3Qg KCdTZXJ2ZXItRmVobGVyOiB7MH0nIC1mICRfLkV4Y2VwdGlvbi5NZXNzYWdlKQ0KICAgIExvZy1B cGkgKCdNQUlOLUxPT1AgRVhDRVBUSU9OOiB7MH0nIC1mICRfLkV4Y2VwdGlvbi5NZXNzYWdlKQ0K fQ0KZmluYWxseSB7DQogICAgJFdhdGNoZG9nVGltZXIuU3RvcCgpDQogICAgaWYgKCRMaXN0ZW5l ci5Jc0xpc3RlbmluZykgeyAkTGlzdGVuZXIuU3RvcCgpIH0NCiAgICBMb2ctQXBpICdTSFVURE9X TicNCiAgICBXcml0ZS1Ib3N0ICdTZXJ2ZXIgYmVlbmRldC4nDQp9DQo= ### FILE: stop.bat | 1307 QGVjaG8gb2ZmDQpzZXRsb2NhbCBlbmFibGVkZWxheWVkZXhwYW5zaW9uDQpjaGNwIDY1MDAxID5u dWwgMj4mMQ0KdGl0bGUgVkkzIERHTC1QbGFudW5nIC0gU3RvcA0KDQo6OiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCjo6ICBWSTMg REdMLVBsYW51bmcg4oCUIFN0b3AtU2tyaXB0DQo6Og0KOjogIEJlZW5kZXQgc2FlbXRsaWNoZSBQ b3dlclNoZWxsLVByb3plc3NlLCBkaWUgc2VydmVyLnBzMQ0KOjogIGF1c2Z1ZWhyZW4uIE5vdHdl bmRpZyB6LkIuIHdlbm4gUTpcX2FwcCB1bWJlbmFubnQvZ2Vsb2VzY2h0DQo6OiAgd2VyZGVuIHNv bGwgdW5kIGVpbiBhbHRlciBTZXJ2ZXIgbm9jaCBEYXRlaS1IYW5kbGVzIGhhZWx0Lg0KOjogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQoNCmVjaG8uDQplY2hvICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KZWNobyAgIFZJMyBER0wtUGxhbnVuZyAtIFN0b3ANCmVjaG8gID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQplY2hvLg0KDQpzZXQgIkJFRU5ERVQ9MCIN CmZvciAvZiAidXNlYmFja3EgdG9rZW5zPSoiICUlUCBpbiAoYHBvd2Vyc2hlbGwgLU5vUHJvZmls ZSAtQ29tbWFuZCAiR2V0LUNpbUluc3RhbmNlIFdpbjMyX1Byb2Nlc3MgLUVycm9yQWN0aW9uIFNp bGVudGx5Q29udGludWUgfCBXaGVyZS1PYmplY3QgeyAoJF8uTmFtZSAtZXEgJ3Bvd2Vyc2hlbGwu ZXhlJyAtb3IgJF8uTmFtZSAtZXEgJ3B3c2guZXhlJykgLWFuZCAkXy5Db21tYW5kTGluZSAtYW5k ICRfLkNvbW1hbmRMaW5lIC1tYXRjaCAnc2VydmVyW1xcdy5dKlwucHMxJyB9IHwgU2VsZWN0LU9i amVjdCAtRXhwYW5kUHJvcGVydHkgUHJvY2Vzc0lkImApIGRvICgNCiAgICBlY2hvICAgQmVlbmRl IFBvd2VyU2hlbGwgUElEICUlUCBeKHNlcnZlci5wczFeKS4uLg0KICAgIHRhc2traWxsIC9QSUQg JSVQIC9GID5udWwgMj4mMQ0KICAgIHNldCAvYSBCRUVOREVUPSFCRUVOREVUISsxDQopDQoNCmlm ICIhQkVFTkRFVCEiPT0iMCIgKA0KICAgIGVjaG8gICBLZWluZSBsYXVmZW5kZW4gc2VydmVyLnBz MS1Qcm96ZXNzZSBnZWZ1bmRlbi4NCikgZWxzZSAoDQogICAgZWNoby4NCiAgICBlY2hvICAgJUJF RU5ERVQlIFByb3plc3NeKGVeKSBiZWVuZGV0LiBEYXRlaS1Mb2NrcyBzaW5kIGpldHp0IGZyZWku DQopDQoNCmVjaG8uDQp0aW1lb3V0IC90IDMgL25vYnJlYWsgPm51bA0KZXhpdCAvYiAwDQo= ### FILE: style.css | 234463 LyogPT09IFZJMyBER0wtUGxhbnVuZyDigJQgU3R5bGVzaGVldCAoRXhjZWwtdHJldWVzIExheW91 dCkgPT09CiAgIFN0YW5kOiAyMDI2LTA1LTE0ICovCgoqLCAqOjpiZWZvcmUsICo6OmFmdGVyIHsg Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CgovKiA9PT09 PSBDU1MtVmFyaWFibGVuID09PT09ICovCjpyb290IHsKICAgIC8qIEdlZGVja3RlcywgcHJvZmVz c2lvbmVsbGVzIEZhcmJzY2hlbWEgKi8KICAgIC0tYmctcHJpbWFyeTogIzJDM0U1MDsKICAgIC0t YmctcHJpbWFyeS1kYXJrOiAjMjQzMzQyOwogICAgLS1iZy1ib2R5OiAjRjBGMUYzOwogICAgLS1i Zy1jYXJkOiAjRkZGRkZGOwogICAgLS1iZy1jYXJkLWFsdDogI0Y1RjZGODsKICAgIC0tYmctdG9v bGJhcjogI0U4RUFFRDsKICAgIC0tYmctaG92ZXI6ICNFOEVERjI7CiAgICAtLWJnLWFjdGl2ZTog I0Q2REVFNjsKICAgIC0tYmctaW5wdXQ6ICNGRkZGRkY7CiAgICAtLWJnLXNpZGViYXI6ICNGMEYx RjM7CiAgICAtLWJnLW5hdi1ob3ZlcjogI0RERTZFRjsgICAvKiBTaWRlYmFyLU5hdjogZXR3YXMg ZGV1dGxpY2hlciBibGF1LWdldG9lbnRlciBIb3ZlciAqLwogICAgLS1iZy1uYXYtYWt0aXY6ICND NkQzRTE7ICAgLyogU2lkZWJhci1OYXY6IGtsYXIgc2ljaHRiYXJlciBBa3Rpdi1adXN0YW5kICov CgogICAgLS10ZXh0LXByaW1hcnk6ICMyQzNFNTA7CiAgICAtLXRleHQtc2Vjb25kYXJ5OiAjNUQ2 RDdFOwogICAgLS10ZXh0LW11dGVkOiAjNjM2RTcyOyAgIC8qIEtvbnRyYXN0IDQuNjc6MSBhdWYg LS1iZy1ib2R5ICh2b3JoZXIgIzk1QTVBNiA9IDIuMjU6MSwgV0NBRy1BQSB2ZXJmZWhsdCkgKi8K ICAgIC0tdGV4dC1oZWFkaW5nOiAjMkMzRTUwOwogICAgLS10ZXh0LW9uLXByaW1hcnk6ICNFQ0Yw RjE7CgogICAgLS1ib3JkZXItY29sb3I6ICNENUQ4REM7CiAgICAtLWJvcmRlci1saWdodDogI0U1 RThFQjsKICAgIC0tYm9yZGVyLXN0cm9uZzogI0FFQjZCRjsKICAgIC8qIEVpZ2VuZSBHcmlkLUxp bmllbmZhcmJlOiAtLWJvcmRlci1saWdodCAoI0U1RThFQikgd2FyIGF1ZiBsZWVyZW4gd2Vpc3Nl bgogICAgICAgWmVsbGVuIHByYWt0aXNjaCB1bnNpY2h0YmFyICgiWmVsbGJlZ3Jlbnp1bmdzbGlu aWVuIHdlaXNzL2R1cmNoc2ljaHRpZyIpLgogICAgICAgRGV1dGxpY2gga3JhZWZ0aWdlciAodGFi ZWxsZW5rYWxrdWxhdGlvbnMtdHlwaXNjaGVzIEdyYXUpLCBkYW1pdCBkYXMKICAgICAgIFJhc3Rl ciBhdWNoIGF1ZiByZWluIHdlaXNzZW4gWmVsbGVuIG9obmUgU3BhbHRlbi1UaW50IGtsYXIgZXJr ZW5uYmFyCiAgICAgICBibGVpYnQg4oCUIGVnYWwgYW4gd2VsY2hlciBTdGVsbGUgZGVyIFRhZmVs LiAqLwogICAgLS1ncmlkLWxpbmllOiAjQkZDOEQ0OwogICAgLS1zaGFkb3ctbGlnaHQ6IHJnYmEo MCwwLDAsMC4wNCk7CiAgICAtLXNoYWRvdy1tZWRpdW06IHJnYmEoMCwwLDAsMC4xMCk7CiAgICAt LXNoYWRvdy1tb2RhbDogMCA4cHggMzJweCByZ2JhKDAsMCwwLDAuMjApOwogICAgLS10cmFuc2l0 aW9uLXN0ZDogYWxsIDAuMTVzIGVhc2U7CgogICAgLyogR3JpZC1EaW1lbnNpb25lbiDigJQga29t cGFrdCB3aWUgRXhjZWwgKi8KICAgIC0temVsbGUtYnJlaXRlOiA2MnB4OwogICAgLS16ZWxsZS1o b2VoZTogMjJweDsKICAgIC0tbmFtZW4tYnJlaXRlOiAyNjBweDsKICAgIC0ta29wZi16ZWlsZW4t aG9laGU6IDIwcHg7CgogICAgLS10YWctbm9ybWFsOiAjRkZGRkZGOwogICAgLS10YWctd29jaGVu ZW5kZTogI0VERjJGODsgICAgIC8qIHNlaHIgaGVsbGVzIEJsYXUsIHJ1aGlnIChNaS1Lby1GZWVk YmFjazoga2VpbiBMaWxhKSAqLwogICAgLS10YWctZmVpZXJ0YWc6ICNEN0U0RjA7ICAgICAgIC8q IGV0d2FzIGtyYWVmdGlnZXJlcyBCbGF1LCBoZWJ0IHNpY2ggdm9tIFdFIGFiICovCiAgICAtLXRh Zy1mZXJpZW46ICNFOEY1RUM7CiAgICAtLXRhZy1oZXV0ZTogIzJDM0U1MDsKICAgIC0tdGFnLXNv bmRlcjogI0ZGRjlFNjsKCiAgICAvKiBHZWRlY2t0ZSBTY2hpY2h0ZmFyYmVuICovCiAgICAtLWZh cmJlLWZydWVoOiAjQjcxQzFDOwogICAgLS1mYXJiZS1zcGFldDogIzFBNTI3NjsKICAgIC0tZmFy YmUtbmFjaHQ6ICMxQjVFMjA7CiAgICAtLWZhcmJlLWVyZm9sZzogIzI3ODk2RDsKICAgIC0tZmFy YmUtZmVobGVyOiAjQjAzQTJFOwogICAgLS1mYXJiZS13YXJudW5nOiAjQ0E2RjFFOwogICAgLS1m YXJiZS1pbmZvOiAjMkMzRTUwOwogICAgLS1mYXJiZS1ha3plbnQ6ICM0YTkwZTI7CgogICAgLyog QnJhbmQtUHJpbWFlciAod2FyIHZvcmhlciBpbXBsaXppdCB1ZWJlciAtLXRleHQtaGVhZGluZzsK ICAgICAgIHdpcmQgYW4gdmllbGVuIFN0ZWxsZW4gZGlyZWt0IHJlZmVyZW56aWVydCwgamV0enQg c2F1YmVyIGRlZmluaWVydCkgKi8KICAgIC0tZmFyYmUtcHJpbWFlcjogdmFyKC0tdGV4dC1oZWFk aW5nKTsKICAgIC0tZmFyYmUtcHJpbWFlci1ob3ZlcjogIzE0MzA0YTsKCiAgICAvKiBWZXJhbnR3 b3J0bGljaC1NYXJrZXIg4oCUIHRoZW1lLWZlc3Qgc3RhdHQgaGFyZGNvZGVkIEdvbGQgKCNGMUM0 MEYpICovCiAgICAtLWZhcmJlLXZlcmFudHdvcnRsaWNoOiB2YXIoLS1mYXJiZS13YXJudW5nKTsK CiAgICAvKiBTcGFjaW5nLVNrYWxhIChzdGF0dCBIYXJkY29kZS1QaXhlbCB1ZWJlcmFsbCkgKi8K ICAgIC0tc3AtMTogNHB4OwogICAgLS1zcC0yOiA4cHg7CiAgICAtLXNwLTM6IDEycHg7CiAgICAt LXNwLTQ6IDE2cHg7CiAgICAtLXNwLTU6IDI0cHg7CiAgICAtLXNwLTY6IDMycHg7CiAgICAtLXNw LTc6IDQ4cHg7CgogICAgLyogQm9yZGVyLVJhZGl1cy1Ta2FsYSAoVVgtQXVkaXQgU3ByaW50IDMu MSwgMjAyNi0wNS0yOSkuCiAgICAgICBWb3JoZXI6IDQ3IHZlcnNjaGllZGVuZSBIZXgtV2VydGUg ZnVlciBib3JkZXItcmFkaXVzIGltIENTUywKICAgICAgIGNoYW90aXNjaGVyIE1peCBhdXMgMy80 LzYvOC8xMC8xMnB4LiBKZXR6dCB2aWVyIHplbnRyYWxlCiAgICAgICBWYXJpYWJsZW4sIGRpZSBl aW4ga29uc2lzdGVudGVyIFJlZmFjdG9yIHVlYmVyIGRpZSBoYWV1Zmlnc3RlbgogICAgICAgU3Rl bGxlbiAoMy80LzYvMTBweCA9IH4xNDMgVHJlZmZlcikgYWJiaWxkZXQuICovCiAgICAtLXJhZGl1 cy14czogM3B4OyAgIC8qIGtsZWluZSBJbnB1dHMsIGtvbXBha3RlIEJhZGdlcyAqLwogICAgLS1y YWRpdXMtc206IDRweDsgICAvKiBTdGFuZGFyZC1CdXR0b25zLCBub3JtYWxlIEthcnRlbiAqLwog ICAgLS1yYWRpdXMtbWQ6IDZweDsgICAvKiBCYW5uZXIsIGdyb2Vzc2VyZSBDYXJkcyAqLwogICAg LS1yYWRpdXMtbGc6IDEwcHg7ICAvKiBNb2RhbCwgVG9wLUxldmVsLUNvbnRhaW5lciAqLwoKICAg IC8qIEZvbnQtU2l6ZS1Ta2FsYSAoVVgtQXVkaXQgU3ByaW50IDMuMykuIEJpc2hlciA4LTIwcHgg dmVyc3RyZXV0LiAqLwogICAgLS1mcy14czogMTBweDsKICAgIC0tZnMtc206IDExcHg7CiAgICAt LWZzLWJhc2U6IDEycHg7CiAgICAtLWZzLW1kOiAxM3B4OwogICAgLS1mcy1sZzogMTRweDsKICAg IC0tZnMteGw6IDE2cHg7CiAgICAtLWZzLTJ4bDogMjBweDsKCiAgICAvKiBaLUluZGV4LUViZW5l biAoc3RhdHQgMTAwIC8gMjAwIC8gMTAwMCAvIDk5OTkgaGFyZGNvZGVkKS4KICAgICAgIFdpY2h0 aWc6IFBhZ2UtUG9wb3ZlciBsaWVndCBVTlRFUiBkZW0gTW9kYWwsIE1vZGFsLVBvcG92ZXIgKHou Qi4KICAgICAgIERyb3Bkb3ducyBpbiBNb2RhbGVuKSBEQVJVRUJFUi4gVG9hc3QgaW1tZXIgb2Jl biBkcmF1Zi4gKi8KICAgIC0tei1iYXNlOiAxOwogICAgLS16LXN0aWNreTogNTsKICAgIC0tei1u YXY6IDEwOwogICAgLS16LW92ZXJsYXk6IDEwMDsKICAgIC0tei1lZGl0b3I6IDIwMDsKICAgIC0t ei1wb3BvdmVyLXBhZ2U6IDk5OTk7CiAgICAtLXotbW9kYWw6IDEwMDAwOwogICAgLS16LXBvcG92 ZXI6IDEwMTAwOwogICAgLS16LXRvYXN0OiAyMDAwMDsKCiAgICAvKiBTdGF0dXMtQmFubmVyIChS ZWFkLW9ubHktSGlud2VpcywgT25ib2FyZGluZy1FbXB0eS1TdGF0ZSwgSW5saW5lLUluZm8pICov CiAgICAtLWJhbm5lci1pbmZvLWJnOiAjRTNFRUY3OwogICAgLS1iYW5uZXItaW5mby1ib3JkZXI6 IHZhcigtLWZhcmJlLWFremVudCk7CiAgICAtLWJhbm5lci1pbmZvLXRleHQ6IHZhcigtLXRleHQt aGVhZGluZyk7CiAgICAtLWJhbm5lci13YXJuLWJnOiAjRkJFRUREOwogICAgLS1iYW5uZXItd2Fy bi1ib3JkZXI6IHZhcigtLWZhcmJlLXdhcm51bmcpOwogICAgLS1iYW5uZXItd2Fybi10ZXh0OiAj OEE0QTEyOwogICAgLS1iYW5uZXItZXJmb2xnLWJnOiAjRENFRkU3OwogICAgLS1iYW5uZXItZXJm b2xnLWJvcmRlcjogdmFyKC0tZmFyYmUtZXJmb2xnKTsKICAgIC0tYmFubmVyLWVyZm9sZy10ZXh0 OiAjMUE2MTQ5OwoKICAgIC8qIFN0YXRpc3Rpay1DaGFydC1QYWxldHRlIChVWC1BdWRpdCBTcHJp bnQgMS4xLCAyMDI2LTA1LTI5KS4KICAgICAgIFRhZy1XZXJ0ZSBzaW5kIGRpZSBoaXN0b3Jpc2No ZW4gSGV4IGF1cyBzdGF0aXN0aWsuanM7IE5pZ2h0LVdlcnRlCiAgICAgICBpbiBbZGF0YS10aGVt ZT0ibmlnaHQiXSBzb3JnZW4gZsO8ciBsZXNiYXJlIEJhbGtlbiBhdWYgZHVua2xlbSBHcnVuZC4g Ki8KICAgIC0tc3RhdC1zZDogI0Q2ODkxMDsKICAgIC0tc3RhdC1zYW1zdGFnOiAjOEU0NEFEOwog ICAgLS1zdGF0LXNvbm50YWc6ICM2QzM0ODM7CiAgICAtLXN0YXQtZmVpZXJ0YWc6ICM5MjJCMjE7 CiAgICAtLXN0YXQta29tcGxldHRlLXdlOiAjNUIyQzZGOwogICAgLS1zdGF0LWZvcnRiaWxkdW5n LTE6ICMxRjYxOEQ7CiAgICAtLXN0YXQtZm9ydGJpbGR1bmctMjogIzI4NzRBNjsKICAgIC0tc3Rh dC1mb3J0YmlsZHVuZy0zOiAjNTQ5OUM3OwogICAgLS1zdGF0LXVybGF1YjogIzVENkQ3RTsKICAg IC0tc3RhdC1rdXI6ICMxMTdBNjU7CiAgICAtLXN0YXQtc29uZGVydXJsYXViOiAjN0I3RDdEOwp9 CgpbZGF0YS10aGVtZT0ibmlnaHQiXSB7CiAgICAtLWJnLXByaW1hcnk6ICMxQTI1MkY7CiAgICAt LWJnLXByaW1hcnktZGFyazogIzE0MUQyNTsKICAgIC0tYmctYm9keTogIzE1MUQyNTsKICAgIC0t YmctY2FyZDogIzFDMjYzMDsKICAgIC0tYmctY2FyZC1hbHQ6ICMyMTMwM0Q7CiAgICAtLWJnLXRv b2xiYXI6ICMyMTMwM0Q7CiAgICAtLWJnLWhvdmVyOiAjMjgzQTRBOwogICAgLS1iZy1hY3RpdmU6 ICMyRjQ0NTg7CiAgICAtLWJnLWlucHV0OiAjMUMyNjMwOwogICAgLS1iZy1zaWRlYmFyOiAjMTgy MjJDOwogICAgLS1iZy1uYXYtaG92ZXI6ICMyNjM4NEE7CiAgICAtLWJnLW5hdi1ha3RpdjogIzM3 NTE3MDsKCiAgICAtLXRleHQtcHJpbWFyeTogI0Q1RERFNTsKICAgIC0tdGV4dC1zZWNvbmRhcnk6 ICM4ODk5QTY7CiAgICAtLXRleHQtbXV0ZWQ6ICM3QzhDOUE7ICAgLyogS29udHJhc3QgfjU6MSBh dWYgRGFyay1Cb2R5ICh2b3JoZXIgIzVBNkE3OCA9IH4zOjEsIEFBLWdyZW56d2VydGlnKSAqLwog ICAgLS10ZXh0LWhlYWRpbmc6ICNBOEM0RDg7CiAgICAtLXRleHQtb24tcHJpbWFyeTogI0Q1RERF NTsKCiAgICAtLWJvcmRlci1jb2xvcjogIzI4M0E0QTsKICAgIC0tYm9yZGVyLWxpZ2h0OiAjMjIz MDQwOwogICAgLS1ib3JkZXItc3Ryb25nOiAjM0E0RTYwOwogICAgLS1ncmlkLWxpbmllOiAjMzg1 MDZBOwogICAgLS1zaGFkb3ctbGlnaHQ6IHJnYmEoMCwwLDAsMC4xNSk7CiAgICAtLXNoYWRvdy1t ZWRpdW06IHJnYmEoMCwwLDAsMC4zMCk7CiAgICAtLXNoYWRvdy1tb2RhbDogMCA4cHggMzJweCBy Z2JhKDAsMCwwLDAuNDUpOwoKICAgIC0tdGFnLW5vcm1hbDogIzFDMjYzMDsKICAgIC0tdGFnLXdv Y2hlbmVuZGU6ICMxRjJBMzg7CiAgICAtLXRhZy1mZWllcnRhZzogIzI1MzU0NzsKICAgIC0tdGFn LWZlcmllbjogIzFDMkUyMjsKICAgIC0tdGFnLXNvbmRlcjogIzJFMkExODsKCiAgICAvKiBCcmFu ZC1QcmltYWVyIChEYXJrKTogaGVsbGVyIGZ1ZXIgSG92ZXItU2ljaHRiYXJrZWl0ICovCiAgICAt LWZhcmJlLXByaW1hZXItaG92ZXI6ICNDNkRCRTk7CgogICAgLyogQmFubmVyIChEYXJrKTogZ2Vk ZWNrdGUgRnVlbGxmYXJiZW4sIGtsYXJlIEFremVudGJvcmTDvHJlICovCiAgICAtLWJhbm5lci1p bmZvLWJnOiAjMUYyRDNEOwogICAgLS1iYW5uZXItaW5mby10ZXh0OiAjQzZEQkU5OwogICAgLS1i YW5uZXItd2Fybi1iZzogIzJFMjQxMjsKICAgIC0tYmFubmVyLXdhcm4tdGV4dDogI0U1Qjg3MjsK ICAgIC0tYmFubmVyLWVyZm9sZy1iZzogIzE2MzAyQTsKICAgIC0tYmFubmVyLWVyZm9sZy10ZXh0 OiAjODhDQ0FFOwoKICAgIC8qIFN0YXRpc3Rpay1DaGFydC1QYWxldHRlIChEYXJrKTogYXVmZ2Vo ZWxsdGUgVMO2bmUgZGFtaXQgQmFsa2VuCiAgICAgICBhdWYgZHVua2xlbSBCb2R5IHNpY2h0YmFy IGJsZWliZW4uIEtvbnRyYXN0IH40LjU6MSB6dW0gYmctY2FyZC4gKi8KICAgIC0tc3RhdC1zZDog I0Y0QTY0MTsKICAgIC0tc3RhdC1zYW1zdGFnOiAjQjQ3Q0QwOwogICAgLS1zdGF0LXNvbm50YWc6 ICM5RTYzQkQ7CiAgICAtLXN0YXQtZmVpZXJ0YWc6ICNEODcwNjc7CiAgICAtLXN0YXQta29tcGxl dHRlLXdlOiAjOUI2NUI1OwogICAgLS1zdGF0LWZvcnRiaWxkdW5nLTE6ICM1QjlCQzk7CiAgICAt LXN0YXQtZm9ydGJpbGR1bmctMjogIzZGQUFEODsKICAgIC0tc3RhdC1mb3J0YmlsZHVuZy0zOiAj ODZCRkUwOwogICAgLS1zdGF0LXVybGF1YjogIzk1QTRCMDsKICAgIC0tc3RhdC1rdXI6ICMzRkJB OUM7CiAgICAtLXN0YXQtc29uZGVydXJsYXViOiAjQThBQUFBOwp9CgpodG1sLCBib2R5IHsKICAg IGhlaWdodDogMTAwJTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBmb250LWZhbWlseTogIlNl Z29lIFVJIiwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBSb2JvdG8sICJIZWx2 ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1i YXNlKTsKICAgIGxpbmUtaGVpZ2h0OiAxLjM7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5 KTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWJvZHkpOwp9CgovKiA9PT09PSBIZWFkZXIgPT09 PT0gKi8KI2tvcGZsZWlzdGUgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBj ZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICBiYWNrZ3JvdW5k OiB2YXIoLS1iZy1wcmltYXJ5KTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW9uLXByaW1hcnkpOwog ICAgcGFkZGluZzogMCAyMHB4OwogICAgaGVpZ2h0OiA0MHB4OwogICAgYm94LXNoYWRvdzogMCAy cHggOHB4IHJnYmEoMCwwLDAsMC4xNSk7CiAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgdmFy KC0tYm9yZGVyLWNvbG9yKTsKICAgIHotaW5kZXg6IHZhcigtLXotb3ZlcmxheSk7CiAgICBwb3Np dGlvbjogcmVsYXRpdmU7Cn0KCiNrb3BmbGVpc3RlIGgxIHsgZm9udC1zaXplOiB2YXIoLS1mcy1s Zyk7IGZvbnQtd2VpZ2h0OiA2MDA7IGxldHRlci1zcGFjaW5nOiAtMC4zcHg7IGRpc3BsYXk6IGZs ZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KLmhlYWRlci1sb2dvIHsgaGVpZ2h0OiAzMHB4OyB3 aWR0aDogYXV0bzsgbWFyZ2luLXJpZ2h0OiAxMHB4OyBmbGV4OiBub25lOyB9Ci5oZWFkZXItamFo ciB7IGZvbnQtd2VpZ2h0OiA0MDA7IG9wYWNpdHk6IDAuNzsgbWFyZ2luLWxlZnQ6IDhweDsgfQoK LmhlYWRlci1uYXYgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDJweDsgfQoubmF2LWJ0biB7CiAgICBi YWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNik7 CiAgICBib3JkZXI6IG5vbmU7CiAgICBwYWRkaW5nOiA2cHggMTRweDsKICAgIGJvcmRlci1yYWRp dXM6IHZhcigtLXJhZGl1cy1zbSkgNHB4IDAgMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZv bnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIGZv bnQtd2VpZ2h0OiA1MDA7CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXN0ZCk7Cn0K Lm5hdi1idG46aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1 NSwwLjA4KTsgfQoubmF2LWJ0bi5ha3RpdiB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kOiByZ2Jh KDI1NSwyNTUsMjU1LDAuMTUpOyBib3JkZXItYm90dG9tOiAycHggc29saWQgI2ZmZjsgfQovKiBQ cnVlZnVuZ3MtVGFiIFN0YXR1cy1GYWVyYnVuZyDigJQgVW50ZXJiZXNldHp1bmdzLVZvcndhcm51 bmcgKi8KLm5hdi1idG4uYmstdGFiLWRlZml6aXQtMncgewogICAgY29sb3I6ICNmZmY7CiAgICBi YWNrZ3JvdW5kOiByZ2JhKDE3Niw1OCw0NiwwLjU1KTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAg LTJweCAwICNCMDNBMkU7CiAgICBhbmltYXRpb246IGJrUHVscyAyLjRzIGVhc2UtaW4tb3V0IGlu ZmluaXRlOwp9Ci5uYXYtYnRuLmJrLXRhYi1kZWZpeml0LTJ3OmhvdmVyIHsgYmFja2dyb3VuZDog cmdiYSgxNzYsNTgsNDYsMC43KTsgfQoubmF2LWJ0bi5iay10YWItZGVmaXppdC00dyB7CiAgICBj b2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjAyLDExMSwzMCwwLjQ1KTsKICAgIGJv eC1zaGFkb3c6IGluc2V0IDAgLTJweCAwICNDQTZGMUU7Cn0KLm5hdi1idG4uYmstdGFiLWRlZml6 aXQtNHc6aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwxMTEsMzAsMC42KTsgfQpAa2V5ZnJh bWVzIGJrUHVscyB7IDAlLDEwMCUgeyBib3gtc2hhZG93OiBpbnNldCAwIC0ycHggMCAjQjAzQTJF OyB9IDUwJSB7IGJveC1zaGFkb3c6IGluc2V0IDAgLTJweCAwICNmZjZiNWUsIDAgMCA4cHggcmdi YSgxNzYsNTgsNDYsMC42KTsgfSB9CgouaGVhZGVyLXJlY2h0cyB7IGRpc3BsYXk6IGZsZXg7IGFs aWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTJweDsgfQouYmVudXR6ZXItYmFkZ2UgeyBmb250LXNp emU6IHZhcigtLWZzLXNtKTsgb3BhY2l0eTogMC43OyB9Ci5pY29uLWJ0biB7CiAgICBiYWNrZ3Jv dW5kOiB0cmFuc3BhcmVudDsgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC43KTsgYm9yZGVyOiAx cHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjIpOwogICAgcGFkZGluZzogM3B4IDEwcHg7IGJv cmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IGN1cnNvcjogcG9pbnRlcjsgZm9udC1zaXpl OiB2YXIoLS1mcy1zbSk7IGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgdHJhbnNpdGlvbjogdmFy KC0tdHJhbnNpdGlvbi1zdGQpOwp9Ci5pY29uLWJ0bjpob3ZlciB7IGJhY2tncm91bmQ6IHJnYmEo MjU1LDI1NSwyNTUsMC4xKTsgY29sb3I6ICNmZmY7IH0KCi8qIEJ1Z1JlcG9ydC1CdXR0b246IGRl dXRsaWNoZXIgYWxzIEluZm8sIG1pdCByb3RlbSBHbMO8aGVuIGJlaW0gSG92ZXIuICovCi5idWdy ZXBvcnQtYnRuIHsKICAgIGNvbG9yOiAjZmZjNGJjOwogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3 Niw1OCw0NiwwLjY1KTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBsZXR0ZXItc3BhY2luZzog MC4zcHg7Cn0KLmJ1Z3JlcG9ydC1idG46aG92ZXIgewogICAgYmFja2dyb3VuZDogdmFyKC0tZmFy YmUtZmVobGVyLCAjQjAzQTJFKTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZmFyYmUtZmVobGVy LCAjQjAzQTJFKTsKICAgIGNvbG9yOiAjZmZmOwogICAgYm94LXNoYWRvdzogMCAwIDEwcHggMXB4 IHZhcigtLWZhcmJlLWZlaGxlciwgI0IwM0EyRSksIDAgMCAyMHB4IHJnYmEoMTc2LDU4LDQ2LDAu NTUpOwp9CgovKiA9PT09PSBBbnNpY2h0ZW4gPT09PT0gKi8KLmFuc2ljaHQgeyBoZWlnaHQ6IGNh bGMoMTAwdmggLSA0MHB4KTsgb3ZlcmZsb3c6IGhpZGRlbjsgZGlzcGxheTogZmxleDsgZmxleC1k aXJlY3Rpb246IGNvbHVtbjsgfQoudmVyc3RlY2t0IHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50 OyB9CgovKiA9PT09PSBUb29sYmFyIChQbGFudW5nKSA9PT09PSAqLwojcGxhbnVuZy10b29sYmFy IHsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OwogICAg cGFkZGluZzogNHB4IDEycHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy10b29sYmFyKTsKICAg IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAgaGVpZ2h0 OiAzMHB4Owp9Ci50b29sYmFyLWJ0biB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsg Y29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1i b3JkZXItc3Ryb25nKTsgcGFkZGluZzogMnB4IDEwcHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJh ZGl1cy14cyk7CiAgICBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBm b250LWZhbWlseTogaW5oZXJpdDsgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1zdGQpOwp9 Ci50b29sYmFyLWJ0bjpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsgYm9yZGVy LWNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9Ci50b29sYmFyLXRyZW5uZXIgeyB3aWR0aDog MXB4OyBoZWlnaHQ6IDE2cHg7IGJhY2tncm91bmQ6IHZhcigtLWJvcmRlci1jb2xvcik7IG1hcmdp bjogMCA0cHg7IH0KLnRvb2xiYXItaW5mbyB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBjb2xv cjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB9Ci50b29sYmFyLWNoZWNrIHsKICAgIGRpc3BsYXk6 IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDRweDsKICAgIGZvbnQtc2l6 ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBjdXJzb3I6IHBv aW50ZXI7CiAgICBwYWRkaW5nOiAycHggNnB4OyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMt eHMpOwp9Ci50b29sYmFyLWNoZWNrOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIp OyB9Ci50b29sYmFyLWNoZWNrIGlucHV0IHsgY3Vyc29yOiBwb2ludGVyOyB9CgovKiBVbWdlc2V0 enRlIFBlcnNvbmVuIChudXIgenVyIFJlY2hlcmNoZSBlaW5nZWJsZW5kZXQpICovCi5uYW1lbi16 ZWlsZS11bWdlc2V0enQgeyBvcGFjaXR5OiAwLjQ1OyBmb250LXN0eWxlOiBpdGFsaWM7IH0KLm5h bWVuLXplaWxlLXVtZ2VzZXR6dCAubnotbmFtZSB7IHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJv dWdoOyB9Ci5ncmlkLXplaWxlLXVtZ2VzZXR6dCB7IG9wYWNpdHk6IDAuNDU7IH0KLmdyaWQtemVp bGUtdW1nZXNldHp0IC5ncmlkLXplbGxlIHsgY3Vyc29yOiBub3QtYWxsb3dlZCAhaW1wb3J0YW50 OyB9Ci56ZWlsZS11bWdlc2V0enQgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IG9wYWNp dHk6IDAuNzsgfQovKiBDaGVycnktUGljayAzMDA5ZWE4OiBQYXBpZXJrb3JiLVplaWxlbiBrbGFy IGFiZ2VzZXR6dCByb3Qg4oCUIHZpc3VlbGwgdm9tCiAgICJVbWdlc2V0enQiIChTdGF0dXMgbmlj aHQgbWVociBha3RpdikgdW50ZXJzY2hlaWRiYXIsIHdlaWwgaGllciBkaWUgUGVyc29uCiAgIGlu IEF1ZmxvZXN1bmcgaXN0IHVuZCBuYWNoIEF1ZmJld2FocnVuZ3MtRnJpc3QgaGFydCBnZWxvZXNj aHQgd2lyZC4gKi8KLnplaWxlLXBhcGllcmtvcmIgewogICAgYmFja2dyb3VuZDogcmdiYSgxNzYs IDU4LCA0NiwgMC4wOCk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOwp9Ci56ZWls ZS1wYXBpZXJrb3JiOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMTc2LCA1OCwgNDYsIDAu MTQpOwp9Ci56ZWlsZS11bWdlc2V0enQgdGQgeyBmb250LXN0eWxlOiBpdGFsaWM7IH0KCi8qID09 PT09IFBsYW51bmdzLUNvbnRhaW5lciAoRXhjZWwtTGF5b3V0KSA9PT09PSAqLwojcGxhbnVuZy1j b250YWluZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXg6IDE7CiAgICBvdmVyZmxvdzog aGlkZGVuOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7Cn0KCi8qID09PT09IEZpeGll cnRlIGxpbmtlIFNwYWx0ZSA9PT09PSAqLwojbmFtZW4tc3BhbHRlIHsKICAgIHdpZHRoOiB2YXIo LS1uYW1lbi1icmVpdGUpOwogICAgbWluLXdpZHRoOiB2YXIoLS1uYW1lbi1icmVpdGUpOwogICAg Ym9yZGVyLXJpZ2h0OiAycHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7CiAgICBkaXNwbGF5 OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGJhY2tncm91bmQ6IHZhcigt LWJnLWNhcmQpOwogICAgei1pbmRleDogMTA7Cn0KCi8qIEtvcGZiZXJlaWNoIGxpbmtzICovCiNr b3BmLWxpbmtzIHsKICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ry b25nKTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKfQoKLmtvcGYtemVpbGUg ewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBoZWlnaHQ6 IHZhcigtLWtvcGYtemVpbGVuLWhvZWhlKTsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2 YXIoLS1ib3JkZXItbGlnaHQpOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy14cyk7CiAgICBwYWRk aW5nOiAwIDZweDsKfQoKLmt6LWRhdHVtLCAua3otd29jaGVudGFnLCAua3otYW5sYXNzIHsKICAg IGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpOwogICAgY29sb3I6IHZhcigtLXRleHQtb24t cHJpbWFyeSk7Cn0KLyogSGVpZ2h0cyBtdWVzc2VuIDE6MSB6dSBkZW4gRGF0ZW4tWmVpbGVuIHJl Y2h0cyBwYXNzZW4gKi8KLmt6LWFubGFzcyAgeyBoZWlnaHQ6IDMycHg7IH0gICAvKiA9ICNkYXR1 bS16ZWlsZS1hbmxhc3MgLmtkLXplbGxlIChNYWkgMjAyNjogRXZlbnRzIG1pdCBkcmluKSAqLwoK LyogSGV1dGUtQmFubmVyIHVlYmVyZGVja3QgZGllIG9iZXJlbiBkcmVpIFBsYXR6aGFsdGVyCiAg IChrei1kYXR1bSArIGt6LXdvY2hlbnRhZyArIGt6LWFubGFzcykgPSAyMCArIDIwICsgMzggPSA3 OHB4LiAqLwoja29wZi1saW5rcyB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfQoja2wtaGV1dGUtYmFu bmVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAg ICByaWdodDogMDsKICAgIGhlaWdodDogY2FsYyh2YXIoLS1rb3BmLXplaWxlbi1ob2VoZSkgKiAy ICsgMzJweCk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmltYXJ5KTsKICAgIGNvbG9yOiB2 YXIoLS10ZXh0LW9uLXByaW1hcnkpOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1z OiBjZW50ZXI7CiAgICBnYXA6IDhweDsKICAgIHBhZGRpbmc6IDAgMTJweDsKICAgIHotaW5kZXg6 IDI7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggMCByZ2JhKDI1NSwyNTUsMjU1LDAuMDYp Owp9Ci5rbC1oZXV0ZS1idXR0b24gewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSww LjE0KTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW9uLXByaW1hcnkpOwogICAgYm9yZGVyOiAxcHgg c29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjMyKTsKICAgIHBhZGRpbmc6IDZweCAxNnB4OwogICAg Ym9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0 OwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAg ICBsZXR0ZXItc3BhY2luZzogMC40cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0 aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2UsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLCB0cmFu c2Zvcm0gMC4xcyBlYXNlOwp9Ci5rbC1oZXV0ZS1idXR0b246aG92ZXIgewogICAgYmFja2dyb3Vu ZDogcmdiYSgyNTUsMjU1LDI1NSwwLjI2KTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsMjU1 LDI1NSwwLjU1KTsKfQoua2wtaGV1dGUtYnV0dG9uOmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kOiBy Z2JhKDI1NSwyNTUsMjU1LDAuMzQpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDFweCk7Cn0K LmtsLWhldXRlLWluZm8gewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBj b2x1bW47CiAgICBsaW5lLWhlaWdodDogMS4xNTsKICAgIG1pbi13aWR0aDogMDsKfQoua2wtaGV1 dGUtZGF0dW0tdHh0IHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOwogICAgZm9udC13ZWln aHQ6IDcwMDsKICAgIGxldHRlci1zcGFjaW5nOiAwLjJweDsKfQoua2wtaGV1dGUtd3RhZy10eHQg ewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7CiAgICBmb250LXdlaWdodDogNTAwOwogICAg b3BhY2l0eTogMC43ODsKICAgIG1hcmdpbi10b3A6IDFweDsKfQoKLmt6LXN0YWVya2UgewogICAg YmFja2dyb3VuZDogIzM0NDk1RTsKICAgIGNvbG9yOiAjRUNGMEYxOwogICAgZm9udC13ZWlnaHQ6 IDcwMDsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOwp9Cgoua3otc2NoaWNodGZvbGdlIHsK ICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0 LXNlY29uZGFyeSk7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXhzKTsKfQoKLmt6LXNmLWVyc3Rl IHsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsKfQoKLmts LWxhYmVsIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiA3MHB4OwogICAg bWluLXdpZHRoOiA3MHB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiBpbmhlcml0 OwogICAgb3BhY2l0eTogMC44Owp9Cgoua2wtd2VydCB7CiAgICBmbGV4OiAxOwogICAgb3ZlcmZs b3c6IGhpZGRlbjsKICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgd2hpdGUtc3BhY2U6 IG5vd3JhcDsKfQoKLyogTmFtZW5saXN0ZSAqLwovKiBvdmVyZmxvdy15OmF1dG8gKHN0YXR0IGhp ZGRlbiksIGRhbWl0IGRhcyBNYXVzcmFkIEFVQ0ggdWViZXIgZGVyIE5hbWVucy0KICAgc3BhbHRl IHNjcm9sbHQg4oCUIGRhcyB2b3JoYW5kZW5lIHNjcm9sbFN5bmMoKSBpbiBncmlkX3JlbmRlci5q cyBzcGllZ2VsdCBkZW4KICAgU2Nyb2xsIGRhbm4gMToxIGF1ZiBkYXMgU2NoaWNodGVuZmVsZC4g RGVyIGVpZ2VuZSBTY3JvbGxiYWxrZW4gd2lyZAogICBhdXNnZWJsZW5kZXQgKGRhcyBTY2hpY2h0 ZW5mZWxkIHJlY2h0cyBoYXQgZGVuIHNpY2h0YmFyZW4gQmFsa2VuKSwgZGFtaXQgZGllCiAgIE9w dGlrIHVudmVyYWVuZGVydCBibGVpYnQuICovCiNuYW1lbi1saXN0ZSB7CiAgICBmbGV4OiAxOwog ICAgb3ZlcmZsb3cteTogYXV0bzsKICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgIHNjcm9sbGJh ci13aWR0aDogbm9uZTsgICAgICAgIC8qIEZpcmVmb3ggKi8KICAgIC1tcy1vdmVyZmxvdy1zdHls ZTogbm9uZTsgICAgIC8qIGFsdC4gRWRnZS9JRSAqLwp9CiNuYW1lbi1saXN0ZTo6LXdlYmtpdC1z Y3JvbGxiYXIgeyB3aWR0aDogMDsgaGVpZ2h0OiAwOyB9ICAvKiBXZWJLaXQvQ2hyb21pdW0gKi8K Ci5uYW1lbi16ZWlsZSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgaGVpZ2h0OiB2YXIoLS16ZWxs ZS1ob2VoZSk7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0 KTsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXNtKTsK ICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xczsKICAgIHBhZGRpbmc6IDAgNHB4Owp9Ci5u YW1lbi16ZWlsZTpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsgfQoKLyogR3J1 cHBlbnRyZW5uemVpbGUgKi8KLm5hbWVuLXRyZW5uZXIgewogICAgZGlzcGxheTogZmxleDsKICAg IGhlaWdodDogMThweDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBmb250LXNpemU6IDlw eDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwog ICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4OwogICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwog ICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwogICAgYm9yZGVyLWJvdHRvbTogMXB4 IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFy KC0tYm9yZGVyLWNvbG9yKTsKICAgIHBhZGRpbmc6IDAgNnB4Owp9CgoubnotbmFtZSB7CiAgICB3 aWR0aDogMTEwcHg7CiAgICBtaW4td2lkdGg6IDExMHB4OwogICAgcGFkZGluZzogMCA0cHg7CiAg ICBmb250LXdlaWdodDogNjAwOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBj ZW50ZXI7CiAgICBnYXA6IDZweDsKfQoubnotbmFtZS10ZXh0IHsKICAgIG92ZXJmbG93OiBoaWRk ZW47CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7 CiAgICBtaW4td2lkdGg6IDA7CiAgICBmbGV4OiAxOwp9Ci5uei1vZSB7CiAgICB3aWR0aDogMjhw eDsKICAgIG1pbi13aWR0aDogMjhweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZvbnQt c2l6ZTogOXB4OwogICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsKfQoubnotZ3J1cHBl IHsKICAgIHdpZHRoOiAxNnB4OwogICAgbWluLXdpZHRoOiAxNnB4OwogICAgdGV4dC1hbGlnbjog Y2VudGVyOwogICAgZm9udC1zaXplOiA5cHg7CiAgICBmb250LXdlaWdodDogNzAwOwp9Ci5uei1k bnIgewogICAgd2lkdGg6IDM4cHg7CiAgICBtaW4td2lkdGg6IDM4cHg7CiAgICBmb250LXNpemU6 IDlweDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgIHBhZGRpbmc6IDAgNHB4Owog ICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgdGV4dC1vdmVy ZmxvdzogZWxsaXBzaXM7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5uei1yYW5nIHsKICAg IGZsZXg6IDE7CiAgICBmb250LXNpemU6IDlweDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVk KTsKICAgIHBhZGRpbmc6IDAgNHB4OwogICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICBmb250LXdl aWdodDogNjAwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlw c2lzOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLyogR3J1cHBlbi1CYWRnZSAoQWRtaW4t VGFiZWxsZSkgKi8KLmdydXBwZW4tYmFkZ2UgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyBw YWRkaW5nOiAxcHggOHB4OyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteHMpOyBmb250LXNp emU6IHZhcigtLWZzLXhzKTsgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGxldHRlci1zcGFjaW5nOiAw LjNweDsKfQoKLyogRGllbnN0Z3J1cHBlbi1UYWJlbGxlOiBaZWlsZSBlaW5lciBhdXNnZWJsZW5k ZXRlbiBHcnVwcGUgKGluUGxhbnVuZz1mYWxzZSkKICAgd2lyZCBsZWljaHQgYXVzZ2VncmF1dCwg ZGFtaXQgYXVmIGVpbmVuIEJsaWNrIGtsYXIgaXN0LCBkYXNzIGRpZXNlIEdydXBwZQogICBha3R1 ZWxsIG5pY2h0IGluIGRlciBQbGFudGFmZWwvV29jaGVucGxhbi9QZXJzLlBsYW4gZXJzY2hlaW50 LiAqLwouZ3J1cHBlLXplaWxlLXZlcnN0ZWNrdCB7IG9wYWNpdHk6IDAuNjU7IGJhY2tncm91bmQ6 IHZhcigtLWJnLWNhcmQtYWx0KTsgfQouZ3J1cHBlLWlucGxhbnVuZy1sYWJlbCB7IGRpc3BsYXk6 IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBjdXJzb3I6IHBvaW50ZXI7IH0KLmdy dXBwZS1pbnBsYW51bmctaW5wdXQgeyBjdXJzb3I6IHBvaW50ZXI7IHdpZHRoOiAxNnB4OyBoZWln aHQ6IDE2cHg7IH0KCi8qIEdydXBwZW4tRmFyYmNvZGVzICovCi5nci1BIHsgY29sb3I6ICNCNzFD MUM7IH0KLmdyLUIgeyBjb2xvcjogIzFBNTI3NjsgfQouZ3ItQyB7IGNvbG9yOiAjMUI1RTIwOyB9 Ci5nci1LIHsgY29sb3I6ICM4RDZFMjg7IH0KLmdyLUwgeyBjb2xvcjogIzU0NkU3QTsgfQoKLyog PT09PT0gU2Nyb2xsYmFyZXIgcmVjaHRlciBCZXJlaWNoID09PT09ICovCiNncmlkLXNjcm9sbC1j b250YWluZXIgewogICAgZmxleDogMTsKICAgIG92ZXJmbG93OiBhdXRvOwogICAgcG9zaXRpb246 IHJlbGF0aXZlOwp9CgovKiBLb3BmYmVyZWljaCByZWNodHMgKHN0aWNreSkgKi8KI2tvcGYtcmVj aHRzIHsKICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICB0b3A6IDA7CiAgICB6LWluZGV4OiA1Owog ICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLWJvcmRlci1zdHJvbmcpOwogICAgYmFj a2dyb3VuZDogdmFyKC0tYmctY2FyZCk7Cn0KCi5rb3BmLWRhdGVuLXplaWxlIHsKICAgIGRpc3Bs YXk6IGZsZXg7CiAgICBoZWlnaHQ6IHZhcigtLWtvcGYtemVpbGVuLWhvZWhlKTsKfQovKiBFaW56 ZWxuZSBaZWlsZW4gYnJhdWNoZW4gZWlnZW5lIEhvZWhlbiwgZGFtaXQgZGllIC5rZC16ZWxsZS1L aW5kZXIgbmljaHQKICAgbnVyIHZpc3VlbGwgdWViZXJsYXVmZW4sIHNvbmRlcm4gZGllIFJvdyBh dWNoIGxvZ2lzY2ggZGllIHJpY2h0aWdlIEhvZWhlCiAgIGJlbGVndCAoc29uc3QgdmVyc2NoaWVi dCBzaWNoIGRpZSBOYW1lbnNzcGFsdGUgbGlua3MpLgogICBBbmxhc3MgKyBFdmVudHMgc2luZCBz ZWl0IE1haSAyMDI2IGluIGVpbmVyIFplaWxlIHp1c2FtbWVuZ2VmYXNzdC4gKi8KI2RhdHVtLXpl aWxlLWFubGFzcyB7IGhlaWdodDogMzJweDsgfQoKLyogRGF0dW0tWmVsbGVuIGltIEtvcGYgKi8K LmtkLXplbGxlIHsKICAgIHdpZHRoOiB2YXIoLS16ZWxsZS1icmVpdGUpOwogICAgbWluLXdpZHRo OiB2YXIoLS16ZWxsZS1icmVpdGUpOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1z OiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGJvcmRlci1yaWdodDog MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXhz KTsKfQoKLyogWmVpbGUgMTogRGF0dW0gKi8KI2RhdHVtLXplaWxlLXRhZyAua2QtemVsbGUgewog ICAgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1v bi1wcmltYXJ5KTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBmb250LXNpemU6IHZhcigtLWZz LXhzKTsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjEpOwp9Cgov KiBaZWlsZSAyOiBXb2NoZW50YWcgKi8KI2RhdHVtLXplaWxlLXdvY2hlbnRhZyAua2QtemVsbGUg ewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeS1kYXJrKTsKICAgIGNvbG9yOiB2YXIo LS10ZXh0LW9uLXByaW1hcnkpOwogICAgZm9udC1zaXplOiA5cHg7CiAgICBib3JkZXItcmlnaHQt Y29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC4xKTsKfQoKLyogWmVpbGUgMzoga29tYmluaWVydGUg SWNvbi1aZWlsZSAoRmVpZXJ0YWcgKyBTb25kZXJ0ZXJtaW4gKyBHZWJ1cnRzdGFnKS4KICAgU2Vp dCBNYWkgMjAyNiBpbiBlaW5lciBaZWlsZSBzdGF0dCB2b3JoZXIgendlaSAoQW5sYXNzICsgRXZl bnRzKS4gKi8KI2RhdHVtLXplaWxlLWFubGFzcyAua2QtemVsbGUgewogICAgYmFja2dyb3VuZDog dmFyKC0tYmctcHJpbWFyeSk7CiAgICBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjcpOwogICAg Zm9udC1zaXplOiB2YXIoLS1mcy1zbSk7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgYm9yZGVy LXJpZ2h0LWNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuMSk7CiAgICBoZWlnaHQ6IDMycHg7CiAg ICBwYWRkaW5nOiAycHggMXB4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnkt Y29udGVudDogY2VudGVyOwogICAgZ2FwOiAycHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9Ci8q IEljb24tU3RpbDoga29tcGFrdCwgZGFtaXQgendlaSBvZGVyIGRyZWkgSWNvbnMgbmViZW5laW5h bmRlciBpbiA2MnB4CiAgIHBhc3NlbiAoRmVpZXJ0YWcgKyBTb25kZXJ0ZXJtaW4gKyBHZWJ1cnRz dGFnIOKAlCBzZWx0ZW4gYWxsZSBkcmVpCiAgIGdsZWljaHplaXRpZykuIEVtb2ppLUZvbnQgcmVu ZGVydCBmYXJiaWcsIG1vbm9jaHJvbWUgR2x5cGhzICjinKEg4piqKQogICBlcmJlbiBjb2xvciB2 b24gZGVyIHVtZ2ViZW5kZW4gLmtkLWFubGFzcy1mZWllcnRhZy0qIFJlZ2VsLiAqLwoua2QtYW5s YXNzLWljb24gewogICAgZm9udC1zaXplOiAyMHB4OwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBk aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB1c2VyLXNlbGVjdDogbm9uZTsKfQojZGF0dW0temVp bGUtYW5sYXNzIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9Ci8qIFNvbGlkZSBGYXJiZW4gYW5hbG9n IHp1IC5rZC1mZWllcnRhZy1iZyAvIC5rZC13b2NoZW5lbmRlIOKAlCBkaWUgYWx0ZW4KICAgcmdi YSgpLVdlcnRlIHdhcmVuIHNlbWl0cmFuc3BhcmVudCBnZWdlbiBkZW4gd2Vpc3NlbiAja29wZi1y ZWNodHMtYmcKICAgdW5kIGxpZXNzZW4gZGllIFplbGxlIHByYWt0aXNjaCB3ZWlzcyBlcnNjaGVp bmVuLCBkZXIgaGVsbGUgVGV4dCB3YXIKICAgZGFkdXJjaCB1bmxlc2Jhci4gKi8KI2RhdHVtLXpl aWxlLWFubGFzcyAua2QtYW5sYXNzLWZlaWVydGFnIHsgYmFja2dyb3VuZDogIzRBNkE4QzsgY29s b3I6ICNGRkZGRkY7IGN1cnNvcjogcG9pbnRlcjsgfQojZGF0dW0temVpbGUtYW5sYXNzIC5rZC1h bmxhc3MtZmVpZXJ0YWc6aG92ZXIgeyBmaWx0ZXI6IGJyaWdodG5lc3MoMS4xNSk7IH0KI2RhdHVt LXplaWxlLWFubGFzcyAua2QtYW5sYXNzLWZlaWVydGFnIC5rZC1hbmxhc3MtdGV4dCB7IGNvbG9y OiAjRkZGRkZGOyB9Ci8qIEthdGVnb3JpZS1zcGV6aWZpc2NoZSBGYXJiZ2VidW5nLiAua2QtYW5s YXNzLWZlaWVydGFnLWdlc2V0emxpY2gKICAgYmVudXR6dCBkZW4gU3RhbmRhcmQgdm9uIG9iZW4g KCM0QTZBOEMpLCBkaWUgYW5kZXJlbiBLYXRlZ29yaWVuCiAgIGJla29tbWVuIGVpbmUgZWlnZW5l IGdlZGVja3RlIEZhcmJlLiAqLwojZGF0dW0temVpbGUtYW5sYXNzIC5rZC1hbmxhc3MtZmVpZXJ0 YWctanVlZGlzY2ggICAgeyBiYWNrZ3JvdW5kOiAjNkU0RkEwOyB9CiNkYXR1bS16ZWlsZS1hbmxh c3MgLmtkLWFubGFzcy1mZWllcnRhZy1tdXNsaW1pc2NoICB7IGJhY2tncm91bmQ6ICMxQjdDNjY7 IH0KI2RhdHVtLXplaWxlLWFubGFzcyAua2QtYW5sYXNzLWZlaWVydGFnLXR1ZXJraXNjaCAgIHsg YmFja2dyb3VuZDogI0M3MjEyMDsgfQovKiBXaWNodGlnLU1hcmtlcjogYmVoYWVsdCBkaWUgS2F0 ZWdvcmllLUZhcmJlIHVuZCBiZWtvbW10IG51ciBlaW5lCiAgIGRlemVudGUgZ29sZGVuZSBCb2Rl bmxpbmllIGFscyBBa3plbnQgKHZvcmhlciByb3QrZ29sZGVuZXIgUmFobWVuICsKICAgd2Vpc3Nl ciBUZXh0IOKAlCB3aXJrdGUgbWl0IERhdHVtICsgV29jaGVudGFnICsgQW5sYXNzLUljb24ga29t YmluaWVydAogICB6dSB3dWNodGlnLCBVc2VyLUZlZWRiYWNrIDIwMjYtMDUtMjIpLiAqLwojZGF0 dW0temVpbGUtYW5sYXNzIC5rZC1hbmxhc3MtZmVpZXJ0YWcua2QtZmVpZXJ0YWctd2ljaHRpZyB7 IGJveC1zaGFkb3c6IGluc2V0IDAgLTNweCAwICNENEEwMTc7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0 Il0gI2RhdHVtLXplaWxlLWFubGFzcyAua2QtYW5sYXNzLWZlaWVydGFnLmtkLWZlaWVydGFnLXdp Y2h0aWcgeyBib3gtc2hhZG93OiBpbnNldCAwIC0zcHggMCAjRTVCNTNBOyB9CiNkYXR1bS16ZWls ZS1hbmxhc3MgLmtkLWFubGFzcy1mZXJpZW4geyBiYWNrZ3JvdW5kOiAjMkU3RDMyOyBjb2xvcjog I0ZGRkZGRjsgfQojZGF0dW0temVpbGUtYW5sYXNzIC5rZC1hbmxhc3MtZmVyaWVuIC5rZC1hbmxh c3MtdGV4dCB7IGNvbG9yOiAjRkZGRkZGOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdICNkYXR1bS16 ZWlsZS1hbmxhc3MgLmtkLWFubGFzcy1mZWllcnRhZyB7IGJhY2tncm91bmQ6ICMzRDU2NzI7IGNv bG9yOiAjRThFRUY1OyB9CltkYXRhLXRoZW1lPSJuaWdodCJdICNkYXR1bS16ZWlsZS1hbmxhc3Mg LmtkLWFubGFzcy1mZWllcnRhZy1qdWVkaXNjaCAgICB7IGJhY2tncm91bmQ6ICM0QTMwNzA7IH0K W2RhdGEtdGhlbWU9Im5pZ2h0Il0gI2RhdHVtLXplaWxlLWFubGFzcyAua2QtYW5sYXNzLWZlaWVy dGFnLW11c2xpbWlzY2ggIHsgYmFja2dyb3VuZDogIzEzNEY0MDsgfQpbZGF0YS10aGVtZT0ibmln aHQiXSAjZGF0dW0temVpbGUtYW5sYXNzIC5rZC1hbmxhc3MtZmVpZXJ0YWctdHVlcmtpc2NoICAg eyBiYWNrZ3JvdW5kOiAjODIxODE4OyB9Ci8qIE5pZ2h0LVRoZW1lOiBXaWNodGlnLU1hcmtlciBi ZWhhZWx0IGpldHp0IGRpZSBLYXRlZ29yaWUtRmFyYmUsIGRpZQogICBnb2xkZW5lIEJvZGVubGlu aWUgd2lyZCBpbiBkZXIgYWxsZ2VtZWluZW4gUmVnZWwgb2JlbiAoWmVpbGUgNTI5KSBnZXNldHp0 LiAqLwpbZGF0YS10aGVtZT0ibmlnaHQiXSAjZGF0dW0temVpbGUtYW5sYXNzIC5rZC1hbmxhc3Mt ZmVyaWVuIHsgYmFja2dyb3VuZDogIzFFNTAyNDsgY29sb3I6ICNFOEY1RUM7IH0KCi8qIEhvcml6 b250YWxlIEZlcmllbi1CYXI6IHVlYmVybGFnZXJ0IGRpZSBwZXItVGFnLVplbGxlbiBkZXIgQW5s YXNzLVplaWxlIG1pdAogICBlaW5lbSBkdXJjaGdlaGVuZGVuIExhYmVsIHVlYmVyIGRpZSBnZXNh bXRlIEZlcmllbi1QZXJpb2RlLiAqLwovKiBPcHRpayAoSGludGVyZ3J1bmQvUmFobWVuL0dsb3cp IHVlYmVyIEN1c3RvbS1Qcm9wZXJ0aWVzIGF1cyBkZW0KICAgRXJzY2hlaW51bmdzYmlsZC1FZGl0 b3IgKC0tbWZlci0qKS4gVW5rb25maWd1cmllcnQgPSB0cmFuc3BhcmVudGVyIEJhbGtlbiwKICAg bnVyIGRhcyBMYWJlbCwgd2llIGJpc2hlci4gKi8KLmtkLWZlcmllbi1iYXIgewogICAgcG9zaXRp b246IGFic29sdXRlOwogICAgdG9wOiA1MCU7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUw JSk7CiAgICBoZWlnaHQ6IDIycHg7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6 IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgcGFkZGluZzogMCA4cHg7 CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIHotaW5kZXg6IDI7CiAgICBiYWNrZ3JvdW5k OiB2YXIoLS1tZmVyLWJnLCB0cmFuc3BhcmVudCk7CiAgICBib3gtc2hhZG93OiB2YXIoLS1tZmVy LXNoYWRvdywgbm9uZSk7CiAgICBhbmltYXRpb246IHZhcigtLW1mZXItYW5pbSwgbm9uZSk7CiAg ICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteHMpOwp9Ci5rZC1mZXJpZW4tYmFyLXRleHQg ewogICAgZm9udC1zaXplOiBjYWxjKDExcHggKiB2YXIoLS1tZmVyLWZzLCAxKSk7CiAgICBmb250 LXdlaWdodDogdmFyKC0tbWZlci1mdywgNzAwKTsKICAgIGNvbG9yOiB2YXIoLS1tZmVyLXRleHQs ICMyNTYwMjkpOwogICAgbGV0dGVyLXNwYWNpbmc6IDAuM3B4OwogICAgdGV4dC10cmFuc2Zvcm06 IHVwcGVyY2FzZTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICBvdmVyZmxvdzogaGlkZGVu OwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICB0 ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LDAuMzUpOwp9CltkYXRhLXRoZW1l PSJuaWdodCJdIC5rZC1mZXJpZW4tYmFyLXRleHQgewogICAgY29sb3I6IHZhcigtLW1mZXItdGV4 dCwgI2E1ZDZhNyk7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDAsMCwwLDAuNDUpOwp9 Ci8qIFdvY2hlbmVuZC1NYXJrZXIgaW5uZXJoYWxiIGRlciBGZXJpZW4tQmFyOiBkZXplbnRlLCBs ZWljaHQgZHVua2xlcmUKICAgU2NocmFmZnVyIHVlYmVyIFNhL1NvLCBkYW1pdCBzaWUgYXVjaCB3 YWVocmVuZCBkZXIgRmVyaWVuIG9wdGlzY2gKICAgc2ljaHRiYXIgYmxlaWJlbi4gUHJvIFdvY2hl bmVuZC1UYWcgZWluIDxzcGFuPiBtaXQgYWJzb2x1dGVyCiAgIFBvc2l0aW9uIChQaXhlbC1PZmZz ZXQgd2lyZCB2b20gSlMgZ2VzZXR6dCkuICovCi5rZC1mZXJpZW4tYmFyLXdlIHsKICAgIHBvc2l0 aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGJvdHRvbTogMDsKICAgIGJhY2tncm91bmQ6 IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoCiAgICAgICAgMTM1ZGVnLAogICAgICAgIHJnYmEo MCwwLDAsMC4xMCkgMCwKICAgICAgICByZ2JhKDAsMCwwLDAuMTApIDRweCwKICAgICAgICB0cmFu c3BhcmVudCA0cHgsCiAgICAgICAgdHJhbnNwYXJlbnQgOHB4CiAgICApOwogICAgcG9pbnRlci1l dmVudHM6IG5vbmU7Cn0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLmtkLWZlcmllbi1iYXItd2Ugewog ICAgYmFja2dyb3VuZDogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgKICAgICAgICAxMzVkZWcs CiAgICAgICAgcmdiYSgwLDAsMCwwLjMwKSAwLAogICAgICAgIHJnYmEoMCwwLDAsMC4zMCkgNHB4 LAogICAgICAgIHRyYW5zcGFyZW50IDRweCwKICAgICAgICB0cmFuc3BhcmVudCA4cHgKICAgICk7 Cn0KCi8qIEV2ZW50LUljb25zIChTb25kZXJ0ZXJtaW4gKyBHZWJ1cnRzdGFnKSDigJQgbGViZW4g amV0enQgaW4gZGVyIGdlbWVpbnNhbWVuCiAgIEFubGFzcy1aZWlsZSBzdGF0dCBlaW5lciBzZXBh cmF0ZW4gRXZlbnRzLVplaWxlIChNYWkgMjAyNikuICovCi5rZC1ldmVudC1pY29uIHsKICAgIGZv bnQtc2l6ZTogMThweDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgZGlzcGxheTogaW5saW5lLWJs b2NrOwogICAgdXNlci1zZWxlY3Q6IG5vbmU7Cn0KLmtkLWV2ZW50LXNvbmRlciB7CiAgICBjdXJz b3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xMnM7CiAgICAvKiBNb25v Y2hyb21lIFN5bWJvbC1EYXJzdGVsbHVuZyAoQ2hlcnJ5LVBpY2sgOGIyZDBmZCk6IGZvbGd0IGRl cgogICAgICAgVGhlbWUtVGV4dGZhcmJlIHN0YXR0IGJ1bnRlbiBFbW9qaS4gKi8KICAgIGZvbnQt ZmFtaWx5OiAiU2Vnb2UgVUkgU3ltYm9sIiwiQ2FtYnJpYSBNYXRoIiwiU1RJWCIsIkRlamFWdSBT YW5zIiwiTHVjaWRhIFNhbnMgVW5pY29kZSIsc2Fucy1zZXJpZjsKICAgIGZvbnQtdmFyaWFudC1l bW9qaTogdGV4dDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW9uLXByaW1hcnksIGN1cnJlbnRDb2xv cik7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAg ICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIG1pbi13aWR0aDogMThweDsKICAgIG1pbi1o ZWlnaHQ6IDE4cHg7CiAgICBwYWRkaW5nOiAxcHggM3B4OwogICAgYm9yZGVyLXJhZGl1czogdmFy KC0tcmFkaXVzLXNtKTsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm94 LXNpemluZzogYm9yZGVyLWJveDsKfQovKiBIaW53ZWlzLS9XYXJudW5ncy1Tb25kZXJ0ZXJtaW5l IGFscyBrbGFyIGxlc2JhcmVzIEJhZGdlIHN0YXR0IG51ciBoZWxsZXIKICAgR2x5cGggYXVmIGR1 bmtsZW0gSGVhZGVyICh3YXIgYXVmIG1hbmNoZW4gSGludGVyZ3J1ZW5kZW4g4oCUIHouQi4gS2Fy bmV2YWwKICAgMTYuMDIg4oCUIHNjaHdlciBsZXNiYXIpLiBSdW5kZXIgSW5mby1QdW5rdCBtaXQg a3JhZWZ0aWdlciBGdWVsbHVuZy4gKi8KLmtkLWV2ZW50LXNvbmRlci5rZC1ldmVudC1oaW53ZWlz IHsKICAgIGJhY2tncm91bmQ6ICMyZjdmZDE7IGNvbG9yOiAjZmZmOyBmb250LXdlaWdodDogNzAw OwogICAgYm9yZGVyLXJhZGl1czogNTAlOyB3aWR0aDogMTdweDsgaGVpZ2h0OiAxN3B4OwogICAg bWluLXdpZHRoOiAxN3B4OyBtaW4taGVpZ2h0OiAxN3B4OyBwYWRkaW5nOiAwOyBmb250LXNpemU6 IDEycHg7Cn0KLmtkLWV2ZW50LXNvbmRlci5rZC1ldmVudC13YXJudW5nIHsKICAgIGJhY2tncm91 bmQ6ICNkNjZmMWU7IGNvbG9yOiAjZmZmOyBmb250LXdlaWdodDogNzAwOwogICAgYm9yZGVyLXJh ZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAua2QtZXZlbnQt c29uZGVyLmtkLWV2ZW50LWhpbndlaXMgeyBiYWNrZ3JvdW5kOiAjM2E4ZmUwOyB9CltkYXRhLXRo ZW1lPSJuaWdodCJdIC5rZC1ldmVudC1zb25kZXIua2QtZXZlbnQtd2FybnVuZyB7IGJhY2tncm91 bmQ6ICNlMDdmMmU7IH0KLmtkLWV2ZW50LXNvbmRlcjpob3ZlciB7IHRyYW5zZm9ybTogc2NhbGUo MS4xOCk7IH0KLyogIldpY2h0aWciLU1hcmtpZXJ1bmcgKENoZXJyeS1QaWNrIDg0ZmIwZjcsIGhp bnRlciBUb2dnbGUKICAgYGZlYXR1cmVzLnNvbmRlcnRlcm1pbmVXaWNodGlnYCk6IGJvcmRlYXV4 cm90ZXIgU2lnbmFsLVJhaG1lbi4gKi8KLmtkLWV2ZW50LXNvbmRlci5rZC1ldmVudC13aWNodGln IHsKICAgIGJvcmRlci1jb2xvcjogIzgwMDAyMDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMTI4LDAs MzIsMC4xMik7CiAgICBib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgxMjgsMCwzMiwwLjM1KTsK fQpbZGF0YS10aGVtZT0ibmlnaHQiXSAua2QtZXZlbnQtc29uZGVyLmtkLWV2ZW50LXdpY2h0aWcg ewogICAgYm9yZGVyLWNvbG9yOiAjYzA0NTVhOwogICAgYmFja2dyb3VuZDogcmdiYSgxOTIsNjks OTAsMC4xOCk7Cn0KLmtkLWV2ZW50LWdlYnVydHN0YWcgeyBjdXJzb3I6IGhlbHA7IH0KLmtkLWV2 ZW50cy1rbGlja2JhciB7IGN1cnNvcjogcG9pbnRlcjsgfQoKLyogWmVpbGUgNDogU3TDpHJrZSAq Lwojc3RhZXJrZS16ZWlsZSAua2QtemVsbGUgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy14cyk7 CiAgICBmb250LXdlaWdodDogNzAwOwogICAgY29sb3I6ICNmZmY7CiAgICBib3JkZXItcmlnaHQt Y29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC4xNSk7Cn0KLnN0YWVya2Utb2sgeyBiYWNrZ3JvdW5k OiAjMjc4OTZEOyB9Ci5zdGFlcmtlLXdhcm51bmcgeyBiYWNrZ3JvdW5kOiAjQjAzQTJFOyBhbmlt YXRpb246IHB1bHNSb3QgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7IH0KQGtleWZyYW1lcyBwdWxz Um90IHsgMCUsMTAwJSB7IG9wYWNpdHk6MTsgfSA1MCUgeyBvcGFjaXR5OjAuNzsgfSB9CgovKiBT Y2hpY2h0Zm9sZ2UtWmVpbGVuICovCiNzY2hpY2h0Zm9sZ2UtcmVjaHRzIC5rb3BmLWRhdGVuLXpl aWxlIC5rZC16ZWxsZSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBj b2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOwogICAgZm9udC1zaXplOiA5cHg7CiAgICBmb250 LXdlaWdodDogNTAwOwogICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB2YXIoLS1ib3JkZXItbGlnaHQp Owp9CiNzY2hpY2h0Zm9sZ2UtcmVjaHRzIC5rb3BmLWRhdGVuLXplaWxlOmZpcnN0LWNoaWxkIC5r ZC16ZWxsZSB7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7 Cn0KCi8qIFRhZ2VzdHlwZW4gaW0gS29wZiDigJQgc3RhcmtlciBLb250cmFzdCAqLwoua2Qtd29j aGVuZW5kZSB7IGJhY2tncm91bmQ6ICM3MTkxQjMgIWltcG9ydGFudDsgY29sb3I6ICNGMkY2RkEg IWltcG9ydGFudDsgfQoua2QtZmVpZXJ0YWctYmcgeyBiYWNrZ3JvdW5kOiAjNEE2QThDICFpbXBv cnRhbnQ7IGNvbG9yOiAjRkZGRkZGICFpbXBvcnRhbnQ7IH0KLyogV2ljaHRpZ2UgRmVpZXJ0YWdl OiBhbGxlIHZpc3VlbGxlbiBQYXJhbWV0ZXIga29tbWVuIHVlYmVyIEN1c3RvbS0KICAgUHJvcGVy dGllcyAoc2llaGUgYWRtaW5fZXJzY2hlaW51bmdzYmlsZC5qcykuIERlZmF1bHRzIHNpbmQgaW0g RWRpdG9yCiAgIHBlciBLbGljayB3aWVkZXJoZXJzdGVsbGJhci4gKi8KLmtkLWZlaWVydGFnLXdp Y2h0aWcgewogICAgYmFja2dyb3VuZDogdmFyKC0tbWZ3aS1iZywgdHJhbnNwYXJlbnQpICFpbXBv cnRhbnQ7CiAgICBjb2xvcjogICAgICB2YXIoLS1tZndpLXRleHQsIGluaGVyaXQpICFpbXBvcnRh bnQ7CiAgICBmb250LXdlaWdodDogdmFyKC0tbWZ3aS1mdywgNDAwKSAhaW1wb3J0YW50OwogICAg Ym94LXNoYWRvdzogdmFyKC0tbWZ3aS1zaGFkb3csIG5vbmUpICFpbXBvcnRhbnQ7CiAgICBhbmlt YXRpb246ICB2YXIoLS1tZndpLWFuaW0sIG5vbmUpOwp9Ci5rZC1oZXV0ZSB7IGJhY2tncm91bmQ6 IHZhcigtLXRhZy1oZXV0ZSkgIWltcG9ydGFudDsgY29sb3I6ICNmZmYgIWltcG9ydGFudDsgYm94 LXNoYWRvdzogaW5zZXQgMnB4IDAgMCAjRDRBMDE3LCBpbnNldCAtMnB4IDAgMCAjRDRBMDE3OyB9 CltkYXRhLXRoZW1lPSJuaWdodCJdIC5rZC1oZXV0ZSB7IGJveC1zaGFkb3c6IGluc2V0IDJweCAw IDAgI0U1QjUzQSwgaW5zZXQgLTJweCAwIDAgI0U1QjUzQTsgfQpbZGF0YS10aGVtZT0ibmlnaHQi XSAua2Qtd29jaGVuZW5kZSB7IGJhY2tncm91bmQ6ICMyRTQwNTggIWltcG9ydGFudDsgY29sb3I6 ICNDOUQ2RTQgIWltcG9ydGFudDsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAua2QtZmVpZXJ0YWct YmcgeyBiYWNrZ3JvdW5kOiAjM0Q1NjcyICFpbXBvcnRhbnQ7IGNvbG9yOiAjRThFRUY1ICFpbXBv cnRhbnQ7IH0KLyogTmlnaHQtVGhlbWU6IFRhZy9OYWNodCB0ZWlsZW4gc2ljaCBha3R1ZWxsIGRp ZSBWYXJpYWJsZW4gYXVzIGRlbQogICBFZGl0b3Ig4oCUIGJlaSBCZWRhcmYga2FubiBoaWVyIHNw YWV0ZXIgZWluIFRoZW1lLU92ZXJyaWRlIGdyZWlmZW4uICovCgovKiBTb25kZXJ0YWdlIOKAlCBh bGxlIHZpc3VlbGxlbiBQYXJhbWV0ZXIga29tbWVuIHVlYmVyIEN1c3RvbS1Qcm9wZXJ0aWVzCiAg IChzaWVoZSBhZG1pbl9lcnNjaGVpbnVuZ3NiaWxkLmpzKS4gUHVsc2UtQW5pbWF0aW9uIHdpcmQg dWViZXIgendlaQogICBCb3gtU2hhZG93LUF1c3ByYWVndW5nZW4gaW50ZXJwb2xpZXJ0OiAtLW0u Li4tc2hhZG93IChSdWhlLVp1c3RhbmQpCiAgIHVuZCAtLW0uLi4tc2hhZG93LXB1bHMgKFB1bHNl LVNwaXR6ZSwgNTAlLUtleWZyYW1lKS4gKi8KLmtkLXNvbmRlcnRhZy1oaW53ZWlzIHsKICAgIGJh Y2tncm91bmQtY29sb3I6IHZhcigtLW1oaW4tYmcsIHRyYW5zcGFyZW50KTsKICAgIGNvbG9yOiAg ICAgICAgICAgIHZhcigtLW1oaW4tdGV4dCwgaW5oZXJpdCk7CiAgICBmb250LXdlaWdodDogICAg ICB2YXIoLS1taGluLWZ3LCA0MDApOwogICAgYm94LXNoYWRvdzogICAgICAgdmFyKC0tbWhpbi1z aGFkb3csIG5vbmUpOwogICAgYW5pbWF0aW9uOiAgICAgICAgdmFyKC0tbWhpbi1hbmltLCBub25l KTsKICAgIC0tbWFya2llcnVuZy1zaGFkb3ctcHVsczogdmFyKC0tbWhpbi1zaGFkb3ctcHVscywg dmFyKC0tbWhpbi1zaGFkb3csIG5vbmUpKTsKfQoua2Qtc29uZGVydGFnLXdhcm51bmcgewogICAg YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbXdhci1iZywgdHJhbnNwYXJlbnQpOwogICAgY29sb3I6 ICAgICAgICAgICAgdmFyKC0tbXdhci10ZXh0LCBpbmhlcml0KTsKICAgIGZvbnQtd2VpZ2h0OiAg ICAgIHZhcigtLW13YXItZncsIDQwMCk7CiAgICBib3gtc2hhZG93OiAgICAgICB2YXIoLS1td2Fy LXNoYWRvdywgbm9uZSk7CiAgICBhbmltYXRpb246ICAgICAgICB2YXIoLS1td2FyLWFuaW0sIG5v bmUpOwogICAgLS1tYXJraWVydW5nLXNoYWRvdy1wdWxzOiB2YXIoLS1td2FyLXNoYWRvdy1wdWxz LCB2YXIoLS1td2FyLXNoYWRvdywgbm9uZSkpOwp9Ci8qIFBybyBNYXJraWVydW5nc3R5cCBlaWdl bmVyIEBrZXlmcmFtZXMtQmxvY2ssIHdlaWwgQ1NTLUFuaW1hdGlvbmVuCiAgIGlocmUgVmFyaWFi bGVuLUF1c3dlcnR1bmcgenVyIEFuaW1hdGlvbi1EZWZpbml0aW9ucy1aZWl0IG1hY2hlbiDigJQK ICAgZWluIGdlbmVyaXNjaGVyIEJsb2NrIGtvZW5udGUgZGllIHBlci1FbGVtZW50IGdlc2V0enRl biBWYXJpYWJsZW4KICAgbmljaHQgdHJlbm5lbi4gKi8KQGtleWZyYW1lcyBwdWxzSGlud2VpcyAg eyAwJSwxMDAlIHsgYm94LXNoYWRvdzogdmFyKC0tbWhpbi1zaGFkb3csIG5vbmUpOyB9IDUwJSB7 IGJveC1zaGFkb3c6IHZhcigtLW1oaW4tc2hhZG93LXB1bHMsIHZhcigtLW1oaW4tc2hhZG93LCBu b25lKSk7IH0gfQpAa2V5ZnJhbWVzIHB1bHNXYXJudW5nICB7IDAlLDEwMCUgeyBib3gtc2hhZG93 OiB2YXIoLS1td2FyLXNoYWRvdywgbm9uZSk7IH0gNTAlIHsgYm94LXNoYWRvdzogdmFyKC0tbXdh ci1zaGFkb3ctcHVscywgdmFyKC0tbXdhci1zaGFkb3csIG5vbmUpKTsgfSB9CkBrZXlmcmFtZXMg cHVsc0ZlaWVydGFnIHsgMCUsMTAwJSB7IGJveC1zaGFkb3c6IHZhcigtLW1md2ktc2hhZG93LCBu b25lKTsgfSA1MCUgeyBib3gtc2hhZG93OiB2YXIoLS1tZndpLXNoYWRvdy1wdWxzLCB2YXIoLS1t ZndpLXNoYWRvdywgbm9uZSkpOyB9IH0KQGtleWZyYW1lcyBwdWxzSGV1dGUgICAgeyAwJSwxMDAl IHsgYm94LXNoYWRvdzogdmFyKC0tbWhlLXNoYWRvdywgIG5vbmUpOyB9IDUwJSB7IGJveC1zaGFk b3c6IHZhcigtLW1oZS1zaGFkb3ctcHVscywgIHZhcigtLW1oZS1zaGFkb3csICBub25lKSk7IH0g fQpAa2V5ZnJhbWVzIHB1bHNGZXJpZW4gICB7IDAlLDEwMCUgeyBib3gtc2hhZG93OiB2YXIoLS1t ZmVyLXNoYWRvdywgbm9uZSk7IH0gNTAlIHsgYm94LXNoYWRvdzogdmFyKC0tbWZlci1zaGFkb3ct cHVscywgdmFyKC0tbWZlci1zaGFkb3csIG5vbmUpKTsgfSB9CgovKiBEaXJ0eS1QdWxzZSBmdWVy IFNwZWljaGVybi1CdXR0b25zIG1pdCB1bmdlc3BlaWNoZXJ0ZW4gQWVuZGVydW5nZW4uCiAgIFZp c3VlbGxlciBIaW53ZWlzIGJldm9yIGRlciBVc2VyIHZlcnNlaGVudGxpY2ggZGVuIFRhYiB3ZWNo c2VsdCB1bmQgSW5wdXQKICAgdmVybGllcnQgKHNpZWhlIEZhY2hhdWZzaWNodC1UYWJlbGxlKS4g Ki8KLmJ0bi5kaXJ0eS1wdWxzZSB7IGFuaW1hdGlvbjogZGlydHlQdWxzIDEuNnMgZWFzZS1pbi1v dXQgaW5maW5pdGU7IGJveC1zaGFkb3c6IDAgMCAwIDAgcmdiYSgyMDIsMTExLDMwLDAuNik7IH0K QGtleWZyYW1lcyBkaXJ0eVB1bHMgeyAwJSwxMDAlIHsgYm94LXNoYWRvdzogMCAwIDAgMCByZ2Jh KDIwMiwxMTEsMzAsMC42KTsgfSA1MCUgeyBib3gtc2hhZG93OiAwIDAgMCA2cHggcmdiYSgyMDIs MTExLDMwLDApOyB9IH0KCi8qIEltcGVyc29uYXRpb24tQmFubmVyOiB6ZWlndCwgZGFzcyBkaWUg T2JlcmZsYWVjaGUgYWt0dWVsbCBhbHMgYW5kZXJlCiAgIFJvbGxlIHNpbXVsaWVydCB3aXJkLiBT ZXJ2ZXItUmVjaHRlIGJsZWliZW4gU1UsIFVJIGFlbmRlcnQgc2ljaCByZWluCiAgIGNsaWVudHNl aXRpZy4gKi8KLmltcGVyc29uYXRlLWJhbm5lciB7CiAgICBwb3NpdGlvbjogc3RpY2t5OwogICAg dG9wOiAwOwogICAgei1pbmRleDogdmFyKC0tei1vdmVybGF5KTsKICAgIGJhY2tncm91bmQ6IHZh cigtLWZhcmJlLXdhcm51bmcpOwogICAgY29sb3I6ICNmZmY7CiAgICBwYWRkaW5nOiA4cHggMTZw eDsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVu dDogY2VudGVyOwogICAgZ2FwOiAxNHB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGxldHRl ci1zcGFjaW5nOiAwLjJweDsKICAgIGJveC1zaGFkb3c6IDAgMnB4IDZweCByZ2JhKDAsMCwwLDAu MTUpOwp9Ci5pbXBlcnNvbmF0ZS1iYW5uZXIgLmltcC1pY29uIHsgZm9udC1zaXplOiAxOHB4OyB9 Ci5pbXBlcnNvbmF0ZS1iYW5uZXIgLmJ0biB7IGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUs MC4yKTsgY29sb3I6ICNmZmY7IGJvcmRlci1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjUpOyB9 Ci5pbXBlcnNvbmF0ZS1iYW5uZXIgLmJ0bjpob3ZlciB7IGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1 NSwyNTUsMC4zMik7IH0KCi8qIChBbHRlIFNvbmRlcm1hcmtlci1DU1MgaW4gZGVyIGZydWVoZXJl biBGZXJpZW4tWmVpbGUgZW50ZmVybnQg4oCUIEZpbmRpbmdzIEMuMTIvQy4xMy4KICAgU29uZGVy dGVybWluZSBzaW5kIGpldHp0IGluIGRlciBlaWdlbmVuIEV2ZW50cy1aZWlsZSBtaXQgZ3Jvc3Nl biBJY29ucy4pICovCgovKiBCYWRnZXMgaW4gS29wZnplaWxlIChEYXR1bSkg4oCUIEdlYnVydHN0 YWcsIEhpbndlaXMsIFdhcm51bmcgKi8KLmtkLXplbGxlIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9 Ci5rZC1iYWRnZXMgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxcHg7CiAgICBy aWdodDogMXB4OwogICAgZGlzcGxheTogZmxleDsKICAgIGdhcDogMXB4OwogICAgcG9pbnRlci1l dmVudHM6IGF1dG87Cn0KLmtkLWJhZGdlIHsKICAgIGZvbnQtc2l6ZTogOHB4OwogICAgbGluZS1o ZWlnaHQ6IDE7CiAgICBjdXJzb3I6IGhlbHA7CiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMXB4 IDFweCByZ2JhKDAsMCwwLDAuNSkpOwp9Ci5rZC1iYWRnZS1nYiB7IGZvbnQtc2l6ZTogOXB4OyB9 Ci5rZC1iYWRnZS13YXJudW5nIHsgY29sb3I6ICNmZjllNDI7IGZvbnQtd2VpZ2h0OiA3MDA7IH0K LmtkLWJhZGdlLWhpbndlaXMgeyBjb2xvcjogIzdlYjhkYTsgZm9udC13ZWlnaHQ6IDcwMDsgfQoK LyogU2NoaWNodGZvbGdlLUZhcmJlbiAoZGV6ZW50ZSBFaW5mw6RyYnVuZyBqZSBSb3RhdGlvbikg Ki8KI3NjaGljaHRmb2xnZS1yZWNodHMgLnNmLWFiYyB7IGJhY2tncm91bmQ6ICNFOEYxRTggIWlt cG9ydGFudDsgY29sb3I6ICMyZDVhM2QgIWltcG9ydGFudDsgfQojc2NoaWNodGZvbGdlLXJlY2h0 cyAuc2YtYmNhIHsgYmFja2dyb3VuZDogI0U4RURGNSAhaW1wb3J0YW50OyBjb2xvcjogIzJkNDM3 MCAhaW1wb3J0YW50OyB9CiNzY2hpY2h0Zm9sZ2UtcmVjaHRzIC5zZi1jYWIgeyBiYWNrZ3JvdW5k OiAjRjVFOEU4ICFpbXBvcnRhbnQ7IGNvbG9yOiAjNmIyZDJkICFpbXBvcnRhbnQ7IH0KI3NjaGlj aHRmb2xnZS1yZWNodHMgLnNmLXBvb2wgeyBiYWNrZ3JvdW5kOiAjRUNFQ0VDICFpbXBvcnRhbnQ7 IGNvbG9yOiAjNjY2ICFpbXBvcnRhbnQ7IGZvbnQtc3R5bGU6IGl0YWxpYzsgfQpbZGF0YS10aGVt ZT0ibmlnaHQiXSAjc2NoaWNodGZvbGdlLXJlY2h0cyAuc2YtYWJjIHsgYmFja2dyb3VuZDogIzFj MzAyNCAhaW1wb3J0YW50OyBjb2xvcjogIzhmZDBhMCAhaW1wb3J0YW50OyB9CltkYXRhLXRoZW1l PSJuaWdodCJdICNzY2hpY2h0Zm9sZ2UtcmVjaHRzIC5zZi1iY2EgeyBiYWNrZ3JvdW5kOiAjMWMy NDM2ICFpbXBvcnRhbnQ7IGNvbG9yOiAjOGZiMGUwICFpbXBvcnRhbnQ7IH0KW2RhdGEtdGhlbWU9 Im5pZ2h0Il0gI3NjaGljaHRmb2xnZS1yZWNodHMgLnNmLWNhYiB7IGJhY2tncm91bmQ6ICMzMDFj MWMgIWltcG9ydGFudDsgY29sb3I6ICNlMGEwYTAgIWltcG9ydGFudDsgfQpbZGF0YS10aGVtZT0i bmlnaHQiXSAjc2NoaWNodGZvbGdlLXJlY2h0cyAuc2YtcG9vbCB7IGJhY2tncm91bmQ6ICMyYTJh MmEgIWltcG9ydGFudDsgY29sb3I6ICM5OTkgIWltcG9ydGFudDsgfQoKLyogUmh5dGhtdXMtVm9y c2NoYXUgaW0gQWRtaW4tVGFiICovCi5zZi12b3JzY2hhdSB7CiAgICBkaXNwbGF5OiBpbmxpbmUt YmxvY2s7CiAgICBwYWRkaW5nOiAycHggNXB4OwogICAgbWFyZ2luOiAxcHg7CiAgICBmb250LXNp emU6IHZhcigtLWZzLXhzKTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBib3JkZXItcmFkaXVz OiB2YXIoLS1yYWRpdXMteHMpOwogICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKfQouc2Ytdm9y c2NoYXUuc2YtYWJjIHsgYmFja2dyb3VuZDogI0Q4RThEODsgY29sb3I6ICMyZDVhM2Q7IH0KLnNm LXZvcnNjaGF1LnNmLWJjYSB7IGJhY2tncm91bmQ6ICNEOEUwRjA7IGNvbG9yOiAjMmQ0MzcwOyB9 Ci5zZi12b3JzY2hhdS5zZi1jYWIgeyBiYWNrZ3JvdW5kOiAjRjBEOEQ4OyBjb2xvcjogIzZiMmQy ZDsgfQouc2Ytdm9yc2NoYXUuc2Ytdm9yc2NoYXUtcG9vbCB7IGJhY2tncm91bmQ6ICNFMEUwRTA7 IGNvbG9yOiAjNjY2OyBmb250LXN0eWxlOiBpdGFsaWM7IHBhZGRpbmc6IDNweCAxMHB4OyB9Cltk YXRhLXRoZW1lPSJuaWdodCJdIC5zZi12b3JzY2hhdS5zZi1hYmMgeyBiYWNrZ3JvdW5kOiAjMWMz MDI0OyBjb2xvcjogIzhmZDBhMDsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuc2Ytdm9yc2NoYXUu c2YtYmNhIHsgYmFja2dyb3VuZDogIzFjMjQzNjsgY29sb3I6ICM4ZmIwZTA7IH0KW2RhdGEtdGhl bWU9Im5pZ2h0Il0gLnNmLXZvcnNjaGF1LnNmLWNhYiB7IGJhY2tncm91bmQ6ICMzMDFjMWM7IGNv bG9yOiAjZTBhMGEwOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5zZi12b3JzY2hhdS5zZi12b3Jz Y2hhdS1wb29sIHsgYmFja2dyb3VuZDogIzJhMmEyYTsgY29sb3I6ICM5OTk7IH0KCi8qID09PT09 IERhdGVuZ3JpZCA9PT09PSAqLwojZ3JpZC1kYXRlbiB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGly ZWN0aW9uOiBjb2x1bW47IH0KCi5ncmlkLXplaWxlIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBo ZWlnaHQ6IHZhcigtLXplbGxlLWhvZWhlKTsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2 YXIoLS1ncmlkLWxpbmllKTsKfQoKLyogR3J1cHBlbnRyZW5uemVpbGUgaW0gR3JpZCDigJQgZGll c2VsYmUgSGVhZGVyLUJsYXUtRmxhZWNoZSB3aWUgZGllIEtvcGZsZWlzdGUsCiAgIGRhbWl0IGRl ciBsZWVyZSBCZXJlaWNoIG5lYmVuIGRlbSAiLS0tIERJRU5TVEdSVVBQRSBYIC0tLSItTGFiZWwg bmljaHQgbWVocgogICB3ZWlzcyB3aXJrdC4gIWltcG9ydGFudCwgd2VpbCBsZWVyZSBGbGV4LUtp bmRlciBzb25zdCBnZWxlZ2VudGxpY2ggdm9tCiAgIFBhcmVudC1IaW50ZXJncnVuZCB1ZWJlcmRl Y2t0IHdlcmRlbi4gKi8KI2dyaWQtZGF0ZW4gPiAuZ3JpZC10cmVubmVyIHsKICAgIGRpc3BsYXk6 IGZsZXggIWltcG9ydGFudDsKICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50OwogICAgYmFja2dy b3VuZDogdmFyKC0tYmctcHJpbWFyeSkgIWltcG9ydGFudDsKICAgIGJvcmRlci1ib3R0b206IDFw eCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZh cigtLWJvcmRlci1jb2xvcik7CiAgICBtaW4td2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLmdy aWQtemVsbGUgewogICAgd2lkdGg6IHZhcigtLXplbGxlLWJyZWl0ZSk7CiAgICBtaW4td2lkdGg6 IHZhcigtLXplbGxlLWJyZWl0ZSk7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6 IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYm9yZGVyLXJpZ2h0OiAx cHggc29saWQgdmFyKC0tZ3JpZC1saW5pZSk7CiAgICBmb250LXNpemU6IDlweDsKICAgIGZvbnQt d2VpZ2h0OiA2MDA7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5 IDAuMXM7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQou Z3JpZC16ZWxsZTpob3ZlciB7IG9wYWNpdHk6IDAuODsgb3V0bGluZTogMnB4IHNvbGlkIHZhcigt LXRleHQtaGVhZGluZyk7IG91dGxpbmUtb2Zmc2V0OiAtMnB4OyB6LWluZGV4OiAxOyB9Ci8qIExp bmtza2xpY2stTWFya2llcnVuZyAoQXVzd2FobCBvaG5lIExvY2spLiBLbGFyZXIgUmluZyBpbiBB a3plbnRmYXJiZSwKICAgYmxlaWJ0IHNpY2h0YmFyIGJpcyBlaW5lIGFuZGVyZSBaZWxsZSBtYXJr aWVydCBvZGVyIG5ldSBnZXJlbmRlcnQgd2lyZC4KICAgUmVjaHRza2xpY2sgYXVmIGRpZSBtYXJr aWVydGUgWmVsbGUgb2VmZm5ldCBkZW4gU2NoaWNodC1FZGl0b3IuICovCi5ncmlkLXplbGxlLW1h cmtpZXJ0IHsgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWJnLXByaW1hcnkpOyBvdXRsaW5lLW9m ZnNldDogLTJweDsgei1pbmRleDogMjsgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigt LWJnLXByaW1hcnkpOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5ncmlkLXplbGxlLW1hcmtpZXJ0 IHsgb3V0bGluZS1jb2xvcjogIzVhOWZkYjsgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4ICM1 YTlmZGI7IH0KLmdyaWQtemVsbGUuZ2VzcGVycnQgeyBjdXJzb3I6IG5vdC1hbGxvd2VkOyBvcGFj aXR5OiAwLjY7IH0KLyogR2VzcGVycnRlIFplbGxlbiBrbGFyIGFiZ2VzZXR6dDogZ2VkYWVtcGZ0 ICsgbGVpY2h0ZSBHcmF1c3R1ZmUsIGRhbWl0IG1hbiBzaWUKICAgYWxzICJuaWNodC1lZGl0aWVy YmFyIiBlcmtlbm50LCBkZXIgSW5oYWx0IGZyZW1kZXIgR3J1cHBlbiBhYmVyIGxlc2JhciBibGVp YnQKICAgKFVzZXItV3Vuc2NoIDIwMjYtMDUtMjcpLiBDaGVycnktUGljayAyYTc3NTJiLiAqLwou Z3JpZC16ZWxsZS1nZXNwZXJydCB7IGN1cnNvcjogbm90LWFsbG93ZWQ7IG9wYWNpdHk6IDAuNTsg ZmlsdGVyOiBncmF5c2NhbGUoMC41KTsgfQouZ3JpZC16ZWxsZS1nZXNwZXJydDpob3ZlciB7IG9w YWNpdHk6IDAuNzU7IG91dGxpbmU6IDJweCBkYXNoZWQgdmFyKC0tdGV4dC1tdXRlZCk7IG91dGxp bmUtb2Zmc2V0OiAtMnB4OyB9CgovKiBMaXZlLVN5bmM6IFplbGxlIHdpcmQgZ2VyYWRlIHZvbiBl aW5lbSBhbmRlcmVuIFVzZXIgZWRpdGllcnQuCiAgIFZpc3VlbGxlciBJbmRpa2F0b3IgKyBjdXJz b3Igbm90LWFsbG93ZWQuIFRvb2x0aXAgd2lyZCB2b20gSlMgZ2VzZXR6dC4gKi8KLmdyaWQtemVs bGUtbG9ja2VkIHsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDsKICAgIGJveC1z aGFkb3c6IGluc2V0IDAgMCAwIDJweCAjQ0E2RjFFICFpbXBvcnRhbnQ7ICAvKiB3YXJuLW9yYW5n ZSBSYWhtZW4gKi8KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouZ3JpZC16ZWxsZS1sb2NrZWQ6 OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9w OiAxcHg7IHJpZ2h0OiAxcHg7CiAgICB3aWR0aDogNnB4OyBoZWlnaHQ6IDZweDsKICAgIGJvcmRl ci1yYWRpdXM6IDUwJTsKICAgIGJhY2tncm91bmQ6ICNDQTZGMUU7CiAgICBib3gtc2hhZG93OiAw IDAgNHB4IHJnYmEoMjAyLDExMSwzMCwwLjYpOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0K W2RhdGEtdGhlbWU9Im5pZ2h0Il0gLmdyaWQtemVsbGUtbG9ja2VkIHsgYm94LXNoYWRvdzogaW5z ZXQgMCAwIDAgMnB4ICNFNjhBMzUgIWltcG9ydGFudDsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAu Z3JpZC16ZWxsZS1sb2NrZWQ6OmFmdGVyIHsgYmFja2dyb3VuZDogI0U2OEEzNTsgfQoKLyogTGl2 ZS1TeW5jOiBBdWZsZXVjaHRlbiBiZWkgcmVtb3RlLWdldHJpZ2dlcnRlbiBBZW5kZXJ1bmdlbi4K ICAgRmFyYmUgKyBHbG93ICsgRGF1ZXIgdWViZXIgQ3VzdG9tLVByb3BlcnRpZXMgYXVzIGRlbSBF cnNjaGVpbnVuZ3MtCiAgIGJpbGQtRWRpdG9yICgtLW1zZi0qKS4gRGVmYXVsdC1BbmltYXRpb24g bGFldWZ0IGVpbm1hbCwgZGF1ZXIgYXVzCiAgIC0tbXNmLWRhdWVyIChGYWxsYmFjayAxNTAwbXMp LiAqLwpAa2V5ZnJhbWVzIHplbGxlLWZsYXNoIHsKICAgIDAlICAgeyBiYWNrZ3JvdW5kLWNvbG9y OiB2YXIoLS1tc2YtYmcsIHJnYmEoMjU1LDIzMCwxMjgsMC44NSkpOyBib3gtc2hhZG93OiB2YXIo LS1tc2Ytc2hhZG93LCAwIDAgMTJweCA0cHggcmdiYSgyNTUsMjE1LDAsMC44NSkpOyB9CiAgICA1 MCUgIHsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbXNmLWJnLCByZ2JhKDI1NSwyMzAsMTI4LDAu NTUpKTsgYm94LXNoYWRvdzogdmFyKC0tbXNmLXNoYWRvdy1wdWxzLCB2YXIoLS1tc2Ytc2hhZG93 LCAwIDAgOHB4IDJweCByZ2JhKDI1NSwyMTUsMCwwLjU1KSkpOyB9CiAgICAxMDAlIHsgYmFja2dy b3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IGJveC1zaGFkb3c6IG5vbmU7IH0KfQouemVsbGUtZmxh c2ggeyBhbmltYXRpb246IHplbGxlLWZsYXNoIHZhcigtLW1zZi1kYXVlciwgMTUwMG1zKSBlYXNl LW91dDsgfQoKLyogRXhjZWwtYWVobmxpY2hlciBGdWVsbC1HcmlmZjoKICAgLSBzb3VyY2UgPSBR dWVsbC1aZWxsZSAoaGF0dGUgZ2VyYWRlIGVpbmVuIEVkaXQpCiAgIC0gdGFyZ2V0ID0gdm9yZ2Vt ZXJrdGUgWmVsbGUgd2FlaHJlbmQgZGVzIERyYWdzCiAgIC0gI2ZpbGwtaGFuZGxlID0gZGFzIGts ZWluZSBibGF1ZSBRdWFkcmF0IHVudGVuIHJlY2h0cyBhbiBkZXIgUXVlbGxlICovCi5ncmlkLXpl bGxlLWZpbGwtc291cmNlIHsKICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1mYXJiZS1ha3pl bnQsICM0YTkwZTIpICFpbXBvcnRhbnQ7CiAgICBvdXRsaW5lLW9mZnNldDogLTJweDsKICAgIHot aW5kZXg6IDI7Cn0KLmdyaWQtemVsbGUtZmlsbC10YXJnZXQgewogICAgb3V0bGluZTogMXB4IGRh c2hlZCB2YXIoLS1mYXJiZS1ha3plbnQsICM0YTkwZTIpOwogICAgb3V0bGluZS1vZmZzZXQ6IC0x cHg7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHRyYW5zcGFy ZW50IDAgMzUlLCByZ2JhKDc0LDE0NCwyMjYsMC4xOCkgMzUlIDY1JSwgdHJhbnNwYXJlbnQgNjUl KTsKfQojZmlsbC1oYW5kbGUgewogICAgcG9zaXRpb246IGZpeGVkOwogICAgd2lkdGg6IDhweDsg aGVpZ2h0OiA4cHg7CiAgICBiYWNrZ3JvdW5kOiAjOGIwMDAwOwogICAgYm9yZGVyOiAxcHggc29s aWQgI2ZmZjsKICAgIGN1cnNvcjogY3Jvc3NoYWlyOwogICAgei1pbmRleDogMTAwMDsKICAgIGJv eC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuNDUpOwogICAgYm9yZGVyLXJhZGl1czog MXB4Owp9CiNmaWxsLWhhbmRsZTpob3ZlciB7IHRyYW5zZm9ybTogc2NhbGUoMS40KTsgYmFja2dy b3VuZDogI2EwMDAwMDsgfQoKLyogU3BhbHRlbnR5cGVuIOKAlCBkZXV0bGljaGUgVW50ZXJzY2hl aWR1bmcgKi8KLnNwYWx0ZS13b2NoZW5lbmRlIHsgYmFja2dyb3VuZC1jb2xvcjogI0VERjJGODsg Ym9yZGVyLXJpZ2h0LWNvbG9yOiAjRDRERUVDOyB9Ci5zcGFsdGUtZmVpZXJ0YWcgICB7IGJhY2tn cm91bmQtY29sb3I6ICNEN0U0RjA7IGJvcmRlci1yaWdodC1jb2xvcjogI0IwQzREODsgfQouc3Bh bHRlLWZlcmllbiAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZmVyLXNwYWx0ZS1iZywg I0UwRjBFNCk7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLnNwYWx0ZS13b2NoZW5lbmRlIHsgYmFj a2dyb3VuZC1jb2xvcjogIzFGMkEzODsgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjMkQzRTU1OyB9Cltk YXRhLXRoZW1lPSJuaWdodCJdIC5zcGFsdGUtZmVpZXJ0YWcgICB7IGJhY2tncm91bmQtY29sb3I6 ICMyNTM1NDc7IGJvcmRlci1yaWdodC1jb2xvcjogIzM4NTI3MDsgfQpbZGF0YS10aGVtZT0ibmln aHQiXSAuc3BhbHRlLWZlcmllbiAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZmVyLXNw YWx0ZS1iZywgIzFDMkUyMik7IH0KCi8qIEhldXRlLVNwYWx0ZTogYWxsZSB2aXN1ZWxsZW4gUGFy YW1ldGVyIChIaW50ZXJncnVuZCwgUmFobWVuLUFremVudGUsCiAgIG9wdGlvbmFsZXIgR2xvdykg a29tbWVuIHVlYmVyIEN1c3RvbS1Qcm9wZXJ0aWVzIGF1cyBkZW0gRXJzY2hlaW51bmdzLQogICBi aWxkLUVkaXRvciAoYWRtaW5fZXJzY2hlaW51bmdzYmlsZC5qcyAvIG1hcmtpZXJ1bmdlbkFud2Vu ZGVuKS4gKi8KLnNwYWx0ZS1oZXV0ZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1taGUt YmcsIHRyYW5zcGFyZW50KTsKICAgIGNvbG9yOiB2YXIoLS1taGUtdGV4dCwgaW5oZXJpdCk7CiAg ICBmb250LXdlaWdodDogdmFyKC0tbWhlLWZ3LCA0MDApOwogICAgZm9udC1zaXplOiBjYWxjKHZh cigtLW1oZS1mcywgMSkgKiAxZW0pOwogICAgYm94LXNoYWRvdzogdmFyKC0tbWhlLXNoYWRvdywg bm9uZSk7CiAgICBhbmltYXRpb246IHZhcigtLW1oZS1hbmltLCBub25lKTsKfQoKLyogU2NocmFm ZnVyZW4g4oCUIGFsbGUgUmljaHR1bmdlbiBlaW5oZWl0bGljaCA0NWRlZyAodm9uIGxpbmtzIHVu dGVuIG5hY2gKICAgcmVjaHRzIG9iZW4pLiBVbnRlcnNjaGVpZHVuZyBGL1MvTiBudXIgdWViZXIg TGluaWVuLURpY2h0ZToKICAgRiA9IG1pdHRsZXJlIFN0cmljaC1EaWNodGUsIFMgPSBicmVpdGUg U3RyZWlmZW4sIE4gPSBzZWhyIGRpY2h0ZSBTY2hyYWZmdXIuCiAgIC0yIFZhcmlhbnRlIChSYW5n IDIpIGlzdCBoZWxsZXIuIENoZXJyeS1QaWNrIDg0ZmIwZjcuICovCi5zY2hyYWZmdXItZnJ1ZWgg ewogICAgYmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCg0NWRlZywg dHJhbnNwYXJlbnQgMCAzcHgsIHJnYmEoMjU1LDI1NSwyNTUsMC4yNSkgM3B4IDVweCkgIWltcG9y dGFudDsKICAgIGZvbnQtd2VpZ2h0OiA4MDAgIWltcG9ydGFudDsgdGV4dC1zaGFkb3c6IDAgMXB4 IDJweCByZ2JhKDAsMCwwLDAuMyk7Cn0KLnNjaHJhZmZ1ci1zcGFldCB7CiAgICBiYWNrZ3JvdW5k LWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCB0cmFuc3BhcmVudCAwIDZw eCwgcmdiYSgyNTUsMjU1LDI1NSwwLjI1KSA2cHggOXB4KSAhaW1wb3J0YW50OwogICAgZm9udC13 ZWlnaHQ6IDgwMCAhaW1wb3J0YW50OyB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwwLDAs MC4zKTsKfQouc2NocmFmZnVyLW5hY2h0IHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGlu Zy1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHRyYW5zcGFyZW50IDAgMS41cHgsIHJnYmEoMjU1LDI1 NSwyNTUsMC4zMCkgMS41cHggM3B4KSAhaW1wb3J0YW50OwogICAgZm9udC13ZWlnaHQ6IDgwMCAh aW1wb3J0YW50OyB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4zKTsKfQouc2No cmFmZnVyLWZydWVoLTIgeyBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRp ZW50KDQ1ZGVnLCB0cmFuc3BhcmVudCAwIDRweCwgcmdiYSgyNTUsMjU1LDI1NSwwLjE1KSA0cHgg NnB4KSAhaW1wb3J0YW50OyB9Ci5zY2hyYWZmdXItc3BhZXQtMiB7IGJhY2tncm91bmQtaW1hZ2U6 IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHRyYW5zcGFyZW50IDAgN3B4LCByZ2Jh KDI1NSwyNTUsMjU1LDAuMTUpIDdweCAxMHB4KSAhaW1wb3J0YW50OyB9Ci5zY2hyYWZmdXItbmFj aHQtMiB7IGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoNDVkZWcs IHRyYW5zcGFyZW50IDAgMnB4LCByZ2JhKDI1NSwyNTUsMjU1LDAuMTUpIDJweCA0cHgpICFpbXBv cnRhbnQ7IH0KCi8qIFZlcmFudHdvcnRsaWNoa2VpdHMtTWFya2llcnVuZyAoVG9wLTIgcHJvIFNj aGljaHQpLgogICBUb2tlbiAtLWZhcmJlLXZlcmFudHdvcnRsaWNoIGlzdCB0aGVtZS1mZXN0IChQ aGFzZSAxIGVpbmdlZnVlaHJ0KSDigJQKICAgTGlnaHQ6IE9yYW5nZSAoLS1mYXJiZS13YXJudW5n KSwgRGFyazogYmxlaWJ0IG9yYW5nZSAoZ3V0IHNpY2h0YmFyKS4gKi8KLmdyaWQtemVsbGUudmVy YW50d29ydGxpY2ggewogICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMnB4IDAgMCB2YXIoLS1mYXJi ZS12ZXJhbnR3b3J0bGljaCk7Cn0KLnZlcmFudHdvcnRsaWNoLWJhZGdlIHsKICAgIHBvc2l0aW9u OiBhYnNvbHV0ZTsKICAgIHRvcDogMXB4OwogICAgcmlnaHQ6IDFweDsKICAgIHdpZHRoOiA2cHg7 CiAgICBoZWlnaHQ6IDZweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLXZlcmFudHdvcnRs aWNoKTsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKfQoKLyogPT09PT0gWmVsbC1FZGl0b3IgPT09 PT0gKi8KI3plbGwtZWRpdG9yIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsgei1pbmRleDogdmFyKC0t ei1lZGl0b3IpOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7IGJvcmRlcjogMnB4IHNv bGlkIHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMt c20pOyBib3gtc2hhZG93OiAwIDZweCAyMHB4IHZhcigtLXNoYWRvdy1tZWRpdW0pOwp9CiNlZGl0 b3ItYXVzd2FobCB7CiAgICBib3JkZXI6IG5vbmU7IG91dGxpbmU6IG5vbmU7IGZvbnQtZmFtaWx5 OiBpbmhlcml0OyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsKICAgIGJhY2tncm91bmQ6IHZhcigt LWJnLWNhcmQpOyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKICAgIG1pbi13aWR0aDogMjAw cHg7IGN1cnNvcjogcG9pbnRlcjsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhzKTsKfQoj ZWRpdG9yLWF1c3dhaGwgb3B0aW9uIHsgcGFkZGluZzogNHB4IDhweDsgfQojZWRpdG9yLWF1c3dh aGwgb3B0aW9uOmNoZWNrZWQgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1hY3RpdmUpOyB9CgovKiA9 PT09PSBBZG1pbi1MYXlvdXQgPT09PT0gKi8KLmFkbWluLWxheW91dCB7CiAgICBkaXNwbGF5OiBm bGV4OyBmbGV4OiAxOyBvdmVyZmxvdzogaGlkZGVuOwp9Ci5hZG1pbi1zaWRlYmFyIHsKICAgIHdp ZHRoOiAyNDBweDsgbWluLXdpZHRoOiAyNDBweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXNp ZGViYXIpOyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAg cGFkZGluZzogMCAwIDI0cHggMDsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVt bjsKICAgIG92ZXJmbG93LXk6IGF1dG87Cn0KLyogQ2x1c3Rlci1HcnVwcGU6IFVlYmVyc2Nocmlm dCAoYmxhdWVyIEhlYWRlcikgKyBCdXR0b25zICovCi5hZG1pbi1uYXYtZ3J1cHBlIHsKICAgIGRp c3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBwYWRkaW5nOiAwIDAgNnB4 IDA7Cn0KLmFkbWluLW5hdi10aXRlbCB7CiAgICBtYXJnaW46IDA7IHBhZGRpbmc6IDhweCAxNnB4 OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSk7IGNvbG9yOiB2YXIoLS10ZXh0LW9u LXByaW1hcnkpOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGZvbnQtd2VpZ2h0OiA3MDA7 IGxldHRlci1zcGFjaW5nOiAxcHg7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAg bGluZS1oZWlnaHQ6IDEuMzsKICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgYm9yZGVyLWJvdHRv bTogMXB4IHNvbGlkIHZhcigtLWJnLXByaW1hcnktZGFyayk7Cn0KLyogRXR3YXMgTHVmdCB6d2lz Y2hlbiBUaXRlbCB1bmQgZXJzdGVtIEJ1dHRvbiAqLwouYWRtaW4tbmF2LWdydXBwZSAuYWRtaW4t bmF2LWJ0bjpmaXJzdC1vZi10eXBlIHsgbWFyZ2luLXRvcDogNnB4OyB9CgouYWRtaW4tbmF2LWJ0 biB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiA4 cHggMTRweDsKICAgIG1hcmdpbjogMXB4IDhweDsKICAgIHRleHQtYWxpZ246IGxlZnQ7IGJvcmRl ci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IGN1cnNvcjogcG9pbnRlcjsKICAgIGZvbnQtZmFt aWx5OiBpbmhlcml0OyBmb250LXNpemU6IDEzLjVweDsgZm9udC13ZWlnaHQ6IDQwMDsgbGluZS1o ZWlnaHQ6IDEuNDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwogICAgdHJhbnNpdGlv bjogYmFja2dyb3VuZCAwLjE1cyBlYXNlLCBjb2xvciAwLjE1cyBlYXNlOwogICAgcG9zaXRpb246 IHJlbGF0aXZlOwp9Ci5hZG1pbi1uYXYtYnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHZhcigt LWJnLW5hdi1ob3Zlcik7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwp9Ci5hZG1pbi1uYXYt YnRuLmFrdGl2IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLW5hdi1ha3Rpdik7IGNvbG9yOiB2 YXIoLS10ZXh0LWhlYWRpbmcpOyBmb250LXdlaWdodDogNjAwOwogICAgYm94LXNoYWRvdzogaW5z ZXQgM3B4IDAgMCAwIHZhcigtLXRleHQtaGVhZGluZyk7Cn0KLmFkbWluLW5hdi1idG4uYWt0aXY6 aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1uYXYtYWt0aXYpOyB9Ci8qIFNpY2h0YmFyZXIg Rm9rdXMgZnVlciBLZXlib2FyZC1OYXZpZ2F0aW9uIChUQUIgZHVyY2ggU2lkZWJhcikuCiAgIDpm b2N1cy12aXNpYmxlIGZldWVydCBuaWNodCBiZWkgTWF1cy1LbGljaywgbnVyIGJlaSBUYXN0YXR1 ci1Gb2t1cyDigJQKICAgc3RvZXJ0IGFsc28gTWF1cy1Vc2VyIG5pY2h0LiAqLwouYWRtaW4tbmF2 LWJ0bjpmb2N1cy12aXNpYmxlIHsKICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1mYXJiZS1h a3plbnQpOwogICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7Cn0KCi5hZG1pbi1pbmhhbHQgeyBmbGV4 OiAxOyBvdmVyZmxvdy15OiBhdXRvOyBwYWRkaW5nOiAyNHB4IDMycHg7IH0KLmFkbWluLWtvcGYg eyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNw YWNlLWJldHdlZW47IG1hcmdpbi1ib3R0b206IDIwcHg7IH0KLmFkbWluLWtvcGYgaDIgeyBmb250 LXNpemU6IDIwcHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcp OyB9Ci5hZG1pbi1oaW53ZWlzIHsgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IGNvbG9yOiB2YXIo LS10ZXh0LXNlY29uZGFyeSk7IG1hcmdpbi1ib3R0b206IDE2cHg7IGxpbmUtaGVpZ2h0OiAxLjY7 IH0KCi5hZG1pbi10YWIgeyBhbmltYXRpb246IGZhZGVJbiAwLjE1cyBlYXNlOyB9CkBrZXlmcmFt ZXMgZmFkZUluIHsgZnJvbSB7IG9wYWNpdHk6IDA7IH0gdG8geyBvcGFjaXR5OiAxOyB9IH0KCi8q IFNla3Rpb25lbiBpbm5lcmhhbGIgZWluZXMgVGFicyAoZnVlciBnZW1lcmd0ZSBUYWJzIHdpZSAi RmVpZXJ0YWdlICYgRmVyaWVuIikuCiAgIFZvcmhlciA0cHgg4oCUIFNla3Rpb25lbiBrbGVidGVu IHp1c2FtbWVuLCBrZWluIG9wdGlzY2hlciBBdGVtcmF1bS4KICAgTWl0IC0tc3AtNSAoMjRweCkg c2l0emVuIHp3ZWkgU2VrdGlvbmVuIGtsYXIgZ2V0cmVubnQgdm9uZWluYW5kZXIuICovCi5hZG1p bi1zZWt0aW9uIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3AtNSk7IH0KLmFkbWluLXNla3Rpb24t a29wZiB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNv bnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICBnYXA6IDEycHg7IG1hcmdpbi1ib3R0b206IDE0cHg7 Cn0KLmFkbWluLXNla3Rpb24ta29wZiBoMyB7CiAgICBmb250LXNpemU6IDE2cHg7IGZvbnQtd2Vp Z2h0OiA3MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBtYXJnaW46IDA7Cn0KLmFkbWlu LXNla3Rpb24tdHJlbm5lciB7CiAgICBib3JkZXI6IDA7IGJvcmRlci10b3A6IDFweCBzb2xpZCB2 YXIoLS1ib3JkZXItbGlnaHQpOwogICAgbWFyZ2luOiAyOHB4IDAgMjJweCAwOwp9CgovKiA9PT09 PSBBZG1pbi1CYW5uZXIgKFJlYWQtb25seS1IaW53ZWlzLCBJbmxpbmUtSW5mbykgPT09PT0KICAg RHJlaSBWYXJpYW50ZW46IC5hZG1pbi1iYW5uZXItaW5mbyAvIC5hZG1pbi1iYW5uZXItd2FybiAv IC5hZG1pbi1iYW5uZXItZXJmb2xnLgogICBMaW5rZXIgQWt6ZW50LVN0cmVpZmVuICsgSWNvbi1T bG90ICsgSW5oYWx0cy1TbG90LiBEZWZhdWx0ID0gaW5mby4gKi8KLmFkbWluLWJhbm5lciB7CiAg ICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZ2FwOiB2YXIoLS1zcC0z KTsKICAgIHBhZGRpbmc6IHZhcigtLXNwLTMpIHZhcigtLXNwLTQpOwogICAgbWFyZ2luLWJvdHRv bTogdmFyKC0tc3AtNCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAg Ym9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS1iYW5uZXItaW5mby1ib3JkZXIpOwogICAgYmFj a2dyb3VuZDogdmFyKC0tYmFubmVyLWluZm8tYmcpOwogICAgY29sb3I6IHZhcigtLWJhbm5lci1p bmZvLXRleHQpOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IGxpbmUtaGVpZ2h0OiAxLjU7 Cn0KLmFkbWluLWJhbm5lci13YXJuIHsKICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1iYW5u ZXItd2Fybi1ib3JkZXIpOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmFubmVyLXdhcm4tYmcpOwog ICAgY29sb3I6IHZhcigtLWJhbm5lci13YXJuLXRleHQpOwp9Ci5hZG1pbi1iYW5uZXItZXJmb2xn IHsKICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1iYW5uZXItZXJmb2xnLWJvcmRlcik7CiAg ICBiYWNrZ3JvdW5kOiB2YXIoLS1iYW5uZXItZXJmb2xnLWJnKTsKICAgIGNvbG9yOiB2YXIoLS1i YW5uZXItZXJmb2xnLXRleHQpOwp9Ci5hZG1pbi1iYW5uZXItaWNvbiB7CiAgICBmbGV4OiAwIDAg YXV0bzsKICAgIGZvbnQtc2l6ZTogMTZweDsgbGluZS1oZWlnaHQ6IDEuMjsKICAgIG1hcmdpbi10 b3A6IDFweDsKfQouYWRtaW4tYmFubmVyLXRleHQgeyBmbGV4OiAxIDEgYXV0bzsgfQouYWRtaW4t YmFubmVyLXRpdGVsIHsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7IG1hcmdpbi1ib3R0b206IDJweDsK fQouYWRtaW4tYmFubmVyLWJvZHkgeyBmb250LXNpemU6IDEyLjVweDsgb3BhY2l0eTogMC45Mjsg fQoKLyogPT09PT0gQWRtaW4tU3ViLU5hdmlnYXRpb24gKGlubmVyaGFsYiBlaW5lcyBUb3AtVGFi cykgPT09PT0KICAgSG9yaXpvbnRhbGVyIFRhYi1TdHJlaWZlbiBhbSBvYmVyZW4gUmFuZCBkZXMg LmFkbWluLWluaGFsdC1CZXJlaWNocy4KICAgTnVyIHNpY2h0YmFyLCB3ZW5uIGRlciBUb3AtVGFi ID4gMSBTZWt0aW9uIGhhdC4gKi8KLmFkbWluLXN1Ym5hdiB7CiAgICBkaXNwbGF5OiBmbGV4OyBm bGV4LXdyYXA6IHdyYXA7IGdhcDogdmFyKC0tc3AtMSk7CiAgICBtYXJnaW46IDAgMCB2YXIoLS1z cC01KSAwOwogICAgcGFkZGluZzogMCAwIHZhcigtLXNwLTIpIDA7CiAgICBib3JkZXItYm90dG9t OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKfQouYWRtaW4tc3VibmF2LWJ0biB7CiAg ICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgYm9yZGVyOiBub25lOyBjdXJzb3I6IHBvaW50ZXI7 CiAgICBwYWRkaW5nOiB2YXIoLS1zcC0yKSB2YXIoLS1zcC00KTsKICAgIGZvbnQtZmFtaWx5OiBp bmhlcml0OyBmb250LXNpemU6IHZhcigtLWZzLW1kKTsgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGNv bG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRp dXMtc20pIDRweCAwIDA7CiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7 CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXN0ZCk7CiAgICBtYXJnaW4tYm90dG9t OiAtMXB4OyAgLyogdWViZXJsYXBwdCBkaWUgdW50ZXJlIExpbmllIGRlciBzdWJuYXYgKi8KfQou YWRtaW4tc3VibmF2LWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1uYXYtaG92 ZXIpOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKfQouYWRtaW4tc3VibmF2LWJ0bi5ha3Rp diB7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgZm9udC13ZWlnaHQ6IDcwMDsKICAg IGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLWZhcmJlLXByaW1hZXIpOwogICAgYmFja2dyb3Vu ZDogdHJhbnNwYXJlbnQ7Cn0KLmFkbWluLXN1Ym5hdi1idG46Zm9jdXMtdmlzaWJsZSB7CiAgICBv dXRsaW5lOiAycHggc29saWQgdmFyKC0tZmFyYmUtYWt6ZW50KTsKICAgIG91dGxpbmUtb2Zmc2V0 OiAycHg7Cn0KCi8qID09PT09IEFkbWluLUVtcHR5LVN0YXRlIChPbmJvYXJkaW5nLUthcnRlIGZ1 ZXIgbGVlcmUgU2VrdGlvbmVuKSA9PT09PQogICBXaXJkIGdlcmVuZGVydCwgd2VubiBlaW5lIExp c3RlIGtlaW5lIERhdGVuc2FldHplIGhhdC4gKi8KLmFkbWluLWVtcHR5IHsKICAgIGRpc3BsYXk6 IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB0 ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5nOiB2YXIoLS1zcC02KSB2YXIoLS1zcC01KTsK ICAgIG1hcmdpbjogdmFyKC0tc3AtNCkgMDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQt YWx0KTsKICAgIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsKICAgIGJv cmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7Cn0KLmFkbWluLWVtcHR5LWljb24gewogICAg Zm9udC1zaXplOiAzMnB4OwogICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3AtMyk7CiAgICBjb2xv cjogdmFyKC0tdGV4dC1tdXRlZCk7Cn0KLmFkbWluLWVtcHR5LXRpdGVsIHsKICAgIGZvbnQtc2l6 ZTogMTVweDsgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcp OwogICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3AtMik7Cn0KLmFkbWluLWVtcHR5LXRleHQgewog ICAgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7 CiAgICBtYXgtd2lkdGg6IDQ2MHB4OyBsaW5lLWhlaWdodDogMS41OwogICAgbWFyZ2luLWJvdHRv bTogdmFyKC0tc3AtNCk7Cn0KLmFkbWluLWVtcHR5LWFrdGlvbiB7IG1hcmdpbi10b3A6IHZhcigt LXNwLTEpOyB9CgovKiA9PT09PSBUYXN0YXR1cmt1ZXJ6ZWwtVGFiZWxsZSBpbSBJbmZvLU1vZGFs IChVWC1BdWRpdCBTcHJpbnQgMy43KSA9PT09PSAqLwouaW5mby1zaG9ydGN1dHMgeyB3aWR0aDog MTAwJTsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7 IG1hcmdpbi10b3A6IHZhcigtLXNwLTIpOyB9Ci5pbmZvLXNob3J0Y3V0cyB0aCwgLmluZm8tc2hv cnRjdXRzIHRkIHsgdGV4dC1hbGlnbjogbGVmdDsgcGFkZGluZzogdmFyKC0tc3AtMSkgdmFyKC0t c3AtMik7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyB9Ci5p bmZvLXNob3J0Y3V0cyB0aCB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgZm9udC13 ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0KLmluZm8tc2hvcnRjdXRz IGtiZCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiAycHggNnB4Owog ICAgYmFja2dyb3VuZDogdmFyKC0tYmctdG9vbGJhcik7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2 YXIoLS1ib3JkZXItc3Ryb25nKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14cyk7 CiAgICBmb250LWZhbWlseTogQ29uc29sYXMsICJTRiBNb25vIiwgTWVubG8sIG1vbm9zcGFjZTsK ICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOwogICAgY29sb3I6IHZhcigtLXRleHQtaGVhZGlu Zyk7CiAgICBib3gtc2hhZG93OiAwIDFweCAwIHZhcigtLXNoYWRvdy1tZWRpdW0pOwp9CgovKiA9 PT09PSBIaWxmZS1JY29uIChVWC1BdWRpdCBTcHJpbnQgMi4yLCAyMDI2LTA1LTI5KSA9PT09PQog ICBLbGVpbmVyIHJ1bmRlciDik5gtQnV0dG9uIG5lYmVuIExhYmVscyBvZGVyIEJ1dHRvbnMuIENs aWNrIOKGkiBUb2FzdC4gKi8KLmhpbGZlLWljb24gewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7 CiAgICBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHdp ZHRoOiAxOHB4OyBoZWlnaHQ6IDE4cHg7CiAgICBtYXJnaW4tbGVmdDogdmFyKC0tc3AtMSk7CiAg ICBwYWRkaW5nOiAwOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7 CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFs dCk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICBmb250LXNpemU6IHZhcigtLWZz LXNtKTsgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGN1cnNvcjogaGVscDsKICAgIHZlcnRpY2FsLWFs aWduOiBtaWRkbGU7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIHRyYW5zaXRpb246IHZhcigtLXRy YW5zaXRpb24tc3RkKTsKfQouaGlsZmUtaWNvbjpob3ZlciwgLmhpbGZlLWljb246Zm9jdXMtdmlz aWJsZSB7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWZhcmJlLWFremVudCk7CiAgICBjb2xvcjog dmFyKC0tZmFyYmUtYWt6ZW50KTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsKICAg IG91dGxpbmU6IG5vbmU7Cn0KCi8qID09PT09IFJlbmRlci1FcnJvci1Cb3ggKFVYLUF1ZGl0IFNw cmludCAxLjIsIDIwMjYtMDUtMjkpID09PT09CiAgIFdpcmQgdm9uIHJlbmRlckVycm9yQm94KCkg aW4gY29yZV91dGlsLmpzIGJlZnVlbGx0LiBFcnNldHp0IGJsYW5rZW4KICAgQ29udGFpbmVyLCB3 ZW5uIGVpbmUgUmVuZGVyLUZ1bmt0aW9uIG1pdCBFeGNlcHRpb24gYWJicmljaHQuICovCi5yZW5k ZXItZmVobGVyLWJveCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGZsZXgt c3RhcnQ7CiAgICBnYXA6IHZhcigtLXNwLTMpOwogICAgcGFkZGluZzogdmFyKC0tc3AtNCk7CiAg ICBtYXJnaW46IHZhcigtLXNwLTMpIDA7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iYW5uZXItd2Fy bi1iZyk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1iYW5uZXItd2Fybi1ib3JkZXIpOwog ICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsKICAgIGNvbG9yOiB2YXIoLS1iYW5u ZXItd2Fybi10ZXh0KTsKICAgIG1heC13aWR0aDogNzYwcHg7Cn0KLnJlbmRlci1mZWhsZXItaWNv biB7IGZvbnQtc2l6ZTogMjRweDsgbGluZS1oZWlnaHQ6IDE7IGZsZXgtc2hyaW5rOiAwOyB9Ci5y ZW5kZXItZmVobGVyLXRleHQgeyBmbGV4OiAxOyBtaW4td2lkdGg6IDA7IH0KLnJlbmRlci1mZWhs ZXItdGl0ZWwgeyBmb250LXdlaWdodDogNzAwOyBmb250LXNpemU6IHZhcigtLWZzLWxnKTsgbWFy Z2luLWJvdHRvbTogdmFyKC0tc3AtMik7IH0KLnJlbmRlci1mZWhsZXItZGV0YWlsIHsKICAgIGZv bnQtZmFtaWx5OiBDb25zb2xhcywgIlNGIE1vbm8iLCBNZW5sbywgbW9ub3NwYWNlOwogICAgZm9u dC1zaXplOiB2YXIoLS1mcy1zbSk7CiAgICBwYWRkaW5nOiB2YXIoLS1zcC0xKSB2YXIoLS1zcC0y KTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC4wNik7CiAgICBib3JkZXItcmFkaXVzOiB2 YXIoLS1yYWRpdXMteHMpOwogICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3AtMik7CiAgICB3b3Jk LWJyZWFrOiBicmVhay13b3JkOwogICAgbGluZS1oZWlnaHQ6IDEuNDsKfQpbZGF0YS10aGVtZT0i bmlnaHQiXSAucmVuZGVyLWZlaGxlci1kZXRhaWwgeyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUs MjU1LDAuMDYpOyB9Ci5yZW5kZXItZmVobGVyLWhpbnQgeyBmb250LXNpemU6IHZhcigtLWZzLXNt KTsgb3BhY2l0eTogMC45OyB9CgovKiA9PT09PSBUYWJlbGxlbiA9PT09PSAqLwouYWRtaW4tdGFi ZWxsZSB7IHdpZHRoOiAxMDAlOyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyBmb250LXNpemU6 IHZhcigtLWZzLW1kKTsgfQouYWRtaW4tdGFiZWxsZSB0aCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIo LS1iZy1wcmltYXJ5KTsgY29sb3I6IHZhcigtLXRleHQtb24tcHJpbWFyeSk7CiAgICB0ZXh0LXRy YW5zZm9ybTogdXBwZXJjYXNlOyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgZm9udC13ZWlnaHQ6 IDYwMDsgbGV0dGVyLXNwYWNpbmc6IDAuNXB4OwogICAgcGFkZGluZzogMTBweCAxMnB4OyB0ZXh0 LWFsaWduOiBsZWZ0OyBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9u Zyk7CiAgICBwb3NpdGlvbjogc3RpY2t5OyB0b3A6IDA7IHotaW5kZXg6IDI7Cn0KLmFkbWluLXRh YmVsbGUgdGQgeyBwYWRkaW5nOiA4cHggMTJweDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZh cigtLWJvcmRlci1saWdodCk7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0KLmFkbWluLXRhYmVs bGUgdHI6aG92ZXIgdGQgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IH0KLmFkbWluLXRh YmVsbGUgaW5wdXRbdHlwZT0idGV4dCJdLAouYWRtaW4tdGFiZWxsZSBpbnB1dFt0eXBlPSJlbWFp bCJdLAouYWRtaW4tdGFiZWxsZSBpbnB1dFt0eXBlPSJkYXRlIl0sCi5hZG1pbi10YWJlbGxlIHNl bGVjdCB7CiAgICB3aWR0aDogMTAwJTsgcGFkZGluZzogNHB4IDhweDsgYm9yZGVyOiAxcHggc29s aWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhzKTsK ICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OyBmb250LXNpemU6IHZhcigtLWZzLWJhc2UpOyBiYWNr Z3JvdW5kOiB2YXIoLS1iZy1pbnB1dCk7IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwp9Ci5h ZG1pbi10YWJlbGxlIGlucHV0OmZvY3VzLCAuYWRtaW4tdGFiZWxsZSBzZWxlY3Q6Zm9jdXMgewog ICAgb3V0bGluZTogbm9uZTsgYm9yZGVyLWNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBib3gt c2hhZG93OiAwIDAgMCAycHggcmdiYSgyNiw1OCw5MiwwLjE1KTsKfQoudGFiZWxsZS1zY3JvbGwg eyBvdmVyZmxvdzogYXV0bzsgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDIwMHB4KTsgfQoKLyog PT09PT0gQnV0dG9ucyA9PT09PSAqLwouYnRuIHsKICAgIHBhZGRpbmc6IDdweCAxOHB4OyBib3Jk ZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOyBib3JkZXI6IG5vbmU7IGN1cnNvcjogcG9pbnRl cjsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OyBmb250LXNpemU6IHZhcigtLWZzLW1kKTsgZm9u dC13ZWlnaHQ6IDUwMDsgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1zdGQpOwp9Ci5idG4t cHJpbWFlciB7IGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLXByaW1hZXIpOyBjb2xvcjogI2ZmZjsg fQouYnRuLXByaW1hZXI6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1mYXJiZS1wcmltYWVyLWhv dmVyKTsgY29sb3I6ICNmZmY7IH0KLmJ0bi1lcmZvbGcgeyBiYWNrZ3JvdW5kOiB2YXIoLS1mYXJi ZS1lcmZvbGcpOyBjb2xvcjogI2ZmZjsgfQouYnRuLWVyZm9sZzpob3ZlciB7IGJhY2tncm91bmQ6 ICMxZTdhNWY7IH0KLmJ0bi1nZWZhaHIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1mYXJiZS1mZWhsZXIp OyBjb2xvcjogI2ZmZjsgfQouYnRuLWdlZmFocjpob3ZlciB7IGJhY2tncm91bmQ6ICNhNTI4MWI7 IH0KLyogRS1NYWlsLUJ1dHRvbiBtaXQgVGVzdC0vRnJlbWQtQWRyZXNzZSAobmljaHQgQHBvbGl6 ZWkubnJ3LmRlKToKICAgZ3J1bmVyIFN0YW5kYXJkLUVyZm9sZy1Mb29rIHBsdXMgYXVmZmFlbGxp Z2VyIHJvdGVyIHJlY2h0ZXIgUmFuZCwKICAgZGFtaXQgbWFuIGF1ZiBlaW5lbiBCbGljayBzaWVo dCwgd28gbm9jaCBrZWluZSBvZmZpemllbGxlbiBCZWhvZXJkZW4tCiAgIEFkcmVzc2VuIGhpbnRl cmxlZ3Qgc2luZC4gKi8KLmJ0bi1lbWFpbC10ZXN0IHsKICAgIGJveC1zaGFkb3c6IGluc2V0IC00 cHggMCAwIHZhcigtLWZhcmJlLWZlaGxlciwgI0IwM0EyRSk7CiAgICBwYWRkaW5nLXJpZ2h0OiAx NnB4Owp9Ci5idG4tc2VrIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOyBjb2xvcjog dmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1z dHJvbmcpOwp9Ci5idG4tc2VrOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOyBi b3JkZXItY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0KLmJ0bi1rbGVpbiB7IHBhZGRpbmc6 IDRweCAxMnB4OyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgZm9udC13ZWlnaHQ6IDYwMDsgYm9y ZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsgfQouYnRuLWljb24geyBkaXNwbGF5OiBpbmxp bmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA1cHg7IGxpbmUtaGVpZ2h0OiAxOyB9 Ci5idG4taWNvbjo6YmVmb3JlIHsgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IGxpbmUtaGVpZ2h0 OiAxOyB9Ci5idG4tYmVhcmJlaXRlbjo6YmVmb3JlIHsgY29udGVudDogJ+Kcjic7IH0KLmJ0bi1y aHl0aG11czo6YmVmb3JlIHsgY29udGVudDogJ+KGuyc7IH0KLmJ0bi1sb2VzY2hlbiB7IHBhZGRp bmc6IDRweCAxMnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KCi8qIFdpY2h0aWctRmVpZXJ0YWcg QmFkZ2UgKi8KLmZlaWVydGFnLXdpY2h0aWctYmFkZ2UgewogICAgZGlzcGxheTogaW5saW5lLWJs b2NrOyBwYWRkaW5nOiAycHggOHB4OyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpOyBm b250LXNpemU6IHZhcigtLWZzLXhzKTsgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGJhY2tncm91bmQ6 IHZhcigtLWZhcmJlLWZlaGxlcik7IGNvbG9yOiAjZmZmOyBsZXR0ZXItc3BhY2luZzogMC40cHg7 IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cn0KLmJ0bi1zb3J0aWVydW5nIHsKICAgIGJhY2tn cm91bmQ6IHRyYW5zcGFyZW50OyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3Ip OyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOwogICAgd2lkdGg6IDI2cHg7IGhlaWdodDog MjZweDsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnkt Y29udGVudDogY2VudGVyOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhzKTsgY3Vy c29yOiBwb2ludGVyOyBmb250LXNpemU6IHZhcigtLWZzLWxnKTsgcGFkZGluZzogMDsKICAgIHRy YW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tc3RkKTsKfQouYnRuLXNvcnRpZXJ1bmc6aG92ZXIg eyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1o ZWFkaW5nKTsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0KCi8qID09PT09IEZvcm11bGFy ZSA9PT09PSAqLwouZm9ybS1ncnVwcGUgeyBtYXJnaW4tYm90dG9tOiAxNHB4OyB9Ci5mb3JtLWdy dXBwZSBsYWJlbCB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IHZhcigtLWZzLWJhc2UpOyBm b250LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBtYXJnaW4tYm90 dG9tOiA0cHg7IH0KCi8qIFBmbGljaHRmZWxkLU1hcmtpZXJ1bmcgKFVYLUF1ZGl0IFNwcmludCAy LjEsIDIwMjYtMDUtMjkpLgogICBWb3JoZXI6IG51ciBUZXh0LSIqIiBpbSBMYWJlbCwgbGVpY2h0 IHp1IHVlYmVyc2VoZW4uIEpldHp0OgogICAtIHJvdGVzIFN0ZXJuY2hlbiBhdXRvbWF0aXNjaCB2 aWEgOjphZnRlcgogICAtIGxpbmtlciByb3RlciBCb3JkZXIgYW0gRWluZ2FiZWZlbGQKICAgLSAu ZmVsZC1mZWhsZXItS2xhc3NlIGZ1ZXIgYWt0aXZlIFZhbGlkaWVydW5ncy1IZXJ2b3JoZWJ1bmcg Ki8KLmZvcm0tZ3J1cHBlLmZvcm0tcGZsaWNodCA+IGxhYmVsOjphZnRlciB7CiAgICBjb250ZW50 OiAnIConOwogICAgY29sb3I6IHZhcigtLWZhcmJlLWZlaGxlcik7CiAgICBmb250LXdlaWdodDog NzAwOwogICAgbWFyZ2luLWxlZnQ6IDJweDsKfQouZm9ybS1ncnVwcGUuZm9ybS1wZmxpY2h0ID4g LmZvcm0taW5wdXQsCi5mb3JtLWdydXBwZS5mb3JtLXBmbGljaHQgLmZvcm0taW5wdXQgewogICAg Ym9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS1mYXJiZS1mZWhsZXIpOwogICAgcGFkZGluZy1s ZWZ0OiA2cHg7Cn0KLmZvcm0taW5wdXQuZmVsZC1mZWhsZXIgewogICAgYmFja2dyb3VuZDogcmdi YSgxNzYsIDU4LCA0NiwgMC4wOCk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWZhcmJlLWZlaGxl cik7Cn0KCi8qIExhZW5nZW4tQ291bnRlciAoUGFrZXQtQiBRdWljay1XaW4sIDIwMjYtMDUtMjkp LgogICBLbGVpbiwgcmVjaHRzYnVlbmRpZyB1bnRlciBkZW0gRWluZ2FiZWZlbGQsIGZhZXJidCBz aWNoIGJlaSBBbm5hZWhlcnVuZwogICBhbnMgTGltaXQgZ2VsYiB1bmQgYmVpIHZvbGwgcm90LiAq LwoubGFlbmdlLWNvdW50ZXIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXNpemU6IHZh cigtLWZzLXhzKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgIHRleHQtYWxpZ246 IHJpZ2h0OwogICAgbWFyZ2luLXRvcDogMnB4OwogICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRh YnVsYXItbnVtczsKfQoubGFlbmdlLWNvdW50ZXIubGFlbmdlLWNvdW50ZXItd2FybiB7IGNvbG9y OiB2YXIoLS1mYXJiZS13YXJudW5nKTsgZm9udC13ZWlnaHQ6IDYwMDsgfQoubGFlbmdlLWNvdW50 ZXIubGFlbmdlLWNvdW50ZXItdm9sbCB7IGNvbG9yOiB2YXIoLS1mYXJiZS1mZWhsZXIpOyBmb250 LXdlaWdodDogNzAwOyB9CgovKiBMYWRlLU92ZXJsYXkgKFBha2V0LUMsIDIwMjYtMDUtMjkpIOKA lCB1bml2ZXJzZWxsZXIgU3Bpbm5lciBmdWVyIEFzeW5jLQogICBPcGVyYXRpb25lbi4gV2lyZCBw ZXIgbGFkZU92ZXJsYXlaZWlnZW4oKSBpbiBkZW4gQ29udGFpbmVyIGluaml6aWVydC4gKi8KLmxh ZGUtb3ZlcmxheSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7IGxlZnQ6IDA7 IHJpZ2h0OiAwOyBib3R0b206IDA7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUs IDAuODIpOwogICAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGFs aWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZ2FwOiB2YXIo LS1zcC0zKTsKICAgIHotaW5kZXg6IHZhcigtLXotb3ZlcmxheSk7Cn0KW2RhdGEtdGhlbWU9Im5p Z2h0Il0gLmxhZGUtb3ZlcmxheSB7IGJhY2tncm91bmQ6IHJnYmEoMjEsIDI5LCAzNywgMC44OCk7 IH0KLmxhZGUtb3ZlcmxheS1zcGlubmVyIHsKICAgIHdpZHRoOiAzOHB4OyBoZWlnaHQ6IDM4cHg7 CiAgICBib3JkZXI6IDNweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXRv cC1jb2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50KTsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAg IGFuaW1hdGlvbjogbGFkZS1vdmVybGF5LXNwaW4gMC44cyBsaW5lYXIgaW5maW5pdGU7Cn0KQGtl eWZyYW1lcyBsYWRlLW92ZXJsYXktc3BpbiB7CiAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2 MGRlZyk7IH0KfQoubGFkZS1vdmVybGF5LXRleHQgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1t ZCk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOwogICAgZm9udC13ZWlnaHQ6IDYw MDsKfQouZm9ybS1pbnB1dCB7CiAgICBwYWRkaW5nOiA4cHggMTJweDsgYm9yZGVyOiAxcHggc29s aWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7 CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IGJhY2tn cm91bmQ6IHZhcigtLWJnLWlucHV0KTsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7CiAgICB0 cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXN0ZCk7Cn0KLmZvcm0taW5wdXQ6Zm9jdXMgeyBv dXRsaW5lOiBub25lOyBib3JkZXItY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGJveC1zaGFk b3c6IDAgMCAwIDNweCByZ2JhKDI2LDU4LDkyLDAuMTIpOyB9CgovKiA9PT09PSBJbmZvLUJveCA9 PT09PSAqLwouaW5mby1ib3ggewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBi b3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBwYWRkaW5nOiAx NHB4IDE4cHg7IGJvcmRlci1yYWRpdXM6IDAgNnB4IDZweCAwOyBmb250LXNpemU6IHZhcigtLWZz LW1kKTsgbGluZS1oZWlnaHQ6IDEuNjsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7 Cn0KCi8qID09PT09IFNjaGljaHRjb2RlLVZvcnNjaGF1ID09PT09ICovCi5zY2hpY2h0Y29kZS1r YXJ0ZSB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7 CiAgICBwYWRkaW5nOiA2cHggOHB4IDZweCA2cHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1 cy1tZCk7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOyBmb250LXdlaWdodDogNjAwOwogICAgbWlu LWhlaWdodDogNDJweDsKfQouc2NoaWNodGNvZGUtZmFyYmZlbGQgewogICAgbWluLXdpZHRoOiA0 NHB4OyBoZWlnaHQ6IDMwcHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IGJvcmRl cjogMXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xKTsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBh bGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGZvbnQtc2l6 ZTogdmFyKC0tZnMtYmFzZSk7IGZvbnQtd2VpZ2h0OiA3MDA7IHBhZGRpbmc6IDAgNHB4OwogICAg ZmxleC1zaHJpbms6IDA7Cn0KLnNjLWVkaXQtYnRuIHsgcGFkZGluZzogM3B4IDZweDsgZm9udC1z aXplOiB2YXIoLS1mcy1zbSk7IGZsZXgtc2hyaW5rOiAwOyB9Ci5zYy1lZGl0LWJ0bjo6YmVmb3Jl IHsgY29udGVudDogJ+Kcjic7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyB9CgovKiBTY2hpY2h0 Y29kZS1LYXJ0ZW46IEVyd2VpdGVydW5nZW4gZnVlciBBa3Rpdi1Ub2dnbGUsIFZlcndlbmR1bmdz LUJhZGdlLCBEcmFnICovCi5zY2hpY2h0Y29kZS1rYXJ0ZS5zYy1pbmFrdGl2IHsgb3BhY2l0eTog MC40NTsgZmlsdGVyOiBncmF5c2NhbGUoMC40NSk7IH0KLnNjaGljaHRjb2RlLWthcnRlLnNjLWRy YWcgeyBjdXJzb3I6IGRlZmF1bHQ7IH0KLnNjaGljaHRjb2RlLWthcnRlLnNjLWRyYWdnaW5nIHsg b3BhY2l0eTogMC4zNTsgfQouc2NoaWNodGNvZGUta2FydGUuc2MtZHJvcC1pbmRpY2F0b3IgeyBv dXRsaW5lOiAycHggZGFzaGVkIHZhcigtLWZhcmJlLXByaW1hZXIpOyBvdXRsaW5lLW9mZnNldDog LTFweDsgfQouc2MtZHJhZy1oYW5kbGUgewogICAgY3Vyc29yOiBncmFiOyBmb250LXNpemU6IDE2 cHg7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgcGFkZGluZzogMCA0cHg7CiAgICB1c2VyLXNl bGVjdDogbm9uZTsgZmxleC1zaHJpbms6IDA7Cn0KLnNjLWRyYWctaGFuZGxlOmFjdGl2ZSB7IGN1 cnNvcjogZ3JhYmJpbmc7IH0KLnNjLWFuemFobC1iYWRnZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUt YmxvY2s7IHBhZGRpbmc6IDFweCA2cHg7IGJvcmRlci1yYWRpdXM6IDhweDsKICAgIGZvbnQtc2l6 ZTogdmFyKC0tZnMteHMpOyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRl ZCk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmltYXJ5KTsgYm9yZGVyOiAxcHggc29saWQg dmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IG1hcmdpbi1s ZWZ0OiA0cHg7Cn0KLnNjLWFuemFobC1iYWRnZS5zYy1hbnphaGwtbnVsbCB7IG9wYWNpdHk6IDAu NTsgfQouc2MtdG9nZ2xlIHsKICAgIGJhY2tncm91bmQ6IG5vbmU7IGJvcmRlcjogMXB4IHNvbGlk IHZhcigtLWJvcmRlci1saWdodCk7IGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIHdpZHRoOiAyMnB4 OyBoZWlnaHQ6IDIycHg7IHBhZGRpbmc6IDA7IGxpbmUtaGVpZ2h0OiAxOyBjdXJzb3I6IHBvaW50 ZXI7CiAgICBmb250LXNpemU6IHZhcigtLWZzLW1kKTsgZmxleC1zaHJpbms6IDA7Cn0KLnNjLXRv Z2dsZS1ha3RpdiB7IGNvbG9yOiB2YXIoLS1mYXJiZS1lcmZvbGcpOyBib3JkZXItY29sb3I6IHJn YmEoMzksMTM3LDEwOSwwLjUpOyB9Ci5zYy10b2dnbGUtYWt0aXY6aG92ZXIgeyBiYWNrZ3JvdW5k OiByZ2JhKDM5LDEzNywxMDksMC4xMik7IH0KLnNjLXRvZ2dsZS1pbmFrdGl2IHsgY29sb3I6IHZh cigtLXRleHQtbXV0ZWQpOyB9Ci5zYy10b2dnbGUtaW5ha3Rpdjpob3ZlciB7IGJhY2tncm91bmQ6 IHZhcigtLWJnLXByaW1hcnkpOyBjb2xvcjogdmFyKC0tZmFyYmUtZXJmb2xnKTsgfQoKLyogPT09 PT0gR2VuZXJhdG9yID09PT09ICovCi5nZW5lcmF0b3ItZm9ybSB7IG1heC13aWR0aDogNTAwcHg7 IH0KI2dlbmVyYXRvci1lcmdlYm5pcyB7CiAgICBtYXJnaW4tdG9wOiAxNnB4OyBwYWRkaW5nOiAx NHB4IDE4cHg7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOyBmb250LXNpemU6 IHZhcigtLWZzLWxnKTsgZm9udC13ZWlnaHQ6IDYwMDsKfQouZ2VuLWVyZm9sZyB7IGJhY2tncm91 bmQ6ICNlOGY1ZTk7IGNvbG9yOiAjMmU3ZDMyOyBib3JkZXI6IDFweCBzb2xpZCAjYTVkNmE3OyB9 CltkYXRhLXRoZW1lPSJuaWdodCJdIC5nZW4tZXJmb2xnIHsgYmFja2dyb3VuZDogIzFhMzAyMDsg Y29sb3I6ICM2NmJiNmE7IGJvcmRlci1jb2xvcjogIzJlN2QzMjsgfQovKiBTdGF0dXMtQm94IGZ1 ZXIgVGVzdGRhdGVuL1Jlc2V0IChtYXJnaW4vcGFkZGluZyB3aWUgI2dlbmVyYXRvci1lcmdlYm5p cykuICovCiN0ZXN0ZGF0ZW4tZXJnZWJuaXMgeyBtYXJnaW4tdG9wOiAxNnB4OyBwYWRkaW5nOiAx NHB4IDE4cHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7IGZvbnQtc2l6ZTogdmFy KC0tZnMtbGcpOyBmb250LXdlaWdodDogNjAwOyB9Ci5nZW4taW5mbyAgIHsgYmFja2dyb3VuZDog I2UzZjJmZDsgY29sb3I6ICMxNTY1YzA7IGJvcmRlcjogMXB4IHNvbGlkICM5MGNhZjk7IH0KW2Rh dGEtdGhlbWU9Im5pZ2h0Il0gLmdlbi1pbmZvICAgeyBiYWNrZ3JvdW5kOiAjMTYyNjNhOyBjb2xv cjogIzVhOWZkYjsgYm9yZGVyLWNvbG9yOiAjMTU2NWMwOyB9Ci5nZW4tZmVobGVyIHsgYmFja2dy b3VuZDogI2ZmZWJlZTsgY29sb3I6ICNjNjI4Mjg7IGJvcmRlcjogMXB4IHNvbGlkICNlZjlhOWE7 IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLmdlbi1mZWhsZXIgeyBiYWNrZ3JvdW5kOiAjM2ExYTFh OyBjb2xvcjogI2U1NzM3MzsgYm9yZGVyLWNvbG9yOiAjYzYyODI4OyB9CgovKiBGb3J0c2Nocml0 dHMtQW5pbWF0aW9uIHdhZWhyZW5kIFJlc2V0L0R1bW15ZGF0ZW4gKHVuYmVzdGltbXQg4oCUIGRl ciBTZXJ2ZXIKICAgbGllZmVydCBrZWluZSBad2lzY2hlbnN0YWVuZGUsIGRhaGVyIFNwaW5uZXIg KyBlbmRsb3MgbGF1ZmVuZGVyIEJhbGtlbikuICovCi5nZW4tcHJvZ3Jlc3Mtd3JhcCB7CiAgICBt YXJnaW4tdG9wOiAxNnB4OyBwYWRkaW5nOiAxNHB4IDE4cHg7IGJvcmRlci1yYWRpdXM6IHZhcigt LXJhZGl1cy1tZCk7CiAgICBmb250LXNpemU6IHZhcigtLWZzLWxnKTsgZm9udC13ZWlnaHQ6IDYw MDsKICAgIGJhY2tncm91bmQ6ICNlM2YyZmQ7IGNvbG9yOiAjMTU2NWMwOyBib3JkZXI6IDFweCBz b2xpZCAjOTBjYWY5Owp9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5nZW4tcHJvZ3Jlc3Mtd3JhcCB7 IGJhY2tncm91bmQ6ICMxNjI2M2E7IGNvbG9yOiAjNWE5ZmRiOyBib3JkZXItY29sb3I6ICMxNTY1 YzA7IH0KLmdlbi1wcm9ncmVzcy1sYWJlbCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBj ZW50ZXI7IGdhcDogMTBweDsgfQouZ2VuLXByb2dyZXNzLWxhYmVsOjpiZWZvcmUgewogICAgY29u dGVudDogIiI7IGZsZXg6IG5vbmU7IHdpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7IGJvcmRlci1y YWRpdXM6IDUwJTsKICAgIGJvcmRlcjogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjsgYm9yZGVyLXRv cC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBhbmltYXRpb246IGdlbi1zcGluIDAuN3MgbGluZWFy IGluZmluaXRlOwp9Ci5nZW4tcHJvZ3Jlc3MtYmFyIHsKICAgIG1hcmdpbi10b3A6IDEwcHg7IGhl aWdodDogNnB4OyBib3JkZXItcmFkaXVzOiAzcHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxLDEw MSwxOTIsMC4xOCk7IG92ZXJmbG93OiBoaWRkZW47IHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouZ2Vu LXByb2dyZXNzLWJhciA+IHNwYW4gewogICAgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGJv dHRvbTogMDsgd2lkdGg6IDQwJTsgYm9yZGVyLXJhZGl1czogM3B4OwogICAgYmFja2dyb3VuZDog Y3VycmVudENvbG9yOyBhbmltYXRpb246IGdlbi1pbmRldGVybWluYXRlIDEuMXMgZWFzZS1pbi1v dXQgaW5maW5pdGU7Cn0KQGtleWZyYW1lcyBnZW4tc3BpbiB7IHRvIHsgdHJhbnNmb3JtOiByb3Rh dGUoMzYwZGVnKTsgfSB9CkBrZXlmcmFtZXMgZ2VuLWluZGV0ZXJtaW5hdGUgeyAwJSB7IGxlZnQ6 IC00MCU7IH0gMTAwJSB7IGxlZnQ6IDEwMCU7IH0gfQpAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1t b3Rpb246IHJlZHVjZSkgewogICAgLmdlbi1wcm9ncmVzcy1sYWJlbDo6YmVmb3JlIHsgYW5pbWF0 aW9uLWR1cmF0aW9uOiAxLjZzOyB9CiAgICAuZ2VuLXByb2dyZXNzLWJhciA+IHNwYW4geyBhbmlt YXRpb246IG5vbmU7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBvcGFjaXR5OiAwLjY7IH0KfQoKLyog PT09PT0gU3RhdGlzdGlrID09PT09ICovCi5sYXlvdXQtc3RhdGlzdGlreyBvdmVyZmxvdy15OiBh dXRvOyBwYWRkaW5nOiAyMHB4IDI0cHg7IGZsZXg6IDE7IH0KCi8qIEtQSS1LYWNoZWxuICovCi5z dGF0cy1rcGlzIHsKICAgIGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVw ZWF0KGF1dG8tZml0LCBtaW5tYXgoMTQwcHgsIDFmcikpOwogICAgZ2FwOiAxMnB4OyBtYXJnaW4t Ym90dG9tOiAyMHB4Owp9Ci5zdGF0cy1rcGkgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2Fy ZCk7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7IHBhZGRpbmc6IDE2cHg7CiAgICBi b3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyB0ZXh0LWFsaWduOiBjZW50ZXI7 CiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggdmFyKC0tc2hhZG93LWxpZ2h0KTsgdHJhbnNpdGlv bjogdHJhbnNmb3JtIDAuMTVzIGVhc2U7Cn0KLnN0YXRzLWtwaTpob3ZlciB7IHRyYW5zZm9ybTog dHJhbnNsYXRlWSgtMnB4KTsgYm94LXNoYWRvdzogMCA0cHggMTJweCB2YXIoLS1zaGFkb3ctbWVk aXVtKTsgfQouc3RhdHMta3BpLXdlcnQgeyBmb250LXNpemU6IDI4cHg7IGZvbnQtd2VpZ2h0OiA4 MDA7IGxpbmUtaGVpZ2h0OiAxLjE7IGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7 IH0KLnN0YXRzLWtwaS1sYWJlbCB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFy KC0tdGV4dC1tdXRlZCk7IG1hcmdpbi10b3A6IDRweDsgZm9udC13ZWlnaHQ6IDYwMDsgdGV4dC10 cmFuc2Zvcm06IHVwcGVyY2FzZTsgbGV0dGVyLXNwYWNpbmc6IDAuNXB4OyB9CgovKiBEYXNoYm9h cmQtR3JpZCAoQWx0IOKAlCBibGVpYnQgZnVlciBldnRsLiBSZXN0bnV0enVuZywgU3RhdGlzdGlr LVRhYiBudXR6dCBqZXR6dCAuc3RhdHMtZ3JpZCkgKi8KLnN0YXRzLWRhc2hib2FyZCB7IGRpc3Bs YXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsgZ2FwOiAxNnB4OyBtYXJn aW4tYm90dG9tOiAxNnB4OyB9CkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkgeyAuc3RhdHMtZGFz aGJvYXJkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH0gfQoKLyogPT09PT0gRWluaGVp dGxpY2hlcyA2LVNwYWx0ZW4tUmFzdGVyIChrb25maWd1cmllcmJhciB2aWEgc3RhdGlzdGlrTGF5 b3V0KSA9PT09PQogICBKZWRlIEthY2hlbCBiZWxlZ3Qgc3BhbiA2ICh2b2xsLzE6MSksIDMgKGhh bGIvMToyKSBvZGVyIDIgKGRyaXR0ZWwvMTozKS4gRGllCiAgIGtvbmtyZXRlIEJyZWl0ZSBzZXR6 dCBzdGF0aXN0aWsuanMgKGxheW91dEFud2VuZGVuKSBwZXIgaW5saW5lIGdyaWQtY29sdW1uLiAq Lwouc3RhdHMtZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6 IHJlcGVhdCg2LCAxZnIpOwogICAgZ2FwOiAxNnB4OyBtYXJnaW4tYm90dG9tOiAxNnB4OyBhbGln bi1pdGVtczogc3RhcnQ7Cn0KLyogVm9tIFNVLUxheW91dCBhdXNnZWJsZW5kZXRlIEthY2hlbCAo cmVjaHRlYmFzaWVydGVzIGRpc3BsYXk6bm9uZSBibGVpYnQgZGF2b24KICAgdW5iZXJ1ZWhydCDi gJQgYmVpZGVzIHZlcnN0ZWNrdCB1bmFiaGFlbmdpZyB2b25laW5hbmRlcikuICovCi5zdGF0cy1w YW5lbC50aWxlLXZlcnN0ZWNrdCB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQpAbWVkaWEg KG1heC13aWR0aDogOTAwcHgpIHsKICAgIC5zdGF0cy1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1 bW5zOiAxZnI7IH0KICAgIC5zdGF0cy1ncmlkID4gLnN0YXRzLXBhbmVsIHsgZ3JpZC1jb2x1bW46 IDEgLyAtMSAhaW1wb3J0YW50OyB9Cn0KCi8qIEJhdWthc3Rlbi1MZWlzdGUgKEJ1aWxkZXItQnV0 dG9uIGltIFN0YXRpc3Rpay1Lb3BmKSAqLwouc3RhdHMtYmF1a2FzdGVuLWxlaXN0ZSB7IGRpc3Bs YXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTJweDsgbWFyZ2luLWJvdHRvbTog MTZweDsgZmxleC13cmFwOiB3cmFwOyB9Ci5zdGF0cy1iYXVrYXN0ZW4taGlud2VpcyB7IGZvbnQt c2l6ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH0KCi8qIEJhdWth c3Rlbi1LYWNoZWw6IEJhZGdlICsgV2VyLUxhYmVsIGltIEtvcGYsIFJhbmctTnVtbWVyIGltIEJh bGtlbiAqLwouc3RhdHMtYmstYmFkZ2UgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250 LXNpemU6IDEwcHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGxldHRlci1zcGFjaW5nOiAuMDNlbTsKICAg IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHBhZGRpbmc6IDFweCA2cHg7IGJvcmRlci1yYWRp dXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmltYXJ5KTsg Y29sb3I6IHZhcigtLXRleHQtb24tcHJpbWFyeSwgI2ZmZik7IHZlcnRpY2FsLWFsaWduOiBtaWRk bGU7Cn0KLnN0YXRzLWJrLXdlciB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFy KC0tdGV4dC1zZWNvbmRhcnkpOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9Ci5zdGF0cy1iay1yYW5n IHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDEuNmVtOyBjb2xvcjogdmFyKC0t dGV4dC1tdXRlZCk7IGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7IH0KCi8qID09 PT09IEJ1aWxkZXItTW9kYWwgPT09PT0gKi8KLmJrLWJ1aWxkZXIgeyBkaXNwbGF5OiBncmlkOyBn cmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgyMjBweCwgMWZyKSBtaW5tYXgoMjYwcHgsIDEu NGZyKTsgZ2FwOiAxOHB4OyB9CkBtZWRpYSAobWF4LXdpZHRoOiA3MjBweCkgeyAuYmstYnVpbGRl ciB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9IH0KLmJrLWZvcm0geyBkaXNwbGF5OiBm bGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDEwcHg7IH0KLmJrLWZlbGQgeyBkaXNw bGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDRweDsgZm9udC1zaXplOiB2 YXIoLS1mcy1zbSk7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFy eSk7IH0KLmJrLWZlbGQgLmZvcm0taW5wdXQgeyBmb250LXdlaWdodDogNDAwOyB9Ci5iay12b3Jz Y2hhdSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IGJvcmRlcjogMXB4IHNv bGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMt bWQpOyBwYWRkaW5nOiAxMnB4IDE0cHg7IG1pbi13aWR0aDogMDsKfQouYmstdm9yc2NoYXUtdGl0 ZWwgeyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZh cigtLXRleHQtaGVhZGluZyk7IG1hcmdpbi1ib3R0b206IDhweDsgfQouYmstdm9yc2NoYXUgLnN0 YXRzLWNoYXJ0LWFyZWEgeyBtYXgtaGVpZ2h0OiAzMjBweDsgfQouYmstbGlzdGUgeyBtYXJnaW4t dG9wOiAxOHB4OyBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgcGFk ZGluZy10b3A6IDEycHg7IH0KLmJrLWxpc3RlLXRpdGVsIHsgZm9udC1zaXplOiB2YXIoLS1mcy1z bSk7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBtYXJnaW4t Ym90dG9tOiA4cHg7IH0KLmJrLWxpc3RlLWxlZXIgeyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsg Y29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9Ci5iay1saXN0ZS1pdGVtcyB7IGRpc3BsYXk6IGZs ZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogNnB4OyB9Ci5iay1saXN0ZS1pdGVtIHsg ZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OyBwYWRkaW5nOiA2 cHggOHB4OyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyBib3JkZXItcmFk aXVzOiB2YXIoLS1yYWRpdXMtbWQpOyB9Ci5iay1saXN0ZS1uYW1lIHsgZm9udC13ZWlnaHQ6IDYw MDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0KLmJrLWxpc3RlLW1ldGEgeyBmbGV4OiAx OyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9Cgov KiA9PT09PSBBZG1pbjogU3RhdGlzdGlrLUxheW91dC1SYXN0ZXIgKFNVLW9ubHkpID09PT09ICov Ci5zbC1sZWdlbmRlIHsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGNvbG9yOiB2YXIoLS10ZXh0 LXNlY29uZGFyeSk7IG1hcmdpbi1ib3R0b206IDE0cHg7IH0KLnNsLXJhc3RlciB7IG1hcmdpbi1i b3R0b206IDA7IH0KLnNsLXRpbGUgewogICAgZ3JpZC1jb2x1bW46IHNwYW4gNjsgYmFja2dyb3Vu ZDogdmFyKC0tYmctY2FyZCk7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7 CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOyBwYWRkaW5nOiAxMHB4IDEycHg7 IGN1cnNvcjogcG9pbnRlcjsgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICBib3gtc2hhZG93OiAwIDFw eCAzcHggdmFyKC0tc2hhZG93LWxpZ2h0KTsgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIC4xMnMg ZWFzZSwgYm94LXNoYWRvdyAuMTJzIGVhc2UsIG9wYWNpdHkgLjEycyBlYXNlOwogICAgbWluLXdp ZHRoOiAwOwp9Ci5zbC10aWxlOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1iZy1wcmltYXJ5 KTsgYm94LXNoYWRvdzogMCAycHggNnB4IHZhcigtLXNoYWRvdy1tZWRpdW0pOyB9Ci5zbC10aWxl LWtvcGYgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRl bnQ6IHNwYWNlLWJldHdlZW47IGdhcDogOHB4OyBtYXJnaW4tYm90dG9tOiA2cHg7IH0KLnNsLWJh ZGdlIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMHB4OyBmb250LXdl aWdodDogNzAwOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBsZXR0ZXItc3BhY2luZzogLjAz ZW07CiAgICBwYWRkaW5nOiAxcHggNnB4OyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20p OyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmltYXJ5KTsgY29sb3I6IHZhcigtLXRleHQtb24tcHJp bWFyeSwgI2ZmZik7Cn0KLnNsLWJhZGdlLWZlc3QgeyBiYWNrZ3JvdW5kOiB2YXIoLS10ZXh0LXNl Y29uZGFyeSk7IH0KLnNsLWF1Z2UgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IGJv cmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IGN1cnNvcjogcG9pbnRlcjsgZm9u dC1zaXplOiAxMXB4OyBmb250LXdlaWdodDogNjAwOyBsaW5lLWhlaWdodDogMS4yOyBwYWRkaW5n OiAycHggOHB4OyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOyBjb2xvcjogdmFyKC0t dGV4dC1zZWNvbmRhcnkpOyB9Ci5zbC1hdWdlOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1i Zy1wcmltYXJ5KTsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0KLnNsLXRpbGUtdGl0ZWwg eyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgZm9udC1zaXpl OiB2YXIoLS1mcy1tZCk7IG92ZXJmbG93OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lz OyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9Ci5zbC10aWxlLWJyZWl0ZSB7IGZvbnQtc2l6ZTogdmFy KC0tZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IG1hcmdpbi10b3A6IDJweDsgfQou c2wtbWluIHsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9Ci5zbC10aWxlLnNsLXVuc2ljaHRi YXIgeyBvcGFjaXR5OiAuNTsgfQouc2wtdGlsZS5zbC1kcmFnZ2luZyB7IG9wYWNpdHk6IC40OyB9 Ci5zbC10aWxlLnNsLWRyb3AtemllbCB7IGJvcmRlci1jb2xvcjogdmFyKC0tYmctcHJpbWFyeSk7 IGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1iZy1wcmltYXJ5KSBpbnNldDsgfQpAbWVkaWEg KG1heC13aWR0aDogOTAwcHgpIHsgLnNsLXRpbGUgeyBncmlkLWNvbHVtbjogMSAvIC0xICFpbXBv cnRhbnQ7IH0gfQoKLyogPT09PT0gTmF0aXZlIFNWRy1EaWFncmFtbWUgKHN0YXRpc3Rpa19jaGFy dHMuanMpID09PT09ICovCi5zdGF0LXN2ZyB7IGZvbnQtZmFtaWx5OiBpbmhlcml0OyB9Ci5zdGF0 LWF4IHsgZmlsbDogdmFyKC0tdGV4dC1tdXRlZCk7IGZvbnQtc2l6ZTogMTFweDsgfQouc3RhdC1h eC1uYW1lIHsgZmlsbDogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBmb250LXNpemU6IDExcHg7IH0K LnN0YXQtYXgtbGVnIHsgZmlsbDogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBmb250LXNpemU6IDEy cHg7IH0KLnN0YXQtYXgtdGl0ZWwgeyBmaWxsOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IGZvbnQt c2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDYwMDsgfQouc3RhdC1oZWF0LXdlcnQgeyBmb250LXNp emU6IDExcHg7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KLnN0YXQtZG9udXQtbWl0dGUgeyBmaWxsOiB2 YXIoLS10ZXh0LWhlYWRpbmcpOyBmb250LXNpemU6IDIycHg7IGZvbnQtd2VpZ2h0OiA4MDA7IH0K LnN0YXQtbGVnZW5kZSB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgZ2FwOiA2cHgg MTRweDsgbWFyZ2luLXRvcDogOHB4OyB9Ci5zdGF0LWxlZy1pdGVtIHsgZGlzcGxheTogaW5saW5l LWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNXB4OyBmb250LXNpemU6IHZhcigtLWZz LXNtKTsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgfQouc3RhdC1sZWctYm94IHsgd2lk dGg6IDEycHg7IGhlaWdodDogMTJweDsgYm9yZGVyLXJhZGl1czogM3B4OyBkaXNwbGF5OiBpbmxp bmUtYmxvY2s7IH0KLnN0YXQtcGl2b3QgdGgsIC5zdGF0LXBpdm90IHRkIHsgd2hpdGUtc3BhY2U6 IG5vd3JhcDsgfQouc3RhdC1rcGktd3JhcCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9u OiBjb2x1bW47IGdhcDogMTRweDsgfQouc3RhdC1rcGktZ3Jvc3MgeyB0ZXh0LWFsaWduOiBjZW50 ZXI7IHBhZGRpbmc6IDhweCAwOyB9Ci5zdGF0LWtwaS1ncm9zcy13ZXJ0IHsgZm9udC1zaXplOiA0 MHB4OyBmb250LXdlaWdodDogODAwOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgbGluZS1o ZWlnaHQ6IDE7IH0KLnN0YXQta3BpLWdyb3NzLWxhYmVsIHsgZm9udC1zaXplOiB2YXIoLS1mcy1z bSk7IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IG1hcmdpbi10b3A6IDRweDsgfQouc3Rh dC1rcGktbWluaSB7IG1hcmdpbi1ib3R0b206IDA7IH0KCi8qID09PT09IFN0YXRpc3Rpay1CdWls ZGVyIChhZG1pbl9zdGF0aXN0aWtfYnVpbGRlci5qcykgPT09PT0gKi8KLmJsZC1ncmlkIHsgZGlz cGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMjgwcHgsIDM2MHB4KSAx ZnI7IGdhcDogMjBweDsgYWxpZ24taXRlbXM6IHN0YXJ0OyB9CkBtZWRpYSAobWF4LXdpZHRoOiA5 ODBweCkgeyAuYmxkLWdyaWQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgfSB9CgovKiBF eGNlbC1FeHBvcnQtRm9ybXVsYXIgKEFkbWluLVRhYiDigJ5FeGNlbC1FeHBvcnQiKSDigJQgc2No bWFsZSBTcGFsdGUsIG51dHp0CiAgIGFuc29uc3RlbiBkaWUgLmJsZC0qLUZlbGRzdGlsZSBtaXQu ICovCi5leHAtZm9ybSB7IG1heC13aWR0aDogNjgwcHg7IH0KLmV4cC1mb3JtIC5ibGQtY2hpcHMg eyBtYXgtaGVpZ2h0OiAyMjBweDsgb3ZlcmZsb3cteTogYXV0bzsgfQouYmxkLXNwYWx0ZS1mb3Jt IHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxMnB4OyB9Ci5i bGQtZmVsZCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogNXB4 OyB9Ci5ibGQtZmVsZC10aXRlbCB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBmb250LXdlaWdo dDogNzAwOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB9Ci5ibGQtZmVsZC0yIHsgZGlz cGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOyBnYXA6IDEwcHg7IH0K LmJsZC1taW5pIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA0 cHg7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkp OyB9Ci5ibGQtc2VrdGlvbiB7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7 IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7IHBhZGRpbmc6IDRweCAxMnB4IDEycHg7 IH0KLmJsZC1zZWt0aW9uID4gc3VtbWFyeSB7IGN1cnNvcjogcG9pbnRlcjsgZm9udC13ZWlnaHQ6 IDcwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IHBhZGRpbmc6IDhweCAwOyB1c2VyLXNl bGVjdDogbm9uZTsgfQouYmxkLXNla3Rpb25bb3Blbl0gPiBzdW1tYXJ5IHsgYm9yZGVyLWJvdHRv bTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IG1hcmdpbi1ib3R0b206IDEwcHg7IH0K LmJsZC1zZWt0aW9uIC5ibGQtZmVsZCB7IG1hcmdpbi10b3A6IDEwcHg7IH0KLmJsZC1jaGlwcyB7 IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgZ2FwOiA4cHg7IH0KLmJsZC1jaGlwIHsg ZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHBhZGRpbmc6IDVweCAx MnB4OyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOyBib3JkZXItcmFkaXVz OiB2YXIoLS1yYWRpdXMtc20pOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGNvbG9yOiB2 YXIoLS10ZXh0LXNlY29uZGFyeSk7IGN1cnNvcjogcG9pbnRlcjsgdXNlci1zZWxlY3Q6IG5vbmU7 IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOyBsaW5lLWhlaWdodDogMS4zOyB9Ci5ibGQtY2hp cCBpbnB1dCB7IGRpc3BsYXk6IG5vbmU7IH0KLmJsZC1jaGlwLmFuIHsgYmFja2dyb3VuZDogdmFy KC0tYmctcHJpbWFyeSk7IGNvbG9yOiB2YXIoLS10ZXh0LW9uLXByaW1hcnksICNmZmYpOyBib3Jk ZXItY29sb3I6IHZhcigtLWJnLXByaW1hcnkpOyB9Ci5ibGQtdG9nZ2xlcyB7IGRpc3BsYXk6IGZs ZXg7IGZsZXgtd3JhcDogd3JhcDsgZ2FwOiAxNHB4OyBtYXJnaW4tdG9wOiAxMHB4OyB9Ci5ibGQt dG9nZ2xlIHsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29u ZGFyeSk7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDZw eDsgY3Vyc29yOiBwb2ludGVyOyB9Ci5ibGQtcGVycy1oaW53ZWlzIHsgZm9udC1zaXplOiAxMXB4 OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IG1hcmdpbjogMCAwIDEwcHggMDsgfQouYmxkLXBl cnMtZ3JwIHsgbWFyZ2luLWJvdHRvbTogMTJweDsgfQouYmxkLXBlcnMtZ3JwLWtvcGYgeyBkaXNw bGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJl dHdlZW47IGdhcDogOHB4OyBtYXJnaW4tYm90dG9tOiA2cHg7IH0KLmJsZC1wZXJzLWdycC1rb3Bm ID4gc3BhbiB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBmb250LXdlaWdodDogNzAwOyBjb2xv cjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQouYmxkLXBlcnMtemFobCB7IGNvbG9yOiB2YXIoLS10 ZXh0LW11dGVkKTsgZm9udC13ZWlnaHQ6IDQwMDsgfQouYmxkLXNwYWx0ZS1hdXMgeyBkaXNwbGF5 OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDE0cHg7IG1pbi13aWR0aDogMDsg fQouYmxkLWFrdGlvbmVuIHsgZGlzcGxheTogZmxleDsgZ2FwOiAxMHB4OyBmbGV4LXdyYXA6IHdy YXA7IH0KLmJsZC1lcmdlYm5pcyB7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdo dCk7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7IGJhY2tncm91bmQ6IHZhcigtLWJn LWNhcmQpOyBwYWRkaW5nOiAxNnB4IDE4cHg7IG1pbi1oZWlnaHQ6IDIwMHB4OyBtaW4td2lkdGg6 IDA7IH0KLmJsZC1lcmdlYm5pcy1oaW50IHsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBmb250 LXNpemU6IHZhcigtLWZzLXNtKTsgfQouYmxkLWVyZ2VibmlzLXRpdGVsIHsgZm9udC13ZWlnaHQ6 IDcwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IG1hcmdpbi1ib3R0b206IDEwcHg7IH0K LmJsZC1lcmdlYm5pcy1jaGFydCB7IG92ZXJmbG93LXg6IGF1dG87IH0KLmJsZC1saXN0ZSB7IG1h cmdpbi10b3A6IDIycHg7IGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQp OyBwYWRkaW5nLXRvcDogMTRweDsgfQouYmxkLWxpc3RlLXRpdGVsIHsgZm9udC13ZWlnaHQ6IDcw MDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IG1hcmdpbi1ib3R0b206IDEwcHg7IH0KLmJs ZC1saXN0ZS1sZWVyIHsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGNvbG9yOiB2YXIoLS10ZXh0 LW11dGVkKTsgfQouYmxkLWxpc3RlLWl0ZW1zIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rp b246IGNvbHVtbjsgZ2FwOiA2cHg7IH0KLmJsZC1saXN0ZS1pdGVtIHsgZGlzcGxheTogZmxleDsg YWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OyBwYWRkaW5nOiA3cHggMTBweDsgYm9yZGVy OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFk aXVzLW1kKTsgfQouYmxkLWxpc3RlLWl0ZW0uYWt0aXYgeyBib3JkZXItY29sb3I6IHZhcigtLWJn LXByaW1hcnkpOyBib3gtc2hhZG93OiAwIDAgMCAxcHggdmFyKC0tYmctcHJpbWFyeSkgaW5zZXQ7 IH0KLmJsZC1saXN0ZS1uYW1lIHsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLXRleHQt aGVhZGluZyk7IH0KLmJsZC1saXN0ZS10eXAgeyBmbGV4OiAxOyBmb250LXNpemU6IHZhcigtLWZz LXNtKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9CgovKiBMaXZlLUZsdXNzZGlhZ3JhbW0g ZGVyIEJ1aWxkZXItTG9naWsgKi8KLmJsZC1mbHVzcyB7IGJvcmRlcjogMXB4IGRhc2hlZCB2YXIo LS1ib3JkZXItY29sb3IpOyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOyBwYWRkaW5n OiAxMHB4IDEycHg7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgfQouZmx1c3MtdGl0 ZWwgeyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZh cigtLXRleHQtc2Vjb25kYXJ5KTsgbWFyZ2luLWJvdHRvbTogOHB4OyB9Ci5mbHVzcy1rZXR0ZSB7 IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBzdHJldGNoOyBnYXA6IDZweDsgZmxleC13cmFw OiB3cmFwOyB9Ci5mbHVzcy1zdGF0aW9uIHsgZmxleDogMSAxIDExMHB4OyBtaW4td2lkdGg6IDEw MHB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0t Ym9yZGVyLWxpZ2h0KTsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsgcGFkZGluZzog OHB4IDEwcHg7IH0KLmZsdXNzLWljIHsgZm9udC1zaXplOiAxOHB4OyBsaW5lLWhlaWdodDogMTsg fQouZmx1c3MtdCB7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcp OyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgbWFyZ2luLXRvcDogNHB4OyB9Ci5mbHVzcy1zIHsg Zm9udC1zaXplOiAxMXB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IG1hcmdpbi10b3A6IDJw eDsgd29yZC1icmVhazogYnJlYWstd29yZDsgfQouZmx1c3MtcGZlaWwgeyBhbGlnbi1zZWxmOiBj ZW50ZXI7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgZm9udC13ZWlnaHQ6IDcwMDsgfQoKLyog PT09PT0gUmVjaHRlICYgU2ljaHRiYXJrZWl0OiBSb2xsZW4gYWxzIGVpbmdla2xhcHB0ZSBVbnRl cnNlaXRlbiA9PT09PSAqLwoucmVjaHRlLXJvbGxlIHsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0t Ym9yZGVyLWxpZ2h0KTsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsgbWFyZ2luLWJv dHRvbTogMTJweDsgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7IH0KLnJlY2h0ZS1yb2xsZSA+ IHN1bW1hcnkgewogICAgbGlzdC1zdHlsZTogbm9uZTsgY3Vyc29yOiBwb2ludGVyOyB1c2VyLXNl bGVjdDogbm9uZTsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDog MTJweDsgcGFkZGluZzogMTRweCAxNnB4Owp9Ci5yZWNodGUtcm9sbGUgPiBzdW1tYXJ5Ojotd2Vi a2l0LWRldGFpbHMtbWFya2VyIHsgZGlzcGxheTogbm9uZTsgfQoucmVjaHRlLXJvbGxlIC5yZWNo dGUtY2FyZC1pY29uIHsgZm9udC1zaXplOiAyMHB4OyBmbGV4LXNocmluazogMDsgfQoucmVjaHRl LXJvbGxlLXRpdGVsIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2Fw OiAycHg7IGZsZXg6IDE7IG1pbi13aWR0aDogMDsgfQoucmVjaHRlLXJvbGxlLXRpdGVsID4gc3Ry b25nIHsgZm9udC1zaXplOiB2YXIoLS1mcy1sZyk7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcp OyB9Ci5yZWNodGUtcm9sbGUtdGl0ZWwgLnJlY2h0ZS1jYXJkLXN1YiB7IGZvbnQtc2l6ZTogdmFy KC0tZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBtYXJnaW46IDA7IH0KLnJl Y2h0ZS1yb2xsZS1jaGV2IHsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBmb250LXdlaWdodDog NzAwOyB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjE1cyBlYXNlOyBmbGV4LXNocmluazogMDsgfQou cmVjaHRlLXJvbGxlW29wZW5dID4gc3VtbWFyeSAucmVjaHRlLXJvbGxlLWNoZXYgeyB0cmFuc2Zv cm06IHJvdGF0ZSg5MGRlZyk7IH0KLnJlY2h0ZS1yb2xsZVtvcGVuXSA+IHN1bW1hcnkgeyBib3Jk ZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgfQoucmVjaHRlLXJvbGxl LWJvZHkgeyBwYWRkaW5nOiAxNHB4IDE2cHg7IH0KLnJlY2h0ZS1yb2xsZS1ha3Rpb24geyBkaXNw bGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyBtYXJnaW4tYm90dG9tOiAxMnB4 OyB9CgovKiA9PT09PSBTdGFuZGFyZHJlY2h0ZS1UYWIgPT09PT0gKi8KLnNyLWtvbmZpZywgLnNy LXp1c2F0eiB7IG1hcmdpbi1ib3R0b206IDI0cHg7IH0KLnNyLWtvbmZpZyBoMywgLnNyLXp1c2F0 eiBoMyB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbGcpOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5n KTsgbWFyZ2luOiAwIDAgMTRweCAwOyB9Ci5zci1rb25maWcgLmJsZC1mZWxkIHsgbWFyZ2luLWJv dHRvbTogMTZweDsgfQouc3Ita29uZmlnIC5ibGQtZmVsZC10aXRlbCB7IG1hcmdpbi1ib3R0b206 IDJweDsgfQouc3Ita29uZmlnIC5yZWNodGUtY2FyZC1mdXNzIHsgbWFyZ2luLXRvcDogMTZweDsg fQouc3ItaGlud2VpcyB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4 dC1tdXRlZCk7IG1hcmdpbi1sZWZ0OiAxMnB4OyB9Ci5zci16dXNhdHotc3ViIHsgZm9udC1zaXpl OiB2YXIoLS1mcy1zbSk7IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IG1hcmdpbjogMCAw IDEycHggMDsgfQouc3ItenVzYXR6LWl0ZW1zIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rp b246IGNvbHVtbjsgZ2FwOiAxMHB4OyB9Ci5zci16dXNhdHotaXRlbSB7IGJvcmRlcjogMXB4IHNv bGlkIHZhcigtLWJvcmRlci1saWdodCk7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7 IHBhZGRpbmc6IDEwcHggMTJweDsgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7IH0KLnNyLXp1 c2F0ei1rb3BmIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4 OyB9Ci5zci16dXNhdHotbmFtZSB7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS10ZXh0 LWhlYWRpbmcpOyB9Ci5zci16dXNhdHotbWV0YSB7IGZsZXg6IDE7IGZvbnQtc2l6ZTogdmFyKC0t ZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH0KLnNyLXp1c2F0ei1yZWNodGUgeyBk aXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7IGdhcDogOHB4OyBtYXJnaW4tdG9wOiAxMHB4 OyB9Ci5zci10YWcgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTFweDsgcGFk ZGluZzogNHB4IDlweDsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsgYmFja2dyb3Vu ZDogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGln aHQpOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBsaW5lLWhlaWdodDogMS4zOyB9Cgou c3RhdHMtcGFuZWwgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7IGJvcmRlci1yYWRp dXM6IHZhcigtLXJhZGl1cy1sZyk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIt bGlnaHQpOyBib3gtc2hhZG93OiAwIDFweCA0cHggdmFyKC0tc2hhZG93LWxpZ2h0KTsKICAgIHBh ZGRpbmc6IDE2cHggMjBweDsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsK ICAgIG1pbi1oZWlnaHQ6IDA7IG1pbi13aWR0aDogMDsgICAvKiBtaW4td2lkdGg6MCBlc3Nlbnpp ZWxsLCBzb25zdCBzcHJlbmd0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJyZWl0ZXIgSW5oYWx0ICh6LkIuIEhlYXRtYXAtVGFiZWxsZSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGllIEdyaWQtU3BhbHRlbi1CcmVpdGUuICovCiAgICBwb3Np dGlvbjogcmVsYXRpdmU7ICAvKiBBbmtlciBmdWVyIGRlbiBHbG93LU92ZXJsYXkgKDo6YWZ0ZXIp ICovCn0KLnN0YXRzLXBhbmVsLWtvcGYgewogICAgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250 ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyOwogICAgbWFyZ2luLWJvdHRv bTogMTJweDsgZmxleC1zaHJpbms6IDA7Cn0KLnN0YXRzLXBhbmVsLWtvcGYgaDMgeyBmb250LXNp emU6IHZhcigtLWZzLWxnKTsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXRleHQtaGVh ZGluZyk7IG1hcmdpbjogMDsgfQouc3RhdHMtY2hhcnQtYXJlYSB7IGZsZXg6IDE7IG1pbi1oZWln aHQ6IDA7IG92ZXJmbG93LXk6IGF1dG87IG1heC1oZWlnaHQ6IDQyMHB4OyB9CgovKiBLbGFwcGJh cmtlaXQgcHJvIFBhbmVsIOKAlCBLbGljayBhdWYgZGVuIEtvcGYgenUvYXVmLCBEZWZhdWx0OiBh dWZnZWtsYXBwdC4KICAgVmVyc3RlY2tlbiBhbGxlcyBpbSBQYW5lbCBhdXNzZXIgZGVtIEtvcGYs IHdlbm4gLnp1Z2VrbGFwcHQgZ2VzZXR6dCBpc3QuICovCi5zdGF0cy1wYW5lbC1rb3BmIHsgY3Vy c29yOiBwb2ludGVyOyB1c2VyLXNlbGVjdDogbm9uZTsgfQouc3RhdHMtc3Vic2VrdGlvbi1rb3Bm IHsgY3Vyc29yOiBwb2ludGVyOyB1c2VyLXNlbGVjdDogbm9uZTsgfQouc3RhdHMtc3Vic2VrdGlv bi10b2dnbGUgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdpZHRoOiAxMnB4OyBjb2xvcjogdmFy KC0tdGV4dC1tdXRlZCk7IGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20p OyB9Ci5zdGF0cy10ZWFtLWJhbGtlbi56dWdla2xhcHB0IHsgZGlzcGxheTogbm9uZTsgfQouc3Rh dHMtcGFuZWwtdG9nZ2xlIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgd2lkdGg6IDE0cHg7 IG1hcmdpbi1yaWdodDogNnB4OwogICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBmb250LXdl aWdodDogNzAwOyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsKICAgIHRyYW5zaXRpb246IHRyYW5z Zm9ybSAwLjE1cyBlYXNlOwp9Ci5zdGF0cy1wYW5lbC56dWdla2xhcHB0ID4gKjpub3QoLnN0YXRz LXBhbmVsLWtvcGYpIHsgZGlzcGxheTogbm9uZTsgfQouc3RhdHMtcGFuZWwuenVnZWtsYXBwdCAu c3RhdHMtcGFuZWwta29wZiB7IG1hcmdpbi1ib3R0b206IDA7IH0KCi8qID09PT09IFJlbmRlci1Q aXBlbGluZTogU2tlbGV0b24tSGludCArIEdsb3cgPT09PT0gKi8KLyogU2tlbGV0b24tSGlud2Vp cyBwcm8gUGFuZWwgd2FlaHJlbmQgZGVzIHNlcXVlbnRpZWxsZW4gTGFkZW5zLiBEZXV0bGljaAog ICBzaWNodGJhcmVyIFRleHQgbWl0IHB1bHNpZXJlbmRlciBBbmltYXRpb24sIGRhbWl0IGRlciBV c2VyIHdhZWhyZW5kCiAgIGRlciBnZXNhbXRlbiBQaXBlbGluZSBrbGFyIGVya2VubnQgImhpZXIg cGFzc2llcnQgd2FzIi4gV2lyZCBkdXJjaCBkYXMKICAgZWlnZW50bGljaGUgUmVuZGVyLUhUTUwg dWViZXJzY2hyaWViZW4sIHNvYmFsZCBkZXIgU2Nocml0dCBkcmFuIGlzdC4gKi8KLnN0YXRzLWxv YWRpbmcgewogICAgcGFkZGluZzogNDhweCAyMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBj b2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgZm9udC1zaXplOiB2YXIoLS1mcy1sZyk7IGZvbnQt d2VpZ2h0OiA2MDA7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBib3Jk ZXI6IDFweCBkYXNoZWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsgYm9yZGVyLXJhZGl1czogdmFyKC0t cmFkaXVzLW1kKTsKICAgIGFuaW1hdGlvbjogc3RhdC1wdWxzZSAxLjZzIGVhc2UtaW4tb3V0IGlu ZmluaXRlOwp9Ci5zdGF0cy1sb2FkaW5nOjpiZWZvcmUgewogICAgY29udGVudDogJ1wyM0YzJzsg ICAvKiDij7MgKi8KICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7IG1hcmdpbi1yaWdodDogOHB4OyBm b250LXNpemU6IDE2cHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBhbmltYXRpb246 IHN0YXQtbG9hZGluZy1zcGluIDEuNnMgbGluZWFyIGluZmluaXRlOwp9CkBrZXlmcmFtZXMgc3Rh dC1wdWxzZSB7CiAgICAwJSwgMTAwJSB7IG9wYWNpdHk6IDAuNzU7IH0KICAgIDUwJSAgICAgIHsg b3BhY2l0eTogMS4wMDsgfQp9CkBrZXlmcmFtZXMgc3RhdC1sb2FkaW5nLXNwaW4gewogICAgMCUg ICB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9CiAgICAxMDAlIHsgdHJhbnNmb3JtOiByb3Rh dGUoMzYwZGVnKTsgfQp9Ci8qIEdsb3ctRWZmZWt0IGF1ZiBkZW0gUGFuZWwtUmFobWVuIOKAlCB2 aXN1ZWxsZXMgU2lnbmFsICJmcmlzY2ggYmVyZWNobmV0IgogICAoUmVuZGVyLVBpcGVsaW5lKSBi encuICJpY2ggYmluIGludGVyYWt0aXYiIChIb3Zlci1GZWVkYmFjaykuCiAgIDIgU2VrdW5kZW4g RGF1ZXIsIGRldXRsaWNoIHNpY2h0YmFyZXIgYm94LXNoYWRvdy1SaW5nLiBJbXBsZW1lbnRpZXJ0 CiAgIHVlYmVyIGVpbiBQc2V1ZG8tRWxlbWVudCBtaXQgc3RhdGlzY2hlbSBib3gtc2hhZG93ICsg b3BhY2l0eS1BbmltYXRpb246CiAgIG51ciBDb21wb3NpdGUtUGFzcywga2VpbiB0ZXVyZXMgUmVw YWludCAoaTUtODUwMC1mcmV1bmRsaWNoKS4KCiAgIFBzZXVkby1FbGVtZW50IGhhZW5ndCBhbSBQ YW5lbCBzZWxic3QgKGltbWVyIGRhLCBkZWZhdWx0IG9wYWNpdHk6MCksCiAgIGRhbWl0IGF1Y2gg ZGVyIDpob3Zlci1UcmlnZ2VyIGlobiBmaW5kZXQuIEFuaW1hdGlvbiB3aXJkIGR1cmNoIHp3ZWkK ICAgU2VsZWt0b3JlbiBhdXNnZWxvZXN0OgogICAgIC5zdGF0cy1nbG93ICAgICAgIOKAlCB2b24g ZGVyIEpTLVJlbmRlci1QaXBlbGluZSBwcm8gU2Nocml0dCBnZXNldHp0CiAgICAgLnN0YXRzLXBh bmVsOmhvdmVyIOKAlCB3ZW5uIGRlciBVc2VyIG1pdCBkZXIgTWF1cyBkcnVlYmVyIGZhZWhydCAq Lwouc3RhdHMtcGFuZWw6OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICcnOyBwb3NpdGlvbjogYWJzb2x1 dGU7IGluc2V0OiAtM3B4OyBib3JkZXItcmFkaXVzOiBpbmhlcml0OwogICAgcG9pbnRlci1ldmVu dHM6IG5vbmU7IG9wYWNpdHk6IDA7CiAgICBib3gtc2hhZG93OiAwIDAgMjhweCA2cHggcmdiYSgy NiwgODIsIDExOCwgMC41NSksCiAgICAgICAgICAgICAgICAwIDAgMCAycHggcmdiYSgyNiwgODIs IDExOCwgMC4zNSk7Cn0KLnN0YXRzLWdsb3c6OmFmdGVyIHsgYW5pbWF0aW9uOiBzdGF0LWdsb3ct YW5pbSAycyBlYXNlLW91dDsgfQovKiBCZXd1c3N0IHp3ZWl0ZSBBbmltYXRpb24gbWl0IGdsZWlj aGVuIEtleWZyYW1lcywgYWJlciBlaWdlbmVtIE5hbWVuCiAgIChzdGF0LWdsb3ctaG92ZXIpLiBX ZW5uIGRhcyBQYW5lbCBuYWNoIGRlbSBJbml0aWFsLVJlbmRlciBiZXJlaXRzIGRpZQogICBLbGFz c2UgLnN0YXRzLWdsb3cgdHJhZWd0LCBoYXQgZGVyIDo6YWZ0ZXItU2VsZWt0b3IgZGllIEFuaW1h dGlvbgogICAnc3RhdC1nbG93LWFuaW0nIGltIGNvbXB1dGVkLXZhbHVlLVBvb2wuIFNldHp0IDpo b3ZlciBkaWUgZ2xlaWNoZQogICBBbmltYXRpb24sIHNpZWh0IGRlciBCcm93c2VyIGtlaW5lbiBB ZW5kZXJ1bmdzdW50ZXJzY2hpZWQgdW5kIGZldWVydAogICBzaWUgbmljaHQgbmV1LiBFaW4gc2Vw YXJhdGVyIE5hbWUgZXJ6d2luZ3QgZGVuIFJlc3RhcnQuICovCi5zdGF0cy1wYW5lbDpob3Zlcjo6 YWZ0ZXIgeyBhbmltYXRpb246IHN0YXQtZ2xvdy1ob3ZlciAycyBlYXNlLW91dDsgfQpAa2V5ZnJh bWVzIHN0YXQtZ2xvdy1hbmltIHsKICAgIDAlICAgeyBvcGFjaXR5OiAwOyB9CiAgICAxNSUgIHsg b3BhY2l0eTogMTsgfQogICAgNjAlICB7IG9wYWNpdHk6IDE7IH0KICAgIDEwMCUgeyBvcGFjaXR5 OiAwOyB9Cn0KQGtleWZyYW1lcyBzdGF0LWdsb3ctaG92ZXIgewogICAgMCUgICB7IG9wYWNpdHk6 IDA7IH0KICAgIDE1JSAgeyBvcGFjaXR5OiAxOyB9CiAgICA2MCUgIHsgb3BhY2l0eTogMTsgfQog ICAgMTAwJSB7IG9wYWNpdHk6IDA7IH0KfQoKLyogVG9nZ2xlLUJ1dHRvbnMgaW4gUGFuZWxzICov Ci8qIEthdGVnb3JpZS1CdXR0b25zIGltIFNjaGljaHR2ZXJ0ZWlsdW5ncy1QYW5lbCAoU2NoaWNo dGVuIC8gV29jaGVuZW5kZSAvCiAgIEZvcnRiaWxkdW5nIC8gQWJ3ZXNlbmhlaXQpLiBMb2VzdCBk ZW4gU29ydC1Ecm9wZG93biAyMDI2LTA1IGFiLiAqLwouc3RhdHMta2F0LWdydXBwZSB7IGRpc3Bs YXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNHB4OyBmbGV4LXdyYXA6IHdyYXA7 IH0KLnN0YXRzLWthdC1idG4gewogICAgcGFkZGluZzogNHB4IDEwcHg7IGZvbnQtc2l6ZTogdmFy KC0tZnMtc20pOyBmb250LXdlaWdodDogNjAwOyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3Jk ZXItY29sb3IpOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBjb2xvcjogdmFy KC0tdGV4dC1tdXRlZCk7IGN1cnNvcjogcG9pbnRlcjsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFk aXVzLXNtKTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwp9Ci5zdGF0cy1rYXQtYnRu OmhvdmVyOm5vdCguYWt0aXYpIHsgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOyBjb2xvcjog dmFyKC0tdGV4dC1oZWFkaW5nKTsgfQouc3RhdHMta2F0LWJ0bi5ha3RpdiB7IGJhY2tncm91bmQ6 IHZhcigtLWJnLXByaW1hcnkpOyBjb2xvcjogdmFyKC0tdGV4dC1vbi1wcmltYXJ5KTsgYm9yZGVy LWNvbG9yOiB2YXIoLS1iZy1wcmltYXJ5KTsgfQouc3RhdHMtc29ydC1yaWNodHVuZyB7IHdpZHRo OiAyNnB4OyBoZWlnaHQ6IDI2cHg7IHBhZGRpbmc6IDA7IG1hcmdpbi1sZWZ0OiA0cHg7IGRpc3Bs YXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBi b3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOyBiYWNrZ3JvdW5kOiB2YXIoLS1i Zy1jYXJkKTsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsgY3Vyc29yOiBwb2ludGVy OyBmb250LXNpemU6IHZhcigtLWZzLW1kKTsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsg fQouc3RhdHMtc29ydC1yaWNodHVuZzpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVy KTsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0KLnN0YXRzLXNvcnQtcGZlaWwgeyBsaW5l LWhlaWdodDogMTsgZm9udC13ZWlnaHQ6IDcwMDsgfQoKLyogQmFkZ2UgKi8KLnN0YXRzLWJhZGdl IHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBmb250LXdlaWdodDogNzAwOyBwYWRkaW5n OiAycHggOHB4OyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpOwogICAgYmFja2dyb3Vu ZDogdmFyKC0tZmFyYmUtd2FybnVuZyk7IGNvbG9yOiAjZmZmOyBtaW4td2lkdGg6IDIwcHg7IHRl eHQtYWxpZ246IGNlbnRlcjsKfQouc3RhdHMtYmFkZ2U6ZW1wdHkgeyBkaXNwbGF5OiBub25lOyB9 Ci5zdGF0cy1iYWRnZS1vayB7IGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLWVyZm9sZyk7IH0KCi8q IERldGFpbC1UYWJlbGxlICovCi5zdGF0cy10YWJlbGxlIHRoLnphaGwsIC5zdGF0cy10YWJlbGxl IHRkLnphaGwgeyB0ZXh0LWFsaWduOiByaWdodDsgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVs YXItbnVtczsgfQovKiBTY2hpY2h0LUtvcGYtWmVsbGVuIG1pdCBlaWdlbmVtIGhlbGxlbSBIaW50 ZXJncnVuZCDigJQgZGllIEZhcmJ0b2VuZQogICAocm90L2JsYXUvZ3J1ZW4pIHdhcmVuIGF1ZiBk ZW0gZHVua2VsYmxhdWVuIGFkbWluLXRhYmVsbGUtSGVhZGVyCiAgIGthdW0gbGVzYmFyLiBKZXR6 dCBzdGljaHQgamVkZSBTY2hpY2h0IGFscyBrbGFyZXMgRmFyYi1UYWcgaGVyYXVzLiAqLwouc3Rh dHMtdGFiZWxsZSAuZnJ1ZWgta29wZiwgLnN0YXRzLXRhYmVsbGUgLnNwYWV0LWtvcGYsIC5zdGF0 cy10YWJlbGxlIC5uYWNodC1rb3BmIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7IGZvbnQtd2VpZ2h0 OiA4MDA7IHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1 cy14cyk7IHBhZGRpbmc6IDZweCA4cHg7Cn0KLnN0YXRzLXRhYmVsbGUgLmZydWVoLWtvcGYgeyBj b2xvcjogdmFyKC0tZmFyYmUtZnJ1ZWgpOyB9Ci5zdGF0cy10YWJlbGxlIC5zcGFldC1rb3BmIHsg Y29sb3I6IHZhcigtLWZhcmJlLXNwYWV0KTsgfQouc3RhdHMtdGFiZWxsZSAubmFjaHQta29wZiB7 IGNvbG9yOiB2YXIoLS1mYXJiZS1uYWNodCk7IH0KLnN0YXRzLXRhYmVsbGUgLndhcm4ta29wZiB7 IGNvbG9yOiB2YXIoLS1mYXJiZS1mZWhsZXIpOyB9Ci5zdGF0cy1kZXRhaWxzIHsKICAgIGJhY2tn cm91bmQ6IHZhcigtLWJnLWNhcmQpOyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpOwog ICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgYm94LXNoYWRvdzogMCAx cHggNHB4IHZhcigtLXNoYWRvdy1saWdodCk7CiAgICBtYXJnaW4tYm90dG9tOiAxNnB4Owp9Ci5z dGF0cy1kZXRhaWxzLXN1bW1hcnkgewogICAgcGFkZGluZzogMTRweCAyMHB4OyBmb250LXNpemU6 IHZhcigtLWZzLW1kKTsgZm9udC13ZWlnaHQ6IDcwMDsgY3Vyc29yOiBwb2ludGVyOwogICAgY29s b3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgdXNlci1zZWxlY3Q6IG5vbmU7IGxpc3Qtc3R5bGU6 IG5vbmU7Cn0KLnN0YXRzLWRldGFpbHMtc3VtbWFyeTo6YmVmb3JlIHsgY29udGVudDogJ1wyNUI2 ICAnOyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnM7 IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfQouc3RhdHMtZGV0YWlsc1tvcGVuXSAuc3RhdHMtZGV0 YWlscy1zdW1tYXJ5OjpiZWZvcmUgeyB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH0KLnN0YXRz LWRldGFpbHNbb3Blbl0gLnN0YXRzLWRldGFpbHMtc3VtbWFyeSB7IGJvcmRlci1ib3R0b206IDFw eCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyB9Ci5zdGF0cy1kZXRhaWxzIC50YWJlbGxlLXNj cm9sbCB7IHBhZGRpbmc6IDAgMjBweCAxNnB4OyB9CgovKiBCYWxrZW5kaWFncmFtbSAoaW0gUGFu ZWwpIOKAlCBrZWluIGhvcml6b250YWxlciBTY3JvbGwsIGFsbGVzIHBhc3N0IHJlaW4gKi8KLnN0 YXRzLWJhbGtlbi1jb250YWluZXIgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29s dW1uOyBnYXA6IDRweDsgb3ZlcmZsb3cteDogaGlkZGVuOyB9Ci5zdGF0cy1iYWxrZW4temVpbGUg eyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgZm9udC1zaXpl OiB2YXIoLS1mcy1zbSk7IHBhZGRpbmc6IDJweCAwOyBtaW4td2lkdGg6IDA7IH0KLnN0YXRzLWJh bGtlbi1uYW1lIHsgd2lkdGg6IDEyMHB4OyBtaW4td2lkdGg6IDEyMHB4OyB0ZXh0LWFsaWduOiBy aWdodDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgb3Zl cmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7IHdoaXRlLXNwYWNlOiBub3dy YXA7IH0KLnN0YXRzLWJhbGtlbi1iYXItd3JhcCB7IGZsZXg6IDE7IG1pbi13aWR0aDogMDsgZGlz cGxheTogZmxleDsgZ2FwOiAxcHg7IGhlaWdodDogMThweDsgYmFja2dyb3VuZDogdmFyKC0tYmct Y2FyZC1hbHQpOyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteHMpOyBvdmVyZmxvdzogaGlk ZGVuOyB9Ci5zdGF0cy1iYWxrZW4tc2VnbWVudCB7IGhlaWdodDogMTAwJTsgdHJhbnNpdGlvbjog d2lkdGggMC40cyBlYXNlOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0 aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZm9udC1zaXplOiA5cHg7IGNvbG9yOiAjZmZmOyBmb250LXdl aWdodDogNzAwOyB9Ci8qIFRvdGFsLVNwYWx0ZTogYnJlaXQgZ2VudWcgZnVlciAizqMgRm9ydGJp bGR1bmciLUxhYmVsIGltIEtvcGYsIG5vd3JhcC4gKi8KLnN0YXRzLWJhbGtlbi10b3RhbCB7IHdp ZHRoOiA5MHB4OyBtaW4td2lkdGg6IDkwcHg7IHRleHQtYWxpZ246IHJpZ2h0OyBmb250LXdlaWdo dDogNjAwOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBmb250LXZhcmlhbnQtbnVtZXJp YzogdGFidWxhci1udW1zOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9CgovKiBFeHRyYS1TcGFsdGUg cmVjaHRzOiBNaW5pLUJhciBmdWVyIGVpbmVuIHp1c2FldHpsaWNoZW4gSW5kaWthdG9yCiAgIChh a3R1ZWxsIGdlbnV0enQgaW4gZGVyIEthdGVnb3JpZSAiV29jaGVuZW5kZSIgZnVlciBrb21wbGV0 dGVXRSkuICovCi5zdGF0cy1iYWxrZW4tZXh0cmEgeyB3aWR0aDogMTAwcHg7IG1pbi13aWR0aDog MTAwcHg7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyB9Ci5z dGF0cy1iYWxrZW4ta29udGV4dC1iYXIgeyBmbGV4OiAxOyBoZWlnaHQ6IDhweDsgYmFja2dyb3Vu ZDogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXItcmFkaXVzOiAycHg7IG92ZXJmbG93OiBoaWRk ZW47IH0KLnN0YXRzLWJhbGtlbi1rb250ZXh0LWZpbGwgeyBoZWlnaHQ6IDEwMCU7IHRyYW5zaXRp b246IHdpZHRoIDAuNHMgZWFzZTsgYm9yZGVyLXJhZGl1czogMnB4OyB9Ci5zdGF0cy1iYWxrZW4t a29udGV4dC13ZXJ0IHsgd2lkdGg6IDI4cHg7IHRleHQtYWxpZ246IHJpZ2h0OyBmb250LXdlaWdo dDogNzAwOyBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOyBjb2xvcjogdmFyKC0t dGV4dC1oZWFkaW5nKTsgfQoKLyogT3B0aW9uYWxlIEthdGVnb3JpZS1CZXNjaHJlaWJ1bmcgdWVi ZXIgZGVtIEJhbGtlbi1DaGFydCAoei5CLiBmdWVyCiAgICJFaW5nZXNwcnVuZ2VuIjogd2FzIHdp cmQgaGllciBlaWdlbnRsaWNoIGdlemFlaGx0PykuIFNjaG1hbGUgSW5mby1Cb3gKICAgbWl0IGxp bmtlbSBBa3plbnQtU3RyZWlmZW4uICovCi5zdGF0cy1rYXQtYmVzY2hyZWlidW5nIHsKICAgIG1h cmdpbjogMCAwIDEwcHg7CiAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgIGJhY2tncm91bmQ6IHJn YmEoOTEsIDEyNSwgMTc3LCAwLjA4KTsKICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0t cG9saXplaS1ibGF1LCAjMDA2M2FmKTsKICAgIGJvcmRlci1yYWRpdXM6IDAgNHB4IDRweCAwOwog ICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICBj b2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOwp9Ci5zdGF0cy1rYXQtYmVzY2hyZWlidW5nIGIg eyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQoKLyogU3BhbHRlbi1Lb3BmemVpbGUgdWVi ZXIgZGVuIEJhbGtlbiDigJQgbGFiZWx0IFNlZ21lbnRlICsgS2F0ZWdvcmllLVN1bW1lLiAqLwou c3RhdHMtYmFsa2VuLWtvcGYgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBn YXA6IDhweDsgcGFkZGluZzogMCAwIDRweCAwOyBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkIHZh cigtLWJvcmRlci1jb2xvcik7IG1hcmdpbi1ib3R0b206IDRweDsgfQouc3RhdHMtYmFsa2VuLWtv cGYgLnN0YXRzLWJhbGtlbi1iYXItd3JhcCwKLnN0YXRzLWJhbGtlbi1rb3BmIC5zdGF0cy1iYWxr ZW4tdG90YWwsCi5zdGF0cy1iYWxrZW4ta29wZiAuc3RhdHMtYmFsa2VuLWV4dHJhIHsgYmFja2dy b3VuZDogdHJhbnNwYXJlbnQ7IGhlaWdodDogYXV0bzsgfQouc3RhdHMtYmFsa2VuLWtvcGYtbGFi ZWwgeyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZh cigtLXRleHQtbXV0ZWQpOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBsZXR0ZXItc3BhY2lu ZzogMC40cHg7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KLnN0YXRzLXNpZ21hLWhpbGZlIHsgY3Vy c29yOiBoZWxwOyBib3JkZXItYm90dG9tOiAxcHggZG90dGVkIHZhcigtLXRleHQtbXV0ZWQpOyB9 Ci5zdGF0cy1iYWxrZW4tc2VnLWxhYmVsIHsgZm9udC13ZWlnaHQ6IDcwMDsgfQoKLyogTXVzdGVy ICovCi5zdGF0cy1tdXN0ZXItY29udGFpbmVyIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rp b246IGNvbHVtbjsgZ2FwOiA2cHg7IG1heC1oZWlnaHQ6IDQyMHB4OyBvdmVyZmxvdy15OiBhdXRv OyB9Ci5tdXN0ZXIta2FydGUgewogICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGZsZXgt c3RhcnQ7IGdhcDogMTBweDsKICAgIHBhZGRpbmc6IDEwcHggMTRweDsgYm9yZGVyLXJhZGl1czog dmFyKC0tcmFkaXVzLW1kKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdo dCk7IGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7Cn0KLm11c3Rlci1pY29uIHsgZm9udC1zaXpl OiB2YXIoLS1mcy1sZyk7IG1pbi13aWR0aDogMjJweDsgaGVpZ2h0OiAyMnB4OyB0ZXh0LWFsaWdu OiBjZW50ZXI7IGxpbmUtaGVpZ2h0OiAyMnB4OyBib3JkZXItcmFkaXVzOiA1MCU7IGNvbG9yOiAj ZmZmOyBmbGV4LXNocmluazogMDsgfQoubXVzdGVyLXRleHQgeyBmb250LXNpemU6IHZhcigtLWZz LWJhc2UpOyBsaW5lLWhlaWdodDogMS41OyB9Ci5tdXN0ZXItdGV4dCBzdHJvbmcgeyBjb2xvcjog dmFyKC0tdGV4dC1oZWFkaW5nKTsgfQoubXVzdGVyLXdhcm51bmcgeyBiYWNrZ3JvdW5kOiByZ2Jh KDIwMiwxMTEsMzAsMC4wNik7IH0KLm11c3Rlci13YXJudW5nIC5tdXN0ZXItaWNvbiB7IGJhY2tn cm91bmQ6IHZhcigtLWZhcmJlLXdhcm51bmcpOyB9Ci5tdXN0ZXItaW5mbyB7IGJhY2tncm91bmQ6 IHJnYmEoNDQsNjIsODAsMC4wNCk7IH0KLm11c3Rlci1pbmZvIC5tdXN0ZXItaWNvbiB7IGJhY2tn cm91bmQ6IHZhcigtLWZhcmJlLWluZm8pOyB9Ci5tdXN0ZXItZXJmb2xnIHsgYmFja2dyb3VuZDog cmdiYSgzOSwxMzcsMTA5LDAuMDYpOyB9Ci5tdXN0ZXItZXJmb2xnIC5tdXN0ZXItaWNvbiB7IGJh Y2tncm91bmQ6IHZhcigtLWZhcmJlLWVyZm9sZyk7IH0KCi8qIEZhaXJuZXNzIGNvbXBhY3QgKi8K LmZhaXJuZXNzLWNvbXBhY3QgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1u OyBnYXA6IDNweDsgfQouZmFpcm5lc3Mtcm93IHsKICAgIGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVt cGxhdGUtY29sdW1uczogMTEwcHggMWZyIDQwcHg7IGdhcDogNnB4OyBhbGlnbi1pdGVtczogY2Vu dGVyOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IHBhZGRpbmc6IDNweCAwOyBib3JkZXIt Ym90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKfQouZmFpcm5lc3Mtcm93Omxh c3QtY2hpbGQgeyBib3JkZXItYm90dG9tOiBub25lOyB9Ci5mYWlybmVzcy1yb3ctbmFtZSB7IGZv bnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBvdmVyZmxvdzogaGlk ZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQouZmFp cm5lc3Mtcm93LWJhciB7IGhlaWdodDogMTZweDsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVz LXhzKTsgcG9zaXRpb246IHJlbGF0aXZlOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7 IH0KLmZhaXJuZXNzLXJvdy1maWxsIHsgaGVpZ2h0OiAxMDAlOyBib3JkZXItcmFkaXVzOiB2YXIo LS1yYWRpdXMteHMpOyB0cmFuc2l0aW9uOiB3aWR0aCAwLjRzIGVhc2U7IHBvc2l0aW9uOiByZWxh dGl2ZTsgfQouZmFpcm5lc3Mtcm93LWF2ZyB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAtMnB4 OyBib3R0b206IC0ycHg7IHdpZHRoOiAycHg7IGJhY2tncm91bmQ6IHZhcigtLXRleHQtaGVhZGlu Zyk7IG9wYWNpdHk6IDAuNTsgei1pbmRleDogMTsgfQouZmFpcm5lc3Mtcm93LXZhbCB7IHRleHQt YWxpZ246IHJpZ2h0OyBmb250LXdlaWdodDogNzAwOyBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFi dWxhci1udW1zOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBsaW5lLWhlaWdodDogMS4x OyB9Ci5mYWlybmVzcy1yb3ctc3ViIHsgZm9udC1zaXplOiA5cHg7IGZvbnQtd2VpZ2h0OiA0MDA7 IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgfQovKiBXRS1aZWlsZW4gaGFiZW4gZWluZSA0LiBT cGFsdGUgZnVlciBLb21wbGV0dGUgV0VzIChEaWNodGUtSW5kaWthdG9yKS4KICAgQnJlaXRlciAo OTZweCkgZGFtaXQgZGFzIExhYmVsICJLb21wbGV0dGUgV0VzIiB2b2xsc3RhZW5kaWcgc2ljaHRi YXIgaXN0LiAqLwouZmFpcm5lc3Mtcm93LXdlIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxMTBw eCAxZnIgNDBweCA5NnB4OyB9Ci5mYWlybmVzcy1zdWJ0aXRsZSB7CiAgICBmb250LXNpemU6IHZh cigtLWZzLXNtKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBtYXJnaW46IDAgMCA2cHggMDsK ICAgIHBhZGRpbmctYm90dG9tOiA2cHg7IGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgdmFyKC0t Ym9yZGVyLWNvbG9yKTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7IG92ZXJmbG93OiBoaWRkZW47 IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwp9Ci5mYWlybmVzcy1yb3cta3cgeyBkaXNwbGF5OiBm bGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDRweDsgfQouZmFpcm5lc3Mtcm93LWt3LWJh ciB7IGZsZXg6IDE7IGhlaWdodDogNnB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7 IGJvcmRlci1yYWRpdXM6IDJweDsgb3ZlcmZsb3c6IGhpZGRlbjsgfQouZmFpcm5lc3Mtcm93LWt3 LWZpbGwgeyBoZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQ6ICM1QjJDNkY7IGJvcmRlci1yYWRpdXM6 IDJweDsgdHJhbnNpdGlvbjogd2lkdGggMC40cyBlYXNlOyB9Ci5mYWlybmVzcy1yb3cta3ctdmFs IHsgd2lkdGg6IDE4cHg7IHRleHQtYWxpZ246IHJpZ2h0OyBmb250LXdlaWdodDogNzAwOyBmb250 LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRh cnkpOyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgfQouZmFpcm5lc3Mta3cta29wZiB7IHRleHQt YWxpZ246IHJpZ2h0OyBmb250LXNpemU6IDlweDsgY29sb3I6ICM1QjJDNkY7IGZvbnQtd2VpZ2h0 OiA3MDA7IH0KLmZhaXJuZXNzLWZ1c3MgeyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgY29sb3I6 IHZhcigtLXRleHQtbXV0ZWQpOyBtYXJnaW4tdG9wOiA4cHg7IHBhZGRpbmctdG9wOiA2cHg7IGJv cmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsgdGV4dC1hbGlnbjogY2Vu dGVyOyB9Ci5mYWlybmVzcy1vayB7IGJhY2tncm91bmQ6ICMyN0FFNjA7IH0KLmZhaXJuZXNzLXdh cm51bmcgeyBiYWNrZ3JvdW5kOiAjRTY3RTIyOyB9Ci5mYWlybmVzcy1rcml0aXNjaCB7IGJhY2tn cm91bmQ6ICNDMDM5MkI7IH0KLmZhaXJuZXNzLW5ldXRyYWwgeyBiYWNrZ3JvdW5kOiAjOTVBNUE2 OyB9Ci5mYWlybmVzcy1oZWFkZXIgeyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogdmFyKC0tdGV4 dC1tdXRlZCk7IGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJj YXNlOyBsZXR0ZXItc3BhY2luZzogMC41cHg7IHBhZGRpbmc6IDhweCAwIDRweDsgYm9yZGVyLWJv dHRvbTogbm9uZSAhaW1wb3J0YW50OyB9CgovKiBBYndlc2VuaGVpdHMtQ2hhcnQgKi8KLyogPT09 PT0gTWlrcm90ZWFtLUhlYXRtYXAgPT09PT0gKi8KLyogRHVyY2hnZWhlbmRlIFRhYmVsbGU6IGFs bGUgVGFnZSB2b20gMS4xLiBiaXMgRW5kZSBWZXJiaW5kbGljaGtlaXQgKi8KLnRlYW0taG0tbGVn ZW5kZSB7IGRpc3BsYXk6IGZsZXg7IGdhcDogMTBweDsgZm9udC1zaXplOiB2YXIoLS1mcy14cyk7 IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZmxleC13cmFw OiB3cmFwOyB9Ci50ZWFtLWhtLWxlZ2VuZGUgc3BhbiB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBh bGlnbi1pdGVtczogY2VudGVyOyB9Ci50ZWFtLWNlbGwtbWluaSB7IGRpc3BsYXk6IGlubGluZS1i bG9jazsgd2lkdGg6IDExcHg7IGhlaWdodDogMTFweDsgYm9yZGVyLXJhZGl1czogMnB4OyB2ZXJ0 aWNhbC1hbGlnbjogbWlkZGxlOyBtYXJnaW4tcmlnaHQ6IDNweDsgYm9yZGVyOiAxcHggc29saWQg dmFyKC0tYm9yZGVyLWNvbG9yKTsgfQoKLnN0YXRzLXRlYW0taGVhdG1hcCB7IG1hcmdpbjogOHB4 IDAgMTZweDsgfQovKiBIZWF0bWFwLVNjcm9sbC1Db250YWluZXI6IHNjcm9sbHQgamV0enQgYXVj aCB2ZXJ0aWthbCwgZGFtaXQgZGVyCiAgIEJvZHktQmVyZWljaCBiZWkgdmllbGVuIFRlYW1zIHVu dGVyIGRlbiBmaXhpZXJ0ZW4gSGVhZGVyLVplaWxlbgogICAoTW9uYXQgLyBUYWcgLyBXb2NoZW50 YWcgLyBGZWllcnRhZ2UgLyBGZXJpZW4gLyBTb25kZXJ0ZXJtaW5lKQogICBkdXJjaHdhbmRlcnQu IERpZSBrdW11bGF0aXZlbiBzdGlja3ktVG9wLVdlcnRlIHdlcmRlbiBuYWNoIGRlbQogICBSZW5k ZXIgaW0gSlMgZ2VzZXR6dCAocm9idXN0IGdlZ2VuIGZlaGxlbmRlIE1hcmtlci1aZWlsZW4pLiAq LwoudGVhbS1obS1zY3JvbGwgeyBvdmVyZmxvdzogYXV0bzsgbWF4LXdpZHRoOiAxMDAlOyBtYXgt aGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjQwcHgpOyB9Ci50ZWFtLWhtLXRhYmVsbGUgewogICAgYm9y ZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsgYm9yZGVyLXNwYWNpbmc6IDA7IGZvbnQtc2l6ZTogdmFy KC0tZnMteHMpOwogICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKfQoudGVh bS1obS10YWJlbGxlIHRoLCAudGVhbS1obS10YWJlbGxlIHRkIHsKICAgIHBhZGRpbmc6IDA7IHRl eHQtYWxpZ246IGNlbnRlcjsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsK ICAgIHdpZHRoOiAyMnB4OyBtaW4td2lkdGg6IDIycHg7IG1heC13aWR0aDogMjJweDsgaGVpZ2h0 OiAyMnB4Owp9Ci8qIFN0aWNreSBmdWVyIEFMTEUgdGhlYWQtWmVsbGVuIOKAlCB0aCBVTkQgdGQs IHdlaWwgZGllIE1hcmtlci1aZWlsZW4KICAgKEZlaWVydGFnZS9GZXJpZW4vU29uZGVydGVybWlu ZSkgdGQtWmVsbGVuIHZlcndlbmRlbi4gRGVyIGtvbmtyZXRlCiAgIHRvcC1XZXJ0IHdpcmQgcHJv IFplaWxlIHBlciBKUyBnZXNldHp0IChrdW11bGF0aXZlIG9mZnNldEhlaWdodCkuCiAgIHotaW5k ZXggdWViZXIgZGVuIEJvZHktWmVsbGVuIChkZWZhdWx0KSB1bmQgZGVuIHN0aWNreS1OYW1lLVNw YWx0ZW4KICAgKHotaW5kZXggMSk7IGRpZSBFY2tlIG9iZW4gbGlua3MgKHRoZWFkIC50ZWFtLWht LW5hbWUpIGJla29tbXQKICAgei1pbmRleCAzLCB3ZWlsIHNpZSBzb3dvaGwgaG9yaXpvbnRhbCBh bHMgYXVjaCB2ZXJ0aWthbCBzdGlja3kgaXN0LiAqLwoudGVhbS1obS10YWJlbGxlIHRoZWFkIHRo LAoudGVhbS1obS10YWJlbGxlIHRoZWFkIHRkIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNh cmQtYWx0KTsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsK ICAgIHBvc2l0aW9uOiBzdGlja3k7IHotaW5kZXg6IDI7IGJhY2tncm91bmQtY2xpcDogcGFkZGlu Zy1ib3g7Cn0KLnRlYW0taG0tdGFiZWxsZSB0aGVhZCAudGVhbS1obS1uYW1lIHsgei1pbmRleDog MzsgfQoudGVhbS1obS1tb25hdC1jZWxsIHsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IHBhZGRp bmc6IDJweCAwICFpbXBvcnRhbnQ7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3Jk ZXItY29sb3IpICFpbXBvcnRhbnQ7IH0KLnRlYW0taG0tdGggeyBwb3NpdGlvbjogcmVsYXRpdmU7 IH0KLnRlYW0taG0tdGgtbnVtIHsgZm9udC1zaXplOiB2YXIoLS1mcy14cyk7IGxpbmUtaGVpZ2h0 OiAxLjE7IH0KLnRlYW0taG0td3QgeyBmb250LXNpemU6IDhweDsgZm9udC13ZWlnaHQ6IDUwMCAh aW1wb3J0YW50OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCkgIWltcG9ydGFudDsgfQoKLyogU3Bh bHRlbi1NYXJraWVydW5nZW46IGVpbmhlaXRsaWNoIGR1cmNoIGRpZSBHQU5aRSBTcGFsdGUgKEhl YWRlciwKICAgV29jaGVudGFnLVplaWxlLCBNYXJrZXItWmVpbGVuLCBCb2R5LVplbGxlbikuIFdl cnRlIGRvbWluYW50IGdlbnVnLAogICB1bSBBYndlaWNodW5nZW4gc29mb3J0IHp1IGVyZmFzc2Vu LCBhYmVyIEFtcGVsZmFyYmVuIGJsZWliZW4gbGVzYmFyLiAqLwoudGVhbS1obS10YWJlbGxlIC5o bS13ZSAgICAgICAgICAgeyBib3gtc2hhZG93OiBpbnNldCAwIDAgMCA5OTlweCByZ2JhKDAsMCww LDAuMTQpOyB9Ci50ZWFtLWhtLXRhYmVsbGUgLmhtLWZlaWVyICAgICAgICB7IGJveC1zaGFkb3c6 IGluc2V0IDAgMCAwIDk5OXB4IHJnYmEoMTkyLCA1NywgNDMsIDAuMzApOyB9Ci50ZWFtLWhtLXRh YmVsbGUgLmhtLWZlcmllbiAgICAgICB7IGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDk5OXB4IHJn YmEoNDEsIDEyOCwgMTg1LCAwLjI2KTsgfQoudGVhbS1obS10YWJlbGxlIC5obS1zb25kZXJ0ZXJt aW4geyBib3gtc2hhZG93OiBpbnNldCAwIDAgMCA5OTlweCByZ2JhKDIzMCwgMTI2LCAzNCwgMC4z MCk7IH0KLyogTWVocmZhY2gtTWFya2llcnVuZ2VuIChTYStGZWllcnRhZywgRmVpZXJ0YWcrRmVy aWVuKTogbGV0enRlIGdld2lubnQuCiAgIFJlaWhlbmZvbGdlIGltIEpTOiBXRSAtPiBGZWllciAt PiBGZXJpZW4gLT4gU29uZGVydGVybWluIOKAlCBTcGV6aWFsaXRhZXRlbgogICB1ZWJlcmxhZ2Vy biBXRTsgU29uZGVydGVybWluIGdld2lubnQgaW0gS29uZmxpa3QgbWl0IEZlcmllbi9GZWllci4K ICAgRGllIGZydWVoZXJlbiByb3Rlbi9ibGF1ZW4gU3RyZWlmZW4gd3VyZGVuIDIwMjYtMDUgZW50 ZmVybnQ6IGRpZSBkaXJla3RlCiAgIFNwYWx0ZW4tVG9lbnVuZyBpc3QgZGV1dGxpY2ggZ2VudWcs IFN0cmVpZmVuIHdhcmVuIHJlZHVuZGFudC4gKi8KLyogTWVocmVyZSBNYXJraWVydW5nZW4gYXVm IGVpbmVyIFplbGxlICh6LkIuIFNhICsgRmVpZXJ0YWcpOiBzdW1taWVydCBzaWNoCiAgIHZpYSBt ZWhyZmFjaGVyIGJveC1zaGFkb3cuIENTUy1TcGV6aWZpdGFldHMtVHJpY2s6IHNwYWV0ZXJlIEts YXNzZQogICBnZXdpbm50IOKAlCB3aXIgYWt6ZXB0aWVyZW4gZGFzIChGZWllcnRhZy9Tb25kZXJ0 ZXJtaW4gPiBGZXJpZW4gPiBXRSBpbiBkZXIKICAgUmVpaGVuZm9sZ2UgZGVyIEtsYXNzZW4pLiBW aXN1ZWxsIHJlaWNodCBkYXMgYXVzLiAqLwoKLyogUm90YXRpb25zLVBpbGxlIGluIGRlciBQZXJz b25hbHZlcndhbHR1bmcg4oCUIGtvbXBha3RlIEYvUy9OLUFuemVpZ2UKICAgZGVyIGhldXRpZ2Vu IFNjaGljaHQgZGVyIFBlcnNvbiwgYXVzIFN0YW5kb3J0LVNjaGljaHRmb2xnZSArCiAgIERpZW5z dGdydXBwZW4tUG9zaXRpb24gYWJnZWxlaXRldC4gSG92ZXItVG9vbHRpcCB6ZWlndCBkZW4KICAg bmFlY2hzdGVuIFdlY2hzZWx0YWcuICovCi5yb3RhLXBpbGxlIHsKICAgIGRpc3BsYXk6IGlubGlu ZS1ibG9jazsgd2lkdGg6IDIycHg7IGhlaWdodDogMjBweDsgbGluZS1oZWlnaHQ6IDIwcHg7CiAg ICB0ZXh0LWFsaWduOiBjZW50ZXI7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAg ICBmb250LXdlaWdodDogNzAwOyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgY29sb3I6ICNmZmY7 CiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwp9Ci5yb3RhLXBpbGxlLnJv dGEtZiB7IGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLWZydWVoLCAjQjcxQzFDKTsgfQoucm90YS1w aWxsZS5yb3RhLXMgeyBiYWNrZ3JvdW5kOiB2YXIoLS1mYXJiZS1zcGFldCwgIzFiNWUyMCk7IH0K LnJvdGEtcGlsbGUucm90YS1uIHsgYmFja2dyb3VuZDogdmFyKC0tZmFyYmUtbmFjaHQsICMxYTUy NzYpOyB9Ci5yb3RhLXBpbGxlLnJvdGEtbGVlciB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQt YWx0KTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBmb250LXdlaWdodDogNDAwOyB9CgovKiBI b3Zlci1LcmV1ejogd2VubiBkaWUgTWF1cyB1ZWJlciBlaW5lciBIZWF0bWFwLVplbGxlIHN0ZWh0 LCB3ZXJkZW4KICAgZGllIGdlc2FtdGUgWmVpbGUgdW5kIGRpZSBnZXNhbXRlIFNwYWx0ZSBoZXJ2 b3JnZWhvYmVuIChFeGNlbC1TdGlsKS4KICAgRGllIEpTLUxvZ2lrIGluIF9yZW5kZXJUZWFtSGVh dG1hcCBzZXR6dCAuaG0tY3Jvc3MgYXVmIGRpZSBiZXRyb2ZmZW5lbgogICBaZWxsZW4uIEJveC1z aGFkb3cgaW5zZXQgd2llIGRpZSBobS13ZS9obS1mZWllci1NYXJraWVydW5nZW4sIGRhbWl0CiAg IGRlciBHbG93IG1pdCBkZW4gU3BhbHRlbi1Ub2VudW5nZW4gdmlzdWVsbCBzdGFwZWx0IHN0YXR0 IHNpZSB6dQogICB2ZXJkcmFlbmdlbiDigJQgZGVyIFBvbGl6ZWktTlJXLUJsYXUtVG9uIHVlYmVy bGFnZXJ0IHN1YnRpbC4gKi8KLnRlYW0taG0tdGFiZWxsZSB0ZC5obS1jcm9zcywKLnRlYW0taG0t dGFiZWxsZSB0aC5obS1jcm9zcyB7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCA5OTlweCBy Z2JhKDI2LCA4MiwgMTE4LCAwLjE4KSwKICAgICAgICAgICAgICAgIGluc2V0IDAgMCAwIDJweCBy Z2JhKDI2LCA4MiwgMTE4LCAwLjU1KTsKfQoKLyogRnJ1ZWhlciBoYXR0ZW4gRmVpZXJ0YWcvRmVy aWVuLVplbGxlbiB6dXNhZXR6bGljaCByb3RlL2JsYXVlIDMtcHgtU3RyZWlmZW4KICAgb2Jlbi91 bnRlbi4gMjAyNi0wNSBlbnRmZXJudDogZGllIFNwYWx0ZW4tVG9lbnVuZyBpc3QgZWluZGV1dGln IGdlbnVnLAogICBkaWUgU3RyZWlmZW4gd2FyZW4gcmVkdW5kYW50IHVuZCB2aXN1ZWxsIHVucnVo aWcuICovCgovKiBTdGFuZG9ydC1UcmVubmVyOiBlY2h0ZSB3ZWlzc2UgRGlzdGFuenplaWxlbiBz dGF0dCBncmF1ZXIgQm9yZGVyLVRyZW5ubGluaWVuLgogICBIYWxiZSBaZWxsZW5ob2VoZSBwcm8g U3BhY2VyLiBCZWltIEhhdXB0d2FjaGVuLVRyZW5uZXIgendlaSBTcGFjZXIgbWl0CiAgIGVpbmVy IGRpY2tlbiBncmF1ZW4gTGluaWUgZGF6d2lzY2hlbiAoYm9yZGVyLWJvdHRvbSBhdWYgZGVtIG9i ZXJlbiBTcGFjZXIpLiAqLwoudGVhbS1obS1zcGFjZXItcm93IHRkIHsKICAgIHBhZGRpbmc6IDAg IWltcG9ydGFudDsgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiB2YXIo LS1iZy1jYXJkKSAhaW1wb3J0YW50OyBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7Cn0KLnRl YW0taG0tc3BhY2VyLXJvdyAudGVhbS1obS1zcGFjZXItc3RhbmRvcnQgICAgIHsgaGVpZ2h0OiAx MXB4OyB9Ci50ZWFtLWhtLXNwYWNlci1yb3cgLnRlYW0taG0tc3BhY2VyLWhhdXB0LW9iZW4gICB7 IGhlaWdodDogMTFweDsgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkIHZhcigtLXRleHQtbXV0ZWQp ICFpbXBvcnRhbnQ7IH0KLnRlYW0taG0tc3BhY2VyLXJvdyAudGVhbS1obS1zcGFjZXItaGF1cHQt dW50ZW4gIHsgaGVpZ2h0OiAxMXB4OyB9Ci8qIExpbmtlIFNwYWNlci1TcGFsdGUgbXVzcyBiZWkg aG9yaXpvbnRhbGVtIFNjcm9sbCBtaXRrb21tZW4sIGRhbWl0IGRlcgogICBEaXN0YW56YmxvY2sg a29uc2lzdGVudCB1ZWJlciBkaWUgZ2FuemUgVGFiZWxsZSB3aXJrdC4gKi8KLnRlYW0taG0tc3Bh Y2VyLXJvdyAudGVhbS1obS1zcGFjZXItbmFtZSB7IHBvc2l0aW9uOiBzdGlja3k7IGxlZnQ6IDA7 IHotaW5kZXg6IDE7IH0KCi50ZWFtLWJhbGtlbi10cmVubmVyLXN0YW5kb3J0IHsgbWFyZ2luLXRv cDogNnB4OyBwYWRkaW5nLXRvcDogNnB4OyBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tdGV4 dC1tdXRlZCk7IH0KLnRlYW0tYmFsa2VuLXRyZW5uZXItaGF1cHQgICAgeyBtYXJnaW4tdG9wOiAx MHB4OyBwYWRkaW5nLXRvcDogMTBweDsgYm9yZGVyLXRvcDogM3B4IHNvbGlkIHZhcigtLXRleHQt aGVhZGluZyk7IH0KCi8qIE1hcmtlci1aZWlsZW4gKEZlaWVydGFnZSAvIEZlcmllbiAvIFNvbmRl cnRlcm1pbmUpICovCi50ZWFtLWhtLW1hcmtlci1yb3cgdGgsIC50ZWFtLWhtLW1hcmtlci1yb3cg dGQgewogICAgaGVpZ2h0OiAxOHB4OyBmb250LXNpemU6IDlweDsgbGluZS1oZWlnaHQ6IDE7Cn0K LnRlYW0taG0tbWFya2VyLW5hbWUgewogICAgZm9udC1zdHlsZTogaXRhbGljOyBjb2xvcjogdmFy KC0tdGV4dC1tdXRlZCkgIWltcG9ydGFudDsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpICFp bXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDsKfQoudGVhbS1obS1tYXJrZXIt Y2VsbCB7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRh cnkpOyBmb250LXdlaWdodDogNjAwOyBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IH0KLyogY29sc3Bh bi1aZWxsZW4gKHp1c2FtbWVuaGFlbmdlbmRlIEZlcmllbiwgbWVocnRhZWdpZ2UgU29uZGVydGVy bWluZSk6CiAgIGV0d2FzIG1laHIgUGFkZGluZywga2VpbiBtYXgtd2lkdGgtTGltaXQsIFRleHQg YmxlaWJ0IHplbnRyaWVydCBpbgogICBkZXIgZ2VzYW10ZW4gU3Bhbm5lLiAqLwoudGVhbS1obS1t YXJrZXItY2VsbFtjb2xzcGFuXSB7IHBhZGRpbmc6IDAgNHB4ICFpbXBvcnRhbnQ7IGZvbnQtc2l6 ZTogdmFyKC0tZnMteHMpOyB3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0 ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgbWF4LXdpZHRoOiBub25lOyB9Ci50ZWFtLWhtLW1hcmtl ci1jZWxsLm1hcmtlci1mZWllciAgICAgICAgeyBiYWNrZ3JvdW5kOiAjQzAzOTJCOyBjb2xvcjog I2ZmZjsgfQoudGVhbS1obS1tYXJrZXItY2VsbC5tYXJrZXItZmVyaWVuICAgICAgIHsgYmFja2dy b3VuZDogIzI5ODBCOTsgY29sb3I6ICNmZmY7IH0KLnRlYW0taG0tbWFya2VyLWNlbGwubWFya2Vy LXNvbmRlcnRlcm1pbiB7IGJhY2tncm91bmQ6ICNFNjdFMjI7IGNvbG9yOiAjZmZmOyBjdXJzb3I6 IHBvaW50ZXI7IH0KLnRlYW0taG0tbWFya2VyLWNlbGwubWFya2VyLXNvbmRlcnRlcm1pbjpob3Zl ciB7IGJhY2tncm91bmQ6ICNEMzU0MDA7IH0KCi8qIE5hbWUtU3BhbHRlICovCi50ZWFtLWhtLXRh YmVsbGUgLnRlYW0taG0tbmFtZSB7CiAgICB3aWR0aDogMTMwcHg7IG1pbi13aWR0aDogMTMwcHg7 IG1heC13aWR0aDogMTMwcHg7IHRleHQtYWxpZ246IGxlZnQ7IHBhZGRpbmc6IDJweCA2cHg7CiAg ICBmb250LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgYmFja2dyb3Vu ZDogdmFyKC0tYmctY2FyZC1hbHQpOyB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgb3ZlcmZsb3c6 IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICBwb3NpdGlvbjogc3RpY2t5OyBs ZWZ0OiAwOyB6LWluZGV4OiAxOwp9Ci50ZWFtLWhtLWNsaWNrYWJsZSB7IGN1cnNvcjogcG9pbnRl cjsgdXNlci1zZWxlY3Q6IG5vbmU7IH0KLnRlYW0taG0tY2xpY2thYmxlOmhvdmVyIHsgYmFja2dy b3VuZDogdmFyKC0tYmctaG92ZXIpOyB9Ci50ZWFtLWhtLXRvZ2dsZSB7IGRpc3BsYXk6IGlubGlu ZS1ibG9jazsgd2lkdGg6IDEwcHg7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgZm9udC1zaXpl OiA5cHg7IH0KCi8qIERldGFpbC1aZWlsZW4gKi8KLnRlYW0taG0tcm93LWRldGFpbCB7IGJhY2tn cm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgfQoudGVhbS1obS1uYW1lLWRldGFpbCB7IGZvbnQt d2VpZ2h0OiA0MDAgIWltcG9ydGFudDsgcGFkZGluZy1sZWZ0OiAxNnB4ICFpbXBvcnRhbnQ7IGZv bnQtc2l6ZTogdmFyKC0tZnMteHMpOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpICFpbXBv cnRhbnQ7IH0KLnRlYW0taG0tY2VsbC1kZXRhaWwgeyBmb250LXNpemU6IDhweDsgY29sb3I6IHZh cigtLXRleHQtbXV0ZWQpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsgfQoudGVhbS1obS1j ZWxsLWRldGFpbC1kaWVuc3QgeyBiYWNrZ3JvdW5kOiByZ2JhKDM5LCAxNzQsIDk2LCAwLjE1KTsg Y29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KCi8qIEFtcGVs LUZhcmJlbiBmdWVyIGFsbGUgSGVhdG1hcC1aZWxsZW4gKi8KLnRlYW0taG0tY2VsbC50ZWFtLXIg ICAgeyBiYWNrZ3JvdW5kOiAjQzAzOTJCOyBjb2xvcjogI2ZmZjsgZm9udC13ZWlnaHQ6IDcwMDsg fQovKiAxIGRhID0gbmV1dHJhbCBzdGF0dCBnZWxiIChVc2VyLUFlbmRlcnVuZyAyMDI2LTA1KSDi gJQgYmV3dXNzdCBrZWluIEtvbnRyYXN0LAogICB1bSBHb2xkIHVuZCAiMSBkYSIgdW50ZXJzY2hl aWRiYXIgenUgaGFsdGVuLiAqLwoudGVhbS1obS1jZWxsLnRlYW0tbiAgICB7IGJhY2tncm91bmQ6 IHZhcigtLWJnLWNhcmQpOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgZm9udC13ZWlnaHQ6 IDYwMDsgfQovKiBHcmF1ID0gbmllbWFuZCBpbSBEaWVuc3QsIGFiZXIgbWluZC4gMSBQZXJzb24g bGVnaXRpbSBhYndlc2VuZAogICAoVXJsL2tyL0t1ci9MZWhyZ2FuZ+KApikuIEtlaW4gcm90ZXIg U3RhdHVzLCB3ZWlsIGRhcyBUZWFtIG5pY2h0IGhhZXR0ZQogICBrb21wbGV0dCBiZXNldHp0IHNl aW4gbXVlc3Nlbi4gKi8KLnRlYW0taG0tY2VsbC50ZWFtLWdyYXUgeyBiYWNrZ3JvdW5kOiB2YXIo LS1iZy1jYXJkLWFsdCk7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgfQoudGVhbS1obS1jZWxs LnRlYW0tZyAgICB7IGJhY2tncm91bmQ6ICMyN0FFNjA7IGNvbG9yOiAjZmZmOyBmb250LXdlaWdo dDogNzAwOyB9Ci50ZWFtLWhtLWNlbGwudGVhbS1nb2xkIHsgYmFja2dyb3VuZDogI0Q0QUMwRDsg Y29sb3I6ICNmZmY7IGZvbnQtd2VpZ2h0OiA3MDA7IH0KCi8qIEJhbGtlbi1TZWdtZW50IGZ1ZXIg ZGVuIGdyYXVlbiBBbnRlaWwgKi8KLnRlYW0tYmFsa2VuLXNlZy50ZWFtLWdyYXUgeyBiYWNrZ3Jv dW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IH0K Ci8qIFN1Yi1TZWt0aW9uIGluIGRlciBIZWF0bWFwOiBWSTMtREdMLVZlcmFudHdvcnR1bmcgTmVi ZW53YWNoZW4uICovCi50ZWFtLWhtLXN1Yi1oZWFkZXIgdGggewogICAgdGV4dC1hbGlnbjogbGVm dCAhaW1wb3J0YW50OyBwYWRkaW5nOiA2cHggMTBweCAhaW1wb3J0YW50OwogICAgZm9udC1zaXpl OiB2YXIoLS1mcy1zbSk7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRp bmcpOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXItdG9wOiAycHgg c29saWQgdmFyKC0tdGV4dC1tdXRlZCkgIWltcG9ydGFudDsKICAgIHBvc2l0aW9uOiBzdGlja3k7 IGxlZnQ6IDA7Cn0KLyogTmViZW53YWNoZW4tREdMLVplbGxlbjogb2huZSBBbXBlbCA9IGdyYXUg KGtlaW4gREdMLUVpbnNhdHopLCBtaXQgLnRlYW0tZwogICA9IGdydWVuICgxLi8yLiBWSTMtREdM IGRlcyBUYWdlcyBhdXMgZGllc2VtIFRlYW0gYmVzZXR6dCkuICovCi50ZWFtLWhtLW53LWNlbGwg eyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IH0KCi8qIEJhbGtlbmRpYWdyYW1tIFRh Z2VzLUFudGVpbGUgKi8KLnN0YXRzLXRlYW0tYmFsa2VuLWtvcGYgeyBkaXNwbGF5OiBmbGV4OyBq dXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IG1hcmdp bjogMTJweCAwIDZweDsgcGFkZGluZy10b3A6IDEycHg7IGJvcmRlci10b3A6IDFweCBzb2xpZCB2 YXIoLS1ib3JkZXItbGlnaHQpOyB9Ci5zdGF0cy10ZWFtLWJhbGtlbi1rb3BmIGg0IHsgZm9udC1z aXplOiB2YXIoLS1mcy1iYXNlKTsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXRleHQt aGVhZGluZyk7IG1hcmdpbjogMDsgfQouc3RhdHMtdGVhbS1zb3J0LWdydXBwZSB7IGZsZXgtd3Jh cDogd3JhcDsgfQouc3RhdHMtdGVhbS1iYWxrZW4geyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVj dGlvbjogY29sdW1uOyBnYXA6IDNweDsgfQoudGVhbS1iYWxrZW4td3JhcCB7IGRpc3BsYXk6IGZs ZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogM3B4OyB9Ci50ZWFtLWJhbGtlbi16ZWls ZSB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMTMwcHggMWZyIDUwcHg7 IGdhcDogOHB4OyBhbGlnbi1pdGVtczogY2VudGVyOyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsg fQoudGVhbS1iYWxrZW4tbmFtZSB7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiB2YXIoLS10ZXh0 LWhlYWRpbmcpOyB3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92 ZXJmbG93OiBlbGxpcHNpczsgfQoudGVhbS1iYWxrZW4tYmFyLXdyYXAgeyBkaXNwbGF5OiBmbGV4 OyBoZWlnaHQ6IDE4cHg7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgYm9yZGVyLXJh ZGl1czogdmFyKC0tcmFkaXVzLXhzKTsgb3ZlcmZsb3c6IGhpZGRlbjsgfQoudGVhbS1iYWxrZW4t c2VnIHsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29u dGVudDogY2VudGVyOwogICAgZm9udC1zaXplOiA5cHg7IGNvbG9yOiAjZmZmOyBmb250LXdlaWdo dDogNzAwOwogICAgdHJhbnNpdGlvbjogd2lkdGggMC40cyBlYXNlOwogICAgLyogTWluZGVzdGJy ZWl0ZSBOVVIgZnVlciBzaWNodGJhcmVuIEZhcmJiYWxrZW4g4oCUIGtlaW4gZmxleC1zaHJpbms6 MAogICAgICAgKGRhcyBoYXR0ZSBkaWUgUHJvcG9ydGlvbmVuIGFuZGVyZXIgU2VnbWVudGUgdmVy emVycnQsIHdlaWwgZ3Jvc3NlCiAgICAgICBTZWdtZW50ZSBuaWNodCBtZWhyIHNjaHJ1bXBmZW4g ZHVyZnRlbiwgdW0gZGVtIG1pbi13aWR0aCBQbGF0eiB6dQogICAgICAgbWFjaGVuKS4gNHB4IHJl aWNodCBmdWVyIGVpbmVuIGVya2VubmJhcmVuIFN0cmljaCBhdWNoIGJlaSAwLjctMSAlLgogICAg ICAgRGllIFphaGwgd2lyZCBpbiBzb2xjaCBzY2htYWxlbiBTZWdtZW50ZW4gTklDSFQgbWVociBl aW5nZXJlbmRlcnQKICAgICAgIChzaWVoZSBtaW5QY3QtTG9naWsgaW4gaGVscGRlc2suanMpLCBk ZXIgVG9vbHRpcCBsaWVmZXJ0IGRlbiBXZXJ0CiAgICAgICBiZWltIEhvdmVyLiAqLwogICAgbWlu LXdpZHRoOiA0cHg7Cn0KLnRlYW0tYmFsa2VuLXRvdGFsIHsgdGV4dC1hbGlnbjogcmlnaHQ7IGZv bnQtd2VpZ2h0OiA3MDA7IGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7IGNvbG9y OiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IH0KCi8qIEFtcGVsLUZhcmJlbiBhdWNoIGltIEJhbGtl biAqLwoudGVhbS1iYWxrZW4tc2VnLnRlYW0tciAgICB7IGJhY2tncm91bmQ6ICNDMDM5MkI7IH0K LyogdGVhbS1uICgxIFBlcnNvbiBpbSBEaWVuc3QpIGhhdHRlIGRlbnNlbGJlbiBHcmF1LUJhY2tn cm91bmQgd2llCiAgIHRlYW0tZ3JhdSAobGVnaXRpbSBhYndlc2VuZCkg4oCUIGJlaW0gU3RhcGVs biBuaWNodCB1bnRlcnNjaGVpZGJhci4KICAgSmV0enQgc2FuZnRlciBLaGFraS1Ub246IHZpc3Vl bGwgZGV1dGxpY2ggIm5vY2ggaW4gZGVyIE5hZWhlIHZvbgogICBncmF1IiwgYWJlciBhYmdyZW56 YmFyLiAqLwoudGVhbS1iYWxrZW4tc2VnLnRlYW0tbiAgICB7IGJhY2tncm91bmQ6ICNENURCREI7 IGNvbG9yOiAjMzQ0OTVFOyB9Ci50ZWFtLWJhbGtlbi1zZWcudGVhbS1nICAgIHsgYmFja2dyb3Vu ZDogIzI3QUU2MDsgfQoudGVhbS1iYWxrZW4tc2VnLnRlYW0tZ29sZCB7IGJhY2tncm91bmQ6ICNE NEFDMEQ7IH0KLyogRHVlbm5lIFRyZW5ubGluaWUgendpc2NoZW4gYXVmZWluYW5kZXJmb2xnZW5k ZW4gU2VnbWVudGVuIOKAlCBoaWxmdCwKICAgZGllIEdyZW56ZW4gYXVjaCB6d2lzY2hlbiBhZWhu bGljaCBnZWZhZXJidGVuIEJsb2Vja2VuIChncmF1IC8KICAgbmV1dHJhbCwgZ3J1ZW4gLyBnb2xk KSBhdWYgZWluZW4gQmxpY2sgenUgc2VoZW4uIDEgcHggaW4gZGVyCiAgIEJvcmRlci1MaWdodC1G YXJiZSwgZmFlbGx0IGJlaSBrb250cmFzdHJlaWNoZW4gV2VjaHNlbG4gKHJvdC9ncmF1LAogICBn cnVlbi9nb2xkKSBvcHRpc2NoIGthdW0gYXVmLiAqLwoudGVhbS1iYWxrZW4tc2VnICsgLnRlYW0t YmFsa2VuLXNlZyB7IGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsg fQoKLyogU29uZGVydGVybWluLURldGFpbC1Nb2RhbCAqLwouc29uZGVydGVybWluLWRldGFpbCB7 IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMTBweDsgfQouc29u ZGVydGVybWluLWVpbnRyYWcgeyBwYWRkaW5nOiAxMHB4IDEycHg7IGJvcmRlci1sZWZ0OiA0cHgg c29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQp OyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOyB9Ci5zb25kZXJ0ZXJtaW4td2FybnVu ZyB7IGJvcmRlci1sZWZ0LWNvbG9yOiAjQzAzOTJCOyB9Ci5zb25kZXJ0ZXJtaW4taGlud2VpcyB7 IGJvcmRlci1sZWZ0LWNvbG9yOiAjMjk4MEI5OyB9Ci5zb25kZXJ0ZXJtaW4ta29wZiB7IGZvbnQt c2l6ZTogdmFyKC0tZnMtYmFzZSk7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBtYXJnaW4t Ym90dG9tOiA0cHg7IH0KLnNvbmRlcnRlcm1pbi10ZXh0IHsgZm9udC1zaXplOiB2YXIoLS1mcy1i YXNlKTsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgd2hpdGUtc3BhY2U6IHByZS13cmFw OyB9CgouYWJ3LWdyaWQgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJl cGVhdChhdXRvLWZpbGwsIG1pbm1heCgxMzBweCwgMWZyKSk7IGdhcDogOHB4OyB9Ci5hYncta2Fy dGUgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXItcmFkaXVzOiA4 cHg7IHBhZGRpbmc6IDEycHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IGJvcmRlcjogMXB4IHNv bGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMg ZWFzZTsgY3Vyc29yOiBkZWZhdWx0Owp9Ci5hYncta2FydGU6aG92ZXIgeyB0cmFuc2Zvcm06IHRy YW5zbGF0ZVkoLTFweCk7IH0KLmFidy1rYXJ0ZS1pY29uIHsgZm9udC1zaXplOiAyMHB4OyBtYXJn aW4tYm90dG9tOiA0cHg7IH0KLmFidy1rYXJ0ZS13ZXJ0IHsgZm9udC1zaXplOiAyNHB4OyBmb250 LXdlaWdodDogODAwOyBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOyB9Ci5hYnct a2FydGUtbGFiZWwgeyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgY29sb3I6IHZhcigtLXRleHQt bXV0ZWQpOyBmb250LXdlaWdodDogNjAwOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBtYXJn aW4tdG9wOiAycHg7IH0KLmFidy1rYXJ0ZS1kZXRhaWwgeyBmb250LXNpemU6IHZhcigtLWZzLXhz KTsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgbWFyZ2luLXRvcDogNnB4OyBsaW5lLWhl aWdodDogMS40OyB9Ci5hYnctcGVyc29uZW4geyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgY29s b3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgbWFyZ2luLXRvcDogOHB4OyB0ZXh0LWFsaWduOiBs ZWZ0OyBtYXgtaGVpZ2h0OiAwOyBvdmVyZmxvdzogaGlkZGVuOyB0cmFuc2l0aW9uOiBtYXgtaGVp Z2h0IDAuM3MgZWFzZTsgfQouYWJ3LWthcnRlLm9mZmVuIC5hYnctcGVyc29uZW4geyBtYXgtaGVp Z2h0OiAzMDBweDsgfQoKLyogPT09PT0gV29jaGVucGxhbiA9PT09PSAqLwoud3AtbGF5b3V0IHsK ICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGZsZXg6IDE7IG92ZXJm bG93OiBoaWRkZW47Cn0KLndwLXRvb2xiYXIgewogICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRl bXM6IGNlbnRlcjsgZ2FwOiA2cHg7CiAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgIGJhY2tncm91 bmQ6IHZhcigtLWJnLXRvb2xiYXIpOwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigt LWJvcmRlci1jb2xvcik7Cn0KLndwLXplaXRyYXVtLWFuemVpZ2UgewogICAgZm9udC1zaXplOiB2 YXIoLS1mcy1sZyk7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcp OwogICAgbWFyZ2luLWxlZnQ6IDhweDsKfQoud3Atc2Nyb2xsIHsKICAgIGZsZXg6IDE7IG92ZXJm bG93OiBhdXRvOyBwYWRkaW5nOiAxNnB4Owp9Ci8qIERpZSBhbHRlIHN0YXRpc2NoZSBXb2NoZW5w bGFuLTx0YWJsZT4gKC53cC10YWJlbGxlLy53cC10aC0qLy53cC10ZC10cmVubmVyKQogICB3dXJk ZSBtaXQgZGVtIEF1ZGl0IDIwMjYtMDYtMTUgZW50ZmVybnQg4oCUIGRlciBSZW5kZXIgbGFldWZ0 IHVlYmVyIGRhcwogICBUYWdibG9jay1MYXlvdXQgKC53cC10YWdibG9jayovLndwLXRsLSopLiBE aWUgenVnZWhvZXJpZ2VuIFRhYmVsbGVuLVN0aWxlCiAgIHNpbmQgaGllciBlcnNhdHpsb3MgZ2Vz dHJpY2hlbi4gKC53cC1zY2hpY2h0LSogYmxlaWJ0IOKAlCB3aXJkIHZvbSBUYWdibG9jawogICB3 ZWl0ZXJ2ZXJ3ZW5kZXQuKSAqLwoKLndwLXNjaGljaHQtZnJ1ZWggeyBib3JkZXItbGVmdDogM3B4 IHNvbGlkIHZhcigtLWZhcmJlLWZydWVoKTsgfQoud3Atc2NoaWNodC1zcGFldCB7IGJvcmRlci1s ZWZ0OiAzcHggc29saWQgdmFyKC0tZmFyYmUtc3BhZXQpOyB9Ci53cC1zY2hpY2h0LW5hY2h0IHsg Ym9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS1mYXJiZS1uYWNodCk7IH0KCi8qIFRhZ2VzLVNw YWx0ZTogV29jaGVudGFnICsgRGF0dW0gKyBNZXRhIChGZWllcnRhZywgU29uZGVydGFnLCBHZWJ1 cnRzdGFnLCBTdMOkcmtlKSAqLwoud3AtdGQtdGFnIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJn LWNhcmQtYWx0KTsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3AgIWltcG9ydGFudDsKICAgIHBhZGRp bmc6IDZweCAxMHB4ICFpbXBvcnRhbnQ7CiAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCB2YXIo LS1ib3JkZXItc3Ryb25nKTsKfQoud3AtdGFnLWtvcGYgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRp cmVjdGlvbjogY29sdW1uOyBnYXA6IDNweDsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IH0KLndw LXRhZy13dCB7IGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOyBjb2xv cjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQoud3AtdGFnLWRhdHVtIHsgZm9udC13ZWlnaHQ6IDYw MDsgfQoud3AtdGFnLWZ0LW5hbWUgeyBjb2xvcjogdmFyKC0tZmFyYmUtZmVobGVyKTsgZm9udC13 ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiB2YXIoLS1mcy14cyk7IH0KLndwLXRhZy1mZXJpZW4tbmFt ZSB7IGNvbG9yOiAjZTY3ZTIyOyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IHZhcigtLWZz LXhzKTsgfQoud3AtdGFnLXNvbmRlci1oaW53ZWlzIHsgY29sb3I6ICM0YTkwZTI7IGZvbnQtc2l6 ZTogdmFyKC0tZnMteHMpOyB9Ci53cC10YWctc29uZGVyLXdhcm51bmcgeyBjb2xvcjogI2U2N2Uy MjsgZm9udC1zaXplOiB2YXIoLS1mcy14cyk7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KLndwLXRhZy1n YiB7IGNvbG9yOiAjZDRhMDE3OyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgfQoud3AtdGFnLW1l dGEgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDZweDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgbWFyZ2lu LXRvcDogMnB4OyB9Ci53cC10YWctc3RhZXJrZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7 IHBhZGRpbmc6IDFweCA1cHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14cyk7CiAgICBm b250LWZhbWlseTogbW9ub3NwYWNlOyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgZm9udC13ZWln aHQ6IDcwMDsKICAgIGNvbG9yOiAjZmZmOwp9Ci53cC10YWctc3RhZXJrZS1vayB7IGJhY2tncm91 bmQ6IHZhcigtLWZhcmJlLWVyZm9sZyk7IH0KLndwLXRhZy1zdGFlcmtlLXdhcm4geyBiYWNrZ3Jv dW5kOiB2YXIoLS1mYXJiZS1mZWhsZXIpOyBhbmltYXRpb246IHB1bHNSb3QgMnMgZWFzZS1pbi1v dXQgaW5maW5pdGU7IH0KLndwLXRhZy1hYncgeyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgY29s b3I6IHZhcigtLXRleHQtbXV0ZWQpOyBjdXJzb3I6IGhlbHA7IH0KCi8qIFRhZ2VzLUJsb2NrIEhp bnRlcmdydW5kLVZhcmlhbnRlbiAqLwoud3AtdGFnLWhldXRlIC53cC10ZC10YWcgeyBiYWNrZ3Jv dW5kOiB2YXIoLS10YWctaGV1dGUpOyBjb2xvcjogI2ZmZjsgfQoud3AtdGFnLWhldXRlIC53cC10 ZC10YWcgLndwLXRhZy13dCwgLndwLXRhZy1oZXV0ZSAud3AtdGQtdGFnIC53cC10YWctZGF0dW0g eyBjb2xvcjogI2ZmZjsgfQoud3AtdGFnLWZ0IC53cC10ZC10YWcgeyBiYWNrZ3JvdW5kOiB2YXIo LS10YWctZmVpZXJ0YWcpOyBjb2xvcjogIzJDM0U1MDsgfQoud3AtdGFnLXdlIC53cC10ZC10YWcg eyBiYWNrZ3JvdW5kOiB2YXIoLS10YWctd29jaGVuZW5kZSk7IGNvbG9yOiAjMkMzRTUwOyB9Ci53 cC10YWctd2UgLndwLXRkLXRhZyAud3AtdGFnLXd0LCAud3AtdGFnLXdlIC53cC10ZC10YWcgLndw LXRhZy1kYXR1bSB7IGNvbG9yOiAjNEE2QThDOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC53cC10 YWctZnQgLndwLXRkLXRhZyB7IGNvbG9yOiAjRThFRUY1OyB9CltkYXRhLXRoZW1lPSJuaWdodCJd IC53cC10YWctd2UgLndwLXRkLXRhZywKW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLndwLXRhZy13ZSAu d3AtdGQtdGFnIC53cC10YWctd3QsCltkYXRhLXRoZW1lPSJuaWdodCJdIC53cC10YWctd2UgLndw LXRkLXRhZyAud3AtdGFnLWRhdHVtIHsgY29sb3I6ICNDOUQ2RTQ7IH0KCi8qIExlaWNodGUgSGlu dGVyZ3J1bmQtRWluZsOkcmJ1bmcgaW4gTmFtZW5zemVsbGVuIGFtIEZUL1dFICovCi53cC10YWct ZnQgLndwLXRkLW5hbWUsIC53cC10YWctZnQgLndwLXRkLWRuciB7IGJhY2tncm91bmQ6IHJnYmEo NjAsOTAsMTMwLDAuMDkpOyB9Ci53cC10YWctd2UgLndwLXRkLW5hbWUsIC53cC10YWctd2UgLndw LXRkLWRuciB7IGJhY2tncm91bmQ6IHJnYmEoNjAsOTAsMTMwLDAuMDUpOyB9Ci53cC10YWctaGV1 dGUgLndwLXRkLW5hbWUsIC53cC10YWctaGV1dGUgLndwLXRkLWRuciB7IGJhY2tncm91bmQ6IHJn YmEoMjEyLDE2MCwyMywwLjEwKTsgfQoKLyogVGFnZXNibG9jay1UcmVubmthbnRlICovCi53cC16 ZWlsZS10YWctZW5kZSB0ZCB7IGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1ib3JkZXIt c3Ryb25nKTsgfQoKLyogTmFtZW4tWmVsbGVuICovCi53cC10ZC1uYW1lIHsgcGFkZGluZzogMnB4 IDZweCAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KLndwLW5hbWUgewogICAgZGlz cGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogMCA0cHg7CiAgICBmb250LXNpemU6IHZh cigtLWZzLXNtKTsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFw Owp9Ci53cC1uYW1lLXZlcmFudHcgewogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGNvbG9yOiB2 YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRDRBMDE3Owog ICAgcGFkZGluZy1sZWZ0OiA1cHg7Cn0KLndwLW5hbWUtZmJwIHsgZm9udC1zdHlsZTogaXRhbGlj OyB9Ci53cC1uYW1lLWZicCBzdXAgeyBjb2xvcjogI2Q0YTAxNzsgZm9udC13ZWlnaHQ6IDcwMDsg bWFyZ2luLWxlZnQ6IDFweDsgfQovKiA9PT09PSBXb2NoZW5wbGFuOiBUYWdlc2Jsw7Zja2UgKEJp bGRzY2hpcm0gKyBCYXNpcyBmw7xycyBEcnVja2VuKSA9PT09PSAqLwoud3Atc2VpdGUgewogICAg YmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7IHBhZGRpbmc6IDE2cHggMThweDsKICAgIG1hcmdp bjogMTJweDsKICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLDAsMCwwLjA2KTsKICAg IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7Cn0KLndwLXNlaXRlLWtvcGYgeyBtYXJn aW4tYm90dG9tOiAxMHB4OyBwYWRkaW5nLWJvdHRvbTogOHB4OyBib3JkZXItYm90dG9tOiAycHgg c29saWQgdmFyKC0tYmctcHJpbWFyeSk7IH0KLndwLXNlaXRlLWtvcGYgaDEgewogICAgZm9udC1z aXplOiAxNXB4OyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsK ICAgIGxldHRlci1zcGFjaW5nOiAwLjNweDsgbWFyZ2luOiAwOwp9Ci53cC1zZWl0ZS1rb3BmIGgx IHN0cm9uZyB7IGNvbG9yOiB2YXIoLS1iZy1wcmltYXJ5KTsgfQoKLndwLXRhZ2Jsb2NrIHsKICAg IGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDE0MHB4IDFmcjsKICAg IG1hcmdpbi1ib3R0b206IDRweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJnLXByaW1h cnkpOwogICAgYmFja2dyb3VuZDogI2ZmZjsKfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAud3AtdGFn YmxvY2sgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsgYm9yZGVyLWNvbG9yOiAjM2E0ZDYw OyB9Cgoud3AtdGFnYmxvY2stbGFiZWwgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFy eSk7IGNvbG9yOiAjZmZmOwogICAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVt bjsgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAg IHBhZGRpbmc6IDZweCA4cHg7IHRleHQtYWxpZ246IGxlZnQ7IGdhcDogMDsKfQoud3AtdGwta29w ZiB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogYmFzZWxpbmU7IGdhcDogNnB4Owog ICAgcGFkZGluZy1ib3R0b206IDRweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2Jh KDI1NSwyNTUsMjU1LDAuMik7Cn0KLndwLXRsLXd0IHsgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7 IGZvbnQtd2VpZ2h0OiA3MDA7IGxldHRlci1zcGFjaW5nOiAwLjVweDsgfQoud3AtdGwtZGF0dW0g eyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgb3BhY2l0 eTogMC45OyB9Ci53cC10bC16dXNhdHotYm94IHsKICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGly ZWN0aW9uOiBjb2x1bW47IGdhcDogM3B4OyBtYXJnaW4tdG9wOiAxNHB4OyB3aWR0aDogMTAwJTsK fQoud3AtdGwtenVzYXR6IHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOyBwYWRkaW5nOiAy cHggNXB4OyBib3JkZXItcmFkaXVzOiAycHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUs MjU1LDAuMTUpOyBsaW5lLWhlaWdodDogMS4zOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgb3Zl cmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB0ZXh0LWFsaWduOiBs ZWZ0Owp9Ci53cC10bC16LWZ0IHsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjAwLDIwMCwwLjI1KTsg Zm9udC13ZWlnaHQ6IDcwMDsgfQoud3AtdGwtei13YXJudW5nIHsgYmFja2dyb3VuZDogcmdiYSgy NTUsMTgwLDEwMCwwLjMpOyB9Ci53cC10bC16LWZlcmllbiB7IGJhY2tncm91bmQ6IHJnYmEoMjMw LDEyNiwzNCwwLjIwKTsgfQoud3AtdGwtei1oaW53ZWlzIHsgYmFja2dyb3VuZDogcmdiYSg3NCwx NDQsMjI2LDAuMjApOyB9Ci53cC10bC16LWdiIHsgYmFja2dyb3VuZDogcmdiYSgyMTIsMTYwLDIz LDAuMjIpOyB9Cgoud3AtdGFnYmxvY2staW5oYWx0IHsgcGFkZGluZzogMDsgfQoKLndwLXRhZ2Js b2NrLXRhYmVsbGUgewogICAgd2lkdGg6IDEwMCU7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7 IHRhYmxlLWxheW91dDogZml4ZWQ7CiAgICBmb250LXNpemU6IHZhcigtLWZzLWJhc2UpOwp9Ci53 cC10YWdibG9jay10YWJlbGxlIHRoLAoud3AtdGFnYmxvY2stdGFiZWxsZSB0ZCB7CiAgICBib3Jk ZXI6IDFweCBzb2xpZCAjYzhjZWQ0OwogICAgcGFkZGluZzogM3B4IDZweDsKICAgIHZlcnRpY2Fs LWFsaWduOiBtaWRkbGU7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CltkYXRhLXRoZW1lPSJuaWdo dCJdIC53cC10YWdibG9jay10YWJlbGxlIHRoLApbZGF0YS10aGVtZT0ibmlnaHQiXSAud3AtdGFn YmxvY2stdGFiZWxsZSB0ZCB7IGJvcmRlci1jb2xvcjogIzNhNGQ2MDsgfQoKLndwLXRhZy1oMSB0 aCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmltYXJ5KTsgY29sb3I6ICNmZmY7CiAgICBm b250LXdlaWdodDogNzAwOyBmb250LXNpemU6IHZhcigtLWZzLWJhc2UpOyB0ZXh0LWFsaWduOiBj ZW50ZXI7CiAgICBwYWRkaW5nOiA0cHggNnB4OwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0t YmctcHJpbWFyeSk7Cn0KLndwLXRhZy1oMSB0aC53cC1oMS1kZ2wgeyBib3JkZXItcmlnaHQ6IDJw eCBzb2xpZCAjZmZmOyB9Cgoud3AtdGFnLWgyIHRoIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJn LXByaW1hcnktZGFyayk7IGNvbG9yOiAjZmZmOwogICAgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1z aXplOiB2YXIoLS1mcy1zbSk7IHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBhZGRpbmc6IDJweCA2 cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1iZy1wcmltYXJ5KTsKICAgIHRleHQtdHJh bnNmb3JtOiB1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOiAwLjNweDsKfQoKLndwLXRhZ2Jsb2Nr LXRhYmVsbGUgdGQgewogICAgaGVpZ2h0OiAyMnB4OyBtaW4taGVpZ2h0OiAyMnB4OwogICAgZm9u dC1zaXplOiB2YXIoLS1mcy1zbSk7Cn0KLndwLXRhZ2Jsb2NrLXRhYmVsbGUgdGQud3Atc2NoaWNo dC1mcnVlaCB7IGJhY2tncm91bmQ6IHJnYmEoMTgzLDI4LDI4LDAuMDUpOyB9Ci53cC10YWdibG9j ay10YWJlbGxlIHRkLndwLXNjaGljaHQtc3BhZXQgeyBiYWNrZ3JvdW5kOiByZ2JhKDI2LDgyLDEx OCwwLjA1KTsgfQoud3AtdGFnYmxvY2stdGFiZWxsZSB0ZC53cC1zY2hpY2h0LW5hY2h0IHsgYmFj a2dyb3VuZDogcmdiYSgyNyw5NCwzMiwwLjA1KTsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAud3At dGFnYmxvY2stdGFiZWxsZSB0ZC53cC1zY2hpY2h0LWZydWVoIHsgYmFja2dyb3VuZDogcmdiYSgx ODMsMjgsMjgsMC4xMik7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLndwLXRhZ2Jsb2NrLXRhYmVs bGUgdGQud3Atc2NoaWNodC1zcGFldCB7IGJhY2tncm91bmQ6IHJnYmEoMjYsODIsMTE4LDAuMTUp OyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC53cC10YWdibG9jay10YWJlbGxlIHRkLndwLXNjaGlj aHQtbmFjaHQgeyBiYWNrZ3JvdW5kOiByZ2JhKDI3LDk0LDMyLDAuMTIpOyB9CgovKiBWZXJ0aWth bGUgVHJlbm51bmcgREdMIHwgV0RGL0ZCUCAqLwoud3AtdGFnYmxvY2stdGFiZWxsZSB0ZDpudGgt Y2hpbGQoMyksCi53cC10YWdibG9jay10YWJlbGxlIC53cC10YWctaDIgdGg6bnRoLWNoaWxkKDMp IHsgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgdmFyKC0tYmctcHJpbWFyeSk7IH0KCi53cC1uYW1l IHsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IHdoaXRlLXNwYWNlOiBub3dyYXA7IG92ZXJmbG93 OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7 IG1heC13aWR0aDogMTAwJTsgfQoud3AtbmFtZS1mYnAgeyBmb250LXN0eWxlOiBpdGFsaWM7IH0K LndwLW5hbWUtZmJwIHN1cCB7IGNvbG9yOiAjRDRBMDE3OyBmb250LXdlaWdodDogNzAwOyBtYXJn aW4tbGVmdDogMXB4OyB9CgovKiBUYWctU3RhdHVzLUFremVudGUgKGRlemVudCkgKi8KLndwLXRh Z2Jsb2NrLWhldXRlIHsgb3V0bGluZTogMnB4IHNvbGlkICNENEEwMTc7IG91dGxpbmUtb2Zmc2V0 OiAtMXB4OyB9Ci53cC10YWdibG9jay1mdCAud3AtdGFnYmxvY2stbGFiZWwgeyBiYWNrZ3JvdW5k OiAjNEE2QThDOyB9Ci53cC10YWdibG9jay1mdC13aWNodGlnIC53cC10YWdibG9jay1sYWJlbCB7 IGJhY2tncm91bmQ6ICMyQzNFNTA7IH0KLndwLXRhZ2Jsb2NrLXdlIC53cC10YWdibG9jay1sYWJl bCB7IGJhY2tncm91bmQ6ICM1MjgyQTY7IH0KLndwLXRhZ2Jsb2NrLW5zIC53cC10YWdibG9jay1s YWJlbCB7IGJhY2tncm91bmQ6ICMxQTUyNzY7IH0KCi53cC1zZWl0ZS1mdXNzIHsKICAgIG1hcmdp bi10b3A6IDEycHg7IHBhZGRpbmctdG9wOiAxMHB4OwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlk IHZhcigtLWJvcmRlci1saWdodCk7CiAgICBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6 IHNwYWNlLWJldHdlZW47CiAgICBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgY29sb3I6IHZhcigt LXRleHQtbXV0ZWQpOwp9Ci53cC1mdXNzLW5vdGUgc3VwIHsgZm9udC13ZWlnaHQ6IDcwMDsgfQoK LyogPT09PT0gRHJ1Y2stTGF5b3V0IFdvY2hlbnBsYW4g4oCUIDcgVGFnZSArIGplIGJpcyB6dSA4 IFplaWxlbiBhdWYgRUlORVIgQTQtU2VpdGUgPT09PT0gKi8KQG1lZGlhIHByaW50IHsKICAgIEBw YWdlIHsgc2l6ZTogQTQgcG9ydHJhaXQ7IG1hcmdpbjogN21tIDltbTsgfQoKICAgIC8qIEFsbGVz IGF1w59lciBkZW0gV29jaGVucGxhbiBrb21wbGV0dCBhdXMgZGVtIExheW91dCBuZWhtZW4gKGRp c3BsYXk6bm9uZSwKICAgICAgIGRhbWl0IGRlciBCcm93c2VyIGRlbiBJbmhhbHQga29ycmVrdCBw YWdpbmllcmVuIGthbm4g4oCUIHBvc2l0aW9uOmFic29sdXRlCiAgICAgICBmw7xocnQgc29uc3Qg enVtIEFic2NobmVpZGVuIG5hY2ggZGVyIGVyc3RlbiBTZWl0ZSkuICovCiAgICBib2R5LmRydWNr ZW4td29jaGVucGxhbiAuYW5zaWNodDpub3QoI2Fuc2ljaHQtd29jaGVucGxhbiksCiAgICBib2R5 LmRydWNrZW4td29jaGVucGxhbiBoZWFkZXIsCiAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiBu YXYsCiAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAudG9vbGJhciwKICAgIGJvZHkuZHJ1Y2tl bi13b2NoZW5wbGFuIC53cC10b29sYmFyLAogICAgYm9keS5kcnVja2VuLXdvY2hlbnBsYW4gLndw LWxlZ2VuZGUsCiAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAjd3AtZHJ1Y2tlbiwKICAgIGJv ZHkuZHJ1Y2tlbi13b2NoZW5wbGFuICNtb2RhbC1vdmVybGF5LAogICAgYm9keS5kcnVja2VuLXdv Y2hlbnBsYW4gI3RvYXN0LWNvbnRhaW5lciwKICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC5o ZWFkZXIsCiAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAuaGF1cHRuYXYsCiAgICBib2R5LmRy dWNrZW4td29jaGVucGxhbiAuc2VpdGVubGVpc3RlIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50 OyB9CgogICAgYm9keS5kcnVja2VuLXdvY2hlbnBsYW4geyBiYWNrZ3JvdW5kOiAjZmZmICFpbXBv cnRhbnQ7IH0KICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuICNhbnNpY2h0LXdvY2hlbnBsYW4g ewogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogMCAh aW1wb3J0YW50OyBtYXJnaW46IDAgIWltcG9ydGFudDsgYmFja2dyb3VuZDogI2ZmZiAhaW1wb3J0 YW50OwogICAgfQogICAgYm9keS5kcnVja2VuLXdvY2hlbnBsYW4gLndwLXNjcm9sbCwKICAgIGJv ZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC1sYXlvdXQgewogICAgICAgIG92ZXJmbG93OiB2aXNp YmxlICFpbXBvcnRhbnQ7IG1heC1oZWlnaHQ6IG5vbmUgIWltcG9ydGFudDsgaGVpZ2h0OiBhdXRv ICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OyBtYXJnaW46IDAgIWlt cG9ydGFudDsgYmFja2dyb3VuZDogI2ZmZiAhaW1wb3J0YW50OwogICAgICAgIGRpc3BsYXk6IGJs b2NrICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLyogU2VpdGVuLUdydW5kbGF5b3V0ICovCiAgICBi b2R5LmRydWNrZW4td29jaGVucGxhbiAud3Atc2VpdGUgewogICAgICAgIGJhY2tncm91bmQ6ICNm ZmYgIWltcG9ydGFudDsgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdp bjogMCAhaW1wb3J0YW50OyBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgbWF4LXdpZHRo OiBub25lICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDsKICAgIH0KICAg IGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC1zZWl0ZS1rb3BmIHsKICAgICAgICBtYXJnaW4t Ym90dG9tOiAzcHg7IHBhZGRpbmctYm90dG9tOiAzcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTog MS41cHggc29saWQgdmFyKC0tYmctcHJpbWFyeSk7CiAgICB9CiAgICBib2R5LmRydWNrZW4td29j aGVucGxhbiAud3Atc2VpdGUta29wZiBoMSB7IGZvbnQtc2l6ZTogMTFwdDsgbGluZS1oZWlnaHQ6 IDEuMTsgfQoKICAgIC8qIEtlaW4gYmlsZHNjaGlybS1iZXpvZ2VuZXIgT3V0bGluZSBpbSBEcnVj ayAqLwogICAgYm9keS5kcnVja2VuLXdvY2hlbnBsYW4gLndwLXRhZ2Jsb2NrLWhldXRlIHsgb3V0 bGluZTogbm9uZSAhaW1wb3J0YW50OyB9CgogICAgLyogSmVkZXIgVGFnZXNibG9jazoga29tcGFr dCwgYmlzIHp1IDggWmVpbGVuIHBhc3NlbiAqLwogICAgYm9keS5kcnVja2VuLXdvY2hlbnBsYW4g LndwLXRhZ2Jsb2NrIHsKICAgICAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQgIWltcG9ydGFu dDsgYnJlYWstaW5zaWRlOiBhdm9pZCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1ib3R0b206 IDFweDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDkwcHggMWZyICFpbXBvcnRhbnQ7 CiAgICAgICAgYm9yZGVyLXdpZHRoOiAwLjVweDsKICAgIH0KICAgIGJvZHkuZHJ1Y2tlbi13b2No ZW5wbGFuIC53cC10YWdibG9jay1sYWJlbCB7CiAgICAgICAgcGFkZGluZzogMnB4IDRweDsKICAg IH0KICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10bC1rb3BmIHsKICAgICAgICBmbGV4 LWRpcmVjdGlvbjogcm93OyBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgZ2FwOiA0cHg7 IHBhZGRpbmctYm90dG9tOiAycHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMC41cHggc29saWQg cmdiYSgyNTUsMjU1LDI1NSwwLjMpOwogICAgfQogICAgYm9keS5kcnVja2VuLXdvY2hlbnBsYW4g LndwLXRsLXd0IHsgZm9udC1zaXplOiA5cHQ7IGZvbnQtd2VpZ2h0OiA3MDA7IH0KICAgIGJvZHku ZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10bC1kYXR1bSB7IGZvbnQtc2l6ZTogN3B0OyB9CiAgICBi b2R5LmRydWNrZW4td29jaGVucGxhbiAud3AtdGwtenVzYXR6LWJveCB7IG1hcmdpbi10b3A6IDZw eDsgZ2FwOiAxLjVweDsgfQogICAgYm9keS5kcnVja2VuLXdvY2hlbnBsYW4gLndwLXRsLXp1c2F0 eiB7IGZvbnQtc2l6ZTogNnB0OyBwYWRkaW5nOiAwIDJweDsgbGluZS1oZWlnaHQ6IDEuMjsgdGV4 dC1hbGlnbjogbGVmdDsgfQoKICAgIC8qIFRhYmVsbGUg4oCUIGtvbXBha3QgYWJlciBsZXNiYXIg Ki8KICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10YWdibG9jay10YWJlbGxlIHsKICAg ICAgICBmb250LXNpemU6IDdwdDsKICAgIH0KICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53 cC10YWdibG9jay10YWJlbGxlIHRoLAogICAgYm9keS5kcnVja2VuLXdvY2hlbnBsYW4gLndwLXRh Z2Jsb2NrLXRhYmVsbGUgdGQgewogICAgICAgIHBhZGRpbmc6IDAgMS41bW0gIWltcG9ydGFudDsK ICAgICAgICBib3JkZXItd2lkdGg6IDAuNXB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1ICFp bXBvcnRhbnQ7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIH0KICAgIGJvZHku ZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10YWctaDEgdGggeyBmb250LXNpemU6IDhwdDsgaGVpZ2h0 OiAzLjVtbSAhaW1wb3J0YW50OyBwYWRkaW5nOiAwIDEuNW1tICFpbXBvcnRhbnQ7IH0KICAgIGJv ZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10YWctaDIgdGggeyBmb250LXNpemU6IDYuOHB0OyBo ZWlnaHQ6IDIuOW1tICFpbXBvcnRhbnQ7IHBhZGRpbmc6IDAgMS41bW0gIWltcG9ydGFudDsgfQog ICAgYm9keS5kcnVja2VuLXdvY2hlbnBsYW4gLndwLXRhZ2Jsb2NrLXRhYmVsbGUgdGQgewogICAg ICAgIGZvbnQtc2l6ZTogN3B0OyBoZWlnaHQ6IDMuM21tICFpbXBvcnRhbnQ7IG1pbi1oZWlnaHQ6 IDMuM21tICFpbXBvcnRhbnQ7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIH0KICAgIGJv ZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC1uYW1lIHsgZm9udC1zaXplOiA3cHQ7IGxpbmUtaGVp Z2h0OiAxLjA1OyB9CgogICAgYm9keS5kcnVja2VuLXdvY2hlbnBsYW4gLndwLXNlaXRlLWZ1c3Mg ewogICAgICAgIG1hcmdpbi10b3A6IDRweDsgcGFkZGluZy10b3A6IDNweDsKICAgICAgICBmb250 LXNpemU6IDYuNXB0OwogICAgfQoKICAgIC8qIFF1ZXJmb3JtYXQ6IG1laHIgUGxhdHosIGdyw7bD n2VyZSBTY2hyaWZ0ICovCiAgICBAbWVkaWEgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpIHsKICAg ICAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAud3AtdGFnYmxvY2sgewogICAgICAgICAgICBn cmlkLXRlbXBsYXRlLWNvbHVtbnM6IDEzMHB4IDFmciAhaW1wb3J0YW50OwogICAgICAgIH0KICAg ICAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAud3AtdGFnYmxvY2stdGFiZWxsZSB7IGZvbnQt c2l6ZTogOXB0OyB9CiAgICAgICAgYm9keS5kcnVja2VuLXdvY2hlbnBsYW4gLndwLXRhZ2Jsb2Nr LXRhYmVsbGUgdGQgeyBmb250LXNpemU6IDlwdDsgfQogICAgICAgIGJvZHkuZHJ1Y2tlbi13b2No ZW5wbGFuIC53cC1uYW1lIHsgZm9udC1zaXplOiA5cHQ7IH0KICAgICAgICBib2R5LmRydWNrZW4t d29jaGVucGxhbiAud3AtdGwtd3QgeyBmb250LXNpemU6IDExcHQ7IH0KICAgICAgICBib2R5LmRy dWNrZW4td29jaGVucGxhbiAud3AtdGwtZGF0dW0geyBmb250LXNpemU6IDlwdDsgfQogICAgICAg IGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10bC16dXNhdHogeyBmb250LXNpemU6IDdwdDsg cGFkZGluZzogMXB4IDNweDsgfQogICAgICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10 bC16dXNhdHotYm94IHsgbWFyZ2luLXRvcDogOHB4OyBnYXA6IDJweDsgfQogICAgICAgIGJvZHku ZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10YWctaDEgdGggeyBmb250LXNpemU6IDEwcHQ7IH0KICAg ICAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAud3AtdGFnLWgyIHRoIHsgZm9udC1zaXplOiA4 cHQ7IH0KICAgIH0KCiAgICAvKiBIaW50ZXJncnVuZC1GYXJiZW4gaW0gRHJ1Y2sgZXJ6d2luZ2Vu ICovCiAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiwKICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5w bGFuICogewogICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdCAhaW1wb3J0 YW50OwogICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3QgIWltcG9ydGFudDsKICAgICAg ICBjb2xvci1hZGp1c3Q6IGV4YWN0ICFpbXBvcnRhbnQ7CiAgICB9Cn0KCi8qID09PT09IERydWNr LUxheW91dCBQZXJzb2VubGljaGVyIFBsYW4g4oCUIGFsbGUgMTIgTW9uYXRlIGF1ZiBlaW5lciBT ZWl0ZSA9PT09PQogICBXaXIgYmVuYW5udGUgQHBhZ2UtUmVnZWwgKCdwcC1kcnVjaycpIHN0YXR0 IG9yaWVudGF0aW9uLXNwZXppZmlzY2hlciBAcGFnZS0KICAgUmVnZWwgaW0gQG1lZGlhIHByaW50 LUJsb2NrIOKAlCBzb25zdCBrb2xsaWRpZXJ0IHNpZSBtaXQgZGVyIHBvcnRyYWl0LUBwYWdlCiAg IGRlcyBXb2NoZW5wbGFucyAoQnJvd3NlciBuaW1tdCBzb25zdCBudXIgZWluZSkuIFBlciBgcGFn ZTogcHAtZHJ1Y2s7YCBhbiBkZXIKICAgUGVyc3BsYW4tV3VyemVsIHdpcmQgc2llIG51ciBmdWVy IGRpZXNlbiBEcnVjayBha3Rpdi4gKi8KQHBhZ2UgcHAtZHJ1Y2sgeyBzaXplOiBBNCBsYW5kc2Nh cGU7IG1hcmdpbjogNm1tIDhtbTsgfQoKQG1lZGlhIHByaW50IHsKICAgIGJvZHkuZHJ1Y2tlbi1w ZXJzcGxhbiB7IGJhY2tncm91bmQ6ICNmZmYgIWltcG9ydGFudDsgfQoKICAgIC8qIEhlYWRlciwg VG9vbGJhciwgVGFicyB1bmQgYWxsZSBhbmRlcmVuIEFuc2ljaHRlbiBhdXNibGVuZGVuICovCiAg ICBib2R5LmRydWNrZW4tcGVyc3BsYW4gI2tvcGZsZWlzdGUsCiAgICBib2R5LmRydWNrZW4tcGVy c3BsYW4gLmFuc2ljaHQ6bm90KCNhbnNpY2h0LXBlcnNwbGFuKSwKICAgIGJvZHkuZHJ1Y2tlbi1w ZXJzcGxhbiAucHAtdG9vbGJhciwKICAgIGJvZHkuZHJ1Y2tlbi1wZXJzcGxhbiAjcHAtZHJ1Y2tl biwKICAgIGJvZHkuZHJ1Y2tlbi1wZXJzcGxhbiAjbW9kYWwtb3ZlcmxheSwKICAgIGJvZHkuZHJ1 Y2tlbi1wZXJzcGxhbiAjdG9hc3QtY29udGFpbmVyIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50 OyB9CgogICAgYm9keS5kcnVja2VuLXBlcnNwbGFuICNhbnNpY2h0LXBlcnNwbGFuIHsKICAgICAg ICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0 YW50OwogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dy b3VuZDogI2ZmZiAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsgbWFy Z2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFnZTogcHAtZHJ1Y2s7CiAgICB9CiAgICBib2R5 LmRydWNrZW4tcGVyc3BsYW4gLnBwLXNjcm9sbCB7CiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGUg IWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IG1hcmdpbjogMCAhaW1w b3J0YW50OwogICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91 bmQ6ICNmZmYgIWltcG9ydGFudDsKICAgIH0KICAgIGJvZHkuZHJ1Y2tlbi1wZXJzcGxhbiAucHAt dGl0ZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTJwdDsKICAgICAgICBtYXJnaW46IDAgMCAzbW0g MDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgcGFnZS1icmVhay1hZnRlcjog YXZvaWQ7CiAgICB9CgogICAgLyogMTIgTW9uYXRlIGFscyA0LVNwYWx0ZW4tR3JpZCAoNCB4IDMg PSAxMikgKi8KICAgIGJvZHkuZHJ1Y2tlbi1wZXJzcGxhbiAucHAtbW9uYXRlIHsKICAgICAgICBk aXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBy ZXBlYXQoNCwgMWZyKSAhaW1wb3J0YW50OwogICAgICAgIGdhcDogM21tICFpbXBvcnRhbnQ7CiAg ICB9CiAgICAvKiBCdWZmZXItTW9uYXQgKG09MTIgLT4gSmFudWFyIEZvbGdlamFocikgYXVzYmxl bmRlbiwgc29kYXNzIG51ciAxMiBNb25hdGUgZ2VkcnVja3Qgd2VyZGVuICovCiAgICBib2R5LmRy dWNrZW4tcGVyc3BsYW4gLnBwLW1vbmF0Om50aC1jaGlsZCgxMykgeyBkaXNwbGF5OiBub25lICFp bXBvcnRhbnQ7IH0KCiAgICBib2R5LmRydWNrZW4tcGVyc3BsYW4gLnBwLW1vbmF0IHsKICAgICAg ICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9y dGFudDsKICAgICAgICBib3JkZXItd2lkdGg6IDFweCAhaW1wb3J0YW50OwogICAgICAgIHBhZ2Ut YnJlYWstaW5zaWRlOiBhdm9pZCAhaW1wb3J0YW50OwogICAgICAgIGJyZWFrLWluc2lkZTogYXZv aWQgIWltcG9ydGFudDsKICAgIH0KICAgIGJvZHkuZHJ1Y2tlbi1wZXJzcGxhbiAucHAtbW9uYXQt a29wZiB7CiAgICAgICAgZm9udC1zaXplOiA5cHQ7CiAgICAgICAgcGFkZGluZzogMnB4IDRweDsK ICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4ycHg7CiAgICB9CiAgICBib2R5LmRydWNrZW4tcGVy c3BsYW4gLnBwLW1vbmF0LWdyaWQgeyBmb250LXNpemU6IDcuNXB0OyB9CiAgICBib2R5LmRydWNr ZW4tcGVyc3BsYW4gLnBwLXd0LWtvcGYgewogICAgICAgIGZvbnQtc2l6ZTogNi41cHQ7CiAgICAg ICAgcGFkZGluZzogMXB4IDA7CiAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4ICFpbXBv cnRhbnQ7CiAgICB9CiAgICBib2R5LmRydWNrZW4tcGVyc3BsYW4gLnBwLXRhZyB7CiAgICAgICAg Zm9udC1zaXplOiA3cHQ7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBtaW4taGVpZ2h0OiAx NHB4OwogICAgfQogICAgYm9keS5kcnVja2VuLXBlcnNwbGFuIC5wcC10YWctbnIgeyBmb250LXNp emU6IDYuNXB0OyB9CiAgICBib2R5LmRydWNrZW4tcGVyc3BsYW4gLnBwLXRhZy13ZXJ0IHsgZm9u dC1zaXplOiA2LjVwdDsgcGFkZGluZzogMCAxcHg7IH0KCiAgICAvKiBadXNhbW1lbmZhc3N1bmcg a29tcGFrdCB1bnRlciBkZW4gTW9uYXRlbiAqLwogICAgYm9keS5kcnVja2VuLXBlcnNwbGFuIC5w cC1zdW1tYXJ5IHsKICAgICAgICBtYXJnaW4tdG9wOiAzbW0gIWltcG9ydGFudDsKICAgICAgICBw YWRkaW5nOiA0cHggOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF2 b2lkICFpbXBvcnRhbnQ7CiAgICB9CiAgICBib2R5LmRydWNrZW4tcGVyc3BsYW4gLnBwLXN1bW1h cnkgaDMgeyBmb250LXNpemU6IDEwcHQ7IG1hcmdpbjogMCAwIDJtbSAwOyB9CiAgICBib2R5LmRy dWNrZW4tcGVyc3BsYW4gLnBwLXN1bW1hcnktZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1j b2x1bW5zOiByZXBlYXQoNywgMWZyKSAhaW1wb3J0YW50OwogICAgICAgIGdhcDogNHB4ICFpbXBv cnRhbnQ7CiAgICB9CiAgICBib2R5LmRydWNrZW4tcGVyc3BsYW4gLnBwLXN0YXQtaXRlbSB7IHBh ZGRpbmc6IDJweCA0cHggIWltcG9ydGFudDsgfQogICAgYm9keS5kcnVja2VuLXBlcnNwbGFuIC5w cC1zdGF0LXphaGwgeyBmb250LXNpemU6IDExcHQgIWltcG9ydGFudDsgfQogICAgYm9keS5kcnVj a2VuLXBlcnNwbGFuIC5wcC1zdGF0LWxhYmVsIHsgZm9udC1zaXplOiA3cHQgIWltcG9ydGFudDsg fQoKICAgIC8qIEhpbnRlcmdydW5kLUZhcmJlbiAoV29jaGVuZW5kZSwgRmVpZXJ0YWcsIFNjaGlj aHRjb2RlcykgZXJ6d2luZ2VuICovCiAgICBib2R5LmRydWNrZW4tcGVyc3BsYW4sCiAgICBib2R5 LmRydWNrZW4tcGVyc3BsYW4gKiB7CiAgICAgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6 IGV4YWN0ICFpbXBvcnRhbnQ7CiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdCAhaW1w b3J0YW50OwogICAgICAgIGNvbG9yLWFkanVzdDogZXhhY3QgIWltcG9ydGFudDsKICAgIH0KfQoK LyogRGllbnN0bnVtbWVyLVplbGxlbiAoZ2VsYiBoaW50ZXJsZWd0KSAqLwoud3AtdGQtZG5yIHsK ICAgIGJhY2tncm91bmQ6IHJnYmEoMjQwLDIxOCw4MCwwLjEyKTsKICAgIHRleHQtYWxpZ246IGNl bnRlcjsKICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICBmb250LXNpemU6IHZhcigtLWZz LXhzKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7Cn0KW2RhdGEtdGhlbWU9Im5p Z2h0Il0gLndwLXRkLWRuciB7IGJhY2tncm91bmQ6IHJnYmEoMTg0LDE2MCwzMiwwLjEwKTsgfQoK LyogRnXDn3plaWxlICovCi53cC1mdXNzemVpbGUgdGQgewogICAgYmFja2dyb3VuZDogdmFyKC0t YmctY2FyZC1hbHQpOwogICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHZhcigtLWJvcmRlci1zdHJv bmcpOwogICAgcGFkZGluZzogNnB4IDEwcHggIWltcG9ydGFudDsKICAgIGZvbnQtc2l6ZTogdmFy KC0tZnMteHMpOwogICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwp9Ci53cC1mdXNzemVpbGUg dGQgPiBzcGFuIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9Ci53cC1mdXNzLWRydWNrIHsgZmxv YXQ6IHJpZ2h0OyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBmb250LXdlaWdodDogNjAw OyB9Ci53cC1mdXNzLW5vdGUgc3VwIHsgY29sb3I6ICNkNGEwMTc7IGZvbnQtd2VpZ2h0OiA3MDA7 IH0KCi8qIEZlaWVydGFnIOKAnndpY2h0aWciIGltIEFkbWluLVRhYiAqLwp0ci5mZWllcnRhZy13 aWNodGlnIHRkIHsgYmFja2dyb3VuZDogcmdiYSgxOTIsMCwwLDAuMDYpOyB9CgovKiBGaWx0ZXIt TGVpc3RlIG9iZXJoYWxiIGRlciBGZWllcnRhZy1UYWJlbGxlICovCi5mZWllcnRhZ2UtZmlsdGVy IHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBnYXA6IDE2cHg7CiAgICBhbGlnbi1pdGVtczogY2Vu dGVyOwogICAgZmxleC13cmFwOiB3cmFwOwogICAgcGFkZGluZzogOHB4IDEycHg7CiAgICBtYXJn aW46IDhweCAwOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwogICAgYm9yZGVy OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigt LXJhZGl1cy1tZCk7CiAgICBmb250LXNpemU6IHZhcigtLWZzLWJhc2UpOwp9Ci5mZWllcnRhZ2Ut ZmlsdGVyIGxhYmVsIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7 IGdhcDogNnB4OyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB9Ci5mZWllcnRhZ2UtZmls dGVyIHNlbGVjdCB7IHBhZGRpbmc6IDNweCA2cHg7IGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7 IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7IGJvcmRlci1yYWRpdXM6IHZh cigtLXJhZGl1cy1zbSk7IGJhY2tncm91bmQ6IHZhcigtLWJnLWlucHV0KTsgY29sb3I6IHZhcigt LXRleHQtcHJpbWFyeSk7IH0KCi8qIEZpbHRlci1BbndlbmR1bmc6IGJlaSBha3RpdmVtIEZpbHRl ciBhbGxlIG5pY2h0IHBhc3NlbmRlbiBaZWlsZW4gYXVzYmxlbmRlbi4KICAgRmlsdGVyLUtsYXNz ZW4gd2VyZGVuIHZvbSBKUyBhbSB0Ym9keSBnZXNldHp0LiAqLwojZmVpZXJ0YWdlLXRib2R5LmZp bHRlci1rYXQtZ2VzZXR6bGljaCAgdHI6bm90KC5mZWllcnRhZy1yb3cta2F0LWdlc2V0emxpY2gp ICB7IGRpc3BsYXk6IG5vbmU7IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0ZXIta2F0LWp1ZWRpc2No ICAgIHRyOm5vdCguZmVpZXJ0YWctcm93LWthdC1qdWVkaXNjaCkgICAgeyBkaXNwbGF5OiBub25l OyB9CiNmZWllcnRhZ2UtdGJvZHkuZmlsdGVyLWthdC1tdXNsaW1pc2NoICB0cjpub3QoLmZlaWVy dGFnLXJvdy1rYXQtbXVzbGltaXNjaCkgIHsgZGlzcGxheTogbm9uZTsgfQojZmVpZXJ0YWdlLXRi b2R5LmZpbHRlci1rYXQtdHVlcmtpc2NoICAgdHI6bm90KC5mZWllcnRhZy1yb3cta2F0LXR1ZXJr aXNjaCkgICB7IGRpc3BsYXk6IG5vbmU7IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0ZXItamFoci0y MDI2ICB0cjpub3QoLmZlaWVydGFnLXJvdy1qYWhyLTIwMjYpICB7IGRpc3BsYXk6IG5vbmU7IH0K I2ZlaWVydGFnZS10Ym9keS5maWx0ZXItamFoci0yMDI3ICB0cjpub3QoLmZlaWVydGFnLXJvdy1q YWhyLTIwMjcpICB7IGRpc3BsYXk6IG5vbmU7IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0ZXItamFo ci0yMDI4ICB0cjpub3QoLmZlaWVydGFnLXJvdy1qYWhyLTIwMjgpICB7IGRpc3BsYXk6IG5vbmU7 IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0ZXItamFoci0yMDI5ICB0cjpub3QoLmZlaWVydGFnLXJv dy1qYWhyLTIwMjkpICB7IGRpc3BsYXk6IG5vbmU7IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0ZXIt amFoci0yMDMwICB0cjpub3QoLmZlaWVydGFnLXJvdy1qYWhyLTIwMzApICB7IGRpc3BsYXk6IG5v bmU7IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0ZXItamFoci0yMDMxICB0cjpub3QoLmZlaWVydGFn LXJvdy1qYWhyLTIwMzEpICB7IGRpc3BsYXk6IG5vbmU7IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0 ZXItamFoci0yMDMyICB0cjpub3QoLmZlaWVydGFnLXJvdy1qYWhyLTIwMzIpICB7IGRpc3BsYXk6 IG5vbmU7IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0ZXItamFoci0yMDMzICB0cjpub3QoLmZlaWVy dGFnLXJvdy1qYWhyLTIwMzMpICB7IGRpc3BsYXk6IG5vbmU7IH0KI2ZlaWVydGFnZS10Ym9keS5m aWx0ZXItamFoci0yMDM0ICB0cjpub3QoLmZlaWVydGFnLXJvdy1qYWhyLTIwMzQpICB7IGRpc3Bs YXk6IG5vbmU7IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0ZXItamFoci0yMDM1ICB0cjpub3QoLmZl aWVydGFnLXJvdy1qYWhyLTIwMzUpICB7IGRpc3BsYXk6IG5vbmU7IH0KI2ZlaWVydGFnZS10Ym9k eS5maWx0ZXItbnVyLWFrdGl2ICB0ci5mZWllcnRhZy1yb3ctaW5ha3RpdiAgICAgICAgICB7IGRp c3BsYXk6IG5vbmU7IH0KCi8qIERlemVudGUgVMO2bnVuZyBwcm8gS2F0ZWdvcmllIGluIGRlciBU YWJlbGxlLCBkYW1pdCBtYW4gdmlzdWVsbCB6dW9yZG5lbiBrYW5uICovCnRyLmZlaWVydGFnLXJv dy1rYXQtanVlZGlzY2ggICAgdGQgeyBib3gtc2hhZG93OiBpbnNldCAzcHggMCAwICM2RTRGQTA7 IH0KdHIuZmVpZXJ0YWctcm93LWthdC1tdXNsaW1pc2NoICB0ZCB7IGJveC1zaGFkb3c6IGluc2V0 IDNweCAwIDAgIzFCN0M2NjsgfQp0ci5mZWllcnRhZy1yb3cta2F0LXR1ZXJraXNjaCAgIHRkIHsg Ym94LXNoYWRvdzogaW5zZXQgM3B4IDAgMCAjQzcyMTIwOyB9CnRyLmZlaWVydGFnLXJvdy1rYXQt Z2VzZXR6bGljaCAgdGQgeyBib3gtc2hhZG93OiBpbnNldCAzcHggMCAwICM0QTZBOEM7IH0KdHIu ZmVpZXJ0YWctcm93LWluYWt0aXYgdGQgeyBvcGFjaXR5OiAwLjU1OyB9CgovKiBJbmZvLUthcnRl biBpbSBJbmZvcm1hdGlvbnNmZW5zdGVyICovCi5pbmZvLWthcnRlIHsKICAgIHBhZGRpbmc6IDEy cHggMTZweDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7CiAgICBtYXJnaW4t Ym90dG9tOiAxMHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwogICAgYm9y ZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgZm9udC1zaXplOiB2 YXIoLS1mcy1tZCk7CiAgICBsaW5lLWhlaWdodDogMS41Owp9Ci5pbmZvLWthcnRlLXN1cHBvcnQg eyBib3JkZXItbGVmdC1jb2xvcjogIzJkOWQ3ODsgfQouaW5mby1rYXJ0ZS13YXJuIHsgYm9yZGVy LWxlZnQtY29sb3I6ICNlNjdlMjI7IGJhY2tncm91bmQ6IHJnYmEoMjMwLDEyNiwzNCwwLjA4KTsg fQouaW5mby1rYXJ0ZS1pbmZvIHsgYm9yZGVyLWxlZnQtY29sb3I6ICM0YTkwZTI7IH0KCi8qIE1h aWwtQnV0dG9uIGhpbnRlciBlaW5lbSBBbnNwcmVjaHBhcnRuZXIgaW0gSW5mby1GZW5zdGVyLgog ICBEZXplbnRlIFBpbGxlIG1pdCBBa3plbnQtQm9yZGVyOyBvZWZmbmV0IE91dGxvb2sgKG1haWx0 bzopLiAqLwouaW5mby1hcC1tYWlsYnRuIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAg IG1hcmdpbi1sZWZ0OiA2cHg7CiAgICBwYWRkaW5nOiAxcHggOHB4OwogICAgZm9udC1zaXplOiB2 YXIoLS1mcy1zbSk7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6IHZhcigtLWZhcmJl LWFremVudCk7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LDE0NCwyMjYsMC4xMCk7CiAgICBib3Jk ZXI6IDFweCBzb2xpZCByZ2JhKDc0LDE0NCwyMjYsMC4zNSk7CiAgICBib3JkZXItcmFkaXVzOiB2 YXIoLS1yYWRpdXMtbGcpOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgbGluZS1oZWln aHQ6IDEuNTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3Jv dW5kIDAuMTJzLCBib3JkZXItY29sb3IgMC4xMnMsIGNvbG9yIDAuMTJzOwp9Ci5pbmZvLWFwLW1h aWxidG46aG92ZXIgewogICAgYmFja2dyb3VuZDogdmFyKC0tZmFyYmUtYWt6ZW50KTsKICAgIGNv bG9yOiAjZmZmOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1mYXJiZS1ha3plbnQpOwp9Ci5pbmZv LWFwLWtlaW5tYWlsIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi1sZWZ0 OiA2cHg7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXNtKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0 LW11dGVkKTsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKfQoKLyogRWluc3RlbGx1bmdlbi1UYWIg Ki8KLmVpbnN0ZWxsdW5nZW4tZm9ybSB7IG1heC13aWR0aDogNzIwcHg7IH0KLmVpbnN0ZWxsdW5n ZW4tZm9ybSAuZm9ybS1ncnVwcGUgeyBtYXJnaW4tYm90dG9tOiAxNnB4OyB9Ci5laW5zdGVsbHVu Z2VuLWZvcm0gbGFiZWwgeyBkaXNwbGF5OiBibG9jazsgZm9udC13ZWlnaHQ6IDYwMDsgbWFyZ2lu LWJvdHRvbTogNHB4OyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgZm9udC1zaXplOiB2YXIo LS1mcy1tZCk7IH0KLmVpbnN0ZWxsdW5nZW4tZm9ybSB0ZXh0YXJlYSB7IGZvbnQtZmFtaWx5OiBp bmhlcml0OyByZXNpemU6IHZlcnRpY2FsOyB9CgovKiBMZWdlbmRlICovCi53cC1sZWdlbmRlIHsK ICAgIGRpc3BsYXk6IGZsZXg7IGdhcDogMjBweDsgcGFkZGluZzogOHB4IDE2cHg7CiAgICBiYWNr Z3JvdW5kOiB2YXIoLS1iZy10b29sYmFyKTsgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJv cmRlci1jb2xvcik7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgY29sb3I6IHZhcigtLXRl eHQtc2Vjb25kYXJ5KTsKfQoud3AtbGVnLWl0ZW0geyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVt czogY2VudGVyOyBnYXA6IDVweDsgfQoud3AtbGVnLWRvdCB7CiAgICB3aWR0aDogMTBweDsgaGVp Z2h0OiAxMHB4OyBib3JkZXItcmFkaXVzOiAycHg7IGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoK LyogPT09PT0gUGVyc8O2bmxpY2hlciBQbGFuID09PT09ICovCi5wcC1sYXlvdXQgewogICAgZGlz cGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZmxleDogMTsgb3ZlcmZsb3c6IGhp ZGRlbjsKfQoucHAtdG9vbGJhciB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2Vu dGVyOyBnYXA6IDhweDsKICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgYmFja2dyb3VuZDogdmFy KC0tYmctdG9vbGJhcik7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVy LWNvbG9yKTsKfQoucHAtc2Nyb2xsIHsKICAgIGZsZXg6IDE7IG92ZXJmbG93OiBhdXRvOyBwYWRk aW5nOiAyMHB4IDI0cHg7Cn0KLnBwLXRpdGVsIHsKICAgIGZvbnQtc2l6ZTogMThweDsgZm9udC13 ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBtYXJnaW4tYm90dG9t OiAxNnB4Owp9Ci5wcC1tb25hdGUgewogICAgZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFw OyBnYXA6IDIwcHg7Cn0KCi8qIE1vbmF0c2Jsb2NrICovCi5wcC1tb25hdCB7CiAgICBib3JkZXI6 IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigt LXJhZGl1cy1tZCk7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgd2lkdGg6IDMyMHB4OwogICAg Ym94LXNoYWRvdzogMCAxcHggNHB4IHZhcigtLXNoYWRvdy1saWdodCk7Cn0KLnBwLW1vbmF0LWtv cGYgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSk7CiAgICBjb2xvcjogdmFyKC0t dGV4dC1vbi1wcmltYXJ5KTsKICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgZm9udC13ZWlnaHQ6 IDcwMDsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOwogICAgdGV4dC1hbGlnbjogY2VudGVy OwogICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4Owp9Ci5wcC1tb25hdC1ncmlkIHsKICAgIGRpc3Bs YXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg3LCAxZnIpOwogICAg Zm9udC1zaXplOiB2YXIoLS1mcy1zbSk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsK fQoucHAtd3Qta29wZiB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAgICB0 ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5nOiA1cHggMDsKICAgIGZvbnQtd2VpZ2h0OiA3 MDA7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXhzKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNl Y29uZGFyeSk7CiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9u Zyk7Cn0KLyogU2EvU28tS8O2cGZlIGR1bmtsZXIgKi8KLnBwLXd0LWtvcGY6bnRoLWNoaWxkKDYp LAoucHAtd3Qta29wZjpudGgtY2hpbGQoNykgewogICAgYmFja2dyb3VuZDogI0RDRTRGMDsKICAg IGNvbG9yOiAjMkMzRTUwOwp9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5wcC13dC1rb3BmOm50aC1j aGlsZCg2KSwKW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLnBwLXd0LWtvcGY6bnRoLWNoaWxkKDcpIHsK ICAgIGJhY2tncm91bmQ6ICMyNTM1NDc7CiAgICBjb2xvcjogI0EwQjhEMDsKfQoKLnBwLXRhZyB7 CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5nOiAzcHggMnB4OwogICAgYm9yZGVy LXJpZ2h0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1ib3R0b206 IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgbWluLWhlaWdodDogNDJweDsKICAg IGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgYWxpZ24taXRl bXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZ2FwOiAycHg7CiAg ICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLyogSmVkZSBXb2NoZSB0cmVubmVuIOKAlCBhbGxlIDcg WmVsbGVuIGVpbmUgc3TDpHJrZXJlIHVudGVyZSBMaW5pZSAqLwoucHAtdGFnOm50aC1jaGlsZCg3 bisxNCkgeyBib3JkZXItcmlnaHQ6IG5vbmU7IH0KCi5wcC10YWctbnIgewogICAgZm9udC1zaXpl OiB2YXIoLS1mcy14cyk7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6IHZhcigtLXRl eHQtc2Vjb25kYXJ5KTsKICAgIGxpbmUtaGVpZ2h0OiAxOwp9Ci5wcC10YWctd2VydCB7CiAgICBm b250LXNpemU6IHZhcigtLWZzLXhzKTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBwYWRkaW5n OiAycHggNHB4OwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhzKTsKICAgIGxpbmUt aGVpZ2h0OiAxLjI7Cn0KLnBwLXRhZy1sZWVyIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNh cmQtYWx0KTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYmctY2FyZC1hbHQpOwp9Ci5wcC10YWct d2UgewogICAgYmFja2dyb3VuZDogI0VERjJGODsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICNE NERFRUM7Cn0KLnBwLXRhZy13ZSAucHAtdGFnLW5yIHsgY29sb3I6ICM0QTZBOEM7IGZvbnQtd2Vp Z2h0OiA3MDA7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLnBwLXRhZy13ZSB7CiAgICBiYWNrZ3Jv dW5kOiAjMUYyQTM4OwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzJEM0U1NTsKfQpbZGF0YS10 aGVtZT0ibmlnaHQiXSAucHAtdGFnLXdlIC5wcC10YWctbnIgeyBjb2xvcjogI0EwQjhEMDsgfQoK LnBwLXRhZy1mdCB7CiAgICBiYWNrZ3JvdW5kOiAjRDdFNEYwOwogICAgYm9yZGVyLWJvdHRvbS1j b2xvcjogI0IwQzREODsKfQoucHAtdGFnLWZ0IC5wcC10YWctbnIgeyBjb2xvcjogIzJDM0U1MDsg Zm9udC13ZWlnaHQ6IDcwMDsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAucHAtdGFnLWZ0IHsKICAg IGJhY2tncm91bmQ6ICMyNTM1NDc7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjMzg1MjcwOwp9 CltkYXRhLXRoZW1lPSJuaWdodCJdIC5wcC10YWctZnQgLnBwLXRhZy1uciB7IGNvbG9yOiAjQzlE NkU0OyB9CgoucHAtdGFnLWhldXRlIHsKICAgIG91dGxpbmU6IDNweCBzb2xpZCB2YXIoLS10YWct aGV1dGUpOwogICAgb3V0bGluZS1vZmZzZXQ6IC0zcHg7CiAgICB6LWluZGV4OiAxOwp9Ci5wcC10 YWcta29tbWVudGFyOjphZnRlciB7CiAgICBjb250ZW50OiAnJzsgcG9zaXRpb246IGFic29sdXRl OyB0b3A6IDFweDsgcmlnaHQ6IDFweDsKICAgIHdpZHRoOiAwOyBoZWlnaHQ6IDA7CiAgICBib3Jk ZXItbGVmdDogNnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXRvcDogNnB4IHNvbGlk ICNENEEwMTc7Cn0KCi8qIFN1bW1hcnkgKi8KLnBwLXN1bW1hcnkgewogICAgbWFyZ2luLXRvcDog MjBweDsKICAgIHBhZGRpbmc6IDE2cHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFs dCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOwogICAgYm9yZGVyOiAxcHgg c29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKfQoucHAtc3VtbWFyeSBoMyB7CiAgICBmb250LXNp emU6IHZhcigtLWZzLWxnKTsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IG1hcmdpbi1ib3R0 b206IDEwcHg7Cn0KLnBwLXN1bW1hcnktZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOyBncmlkLXRl bXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgxMjBweCwgMWZyKSk7IGdh cDogOHB4Owp9Ci5wcC1zdGF0LWl0ZW0gewogICAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rp b246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIHBhZGRpbmc6IDhweDsgYm9yZGVy LXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAg ICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwp9Ci5wcC1zdGF0LXphaGwg eyBmb250LXNpemU6IDIwcHg7IGZvbnQtd2VpZ2h0OiA3MDA7IH0KLnBwLXN0YXQtbGFiZWwgeyBm b250LXNpemU6IHZhcigtLWZzLXhzKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB0ZXh0LWFs aWduOiBjZW50ZXI7IH0KCi8qIFplbGwtS29tbWVudGFyLUluZGlrYXRvciBpbSBHcmlkLiBTY2hs aWNodGVzIERyZWllY2sgZnVlciBlaW5lbgogICBLb21tZW50YXI7IGFiIHp3ZWkgS29tbWVudGFy ZW4genVzYWV0emxpY2ggZWluIGtsZWluZXIgQ291bnRlci1CYWRnZQogICB1bnRlbiByZWNodHMg bWl0IGRlciBBbnphaGwuICovCi5ncmlkLXplbGxlLmhhdC1rb21tZW50YXIgeyBwb3NpdGlvbjog cmVsYXRpdmU7IH0KLmdyaWQtemVsbGUuaGF0LWtvbW1lbnRhcjo6YWZ0ZXIgewogICAgY29udGVu dDogJyc7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyByaWdodDogMDsKICAgIHdpZHRoOiAw OyBoZWlnaHQ6IDA7CiAgICBib3JkZXItbGVmdDogNnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAg Ym9yZGVyLXRvcDogNnB4IHNvbGlkICNENEEwMTc7Cn0KLmdyaWQtemVsbGUuaGF0LWtvbW1lbnRh cltkYXRhLWtvbW1lbnRhci1hbnphaGxdOjpiZWZvcmUgewogICAgY29udGVudDogYXR0cihkYXRh LWtvbW1lbnRhci1hbnphaGwpOwogICAgcG9zaXRpb246IGFic29sdXRlOyBib3R0b206IDFweDsg cmlnaHQ6IDFweDsKICAgIGJhY2tncm91bmQ6ICNENEEwMTc7CiAgICBjb2xvcjogd2hpdGU7CiAg ICBmb250LXNpemU6IDhweDsgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGxpbmUtaGVpZ2h0OiAxOwog ICAgcGFkZGluZzogMXB4IDNweDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7 CiAgICBtaW4td2lkdGg6IDlweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBvaW50ZXIt ZXZlbnRzOiBub25lOwp9CgovKiA9PT09PSBLb21tZW50YXItUG9wb3ZlciA9PT09PQogICBIVE1M LVBvcG92ZXIgc3RhdHQgZWluemVpbGlnZXIgbmF0aXZlIHRpdGxlLVRvb2x0aXAuIFN0cnVrdHVy aWVydCBpbgogICBLb3BmIChJY29uICsgRGF0dW0pLCBCb2R5IChNZWhyemVpbGVyLUtvbW1lbnRh cikgdW5kIEZ1c3MgKFZlcmZhc3NlciArCiAgIFplaXRzdGVtcGVsKS4gVGFnL05hY2h0IHVlYmVy IENTUy1WYXJpYWJsZW4gKC0tYmctY2FyZCwgLS1ib3JkZXItKikuCiAgIFNjaG1hbGVyIGFscyBk YXMgUGVyc29uLVBvcG92ZXIsIHdlaWwgaGllciBudXIgVGV4dCBzdGVodC4gKi8KLnZpMy1rb21t ZW50YXItcG9wb3ZlciB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB6LWluZGV4OiB2YXIoLS16 LXBvcG92ZXItcGFnZSk7CiAgICB3aWR0aDogMzIwcHg7CiAgICBtYXgtd2lkdGg6IGNhbGMoMTAw dncgLSAxMnB4KTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwogICAgYm9yZGVyOiAx cHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1y YWRpdXMtbGcpOwogICAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDAsMCwwLDAuMjgpOwog ICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgZm9udC1z aXplOiB2YXIoLS1mcy1tZCk7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgY29sb3I6IHZhcigt LXRleHQtcHJpbWFyeSk7Cn0KLnZpMy1rb21tZW50YXItcG9wb3Zlci52ZXJzdGVja3QgeyBkaXNw bGF5OiBub25lOyB9Cgoua3Ata29wZiB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczog Y2VudGVyOyBnYXA6IDhweDsKICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgYmFja2dyb3VuZDog dmFyKC0tYmctY2FyZC1hbHQpOwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJv cmRlci1saWdodCk7Cn0KLmtwLWtvcGYtaWNvbiB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbGcpOyB9 Ci5rcC1rb3BmLXRpdGVsIHsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBjb2xvcjogdmFyKC0t dGV4dC1oZWFkaW5nKTsKICAgIGZvbnQtc2l6ZTogMTIuNXB4OwogICAgbGV0dGVyLXNwYWNpbmc6 IDAuMnB4Owp9Ci5rcC1rb3BmLWRhdHVtIHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgZm9u dC1zaXplOiAxMS41cHg7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICBmb250LXZh cmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwp9Cgoua3AtYm9keSB7CiAgICBwYWRkaW5nOiAx MHB4IDEycHg7CiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgd29yZC13cmFwOiBicmVhay13 b3JkOwogICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7CiAgICAvKiBNZWhyemVpbGVyIG5p Y2h0IHp1IGhvY2ggd2VyZGVuIGxhc3NlbjsgYmVpIHNlaHIgbGFuZ2VtIFRleHQgc2Nyb2xsZW4u ICovCiAgICBtYXgtaGVpZ2h0OiAyODBweDsKICAgIG92ZXJmbG93LXk6IGF1dG87Cn0KLyogU3Rh Y2stVmFyaWFudGUgKFN0dWZlIDIpOiBtZWhyZXJlIEtvbW1lbnRhci1FaW50cmFlZ2UgdWViZXJl aW5hbmRlci4KICAgSmVkZXIgRWludHJhZyBpc3QgZWluZSBlaWdlbmUgS2FydGUgbWl0IFRleHQg KyBNZXRhLVplaWxlLiBUcmVubmxpbmllbgogICBzdGF0dCB2b2xsc3RhZW5kaWdlciBCb3hlbiDi gJQga29tcGFrdGVyIGFscyBuZXN0ZWQgQ2FyZHMgaW0gUG9wb3Zlci4gKi8KLmtwLWJvZHktc3Rh Y2sgewogICAgcGFkZGluZzogMDsKICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBj b2x1bW47Cn0KLmtwLWVpbnRyYWcgewogICAgcGFkZGluZzogOHB4IDEycHg7CiAgICBib3JkZXIt Ym90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKfQoua3AtZWludHJhZzpsYXN0 LWNoaWxkIHsgYm9yZGVyLWJvdHRvbTogbm9uZTsgfQoua3AtZWludHJhZy10ZXh0IHsKICAgIGNv bG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwogICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgIHdvcmQt d3JhcDogYnJlYWstd29yZDsKfQoua3AtZWludHJhZy1tZXRhIHsKICAgIGRpc3BsYXk6IGZsZXg7 IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OwogICAgbWFyZ2luLXRvcDogNHB4OwogICAg Zm9udC1zaXplOiB2YXIoLS1mcy1zbSk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7Cn0K LmtwLWVpbnRyYWctYXV0b3IgeyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBmb250LXdl aWdodDogNjAwOyB9Ci5rcC1laW50cmFnLXRyZW5uZXIgeyBvcGFjaXR5OiAwLjY7IH0KLmtwLWVp bnRyYWctemVpdCB7IGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7IH0KCi8qIEVk aXRvci1Lb21tZW50YXItQmVyZWljaCAqLwouZWRpdG9yLWtvbW1lbnRhciB7CiAgICBwYWRkaW5n OiA2cHggOHB4OwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7 CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDRweDsKfQou ZWRpdG9yLWtvbW1lbnRhci1idG5zIHsKICAgIGRpc3BsYXk6IGZsZXg7IGdhcDogNHB4Owp9Cgov KiBLb21tZW50YXItVmVybGF1ZiBpbSBFZGl0b3IgKFN0dWZlIDIpIOKAlCBTdGFjayBhbHRlciBF aW50cmFlZ2UgdWViZXIgZGVtCiAgIGxlZXJlbiBFaW5nYWJlZmVsZC4gTmV1ZXN0ZSBvYmVuLiBM b2VzY2gtSWNvbiBudXIgZnVlciBCZXJlY2h0aWd0ZS4gKi8KLmVkaXRvci1rb21tZW50YXItdmVy bGF1ZiB7CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDRw eDsKICAgIG1heC1oZWlnaHQ6IDE4MHB4OwogICAgb3ZlcmZsb3cteTogYXV0bzsKICAgIG1hcmdp bi1ib3R0b206IDRweDsKfQouZWRpdG9yLWtvbW1lbnRhci12ZXJsYXVmOmVtcHR5IHsgZGlzcGxh eTogbm9uZTsgfQouZWt2LWxlZXIgewogICAgZm9udC1zaXplOiAxMC41cHg7CiAgICBjb2xvcjog dmFyKC0tdGV4dC1tdXRlZCk7CiAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICBwYWRkaW5nOiAy cHggNHB4Owp9Ci5la3YtZWludHJhZyB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFs dCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVy LXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIHBhZGRpbmc6IDRweCA2cHg7CiAgICBmb250 LXNpemU6IHZhcigtLWZzLXNtKTsKfQouZWt2LXRleHQgewogICAgY29sb3I6IHZhcigtLXRleHQt cHJpbWFyeSk7CiAgICBsaW5lLWhlaWdodDogMS40OwogICAgd29yZC13cmFwOiBicmVhay13b3Jk Owp9Ci5la3YtbWV0YSB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBn YXA6IDJweDsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOwogICAgY29sb3I6IHZhcigtLXRl eHQtbXV0ZWQpOwogICAgbWFyZ2luLXRvcDogMnB4Owp9Ci5la3YtbWV0YS1hdXRvciB7IGNvbG9y OiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KLmVrdi1tZXRhLXpl aXQgeyBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOyB9Ci5la3YtbG9lc2NoZW4g ewogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBib3JkZXI6IG5vbmU7IGJhY2tncm91bmQ6IHRy YW5zcGFyZW50OwogICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgY3Vyc29yOiBwb2lu dGVyOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsKICAgIGxpbmUtaGVpZ2h0OiAxOwog ICAgcGFkZGluZzogMnB4IDRweDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14cyk7 CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTJzLCBjb2xvciAwLjEyczsKfQouZWt2LWxv ZXNjaGVuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLWdlZmFociwgI2MwMzky Yik7CiAgICBjb2xvcjogd2hpdGU7Cn0KCi8qID09PT09IExvZ2J1Y2ggPT09PT0gKi8KLmxheW91 dC1sb2didWNoeyBvdmVyZmxvdy15OiBhdXRvOyBwYWRkaW5nOiAyNHB4IDMycHg7IGZsZXg6IDE7 IH0KCi8qIFRhYmVsbGVuLUdydW5kbGF5b3V0IGV0d2FzIGdyb3NzenVlZ2lnZXIgYWxzIGRpZSBn ZW5lcmlzY2hlIC5hZG1pbi10YWJlbGxlOgogICBtZWhyIFZlcnRpa2FscmF1bSBwcm8gWmVpbGUs IGRlemVudGVyZSBaZWJyYS1TdHJlaWZlbiwga2xhcmVzIEhvdmVyLiAqLwojbG9nLXRhYmVsbGUg eyBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOyBib3JkZXItc3BhY2luZzogMDsgfQojbG9nLXRh YmVsbGUgdGhlYWQgdGggewogICAgcG9zaXRpb246IHN0aWNreTsgdG9wOiAwOyB6LWluZGV4OiAy OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwogICAgY29sb3I6IHZhcigtLXRl eHQtc2Vjb25kYXJ5KTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogdmFyKC0tZnMt c20pOyBsZXR0ZXItc3BhY2luZzogMC4wNGVtOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwog ICAgcGFkZGluZzogMTBweCAxMnB4OwogICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigt LWJvcmRlci1saWdodCk7Cn0KI2xvZy10YWJlbGxlIHRib2R5IHRkIHsKICAgIHBhZGRpbmc6IDEw cHggMTJweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQp OwogICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOyBs aW5lLWhlaWdodDogMS40NTsKfQojbG9nLXRhYmVsbGUgdGJvZHkgdHI6bnRoLWNoaWxkKGV2ZW4p IHRkIHsgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjAxOCk7IH0KI2xvZy10YWJlbGxlIHRib2R5 IHRyLmxvZy16ZWlsZTpob3ZlciB0ZCB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsgfQoK LyogU3BhbHRlIDE6IFplaXQgLSB6d2VpemVpbGlnIChEYXR1bSBncm9zcyArIGhhbGJmZXR0LCBV aHJ6ZWl0IGtsZWluIG11dGVkKSAqLwoubG9nLXplaXQtemVsbGUgeyB3aGl0ZS1zcGFjZTogbm93 cmFwOyB3aWR0aDogMTEwcHg7IH0KLmxvZy16ZWl0LWRhdHVtIHsgZm9udC13ZWlnaHQ6IDYwMDsg Y29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7IH0K LmxvZy16ZWl0LXVocnplaXQgeyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IGZvbnQtc2l6ZTog dmFyKC0tZnMtc20pOyBtYXJnaW4tdG9wOiAxcHg7IGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1 bGFyLW51bXM7IH0KCi8qIFNwYWx0ZSAyOiBBa3Rpb24gLSBmYXJiaWdlciBQaWxsIHBybyBLYXRl Z29yaWUuIFBhZGRpbmcgKyBCb3JkZXItUmFkaXVzCiAgIGdsZWljaGdyb3NzZSBPcHRpayB3aWUg ZGllIHJlY2h0ZS1jYXJkLUFremVudGUsIGRhbWl0IGRhcyBMb2didWNoIHNpY2gKICAgZmFyYmxp Y2ggaW4gZGVuIFJlc3QgZGVyIEFwcCBlaW5mdWVndC4gKi8KLmxvZy1ha3Rpb24temVsbGUgeyB3 aWR0aDogMjIwcHg7IH0KLmxvZy1waWxsIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAg IHBhZGRpbmc6IDNweCA5cHg7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwog ICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBsaW5lLWhl aWdodDogMS40OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIGJhY2tncm91bmQ6IHJnYmEo MCwwLDAsMC4wNik7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGJvcmRlcjog MXB4IHNvbGlkIHRyYW5zcGFyZW50Owp9Ci5sb2ctcGlsbC1wbGFudW5nIHsgYmFja2dyb3VuZDog cmdiYSgzOSwxMzcsMTA5LDAuMTQpOyAgY29sb3I6ICMxRjZENUE7IGJvcmRlci1jb2xvcjogcmdi YSgzOSwxMzcsMTA5LDAuMjgpOyB9Ci5sb2ctcGlsbC1wZXJzb24gIHsgYmFja2dyb3VuZDogcmdi YSgzMCw5NSwxNDAsMC4xNCk7ICAgY29sb3I6ICMxMzQyNjA7IGJvcmRlci1jb2xvcjogcmdiYSgz MCw5NSwxNDAsMC4yOCk7IH0KLmxvZy1waWxsLWFkbWluICAgeyBiYWNrZ3JvdW5kOiByZ2JhKDIw MiwxMTEsMzAsMC4xNik7ICBjb2xvcjogIzhBNEIxNDsgYm9yZGVyLWNvbG9yOiByZ2JhKDIwMiwx MTEsMzAsMC4zMCk7IH0KLmxvZy1waWxsLXJvbGxlICAgeyBiYWNrZ3JvdW5kOiByZ2JhKDEwNiw3 NiwxNDcsMC4xNik7ICBjb2xvcjogIzRCMzU2QjsgYm9yZGVyLWNvbG9yOiByZ2JhKDEwNiw3Niwx NDcsMC4zMCk7IH0KLmxvZy1waWxsLWhpbndlaXMgeyBiYWNrZ3JvdW5kOiByZ2JhKDE0Miw2OCwx NzMsMC4xNik7ICBjb2xvcjogIzVFMkE3NzsgYm9yZGVyLWNvbG9yOiByZ2JhKDE0Miw2OCwxNzMs MC4zMCk7IH0KLmxvZy1waWxsLWJhY2t1cCAgeyBiYWNrZ3JvdW5kOiByZ2JhKDkxLDEyNSwxNzcs MC4xNik7ICBjb2xvcjogIzNBNTY4MDsgYm9yZGVyLWNvbG9yOiByZ2JhKDkxLDEyNSwxNzcsMC4z MCk7IH0KLmxvZy1waWxsLXN5c3RlbSAgeyBiYWNrZ3JvdW5kOiByZ2JhKDE3Niw1OCw0NiwwLjE0 KTsgICBjb2xvcjogIzdFMjkyMDsgYm9yZGVyLWNvbG9yOiByZ2JhKDE3Niw1OCw0NiwwLjMwKTsg fQoKLyogS2F0ZWdvcmllLUZpbHRlci1DaGlwcyB1ZWJlciBkZXIgTG9nYnVjaC1UYWJlbGxlIChm dW5rdGlvbmFsLCBrb21iaW5pZXJ0CiAgIG1pdCBkZXIgVGV4dHN1Y2hlKS4gVm9uIGpzL2xvZ2J1 Y2guanMgZHluYW1pc2NoIGluIGRlbiBLb3BmIGluaml6aWVydC4gKi8KLmxvZy1rYXQtY2hpcHMg eyBkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7IGdhcDogNnB4OyBtYXJnaW4tdG9wOiAx MHB4OyB9Ci5sb2cta2F0LWNoaXAgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgcGFkZGluZzog NHB4IDEycHg7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgZm9udC1z aXplOiB2YXIoLS1mcy1zbSk7IGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBsaW5lLWhlaWdodDogMS40 OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwogICAgY29sb3I6IHZhcigtLXRl eHQtc2Vjb25kYXJ5KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7 CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTJzLCBjb2xvciAwLjEycywgYm9yZGVyLWNv bG9yIDAuMTJzOwp9Ci5sb2cta2F0LWNoaXA6aG92ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLWJn LXByaW1hcnkpOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQoubG9nLWthdC1jaGlwLmFr dGl2IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpOwogICAgY29sb3I6IHZhcigt LXRleHQtb24tcHJpbWFyeSk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWJnLXByaW1hcnkpOwp9 CgovKiBTcGFsdGUgMzogQmVudXR6ZXIgLSBrbGVpbmVyIEluaXRpYWxlbi1BdmF0YXIgKEFudGhy YXppdCwgZ2xlaWNoZXIgTG9vawogICB3aWUgZGllIEFwcC13ZWl0ZW4gdmkzLWF2YXRhci1pbml0 aWFsZW4pICsgTmFtZS4gKi8KLmxvZy1iZW51dHplci16ZWxsZSB7IHdpZHRoOiAxODBweDsgd2hp dGUtc3BhY2U6IG5vd3JhcDsgfQoubG9nLWJlbnV0emVyLWF2YXRhciB7CiAgICBkaXNwbGF5OiBp bmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7 CiAgICB3aWR0aDogMjRweDsgaGVpZ2h0OiAyNHB4OyBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBi YWNrZ3JvdW5kOiAjM0EzRjQ3OyBjb2xvcjogI2ZmZjsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMt eHMpOyBmb250LXdlaWdodDogNzAwOyBsZXR0ZXItc3BhY2luZzogMC4wMmVtOwogICAgbWFyZ2lu LXJpZ2h0OiA4cHg7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBmbGV4LXNocmluazogMDsK fQoubG9nLWJlbnV0emVyLW5hbWUgeyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsgZm9udC1z aXplOiAxMi41cHg7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0KCi8qIFNwYWx0ZSA0OiBEZXRh aWxzIC0gQ29kZS1UYWdzIHN1YnRpbGVyLCBQZmVpbGUgZ2VmYWVyYnQsIEJvbGQtU3ViamVrdGUK ICAgdW5kIFNvZnQtTGVlci1QbGF0emhhbHRlci4gKi8KLmxvZy1kZXRhaWxzLXplbGxlIHsgY29s b3I6IHZhcigtLXRleHQtcHJpbWFyeSk7IH0KLmxvZy1kZXRhaWxzLXplbGxlIGNvZGUgewogICAg ZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogMXB4IDZweDsKICAgIGJhY2tncm91 bmQ6IHJnYmEoMCwwLDAsMC4wNSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIt bGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIGZvbnQtZmFt aWx5OiB1aS1tb25vc3BhY2UsICJTRiBNb25vIiwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2U7 CiAgICBmb250LXNpemU6IDExLjVweDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwog ICAgbGluZS1oZWlnaHQ6IDEuNDsKICAgIG1heC13aWR0aDogMzQwcHg7CiAgICBvdmVyZmxvdzog aGlkZGVuOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB2ZXJ0aWNhbC1hbGlnbjog bWlkZGxlOwp9Ci5sb2ctZGV0YWlscy16ZWxsZSBiIHsgY29sb3I6IHZhcigtLXRleHQtaGVhZGlu Zyk7IH0KLmxvZy1kZXRhaWxzLXplbGxlIC5sb2ctZGV0YWlscy1sZWVyIHsgY29sb3I6IHZhcigt LXRleHQtbXV0ZWQpOyBmb250LXN0eWxlOiBpdGFsaWM7IH0KCi8qIFNwYWx0ZSA1OiBXaWVkZXJo ZXJzdGVsbGVuIC0ga29tcGFrdGUgUGlsbC1PcHRpay4gQXVmIHNjaG1hbGVuIENvbnRhaW5lcm4K ICAgdmVyc2Nod2luZGV0IGRlciBUZXh0LCBudXIgZGFzIOKGui1JY29uIGJsZWlidCBzaWNodGJh ci4gKi8KLmxvZy1yZXN0b3JlLXplbGxlIHsgd2lkdGg6IDE1MHB4OyB0ZXh0LWFsaWduOiByaWdo dDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQoubG9nLXJlc3RvcmUtYnRuIHsKICAgIGRpc3BsYXk6 IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDVweDsKICAgIHBhZGRpbmc6 IDRweCAxMHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBib3JkZXI6IDFw eCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFk aXVzLXNtKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7CiAgICBmb250LXNpemU6 IHZhcigtLWZzLXNtKTsgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAg IHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xMnMsIGJvcmRlci1jb2xvciAwLjEycywgY29sb3Ig MC4xMnM7Cn0KLmxvZy1yZXN0b3JlLWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1i Zy1ob3Zlcik7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXBvbGl6ZWktYmxhdSwgIzAwNjNhZik7 CiAgICBjb2xvcjogdmFyKC0tcG9saXplaS1ibGF1LCAjMDA2M2FmKTsKfQoubG9nLXJlc3RvcmUt aWNvbiB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOyBsaW5lLWhlaWdodDogMTsgfQoKLyogU3Vj aC1JbnB1dCBvYmVuIHJlY2h0czogZ2xlaWNoZXIgTG9vayB3aWUgZGVyIEdydXBwZW4tRmlsdGVy IGluIGRlciBTdGF0aXN0aWsuICovCiNsb2ctc3VjaGUgeyBmb250LXNpemU6IHZhcigtLWZzLWJh c2UpOyB9CgovKiBEYXJrLU1vZGUtQW5wYXNzdW5nIGRlciBQaWxsczogSGludGVyZ3J1bmQtQWxw aGFzIGxlaWNodCBob2NoemllaGVuLAogICBkYW1pdCBkaWUgRmFyYmVuIGF1ZiBkdW5rbGVtIFVu dGVyZ3J1bmQgc2ljaHRiYXIgYmxlaWJlbi4gKi8KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLmxvZy1w aWxsLXBsYW51bmcgeyBiYWNrZ3JvdW5kOiByZ2JhKDM5LDEzNywxMDksMC4yOCk7ICBjb2xvcjog IzZBRDBBQzsgYm9yZGVyLWNvbG9yOiByZ2JhKDM5LDEzNywxMDksMC40NSk7IH0KW2RhdGEtdGhl bWU9Im5pZ2h0Il0gLmxvZy1waWxsLXBlcnNvbiAgeyBiYWNrZ3JvdW5kOiByZ2JhKDMwLDk1LDE0 MCwwLjMwKTsgICBjb2xvcjogIzZGQjNERTsgYm9yZGVyLWNvbG9yOiByZ2JhKDMwLDk1LDE0MCww LjUwKTsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAubG9nLXBpbGwtYWRtaW4gICB7IGJhY2tncm91 bmQ6IHJnYmEoMjAyLDExMSwzMCwwLjMwKTsgIGNvbG9yOiAjRjJCMjc0OyBib3JkZXItY29sb3I6 IHJnYmEoMjAyLDExMSwzMCwwLjUwKTsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAubG9nLXBpbGwt cm9sbGUgICB7IGJhY2tncm91bmQ6IHJnYmEoMTA2LDc2LDE0NywwLjMyKTsgIGNvbG9yOiAjQjg5 QUUwOyBib3JkZXItY29sb3I6IHJnYmEoMTA2LDc2LDE0NywwLjUwKTsgfQpbZGF0YS10aGVtZT0i bmlnaHQiXSAubG9nLXBpbGwtaGlud2VpcyB7IGJhY2tncm91bmQ6IHJnYmEoMTQyLDY4LDE3Myww LjMyKTsgIGNvbG9yOiAjQzg5M0UwOyBib3JkZXItY29sb3I6IHJnYmEoMTQyLDY4LDE3MywwLjUw KTsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAubG9nLXBpbGwtYmFja3VwICB7IGJhY2tncm91bmQ6 IHJnYmEoOTEsMTI1LDE3NywwLjMwKTsgIGNvbG9yOiAjOThCNURDOyBib3JkZXItY29sb3I6IHJn YmEoOTEsMTI1LDE3NywwLjUwKTsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAubG9nLXBpbGwtc3lz dGVtICB7IGJhY2tncm91bmQ6IHJnYmEoMTc2LDU4LDQ2LDAuMjgpOyAgIGNvbG9yOiAjRTU4NTc1 OyBib3JkZXItY29sb3I6IHJnYmEoMTc2LDU4LDQ2LDAuNDUpOyB9CltkYXRhLXRoZW1lPSJuaWdo dCJdICNsb2ctdGFiZWxsZSB0Ym9keSB0cjpudGgtY2hpbGQoZXZlbikgdGQgeyBiYWNrZ3JvdW5k OiByZ2JhKDI1NSwyNTUsMjU1LDAuMDI1KTsgfQoKLyogPT09PT0gTW9kYWxlIERpYWxvZ2UgPT09 PT0gKi8KLm1vZGFsIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsgaW5zZXQ6IDA7IHotaW5kZXg6IHZh cigtLXotbW9kYWwpOwogICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjQpOyBkaXNwbGF5OiBm bGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGFu aW1hdGlvbjogZmFkZUluIDAuMTVzIGVhc2U7Cn0KLm1vZGFsLWluaGFsdCB7CiAgICBiYWNrZ3Jv dW5kOiB2YXIoLS1iZy1jYXJkKTsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTsKICAg IGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tb2RhbCk7CiAgICB3aWR0aDogOTAlOyBtYXgtd2lk dGg6IDYyMHB4OyBtYXgtaGVpZ2h0OiA4MHZoOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlv bjogY29sdW1uOwp9Ci8qIFNwZXppYWwtS2xhc3NlIGZ1ZXIgTW9kYWxzIG1pdCB2aWVsIEluaGFs dCAoRS1NYWlsLVZvcmxhZ2VuLUVkaXRvciBldGMuKSAqLwoubW9kYWwtaW5oYWx0Lm1vZGFsLWlu aGFsdC1ncm9zcyB7IG1heC13aWR0aDogMTE4MHB4OyBtYXgtaGVpZ2h0OiA5MnZoOyB9Ci5tb2Rh bC1rb3BmIHsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnkt Y29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkp OyBjb2xvcjogdmFyKC0tdGV4dC1vbi1wcmltYXJ5KTsKICAgIHBhZGRpbmc6IDE0cHggMjBweDsg Ym9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKSAxMHB4IDAgMDsKfQoubW9kYWwta29wZiBo MiB7IGZvbnQtc2l6ZTogMTVweDsgZm9udC13ZWlnaHQ6IDYwMDsgfQoubW9kYWwtc2NobGllc3Nl biB7CiAgICBiYWNrZ3JvdW5kOiBub25lOyBib3JkZXI6IG5vbmU7IGNvbG9yOiB2YXIoLS10ZXh0 LW9uLXByaW1hcnkpOwogICAgZm9udC1zaXplOiAyMnB4OyBjdXJzb3I6IHBvaW50ZXI7IGxpbmUt aGVpZ2h0OiAxOyBwYWRkaW5nOiAwIDRweDsgb3BhY2l0eTogMC43Owp9Ci5tb2RhbC1zY2hsaWVz c2VuOmhvdmVyIHsgb3BhY2l0eTogMTsgfQoubW9kYWwta29lcnBlciB7IHBhZGRpbmc6IDIwcHg7 IG92ZXJmbG93LXk6IGF1dG87IGZsZXg6IDE7IH0KLm1vZGFsLWZ1c3MgewogICAgcGFkZGluZzog MTJweCAyMHB4OyBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAg IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IGdhcDogOHB4OwogICAg YmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXItcmFkaXVzOiAwIDAgMTBweCAx MHB4Owp9CgovKiA9PT09PSBUb2FzdCA9PT09PSAqLwojdG9hc3QtY29udGFpbmVyIHsKICAgIHBv c2l0aW9uOiBmaXhlZDsgYm90dG9tOiAyNHB4OyByaWdodDogMjRweDsgei1pbmRleDogdmFyKC0t ei10b2FzdCk7CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6 IDZweDsKfQoudG9hc3QgewogICAgcGFkZGluZzogMTBweCAxOHB4OyBib3JkZXItcmFkaXVzOiB2 YXIoLS1yYWRpdXMtbWQpOyBjb2xvcjogI2ZmZjsgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IGZv bnQtd2VpZ2h0OiA1MDA7CiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwwLDAsMC4y NSk7IGFuaW1hdGlvbjogdG9hc3RFaW4gMC4yNXMgZWFzZTsgbWF4LXdpZHRoOiA0MDBweDsKfQou dG9hc3QtZXJmb2xnIHsgYmFja2dyb3VuZDogdmFyKC0tZmFyYmUtZXJmb2xnKTsgfQoudG9hc3Qt ZmVobGVyIHsgYmFja2dyb3VuZDogdmFyKC0tZmFyYmUtZmVobGVyKTsgfQoudG9hc3QtaW5mbyB7 IGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLWluZm8pOyB9Ci50b2FzdC13YXJudW5nIHsgYmFja2dy b3VuZDogdmFyKC0tZmFyYmUtd2FybnVuZyk7IH0KQGtleWZyYW1lcyB0b2FzdEVpbiB7IGZyb20g eyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTZweCk7IG9wYWNpdHk6IDA7IH0gdG8geyB0cmFuc2Zv cm06IHRyYW5zbGF0ZVkoMCk7IG9wYWNpdHk6IDE7IH0gfQoKLyogPT09PT0gQWxsZ2VtZWluID09 PT09ICovCi50ZXh0LW11dGVkIHsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9Ci50ZXh0LWVy Zm9sZyB7IGNvbG9yOiB2YXIoLS1mYXJiZS1lcmZvbGcpOyB9Ci50ZXh0LWZlaGxlciB7IGNvbG9y OiB2YXIoLS1mYXJiZS1mZWhsZXIpOyB9Cgpjb2RlIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJn LWNhcmQtYWx0KTsgcGFkZGluZzogMXB4IDZweDsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVz LXhzKTsKICAgIGZvbnQtZmFtaWx5OiAiQ29uc29sYXMiLCAiQ291cmllciBOZXciLCBtb25vc3Bh Y2U7IGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIo LS1ib3JkZXItbGlnaHQpOwp9CgovKiBTY3JvbGxiYXJzOiBkZXV0bGljaCBzaWNodGJhciwgdm9y IGFsbGVtIGRpZSBob3Jpem9udGFsZSBMZWlzdGUgdW50ZXIgZGVtCiAgIEhhdXB0cGxhbiBtaXQg MTMgTW9uYXRlbiBCcmVpdGUuICovCjo6LXdlYmtpdC1zY3JvbGxiYXIgeyB3aWR0aDogMTRweDsg aGVpZ2h0OiAxNHB4OyB9Cjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogICAgYmFja2dyb3Vu ZDogdmFyKC0tYmctY2FyZC1hbHQpOwp9Cjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAg YmFja2dyb3VuZDogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICBib3JkZXItcmFkaXVzOiA3cHg7CiAg ICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBtaW4td2lkdGg6IDQw cHg7IG1pbi1oZWlnaHQ6IDQwcHg7Cn0KOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7 IGJhY2tncm91bmQ6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgfQo6Oi13ZWJraXQtc2Nyb2xsYmFy LWNvcm5lciB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgfQoKLyogRmlyZWZveCAq LwoqIHsKICAgIHNjcm9sbGJhci13aWR0aDogYXV0bzsKICAgIHNjcm9sbGJhci1jb2xvcjogdmFy KC0tdGV4dC1tdXRlZCkgdmFyKC0tYmctY2FyZC1hbHQpOwp9CgovKiA9PT09PSBFbW9qaS1QaWNr ZXIgKHNjaGxpY2h0LCBTeXN0ZW0tRm9udCBsaWVmZXJ0IEFwcGxlLUVtb2ppcyBhdWYgbWFjT1Mv aU9TKSA9PT09PSAqLwouZW1vamktcGlja2VyIHsKICAgIC8qIE11c3MgdWViZXIgZGVtIE1vZGFs LU92ZXJsYXkgbGllZ2VuICgubW9kYWwgaGF0IHZhcigtLXotbW9kYWwpKSwKICAgICAgIHNvbnN0 IGxhbmRldCBqZWRlciBLbGljayBhdWYgZGVuIHZlcm1laW50bGljaGVuIFBpY2tlciBhdWYgZGVt CiAgICAgICBkYXJ1ZWJlciBsaWVnZW5kZW4gT3ZlcmxheSB1bmQgc2NobGllc3N0IGRhcyBNb2Rh bC4gKi8KICAgIHBvc2l0aW9uOiBmaXhlZDsgei1pbmRleDogdmFyKC0tei1wb3BvdmVyKTsKICAg IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3Jk ZXItc3Ryb25nKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7IGJveC1zaGFk b3c6IDAgOHB4IDMycHggcmdiYSgwLDAsMCwwLjE4KTsKICAgIHBhZGRpbmc6IDhweDsgd2lkdGg6 IDI3MnB4OyB1c2VyLXNlbGVjdDogbm9uZTsKfQouZW1vamktcGlja2VyLWthdCB7IGZvbnQtc2l6 ZTogdmFyKC0tZnMteHMpOyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRl ZCk7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBsZXR0ZXItc3BhY2luZzogMC40cHg7 IHBhZGRpbmc6IDZweCA0cHggMnB4OyB9Ci5lbW9qaS1waWNrZXIta2F0OmZpcnN0LWNoaWxkIHsg cGFkZGluZy10b3A6IDJweDsgfQouZW1vamktcGlja2VyLWdyaWQgeyBkaXNwbGF5OiBncmlkOyBn cmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg4LCAxZnIpOyBnYXA6IDJweDsgfQouZW1vamkt cGlja2VyLW9wdCB7CiAgICBmb250LXNpemU6IDIwcHg7IGxpbmUtaGVpZ2h0OiAxOyBwYWRkaW5n OiA0cHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7CiAgICBjdXJzb3I6IHBvaW50 ZXI7IHRleHQtYWxpZ246IGNlbnRlcjsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGJvcmRlcjog bm9uZTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4wOHM7CiAgICAvKiBNb25vY2hyb21l IFN5bWJvbC1EYXJzdGVsbHVuZyAoQ2hlcnJ5LVBpY2sgOGIyZDBmZCkgKi8KICAgIGZvbnQtZmFt aWx5OiAiU2Vnb2UgVUkgU3ltYm9sIiwiQ2FtYnJpYSBNYXRoIiwiU1RJWCIsIkRlamFWdSBTYW5z IiwiTHVjaWRhIFNhbnMgVW5pY29kZSIsc2Fucy1zZXJpZjsKICAgIGZvbnQtdmFyaWFudC1lbW9q aTogdGV4dDsKfQouZW1vamktcGlja2VyLW9wdDpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWJn LWhvdmVyKTsgfQouZW1vamktcGlja2VyLW9wdC5rZWluZXIgeyBmb250LXNpemU6IHZhcigtLWZz LWJhc2UpOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IGZvbnQtZmFtaWx5OiBpbmhlcml0OyB9 CgovKiBFbW9qaS1BdXN3YWhsLUJ1dHRvbiBpbiBBZG1pbi1UYWJlbGxlICovCi5lbW9qaS1idG4g ewogICAgd2lkdGg6IDM4cHg7IGhlaWdodDogMzJweDsgZm9udC1zaXplOiAxOHB4OyBsaW5lLWhl aWdodDogMTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWlucHV0KTsgYm9yZGVyOiAxcHggc29s aWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsgYm9yZGVyLXJhZGl1czogNXB4OwogICAgY3Vyc29yOiBw b2ludGVyOyBwYWRkaW5nOiAwOwogICAgZm9udC1mYW1pbHk6ICJBcHBsZSBDb2xvciBFbW9qaSIs IlNlZ29lIFVJIEVtb2ppIiwiTm90byBDb2xvciBFbW9qaSIsc2Fucy1zZXJpZjsKfQouZW1vamkt YnRuOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1mYXJiZS1ha3plbnQpOyB9Ci5lbW9qaS1i dG4ubGVlciB7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgZm9udC1zaXplOiB2YXIoLS1mcy1s Zyk7IGZvbnQtZmFtaWx5OiBpbmhlcml0OyB9CgovKiBLbGlja2JhcmUgU29uZGVyLVplbGxlIGlt IEhlYWRlciAqLwoua2Qtc29uZGVyLWtsaWNrYmFyIHsgY3Vyc29yOiBwb2ludGVyOyB9Ci5rZC1z b25kZXIta2xpY2tiYXI6aG92ZXIgeyBmaWx0ZXI6IGJyaWdodG5lc3MoMS4wOCk7IH0KCi8qIFNv bmRlci1XYXJuLU1vZGFsICovCi5zb25kZXItd2Fybi1tb2RhbCAubW9kYWwta29wZiB7IGJhY2tn cm91bmQ6IHZhcigtLWZhcmJlLXdhcm51bmcpOyB9Ci5zb25kZXItd2Fybi1tb2RhbC50eXAtaGlu d2VpcyAubW9kYWwta29wZiB7IGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLWFremVudCk7IH0KLnNv bmRlci13YXJuLWljb24geyBmb250LXNpemU6IDQ4cHg7IGxpbmUtaGVpZ2h0OiAxOyB0ZXh0LWFs aWduOiBjZW50ZXI7IG1hcmdpbjogOHB4IDAgMTJweDsKICAgIGZvbnQtZmFtaWx5OiAiQXBwbGUg Q29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsIk5vdG8gQ29sb3IgRW1vamkiLHNhbnMtc2Vy aWY7IH0KLnNvbmRlci13YXJuLXRpdGVsIHsgZm9udC1zaXplOiAxOHB4OyBmb250LXdlaWdodDog NjAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBtYXJn aW4tYm90dG9tOiAxMHB4OyBwYWRkaW5nOiAwIDhweDsgd29yZC13cmFwOiBicmVhay13b3JkOyBv dmVyZmxvdy13cmFwOiBicmVhay13b3JkOyB9Ci5zb25kZXItd2Fybi10ZXh0IHsKICAgIGZvbnQt c2l6ZTogdmFyKC0tZnMtbGcpOyBsaW5lLWhlaWdodDogMS41NTsgY29sb3I6IHZhcigtLXRleHQt cHJpbWFyeSk7IHBhZGRpbmc6IDEycHggMTRweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNh cmQtYWx0KTsgYm9yZGVyLXJhZGl1czogOHB4OyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3Jk ZXItbGlnaHQpOwogICAgbWF4LXdpZHRoOiAxMDAlOyBtYXgtaGVpZ2h0OiA1MHZoOyBvdmVyZmxv dy15OiBhdXRvOwogICAgd29yZC13cmFwOiBicmVhay13b3JkOyBvdmVyZmxvdy13cmFwOiBicmVh ay13b3JkOyB3b3JkLWJyZWFrOiBicmVhay13b3JkOwp9Ci5zb25kZXItd2Fybi10ZXh0IHAgeyBt YXJnaW46IDAgMCAwLjZlbSAwOyB9Ci5zb25kZXItd2Fybi10ZXh0IHA6bGFzdC1jaGlsZCB7IG1h cmdpbi1ib3R0b206IDA7IH0KLnNvbmRlci13YXJuLXRleHQgdWwsIC5zb25kZXItd2Fybi10ZXh0 IG9sIHsgbWFyZ2luOiAwLjRlbSAwIDAuNGVtIDEuNGVtOyBwYWRkaW5nOiAwOyB9Ci5zb25kZXIt d2Fybi10ZXh0IGxpIHsgbWFyZ2luLWJvdHRvbTogMC4yZW07IH0KLnNvbmRlci13YXJuLXRleHQg YSB7IGNvbG9yOiB2YXIoLS1mYXJiZS1ha3plbnQpOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGlu ZTsgd29yZC1icmVhazogYnJlYWstYWxsOyB9Ci5zb25kZXItd2Fybi1kYXR1bSB7IGZvbnQtc2l6 ZTogdmFyKC0tZnMtYmFzZSk7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgdGV4dC1hbGlnbjog Y2VudGVyOyBtYXJnaW4tdG9wOiAxMnB4OyB9CgovKiBSaWNoLVRleHQtRWRpdG9yICovCi5ydGUt dG9vbGJhciB7CiAgICBkaXNwbGF5OiBmbGV4OyBnYXA6IDJweDsgcGFkZGluZzogNHB4OyBtYXJn aW4tYm90dG9tOiA0cHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IGJvcmRl cjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBib3JkZXItcmFkaXVzOiB2YXIo LS1yYWRpdXMtbWQpIDZweCAwIDA7IGJvcmRlci1ib3R0b206IG5vbmU7IGZsZXgtd3JhcDogd3Jh cDsKfQoucnRlLWJ0biB7CiAgICBtaW4td2lkdGg6IDMwcHg7IGhlaWdodDogMjhweDsgcGFkZGlu ZzogMCA4cHg7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOwogICAgYmFja2dyb3VuZDogdHJhbnNw YXJlbnQ7IGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmFkaXVzOiB2YXIo LS1yYWRpdXMtc20pOwogICAgY3Vyc29yOiBwb2ludGVyOyBjb2xvcjogdmFyKC0tdGV4dC1wcmlt YXJ5KTsKfQoucnRlLWJ0bjpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsgfQou cnRlLWJ0bi5ha3RpdiB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWFjdGl2ZSk7IGJvcmRlci1jb2xv cjogdmFyKC0tYm9yZGVyLWNvbG9yKTsgfQoucnRlLXNlcCB7IHdpZHRoOiAxcHg7IGJhY2tncm91 bmQ6IHZhcigtLWJvcmRlci1jb2xvcik7IG1hcmdpbjogNHB4IDRweDsgfQoucnRlLWVkaXRvciB7 CiAgICBtaW4taGVpZ2h0OiAxMTBweDsgbWF4LWhlaWdodDogMzAwcHg7IG92ZXJmbG93LXk6IGF1 dG87CiAgICBwYWRkaW5nOiAxMHB4IDEycHg7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOyBsaW5l LWhlaWdodDogMS41OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctaW5wdXQpOyBjb2xvcjogdmFy KC0tdGV4dC1wcmltYXJ5KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xv cik7IGJvcmRlci1yYWRpdXM6IDAgMCA2cHggNnB4OwogICAgd29yZC13cmFwOiBicmVhay13b3Jk OyBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOyB3b3JkLWJyZWFrOiBicmVhay13b3JkOwogICAg bWF4LXdpZHRoOiAxMDAlOwp9Ci5ydGUtZWRpdG9yOmZvY3VzIHsgb3V0bGluZTogbm9uZTsgYm9y ZGVyLWNvbG9yOiB2YXIoLS1mYXJiZS1ha3plbnQpOyB9Ci5ydGUtZWRpdG9yIHAgeyBtYXJnaW46 IDAgMCAwLjZlbSAwOyB9Ci5ydGUtZWRpdG9yIHA6bGFzdC1jaGlsZCB7IG1hcmdpbi1ib3R0b206 IDA7IH0KLnJ0ZS1lZGl0b3IgdWwsIC5ydGUtZWRpdG9yIG9sIHsgbWFyZ2luOiAwLjRlbSAwIDAu NGVtIDEuNGVtOyBwYWRkaW5nOiAwOyB9Ci5ydGUtZWRpdG9yIGEgeyBjb2xvcjogdmFyKC0tZmFy YmUtYWt6ZW50KTsgd29yZC1icmVhazogYnJlYWstYWxsOyB9Ci8qIGJsb2NrcXVvdGUgPSBJbmRl bnQtTGV2ZWwuIHN0eWxlV2l0aENTUyhmYWxzZSkgc29yZ3QgZGFmdWVyIGRhc3MgZXhlY0NvbW1h bmQKICAgJ2luZGVudCcgbmVzdGVkIGJsb2NrcXVvdGVzIGVyemV1Z3Qg4oCUIHBybyBMZXZlbCBt ZWhyIG1hcmdpbi1sZWZ0LiBGbGFjaAogICBnZXN0eWx0IChrZWluIFppdGF0LUxvb2spLCBibGVp YnQgemVpbGVudWViZXJncmVpZmVuZC4gKi8KLnJ0ZS1lZGl0b3IgYmxvY2txdW90ZSB7CiAgICBt YXJnaW46IDAgMCAwIDI0cHg7CiAgICBwYWRkaW5nOiAwOwogICAgYm9yZGVyOiBub25lOwogICAg cXVvdGVzOiBub25lOwp9Ci5ydGUtZWRpdG9yIGJsb2NrcXVvdGU6OmJlZm9yZSwgLnJ0ZS1lZGl0 b3IgYmxvY2txdW90ZTo6YWZ0ZXIgeyBjb250ZW50OiBub25lOyB9CgovKiA9PT09PSBBZG1pbjog QXVza2xhcHBiYXJlIEhpbndlaXNib3hlbiA9PT09PSAqLwouYWRtaW4taW5mbyB7CiAgICBiYWNr Z3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxp Z2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsgbWFyZ2luLWJvdHRvbTogMjBweDsgb3ZlcmZs b3c6IGhpZGRlbjsKfQouYWRtaW4td2FybmJveCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1mYXJi ZS13YXJudW5nLWJnLCAjZmZmN2VkKTsKICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0t ZmFyYmUtd2FybnVuZywgI2Y1OWUwYik7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsK ICAgIHBhZGRpbmc6IDEwcHggMTRweDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1z bSk7CiAgICBmb250LXNpemU6IHZhcigtLWZzLW1kKTsKICAgIGxpbmUtaGVpZ2h0OiAxLjU1Owog ICAgbWFyZ2luLWJvdHRvbTogMTZweDsKfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuYWRtaW4td2Fy bmJveCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI0NSwgMTU4LCAxMSwgMC4xMik7CiAgICBjb2xv cjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKfQouYWRtaW4taW5mbyA+IHN1bW1hcnkgewogICAgbGlz dC1zdHlsZTogbm9uZTsgcGFkZGluZzogMTBweCAxNHB4OyBjdXJzb3I6IHBvaW50ZXI7IHVzZXIt c2VsZWN0OiBub25lOwogICAgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiB2YXIoLS1mcy1t ZCk7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmct Y2FyZC1hbHQpOwogICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAx MHB4OwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1czsKfQouYWRtaW4taW5mbyA+IHN1 bW1hcnk6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IH0KLmFkbWluLWluZm8g PiBzdW1tYXJ5Ojotd2Via2l0LWRldGFpbHMtbWFya2VyIHsgZGlzcGxheTogbm9uZTsgfQouYWRt aW4taW5mbyA+IHN1bW1hcnk6Om1hcmtlciB7IGNvbnRlbnQ6ICcnOyB9Ci5hZG1pbi1pbmZvLWNo ZXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsg dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnM7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAg IHdpZHRoOiAxMHB4Owp9Ci5hZG1pbi1pbmZvW29wZW5dID4gc3VtbWFyeSB7IGJvcmRlci1ib3R0 b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyB9Ci5hZG1pbi1pbmZvW29wZW5dIC5h ZG1pbi1pbmZvLWNoZXYgeyB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH0KLmFkbWluLWluZm8t YmFkZ2UgewogICAgbWFyZ2luLWxlZnQ6IGF1dG87IGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOyBm b250LXdlaWdodDogNTAwOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICBiYWNrZ3JvdW5k OiB0cmFuc3BhcmVudDsKfQouYWRtaW4taW5mby1ib2R5IHsKICAgIHBhZGRpbmc6IDE0cHggMTZw eDsgZm9udC1zaXplOiAxMi41cHg7IGxpbmUtaGVpZ2h0OiAxLjY7IGNvbG9yOiB2YXIoLS10ZXh0 LXByaW1hcnkpOwp9Ci5hZG1pbi1pbmZvLWJvZHkgcCB7IG1hcmdpbi1ib3R0b206IDEwcHg7IH0K LmFkbWluLWluZm8tYm9keSBwOmxhc3QtY2hpbGQgeyBtYXJnaW4tYm90dG9tOiAwOyB9Ci5hZG1p bi1pbmZvLWJvZHkgdWwgeyBtYXJnaW46IDZweCAwIDEycHggMjJweDsgfQouYWRtaW4taW5mby1i b2R5IHVsIHVsIHsgbWFyZ2luOiA0cHggMCA2cHggMThweDsgfQouYWRtaW4taW5mby1ib2R5IGxp IHsgbWFyZ2luLWJvdHRvbTogM3B4OyB9Ci5hZG1pbi1pbmZvLWJvZHkgY29kZSB7CiAgICBiYWNr Z3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IHBhZGRpbmc6IDFweCA1cHg7IGJvcmRlci1yYWRp dXM6IHZhcigtLXJhZGl1cy14cyk7CiAgICBmb250LXNpemU6IDExLjVweDsgYm9yZGVyOiAxcHgg c29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKfQouYWRtaW4taW5mby1ib2R5IHN0cm9uZyB7IGNv bG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9CgovKiA9PT09PSBTY2hpY2h0Y29kZS1Wb3JzY2hh dTogR3J1cHBpZXJ1bmcgPT09PT0gKi8KLnNjLXZvcnNjaGF1LXRvb2xiYXIgewogICAgZGlzcGxh eTogZmxleDsgZ2FwOiAxMnB4OyBhbGlnbi1pdGVtczogY2VudGVyOyBtYXJnaW4tYm90dG9tOiAx MnB4OyBmbGV4LXdyYXA6IHdyYXA7CiAgICBwYWRkaW5nOiA4cHggMTJweDsgYmFja2dyb3VuZDog dmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOwp9Ci5z Yy12b3JzY2hhdS10b29sYmFyIGxhYmVsIHsgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsgZm9u dC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgfQouc2Mtdm9yc2No YXUtdG9vbGJhciBzZWxlY3QgewogICAgcGFkZGluZzogNHB4IDhweDsgZm9udC1zaXplOiB2YXIo LS1mcy1iYXNlKTsgYmFja2dyb3VuZDogdmFyKC0tYmctaW5wdXQpOwogICAgYm9yZGVyOiAxcHgg c29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNt KTsKfQouc2MtZ3J1cHBlIHsKICAgIG1hcmdpbi1ib3R0b206IDE2cHg7IGJvcmRlci1sZWZ0OiAz cHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7IHBhZGRpbmctbGVmdDogMTBweDsKfQouc2Mt Z3J1cHBlLXRpdGVsIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBmb250LXdlaWdodDog NzAwOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7 CiAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7IG1hcmdpbi1ib3R0b206IDZweDsKfQouc2MtZ3J1 cHBlLWxpc3RlIHsKICAgIGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVw ZWF0KGF1dG8tZmlsbCwgbWlubWF4KDIyMHB4LCAxZnIpKTsKICAgIGdhcDogNnB4Owp9Ci8qIFBl cnNvbmFsLVRhYmVsbGU6IE5hY2huYW1lIGFscyBrbGlja2JhcmVyIExpbmsgenVtIEVkaXQtTW9k YWwgKi8KLnBlcnNvbi1uYW1lLWxpbmsgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm9yZGVy LWJvdHRvbTogMXB4IGRvdHRlZCB0cmFuc3BhcmVudDsKICAgIHRyYW5zaXRpb246IGJvcmRlci1j b2xvciAwLjE1cywgY29sb3IgMC4xNXM7Cn0KLnBlcnNvbi1uYW1lLWxpbms6aG92ZXIgewogICAg Y29sb3I6IHZhcigtLWZhcmJlLXByaW1hZXIpOwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFy KC0tZmFyYmUtcHJpbWFlcik7Cn0KCi8qICJOZXVlciBGYWNoYXVmc2ljaHQtRWludHJhZyItTW9k YWwgKEJ1Zy1GaXggKyBGZWF0dXJlOiBEcm9wZG93biBkZXIgV2FjaGxlaXR1bmdlbikgKi8KLmZh LW5ldS1tb2R1cy16ZWlsZSB7CiAgICBkaXNwbGF5OiBmbGV4OyBnYXA6IDE4cHg7IGZsZXgtd3Jh cDogd3JhcDsKICAgIHBhZGRpbmc6IDEwcHggMTRweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJn LWNhcmQtYWx0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7CiAgICBtYXJn aW4tYm90dG9tOiAxNHB4Owp9Ci5mYS1uZXUtbW9kdXMtb3B0IHsKICAgIGRpc3BsYXk6IGZsZXg7 IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAg Zm9udC1zaXplOiB2YXIoLS1mcy1tZCk7CiAgICBmb250LXdlaWdodDogNTAwOwp9Ci5mYS1uZXUt bW9kdXMtb3B0IGlucHV0W3R5cGU9InJhZGlvIl0geyB3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4 OyBjdXJzb3I6IHBvaW50ZXI7IH0KLmZhLW5ldS1iZXJlaWNoIHsKICAgIHBhZGRpbmctdG9wOiA0 cHg7Cn0KLmZhLW5ldS1ncmlkIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRl LWNvbHVtbnM6IDFmciAxZnI7CiAgICBnYXA6IDEycHggMTRweDsKICAgIG1hcmdpbi1ib3R0b206 IDEwcHg7Cn0KLmRsZy1sYWJlbCB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXdlaWdodDogNjAwOyBm b250LXNpemU6IHZhcigtLWZzLW1kKTsgbWFyZ2luLWJvdHRvbTogNHB4OyBjb2xvcjogdmFyKC0t dGV4dC1oZWFkaW5nKTsgfQoKLyogTW9kYWwtRW50d3VyZi1SZXN0b3JlLUJhbm5lciAoU3BlYyBG LjQpICovCi5tb2RhbC1lbnR3dXJmLWJhbm5lciB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxp Z24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTBweDsKICAgIHBhZGRpbmc6IDEwcHggMTRweDsK ICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LDE0NCwyMjYs MC4xMCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1mYXJiZS1ha3plbnQpOwogICAgYm9y ZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQp OwogICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7CiAgICBmbGV4LXdyYXA6IHdyYXA7Cn0K Lm1lYi1pY29uIHsgZm9udC1zaXplOiAxOHB4OyBsaW5lLWhlaWdodDogMTsgfQoubWViLXRleHQg eyBmbGV4OiAxOyBtaW4td2lkdGg6IDIwMHB4OyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5tb2Rh bC1lbnR3dXJmLWJhbm5lciB7IGJhY2tncm91bmQ6IHJnYmEoNzQsMTQ0LDIyNiwwLjE4KTsgfQoK LyogRmFjaGF1ZnNpY2h0IEdyYW51bGFyLVN1Yi1TaWNodGJhcmtlaXRzLU1vZGFsIChTcGVjIEYu MikgKi8KLmZhLXN1YnNpY2h0LWFrdGlvbmVuIHsKICAgIGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4 OyBmbGV4LXdyYXA6IHdyYXA7CiAgICBtYXJnaW4tYm90dG9tOiAxNHB4Owp9Ci5mYS1zdWJzaWNo dC1saXN0ZSB7CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6 IDRweDsKICAgIG1heC1oZWlnaHQ6IDUwdmg7IG92ZXJmbG93LXk6IGF1dG87CiAgICBib3JkZXI6 IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0t cmFkaXVzLW1kKTsKICAgIHBhZGRpbmc6IDEwcHggMTRweDsKICAgIGJhY2tncm91bmQ6IHZhcigt LWJnLWNhcmQpOwp9Ci5mYS1zdWJzaWNodC16ZWlsZSB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGln bi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsKICAgIHBhZGRpbmc6IDRweCA2cHg7IGJvcmRlci1y YWRpdXM6IHZhcigtLXJhZGl1cy14cyk7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXNp emU6IHZhcigtLWZzLW1kKTsKfQouZmEtc3Vic2ljaHQtemVpbGU6aG92ZXIgeyBiYWNrZ3JvdW5k OiB2YXIoLS1iZy1ob3Zlcik7IH0KLmZhLXN1YnNpY2h0LXplaWxlIGlucHV0W3R5cGU9ImNoZWNr Ym94Il0geyB3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyBjdXJzb3I6IHBvaW50ZXI7IH0KCi8q IG1haWx0bzotQXV0by1UcmlnZ2VyLUtvbmZpZyBpbSBWb3JsYWdlbi1FZGl0b3IgKGF1dG9Ucmln Z2VyLVZvcmxhZ2VuKSAqLwouZXZtLXRyaWdnZXItYmxvY2sgewogICAgbWFyZ2luLXRvcDogMTZw eDsKICAgIHBhZGRpbmc6IDEycHggMTRweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQt YWx0KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBib3Jk ZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOwp9Ci5ldm0tdHJpZ2dlci10aXRlbCB7IGZvbnQt d2VpZ2h0OiA3MDA7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOyBjb2xvcjogdmFyKC0tdGV4dC1o ZWFkaW5nKTsgbWFyZ2luLWJvdHRvbTogMTBweDsgfQouZXZtLXRyaWdnZXItYWt0aXYgeyBkaXNw bGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgY3Vyc29yOiBwb2ludGVy OyBmb250LXdlaWdodDogNTAwOyBmb250LXNpemU6IHZhcigtLWZzLW1kKTsgfQouZXZtLXRyaWdn ZXItYWt0aXYgaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7IHdpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2 cHg7IGN1cnNvcjogcG9pbnRlcjsgfQouZXZtLWVtcGYtbGlzdGUgewogICAgZGlzcGxheTogZmxl eDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA0cHg7CiAgICBtYXJnaW4tdG9wOiA0cHg7 CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsKICAgIHBhZGRpbmc6IDhweCAxMHB4Owog ICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIGJvcmRlcjogMXB4IHNvbGlk IHZhcigtLWJvcmRlci1saWdodCk7Cn0KLmV2bS1lbXBmLXplaWxlIHsgZGlzcGxheTogZmxleDsg YWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA4cHg7IGN1cnNvcjogcG9pbnRlcjsgZm9udC1zaXpl OiAxMi41cHg7IGxpbmUtaGVpZ2h0OiAxLjQ7IHBhZGRpbmc6IDJweCAwOyB9Ci5ldm0tZW1wZi16 ZWlsZSBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsgd2lkdGg6IDE1cHg7IGhlaWdodDogMTVweDsg Y3Vyc29yOiBwb2ludGVyOyB9CgovKiBFLU1haWwtVm9ybGFnZW4gS2FydGVuLUxheW91dCAoRmlu ZGluZyBDLjcgLyBTcGVjIEYuMSkgKi8KLmVtYWlsdm9ybGFnZW4ta2FydGVuIHsKICAgIGRpc3Bs YXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlu bWF4KDQyMHB4LCAxZnIpKTsKICAgIGdhcDogMTZweDsKICAgIG1hcmdpbi10b3A6IDE2cHg7Cn0K LmVtYWlsdm9ybGFnZS1rYXJ0ZSB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0 ZS1jb2x1bW5zOiA2NHB4IDFmciBhdXRvOwogICAgZ2FwOiAxNHB4OwogICAgYWxpZ24taXRlbXM6 IHN0cmV0Y2g7CiAgICBwYWRkaW5nOiAxNnB4IDE4cHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1i Zy1jYXJkKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBi b3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAg dGV4dC1hbGlnbjogbGVmdDsKICAgIGZvbnQ6IGluaGVyaXQ7CiAgICBjb2xvcjogaW5oZXJpdDsK ICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cywgYm94LXNoYWRvdyAwLjE1cywgdHJh bnNmb3JtIDAuMDZzOwp9Ci5lbWFpbHZvcmxhZ2Uta2FydGU6aG92ZXIgeyBib3JkZXItY29sb3I6 IHZhcigtLWZhcmJlLWFremVudCk7IGJveC1zaGFkb3c6IDAgNHB4IDE0cHggcmdiYSgwLDAsMCww LjA4KTsgfQouZW1haWx2b3JsYWdlLWthcnRlOmFjdGl2ZSB7IHRyYW5zZm9ybTogc2NhbGUoMC45 OTgpOyB9Ci5ldmstaWNvbiB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVy OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHdpZHRoOiA2NHB4OyBoZWlnaHQ6IDY0cHg7 CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgZm9udC1zaXplOiAxMXB4OyBmb250LXdlaWdo dDogNzAwOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBsZXR0ZXItc3BhY2luZzogLjAzZW07 CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IGxpbmUtaGVpZ2h0OiAxLjI7IHBhZGRpbmc6IDRweDsK ICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0 LXNlY29uZGFyeSk7Cn0KLmV2ay1pY29uLXdhcm51bmcgeyBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwx MTEsMzAsMC4xOCk7IGNvbG9yOiB2YXIoLS1mYXJiZS13YXJudW5nKTsgfQouZXZrLWljb24tYWt6 ZW50IHsgYmFja2dyb3VuZDogcmdiYSg3NCwxNDQsMjI2LDAuMTUpOyBjb2xvcjogdmFyKC0tZmFy YmUtYWt6ZW50KTsgfQouZXZrLWluaGFsdCB7IG1pbi13aWR0aDogMDsgZGlzcGxheTogZmxleDsg ZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA0cHg7IH0KLmV2ay10aXRlbCB7IGZvbnQtd2Vp Z2h0OiA3MDA7IGZvbnQtc2l6ZTogMTVweDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0K LmV2ay1iZXNjaHJlaWJ1bmcgeyBmb250LXNpemU6IHZhcigtLWZzLWJhc2UpOyBjb2xvcjogdmFy KC0tdGV4dC1tdXRlZCk7IGxpbmUtaGVpZ2h0OiAxLjQ7IG1hcmdpbi1ib3R0b206IDRweDsgfQou ZXZrLWJldHJlZmYsIC5ldmstcHJldmlldyB7CiAgICBmb250LXNpemU6IHZhcigtLWZzLWJhc2Up OwogICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsKICAgIG92ZXJmbG93OiBoaWRkZW47 IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5ldmstYmV0 cmVmZiB7IGZvbnQtd2VpZ2h0OiA1MDA7IH0KLmV2ay1sYWJlbCB7IGNvbG9yOiB2YXIoLS10ZXh0 LW11dGVkKTsgZm9udC13ZWlnaHQ6IDYwMDsgbWFyZ2luLXJpZ2h0OiA0cHg7IH0KLmV2ay1wcmV2 aWV3IHsgZm9udC1zdHlsZTogaXRhbGljOyBvcGFjaXR5OiAwLjg7IH0KLmV2ay1ha3Rpb24gewog ICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsgZm9u dC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiB2YXIoLS1mYXJiZS1ha3plbnQpOwogICAgd2hpdGUt c3BhY2U6IG5vd3JhcDsKfQovKiBIaWRlLUJ1dHRvbiBvYmVuIHJlY2h0cyBhdWYgamVkZXIgVm9y bGFnZS1LYXJ0ZS4gRXJzY2hlaW50IG51ciBiZWltCiAgIEhvdmVyLCBkYW1pdCBkaWUgS2FydGVu LU9wdGlrIGltIFJ1aGV6dXN0YW5kIHNhdWJlciBibGVpYnQuICovCi5lbWFpbHZvcmxhZ2Uta2Fy dGUgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KLmV2ay1oaWRlLWJ0biB7CiAgICBwb3NpdGlvbjog YWJzb2x1dGU7IHRvcDogOHB4OyByaWdodDogOHB4OwogICAgd2lkdGg6IDIycHg7IGhlaWdodDog MjJweDsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29u dGVudDogY2VudGVyOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGJvcmRlcjogMXB4IHNv bGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsgZm9u dC1zaXplOiB2YXIoLS1mcy1sZyk7IGxpbmUtaGVpZ2h0OiAxOwogICAgY29sb3I6IHZhcigtLXRl eHQtbXV0ZWQpOyBjdXJzb3I6IHBvaW50ZXI7CiAgICBvcGFjaXR5OiAwOyB0cmFuc2l0aW9uOiBv cGFjaXR5IDAuMTVzLCBiYWNrZ3JvdW5kIDAuMTVzLCBib3JkZXItY29sb3IgMC4xNXM7Cn0KLmVt YWlsdm9ybGFnZS1rYXJ0ZTpob3ZlciAuZXZrLWhpZGUtYnRuIHsgb3BhY2l0eTogMTsgfQouZXZr LWhpZGUtYnRuOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXIt Y29sb3I6IHZhcigtLWJvcmRlci1jb2xvcik7IGNvbG9yOiB2YXIoLS1mYXJiZS1mZWhsZXIpOyB9 Ci8qIEZvb3Rlci1CZXJlaWNoIGZ1ZXIgdmVyc3RlY2t0ZSBWb3JsYWdlbiAqLwouZW1haWx2b3Js YWdlbi12ZXJzdGVja3QgewogICAgbWFyZ2luLXRvcDogMjRweDsgcGFkZGluZy10b3A6IDE2cHg7 CiAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLWJvcmRlci1jb2xvcik7Cn0KLmVtYWls dm9ybGFnZW4tdmVyc3RlY2t0LWtvcGYgewogICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6 IGNlbnRlcjsgZ2FwOiA4cHg7CiAgICBmb250LXNpemU6IHZhcigtLWZzLWJhc2UpOyBjb2xvcjog dmFyKC0tdGV4dC1tdXRlZCk7IGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBtYXJnaW4tYm90dG9tOiAx MHB4OyBjdXJzb3I6IHBvaW50ZXI7IHVzZXItc2VsZWN0OiBub25lOwp9Ci5lbWFpbHZvcmxhZ2Vu LXZlcnN0ZWNrdC1saXN0ZSB7CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7IGdh cDogOHB4Owp9Ci5ldmstdmVyc3RlY2t0LXBpbGxlIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4 OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsKICAgIHBhZGRpbmc6IDZweCAxMHB4OyBi YWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIo LS1ib3JkZXItbGlnaHQpOyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgZm9u dC1zaXplOiB2YXIoLS1mcy1iYXNlKTsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsKfQou ZXZrLXZlcnN0ZWNrdC1waWxsZSAuZXZrLXZlcnN0ZWNrdC10aXRlbCB7IGZvbnQtd2VpZ2h0OiA2 MDA7IH0KLmV2ay1zaG93LWJ0biB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgYm9yZGVy OiBub25lOyBwYWRkaW5nOiAwIDJweDsKICAgIGNvbG9yOiB2YXIoLS1mYXJiZS1ha3plbnQpOyBj dXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7CiAgICBmb250LXdlaWdo dDogNjAwOwp9Ci5ldmstc2hvdy1idG46aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGlu ZTsgfQoKLyogRWRpdG9yLU1vZGFsIHBybyBFLU1haWwtVm9ybGFnZSAqLwouZXZtLWJlc2NocmVp YnVuZyB7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7 IG1hcmdpbjogMCAwIDE0cHg7IH0KLmV2bS1ncmlkIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1w bGF0ZS1jb2x1bW5zOiAxZnIgMjgwcHg7IGdhcDogMThweDsgfQpAbWVkaWEgKG1heC13aWR0aDog OTgwcHgpIHsgLmV2bS1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH0gfQouZXZt LWZvcm0geyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBtaW4td2lkdGg6 IDA7IH0KLmV2bS1sYWJlbCB7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogdmFyKC0tZnMt bWQpOyBtYXJnaW4tYm90dG9tOiA2cHg7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9Ci5l dm0tYmV0cmVmZi1pbnB1dCB7IHdpZHRoOiAxMDAlOyBmb250LWZhbWlseTogaW5oZXJpdDsgfQou ZXZtLXRleHQtaW5wdXQgeyB3aWR0aDogMTAwJTsgZm9udC1mYW1pbHk6IGluaGVyaXQ7IGxpbmUt aGVpZ2h0OiAxLjU7IHJlc2l6ZTogdmVydGljYWw7IG1pbi1oZWlnaHQ6IDIyMHB4OyB9Ci5ldm0t dGV4dC1ydGUgeyBtaW4taGVpZ2h0OiAzODBweDsgbWF4LWhlaWdodDogNjB2aDsgb3ZlcmZsb3ct eTogYXV0bzsgcGFkZGluZzogMTJweCAxNHB4OyBsaW5lLWhlaWdodDogMS41NTsgZm9udC1mYW1p bHk6IGluaGVyaXQ7IH0KLmV2bS10ZXh0LXJ0ZTplbXB0eTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6 IGF0dHIoZGF0YS1wbGFjZWhvbGRlcik7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAg ICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQouZXZtLWhpbndlaXMgeyBkaXNwbGF5OiBibG9jazsg Y29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgbWFyZ2lu LXRvcDogNnB4OyBsaW5lLWhlaWdodDogMS40NTsgfQouZXZtLXRvZ2dsZXMgeyBkaXNwbGF5OiBm bGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDZweDsgbWFyZ2luLXRvcDogMTRweDsg cGFkZGluZy10b3A6IDEycHg7IGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGln aHQpOyB9Ci5ldm0tdG9nZ2xlIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsg Z2FwOiA4cHg7IGN1cnNvcjogcG9pbnRlcjsgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IGxpbmUt aGVpZ2h0OiAxLjQ7IH0KLmV2bS12YXJzIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQt YWx0KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBib3Jk ZXItcmFkaXVzOiA4cHg7CiAgICBwYWRkaW5nOiAxMnB4IDE0cHg7CiAgICBhbGlnbi1zZWxmOiBz dGFydDsKICAgIHBvc2l0aW9uOiBzdGlja3k7IHRvcDogMDsKICAgIG1heC1oZWlnaHQ6IDcwdmg7 IG92ZXJmbG93LXk6IGF1dG87Cn0KLmV2bS12YXJzLXRpdGVsIHsgZm9udC13ZWlnaHQ6IDcwMDsg Zm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IG1hcmdpbi1ib3R0b206IDRweDsgY29sb3I6IHZhcigt LXRleHQtaGVhZGluZyk7IH0KLmV2bS12YXJzLWhpbndlaXMgeyBmb250LXNpemU6IHZhcigtLWZz LXNtKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBtYXJnaW4tYm90dG9tOiAxMnB4OyBsaW5l LWhlaWdodDogMS40OyB9Ci5ldm0tdmFycy1saXN0ZSB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGly ZWN0aW9uOiBjb2x1bW47IGdhcDogNXB4OyB9Ci5ldm0tdmFyLWJ0biB7CiAgICBkaXNwbGF5OiBm bGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDJweDsKICAgIHBhZGRpbmc6IDdweCAx MHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBib3JkZXI6IDFweCBzb2xp ZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgY3Vyc29y OiBwb2ludGVyOwogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIGZvbnQ6IGluaGVyaXQ7CiAgICB0 cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xMnMsIGJhY2tncm91bmQgMC4xMnM7Cn0KLmV2bS12 YXItYnRuOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1mYXJiZS1ha3plbnQpOyBiYWNrZ3Jv dW5kOiB2YXIoLS1iZy1ob3Zlcik7IH0KLmV2bS12YXItbmFtZSB7IGZvbnQtZmFtaWx5OiB1aS1t b25vc3BhY2UsICdTRiBNb25vJywgbW9ub3NwYWNlOyBmb250LXNpemU6IDExLjVweDsgY29sb3I6 IHZhcigtLWZhcmJlLWFremVudCk7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KLmV2bS12YXItYmVzY2hy IHsgZm9udC1zaXplOiAxMC41cHg7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgbGluZS1oZWln aHQ6IDEuMzsgfQoKLyogTWl0YmVhcmJlaXRlci1MaXN0ZSBpbSBQZXJzb24tRWRpdC1Nb2RhbDog MyBTcGFsdGVuLCBhbHBoYWJldGlzY2ggdm9uIG9iZW4gbmFjaCB1bnRlbiAqLwouZXItcGVyc29u ZW4tZ3JpZCB7CiAgICBjb2x1bW4tY291bnQ6IDM7CiAgICBjb2x1bW4tZ2FwOiAxOHB4OwogICAg bWF4LWhlaWdodDogMzYwcHg7CiAgICBvdmVyZmxvdzogYXV0bzsKICAgIGJvcmRlcjogMXB4IHNv bGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBwYWRkaW5nOiA4cHggMTBweDsKICAgIGJvcmRl ci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJk KTsKfQouZXItcGVyc29uZW4temVpbGUgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0 ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDZweDsKICAgIHBhZGRpbmc6IDNweCAwOwogICAgY3Vyc29y OiBwb2ludGVyOwogICAgYnJlYWstaW5zaWRlOiBhdm9pZDsKICAgIC13ZWJraXQtY29sdW1uLWJy ZWFrLWluc2lkZTogYXZvaWQ7CiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7Cn0KLmVyLXBl cnNvbmVuLW5hbWUgeyBmbGV4OiAxOyBtaW4td2lkdGg6IDA7IG92ZXJmbG93OiBoaWRkZW47IHRl eHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9Ci5lci1wZXJzb25l bi1ncnVwcGUgewogICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgZm9udC1zaXplOiB2 YXIoLS1mcy1zbSk7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgYmFja2dyb3VuZDogdmFyKC0t YmctY2FyZC1hbHQpOwogICAgcGFkZGluZzogMXB4IDZweDsKICAgIGJvcmRlci1yYWRpdXM6IDhw eDsKICAgIGZsZXgtc2hyaW5rOiAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTAwcHgpIHsKICAg IC5lci1wZXJzb25lbi1ncmlkIHsgY29sdW1uLWNvdW50OiAyOyB9Cn0KCi8qIENoZXJyeS1QaWNr IDg5ZWIzYzc6IERpcmVrdGUtS29sbGVnZW4tSGVydm9yaGVidW5nIGltIFBlcnNvbi1FZGl0LURp YWxvZy4KICAgTnVyIGFrdGl2LCB3ZW5uIGBmZWF0dXJlcy5rb2xsZWdlbkhlcnZvcmhlYmVuYCBh biBpc3QuCiAgIE1pa3JvdGVhbS1TZWt0aW9uIChrb2xsZWdlbi1taWtybykgZm9sZ3QgZGVyIGds ZWljaGVuIFN0cnVrdHVyLiAqLwpmaWVsZHNldC5rb2xsZWdlbi1taWtybywKZmllbGRzZXQua29s bGVnZW4tZGlyZWt0LApmaWVsZHNldC5rb2xsZWdlbi1yZXN0IHsKICAgIGJvcmRlcjogMXB4IHNv bGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMt c20pOwogICAgcGFkZGluZzogOHB4IDEycHggMTBweDsKICAgIG1hcmdpbjogMTBweCAwIDA7Cn0K ZmllbGRzZXQua29sbGVnZW4tZGlyZWt0IHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMzksIDEzNywg MTA5LCAwLjA2KTsgIC8qIGRlemVudCBncnVlbmxpY2ggKi8KICAgIGJvcmRlci1jb2xvcjogcmdi YSgzOSwgMTM3LCAxMDksIDAuNDUpOwp9CmZpZWxkc2V0LmtvbGxlZ2VuLW1pa3JvIHsKICAgIGJh Y2tncm91bmQ6IHJnYmEoMCwgOTksIDE3NSwgMC4wNik7ICAgIC8qIGRlemVudCBibGFldWxpY2gs IFBvbGl6ZWktQmxhdS1IYXVjaCAqLwogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDk5LCAxNzUs IDAuNDUpOwp9CmZpZWxkc2V0LmtvbGxlZ2VuLW1pa3JvICA+IGxlZ2VuZCwKZmllbGRzZXQua29s bGVnZW4tZGlyZWt0ID4gbGVnZW5kLApmaWVsZHNldC5rb2xsZWdlbi1yZXN0ICAgPiBsZWdlbmQg ewogICAgcGFkZGluZzogMCA2cHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgZm9udC1zaXpl OiB2YXIoLS1mcy1iYXNlKTsKfQpmaWVsZHNldC5rb2xsZWdlbi1taWtybyAgPiAuZXItcGVyc29u ZW4temVpbGUsCmZpZWxkc2V0LmtvbGxlZ2VuLWRpcmVrdCA+IC5lci1wZXJzb25lbi16ZWlsZSwK ZmllbGRzZXQua29sbGVnZW4tcmVzdCAgID4gLmVyLXBlcnNvbmVuLXplaWxlIHsKICAgIG1hcmdp bi1yaWdodDogMTJweDsKfQpmaWVsZHNldC5rb2xsZWdlbi1kaXJla3QgPiAuZXItcGVyc29uZW4t emVpbGUgKyAuZXItcGVyc29uZW4temVpbGUgewogICAgLyogRGlyZWt0ZSBLb2xsZWdlbiB3ZXJk ZW4gaW5saW5lIChGbGV4LUxpa2UpIGdlcmVuZGVydCwgbmljaHQgaW4gU3BhbHRlbiDigJQgbWVp c3QgbnVyIGVpbiBwYWFyICovCn0KCi8qIEluYWt0aXZlIENvZGVzIGFscyBvcHRpc2NoIGFiZ2Vz ZXR6dGUgU2VrdGlvbiBhbSBFbmRlICovCi5zYy1ncnVwcGUtaW5ha3RpdiB7CiAgICBtYXJnaW4t dG9wOiAyNHB4OwogICAgcGFkZGluZy10b3A6IDEycHg7CiAgICBib3JkZXItdG9wOiAxcHggZGFz aGVkIHZhcigtLWJvcmRlci1zdHJvbmcpOwogICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLWJv cmRlci1saWdodCk7CiAgICBvcGFjaXR5OiAwLjg1Owp9Ci5zYy1ncnVwcGUtdGl0ZWwtaW5ha3Rp diB7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOwp9CgovKiBTb25kZXJ0ZXJtaW5l LUxpc3RlIChyZWFkLW9ubHkpICovCi5zb25kZXItaWNvbi16ZWxsZSB7CiAgICBkaXNwbGF5OiBp bmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7 CiAgICB3aWR0aDogMzJweDsgaGVpZ2h0OiAzMnB4OyBmb250LXNpemU6IDE4cHg7IGJvcmRlci1y YWRpdXM6IDVweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgYm9yZGVyOiAx cHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGZvbnQtZmFtaWx5OiAiQXBwbGUgQ29s b3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsIk5vdG8gQ29sb3IgRW1vamkiLHNhbnMtc2VyaWY7 Cn0KLnNvbmRlci1pY29uLXplbGxlLmxlZXIgeyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IGZv bnQtc2l6ZTogdmFyKC0tZnMtbWQpOyBmb250LWZhbWlseTogaW5oZXJpdDsgfQouc29uZGVyLXR5 cC1iYWRnZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBhZGRpbmc6IDJweCA4cHg7IGJv cmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBm b250LXdlaWdodDogNjAwOwp9Ci5zb25kZXItdHlwLWluZm8geyBiYWNrZ3JvdW5kOiByZ2JhKDQx LDEyOCwxODUsMC4xNSk7IGNvbG9yOiB2YXIoLS1mYXJiZS1ha3plbnQpOyB9Ci5zb25kZXItdHlw LXdhcm4geyBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwxMTEsMzAsMC4xOCk7IGNvbG9yOiB2YXIoLS1m YXJiZS13YXJudW5nKTsgfQoKLyogQmFja3VwLVR5cC1CYWRnZXMgKi8KLmJrLXR5cCB7IGRpc3Bs YXk6IGlubGluZS1ibG9jazsgcGFkZGluZzogMnB4IDhweDsgYm9yZGVyLXJhZGl1czogdmFyKC0t cmFkaXVzLWxnKTsgZm9udC1zaXplOiAxMC41cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IHdoaXRlLXNw YWNlOiBub3dyYXA7IH0KLmJrLXR5cC1tYW51ZWxsIHsgYmFja2dyb3VuZDogcmdiYSgyNyw5NCwz MiwwLjE1KTsgY29sb3I6ICMxQjVFMjA7IH0KLmJrLXR5cC1hdXRvIHsgYmFja2dyb3VuZDogcmdi YSgyMDIsMTExLDMwLDAuMTgpOyBjb2xvcjogdmFyKC0tZmFyYmUtd2FybnVuZyk7IH0KLmJrLXR5 cC1zaWNoZXJ1bmcgeyBiYWNrZ3JvdW5kOiByZ2JhKDQxLDEyOCwxODUsMC4xNSk7IGNvbG9yOiB2 YXIoLS1mYXJiZS1ha3plbnQpOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5iay10eXAtbWFudWVs bCB7IGJhY2tncm91bmQ6IHJnYmEoMjcsOTQsMzIsMC4zKTsgY29sb3I6ICNhNWQ2YTc7IH0KW2Rh dGEtdGhlbWU9Im5pZ2h0Il0gLmJrLXR5cC1hdXRvIHsgYmFja2dyb3VuZDogcmdiYSgyMDIsMTEx LDMwLDAuMyk7IGNvbG9yOiAjZmZjYzgwOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5iay10eXAt c2ljaGVydW5nIHsgYmFja2dyb3VuZDogcmdiYSg0MSwxMjgsMTg1LDAuMyk7IGNvbG9yOiAjOTBj YWY5OyB9Ci8qIEJhY2t1cC1JbmhhbHRzdHlwLUJhZGdlIGltIEFkbWluIC0+IEJhY2t1cHMgKEtv bXBsZXR0IHZzLiBOdXIgUGxhbnVuZykuCiAgIEZydWVoZXIgYWxzIC5iay1pbmhhbHQgZGVmaW5p ZXJ0IC0tIGtvbGxpZGllcnRlIG1pdCBkZW0gZ2xlaWNobmFtaWdlbgogICBDb250YWluZXIgZGVy IFBydWVmdW5ncy1BbnNpY2h0ICgjYmstaW5oYWx0KS4gKi8KLmJrLWluaGFsdHN0eXAgeyBkaXNw bGF5OiBpbmxpbmUtYmxvY2s7IHBhZGRpbmc6IDJweCA4cHg7IGJvcmRlci1yYWRpdXM6IHZhcigt LXJhZGl1cy1sZyk7IGZvbnQtc2l6ZTogMTAuNXB4OyBmb250LXdlaWdodDogNjAwOyB3aGl0ZS1z cGFjZTogbm93cmFwOyB9Ci5iay1pbmhhbHRzdHlwLWtvbXBsZXR0IHsgYmFja2dyb3VuZDogcmdi YSg3NCwxNDQsMjI2LDAuMTUpOyBjb2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50KTsgfQouYmstaW5o YWx0c3R5cC1wbGFudW5nIHsgYmFja2dyb3VuZDogcmdiYSgxNDksMTY1LDE2NiwwLjE4KTsgY29s b3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5iay1pbmhhbHRz dHlwLWtvbXBsZXR0IHsgYmFja2dyb3VuZDogcmdiYSg3NCwxNDQsMjI2LDAuMyk7IGNvbG9yOiAj OTBjYWY5OyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5iay1pbmhhbHRzdHlwLXBsYW51bmcgeyBi YWNrZ3JvdW5kOiByZ2JhKDE0OSwxNjUsMTY2LDAuMyk7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVk KTsgfQoKLyogPT09PT0gQmVzZXR6dW5nc2tvbnRyb2xsZSAoR2VzYW10dmVyYW50d29ydGxpY2hl KSA9PT09PSAqLwovKiBmbGV4OjEgKyBvdmVyZmxvdy15OmF1dG8sIGRhbWl0IGRlciBJbmhhbHQg aW0gLmFuc2ljaHQtQ29udGFpbmVyCiAgIChoZWlnaHQ6MTAwdmgtNDBweDsgb3ZlcmZsb3c6aGlk ZGVuKSBzY3JvbGx0LCB3ZW5uIGVyIGhvZWhlciBpc3QKICAgYWxzIGRhcyBWaWV3cG9ydC4gbWlu LWhlaWdodDowIHdlZ2VuIGZsZXgtbWluLWNvbnRlbnQtRGVmYXVsdC4gKi8KLmJrLWxheW91dCB7 CiAgICBwYWRkaW5nOiAxNnB4IDIwcHggNDBweCAyMHB4OwogICAgd2lkdGg6IDEwMCU7CiAgICBm bGV4OiAxOwogICAgbWluLWhlaWdodDogMDsKICAgIG92ZXJmbG93LXk6IGF1dG87Cn0KLmJrLWtv cGYgeyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWdu LWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDIwcHg7IG1hcmdpbi1ib3R0b206IDE0cHg7IHBhZGRp bmctYm90dG9tOiAxMHB4OyBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxp Z2h0KTsgZmxleC13cmFwOiB3cmFwOyB9Ci5iay1rb3BmLXN0YXRzIHsgZGlzcGxheTogZmxleDsg Z2FwOiAxMHB4OyB9Ci5iay1rcGkgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsgYm9yZGVy OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFk aXVzLW1kKTsgcGFkZGluZzogNnB4IDEycHg7IG1pbi13aWR0aDogNzZweDsgdGV4dC1hbGlnbjog Y2VudGVyOyB9Ci5iay1rcGktemFobCB7IGZvbnQtc2l6ZTogMThweDsgZm9udC13ZWlnaHQ6IDcw MDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGxpbmUtaGVpZ2h0OiAxLjE7IH0KLmJrLWtw aS1sYWJlbCB7IGZvbnQtc2l6ZTogMTAuNXB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IG1h cmdpbi10b3A6IDFweDsgfQouYmsta3BpLXdhcm4geyBib3JkZXItY29sb3I6IHJnYmEoMjAyLDEx MSwzMCwwLjUpOyBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwxMTEsMzAsMC4wNik7IH0KLmJrLWtwaS13 YXJuIC5iay1rcGktemFobCB7IGNvbG9yOiB2YXIoLS1mYXJiZS13YXJudW5nKTsgfQouYmsta3Bp LW9rIHsgYm9yZGVyLWNvbG9yOiByZ2JhKDM5LDEzNywxMDksMC40KTsgYmFja2dyb3VuZDogcmdi YSgzOSwxMzcsMTA5LDAuMDYpOyB9Ci5iay1rcGktb2sgLmJrLWtwaS16YWhsIHsgY29sb3I6IHZh cigtLWZhcmJlLWVyZm9sZyk7IH0KCi8qIFBlcnNvZW5saWNoZSBCZWdydWVzc3VuZ3MtQm94IGlt IFBydWVmdW5ncy1UYWIg4oCUIGVudHNwYW5udCBtaXQKICAgZWlua2xhcHBiYXJlciBEZXRhaWwt RXJrbGFlcnVuZy4gQW5yZWRlICsgQnJpZWZpbmctQnV0dG9uIGltbWVyCiAgIHNpY2h0YmFyIGFs cyBRdWljay1FaW5zdGllZywgUXVpY2tpbnRybyBkYXJ1bnRlci4gKi8KLmJrLWJlZ3J1ZXNzdW5n IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwogICAgYm9yZGVyOiAxcHggc29saWQg dmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIHBhZGRpbmc6 IDE0cHggMThweDsKICAgIG1hcmdpbi1ib3R0b206IDE0cHg7CiAgICBsaW5lLWhlaWdodDogMS41 Owp9Ci5iay1iZWdyLWtvcGYgewogICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRl cjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgZ2FwOiAxNnB4OyBmbGV4LXdy YXA6IHdyYXA7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7Cn0KLmJrLWJlZ3ItYW5yZWRlIHsKICAg IGZvbnQtc2l6ZTogMTdweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBjb2xvcjogdmFyKC0t dGV4dC1oZWFkaW5nKTsKfQouYmstYmVnci1xdWlja2ludHJvIHsKICAgIG1hcmdpbjogMCAwIDZw eCAwICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IHZhcigtLWZzLW1kKTsKICAgIGNvbG9yOiB2 YXIoLS10ZXh0LXNlY29uZGFyeSk7Cn0KLmJrLWJlZ3ItZGV0YWlscyB7IG1hcmdpbi10b3A6IDZw eDsgfQouYmstYmVnci1kZXRhaWxzID4gc3VtbWFyeSB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAg ICBmb250LXNpemU6IDEyLjVweDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7CiAg ICBwYWRkaW5nOiA0cHggMDsKICAgIGxpc3Qtc3R5bGU6IHJldmVydDsKICAgIHVzZXItc2VsZWN0 OiBub25lOwp9Ci5iay1iZWdyLWRldGFpbHMgPiBzdW1tYXJ5OmhvdmVyIHsgY29sb3I6IHZhcigt LXRleHQtaGVhZGluZyk7IH0KLmJrLWJlZ3ItZGV0YWlsc1tvcGVuXSA+IHN1bW1hcnkgeyBtYXJn aW4tYm90dG9tOiA4cHg7IH0KLmJrLWJlZ3J1ZXNzdW5nIHAgeyBtYXJnaW46IDAgMCA4cHggMDsg Zm9udC1zaXplOiAxMi41cHg7IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOyB9Ci5iay1iZWdy LWxlZ2VuZGUgewogICAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvdzsgZmxleC13 cmFwOiB3cmFwOyBnYXA6IDE0cHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7 CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOwogICAgcGFkZGluZzogOHB4IDEy cHg7CiAgICBtYXJnaW46IDhweCAwIDEwcHggMDsKfQouYmstYmVnci1laW50cmFnIHsgZGlzcGxh eTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA4cHg7IGZvbnQtc2l6ZTogdmFyKC0t ZnMtYmFzZSk7IGxpbmUtaGVpZ2h0OiAxLjM1OyBmbGV4OiAxIDEgMjgwcHg7IH0KLmJrLWJlZ3It cGlsbCB7CiAgICBmbGV4LXNocmluazogMDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAg IHBhZGRpbmc6IDJweCAxMHB4OwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsK ICAgIGZvbnQtc2l6ZTogMTAuNXB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGNvbG9yOiAj ZmZmOwogICAgbWluLXdpZHRoOiA1MHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci5iay1i ZWdyLXBpbGwtcm90ICAgeyBiYWNrZ3JvdW5kOiAjQjAzQTJFOyB9Ci5iay1iZWdyLXBpbGwtZ2Vs YiAgeyBiYWNrZ3JvdW5kOiAjQ0E2RjFFOyB9Ci5iay1iZWdyLXBpbGwtZ3J1ZW4geyBiYWNrZ3Jv dW5kOiAjMjc4OTZEOyB9Ci5iay1iZWdyLW1haWwgewogICAgYmFja2dyb3VuZDogcmdiYSg3NCwx NDQsMjI2LDAuMDgpOwogICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS1mYXJiZS1ha3pl bnQpOwogICAgcGFkZGluZzogOHB4IDEycHg7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRp dXMtc20pOwogICAgbWFyZ2luLXRvcDogNHB4ICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDEy LjVweCAhaW1wb3J0YW50Owp9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5iay1iZWdyLW1haWwgeyBi YWNrZ3JvdW5kOiByZ2JhKDc0LDE0NCwyMjYsMC4xNSk7IH0KLmJrLWJlZ3ItYnJpZWZpbmcgewog ICAgbWFyZ2luLXRvcDogOHB4ICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxp Z24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTBweDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAg IGZvbnQtc2l6ZTogMTIuNXB4OwogICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsKfQou YmstYmVnci1icmllZmluZyBzbWFsbCB7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgfQoKLyog PT09PT0gRGVmaXppdC1CcmllZmluZy1JbnRlcnZpZXctTW9kYWwgPT09PT0gKi8KLmRlZml6aXQt YnJpZWZpbmctbW9kYWwgeyBmb250LXNpemU6IHZhcigtLWZzLW1kKTsgfQouZGVmaXppdC1icmll ZmluZy1tb2RhbCAuZGJtLWZyYWdlIHsKICAgIG1hcmdpbjogMTRweCAwIDZweCAwOyBmb250LXNp emU6IDEzLjVweDsgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRp bmcpOwp9Ci5kZWZpeml0LWJyaWVmaW5nLW1vZGFsIC5kYm0tZnJhZ2U6Zmlyc3QtY2hpbGQgeyBt YXJnaW4tdG9wOiAwOyB9Ci5kZWZpeml0LWJyaWVmaW5nLW1vZGFsIC5kYm0tb3B0aW9uZW4gewog ICAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA0cHg7CiAgICBw YWRkaW5nLWxlZnQ6IDRweDsKfQouZGVmaXppdC1icmllZmluZy1tb2RhbCAuZGJtLW9wdGlvbmVu IGxhYmVsIHsKICAgIGN1cnNvcjogcG9pbnRlcjsgcGFkZGluZzogNHB4IDZweDsgYm9yZGVyLXJh ZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xMnM7 Cn0KLmRlZml6aXQtYnJpZWZpbmctbW9kYWwgLmRibS1vcHRpb25lbiBsYWJlbDpob3ZlciB7IGJh Y2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsgfQouZGVmaXppdC1icmllZmluZy1tb2RhbCAuZGJt LW9wdGlvbmVuIGlucHV0W3R5cGU9InJhZGlvIl0geyBtYXJnaW4tcmlnaHQ6IDZweDsgfQouZGVm aXppdC1icmllZmluZy1tb2RhbCAuZGJtLWhpbnQgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1i YXNlKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBtYXJnaW46IDRweCAwIDhweCAwOwp9Ci5k ZWZpeml0LWJyaWVmaW5nLW1vZGFsIC5kYm0tZW1wZmFlbmdlci1saXN0ZSB7CiAgICBtYXgtaGVp Z2h0OiAyMjBweDsgb3ZlcmZsb3cteTogYXV0bzsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigt LWJvcmRlci1saWdodCk7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICBwYWRk aW5nOiA2cHggOHB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7Cn0KLmRlZml6aXQt YnJpZWZpbmctbW9kYWwgLmRibS1pbmZvIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7 IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgIG1hcmdpbi1ib3R0b206IDZweDsgZm9udC1z dHlsZTogaXRhbGljOwp9Ci5kZWZpeml0LWJyaWVmaW5nLW1vZGFsIC5kYm0tbGVlciB7CiAgICBt YXJnaW46IDRweCAwOyBmb250LXNpemU6IDEyLjVweDsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQp OwogICAgdGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiA4cHg7Cn0KLmRlZml6aXQtYnJpZWZp bmctbW9kYWwgLmRibS1wZXJzb25lbiB7CiAgICBsaXN0LXN0eWxlOiBub25lOyBwYWRkaW5nOiAw OyBtYXJnaW46IDA7Cn0KLmRlZml6aXQtYnJpZWZpbmctbW9kYWwgLmRibS1wZXJzb25lbiBsaSB7 CiAgICBwYWRkaW5nOiAzcHggMDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRl ci1saWdodCk7Cn0KLmRlZml6aXQtYnJpZWZpbmctbW9kYWwgLmRibS1wZXJzb25lbiBsaTpsYXN0 LWNoaWxkIHsgYm9yZGVyLWJvdHRvbTogbm9uZTsgfQouZGVmaXppdC1icmllZmluZy1tb2RhbCAu ZGJtLXBlcnNvbmVuIGxhYmVsIHsKICAgIGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogYmxvY2s7 IHBhZGRpbmc6IDJweCAwOwogICAgZm9udC1zaXplOiAxMi41cHg7Cn0KLmRlZml6aXQtYnJpZWZp bmctbW9kYWwgLmRibS1wZXJzb25lbiBsYWJlbC5kYm0tZGlzYWJsZWQgewogICAgY3Vyc29yOiBu b3QtYWxsb3dlZDsgb3BhY2l0eTogMC42Owp9Ci5kZWZpeml0LWJyaWVmaW5nLW1vZGFsIC5kYm0t cGVyc29uZW4gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7IG1hcmdpbi1yaWdodDogNnB4OyB9Ci5k ZWZpeml0LWJyaWVmaW5nLW1vZGFsIC5kYm0tdGFnZSB7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1t dXRlZCk7IGZvbnQtc2l6ZTogMTEuNXB4Owp9Ci5kZWZpeml0LWJyaWVmaW5nLW1vZGFsIC5kYm0t bm8tbWFpbCB7CiAgICBjb2xvcjogdmFyKC0tZmFyYmUtd2FybnVuZyk7IGZvbnQtc2l6ZTogMTEu NXB4OyBmb250LXdlaWdodDogNTAwOwp9Ci5kZWZpeml0LWJyaWVmaW5nLW1vZGFsIC5kYm0tY2Mt aGludCB7CiAgICBtYXJnaW4tdG9wOiAxMHB4OyBwYWRkaW5nOiA2cHggOHB4OwogICAgYmFja2dy b3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20p OwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsKfQoKLyogPT09PT0gS2FsZW5kZXItTGF5 b3V0IGRlciBQcnVlZnVuZ3NhbnNpY2h0ID09PT09ICovCi5iay1rYWwgewogICAgZGlzcGxheTog ZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNh cmQpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRl ci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5iay1r YWwtd3Qta29wZiwgLmJrLWthbC13b2NoZSB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10 ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNywgMWZyKTsKfQouYmsta2FsLXd0LWtvcGYgeyBiYWNr Z3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIo LS1ib3JkZXItc3Ryb25nKTsgfQouYmsta2FsLXd0IHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsK ICAgIGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOwogICAgcGFkZGlu ZzogNnB4IDA7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOwogICAgYm9yZGVyLXJp Z2h0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKfQouYmsta2FsLXd0Omxhc3QtY2hp bGQgeyBib3JkZXItcmlnaHQ6IG5vbmU7IH0KLmJrLWthbC13dC13ZSB7IGNvbG9yOiB2YXIoLS10 ZXh0LW11dGVkKTsgfQouYmsta2FsLXdvY2hlIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZh cigtLWJvcmRlci1saWdodCk7IH0KLmJrLWthbC13b2NoZTpsYXN0LWNoaWxkIHsgYm9yZGVyLWJv dHRvbTogbm9uZTsgfQoKLmJrLWthbC10YWcgewogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQg dmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIHBhZGRpbmc6IDZweCA4cHg7CiAgICBtaW4taGVpZ2h0 OiA2NHB4OwogICAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGdh cDogNHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdHJhbnNpdGlvbjogZmlsdGVyIDAu MTJzLCB0cmFuc2Zvcm0gMC4wOHM7Cn0KLmJrLWthbC10YWc6bGFzdC1jaGlsZCB7IGJvcmRlci1y aWdodDogbm9uZTsgfQouYmsta2FsLWF1c3NlbiB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1j YXJkLWFsdCk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICBvcGFjaXR5OiAwLjU1 Owp9Ci5iay1rYWwtd2UgeyBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMDIpOyB9CltkYXRhLXRo ZW1lPSJuaWdodCJdIC5iay1rYWwtd2UgeyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAu MDIpOyB9Ci5iay1rYWwtaGV1dGUgewogICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMnB4IHZh cigtLXRleHQtaGVhZGluZyk7CiAgICB6LWluZGV4OiAxOwp9CgouYmsta2FsLXRhZ25yIHsKICAg IGZvbnQtc2l6ZTogdmFyKC0tZnMtbGcpOyBmb250LXdlaWdodDogNzAwOwogICAgY29sb3I6IHZh cigtLXRleHQtaGVhZGluZyk7CiAgICBsaW5lLWhlaWdodDogMTsKfQouYmsta2FsLW1vIHsKICAg IGZvbnQtc2l6ZTogOS41cHg7IGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBjb2xvcjogdmFyKC0tdGV4 dC1tdXRlZCk7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgbGV0dGVyLXNwYWNp bmc6IDAuNHB4OwogICAgbWFyZ2luLWxlZnQ6IDZweDsKfQoKLyogU3RhdHVzLUhpbnRlcmdydWVu ZGU6IFJvdC9HZWxiL0dydWVuIG1pdCBkZXplbnRlciBTYWV0dGlndW5nLiAqLwouYmsta2FsLXJv dCAgIHsgYmFja2dyb3VuZDogcmdiYSgxNzYsIDU4LCA0NiwgMC4xOCk7IGN1cnNvcjogcG9pbnRl cjsgfQouYmsta2FsLXJvdDpob3ZlciAgIHsgYmFja2dyb3VuZDogcmdiYSgxNzYsIDU4LCA0Niwg MC4yOCk7IH0KLmJrLWthbC1nZWxiICB7IGJhY2tncm91bmQ6IHJnYmEoMjAyLCAxMTEsIDMwLCAw LjE2KTsgY3Vyc29yOiBwb2ludGVyOyB9Ci5iay1rYWwtZ2VsYjpob3ZlciAgeyBiYWNrZ3JvdW5k OiByZ2JhKDIwMiwgMTExLCAzMCwgMC4yNik7IH0KLmJrLWthbC1ncnVlbiB7IGJhY2tncm91bmQ6 IHJnYmEoMzksIDEzNywgMTA5LCAwLjEzKTsgY3Vyc29yOiBwb2ludGVyOyB9Ci5iay1rYWwtZ3J1 ZW46aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDM5LCAxMzcsIDEwOSwgMC4yMik7IH0KCi8qIE1p bmktSW5kaWthdG9yZW4gamUgU2NoaWNodCAoRi9TL04pIGFtIHVudGVyZW4gUmFuZCBkZXIgWmVs bGUgKi8KLmJrLWthbC1taW5pIHsgZGlzcGxheTogZmxleDsgZ2FwOiAzcHg7IG1hcmdpbi10b3A6 IGF1dG87IH0KLmJrLWthbC1taW5pLXplbGxlIHsKICAgIGZsZXg6IDE7CiAgICB0ZXh0LWFsaWdu OiBjZW50ZXI7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgZm9udC13ZWlnaHQ6IDcwMDsK ICAgIHBhZGRpbmc6IDFweCAwOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhzKTsK ICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50Owp9Ci5iay1rYWwtbWluaS1yb3QgICB7 IGJhY2tncm91bmQ6ICNCMDNBMkU7IGNvbG9yOiAjZmZmOyBib3JkZXItY29sb3I6IHJnYmEoMCww LDAsMC4xNSk7IH0KLmJrLWthbC1taW5pLWdlbGIgIHsgYmFja2dyb3VuZDogI0NBNkYxRTsgY29s b3I6ICNmZmY7IGJvcmRlci1jb2xvcjogcmdiYSgwLDAsMCwwLjE1KTsgfQouYmsta2FsLW1pbmkt Z3J1ZW4geyBiYWNrZ3JvdW5kOiAjMjc4OTZEOyBjb2xvcjogI2ZmZjsgYm9yZGVyLWNvbG9yOiBy Z2JhKDAsMCwwLDAuMTUpOyB9CgovKiBUYWctRGV0YWlsLU1vZGFsICovCi5iay1kZXRhaWwta29w ZiB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRl bnQ6IHNwYWNlLWJldHdlZW47CiAgICBnYXA6IDEycHg7IHBhZGRpbmc6IDEwcHggMTRweDsKICAg IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7CiAgICBtYXJnaW4tYm90dG9tOiAxNHB4 OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwp9Ci5iay1kZXRhaWwta29wZi1y b3QgICB7IGJhY2tncm91bmQ6IHJnYmEoMTc2LCA1OCwgNDYsIDAuMTQpOyB9Ci5iay1kZXRhaWwt a29wZi1nZWxiICB7IGJhY2tncm91bmQ6IHJnYmEoMjAyLCAxMTEsIDMwLCAwLjE0KTsgfQouYmst ZGV0YWlsLWtvcGYtZ3J1ZW4geyBiYWNrZ3JvdW5kOiByZ2JhKDM5LCAxMzcsIDEwOSwgMC4xMik7 IH0KLmJrLWRldGFpbC10aXRlbCB7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDcwMDsg Y29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0KCi5iay1kZXRhaWwtc2NoaWNodGVuIHsKICAg IGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZp dCwgbWlubWF4KDI2MHB4LCAxZnIpKTsKICAgIGdhcDogMTBweDsKICAgIG1hcmdpbi1ib3R0b206 IDE0cHg7Cn0KLmJrLWRldGFpbC1zY2hpY2h0IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNh cmQpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRl ci1sZWZ0OiA0cHggc29saWQgdmFyKC0tdGV4dC1tdXRlZCk7CiAgICBib3JkZXItcmFkaXVzOiB2 YXIoLS1yYWRpdXMtbWQpOwogICAgcGFkZGluZzogOHB4IDEycHg7Cn0KLmJrLWRldGFpbC1zY2hp Y2h0LXJvdCAgIHsgYm9yZGVyLWxlZnQtY29sb3I6ICNCMDNBMkU7IH0KLmJrLWRldGFpbC1zY2hp Y2h0LWdlbGIgIHsgYm9yZGVyLWxlZnQtY29sb3I6ICNDQTZGMUU7IH0KLmJrLWRldGFpbC1zY2hp Y2h0LWdydWVuIHsgYm9yZGVyLWxlZnQtY29sb3I6ICMyNzg5NkQ7IH0KLmJrLWRldGFpbC1zY2hp Y2h0LWtvcGYgewogICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAx MHB4OyBmbGV4LXdyYXA6IHdyYXA7CiAgICBtYXJnaW4tYm90dG9tOiA2cHg7CiAgICBmb250LXNp emU6IHZhcigtLWZzLW1kKTsKfQouYmstZGV0YWlsLXNjaGljaHQtemFobCB7CiAgICBjb2xvcjog dmFyKC0tdGV4dC1zZWNvbmRhcnkpOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsKfQou YmstZGV0YWlsLWZrLWxpc3RlIHsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7IHBhZGRpbmc6IDA7IG1h cmdpbjogMDsKICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDog M3B4Owp9Ci5iay1kZXRhaWwtZmstbGlzdGUgbGkgewogICAgZGlzcGxheTogZmxleDsgZmxleC1k aXJlY3Rpb246IGNvbHVtbjsKICAgIHBhZGRpbmc6IDNweCA2cHg7CiAgICBiYWNrZ3JvdW5kOiB2 YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwp9 Ci5iay1kZXRhaWwtZmstbmFtZSB7IGZvbnQtc2l6ZTogMTIuNXB4OyBmb250LXdlaWdodDogNjAw OyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQouYmstZGV0YWlsLWZrLW1ldGEgeyBmb250 LXNpemU6IDEwLjVweDsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9Ci5iay1kZXRhaWwtbGVl ciB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsg Zm9udC1zdHlsZTogaXRhbGljOyBwYWRkaW5nOiA0cHggNnB4OyB9CgouYmstZGV0YWlsLWF1c2hp bGZlIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMTc2LCA1OCwgNDYsIDAuMDYpOwogICAgYm9yZGVy OiAxcHggZGFzaGVkIHJnYmEoMTc2LCA1OCwgNDYsIDAuNCk7CiAgICBib3JkZXItcmFkaXVzOiB2 YXIoLS1yYWRpdXMtbWQpOwogICAgcGFkZGluZzogMTBweCAxNHB4Owp9Ci5iay1kZXRhaWwtYXVz aGlsZmUta29wZiB7IGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOyBj b2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgbWFyZ2luLWJvdHRvbTogOHB4OyB9Ci5iay1kZXRh aWwtYXVzaGlsZmUtYmVyZWljaCB7IG1hcmdpbi10b3A6IDEwcHg7IH0KLmJrLWRldGFpbC1hdXNo aWxmZS1iZXJlaWNoOmZpcnN0LWNoaWxkIHsgbWFyZ2luLXRvcDogMDsgfQouYmstZGV0YWlsLWF1 c2hpbGZlLWJlcmVpY2ggaDQgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsgY29sb3I6 IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgbWFyZ2luOiAwIDAgNHB4IDA7CiAgICB0ZXh0LXRyYW5z Zm9ybTogdXBwZXJjYXNlOyBsZXR0ZXItc3BhY2luZzogMC40cHg7IGZvbnQtd2VpZ2h0OiA3MDA7 Cn0KLmJrLWRldGFpbC1hdXNoaWxmZS1saXN0ZSB7CiAgICBsaXN0LXN0eWxlOiBub25lOyBwYWRk aW5nOiAwOyBtYXJnaW46IDA7CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29s dW1uOyBnYXA6IDJweDsKfQovKiBUb29sYmFyIG9iZXJoYWxiIGRlciBBdXNoaWxmZS1MaXN0ZTog IkFsbGUgbWFya2llcmVuIiArIE1haWwtQnV0dG9uLiAqLwouYmstZGV0YWlsLWF1c2hpbGZlLXRv b2xiYXIgewogICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxNHB4 OwogICAgbWFyZ2luLWJvdHRvbTogOHB4OyBwYWRkaW5nLWJvdHRvbTogOHB4OwogICAgYm9yZGVy LWJvdHRvbTogMXB4IGRhc2hlZCByZ2JhKDE3NiwgNTgsIDQ2LCAwLjI1KTsKfQouYmstZGV0YWls LWFsbGUgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsgY29sb3I6IHZhcigtLXRleHQt c2Vjb25kYXJ5KTsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVy OyBnYXA6IDZweDsKICAgIGN1cnNvcjogcG9pbnRlcjsgdXNlci1zZWxlY3Q6IG5vbmU7Cn0KLmJr LWRldGFpbC1hdXNoaWxmZS16ZWlsZSB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1w bGF0ZS1jb2x1bW5zOiAyMnB4IDE4MHB4IDYwcHggNjBweCAxZnIgMTMwcHg7CiAgICBnYXA6IDEw cHg7CiAgICBwYWRkaW5nOiA1cHggOHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7 CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1yYWRpdXM6IHZh cigtLXJhZGl1cy1zbSk7CiAgICBmb250LXNpemU6IHZhcigtLWZzLWJhc2UpOwogICAgYWxpZ24t aXRlbXM6IGNlbnRlcjsKICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjEycywgYmFja2dy b3VuZCAwLjEyczsKfQouYmstZGV0YWlsLWF1c2hpbGZlLXplaWxlOmhvdmVyIHsKICAgIGJvcmRl ci1jb2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50KTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWhv dmVyKTsKfQouYmstYXVzaGlsZmUtY2hrIHsgY3Vyc29yOiBwb2ludGVyOyB9Ci5iay1hdXNoaWxm ZS1jaGs6ZGlzYWJsZWQgeyBjdXJzb3I6IG5vdC1hbGxvd2VkOyBvcGFjaXR5OiAwLjQ7IH0KLmJr LWRldGFpbC1hdXNoaWxmZS1tYWlsYnRuIHsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmJr LWRldGFpbC1hdXNoaWxmZS1rZWlubWFpbCB7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXNtKTsg Y29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBmb250LXN0eWxlOiBpdGFsaWM7Cn0KLmJrLWRldGFp bC1hdXNoaWxmZS1rZWluLW1haWwgeyBvcGFjaXR5OiAwLjU1OyB9Ci5iay1kZXRhaWwtYXVzaGls ZmUtbmFtZSB7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9 Ci5iay1kZXRhaWwtYXVzaGlsZmUtY29kZSB7CiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOyBm b250LXNpemU6IHZhcigtLWZzLXNtKTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0 KTsgcGFkZGluZzogMXB4IDZweDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7 IHRleHQtYWxpZ246IGNlbnRlcjsKfQouYmstZGV0YWlsLWF1c2hpbGZlLWdycCB7IGNvbG9yOiB2 YXIoLS10ZXh0LW11dGVkKTsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IH0KLmJrLWRldGFpbC1h dXNoaWxmZS1rb21tIHsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgY29sb3I6IHZhcigtLXRleHQt bXV0ZWQpOyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsKICAgIG92ZXJmbG93OiBoaWRkZW47IHRl eHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5iay1kZXRhaWwt YXVzaGlsZmUtbWFpbCB7IGNvbG9yOiB2YXIoLS1mYXJiZS1ha3plbnQpOyBmb250LXNpemU6IHZh cigtLWZzLXNtKTsgfQpAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgIC5iay1kZXRhaWwt YXVzaGlsZmUtemVpbGUgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDYwcHg7 CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczoKICAgICAgICAgICAgIm5hbWUgY29kZSIKICAg ICAgICAgICAgImdycCBncnAiCiAgICAgICAgICAgICJrb21tIGtvbW0iCiAgICAgICAgICAgICJt YWlsIG1haWwiOwogICAgfQogICAgLmJrLWRldGFpbC1hdXNoaWxmZS1uYW1lIHsgZ3JpZC1hcmVh OiBuYW1lOyB9CiAgICAuYmstZGV0YWlsLWF1c2hpbGZlLWNvZGUgeyBncmlkLWFyZWE6IGNvZGU7 IH0KICAgIC5iay1kZXRhaWwtYXVzaGlsZmUtZ3JwICB7IGdyaWQtYXJlYTogZ3JwOyB9CiAgICAu YmstZGV0YWlsLWF1c2hpbGZlLWtvbW0geyBncmlkLWFyZWE6IGtvbW07IH0KICAgIC5iay1kZXRh aWwtYXVzaGlsZmUtbWFpbCB7IGdyaWQtYXJlYTogbWFpbDsgfQp9Ci5iay1hbGxlLW9rIHsgcGFk ZGluZzogMzJweDsgdGV4dC1hbGlnbjogY2VudGVyOyBiYWNrZ3JvdW5kOiByZ2JhKDM5LDEzNywx MDksMC4wOCk7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMzksMTM3LDEwOSwwLjM1KTsgYm9yZGVy LXJhZGl1czogOHB4OyBjb2xvcjogdmFyKC0tZmFyYmUtZXJmb2xnKTsgZm9udC1zaXplOiAxNXB4 OyBmb250LXdlaWdodDogNTAwOyB9CgovKiBEZWZpeml0LU1vZGFsICovCi5iay1tb2RhbC1wZXJz b24geyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDMwcHggMTgwcHggNzBw eCAxZnIgYXV0bzsgZ2FwOiAxMHB4OyBhbGlnbi1pdGVtczogY2VudGVyOyBwYWRkaW5nOiA4cHgg MTBweDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IGZvbnQt c2l6ZTogdmFyKC0tZnMtbWQpOyB9Ci5iay1tb2RhbC1wZXJzb246bGFzdC1jaGlsZCB7IGJvcmRl ci1ib3R0b206IG5vbmU7IH0KLmJrLW1vZGFsLW5hbWUgeyBmb250LXdlaWdodDogNTAwOyBjb2xv cjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQouYmstbW9kYWwtd2VydCB7IGZvbnQtZmFtaWx5OiBt b25vc3BhY2U7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1w cmltYXJ5KTsgcGFkZGluZzogMnB4IDZweDsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNt KTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3Jk ZXItbGlnaHQpOyB9Ci5iay1tb2RhbC1rb21tIHsgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsg Y29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBmb250LXN0eWxlOiBpdGFsaWM7IG92ZXJmbG93OiBo aWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9Ci5i ay1tb2RhbC1rb21tOmVtcHR5OjpiZWZvcmUgeyBjb250ZW50OiAn4oCUIGtlaW4gS29tbWVudGFy IOKAlCc7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgb3BhY2l0eTogMC41OyB9Ci5iay1tb2Rh bC1lbWFpbCB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20p OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH0KLmJrLW1vZGFsLWVtYWlsLWZlaGx0IHsgY29s b3I6IHZhcigtLWZhcmJlLWZlaGxlcik7IGZvbnQtc3R5bGU6IGl0YWxpYzsgfQouYmstbW9kYWwt a29wZiB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMzBweCAxODBweCA3 MHB4IDFmciBhdXRvOyBnYXA6IDEwcHg7IHBhZGRpbmc6IDZweCAxMHB4OyBmb250LXNpemU6IHZh cigtLWZzLXNtKTsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB0 ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBsZXR0ZXItc3BhY2luZzogMC41cHg7IGJvcmRlci1i b3R0b206IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyB9CgovKiA9PT09PSBTY2hpY2h0 Y29kZS1MZWdlbmRlIGltIEluZm8tTW9kYWwgPT09PT0gKi8KLnNjLWxlZ2VuZGUtY29udGFpbmVy IHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxNHB4OyB9Ci5z Yy1sZWdlbmRlLWdydXBwZSB7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGln aHQpOyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOwogICAgcGFkZGluZzogMTBweCAx MnB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsKfQouc2MtbGVnZW5kZS10aXRlbCB7CiAg ICBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgZm9udC13ZWlnaHQ6IDcwMDsgdGV4dC10cmFuc2Zv cm06IHVwcGVyY2FzZTsKICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDsgY29sb3I6IHZhcigtLXRl eHQtbXV0ZWQpOyBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29s aWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgcGFkZGluZy1ib3R0b206IDRweDsKfQouc2MtbGVnZW5k ZS1ncmlkIHsKICAgIGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0 KDMsIDFmcik7CiAgICBnYXA6IDZweCAxMnB4Owp9Ci5zYy1sZWdlbmRlLXplbGxlIHsKICAgIGRp c3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4OwogICAgcGFkZGluZzog NHB4IDZweDsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhzKTsKfQouc2MtbGVnZW5kZS1m YXJiZmVsZCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsg anVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB3aWR0aDogMzZweDsgaGVpZ2h0OiAyMHB4OyBi b3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteHMpOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy14 cyk7IGZvbnQtd2VpZ2h0OiA3MDA7IGZsZXgtc2hyaW5rOiAwOwogICAgYm9yZGVyOiAxcHggc29s aWQgcmdiYSgwLDAsMCwwLjEpOwp9Ci5zYy1sZWdlbmRlLXRleHQgeyBmb250LXNpemU6IHZhcigt LWZzLXNtKTsgbGluZS1oZWlnaHQ6IDEuMjU7IH0KQG1lZGlhIChtYXgtd2lkdGg6IDcwMHB4KSB7 CiAgICAuc2MtbGVnZW5kZS1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwg MWZyKTsgfQp9CgovKiA9PT09PSBFeGNlbC1JbXBvcnQgPT09PT0gKi8KLmltcC11cGxvYWQtYm94 IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOyBib3JkZXI6IDJweCBkYXNoZWQgdmFy KC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsgcGFkZGluZzogMjJweCAy MHB4OyB0ZXh0LWFsaWduOiBsZWZ0OwogICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNl bnRlcjsgZ2FwOiAxNHB4OyBmbGV4LXdyYXA6IHdyYXA7Cn0KLmltcC1zdGF0dXMta2FydGUgewog ICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJv cmRlci1saWdodCk7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7IHBhZGRpbmc6IDE2cHggMThweDsg bWFyZ2luLXRvcDogMTJweDsKfQouaW1wLWtwaS16ZWlsZSB7IGRpc3BsYXk6IGZsZXg7IGdhcDog MTJweDsgZmxleC13cmFwOiB3cmFwOyBtYXJnaW46IDEycHggMDsgfQouaW1wLWtwaSB7IGZsZXg6 IDE7IG1pbi13aWR0aDogMTQwcHg7IHBhZGRpbmc6IDEwcHggMTRweDsgYm9yZGVyLXJhZGl1czog dmFyKC0tcmFkaXVzLW1kKTsgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSk7IGJvcmRlcjog MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IH0KLmltcC1rcGktemFobCB7IGZvbnQtc2l6 ZTogMjBweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGxp bmUtaGVpZ2h0OiAxLjE7IH0KLmltcC1rcGktbGFiZWwgeyBmb250LXNpemU6IHZhcigtLWZzLXNt KTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBtYXJnaW4tdG9wOiAycHg7IH0KLmltcC1rcGkt d2FybiB7IGJvcmRlci1jb2xvcjogcmdiYSgyMDIsMTExLDMwLDAuNSk7IGJhY2tncm91bmQ6IHJn YmEoMjAyLDExMSwzMCwwLjA2KTsgfQouaW1wLWtwaS13YXJuIC5pbXAta3BpLXphaGwgeyBjb2xv cjogdmFyKC0tZmFyYmUtd2FybnVuZyk7IH0KLmltcC1rcGktb2sgeyBib3JkZXItY29sb3I6IHJn YmEoMzksMTM3LDEwOSwwLjQpOyBiYWNrZ3JvdW5kOiByZ2JhKDM5LDEzNywxMDksMC4wNik7IH0K LmltcC1rcGktb2sgLmltcC1rcGktemFobCB7IGNvbG9yOiB2YXIoLS1mYXJiZS1lcmZvbGcpOyB9 Ci5pbXAta3BpLWZlaGxlciB7IGJvcmRlci1jb2xvcjogcmdiYSgxNzYsNTgsNDYsMC41KTsgYmFj a2dyb3VuZDogcmdiYSgxNzYsNTgsNDYsMC4wOCk7IH0KLmltcC1rcGktZmVobGVyIC5pbXAta3Bp LXphaGwgeyBjb2xvcjogdmFyKC0tZmFyYmUtZmVobGVyKTsgfQoKLmltcC1tYXBwaW5nLWxpc3Rl IHsKICAgIG1heC1oZWlnaHQ6IDM2MHB4OyBvdmVyZmxvdy15OiBhdXRvOwogICAgYm9yZGVyOiAx cHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVz LW1kKTsgbWFyZ2luLXRvcDogMTBweDsKfQouaW1wLW1hcHBpbmctemVpbGUgewogICAgZGlzcGxh eTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyNHB4IDFmciAzMHB4IDFmcjsgZ2FwOiAx MHB4OyBhbGlnbi1pdGVtczogY2VudGVyOwogICAgcGFkZGluZzogOHB4IDEycHg7IGJvcmRlci1i b3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgZm9udC1zaXplOiB2YXIo LS1mcy1tZCk7Cn0KLyogU3RhdHVzLUljb24gbGlua3Mgdm9yIGRlciBRdWVsbGUuIEZhcmJlIHdp cmQgaW5saW5lIHBybyBaZWlsZSBnZXNldHp0CiAgIChDbG9zdXJlLUhlbHBlciBzdGF0dXNJY29u SHRtbCBpbiBpbXBvcnRfZXhjZWwuanMpLCBkaWUgS2xhc3NlIGhhZWx0CiAgIG51ciBkYXMgTGF5 b3V0LiAqLwouaW1wLW1hcHBpbmctc3RhdHVzIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0 aDogMjBweDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXdlaWdodDogNzAwOyB9Ci8qIEFnZ3Jl Z2F0LVplaWxlIHVlYmVyIGRlbiBUYWItQnV0dG9ucyBpbSBNYXBwaW5nLU1vZGFsOiBrb21wYWt0 ZSBMaXZlLQogICBaYWVobGVyIG5hY2ggS2F0ZWdvcmllLiBGYXJiZW4ga29tbWVuIGlubGluZSBh dXMgZGVtIEpTLiAqLwouaW1wLXN0YXR1cy1hZ2dyZWdhdCB7CiAgICBkaXNwbGF5OiBpbmxpbmUt ZmxleDsgZ2FwOiAxNHB4OyBmb250LXNpemU6IHZhcigtLWZzLW1kKTsKICAgIG1hcmdpbjogMCAw IDEycHggMDsgcGFkZGluZzogNnB4IDEwcHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJk KTsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgYm9yZGVyLXJhZGl1czog dmFyKC0tcmFkaXVzLXNtKTsKfQouaW1wLXN0YXR1cy1hZ2dyZWdhdDplbXB0eSB7IGRpc3BsYXk6 IG5vbmU7IH0KLmltcC1tYXBwaW5nLXplaWxlOmxhc3QtY2hpbGQgeyBib3JkZXItYm90dG9tOiBu b25lOyB9Ci5pbXAtbWFwcGluZy16ZWlsZS5pbXAtb2sgeyBiYWNrZ3JvdW5kOiByZ2JhKDM5LDEz NywxMDksMC4wNSk7IH0KLmltcC1tYXBwaW5nLXplaWxlLmltcC13YXJuIHsgYmFja2dyb3VuZDog cmdiYSgyMDIsMTExLDMwLDAuMDYpOyB9Ci8qIFBhcGllcmtvcmItVHJlZmZlcjogd2VpY2hlciBL b25mbGlrdCBtaXQgRGVmYXVsdC1XaWVkZXJoZXJzdGVsbGVuLVZvcnNjaGxhZy4KICAgVmlzdWVs bCB6d2lzY2hlbiAib2siIHVuZCAid2FybiIgLS0gZGVyIFVzZXIgc29sbCBkaWUgU3RlbGxlIHBy dWVmZW4sIGFiZXIKICAgbmljaHQgaW4gUGFuaWsgZ2VyYXRlbi4gKi8KLmltcC1tYXBwaW5nLXpl aWxlLmltcC1wYXBpZXJrb3JiIHsgYmFja2dyb3VuZDogcmdiYSgyMDIsMTExLDMwLDAuMTApOyB9 Ci5pbXAtcGFwaWVya29yYi1oaW53ZWlzIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBj b2xvcjogdmFyKC0tZmFyYmUtd2FybnVuZyk7IGxpbmUtaGVpZ2h0OiAxLjQ7CiAgICBiYWNrZ3Jv dW5kOiByZ2JhKDIwMiwxMTEsMzAsMC4wOCk7IHBhZGRpbmc6IDRweCA4cHg7IGJvcmRlci1yYWRp dXM6IHZhcigtLXJhZGl1cy1zbSk7Cn0KLyogIk5ldSBhbmxlZ2VuIiDigJQga2VpbiBLb25mbGlr dCwgc29uZGVybiBha3RpdmUgU3RhbmRhcmQtQWt0aW9uLiBTYW5mdGVzCiAgIEJsYXUsIGRhbWl0 IGRpZSBaZWlsZSBhbHMgcG9zaXRpdmVyIERlZmF1bHQgc2ljaHRiYXIgd2lyZC4gKi8KLmltcC1t YXBwaW5nLXplaWxlLmltcC1uZXUgeyBiYWNrZ3JvdW5kOiByZ2JhKDQ4LDk5LDE2OCwwLjA2KTsg fQouaW1wLW5ldS1oaW53ZWlzIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBjb2xvcjog dmFyKC0tZmFyYmUtcHJpbWFlcik7IGxpbmUtaGVpZ2h0OiAxLjQ7CiAgICBiYWNrZ3JvdW5kOiBy Z2JhKDQ4LDk5LDE2OCwwLjA4KTsgcGFkZGluZzogNHB4IDhweDsgYm9yZGVyLXJhZGl1czogdmFy KC0tcmFkaXVzLXNtKTsKfQouaW1wLWtwaS1uZXUgeyBib3JkZXItY29sb3I6IHJnYmEoNDgsOTks MTY4LDAuNDUpOyBiYWNrZ3JvdW5kOiByZ2JhKDQ4LDk5LDE2OCwwLjA2KTsgfQouaW1wLWtwaS1u ZXUgLmltcC1rcGktemFobCB7IGNvbG9yOiB2YXIoLS1mYXJiZS1wcmltYWVyKTsgfQouaW1wLW1h cHBpbmctcXVlbGxlIHsgZm9udC13ZWlnaHQ6IDYwMDsgfQouaW1wLW1hcHBpbmctYW56YWhsIHsg Zm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgbWFyZ2lu LWxlZnQ6IDZweDsgfQouaW1wLXBmZWlsIHsgdGV4dC1hbGlnbjogY2VudGVyOyBjb2xvcjogdmFy KC0tdGV4dC1tdXRlZCk7IH0KLyogSW5saW5lLUZvcm0gIk5ldWVuIFNjaGljaHRjb2RlIGFubGVn ZW4iIChQaGFzZSAxMC1DMykuIEtsYXBwdCB1bnRlcgogICBkZXIgamV3ZWlsaWdlbiBNYXBwaW5n LVplaWxlIGF1ZiDigJQga2VpbiBNb2RhbC1TdGFjay4gU2FuZnRlciBCbGF1LVRvbgogICBwYXNz dCB6dXIgIm5ldSItU2VtYW50aWsgZGVzIE1hcHBpbmctU3RhdHVzLiAqLwouaW1wLW5ldWVyLWNv ZGUtZm9ybSB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDQ4LDk5LDE2OCwwLjA2KTsgYm9yZGVyOiAx cHggc29saWQgcmdiYSg0OCw5OSwxNjgsMC4yNSk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1y YWRpdXMtc20pOyBwYWRkaW5nOiAxMHB4IDEycHg7IG1hcmdpbjogMCAxMnB4IDZweCAzNnB4Owog ICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsKfQouaW1wLW5ldWVyLWNvZGUtZm9ybSBsYWJl bCB7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW4tYm90dG9tOiAycHg7IGNvbG9yOiB2YXIoLS10ZXh0 LW11dGVkKTsgfQouaW1wLW5ldWVyLWNvZGUtZm9ybSAuZm9ybS1pbnB1dCB7IHBhZGRpbmc6IDRw eCA2cHg7IGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7IH0KCi8qIFByb2dyZXNzLU1vZGFsICov Ci5pbXAtcHJvZ3Jlc3Mta29udGV4dCB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOyBwYWRk aW5nOiAyMHB4IDI0cHg7IGJvcmRlci1yYWRpdXM6IDhweDsgbWluLXdpZHRoOiA0NjBweDsgfQou aW1wLXByb2dyZXNzLWJhciB7IGhlaWdodDogMjJweDsgYmFja2dyb3VuZDogdmFyKC0tYmctcHJp bWFyeSk7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IG92ZXJmbG93OiBoaWRkZW47 IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IG1hcmdpbjogMTRweCAwIDZw eCAwOyB9Ci5pbXAtcHJvZ3Jlc3MtZmlsbCB7CiAgICBoZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQ6 IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tZmFyYmUtcHJpbWFlciksIHZhcigtLWZhcmJl LWVyZm9sZykpOwogICAgd2lkdGg6IDAlOyB0cmFuc2l0aW9uOiB3aWR0aCAwLjI1cyBlYXNlLW91 dDsgYm9yZGVyLXJhZGl1czogaW5oZXJpdDsKfQouaW1wLXByb2dyZXNzLXRleHQgeyBmb250LXNp emU6IHZhcigtLWZzLWJhc2UpOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IGZvbnQtZmFtaWx5 OiBtb25vc3BhY2U7IG1pbi1oZWlnaHQ6IDE2cHg7IH0KLmltcC1wcm9ncmVzcy1waGFzZSB7IGZv bnQtc2l6ZTogdmFyKC0tZnMtbGcpOyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0tdGV4 dC1oZWFkaW5nKTsgfQoKLyogPT09PT0gU2Nyb2xsYmFsa2VuIChXaW5kb3dzL0Nocm9taXVtKSA9 PT09PSAqLwovKiBLZWluZSBSYW5kcGZlaWxlLCBEYXVtZW4gdW5hdWZmYWVsbGlnIGdyYXUsIGJl aW0gSG92ZXIvRHJhZyBIZWFkZXItQmxhdSAqLwo6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgd2lkdGg6 IDEycHg7IGhlaWdodDogMTJweDsgfQo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsgYmFja2dy b3VuZDogdHJhbnNwYXJlbnQ7IH0KOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgICBiYWNr Z3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMjIpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFk aXVzLW1kKTsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYmFja2dyb3Vu ZC1jbGlwOiBwYWRkaW5nLWJveDsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMgZWFz ZTsKfQo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyLAo6Oi13ZWJraXQtc2Nyb2xsYmFy LXRodW1iOmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmltYXJ5KTsKICAgIGJh Y2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7Cn0KOjotd2Via2l0LXNjcm9sbGJhci1idXR0b24g eyBkaXNwbGF5OiBub25lOyB3aWR0aDogMDsgaGVpZ2h0OiAwOyB9Cjo6LXdlYmtpdC1zY3JvbGxi YXItY29ybmVyIHsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH0KCi8qIEZpcmVmb3ggKi8KKiB7 IHNjcm9sbGJhci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjIyKSB0cmFuc3BhcmVudDsgc2Nyb2xs YmFyLXdpZHRoOiB0aGluOyB9CgpbZGF0YS10aGVtZT0ibmlnaHQiXSA6Oi13ZWJraXQtc2Nyb2xs YmFyLXRodW1iIHsgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE4KTsgYmFja2dy b3VuZC1jbGlwOiBwYWRkaW5nLWJveDsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSA6Oi13ZWJraXQt c2Nyb2xsYmFyLXRodW1iOmhvdmVyLApbZGF0YS10aGVtZT0ibmlnaHQiXSA6Oi13ZWJraXQtc2Ny b2xsYmFyLXRodW1iOmFjdGl2ZSB7IGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpOyBiYWNr Z3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OyB9CltkYXRhLXRoZW1lPSJuaWdodCJdICogeyBzY3Jv bGxiYXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xOCkgdHJhbnNwYXJlbnQ7IH0KCi8q ID09PT09IE1hbnVlbGxlIFNvcnRpZXJ1bmcgKERyYWcgJiBEcm9wKSA9PT09PSAqLwoubXMtbGlz dGUgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDRweDsgbWF4 LWhlaWdodDogNjB2aDsgb3ZlcmZsb3cteTogYXV0bzsgcGFkZGluZzogNHB4OyB9Ci5tcy16ZWls ZSB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgLyogVVgtQXVkaXQgU3ByaW50IDMuNjogKzIgc2No bWFsZSBTcGFsdGVuIGZ1ZXIg4payL+KWvC1QZmVpbC1CdXR0b25zIChUYXN0YXR1ci1WYXJpYW50 ZSkuICovCiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDI4cHggMzZweCAxZnIgYXV0byAyNnB4 IDI2cHg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxMHB4OwogICAgcGFkZGlu ZzogOHB4IDEwcHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1tdXRlZCk7CiAgICBib3JkZXI6 IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0t cmFkaXVzLW1kKTsKICAgIGN1cnNvcjogZ3JhYjsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQg MC4xMnMsIGJveC1zaGFkb3cgMC4xMnM7Cn0KLm1zLXplaWxlOmhvdmVyIHsgYmFja2dyb3VuZDog dmFyKC0tYmctaG92ZXIpOyB9Ci5tcy16ZWlsZS5tcy1kcmFnZ2luZyB7IG9wYWNpdHk6IDAuNDU7 IGN1cnNvcjogZ3JhYmJpbmc7IGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLDAsMCwwLjIp OyB9Ci5tcy1ncmlmZiB7IGZvbnQtc2l6ZTogMThweDsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQp OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGN1cnNvcjogZ3JhYjsgdXNlci1zZWxlY3Q6IG5vbmU7IH0K Lm1zLW5hbWUgeyBmb250LXdlaWdodDogNjAwOyB9Ci5tcy1yYW5nIHsgZm9udC1zaXplOiB2YXIo LS1mcy1iYXNlKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB3aGl0ZS1zcGFjZTogbm93cmFw OyB9Ci5tcy1wZmVpbCB7CiAgICB3aWR0aDogMjZweDsgaGVpZ2h0OiAyNnB4OyBwYWRkaW5nOiAw OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2 YXIoLS1ib3JkZXItc3Ryb25nKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7 CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMt YmFzZSk7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0 aW9uLXN0ZCk7Cn0KLm1zLXBmZWlsOmhvdmVyLCAubXMtcGZlaWw6Zm9jdXMtdmlzaWJsZSB7CiAg ICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWZh cmJlLWFremVudCk7CiAgICBvdXRsaW5lOiBub25lOwp9CgovKiA9PT09PSBSYW5nLUlubGluZS1F ZGl0IGluIGRlciBQZXJzb25hbHZlcndhbHR1bmcgPT09PT0gKi8KLnJhbmctZWRpdCB7CiAgICBk aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiAycHggOHB4OwogICAgYm9yZGVyLXJh ZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRp b246IGJhY2tncm91bmQgMC4xMnMsIGNvbG9yIDAuMTJzOwp9Ci5yYW5nLWVkaXQ6aG92ZXIgewog ICAgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOwogICAgY29sb3I6IHZhcigtLXRleHQtaGVh ZGluZyk7CiAgICBvdXRsaW5lOiAxcHggZGFzaGVkIHZhcigtLWJvcmRlci1saWdodCk7Cn0KLnJh bmctZWRpdC1pbnB1dCB7CiAgICB3aWR0aDogNjBweDsKICAgIHBhZGRpbmc6IDJweCA0cHg7CiAg ICBmb250LXNpemU6IHZhcigtLWZzLW1kKTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICB0ZXh0 LWFsaWduOiBjZW50ZXI7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1mYXJiZS1wcmltYWVy KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICBiYWNrZ3JvdW5kOiB2 YXIoLS1iZy1jb250ZW50KTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwp9CgovKiA9 PT09PSBGdW5rdGlvbi1JbmxpbmUtRWRpdCBpbiBkZXIgUGVyc29uYWx2ZXJ3YWx0dW5nID09PT09 ICovCi5mdW5rdGlvbi1lZGl0IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRp bmc6IDJweCA4cHg7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgY3Vy c29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjEycywgY29sb3IgMC4x MnM7Cn0KLmZ1bmt0aW9uLWVkaXQ6aG92ZXIgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctaG92 ZXIpOwogICAgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBvdXRsaW5lOiAxcHggZGFz aGVkIHZhcigtLWJvcmRlci1saWdodCk7Cn0KLmZ1bmt0aW9uLWVkaXQtaW5wdXQgewogICAgd2lk dGg6IDEwMCU7CiAgICBwYWRkaW5nOiAycHggNHB4OwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1i YXNlKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWZhcmJlLXByaW1hZXIpOwogICAgYm9y ZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNv bnRlbnQpOwogICAgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7Cn0KCi8qID09PT09IERpZW5z dGdyYWQtSW5saW5lLUVkaXQgPT09PT0gKi8KLmRpZW5zdGdyYWQtZWRpdCB7CiAgICBkaXNwbGF5 OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiAycHggOHB4OwogICAgYm9yZGVyLXJhZGl1czog dmFyKC0tcmFkaXVzLXNtKTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGJh Y2tncm91bmQgMC4xMnMsIGNvbG9yIDAuMTJzOwp9Ci5kaWVuc3RncmFkLWVkaXQ6aG92ZXIgewog ICAgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOwogICAgY29sb3I6IHZhcigtLXRleHQtaGVh ZGluZyk7CiAgICBvdXRsaW5lOiAxcHggZGFzaGVkIHZhcigtLWJvcmRlci1saWdodCk7Cn0KLmRp ZW5zdGdyYWQtZWRpdC1pbnB1dCB7CiAgICB3aWR0aDogNzBweDsKICAgIHBhZGRpbmc6IDJweCA0 cHg7CiAgICBmb250LXNpemU6IHZhcigtLWZzLWJhc2UpOwogICAgYm9yZGVyOiAxcHggc29saWQg dmFyKC0tZmFyYmUtcHJpbWFlcik7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20p OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY29udGVudCk7CiAgICBjb2xvcjogdmFyKC0tdGV4 dC1oZWFkaW5nKTsKfQoKLyogPT09PT0gUGVyc29uYWwtSW5saW5lLUVkaXQgKGFsbGUgVGV4dGZl bGRlciBwcm8gWmVpbGUpID09PT09ICovCi8qIEtvbnNpc3RlbnQgenVtIHJhbmctL2RpZW5zdGdy YWQtL2Z1bmt0aW9uLWVkaXQtU3RpbC4gQmVpIGxlZXJlbSBXZXJ0CiAgIHBlcm1hbmVudCBkZXpl bnQgc2ljaHRiYXIgKFBsYWNlaG9sZGVyICsgbGVpY2h0ZXIgSGludGVyZ3J1bmQpLCBkYW1pdAog ICBkZXIgVXNlciBlcmtlbm50OiBoaWVyIGthbm4gbWFuIGtsaWNrZW4uICovCi5wZXJzb25hbC1p bmxpbmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogMnB4IDhweDsK ICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICBjdXJzb3I6IHBvaW50ZXI7 CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTJzLCBjb2xvciAwLjEycywgb3V0bGluZS1j b2xvciAwLjEyczsKICAgIG1pbi13aWR0aDogMjRweDsKICAgIG1pbi1oZWlnaHQ6IDE4cHg7Cn0K LnBlcnNvbmFsLWlubGluZTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7 CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIG91dGxpbmU6IDFweCBkYXNoZWQg dmFyKC0tZmFyYmUtYWt6ZW50LCAjNGE5MGUyKTsKfQovKiBMZWVyZSBJbmxpbmUtRmVsZGVyIGJl a29tbWVuIGVpbmVuIGtsYXIgZXJrZW5uYmFyZW4gIkRyb3AtWm9uZSItTG9vayDigJQKICAgZ2Vw dW5rdGV0ZXIgUmFobWVuIG1pdCBBa3plbnQtRmFyYmUsIGxlaWNodGVyIEhpbnRlcmdydW5kLVNj aGltbWVyLAogICBkYW1pdCBkZXIgS2xpY2stSG90c3BvdCBuaWNodCBtaXQgZWNodGVtIExlZXJz dGFuZCB2ZXJ3ZWNoc2VsdCB3aXJkLiAqLwoucGVyc29uYWwtaW5saW5lLWxlZXIgewogICAgYmFj a2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwogICAgb3V0bGluZTogMXB4IGRhc2hlZCB2YXIo LS1ib3JkZXItc3Ryb25nKTsKfQoucGVyc29uYWwtaW5saW5lLWxlZXI6aG92ZXIgewogICAgYmFj a2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOwogICAgb3V0bGluZTogMXB4IGRhc2hlZCB2YXIoLS1m YXJiZS1ha3plbnQpOwp9Ci5wZXJzb25hbC1pbmxpbmUtcGxhY2Vob2xkZXIgewogICAgZm9udC1z dHlsZTogaXRhbGljOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7CiAgICBjb2xvcjogdmFy KC0tZmFyYmUtYWt6ZW50KTsKICAgIG9wYWNpdHk6IDAuOTsKICAgIGxldHRlci1zcGFjaW5nOiAw LjJweDsKfQoKLyogZWxkZ2wtZWRpdDogZ2xlaWNoZXMgSG92ZXItTXVzdGVyLCBkYW1pdCBkaWUg U3BhbHRlIHNpY2h0YmFyIGVkaXRpZXJiYXIgd2lya3QuICovCi5lbGRnbC1lZGl0IHsKICAgIHRy YW5zaXRpb246IGJhY2tncm91bmQgMC4xMnMsIG91dGxpbmUtY29sb3IgMC4xMnM7Cn0KLmVsZGds LWVkaXQ6aG92ZXIgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOwogICAgb3V0bGlu ZTogMXB4IGRhc2hlZCB2YXIoLS1mYXJiZS1ha3plbnQsICM0YTkwZTIpOwp9CgovKiA9PT09PSBW STMtREdMLVN0YXR1cy1CdXR0b24gKFBlcnNvbmFsdmVyd2FsdHVuZykgPT09PT0KICAgUXVhZHJh dGlzY2hlciBTdGF0dXMtQnV0dG9uLCAyNngyNiBweC4gR3J1ZW4gKyB3ZWlzc2VyIEhha2VuIGJl aQogICBRdWFsaWZpemllcnVuZywgcm90ICsgd2Vpc3NlciBob3Jpem9udGFsZXIgQmFsa2VuIChW ZXJrZWhyc3NjaGlsZAogICAiVmVyYm90IGRlciBFaW5mYWhydCItT3B0aWspIGJlaSBuaWNodCBx dWFsaWZpemllcnQuICovCi52aTNkZ2wtYnRuIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4Owog ICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAg d2lkdGg6IDI2cHg7CiAgICBoZWlnaHQ6IDI2cHg7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1y YWRpdXMtc20pOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHVzZXItc2VsZWN0OiBu b25lOwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTJzLCBib3gtc2hhZG93IDAuMTJzOwog ICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDAgcmdiYSgwLDAsMCwwLjE4KTsKfQouZWxkZ2wt ZWRpdDpob3ZlciAudmkzZGdsLWJ0biwKLmFuc3ByZWNocGFydG5lci1lZGl0OmhvdmVyIC52aTNk Z2wtYnRuIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wOCk7CiAgICBib3gtc2hhZG93OiBpbnNl dCAwIC0xcHggMCByZ2JhKDAsMCwwLDAuMTgpLCAwIDAgMCAycHggcmdiYSg3NCwxNDQsMjI2LDAu MzUpOwp9Ci52aTNkZ2wtYnRuLW9rIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLWVyZm9s ZywgIzI3ODk2RCk7Cn0KLnZpM2RnbC1idG4tb2s6OmJlZm9yZSB7CiAgICBjb250ZW50OiAn4pyT JzsKICAgIGNvbG9yOiAjZmZmOwogICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgIGZvbnQtc2l6ZTog MTZweDsKICAgIGxpbmUtaGVpZ2h0OiAxOwp9Ci52aTNkZ2wtYnRuLW5vIHsKICAgIGJhY2tncm91 bmQ6IHZhcigtLWZhcmJlLWZlaGxlciwgI0IwM0EyRSk7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7 Cn0KLnZpM2RnbC1idG4tbm86OmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHdpZHRoOiA2 MCU7CiAgICBoZWlnaHQ6IDVweDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXItcmFk aXVzOiAxcHg7CiAgICBib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgwLDAsMCwwLjEyKTsKfQov KiAiQXVzIi1WYXJpYW50ZTogZ3JhdWVyIEhpbnRlcmdydW5kICsgd2Vpc3NlciBNaW51cy1CYWxr ZW4uIFdpcmQgaW4KICAgZGVyIEFuc3ByZWNocGFydG5lci1TcGFsdGUgYWxzIG5ldXRyYWxlcyAi bmljaHQgZ2VzZXR6dCIgZ2VudXR6dCDigJQKICAga2VpbmUgV2Fybi1PcHRpayB3aWUgLnZpM2Rn bC1idG4tbm8sIHdlaWwgZGFzIEZsYWcgcmVpbiBvcHRpb25hbCBpc3QuICovCi52aTNkZ2wtYnRu LW9mZiB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10ZXh0LW11dGVkLCAjNmM3NTdkKTsKICAgIHBv c2l0aW9uOiByZWxhdGl2ZTsKfQoudmkzZGdsLWJ0bi1vZmY6OmJlZm9yZSB7CiAgICBjb250ZW50 OiAnJzsKICAgIHdpZHRoOiA2MCU7CiAgICBoZWlnaHQ6IDVweDsKICAgIGJhY2tncm91bmQ6ICNm ZmY7CiAgICBib3JkZXItcmFkaXVzOiAxcHg7CiAgICBib3gtc2hhZG93OiAwIDAgMCAxcHggcmdi YSgwLDAsMCwwLjEyKTsKfQoKLyogPT09PT0gUGVyc29uLU1vZGFsOiBWSTMtREdMLVRvZ2dsZSA9 PT09PSAqLwovKiBIb2VoZSBhbiBkaWUgYmVuYWNoYmFydGVuIGZvcm0taW5wdXQvc2VsZWN0IGFu Z2VwYXNzdCAoVXNlci1GZWVkYmFjawogICAyMDI2LTA1LTIzOiB3YXIgenUgd3VjaHRpZykuIFN0 YXR1cy1RdWFkcmF0IDIyeDIyLCBQYWRkaW5nIGtvbXBha3QsCiAgIFN0YXR1cyArIEhpbnQgaW5s aW5lIHN0YXR0IGdlc3RhcGVsdC4gKi8KLmRsZy1lbGRnbC10b2dnbGUgewogICAgZGlzcGxheTog aW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxMHB4OwogICAg d2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDM2cHg7CiAgICBwYWRkaW5nOiAwIDEwcHg7CiAgICBi YWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIo LS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsKICAg IGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMsIGJvcmRl ci1jb2xvciAwLjE1czsKICAgIGZvbnQ6IGluaGVyaXQ7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1w cmltYXJ5KTsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KLmRsZy1lbGRnbC10b2dnbGU6aG92ZXIg eyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IH0KLmRsZy1lbGRnbC10b2dnbGUgLnZpM2Rn bC1idG4gewogICAgd2lkdGg6IDIycHg7CiAgICBoZWlnaHQ6IDIycHg7CiAgICBmbGV4LXNocmlu azogMDsKfQouZGxnLWVsZGdsLXRvZ2dsZSAudmkzZGdsLWJ0bjo6YmVmb3JlIHsKICAgIGZvbnQt c2l6ZTogdmFyKC0tZnMtbGcpOwp9Ci5kbGctZWxkZ2wtdG9nZ2xlLmFrdGl2IHsKICAgIGJvcmRl ci1jb2xvcjogdmFyKC0tZmFyYmUtZXJmb2xnLCAjMjc4OTZEKTsKICAgIGJhY2tncm91bmQ6IHJn YmEoMzksMTM3LDEwOSwwLjA4KTsKfQouZGxnLWVsZGdsLXRvZ2dsZS5ha3Rpdjpob3ZlciB7IGJh Y2tncm91bmQ6IHJnYmEoMzksMTM3LDEwOSwwLjE0KTsgfQouZGxnLWVsZGdsLXRvZ2dsZS5pbmFr dGl2IHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZmFyYmUtZmVobGVyLCAjQjAzQTJFKTsKICAg IGJhY2tncm91bmQ6IHJnYmEoMTc2LDU4LDQ2LDAuMDYpOwp9Ci5kbGctZWxkZ2wtdG9nZ2xlLmlu YWt0aXY6aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDE3Niw1OCw0NiwwLjEyKTsgfQouZGxnLWVs ZGdsLXRleHQgewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogYmFz ZWxpbmU7CiAgICBnYXA6IDhweDsKICAgIG1pbi13aWR0aDogMDsKICAgIGZsZXg6IDE7Cn0KLmRs Zy1lbGRnbC1zdGF0dXMgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7CiAgICBmb250LXdl aWdodDogNzAwOwp9Ci5kbGctZWxkZ2wtdG9nZ2xlLmFrdGl2IC5kbGctZWxkZ2wtc3RhdHVzIHsg Y29sb3I6IHZhcigtLWZhcmJlLWVyZm9sZywgIzI3ODk2RCk7IH0KLmRsZy1lbGRnbC10b2dnbGUu aW5ha3RpdiAuZGxnLWVsZGdsLXN0YXR1cyB7IGNvbG9yOiB2YXIoLS1mYXJiZS1mZWhsZXIsICNC MDNBMkUpOyB9Ci5kbGctZWxkZ2wtaGludCB7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXNtKTsK ICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAg IG1hcmdpbi1sZWZ0OiBhdXRvOwp9CgovKiA9PT09PSBQcm9maWxiaWxkZXIgKEF2YXRhcmUpID09 PT09CiAgIFVuaWZvcm0tTG9vazogdmllcmVja2lnIG1pdCBkZXplbnQgYWJnZXJ1bmRldGVuIEVj a2VuIHN0YXR0IEtyZWlzLAogICBEZWZhdWx0LUhpbnRlcmdydW5kIGFudGhyYXppdC1ncmF1LiBi b3JkZXItcmFkaXVzIHdpcmQgaW0gSW5saW5lLQogICBTdHlsZSBwcm8gR3JvZXNzZSBnZXNldHp0 IChwcm9wb3J0aW9uYWwgfjE4JSkuICovCi52aTMtYXZhdGFyIHsKICAgIGRpc3BsYXk6IGlubGlu ZS1mbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2Vu dGVyOwogICAgZmxleC1zaHJpbms6IDA7CiAgICBjb2xvcjogI2ZmZjsKICAgIGZvbnQtd2VpZ2h0 OiA3MDA7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG92 ZXJmbG93OiBoaWRkZW47CiAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgIGJveC1zaGFkb3c6IGlu c2V0IDAgMCAwIDFweCByZ2JhKDAsMCwwLDAuMTIpOwp9Ci52aTMtYXZhdGFyLWJpbGQgewogICAg YmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsK ICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7Cn0KLnZpMy1hdmF0YXItaW5pdGlhbGVu IHsKICAgIHRleHQtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLDAsMCwwLjI1KTsKfQoKLyogUGVy c29uYWwtVGFiZWxsZTogQXZhdGFyIGxpbmtzIG5lYmVuIE5hbWVuICovCi5wZXJzb25hbC1uYW1l LXplbGxlIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRl cjsKICAgIGdhcDogOHB4Owp9Ci5wZXJzb25hbC1uYW1lLXplbGxlIC5wZXJzb24tbmFtZS1saW5r IHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAg IHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi8qIFBlcnNvbi1Nb2RhbDogQXZhdGFyLUJsb2NrIGdh bnogb2JlbiAoVm9yc2NoYXUgKyBCdXR0b25zKSAqLwouZGxnLWF2YXRhci1ibG9jayB7CiAgICBk aXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTZweDsKICAg IHBhZGRpbmc6IDEycHggMTRweDsKICAgIG1hcmdpbi1ib3R0b206IDE0cHg7CiAgICBiYWNrZ3Jv dW5kOiB2YXIoLS1iZy1jYXJkKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1s aWdodCk7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7Cn0KLmRsZy1hdmF0YXItdm9yc2NoYXUgLnZp My1hdmF0YXIgewogICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHJnYmEoMCwwLDAsMC4x NSksIDAgMXB4IDRweCByZ2JhKDAsMCwwLDAuMTUpOwp9Ci5kbGctYXZhdGFyLWFrdGlvbmVuIHsK ICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZ2FwOiA2 cHg7CiAgICBmbGV4OiAxOwogICAgbWluLXdpZHRoOiAwOwp9Ci5kbGctYXZhdGFyLW5hbWUgewog ICAgZm9udC1zaXplOiAxNXB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGNvbG9yOiB2YXIo LS10ZXh0LWhlYWRpbmcpOwp9Ci5kbGctYXZhdGFyLWhpbndlaXMgewogICAgZm9udC1zaXplOiB2 YXIoLS1mcy1iYXNlKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgIGZvbnQtc3R5 bGU6IGl0YWxpYzsKfQoKLyogPT09PT0gUGVyc29uLUhvdmVyLVBvcG92ZXIgPT09PT0KICAgRWln ZW5lIC5wcHYtKiBLbGFzc2VuLCB3ZWlsIC5wcC0qIG1pdCBkZW0gcGVyc29lbmxpY2hlbiBQbGFu CiAgIGtvbGxpZGllcnQgaGF0IChib3JkZXItcmlnaHQvb3V0bGluZS1TdGlsZSB2b20gUGVycy1Q bGFuIGhhYmVuCiAgIGRpZSBNaW5pLVRhZy1aZWxsZW4gaW0gUG9wb3ZlciB1ZWJlcmxhZ2VydCku ICovCi52aTMtcGVyc29uLXBvcG92ZXIgewogICAgcG9zaXRpb246IGZpeGVkOwogICAgei1pbmRl eDogdmFyKC0tei1wb3BvdmVyLXBhZ2UpOwogICAgd2lkdGg6IDI4MHB4OwogICAgYmFja2dyb3Vu ZDogdmFyKC0tYmctY2FyZCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ry b25nKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7CiAgICBib3gtc2hhZG93 OiAwIDhweCAyNHB4IHJnYmEoMCwwLDAsMC4yOCk7CiAgICBwYWRkaW5nOiAxNHB4OwogICAgcG9p bnRlci1ldmVudHM6IGF1dG87Cn0KLnZpMy1wZXJzb24tcG9wb3Zlci52ZXJzdGVja3QgeyBkaXNw bGF5OiBub25lOyB9CgoucHB2LWtvcGYgewogICAgZGlzcGxheTogZmxleDsgZ2FwOiAxMnB4OyBh bGlnbi1pdGVtczogY2VudGVyOwogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgIHBhZGRpbmct Ym90dG9tOiAxMnB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1s aWdodCk7Cn0KLnBwdi1rb3BmLXRleHQgeyBmbGV4OiAxOyBtaW4td2lkdGg6IDA7IH0KLnBwdi1u YW1lIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtbGcpOyBmb250LXdlaWdodDogNzAwOwogICAg Y29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBsaW5lLWhlaWdodDogMS4yNTsKICAgIG1h cmdpbi1ib3R0b206IDJweDsKfQoucHB2LW1ldGEgewogICAgZm9udC1zaXplOiAxMS41cHg7CiAg ICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICBsaW5lLWhlaWdodDogMS40NTsKfQoKLnBw di10YWdlLXRpdGVsIHsKICAgIGZvbnQtc2l6ZTogMTAuNXB4OwogICAgY29sb3I6IHZhcigtLXRl eHQtbXV0ZWQpOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGxldHRlci1zcGFj aW5nOiAwLjZweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7 Cn0KLnBwdi10YWdlIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVt bnM6IHJlcGVhdCgyLCAxZnIpOwogICAgZ2FwOiA0cHggMTBweDsKICAgIGZvbnQtc2l6ZTogdmFy KC0tZnMtc20pOwp9Ci5wcHYtdGFnIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBs YXRlLWNvbHVtbnM6IDE4cHggMWZyIGF1dG87CiAgICBnYXA6IDZweDsKICAgIGFsaWduLWl0ZW1z OiBjZW50ZXI7CiAgICBwYWRkaW5nOiAycHggNHB4OwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0t cmFkaXVzLXNtKTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xMnM7Cn0KLnBwdi10YWct d2UgewogICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwp9Ci5wcHYtdGFnLWhldXRlIHsKICAg IGJhY2tncm91bmQ6IHJnYmEoNzQsMTQ0LDIyNiwwLjEyKTsKfQoucHB2LXRhZy1oZXV0ZSAucHB2 LXRhZy13dCwKLnBwdi10YWctaGV1dGUgLnBwdi10YWctZGF0dW0gewogICAgY29sb3I6IHZhcigt LWZhcmJlLWFremVudCwgIzRhOTBlMik7CiAgICBmb250LXdlaWdodDogODAwOwp9Ci5wcHYtdGFn LXd0IHsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgIGZvbnQtc2l6ZTogdmFyKC0t ZnMteHMpOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KLnBw di10YWctZGF0dW0gewogICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsKICAgIGZvbnQt c2l6ZTogMTAuNXB4OwogICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKfQou cHB2LXRhZy1jb2RlIHsKICAgIHBhZGRpbmc6IDFweCA2cHg7CiAgICBtaW4td2lkdGg6IDQ4cHg7 CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteHMpOwogICAgZm9udC13ZWlnaHQ6IDcw MDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMTAuNXB4OwogICAgY29s b3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQp OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAg d2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoucHB2LXRhZy1sZWVyIC5wcHYtdGFnLWNvZGUgewogICAg Y29sb3I6IHZhcigtLWJvcmRlci1zdHJvbmcpOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7 CiAgICBmb250LXdlaWdodDogNDAwOwp9CgovKiA9PT09PSBBZG1pbjogUmVjaHRlICYgU2ljaHRi YXJrZWl0IOKAlCBLYXJ0ZW4tTGF5b3V0ID09PT09ICovCi5yZWNodGUtdGFiLXN1YiB7CiAgICBt YXJnaW46IDRweCAwIDA7CiAgICBmb250LXNpemU6IHZhcigtLWZzLWJhc2UpOwogICAgY29sb3I6 IHZhcigtLXRleHQtbXV0ZWQpOwogICAgbGluZS1oZWlnaHQ6IDEuNDU7Cn0KCiNhZG1pbi10YWIt c3VwZXJ1c2VyIC5hZG1pbi1zZWt0aW9uIHsKICAgIG1hcmdpbi1ib3R0b206IDE4cHg7Cn0KI2Fk bWluLXRhYi1zdXBlcnVzZXIgLmFkbWluLXNla3Rpb24tdHJlbm5lciB7IGRpc3BsYXk6IG5vbmU7 IH0KCi5yZWNodGUtY2FyZCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsKICAgIGJv cmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBib3JkZXItcmFkaXVzOiAx MnB4OwogICAgcGFkZGluZzogMTRweCAxOHB4IDE2cHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7 CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9Ci8qIEVpbmhlaXRsaWNoZXIsIHByb2Zlc3Npb25lbGxl ciBMb29rOiBrZWluIGZhcmJpZ2VyIEFremVudC1TdHJlaWZlbiB1bmQKICAga2VpbiBSb2xsZW4t RmFyYmNvZGUgbWVociDigJQgYWxsZSBSb2xsZW4tS2FydGVuIG5ldXRyYWwsIEljb25zIGltCiAg IFN0YW5kYXJkLUJsYXUgKHNpZWhlIC5yZWNodGUtY2FyZC1pY29uKS4gKi8KCi5yZWNodGUtY2Fy ZC1rb3BmIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsK ICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIGdhcDogMTJweDsKICAgIG1h cmdpbjogMCAwIDEycHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMTJweDsKICAgIGJvcmRlci1ib3R0 b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwp9Ci5yZWNodGUtY2FyZC10aXRlbCB7 CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTJw eDsKICAgIG1pbi13aWR0aDogMDsKICAgIGZsZXg6IDE7Cn0KLnJlY2h0ZS1jYXJkLXRpdGVsIGgz IHsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGNvbG9yOiB2YXIoLS10 ZXh0LWhlYWRpbmcpOwogICAgbGluZS1oZWlnaHQ6IDEuMjsKfQoucmVjaHRlLWNhcmQtc3ViIHsK ICAgIG1hcmdpbjogM3B4IDAgMDsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7CiAgICBj b2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICBsaW5lLWhlaWdodDogMS40Owp9Ci5yZWNodGUt Y2FyZC1pY29uIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgYWxpZ24taXRlbXM6IGNl bnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgd2lkdGg6IDM2cHg7IGhlaWdo dDogMzZweDsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJn LXByaW1hcnkpOwogICAgY29sb3I6ICNmZmY7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBmb250 LXdlaWdodDogNzAwOwogICAgZmxleC1zaHJpbms6IDA7Cn0KLnJlY2h0ZS1ub3RmYWxsLWJveCB7 CiAgICBtYXJnaW46IDAgMCAxMnB4OwogICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLWZhcmJl LXdhcm51bmcsICNjYTZmMWUpOwogICAgZm9udC1zaXplOiAxMi41cHg7Cn0KLnJlY2h0ZS1jYXJk LWZ1c3MgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBn YXA6IDEycHg7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBwYWRkaW5nLXRvcDogMTJweDsKICAg IG1hcmdpbi10b3A6IDEycHg7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVy LWxpZ2h0KTsKfQoucmVjaHRlLWRpcnR5LWhpbndlaXMgewogICAgY29sb3I6IHZhcigtLWZhcmJl LXdhcm51bmcsICNjYTZmMWUpOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGZvbnQtc2l6ZTog dmFyKC0tZnMtYmFzZSk7Cn0KLnJlY2h0ZS1rZWluLXJlY2h0IHsgbWFyZ2luLXRvcDogMTJweDsg fQoKLyogPT09PT0gSW1wcmVzc3Vtcy1Nb2RhbCA9PT09PSAqLwouaW1wcmVzc3VtLWluaGFsdCBo NCB7CiAgICBtYXJnaW46IDE0cHggMCA0cHg7CiAgICBmb250LXNpemU6IDEzLjVweDsKICAgIGNv bG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsK ICAgIGxldHRlci1zcGFjaW5nOiAwLjRweDsKfQouaW1wcmVzc3VtLWluaGFsdCBoNDpmaXJzdC1j aGlsZCB7IG1hcmdpbi10b3A6IDA7IH0KLmltcHJlc3N1bS1pbmhhbHQgcCB7CiAgICBtYXJnaW46 IDAgMCA4cHg7CiAgICBmb250LXNpemU6IHZhcigtLWZzLW1kKTsKfQouaW1wcmVzc3VtLWluaGFs dCB1bCB7CiAgICBtYXJnaW46IDRweCAwIDhweCAxOHB4OwogICAgcGFkZGluZzogMDsKICAgIGZv bnQtc2l6ZTogdmFyKC0tZnMtbWQpOwp9Ci5pbXByZXNzdW0taW5oYWx0IGxpIHsgbWFyZ2luLWJv dHRvbTogM3B4OyB9CgovKiBOb3RmYWxsLVJ1ZWNrZmFsbGViZW5lOiBpc3QgaGFydGNvZGllcnQg KGtlaW4gVXNlci1FZGl0KSwgZGFtaXQgZGVyCiAgIFN1cHBvcnRQZmFkIGltbWVyIGV4aXN0aWVy dC4gVmlzdWVsbCBhbHMgV2Fybi1Cb3ggbWl0IGxpbmtlbQogICBBa3plbnQtU3RyZWlmZW4gKyBN YWlsLUJ1dHRvbi4gKi8KLmltcHJlc3N1bS1ub3RmYWxsIHsKICAgIG1hcmdpbi10b3A6IDE4cHg7 CiAgICBwYWRkaW5nOiAxNHB4IDE2cHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwxMTEsMzAs MC4wOCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIwMiwxMTEsMzAsMC4zNSk7CiAgICBi b3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLWZhcmJlLXdhcm51bmcsICNjYTZmMWUpOwogICAg Ym9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsKfQouaW1wcmVzc3VtLW5vdGZhbGwtdGl0 ZWwgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7 CiAgICBjb2xvcjogdmFyKC0tZmFyYmUtd2FybnVuZywgI2NhNmYxZSk7CiAgICB0ZXh0LXRyYW5z Zm9ybTogdXBwZXJjYXNlOwogICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4OwogICAgbWFyZ2luLWJv dHRvbTogNnB4Owp9Ci5pbXByZXNzdW0tbm90ZmFsbC10ZXh0IHsKICAgIG1hcmdpbjogMCAwIDEy cHg7CiAgICBmb250LXNpemU6IDEyLjVweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjU1OwogICAgY29s b3I6IHZhcigtLXRleHQtcHJpbWFyeSk7Cn0KLmltcHJlc3N1bS1ub3RmYWxsLXRleHQgY29kZSB7 CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMDYpOwogICAgcGFkZGluZzogMXB4IDVweDsK ICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14cyk7CiAgICBmb250LXNpemU6IDExLjVw eDsKfQouaW1wcmVzc3VtLW1haWwtYnRuIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAg YWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogNnB4OwogICAgdGV4dC1kZWNvcmF0aW9uOiBu b25lOwp9Ci5pbXByZXNzdW0tbWFpbC1idG46aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7 IH0KCi8qIEJ1Zy1SZXBvcnQtQm94IChNb2RhbCBoaW50ZXIgZGVtIEhlYWRlci1CdXR0b24g4oCe QnVnUmVwb3J0Iikg4oCUIHJvdGUgVmFyaWFudGUKICAgZGVyIEltcHJlc3N1bS1Ob3RmYWxsLUJv eC4gKi8KLmJ1Z3JlcG9ydC1ib3ggewogICAgcGFkZGluZzogMTRweCAxNnB4OwogICAgYmFja2dy b3VuZDogcmdiYSgxNzYsNTgsNDYsMC4wOCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE3 Niw1OCw0NiwwLjM1KTsKICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tZmFyYmUtZmVo bGVyLCAjQjAzQTJFKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7Cn0KLmJ1 Z3JlcG9ydC1ib3gtdGl0ZWwgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsKICAgIGZv bnQtd2VpZ2h0OiA3MDA7CiAgICBjb2xvcjogdmFyKC0tZmFyYmUtZmVobGVyLCAjQjAzQTJFKTsK ICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7 CiAgICBtYXJnaW4tYm90dG9tOiA2cHg7Cn0KLmJ1Z3JlcG9ydC1ib3gtdGV4dCB7CiAgICBtYXJn aW46IDAgMCAxMnB4OwogICAgZm9udC1zaXplOiAxMi41cHg7CiAgICBsaW5lLWhlaWdodDogMS41 NTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwp9Ci5idWdyZXBvcnQtbWFpbC1idG4g ewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAg Z2FwOiA2cHg7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBiYWNrZ3JvdW5kOiB2YXIo LS1mYXJiZS1mZWhsZXIsICNCMDNBMkUpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1mYXJiZS1m ZWhsZXIsICNCMDNBMkUpOwogICAgY29sb3I6ICNmZmY7Cn0KLmJ1Z3JlcG9ydC1tYWlsLWJ0bjpo b3ZlciB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZmlsdGVyOiBicmlnaHRuZXNzKDEuMDgpOyB9 CgovKiA9PT09PSBHZWJ1cnRzdGFnLU1vZGFsIChCdXR0b24tR3JpZCBmdWVyIFRhZyAvIE1vbmF0 IC8gSmFocikgPT09PT0gKi8KLmdiLWFrdHVlbGwgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmct Y2FyZC1hbHQpOwogICAgcGFkZGluZzogMTBweCAxNHB4OwogICAgYm9yZGVyLXJhZGl1czogdmFy KC0tcmFkaXVzLW1kKTsKICAgIG1hcmdpbi1ib3R0b206IDE0cHg7CiAgICBmb250LXNpemU6IHZh cigtLWZzLWxnKTsKfQouZ2Itc2VrdGlvbiB7IG1hcmdpbi1ib3R0b206IDE0cHg7IH0KLmdiLXNl a3Rpb246bGFzdC1jaGlsZCB7IG1hcmdpbi1ib3R0b206IDA7IH0KLmdiLXNla3Rpb24tdGl0ZWwg ewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsK ICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOiAwLjZweDsKICAg IGZvbnQtd2VpZ2h0OiA2MDA7IG1hcmdpbi1ib3R0b206IDZweDsKfQouZ2ItZ3JpZCB7IGRpc3Bs YXk6IGdyaWQ7IGdhcDogNHB4OyB9Ci5nYi1ncmlkLXRhZyAgIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1 bW5zOiByZXBlYXQoNywgMWZyKTsgfQouZ2ItZ3JpZC1tb25hdCB7IGdyaWQtdGVtcGxhdGUtY29s dW1uczogcmVwZWF0KDYsIDFmcik7IH0KQG1lZGlhIChtYXgtd2lkdGg6IDY0MHB4KSB7CiAgICAu Z2ItZ3JpZC1tb25hdCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcik7IH0K fQouZ2ItZ3JpZC1qYWhyICB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDgsIDFmcik7 IH0KQG1lZGlhIChtYXgtd2lkdGg6IDcwMHB4KSB7CiAgICAuZ2ItZ3JpZC1qYWhyIHsgZ3JpZC10 ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNiwgMWZyKTsgfQp9Ci5nYi1idG4gewogICAgcGFkZGlu ZzogNnB4IDRweDsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOwogICAgYmFja2dyb3VuZDog dmFyKC0tYmctY2FyZC1hbHQpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxp Z2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICBjdXJzb3I6IHBv aW50ZXI7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKICAgIHRyYW5zaXRpb246IGJh Y2tncm91bmQgMC4xcywgYm9yZGVyLWNvbG9yIDAuMXMsIHRyYW5zZm9ybSAwLjA4czsKfQouZ2It YnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsKICAgIGJvcmRlci1j b2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50LCAjNGE5MGUyKTsKfQouZ2ItYnRuOmFjdGl2ZSB7IHRy YW5zZm9ybTogc2NhbGUoMC45NSk7IH0KLmdiLWJ0bi5ha3RpdiB7CiAgICBiYWNrZ3JvdW5kOiB2 YXIoLS1mYXJiZS1ha3plbnQsICM0YTkwZTIpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1mYXJi ZS1ha3plbnQsICM0YTkwZTIpOwogICAgY29sb3I6ICNmZmY7CiAgICBmb250LXdlaWdodDogNzAw Owp9CgovKiA9PT09PSBJbmZvLU1vZGFsOiBBYnNjaG5pdHRlIG9obmUgZG9wcGVsdGUgRWlucsO8 Y2t1bmcgPT09PT0KICAgS2VpbiBob3Jpem9udGFsZXMgUGFkZGluZyBhbSBBYnNjaG5pdHRzLVdy YXBwZXIg4oCUIExpc3RlbiBydWVja2VuIG51ciB1bSBkaWUKICAgZWlnZW5lIEJ1bGxldC1CcmVp dGUgZWluLCBibGVpYmVuIHNvIGltIFRleHRmbHVzcyB6dW0gaDMtVGl0ZWwuIERhcyBpc3QgZGVy CiAgIEtvbXByb21pc3M6IGRpZSBJbmZvLUthcnRlbiBvYmVuIChTdXBwb3J0KSBzdGVoZW4gZXR3 YXMgZWluZ2V6b2dlbiBkdXJjaAogICBpaHJlbiA0cHgtQm9yZGVyLCBkaWUgcmVzdGxpY2hlbiBB YnNjaG5pdHRlIHNpdHplbiBhbSBNb2RhbC1SYW5kLiAqLwouaW5mby1hYnNjaG5pdHQgewogICAg cGFkZGluZzogMDsKICAgIG1hcmdpbi1ib3R0b206IDEycHg7Cn0KLmluZm8tYWJzY2huaXR0ID4g aDMgewogICAgbWFyZ2luOiAxNHB4IDAgOHB4IDA7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBj b2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2 YXIoLS1ib3JkZXItbGlnaHQpOwogICAgcGFkZGluZy1ib3R0b206IDRweDsKfQouaW5mby1hYnNj aG5pdHQgPiBoMzpmaXJzdC1jaGlsZCB7IG1hcmdpbi10b3A6IDA7IH0KLmluZm8tYWJzY2huaXR0 IHVsLAouaW5mby1hYnNjaG5pdHQgb2wgewogICAgbWFyZ2luOiAwIDAgMTBweCAwOwogICAgcGFk ZGluZy1sZWZ0OiAyMHB4OwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7CiAgICBsaW5lLWhl aWdodDogMS43Owp9Ci5pbmZvLWFic2Nobml0dCB1bCBsaSwKLmluZm8tYWJzY2huaXR0IG9sIGxp IHsgbWFyZ2luLWJvdHRvbTogNHB4OyB9Ci5pbmZvLWFic2Nobml0dCB1bCBsaTpsYXN0LWNoaWxk LAouaW5mby1hYnNjaG5pdHQgb2wgbGk6bGFzdC1jaGlsZCB7IG1hcmdpbi1ib3R0b206IDA7IH0K LmluZm8tYWJzY2huaXR0IHAgeyBtYXJnaW46IDAgMCA4cHggMDsgZm9udC1zaXplOiB2YXIoLS1m cy1tZCk7IH0KLmluZm8tZnVzcyB7CiAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgcGFkZGluZzog OHB4IDAgMCAwOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7CiAgICBjb2xvcjogdmFyKC0t dGV4dC1tdXRlZCk7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0 KTsKfQoKLyogPT09PT0gU3RhdGlzdGlrOiBJbmZvLUJ1dHRvbnMgKyBQcm9zYSA9PT09PSAqLwou c3RhdHMtaW5mby1idG4gewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVt czogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB3aWR0aDogMThweDsK ICAgIGhlaWdodDogMThweDsKICAgIG1hcmdpbi1sZWZ0OiA4cHg7CiAgICBwYWRkaW5nOiAwOwog ICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1yYWRp dXM6IDUwJTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIGNvbG9yOiB2 YXIoLS10ZXh0LW11dGVkKTsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOwogICAgZm9udC13 ZWlnaHQ6IDcwMDsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgIGZvbnQtZmFtaWx5OiBHZW9y Z2lhLCBzZXJpZjsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAg dmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xMnMs IGNvbG9yIDAuMTJzOwp9Ci5zdGF0cy1pbmZvLWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiB2 YXIoLS1mYXJiZS1wcmltYWVyLCAjMkMzRTUwKTsKICAgIGNvbG9yOiAjZmZmOwogICAgYm9yZGVy LWNvbG9yOiB2YXIoLS1mYXJiZS1wcmltYWVyLCAjMkMzRTUwKTsKfQoKLnN0YXRzLXByb3NhLWNv bnRhaW5lciB7CiAgICBwYWRkaW5nOiA4cHggMTJweCAxMnB4OwogICAgbWF4LWhlaWdodDogNDgw cHg7CiAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGly ZWN0aW9uOiBjb2x1bW47CiAgICBnYXA6IDhweDsKfQouc3RhdHMtcHJvc2EtemVpbGUgewogICAg ZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMTgwcHggMWZyOwogICAg Z2FwOiAxMnB4OwogICAgcGFkZGluZzogOHB4IDEwcHg7CiAgICBib3JkZXItcmFkaXVzOiB2YXIo LS1yYWRpdXMtc20pOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwogICAgZm9u dC1zaXplOiB2YXIoLS1mcy1tZCk7CiAgICBsaW5lLWhlaWdodDogMS41Owp9Ci5zdGF0cy1wcm9z YS16ZWlsZTpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsgfQouc3RhdHMtcHJv c2EtbmFtZSB7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9 Ci5zdGF0cy1wcm9zYS10ZXh0IHsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7IH0KCi8qIE1v ZGFsLUluZm8tSW5oYWx0OiBzYXViZXJlcyBTdHlsaW5nIGZ1ZXIgaDQvdWwgKi8KI21vZGFsLWtv ZXJwZXIgaDQgeyBtYXJnaW46IDEycHggMCA2cHggMDsgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7 IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9CiNtb2RhbC1rb2VycGVyIGNvZGUgeyBiYWNr Z3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IHBhZGRpbmc6IDFweCA0cHg7IGJvcmRlci1yYWRp dXM6IHZhcigtLXJhZGl1cy14cyk7IGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7IH0KLyogTGlz dGVuIGluIGFsbGVuIE1vZGFsLUtvZXJwZXJuOiBiZXd1c3N0IGZsYWNoZSBFaW5ydWVja3VuZywg ZGFtaXQgQnVsbGV0cwogICBkaXJla3QgbmViZW4gZGVtIFRleHRmbHVzcyBibGVpYmVuIHVuZCBu aWNodCB3ZWl0IHZvbSBsaW5rZW4gUmFuZCBhYnN0ZWhlbi4gKi8KI21vZGFsLWtvZXJwZXIgdWws CiNtb2RhbC1rb2VycGVyIG9sIHsKICAgIG1hcmdpbjogNnB4IDAgMTBweCAwOwogICAgcGFkZGlu Zy1sZWZ0OiAyMHB4OwogICAgbGluZS1oZWlnaHQ6IDEuNTsKfQojbW9kYWwta29lcnBlciBsaSB7 IG1hcmdpbi1ib3R0b206IDNweDsgfQoKLyogPT09PT0gTmV1aW1wb3J0LUJsb2NrIChQZXJzb25h bHZlcndhbHR1bmcpID09PT09CiAgIEVyc2NoZWludCB1ZWJlciBkZXIgUGVyc29uYWwtVGFiZWxs ZSwgd2VubiBkZXIgRXhjZWwtSW1wb3J0IGdlcmFkZSBmcmlzY2hlCiAgIFBlcnNvbmVuIGFuZ2Vs ZWd0IGhhdC4gU2FtbWVsdCBzaWUgenVtIE5hY2hwZmxlZ2VuIHVuZCB2ZXJzY2h3aW5kZXQsIHNv YmFsZAogICBhbGxlIE1hcmtlciBlcmxlZGlndCBzaW5kLiAqLwojcGVyc29uYWwtbmV1aW1wb3J0 LWJsb2NrIHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoNDgs OTksMTY4LDAuMDYpLCByZ2JhKDQ4LDk5LDE2OCwwLjEwKSk7CiAgICBib3JkZXI6IDFweCBzb2xp ZCByZ2JhKDQ4LDk5LDE2OCwwLjQwKTsKICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0t ZmFyYmUtcHJpbWFlcik7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBwYWRkaW5nOiAxNHB4 IDE4cHg7CiAgICBtYXJnaW46IDAgMCAxOHB4IDA7Cn0KLm5ldWltcG9ydC1rb3BmIHsKICAgIGRp c3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICBhbGln bi1pdGVtczogZmxleC1zdGFydDsKICAgIGdhcDogMTZweDsKICAgIGZsZXgtd3JhcDogd3JhcDsK ICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KLm5ldWltcG9ydC1rb3BmIGgzIHsKICAgIG1hcmdp bjogMCAwIDRweCAwOwogICAgZm9udC1zaXplOiAxNXB4OwogICAgY29sb3I6IHZhcigtLXRleHQt aGVhZGluZyk7Cn0KLm5ldWltcG9ydC1rb3BmIHAgewogICAgbWFyZ2luOiAwOwogICAgZm9udC1z aXplOiB2YXIoLS1mcy1iYXNlKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgIG1h eC13aWR0aDogNjQwcHg7Cn0KLm5ldWltcG9ydC1saXN0ZSB7CiAgICBkaXNwbGF5OiBmbGV4Owog ICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGdhcDogNnB4Owp9Ci5uZXVpbXBvcnQtemVp bGUgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4 KDIyMHB4LCAyZnIpIG1pbm1heCgyODBweCwgMWZyKSBhdXRvOwogICAgZ2FwOiAxMnB4OwogICAg YWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIHBhZGRpbmc6IDhweCAxMHB4OwogICAgYmFja2dyb3Vu ZDogdmFyKC0tYmctY2FyZCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGln aHQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsKfQoubmV1aW1wb3J0LW5h bWUgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBmbGV4LXdyYXA6IHdyYXA7 IGdhcDogNHB4OyB9Ci5uZXVpbXBvcnQtZGV0YWlsIHsKICAgIGZsZXgtYmFzaXM6IDEwMCU7CiAg ICBtYXJnaW4tdG9wOiAycHg7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXNtKTsKICAgIGNvbG9y OiB2YXIoLS10ZXh0LW11dGVkKTsKfQoubmV1aW1wb3J0LWZlbGRlciB7IGRpc3BsYXk6IGZsZXg7 IGdhcDogOHB4OyBmbGV4LXdyYXA6IHdyYXA7IH0KLm5ldWltcG9ydC1ha3Rpb25lbiB7IGRpc3Bs YXk6IGZsZXg7IGdhcDogNnB4OyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9CgpbZGF0YS10aGVtZT0i bmlnaHQiXSAjcGVyc29uYWwtbmV1aW1wb3J0LWJsb2NrIHsKICAgIGJhY2tncm91bmQ6IGxpbmVh ci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoOTYsMTYwLDI1NSwwLjEwKSwgcmdiYSg5NiwxNjAsMjU1 LDAuMTYpKTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSg5NiwxNjAsMjU1LDAuNDUpOwogICAgYm9y ZGVyLWxlZnQtY29sb3I6IHJnYmEoOTYsMTYwLDI1NSwwLjg1KTsKfQoKLyogPT09PT0gSGlud2Vp cy1TeXN0ZW0gKEJhbm5lciBvYmVuICsgQmFkZ2UgYW0gVXNlci1OYW1lICsgTW9kYWwtTGlzdGUp ID09PT09ICovCgovKiBIaW53ZWlzLUJhbm5lci1TdHlsZXMgc2VpdCB2MS40LjUgZW50ZmVybnQg 4oCUIGRlciByb3RlIEhlYWRlci1CYW5uZXIgd2ljaAogICBkZW0gQXV0by1Nb2RhbCBiZWltIExv Z2luIChicmFjaCB6dXZvciBkZW4gR3JpZC1TY3JvbGwpLiBCYWRnZS1TdHlsZXMgdW50ZW4KICAg YmxlaWJlbi4gKi8KCi5iZW51dHplci13cmFwIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAg IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsKfQoj YmVudXR6ZXItYW56ZWlnZSB7IGN1cnNvcjogZGVmYXVsdDsgfQoubWVpbi1hdmF0YXItYnRuIHsK ICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgYWxpZ24t aXRlbXM6IGNlbnRlcjsKICAgIC8qIEZvcm0gZm9sZ3QgZGVtIGlubmVyZW4gLnZpMy1hdmF0YXIg KGVja2lnIG1pdCBhYmdlcnVuZGV0ZW4gRWNrZW4pLiAqLwogICAgdHJhbnNpdGlvbjogdHJhbnNm b3JtIDAuMTJzOwp9Ci5tZWluLWF2YXRhci1idG46aG92ZXIgeyB0cmFuc2Zvcm06IHNjYWxlKDEu MDgpOyB9Ci5tZWluLWF2YXRhci1idG46aG92ZXIgLnZpMy1hdmF0YXIgewogICAgYm94LXNoYWRv dzogaW5zZXQgMCAwIDAgMXB4IHJnYmEoMCwwLDAsMC4xMiksIDAgMCAwIDJweCByZ2JhKDI1NSwy NTUsMjU1LDAuNSk7Cn0KLm1laW4tYXZhdGFyLWJ0bjpmb2N1cy12aXNpYmxlIHsKICAgIG91dGxp bmU6IDJweCBzb2xpZCB2YXIoLS1mYXJiZS1ha3plbnQsICM0YTkwZTIpOwogICAgb3V0bGluZS1v ZmZzZXQ6IDJweDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7Cn0KLyogS2xp Y2tiYXJlciBDdXJzb3IgbnVyIHdlbm4gZWluIEJhZGdlIGFuZ2V6ZWlndCB3aXJkICg9IEhpbndl aXNlIHZvcmhhbmRlbikgKi8KLmJlbnV0emVyLXdyYXA6aGFzKC5oaW53ZWlzLWJhZGdlOm5vdCgu dmVyc3RlY2t0KSkgI2JlbnV0emVyLWFuemVpZ2UgeyBjdXJzb3I6IHBvaW50ZXI7IH0KCi5oaW53 ZWlzLWJhZGdlIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVy OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIG1pbi13aWR0aDogMjBweDsgaGVpZ2h0OiAy MHB4OyBwYWRkaW5nOiAwIDZweDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7 CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1mYXJiZS1mZWhsZXIpOyBjb2xvcjogI2ZmZjsKICAgIGZv bnQtc2l6ZTogdmFyKC0tZnMtc20pOyBmb250LXdlaWdodDogNzAwOyBsaW5lLWhlaWdodDogMTsK ICAgIGN1cnNvcjogcG9pbnRlcjsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgdXNlci1zZWxl Y3Q6IG5vbmU7CiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggdmFyKC0tc2hhZG93LWxpZ2h0KTsK fQouaGlud2Vpcy1iYWRnZS52ZXJzdGVja3QgeyBkaXNwbGF5OiBub25lOyB9Ci5oaW53ZWlzLWJh ZGdlOmhvdmVyIHsgZmlsdGVyOiBicmlnaHRuZXNzKDEuMSk7IH0KLmhpbndlaXMtYmFkZ2U6Zm9j dXMgeyBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tdGFnLWZlaWVydGFnKTsgb3V0bGluZS1vZmZz ZXQ6IDJweDsgfQoKLmhpbndlaXMtbW9kYWwtdGFiZWxsZSB0ZCB7IHZlcnRpY2FsLWFsaWduOiB0 b3A7IHBhZGRpbmc6IDhweCAxMHB4OyB9Ci5oaW53ZWlzLW1vZGFsLXRhYmVsbGUgdHIgeyBib3Jk ZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgfQouaGlud2Vpcy1tb2Rh bC10YWJlbGxlIHRyOmxhc3QtY2hpbGQgeyBib3JkZXItYm90dG9tOiBub25lOyB9CgovKiA9PT09 PSBLYW5kaWRhdGVuLVBhbmVsIHBybyB1bnRlcmJlc2V0enRlIFNjaGljaHQgKFRhZy1EZXRhaWwp ID09PT09ICovCgouYmstZGV0YWlsLXNjaGljaHQta3JpdGlzY2ggewogICAgYm94LXNoYWRvdzog MCAwIDAgMnB4IHZhcigtLWZhcmJlLWZlaGxlcikgaW5zZXQ7CiAgICBhbmltYXRpb246IGJrLXB1 bHNlIDEuNnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7Cn0KQGtleWZyYW1lcyBiay1wdWxzZSB7CiAg ICAwJSwgMTAwJSB7IGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mYXJiZS1mZWhsZXIpIGlu c2V0OyB9CiAgICA1MCUgICAgICB7IGJveC1zaGFkb3c6IDAgMCAwIDNweCB2YXIoLS1mYXJiZS1m ZWhsZXIpIGluc2V0OyB9Cn0KCi5iay1zY2hpY2h0LWthbmRpZGF0ZW4geyBtYXJnaW4tdG9wOiAx MHB4OyBwYWRkaW5nLXRvcDogOHB4OyBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLWJvcmRl ci1saWdodCk7IH0KLmJrLWthbmRpZGF0ZW4tdG9nZ2xlIHsKICAgIGRpc3BsYXk6IGlubGluZS1m bGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDZweDsKICAgIHRyYW5zaXRpb246IGJhY2tn cm91bmQgMC4xMnMsIGJvcmRlci1jb2xvciAwLjEyczsKfQouYmsta2FuZGlkYXRlbi10b2dnbGUg LmJrLWthbmQtcGZlaWwgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy14cyk7IGNvbG9yOiB2YXIo LS10ZXh0LW11dGVkKTsKICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMTJzOwp9Ci5iay1rYW5kaWRh dGVuLXRvZ2dsZS5iay1rYW5kaWRhdGVuLXRvZ2dsZS1vZmZlbiB7CiAgICBiYWNrZ3JvdW5kOiB2 YXIoLS1iZy1ob3Zlcik7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWZhcmJlLWFremVudCk7Cn0K LmJrLWthbmRpZGF0ZW4tdG9nZ2xlLmJrLWthbmRpZGF0ZW4tdG9nZ2xlLW9mZmVuIC5iay1rYW5k LXBmZWlsIHsgY29sb3I6IHZhcigtLWZhcmJlLWFremVudCk7IH0KLmJrLWthbmRpZGF0ZW4tcGFu ZWwgewogICAgbWFyZ2luLXRvcDogMTBweDsgcGFkZGluZzogMTBweCAxMnB4OwogICAgYmFja2dy b3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIt bGlnaHQpOyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOwp9Ci5iay1rYW5kaWRhdGVu LXBhbmVsLnZlcnN0ZWNrdCB7IGRpc3BsYXk6IG5vbmU7IH0KLmJrLWthbmRpZGF0ZW4taGlud2Vp cyB7CiAgICBmb250LXNpemU6IDExLjVweDsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBmb250 LXdlaWdodDogNjAwOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgbGV0dGVyLXNwYWNp bmc6IDAuNHB4OwogICAgbWFyZ2luOiAxMHB4IDAgNnB4Owp9Ci5iay1rYW5kaWRhdGVuLWhpbndl aXM6Zmlyc3QtY2hpbGQgeyBtYXJnaW4tdG9wOiAwOyB9Ci5iay1rYW5kaWRhdGVuLWhpbndlaXMt dW1kaXMgeyBjb2xvcjogdmFyKC0tZmFyYmUtd2FybnVuZywgI2NhNmYxZSk7IH0KLmJrLWthbmRp ZGF0ZW4td2FybnVuZyB7CiAgICBmb250LXNpemU6IDExLjVweDsKICAgIGJhY2tncm91bmQ6IHJn YmEoMjAyLDExMSwzMCwwLjEwKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjAyLDExMSwz MCwwLjM1KTsKICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tZmFyYmUtd2FybnVuZywg I2NhNmYxZSk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteHMpOwogICAgcGFkZGlu ZzogNnB4IDhweDsKICAgIG1hcmdpbi1ib3R0b206IDZweDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0 LXByaW1hcnkpOwogICAgbGluZS1oZWlnaHQ6IDEuNDsKfQouYmsta2FuZGlkYXRlbi1sZWVyIHsg Zm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBwYWRk aW5nOiA2cHggMDsgZm9udC1zdHlsZTogaXRhbGljOyB9Ci5iay1rYW5kaWRhdGVuLWxpc3RlIHsg bGlzdC1zdHlsZTogbm9uZTsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9Ci5iay1rYW5kaWRhdGVu LXplaWxlIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDIy cHggMWZyIGF1dG87CiAgICBnYXA6IDEwcHg7CiAgICBwYWRkaW5nOiA2cHggOHB4OwogICAgYWxp Z24taXRlbXM6IGNlbnRlcjsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwogICAgYm9y ZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRp dXMtc20pOwogICAgbWFyZ2luLWJvdHRvbTogM3B4OwogICAgdHJhbnNpdGlvbjogYm9yZGVyLWNv bG9yIDAuMTJzLCBiYWNrZ3JvdW5kIDAuMTJzOwogICAgbWluLXdpZHRoOiAwOwp9Ci5iay1rYW5k aWRhdGVuLXplaWxlOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50 KTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsKfQouYmsta2FuZGlkYXRlbi16ZWls ZTpsYXN0LWNoaWxkIHsgbWFyZ2luLWJvdHRvbTogMDsgfQouYmsta2FuZGlkYXRlbi16ZWlsZS11 bWRpcyB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwxMTEsMzAsMC4wNik7CiAgICBib3JkZXIt bGVmdDogM3B4IHNvbGlkIHJnYmEoMjAyLDExMSwzMCwwLjU1KTsKfQouYmsta2FuZGlkYXRlbi16 ZWlsZS11bWRpczpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwxMTEsMzAsMC4xMik7 CiAgICBib3JkZXItbGVmdC1jb2xvcjogcmdiYSgyMDIsMTExLDMwLDAuODUpOwp9Ci5iay1rYW5k aWRhdGVuLXRleHQgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6 IDJweDsgbWluLXdpZHRoOiAwOyB9Ci5iay1rYW5kaWRhdGVuLW5hbWUgewogICAgZm9udC13ZWln aHQ6IDYwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGZvbnQtc2l6ZTogMTIuNXB4Owog ICAgbGluZS1oZWlnaHQ6IDEuMjU7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRl bXM6IGNlbnRlcjsgZ2FwOiA2cHg7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzog aGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKfQouYmsta2FuZGlkYXRlbi1tZXRhIHsK ICAgIGZvbnQtc2l6ZTogMTAuNXB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IGxpbmUtaGVp Z2h0OiAxLjI7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0 LW92ZXJmbG93OiBlbGxpcHNpczsKfQouYmsta2FuZGlkYXRlbi13YXJuIHsgY29sb3I6IHZhcigt LWZhcmJlLXdhcm51bmcsICNjYTZmMWUpOyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgfQouYmst a2FuZGlkYXRlbi1jb2RlIHsKICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IGZvbnQtc2l6ZTog dmFyKC0tZnMtc20pOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBwYWRkaW5n OiAycHggN3B4OwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsgY29sb3I6IHZh cigtLXRleHQtc2Vjb25kYXJ5KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1s aWdodCk7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5iay1rYW5kaWRhdGVuLWtlaW4tbWFp bCB7IG9wYWNpdHk6IDAuNTU7IH0KLmJrLWthbmRpZGF0ZW4ta2Vpbi1tYWlsIC5iay1rYW5kaWRh dGVuLWNoayB7IGN1cnNvcjogbm90LWFsbG93ZWQ7IH0KLmJrLWthbmRpZGF0ZW4tYWt0aW9uZW4g ewogICAgbWFyZ2luLXRvcDogMTBweDsgcGFkZGluZy10b3A6IDhweDsKICAgIGJvcmRlci10b3A6 IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgZGlzcGxheTogZmxleDsganVzdGlm eS1jb250ZW50OiBmbGV4LWVuZDsKfQoKLyogPT09PT09PT09PSBFcnNjaGVpbnVuZ3NiaWxkLUVk aXRvciA9PT09PT09PT09ICovCi8qIFR3by1Db2x1bW4tTGF5b3V0OgogICDilIzilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lJAKICAg4pSCIFZvcnNjaGF1ICAgIOKUgiBUYWItQmFyICAgICAgICAgICAgICAgICAgIOKUggog ICDilIIgKHN0aWNreSkgICAg4pSCIEVkaXRvciAoYWt0aXZlciBUeXApICAgICAg4pSCCiAgIOKU lOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUmAogICBTdGlja3kgRm9vdGVyIG1pdCBTcGVpY2hlcm4gKyBSZXNldC4KKi8K LmVyc2NoZWludW5nLWxheW91dCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0 ZS1jb2x1bW5zOiBtaW5tYXgoMjQwcHgsIDMwMHB4KSAxZnI7CiAgICBnYXA6IDE2cHg7CiAgICBh bGlnbi1pdGVtczogc3RhcnQ7CiAgICBtYXJnaW4tYm90dG9tOiA3MnB4OyAgLyogUGxhdHogZnVl ciBzdGlja3kgRm9vdGVyICovCn0KQG1lZGlhIChtYXgtd2lkdGg6IDEwMDBweCkgewogICAgLmVy c2NoZWludW5nLWxheW91dCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9Cn0KCi8qIC0t LS0gVm9yc2NoYXUtUGFuZWwgKGxpbmtzLCBzdGlja3kpIC0tLS0gKi8KLmVyc2NoZWludW5nLXZv cnNjaGF1LXBhbmVsIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwogICAgYm9yZGVy OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigt LXJhZGl1cy1sZyk7CiAgICBwYWRkaW5nOiAxMnB4OwogICAgcG9zaXRpb246IHN0aWNreTsKICAg IHRvcDogMTBweDsKfQouZXJzY2hlaW51bmctdm9yc2NoYXUtdGl0ZWwgewogICAgZm9udC1zaXpl OiAxMC41cHg7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgbWFyZ2luLWJvdHRvbTogOHB4Owog ICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgbGV0dGVyLXNwYWNpbmc6IDAuNnB4OyBmb250 LXdlaWdodDogNjAwOwp9Ci5lcnNjaGVpbnVuZy12b3JzY2hhdS1zdGFjayB7CiAgICBkaXNwbGF5 OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDZweDsKfQouZXJzY2hlaW51bmct dm9yc2NoYXUtemVpbGUgewogICAgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z OiA4NHB4IDFmcjsKICAgIGdhcDogMTBweDsgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIHBhZGRp bmc6IDZweCA4cHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7CiAgICBib3JkZXI6 IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGN1cnNvcjogcG9pbnRlcjsgdHJhbnNpdGlvbjog YmFja2dyb3VuZCAwLjE1cywgYm9yZGVyLWNvbG9yIDAuMTVzOwp9Ci5lcnNjaGVpbnVuZy12b3Jz Y2hhdS16ZWlsZTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7Cn0KLmVy c2NoZWludW5nLXZvcnNjaGF1LXplaWxlLmFrdGl2IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJn LWhvdmVyKTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50LCAjNGE5MGUyKTsK fQouZXJzY2hlaW51bmctdm9yc2NoYXUtY2VsbHMgewogICAgZGlzcGxheTogZmxleDsgZ2FwOiAy cHg7Cn0KLmVyc2NoZWludW5nLXZvcnNjaGF1LXplbGxlIHsKICAgIGZsZXg6IDE7IGJhY2tncm91 bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14 cyk7IHBhZGRpbmc6IDRweCAzcHg7IHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTog MTEuNXB4OyBmb250LXdlaWdodDogNjAwOyBtaW4taGVpZ2h0OiAyOHB4OwogICAgZGlzcGxheTog ZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLmVy c2NoZWludW5nLXZvcnNjaGF1LWZsYXNoIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLWZy dWVoLCAjQjcxQzFDKSAhaW1wb3J0YW50OwogICAgY29sb3I6ICNmZmY7CiAgICBtaW4td2lkdGg6 IDgwcHg7Cn0KLmVyc2NoZWludW5nLXZvcnNjaGF1LW1ldGEgewogICAgZGlzcGxheTogZmxleDsg ZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAycHg7IG1pbi13aWR0aDogMDsKfQouZXJzY2hl aW51bmctdm9yc2NoYXUtdHlwIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7IGZvbnQt d2VpZ2h0OiA2MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgd2hpdGUtc3BhY2U6 IG5vd3JhcDsgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7Cn0KLmVy c2NoZWludW5nLXZvcnNjaGF1LW5vdGl6IHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOyBj b2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7Cn0KLmVyc2NoZWludW5nLXZvcnNjaGF1LWhpbndlaXMg ewogICAgbWFyZ2luLXRvcDogMTBweDsgcGFkZGluZy10b3A6IDEwcHg7CiAgICBib3JkZXItdG9w OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMt eHMpOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IGZvbnQtc3R5bGU6IGl0YWxpYzsKfQouYnRu LW1pbmkgewogICAgcGFkZGluZzogM3B4IDhweDsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7CiAg ICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2 YXIoLS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsg Y3Vyc29yOiBwb2ludGVyOwogICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7Cn0KLmJ0bi1t aW5pOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOyB9CgovKiBWb3JzY2hhdS1a ZWxsZW4gZXJiZW4gZGllIGZlcnRpZ2VuIE1hcmtpZXJ1bmdzLVZhcmlhYmxlbjogKi8KLmVyc2No ZWludW5nLXZvcnNjaGF1LXplbGxlW2RhdGEtdm9yc2NoYXUta2V5PSJzb25kZXJ0YWdIaW53ZWlz Il0gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWhpbi1iZywgdmFyKC0tYmctY2FyZC1h bHQpKTsKICAgIGNvbG9yOiB2YXIoLS1taGluLXRleHQsIGluaGVyaXQpOwogICAgZm9udC13ZWln aHQ6IHZhcigtLW1oaW4tZncsIDYwMCk7CiAgICBib3gtc2hhZG93OiB2YXIoLS1taGluLXNoYWRv dywgbm9uZSk7CiAgICBhbmltYXRpb246IHZhcigtLW1oaW4tYW5pbSwgbm9uZSk7Cn0KLmVyc2No ZWludW5nLXZvcnNjaGF1LXplbGxlW2RhdGEtdm9yc2NoYXUta2V5PSJzb25kZXJ0YWdXYXJudW5n Il0gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbXdhci1iZywgdmFyKC0tYmctY2FyZC1h bHQpKTsKICAgIGNvbG9yOiB2YXIoLS1td2FyLXRleHQsIGluaGVyaXQpOwogICAgZm9udC13ZWln aHQ6IHZhcigtLW13YXItZncsIDYwMCk7CiAgICBib3gtc2hhZG93OiB2YXIoLS1td2FyLXNoYWRv dywgbm9uZSk7CiAgICBhbmltYXRpb246IHZhcigtLW13YXItYW5pbSwgbm9uZSk7Cn0KLmVyc2No ZWludW5nLXZvcnNjaGF1LXplbGxlW2RhdGEtdm9yc2NoYXUta2V5PSJmZWllcnRhZ1dpY2h0aWci XSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZndpLWJnLCB2YXIoLS1iZy1jYXJkLWFs dCkpOwogICAgY29sb3I6IHZhcigtLW1md2ktdGV4dCwgaW5oZXJpdCk7CiAgICBmb250LXdlaWdo dDogdmFyKC0tbWZ3aS1mdywgNjAwKTsKICAgIGJveC1zaGFkb3c6IHZhcigtLW1md2ktc2hhZG93 LCBub25lKTsKICAgIGFuaW1hdGlvbjogdmFyKC0tbWZ3aS1hbmltLCBub25lKTsKfQouZXJzY2hl aW51bmctdm9yc2NoYXUtemVsbGVbZGF0YS12b3JzY2hhdS1rZXk9ImZlcmllbiJdIHsKICAgIC8q IFZvcnNjaGF1IHplaWd0IGRpZSBTcGFsdGVuLVRvZW51bmcgYWxzIFplbGxoaW50ZXJncnVuZCAr IEJhbGtlbi1UZXh0ZmFyYmU7CiAgICAgICBGYWxsYmFja3MgPSBha3R1ZWxsZSBGZXJpZW4tRGVm YXVsdHMsIGRhbWl0IGF1Y2ggdW5rb25maWd1cmllcnQgZGVyCiAgICAgICB2ZXJ0cmF1dGUgTG9v ayBlcnNjaGVpbnQuICovCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZmVyLXNwYWx0ZS1i ZywgI0UwRjBFNCk7CiAgICBjb2xvcjogdmFyKC0tbWZlci10ZXh0LCAjMjU2MDI5KTsKICAgIGZv bnQtd2VpZ2h0OiB2YXIoLS1tZmVyLWZ3LCA3MDApOwogICAgYm94LXNoYWRvdzogdmFyKC0tbWZl ci1zaGFkb3csIG5vbmUpOwogICAgYW5pbWF0aW9uOiB2YXIoLS1tZmVyLWFuaW0sIG5vbmUpOwp9 Ci5lcnNjaGVpbnVuZy12b3JzY2hhdS16ZWxsZVtkYXRhLXZvcnNjaGF1LWtleT0iaGV1dGVTcGFs dGUiXSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1taGUtYmcsIHZhcigtLWJnLWNhcmQt YWx0KSk7CiAgICBjb2xvcjogdmFyKC0tbWhlLXRleHQsIGluaGVyaXQpOwogICAgZm9udC13ZWln aHQ6IHZhcigtLW1oZS1mdywgNjAwKTsKICAgIGJveC1zaGFkb3c6IHZhcigtLW1oZS1zaGFkb3cs IG5vbmUpOwogICAgYW5pbWF0aW9uOiB2YXIoLS1taGUtYW5pbSwgbm9uZSk7Cn0KCi8qIC0tLS0g RWRpdG9yLVNwYWx0ZSAocmVjaHRzKSAtLS0tICovCi5lcnNjaGVpbnVuZy1lZGl0b3Itc3BhbHRl IHsKICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMTBweDsK ICAgIG1pbi13aWR0aDogMDsKfQovKiBUYWItQmFyOiBLYXJ0ZW4tTG9vaywgamUgTWFya2llcnVu Z3MtVHlwIGVpbiBCdXR0b24gbWl0IGVjaHRlciBMaXZlLQogICBWb3JzY2hhdSAoRGF0dW0vV29j aGVudGFnLSBiencuIFNjaGljaHQtWmVsbGUpIHBsdXMgTGFiZWwgZGFydW50ZXIuCiAgIEFrdGl2 ZSBLYXJ0ZSBtaXQgQWt6ZW50LUJvcmRlciArIGxlaWNodGVtIEdsb3cuICovCi5lcnNjaGVpbnVu Zy10YWItYmFyIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6 IHJlcGVhdCg2LCBtaW5tYXgoMCwgMWZyKSk7CiAgICBnYXA6IDhweDsKICAgIHBhZGRpbmc6IDhw eDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwogICAgYm9yZGVyOiAxcHggc29saWQg dmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7 Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7CiAgICAuZXJzY2hlaW51bmctdGFiLWJhciB7 IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7IH0KfQpAbWVkaWEgKG1heC13 aWR0aDogNjAwcHgpIHsKICAgIC5lcnNjaGVpbnVuZy10YWItYmFyIHsgZ3JpZC10ZW1wbGF0ZS1j b2x1bW5zOiByZXBlYXQoMiwgMWZyKTsgfQp9Ci5lcnNjaGVpbnVuZy10YWIgewogICAgZGlzcGxh eTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGFsaWduLWl0ZW1zOiBzdHJldGNo OyBnYXA6IDZweDsKICAgIHBhZGRpbmc6IDhweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNh cmQtYWx0KTsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJh ZGl1czogOHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwog ICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5k IDAuMTVzLCBib3JkZXItY29sb3IgMC4xNXMsIHRyYW5zZm9ybSAwLjE1cywgYm94LXNoYWRvdyAw LjE1czsKfQouZXJzY2hlaW51bmctdGFiOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJn LWhvdmVyKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKfQouZXJzY2hlaW51bmct dGFiLmFrdGl2IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsKICAgIGJvcmRlci1j b2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50LCAjNGE5MGUyKTsKICAgIGJveC1zaGFkb3c6IDAgMnB4 IDEwcHggcmdiYSg3NCwxNDQsMjI2LDAuMjUpOwp9Ci5lcnNjaGVpbnVuZy10YWIuYWt0aXYgLmVy c2NoZWludW5nLXRhYi1sYWJlbC10b3AgewogICAgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7 CiAgICBmb250LXdlaWdodDogNzAwOwp9CgovKiBDaGlwOiBiaWxkZXQgZGFzIHRhdHNhZWNobGlj aGUgRXJzY2hlaW51bmdzYmlsZCBkZXIgTWFya2llcnVuZyBhYi4KICAgRGF0dW0gKyBXb2NoZW50 YWcgd2llIGltIFBsYW50YWZlbC1Lb3BmIGdlc3RhcGVsdDsgU3luYy1GbGFzaCB6ZWlndAogICBz dGF0dGRlc3NlbiBkZW4gU2NoaWNodGNvZGUtVGV4dC4gKi8KLmVyc2NoZWludW5nLXRhYi1jaGlw IHsKICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBhbGlnbi1p dGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGdhcDogMXB4OwogICAg bWluLWhlaWdodDogNDRweDsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIGJhY2tncm91bmQ6 IHZhcigtLWJnLWNhcmQpOwogICAgcGFkZGluZzogNnB4IDRweDsKICAgIGZvbnQtd2VpZ2h0OiA3 MDA7Cn0KLmVyc2NoZWludW5nLXRhYi1jaGlwLXRhZyB7CiAgICBmb250LXNpemU6IHZhcigtLWZz LWxnKTsgbGluZS1oZWlnaHQ6IDEuMTsKfQouZXJzY2hlaW51bmctdGFiLWNoaXAtd3QgewogICAg Zm9udC1zaXplOiAxMC41cHg7IG9wYWNpdHk6IDAuODU7Cn0KLmVyc2NoZWludW5nLXRhYi1jaGlw LXRleHQgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IGxldHRlci1zcGFjaW5nOiAwLjVw eDsKfQoKLmVyc2NoZWludW5nLXRhYi1jaGlwW2RhdGEtdm9yc2NoYXUta2V5PSJzb25kZXJ0YWdI aW53ZWlzIl0gewogICAgYmFja2dyb3VuZDogdmFyKC0tbWhpbi1iZywgdmFyKC0tYmctY2FyZCkp OwogICAgY29sb3I6IHZhcigtLW1oaW4tdGV4dCwgaW5oZXJpdCk7CiAgICBib3gtc2hhZG93OiB2 YXIoLS1taGluLXNoYWRvdywgbm9uZSk7CiAgICBhbmltYXRpb246IHZhcigtLW1oaW4tYW5pbSwg bm9uZSk7Cn0KLmVyc2NoZWludW5nLXRhYi1jaGlwW2RhdGEtdm9yc2NoYXUta2V5PSJzb25kZXJ0 YWdXYXJudW5nIl0gewogICAgYmFja2dyb3VuZDogdmFyKC0tbXdhci1iZywgdmFyKC0tYmctY2Fy ZCkpOwogICAgY29sb3I6IHZhcigtLW13YXItdGV4dCwgaW5oZXJpdCk7CiAgICBib3gtc2hhZG93 OiB2YXIoLS1td2FyLXNoYWRvdywgbm9uZSk7CiAgICBhbmltYXRpb246IHZhcigtLW13YXItYW5p bSwgbm9uZSk7Cn0KLmVyc2NoZWludW5nLXRhYi1jaGlwW2RhdGEtdm9yc2NoYXUta2V5PSJmZWll cnRhZ1dpY2h0aWciXSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZndpLWJnLCB2YXIoLS1iZy1j YXJkKSk7CiAgICBjb2xvcjogdmFyKC0tbWZ3aS10ZXh0LCBpbmhlcml0KTsKICAgIGJveC1zaGFk b3c6IHZhcigtLW1md2ktc2hhZG93LCBub25lKTsKICAgIGFuaW1hdGlvbjogdmFyKC0tbWZ3aS1h bmltLCBub25lKTsKfQouZXJzY2hlaW51bmctdGFiLWNoaXBbZGF0YS12b3JzY2hhdS1rZXk9ImZl cmllbiJdIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLW1mZXItc3BhbHRlLWJnLCAjRTBGMEU0KTsK ICAgIGNvbG9yOiB2YXIoLS1tZmVyLXRleHQsICMyNTYwMjkpOwogICAgYm94LXNoYWRvdzogdmFy KC0tbWZlci1zaGFkb3csIG5vbmUpOwogICAgYW5pbWF0aW9uOiB2YXIoLS1tZmVyLWFuaW0sIG5v bmUpOwp9Ci5lcnNjaGVpbnVuZy10YWItY2hpcFtkYXRhLXZvcnNjaGF1LWtleT0iaGV1dGVTcGFs dGUiXSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1taGUtYmcsIHZhcigtLWJnLWNhcmQpKTsKICAg IGNvbG9yOiB2YXIoLS1taGUtdGV4dCwgaW5oZXJpdCk7CiAgICBib3gtc2hhZG93OiB2YXIoLS1t aGUtc2hhZG93LCBub25lKTsKICAgIGFuaW1hdGlvbjogdmFyKC0tbWhlLWFuaW0sIG5vbmUpOwp9 Ci5lcnNjaGVpbnVuZy10YWItY2hpcFtkYXRhLXZvcnNjaGF1LWtleT0ic3luY0ZsYXNoIl0gewog ICAgYmFja2dyb3VuZDogdmFyKC0tZmFyYmUtZnJ1ZWgsICNCNzFDMUMpOwogICAgY29sb3I6ICNm ZmY7Cn0KCi5lcnNjaGVpbnVuZy10YWItbGFiZWwgewogICAgZGlzcGxheTogZmxleDsgZmxleC1k aXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxcHg7CiAgICBsaW5lLWhlaWdodDogMS4yOwp9Ci5lcnNj aGVpbnVuZy10YWItbGFiZWwtdG9wIHsKICAgIGZvbnQtc2l6ZTogMTEuNXB4OyBmb250LXdlaWdo dDogNjAwOyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKfQouZXJzY2hlaW51bmctdGFiLWxh YmVsLWJvdCB7CiAgICBmb250LXNpemU6IDEwLjVweDsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQp Owp9CgouZXJzY2hlaW51bmctZWRpdG9yIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQp OwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1y YWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7CiAgICBwYWRkaW5nOiAxNHB4IDE4cHg7Cn0KLmVyc2No ZWludW5nLWVkaXRvci1rb3BmIHsKICAgIG1hcmdpbi1ib3R0b206IDEycHg7IHBhZGRpbmctYm90 dG9tOiAxMHB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdo dCk7Cn0KLmVyc2NoZWludW5nLWVkaXRvci10aXRlbHplaWxlIHsKICAgIGRpc3BsYXk6IGZsZXg7 IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAg IGdhcDogMTJweDsKfQouZXJzY2hlaW51bmctZWRpdG9yLXRpdGVsIHsKICAgIG1hcmdpbjogMDsg Zm9udC1zaXplOiAxNnB4OyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKfQouZXJzY2hlaW51 bmctZWRpdG9yLXN1YiB7CiAgICBtYXJnaW46IDJweCAwIDA7IGZvbnQtc2l6ZTogdmFyKC0tZnMt c20pOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7Cn0KLmVyc2NoZWludW5nLWVkaXRvci1ib2R5 IHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgz LCBtaW5tYXgoMCwgMWZyKSk7CiAgICBnYXA6IDE2cHggMjJweDsKfQpAbWVkaWEgKG1heC13aWR0 aDogMTIwMHB4KSB7CiAgICAuZXJzY2hlaW51bmctZWRpdG9yLWJvZHkgeyBncmlkLXRlbXBsYXRl LWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7IH0KfQpAbWVkaWEgKG1heC13aWR0 aDogNzIwcHgpIHsKICAgIC5lcnNjaGVpbnVuZy1lZGl0b3ItYm9keSB7IGdyaWQtdGVtcGxhdGUt Y29sdW1uczogMWZyOyB9Cn0KLmVyc2NoZWludW5nLXNla3Rpb24geyBtaW4td2lkdGg6IDA7IH0K LmVyc2NoZWludW5nLXNla3Rpb24tdGl0ZWwgewogICAgbWFyZ2luOiAwIDAgOHB4OyBmb250LXNp emU6IDEwLjVweDsgZm9udC13ZWlnaHQ6IDcwMDsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNh c2U7IGxldHRlci1zcGFjaW5nOiAwLjZweDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsK ICAgIHBhZGRpbmctYm90dG9tOiA0cHg7IGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgdmFyKC0t Ym9yZGVyLWxpZ2h0KTsKfQouZXJzY2hlaW51bmctc2VrdGlvbi1ncmlkIHsKICAgIGRpc3BsYXk6 IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogOHB4Owp9Ci5lcnNjaGVpbnVuZy1m ZWxkIHsKICAgIGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogOTBweCAxZnI7 CiAgICBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgbWluLXdpZHRoOiAwOwp9Ci5lcnNj aGVpbnVuZy1mZWxkLWxhYmVsIHsKICAgIGZvbnQtc2l6ZTogMTEuNXB4OyBjb2xvcjogdmFyKC0t dGV4dC1tdXRlZCk7IGZvbnQtd2VpZ2h0OiA1MDA7Cn0KLmVyc2NoZWludW5nLWZlbGQtY29udHJv bCB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDZweDsKICAg IG1pbi1oZWlnaHQ6IDI2cHg7IG1pbi13aWR0aDogMDsKfQoKLyogLS0tLSBFaW5nYWJlLUtvbXBv bmVudGVuIC0tLS0gKi8KLmVyc2NoZWludW5nLWlucHV0IHsKICAgIHBhZGRpbmc6IDVweCA4cHg7 IGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9y ZGVyLWNvbG9yKTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIGNvbG9y OiB2YXIoLS10ZXh0LXByaW1hcnkpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNt KTsKfQouZXJzY2hlaW51bmctaW5wdXQ6Zm9jdXMgewogICAgb3V0bGluZTogMnB4IHNvbGlkIHZh cigtLWZhcmJlLWFremVudCwgIzRhOTBlMik7IG91dGxpbmUtb2Zmc2V0OiAxcHg7Cn0KCi8qIEZh cmJwaWNrZXIgbWl0IMOXLUJ1dHRvbiAqLwouZXJzY2hlaW51bmctZmFyYi13cmFwIHsKICAgIGRp c3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgIGJvcmRlcjogMXB4 IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1z bSk7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5lcnNjaGVpbnVuZy1mYXJiLXdyYXAubGVlciAu ZXJzY2hlaW51bmctZmFyYiB7CiAgICBvcGFjaXR5OiAwLjM7CiAgICBiYWNrZ3JvdW5kLWltYWdl OiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCB0cmFuc3BhcmVudCAwIDRweCwgcmdi YSgwLDAsMCwwLjE1KSA0cHggOHB4KTsKfQouZXJzY2hlaW51bmctZmFyYiB7CiAgICB3aWR0aDog NDRweDsgaGVpZ2h0OiAyOHB4OyBwYWRkaW5nOiAycHg7IGJvcmRlcjogbm9uZTsKICAgIGJhY2tn cm91bmQ6IHRyYW5zcGFyZW50OyBjdXJzb3I6IHBvaW50ZXI7Cn0KLmVyc2NoZWludW5nLWZhcmIt eCB7CiAgICB3aWR0aDogMjJweDsgaGVpZ2h0OiAyOHB4OyBsaW5lLWhlaWdodDogMjZweDsKICAg IHRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zaXplOiB2YXIoLS1mcy1sZyk7IGZvbnQtd2VpZ2h0 OiA2MDA7CiAgICBib3JkZXI6IG5vbmU7IGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tYm9y ZGVyLWNvbG9yKTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgY29sb3I6IHZh cigtLXRleHQtbXV0ZWQpOwogICAgY3Vyc29yOiBwb2ludGVyOyBwYWRkaW5nOiAwOwp9Ci5lcnNj aGVpbnVuZy1mYXJiLXg6aG92ZXIgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOyBj b2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKfQoKLyogU2xpZGVyIG1pdCBOdW1iZXItU3BpbmJv eCAqLwouZXJzY2hlaW51bmctc2xpZGVyLXdyYXAgewogICAgZGlzcGxheTogZmxleDsgYWxpZ24t aXRlbXM6IGNlbnRlcjsgZ2FwOiA2cHg7IGZsZXg6IDE7IG1pbi13aWR0aDogMDsKfQouZXJzY2hl aW51bmctaW5wdXQtcmFuZ2UgewogICAgZmxleDogMTsgbWluLXdpZHRoOiA2MHB4OwogICAgcGFk ZGluZzogMDsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGJvcmRlcjogbm9uZTsKICAgIGFjY2Vu dC1jb2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50LCAjNGE5MGUyKTsKfQouZXJzY2hlaW51bmctaW5w dXQtbnVtIHsKICAgIHdpZHRoOiA1NnB4OyB0ZXh0LWFsaWduOiByaWdodDsKfQouZXJzY2hlaW51 bmctaW5wdXQtbnVtOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHsgb3BhY2l0eTogMTsgfQou ZXJzY2hlaW51bmctZWluaGVpdCB7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgY29sb3I6 IHZhcigtLXRleHQtbXV0ZWQpOyBtaW4td2lkdGg6IDE4cHg7Cn0KCi8qIFRvZ2dsZS1Td2l0Y2gg KHN0YXR0IENoZWNrYm94KSAqLwouZXJzY2hlaW51bmctdG9nZ2xlIHsKICAgIGRpc3BsYXk6IGlu bGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7IGN1cnNvcjogcG9pbnRl cjsKICAgIHVzZXItc2VsZWN0OiBub25lOwp9Ci5lcnNjaGVpbnVuZy10b2dnbGUgaW5wdXQgeyBk aXNwbGF5OiBub25lOyB9Ci5lcnNjaGVpbnVuZy10b2dnbGUtcmFpbCB7CiAgICB3aWR0aDogMzZw eDsgaGVpZ2h0OiAyMHB4OyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpOwogICAgYmFj a2dyb3VuZDogdmFyKC0tYm9yZGVyLWNvbG9yKTsgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdHJh bnNpdGlvbjogYmFja2dyb3VuZCAwLjE1czsKfQouZXJzY2hlaW51bmctdG9nZ2xlLXJhaWw6OmFm dGVyIHsKICAgIGNvbnRlbnQ6ICcnOyBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDJweDsg bGVmdDogMnB4OyB3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OwogICAgYm9yZGVyLXJhZGl1czog NTAlOyBiYWNrZ3JvdW5kOiAjZmZmOwogICAgdHJhbnNpdGlvbjogbGVmdCAwLjE1czsKICAgIGJv eC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMyk7Cn0KLmVyc2NoZWludW5nLXRvZ2ds ZSBpbnB1dDpjaGVja2VkICsgLmVyc2NoZWludW5nLXRvZ2dsZS1yYWlsIHsKICAgIGJhY2tncm91 bmQ6IHZhcigtLWZhcmJlLWVyZm9sZywgIzI3ODk2RCk7Cn0KLmVyc2NoZWludW5nLXRvZ2dsZSBp bnB1dDpjaGVja2VkICsgLmVyc2NoZWludW5nLXRvZ2dsZS1yYWlsOjphZnRlciB7CiAgICBsZWZ0 OiAxOHB4Owp9Ci5lcnNjaGVpbnVuZy10b2dnbGUtbGFiZWwgewogICAgZm9udC1zaXplOiB2YXIo LS1mcy1iYXNlKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwp9CgovKiAtLS0tIFN0aWNreSBG b290ZXIgLS0tLSAqLwouZXJzY2hlaW51bmctZm9vdGVyIHsKICAgIHBvc2l0aW9uOiBzdGlja3k7 IGJvdHRvbTogMDsgei1pbmRleDogNTsKICAgIG1hcmdpbjogMTBweCAtMjBweCAtMjBweDsgIC8q IGluIGRlbiBhZG1pbi10YWItUGFkZGluZy1CZXJlaWNoIHZlcmxhZW5nZXJuICovCiAgICBwYWRk aW5nOiA4cHggMjBweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwogICAgYm9yZGVy LXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBkaXNwbGF5OiBncmlkOyBn cmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyIGF1dG87CiAgICBnYXA6IDE0cHg7IGFsaWdu LWl0ZW1zOiBjZW50ZXI7Cn0KLmVyc2NoZWludW5nLWZvb3Rlci1pbmZvIHsKICAgIGZvbnQtc2l6 ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICB0ZXh0LWFsaWdu OiBjZW50ZXI7Cn0KCgoKLyogPT09PT0gTWVpbiBTY2hpY2h0LVRlYW0g4oCUIDE0LVRhZ2UtTW9k YWwgKHNjaGljaHR0ZWFtLmpzKSA9PT09PSAqLwouc3Qta29wZmluZm8gewogICAgZGlzcGxheTog ZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZmxleC13cmFwOiB3cmFwOyBnYXA6IDhweCAxNHB4 OwogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKfQouc3QtYmFkZ2UgewogICAgZGlzcGxheTogaW5s aW5lLWJsb2NrOyBwYWRkaW5nOiAzcHggMTJweDsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVz LXNtKTsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7IGZvbnQtd2VpZ2h0OiA3MDA7IGNv bG9yOiAjZmZmOyBsZXR0ZXItc3BhY2luZzogMC4zcHg7Cn0KLnN0LWJhZGdlLUYgeyBiYWNrZ3Jv dW5kOiAjQzc3ODAwOyB9ICAgLyogRnLDvGhkaWVuc3QgKi8KLnN0LWJhZGdlLVMgeyBiYWNrZ3Jv dW5kOiAjMTU2NUMwOyB9ICAgLyogU3DDpHRkaWVuc3QgKi8KLnN0LWJhZGdlLU4geyBiYWNrZ3Jv dW5kOiAjM0YzRDhBOyB9ICAgLyogTmFjaHRkaWVuc3QgKi8KLnN0LXplaXRyYXVtIHsgZm9udC1z aXplOiB2YXIoLS1mcy1tZCk7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBmb250LXdlaWdo dDogNjAwOyB9Ci5zdC1oaW53ZWlzICB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBjb2xvcjog dmFyKC0tdGV4dC1tdXRlZCk7IH0KCi5zdC1zY3JvbGwgeyBtYXgtaGVpZ2h0OiA2MnZoOyBvdmVy ZmxvdzogYXV0bzsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgYm9yZGVy LXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsgfQouc3QtdGFiZWxsZSB7IGJvcmRlci1jb2xsYXBz ZTogc2VwYXJhdGU7IGJvcmRlci1zcGFjaW5nOiAwOyBmb250LXNpemU6IHZhcigtLWZzLWJhc2Up OyB3aWR0aDogbWF4LWNvbnRlbnQ7IG1pbi13aWR0aDogMTAwJTsgfQouc3QtdGFiZWxsZSB0aCwg LnN0LXRhYmVsbGUgdGQgeyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGln aHQpOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgfQoKLyog S29wZnplaWxlIHN0aWNreSBvYmVuICovCi5zdC10YWJlbGxlIHRoZWFkIHRoIHsgcG9zaXRpb246 IHN0aWNreTsgdG9wOiAwOyB6LWluZGV4OiAyOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy10b29sYmFy KTsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IHBhZGRpbmc6IDRweCAycHg7IH0KLnN0LXRo LXRhZyB7IG1pbi13aWR0aDogMzhweDsgdGV4dC1hbGlnbjogY2VudGVyOyB9Ci5zdC10aC1kYXR1 bSB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBmb250LXdlaWdodDogNzAwOyB9Ci5zdC10aC13 dGFnICB7IGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7 IH0KCi8qIE5hbWVuc3NwYWx0ZSBzdGlja3kgbGlua3MgKGF1Y2ggaW0gS29wZiAtPiB6LWluZGV4 IDMpICovCi5zdC10aC1uYW1lIHsgcG9zaXRpb246IHN0aWNreTsgbGVmdDogMDsgei1pbmRleDog MzsgdGV4dC1hbGlnbjogbGVmdDsgbWluLXdpZHRoOiAxNzBweDsgcGFkZGluZy1sZWZ0OiA4cHg7 IH0KLnN0LXRkLW5hbWUgeyBwb3NpdGlvbjogc3RpY2t5OyBsZWZ0OiAwOyB6LWluZGV4OiAxOyBi YWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsgbWluLXdpZHRoOiAxNzBweDsgcGFkZGluZzogMnB4 IDhweDsgfQouc3QtcGVyc29uIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsg Z2FwOiA3cHg7IH0KLnN0LXBlcnNvbi1uYW1lIHsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZh cigtLXRleHQtaGVhZGluZyk7IGxpbmUtaGVpZ2h0OiAxLjE7IH0KLnN0LXBlcnNvbi1tZXRhIHsg Zm9udC1zaXplOiB2YXIoLS1mcy14cyk7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgbGluZS1o ZWlnaHQ6IDEuMTsgfQoKLnN0LXRkLXRhZyB7IHRleHQtYWxpZ246IGNlbnRlcjsgcGFkZGluZzog M3B4IDJweDsgbWluLXdpZHRoOiAzOHB4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0t dGV4dC1wcmltYXJ5KTsgfQouc3Qtd2UgeyBiYWNrZ3JvdW5kOiAjRURGMkY4OyB9CltkYXRhLXRo ZW1lPSJuaWdodCJdIC5zdC13ZSB7IGJhY2tncm91bmQ6ICMxRjJBMzg7IH0KCi8qIEVpZ2VuZSBa ZWlsZSBoZXJ2b3JoZWJlbiAqLwouc3QtemVpbGUtaWNoIC5zdC10ZC1uYW1lIHsgYm94LXNoYWRv dzogaW5zZXQgM3B4IDAgMCB2YXIoLS1iZy1wcmltYXJ5KTsgfQouc3QtemVpbGUtaWNoIC5zdC10 ZC1uYW1lLCAuc3QtemVpbGUtaWNoIC5zdC10ZC10YWc6bm90KFtzdHlsZV0pIHsgYmFja2dyb3Vu ZDogdmFyKC0tYmctaG92ZXIpOyB9Cg== ### FILE: sync-check.html | 4249 PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImRlIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9IlVU Ri04Ij4KPHRpdGxlPlZJMyBTeW5jLUNoZWNrPC90aXRsZT4KPHN0eWxlPgogIGJvZHkgeyBmb250 LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgU2Vnb2UgVUksIFJvYm90bywgc2Fucy1zZXJpZjsgbWFy Z2luOiAyNHB4OyBiYWNrZ3JvdW5kOiNmNWY1Zjc7IGNvbG9yOiMyMjI7IH0KICBoMSB7IG1hcmdp bjogMCAwIDEycHg7IGZvbnQtc2l6ZTogMjJweDsgfQogIC5tZXRhIHsgZm9udC1zaXplOiAxM3B4 OyBjb2xvcjogIzY2NjsgbWFyZ2luLWJvdHRvbTogMTZweDsgfQogIC5rYXJ0ZSB7IGJhY2tncm91 bmQ6I2ZmZjsgYm9yZGVyLXJhZGl1czo4cHg7IHBhZGRpbmc6MTZweDsgbWFyZ2luLWJvdHRvbTox NnB4OyBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLDAsMCwwLjA4KTsgfQogIC56dXNhbW1l bmZhc3N1bmcgeyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KICAuenVzYW1t ZW5mYXNzdW5nLm9rICAgIHsgY29sb3I6ICMxZjdhMWY7IH0KICAuenVzYW1tZW5mYXNzdW5nLndh cm4gIHsgY29sb3I6ICNiMDYwMDA7IH0KICAuenVzYW1tZW5mYXNzdW5nLmZlaCAgIHsgY29sb3I6 ICNiMDIwMjA7IH0KICB0YWJsZSB7IHdpZHRoOiAxMDAlOyBib3JkZXItY29sbGFwc2U6IGNvbGxh cHNlOyBmb250LXNpemU6IDEzcHg7IH0KICB0aCwgdGQgeyB0ZXh0LWFsaWduOiBsZWZ0OyBwYWRk aW5nOiA2cHggMTBweDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWU7IH0KICB0aCB7IGJh Y2tncm91bmQ6ICNmYWZhZmE7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KICB0ci5vayAgICAgIHRkLnN0 YXR1cyB7IGNvbG9yOiAjMWY3YTFmOyBmb250LXdlaWdodDogNjAwOyB9CiAgdHIuZmVoICAgICB0 ZC5zdGF0dXMgeyBjb2xvcjogI2IwMjAyMDsgZm9udC13ZWlnaHQ6IDYwMDsgfQogIHRyLndhcm4g ICAgdGQuc3RhdHVzIHsgY29sb3I6ICNiMDYwMDA7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KICB0ci5z a2lwICAgIHRkLnN0YXR1cyB7IGNvbG9yOiAjODg4OyB9CiAgdGQucGZhZCAgIHsgZm9udC1mYW1p bHk6IHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBDb25zb2xhcywgbW9ub3Nw YWNlOyB9CiAgdGQuZGV0YWlsIHsgY29sb3I6ICM2NjY7IGZvbnQtc2l6ZTogMTJweDsgfQogIGRl dGFpbHMgc3VtbWFyeSB7IGN1cnNvcjogcG9pbnRlcjsgcGFkZGluZzogNHB4IDA7IH0KICAubmV1 dHJhbCB7IGNvbG9yOiAjNjY2OyB9CiAgLmxhdWZlbiAgeyBjb2xvcjogIzIwNjBjMDsgfQogIGJ1 dHRvbiB7IHBhZGRpbmc6IDhweCAxNHB4OyBmb250LXNpemU6IDE0cHg7IGJvcmRlci1yYWRpdXM6 IDZweDsgYm9yZGVyOiAxcHggc29saWQgIzIwNjBjMDsKICAgICAgICAgICBiYWNrZ3JvdW5kOiAj MjA2MGMwOyBjb2xvcjojZmZmOyBjdXJzb3I6IHBvaW50ZXI7IH0KICBidXR0b246aG92ZXIgeyBi YWNrZ3JvdW5kOiMxODUwYTA7IH0KICBidXR0b246ZGlzYWJsZWQgeyBiYWNrZ3JvdW5kOiM4ODg7 IGJvcmRlci1jb2xvcjojODg4OyBjdXJzb3I6IG5vdC1hbGxvd2VkOyB9Cjwvc3R5bGU+CjwvaGVh ZD4KPGJvZHk+CjxoMT5WSTMgU3luYy1DaGVjazwvaDE+CjxkaXYgY2xhc3M9Im1ldGEiPkRpYWdu b3N0aXppZXJ0LCA8Yj53YXJ1bSBkaWUgU2VpdGUgbmljaHQgc3RhcnRldDwvYj4gKE1vZHVsLUxh ZGV0ZXN0LCBzaWVoZSBLYXJ0ZSB1bnRlbikgdW5kIHByw7xmdCwgb2IgYWxsZSBEYXRlaWVuIGRl cyBsYXVmZW5kZW4gU2VydmVycyBrb3JyZWt0IGF1c2dlbGllZmVydCB3ZXJkZW4g4oCUIGdlZ2Vu IGRpZSBoYXJ0Y29kaWVydGUgU29sbC1MaXN0ZS4gTGllZ3QgdW50ZXIgPGNvZGU+VkkzL3N5bmMt Y2hlY2suaHRtbDwvY29kZT4gdW5kIHdpcmQgw7xiZXIgZGVuIG5vcm1hbGVuIFdlYnNlcnZlciBi ZXJlaXRnZXN0ZWxsdDogPGNvZGU+aHR0cDovL2xvY2FsaG9zdDo4MDgwL3N5bmMtY2hlY2suaHRt bDwvY29kZT4uPC9kaXY+Cgo8ZGl2IGNsYXNzPSJrYXJ0ZSI+CiAgPGJ1dHRvbiBpZD0iYnRuLXN0 YXJ0Ij5QcsO8ZnVuZyBzdGFydGVuPC9idXR0b24+CiAgPHNwYW4gaWQ9InN0YXR1cyIgY2xhc3M9 Im5ldXRyYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxMnB4Ij48L3NwYW4+CjwvZGl2PgoKPGRpdiBj bGFzcz0ia2FydGUiPgogIDxkaXYgaWQ9Inp1c2FtbWVuZmFzc3VuZyIgY2xhc3M9Inp1c2FtbWVu ZmFzc3VuZyBuZXV0cmFsIj5CZXJlaXQuPC9kaXY+CiAgPGRpdiBpZD0iaW5mbyIgY2xhc3M9Im1l dGEiIHN0eWxlPSJtYXJnaW4tdG9wOjhweCI+PC9kaXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0ia2Fy dGUiPgogIDxoMiBzdHlsZT0ibWFyZ2luOjAgMCA4cHg7Zm9udC1zaXplOjE2cHgiPvCfmoAgU3Rh cnQtRGlhZ25vc2Ug4oCUIHdhcnVtIHN0YXJ0ZXQgZGllIFNlaXRlIG5pY2h0PzwvaDI+CiAgPGRp diBjbGFzcz0ibWV0YSI+TMOkZHQgamVkZXMgRVMtTW9kdWwgZWluemVsbiBwZXIgPGNvZGU+aW1w b3J0KCk8L2NvZGU+LCBnZW5hdSB3aWUgZGVyIEJyb3dzZXIgYmVpbSDDlmZmbmVuIHZvbiA8Y29k ZT5pbmRleC5odG1sPC9jb2RlPi4gRWluIFN5bnRheC0gb2RlciBJbXBvcnQvRXhwb3J0LUZlaGxl ciBpbiBudXIgZWluZW0gTW9kdWwgbMOkc3N0IGRpZSBnYW56ZSBBcHAgd2Vpw58gYmxlaWJlbiDi gJQgZGllIGVyc3RlIDxiPkZFSExFUjwvYj4tWmVpbGUgbmVubnQgZGFzIE1vZHVsLCB1bnRlciDi gJ5tZWhyIiBzdGVoZW4gTWVsZHVuZyB1bmQgWmVpbGVubnVtbWVyLiA8Y29kZT5hcHAuanM8L2Nv ZGU+IHdpcmQgenVsZXR6dCBnZWxhZGVuOiBlaW4gZWNodGVyIFBhcnNlLS9MaW5rLUZlaGxlciBl cnNjaGVpbnQgYWxzIEZFSExFUiwgZWluIExhdWZ6ZWl0ZmVobGVyIGF1cyA8Y29kZT5pbml0KCk8 L2NvZGU+IGdlZ2VuIGRpZSBmcmVtZGUgRGlhZ25vc2UtU2VpdGUgaXN0IGVyd2FydGJhciB1bmQg bnVyIGFscyBJTkZPIG1hcmtpZXJ0LjwvZGl2PgogIDxkaXYgaWQ9InN0YXJ0LW1ldGEiIGNsYXNz PSJtZXRhIiBzdHlsZT0ibWFyZ2luLXRvcDo4cHgiPkJlcmVpdC48L2Rpdj4KICA8dGFibGUgaWQ9 InN0YXJ0LXRhYiIgc3R5bGU9Im1hcmdpbi10b3A6OHB4Ij4KICAgIDx0aGVhZD4KICAgICAgPHRy Pjx0aCBzdHlsZT0id2lkdGg6MzIlIj5Nb2R1bDwvdGg+PHRoIHN0eWxlPSJ3aWR0aDoxNCUiPlN0 YXR1czwvdGg+PHRoPkRldGFpbHM8L3RoPjwvdHI+CiAgICA8L3RoZWFkPgogICAgPHRib2R5IGlk PSJzdGFydC16ZWlsZW4iPjwvdGJvZHk+CiAgPC90YWJsZT4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJr YXJ0ZSI+CiAgPGgyIHN0eWxlPSJtYXJnaW46MCAwIDhweDtmb250LXNpemU6MTZweCI+SW5oYWx0 cy1DaGVjayAoSFRUUC1BdXNsaWVmZXJ1bmcpPC9oMj4KICA8dGFibGUgaWQ9InRhYiI+CiAgICA8 dGhlYWQ+CiAgICAgIDx0cj48dGggc3R5bGU9IndpZHRoOjMyJSI+RGF0ZWkgLyBQZmFkPC90aD48 dGggc3R5bGU9IndpZHRoOjE0JSI+U3RhdHVzPC90aD48dGg+RGV0YWlsczwvdGg+PC90cj4KICAg IDwvdGhlYWQ+CiAgICA8dGJvZHkgaWQ9InplaWxlbiI+PC90Ym9keT4KICA8L3RhYmxlPgo8L2Rp dj4KCjxkaXYgY2xhc3M9ImthcnRlIj4KICA8aDIgc3R5bGU9Im1hcmdpbjowIDAgOHB4O2ZvbnQt c2l6ZToxNnB4Ij5EYXRlaS1HcsO2w59lbi1WZXJnbGVpY2ggKFNvdXJjZSDihpQgQXNzZXQtQ2Fj aGUpPC9oMj4KICA8ZGl2IGNsYXNzPSJtZXRhIiBpZD0iZ3JvZXNzZS1tZXRhIj5XaXJkIGdlbGFk ZW7igKY8L2Rpdj4KICA8dGFibGUgaWQ9Imdyb2Vzc2UtdGFiIiBzdHlsZT0ibWFyZ2luLXRvcDo4 cHgiPgogICAgPHRoZWFkPgogICAgICA8dHI+CiAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo0MiUi PkRhdGVpIC8gUGZhZDwvdGg+CiAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoxNCU7dGV4dC1hbGln bjpyaWdodCI+U291cmNlPC90aD4KICAgICAgICA8dGggc3R5bGU9IndpZHRoOjE0JTt0ZXh0LWFs aWduOnJpZ2h0Ij5Bc3NldDwvdGg+CiAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoxMiU7dGV4dC1h bGlnbjpyaWdodCI+RGlmZjwvdGg+CiAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoxOCUiPlN0YXR1 czwvdGg+CiAgICAgIDwvdHI+CiAgICA8L3RoZWFkPgogICAgPHRib2R5IGlkPSJncm9lc3NlLXpl aWxlbiI+PC90Ym9keT4KICA8L3RhYmxlPgo8L2Rpdj4KCjxzY3JpcHQgc3JjPSJzeW5jLWNoZWNr LmpzIj48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==