<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE module [
  <!ELEMENT module (dtdversion,name,version,description*,help*,about*,requires*,file+)>
  <!ELEMENT dtdversion (#PCDATA)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT version (#PCDATA)>
  <!ELEMENT mincmsversion (#PCDATA)>
  <!ELEMENT description (#PCDATA)>
  <!ELEMENT help (#PCDATA)>
  <!ELEMENT about (#PCDATA)>
  <!ELEMENT requires (requiredname,requiredversion)>
  <!ELEMENT requiredname (#PCDATA)>
  <!ELEMENT requiredversion (#PCDATA)>
  <!ELEMENT file (filename,isdir,data)>
  <!ELEMENT filename (#PCDATA)>
  <!ELEMENT isdir (#PCDATA)>
  <!ELEMENT data (#PCDATA)>
]>
<module>
	<dtdversion>1.3</dtdversion>
	<name>MAS_NotificationCenter</name>
	<version>1.0.6</version>
    <mincmsversion>2.2.10</mincmsversion>
	<help><![CDATA[PHN0eWxlPgoubWFzLWRvYy10YWJzIHsgbWFyZ2luOiAyMHB4IDAgMDsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNkZGQ7IH0KLm1hcy1kb2MtdGFicyBhIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwYWRkaW5nOiAxMHB4IDIwcHg7IG1hcmdpbi1yaWdodDogNXB4OyBiYWNrZ3JvdW5kOiAjZjVmNWY1OyBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBib3JkZXItYm90dG9tOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAjMzMzOyB9Ci5tYXMtZG9jLXRhYnMgYS5hY3RpdmUgeyBiYWNrZ3JvdW5kOiAjZmZmOyBib3JkZXItYm90dG9tOiAycHggc29saWQgI2ZmZjsgbWFyZ2luLWJvdHRvbTogLTJweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0KLm1hcy1kb2MtdGFicyBhOmhvdmVyIHsgYmFja2dyb3VuZDogI2U5ZTllOTsgfQoubWFzLWRvYy1jb250ZW50IHsgcGFkZGluZzogMjBweDsgYm9yZGVyOiAxcHggc29saWQgI2RkZDsgYm9yZGVyLXRvcDogbm9uZTsgYmFja2dyb3VuZDogI2ZmZjsgfQoubWFzLWRvYy1zZWN0aW9uIHsgZGlzcGxheTogbm9uZTsgfQoubWFzLWRvYy1zZWN0aW9uLmFjdGl2ZSB7IGRpc3BsYXk6IGJsb2NrOyB9Cjwvc3R5bGU+Cgo8ZGl2IGNsYXNzPSJtYXMtZG9jLXRhYnMgbWFzLWRvYy10YWJzLWhlbHAiPgogIDxhIGhyZWY9IiNNQVNfTm90aWZpY2F0aW9uQ2VudGVyLWhlbHAtZ2VuZXJhbCIgY2xhc3M9Im1hcy1kb2MtdGFiIGFjdGl2ZSIgZGF0YS10YWI9Ik1BU19Ob3RpZmljYXRpb25DZW50ZXItaGVscC1nZW5lcmFsIj5PdmVydmlldzwvYT4KICA8YSBocmVmPSIjTUFTX05vdGlmaWNhdGlvbkNlbnRlci1oZWxwLWNoYW5uZWxzIiBjbGFzcz0ibWFzLWRvYy10YWIiIGRhdGEtdGFiPSJNQVNfTm90aWZpY2F0aW9uQ2VudGVyLWhlbHAtY2hhbm5lbHMiPkNoYW5uZWxzPC9hPgogIDxhIGhyZWY9IiNNQVNfTm90aWZpY2F0aW9uQ2VudGVyLWhlbHAtaW50ZXJvcCIgY2xhc3M9Im1hcy1kb2MtdGFiIiBkYXRhLXRhYj0iTUFTX05vdGlmaWNhdGlvbkNlbnRlci1oZWxwLWludGVyb3AiPkludGVyb3A8L2E+CjwvZGl2PgoKPGRpdiBjbGFzcz0ibWFzLWRvYy1jb250ZW50IG1hcy1kb2MtY29udGVudC1oZWxwIj4KICA8ZGl2IGlkPSJNQVNfTm90aWZpY2F0aW9uQ2VudGVyLWhlbHAtZ2VuZXJhbCIgY2xhc3M9Im1hcy1kb2Mtc2VjdGlvbiBhY3RpdmUiPgogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8aDM+V2hhdCB0aGlzIG1vZHVsZSBkb2VzPC9oMz4KICA8cD5NQVMgTm90aWZpY2F0aW9uIENlbnRlciBzdG9yZXMgb3BlcmF0b3ItZmFjaW5nIGFsZXJ0cyBpbiB0aGUgZGF0YWJhc2UgYW5kIG9wdGlvbmFsbHkgZGVsaXZlcnMgY29waWVzIGJ5IGVtYWlsLCBEaXNjb3JkIHdlYmhvb2ssIG9yIFdlYiBQdXNoLjwvcD4KICA8dWw+CiAgICA8bGk+U3Vic2NyaWJlIHRvIHNlbGVjdGVkIENNUyBjb3JlIGV2ZW50cyAobmV3IHVzZXJzLCBtb2R1bGUgaW5zdGFsbHMsIG9wdGlvbmFsIGxvZ2luIGZhaWx1cmVzKS48L2xpPgogICAgPGxpPlJ1biBwZXJpb2RpYyBjaGVja3MgZnJvbSBjcm9uIHVzaW5nIHRoZSBzaWduZWQgY3JvbiBVUkwuPC9saT4KICAgIDxsaT5JbnRlZ3JhdGUgY3VzdG9tIG1vZHVsZXMgdXNpbmcgdGhlIGRvY3VtZW50ZWQgaG9vayBuYW1lLjwvbGk+CiAgPC91bD4KPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBpZD0iTUFTX05vdGlmaWNhdGlvbkNlbnRlci1oZWxwLWNoYW5uZWxzIiBjbGFzcz0ibWFzLWRvYy1zZWN0aW9uIj4KICAgIDxoMz5DaGFubmVsczwvaDM+CjxwIGNsYXNzPSJwYWdldGV4dCI+RW1haWwgdXNlcyBDTVMgTWFkZSBTaW1wbGUgbWFpbCBzZXR0aW5ncyAoY21zX21haWxlcikuIERpc2NvcmQgZXhwZWN0cyBhbiBJbmNvbWluZyBXZWJob29rIFVSTCB1bmRlciBkaXNjb3JkLmNvbS4gV2ViIFB1c2ggcmVxdWlyZXMgSFRUUFMsIEdNUC9Db21wb3NlciBkZXBlbmRlbmNpZXMsIFZBUElEIGtleXMsIGFuZCBtYXNfbmNfc3cuanMgaW4gdGhlIHNpdGUgcm9vdCAoUHVibGlzaCBidXR0b24pLiBPcHRpb25hbDogbWVyZ2Ugd2l0aCBDR1NpbXBsZVBXQSBpZiB5b3UgZW5hYmxlIHRoYXQgaW50ZWdyYXRpb24uPC9wPgogIDwvZGl2PgogIDxkaXYgaWQ9Ik1BU19Ob3RpZmljYXRpb25DZW50ZXItaGVscC1pbnRlcm9wIiBjbGFzcz0ibWFzLWRvYy1zZWN0aW9uIj4KICAgIDxoMz5JbnRlcm9wPC9oMz4KPHAgY2xhc3M9InBhZ2V0ZXh0Ij5DYWxsIENNU01TIEhvb2tNYW5hZ2VyOjpkb19ob29rKCYjMDM5O01BU19Ob3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmeSYjMDM5OywgYXJyYXkoJHBheWxvYWQpKSB3aGVyZSAkcGF5bG9hZCBpbmNsdWRlcyBzZXZlcml0eSwgY2F0ZWdvcnksIHRpdGxlLCBib2R5LCBvcHRpb25hbCBtZXRhLiBUaGlzIHN0b3JlcyB0aGUgYWxlcnQgYW5kIHJ1bnMgb3V0Ym91bmQgY2hhbm5lbHMgYWNjb3JkaW5nIHRvIFNldHRpbmdzLjwvcD4KPHAgY2xhc3M9InBhZ2V0ZXh0Ij5NQVNfTm90aWZpY2F0aW9uQ2VudGVyIGRvZXMgbm90IHJlcXVpcmUgQ0dTaW1wbGVQV0EuIEJ5IGRlZmF1bHQgaXQgb3V0cHV0cyBpdHMgb3duIG1hbmlmZXN0IGxpbmssIHRoZW1lLWNvbG9yLCBhbmQgYWRtaW4gc2NyaXB0cywgYW5kIHlvdSBwdWJsaXNoIG1hc19uY19zdy5qcyB0byB0aGUgc2l0ZSByb290LiBJZiB5b3UgZW5hYmxlIHRoZSBvcHRpb25hbCBDR1NpbXBsZVBXQSBtZXJnZSBjaGVja2JveCBhbmQgQ0dTaW1wbGVQV0EgaXMgaW5zdGFsbGVkLCBNQVMgcmVnaXN0ZXJzIGEgU2VydmljZVdvcmtlckFkZG9uIGFuZCBtYXkgY2hhaW4gQ0dTaW1wbGVQV0EgYWRtaW4gaGVhZGVycyAoc2FtZSBwYXR0ZXJuIGFzIENHV2ViUHVzaCkuIENvcHlpbmcgdGhlIGZ1bGwgQ0dTaW1wbGVQV0EgcHJvZHVjdCBpbnRvIHRoaXMgbW9kdWxlIGlzIG5vdCBpbmNsdWRlZCAobGljZW5zZSBhbmQgbWFpbnRlbmFuY2UgZGlmZmVyKS4gV2hlbiBDR1dlYlB1c2ggaXMgaW5zdGFsbGVkLCB5b3UgY2FuIGVuYWJsZSB0aGUgb3B0aW9uYWwgYnJpZGdlIHRoYXQgY2FsbHMgQ0dXZWJQdXNoIGJyb2FkY2FzdF9tZXNzYWdlIChDR0V4dGVuc2lvbnMgbm90aWZpY2F0aW9uX21lc3NhZ2UpLiBBdm9pZCBkdXBsaWNhdGUgbm90aWZpY2F0aW9ucyBpZiBvbmUgZGV2aWNlIHVzZXMgYm90aCBzdWJzY3JpcHRpb24gc3RvcmVzLjwvcD4KICA8L2Rpdj4KPC9kaXY+Cgo8c2NyaXB0PgooZnVuY3Rpb24oKSB7CiAgdmFyIHJvb3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWFzLWRvYy10YWJzLWhlbHAnKTsKICBpZiAoIXJvb3QgfHwgIXJvb3QucGFyZW50Tm9kZSkgeyByZXR1cm47IH0KICB2YXIgY29udGFpbmVyID0gcm9vdC5wYXJlbnROb2RlOwogIHZhciB0YWJzID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5tYXMtZG9jLXRhYicpOwogIHZhciBzZWN0aW9ucyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCcubWFzLWRvYy1zZWN0aW9uJyk7CiAgdGFicy5mb3JFYWNoKGZ1bmN0aW9uKHRhYikgewogICAgdGFiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIHZhciB0YXJnZXQgPSB0aGlzLmdldEF0dHJpYnV0ZSgnZGF0YS10YWInKTsKICAgICAgdGFicy5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsgdC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsgfSk7CiAgICAgIHNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocykgeyBzLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOyB9KTsKICAgICAgdGhpcy5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgdmFyIHBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0KTsKICAgICAgaWYgKHBhbmVsKSB7IHBhbmVsLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOyB9CiAgICB9KTsKICB9KTsKfSkoKTsKPC9zY3JpcHQ+Cg==]]></help>
	<about><![CDATA[PHN0eWxlPgoubWFzLWRvYy10YWJzIHsgbWFyZ2luOiAyMHB4IDAgMDsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNkZGQ7IH0KLm1hcy1kb2MtdGFicyBhIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwYWRkaW5nOiAxMHB4IDIwcHg7IG1hcmdpbi1yaWdodDogNXB4OyBiYWNrZ3JvdW5kOiAjZjVmNWY1OyBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBib3JkZXItYm90dG9tOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAjMzMzOyB9Ci5tYXMtZG9jLXRhYnMgYS5hY3RpdmUgeyBiYWNrZ3JvdW5kOiAjZmZmOyBib3JkZXItYm90dG9tOiAycHggc29saWQgI2ZmZjsgbWFyZ2luLWJvdHRvbTogLTJweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0KLm1hcy1kb2MtdGFicyBhOmhvdmVyIHsgYmFja2dyb3VuZDogI2U5ZTllOTsgfQoubWFzLWRvYy1jb250ZW50IHsgcGFkZGluZzogMjBweDsgYm9yZGVyOiAxcHggc29saWQgI2RkZDsgYm9yZGVyLXRvcDogbm9uZTsgYmFja2dyb3VuZDogI2ZmZjsgfQoubWFzLWRvYy1zZWN0aW9uIHsgZGlzcGxheTogbm9uZTsgfQoubWFzLWRvYy1zZWN0aW9uLmFjdGl2ZSB7IGRpc3BsYXk6IGJsb2NrOyB9Cjwvc3R5bGU+Cgo8ZGl2IGNsYXNzPSJtYXMtZG9jLXRhYnMgbWFzLWRvYy10YWJzLWFib3V0Ij4KICA8YSBocmVmPSIjTUFTX05vdGlmaWNhdGlvbkNlbnRlci1hYm91dC1tb2R1bGUiIGNsYXNzPSJtYXMtZG9jLXRhYiBhY3RpdmUiIGRhdGEtdGFiPSJNQVNfTm90aWZpY2F0aW9uQ2VudGVyLWFib3V0LW1vZHVsZSI+LS0gTWlzc2luZyBMYW5ndWFnZXN0cmluZzogYWJvdXRfdGFiX21vZHVsZSAtLTwvYT4KICA8YSBocmVmPSIjTUFTX05vdGlmaWNhdGlvbkNlbnRlci1hYm91dC1jb21wYXQiIGNsYXNzPSJtYXMtZG9jLXRhYiIgZGF0YS10YWI9Ik1BU19Ob3RpZmljYXRpb25DZW50ZXItYWJvdXQtY29tcGF0Ij4tLSBNaXNzaW5nIExhbmd1YWdlc3RyaW5nOiBhYm91dF90YWJfY29tcGF0IC0tPC9hPgogIDxhIGhyZWY9IiNNQVNfTm90aWZpY2F0aW9uQ2VudGVyLWFib3V0LXN1bW1hcnkiIGNsYXNzPSJtYXMtZG9jLXRhYiIgZGF0YS10YWI9Ik1BU19Ob3RpZmljYXRpb25DZW50ZXItYWJvdXQtc3VtbWFyeSI+LS0gTWlzc2luZyBMYW5ndWFnZXN0cmluZzogYWJvdXRfdGFiX3N1bW1hcnkgLS08L2E+CiAgPGEgaHJlZj0iI01BU19Ob3RpZmljYXRpb25DZW50ZXItYWJvdXQtY2hhbmdlbG9nIiBjbGFzcz0ibWFzLWRvYy10YWIiIGRhdGEtdGFiPSJNQVNfTm90aWZpY2F0aW9uQ2VudGVyLWFib3V0LWNoYW5nZWxvZyI+LS0gTWlzc2luZyBMYW5ndWFnZXN0cmluZzogYWJvdXRfdGFiX2NoYW5nZWxvZyAtLTwvYT4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJtYXMtZG9jLWNvbnRlbnQgbWFzLWRvYy1jb250ZW50LWFib3V0Ij4KICA8ZGl2IGlkPSJNQVNfTm90aWZpY2F0aW9uQ2VudGVyLWFib3V0LW1vZHVsZSIgY2xhc3M9Im1hcy1kb2Mtc2VjdGlvbiBhY3RpdmUiPgogICAgPGgzPi0tIE1pc3NpbmcgTGFuZ3VhZ2VzdHJpbmc6IGFib3V0X3RhYl9tb2R1bGUgLS08L2gzPgoKPHA+PHN0cm9uZz5OYW1lPC9zdHJvbmc+IE1BUyBOb3RpZmljYXRpb24gQ2VudGVyPC9wPgo8cD48c3Ryb25nPlZlcnNpb248L3N0cm9uZz4gMS4wLjY8L3A+CjxwPjxzdHJvbmc+QXV0aG9yPC9zdHJvbmc+IG1hc3RlcjMzOTU8L3A+CjxwPjxzdHJvbmc+RW1haWw8L3N0cm9uZz4gPGEgaHJlZj0ibWFpbHRvOmluZm8lNDBuZXdzdGFyZ2V0ZWQuY29tIj5pbmZvQG5ld3N0YXJnZXRlZC5jb208L2E+PC9wPgo8cD48c3Ryb25nPkxpY2Vuc2U8L3N0cm9uZz4gTUlUPC9wPgogIDwvZGl2PgogIDxkaXYgaWQ9Ik1BU19Ob3RpZmljYXRpb25DZW50ZXItYWJvdXQtY29tcGF0IiBjbGFzcz0ibWFzLWRvYy1zZWN0aW9uIj4KICAgIDxoMz4tLSBNaXNzaW5nIExhbmd1YWdlc3RyaW5nOiBhYm91dF90YWJfY29tcGF0IC0tPC9oMz4KCjxwPjxzdHJvbmc+TWluaW11bSBDTVMgTWFkZSBTaW1wbGU8L3N0cm9uZz4gMi4yLjEwPC9wPgo8cD48c3Ryb25nPk1pbmltdW0gUEhQPC9zdHJvbmc+IDcuNC4wPC9wPgoKPGg0Pi0tIE1pc3NpbmcgTGFuZ3VhZ2VzdHJpbmc6IGFib3V0X2RlcGVuZGVuY2llc19oZWFkaW5nIC0tPC9oND4KICA8cD4tLSBNaXNzaW5nIExhbmd1YWdlc3RyaW5nOiBhYm91dF9kZXBlbmRlbmNpZXNfbm9uZSAtLTwvcD4KICA8L2Rpdj4KICA8ZGl2IGlkPSJNQVNfTm90aWZpY2F0aW9uQ2VudGVyLWFib3V0LXN1bW1hcnkiIGNsYXNzPSJtYXMtZG9jLXNlY3Rpb24iPgogICAgPGgzPi0tIE1pc3NpbmcgTGFuZ3VhZ2VzdHJpbmc6IGFib3V0X3RhYl9zdW1tYXJ5IC0tPC9oMz4KPHA+SW50ZXJuYWwgbm90aWZpY2F0aW9uIGh1YiBmb3IgQ01TIE1hZGUgU2ltcGxlOiBjb3JlIGV2ZW50IGFsZXJ0cywgZW1haWwsIERpc2NvcmQgd2ViaG9va3MsIFdlYiBQdXNoIChWQVBJRCkgd2l0aCBidWlsdC1pbiBtYW5pZmVzdCBhbmQgc2VydmljZSB3b3JrZXIgaGVscGVycywgaGVhbHRoIGNoZWNrcywgY3JvbiBVUkwsIGFuZCBpbnRlcm9wZXJhYmlsaXR5IGhvb2tzLiBDR1NpbXBsZVBXQSBpcyBvcHRpb25hbC4gTUlUIGxpY2Vuc2UuPC9wPgogIDwvZGl2PgogIDxkaXYgaWQ9Ik1BU19Ob3RpZmljYXRpb25DZW50ZXItYWJvdXQtY2hhbmdlbG9nIiBjbGFzcz0ibWFzLWRvYy1zZWN0aW9uIj4KICAgIDxoMz4tLSBNaXNzaW5nIExhbmd1YWdlc3RyaW5nOiBhYm91dF90YWJfY2hhbmdlbG9nIC0tPC9oMz4KCiAgPHA+LS0gTWlzc2luZyBMYW5ndWFnZXN0cmluZzogY2hhbmdlbG9nIC0tPC9wPgogIDwvZGl2Pgo8L2Rpdj4KCjxzY3JpcHQ+CihmdW5jdGlvbigpIHsKICB2YXIgcm9vdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYXMtZG9jLXRhYnMtYWJvdXQnKTsKICBpZiAoIXJvb3QgfHwgIXJvb3QucGFyZW50Tm9kZSkgeyByZXR1cm47IH0KICB2YXIgY29udGFpbmVyID0gcm9vdC5wYXJlbnROb2RlOwogIHZhciB0YWJzID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5tYXMtZG9jLXRhYicpOwogIHZhciBzZWN0aW9ucyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCcubWFzLWRvYy1zZWN0aW9uJyk7CiAgdGFicy5mb3JFYWNoKGZ1bmN0aW9uKHRhYikgewogICAgdGFiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIHZhciB0YXJnZXQgPSB0aGlzLmdldEF0dHJpYnV0ZSgnZGF0YS10YWInKTsKICAgICAgdGFicy5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsgdC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsgfSk7CiAgICAgIHNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocykgeyBzLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOyB9KTsKICAgICAgdGhpcy5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgdmFyIHBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0KTsKICAgICAgaWYgKHBhbmVsKSB7IHBhbmVsLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOyB9CiAgICB9KTsKICB9KTsKfSkoKTsKPC9zY3JpcHQ+Cg==]]></about>
	<description><![CDATA[Internal notification hub for CMS Made Simple: core event alerts, email, Discord webhooks, Web Push (VAPID) with built-in manifest and service worker helpers, health checks, cron URL, and interoperability hooks. CGSimplePWA is optional. MIT license.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.distignore</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KiovLmh0YWNjZXNzCi5odGFjY2Vzcwp2ZW5kb3IvCg==]]></data>
	</file>
	<file>
	  <filename>/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBCbG9jayBzZW5zaXRpdmUgcGF0aHM7IGFsbG93IGltYWdlcywgSlMsIGFuZCB0ZW1wbGF0ZXMgZm9yIG5vcm1hbCBDTVNNUyBkZWxpdmVyeS4KPElmTW9kdWxlIG1vZF9yZXdyaXRlLmM+CiAgUmV3cml0ZUVuZ2luZSBPbgogIFJld3JpdGVSdWxlIF52ZW5kb3IoL3wkKSAtIFtGLExdCjwvSWZNb2R1bGU+Cgo8RmlsZXNNYXRjaCAiXihjb21wb3NlclwuKGpzb258bG9jaykpJCI+CiAgPElmTW9kdWxlIG1vZF9hdXRoel9jb3JlLmM+CiAgICBSZXF1aXJlIGFsbCBkZW5pZWQKICA8L0lmTW9kdWxlPgogIDxJZk1vZHVsZSAhbW9kX2F1dGh6X2NvcmUuYz4KICAgIE9yZGVyIGRlbnksYWxsb3cKICAgIERlbnkgZnJvbSBhbGwKICA8L0lmTW9kdWxlPgo8L0ZpbGVzTWF0Y2g+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.ajax_push_subscribe.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSBleGl0OwoKaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLTgnKTsKCmlmICghJHRoaXMtPlZpc2libGVUb0FkbWluVXNlcigpKSB7CiAgICBlY2hvIGpzb25fZW5jb2RlKGFycmF5KCdvaycgPT4gZmFsc2UsICdlcnJvcicgPT4gJ2RlbmllZCcpLCBKU09OX1VORVNDQVBFRF9TTEFTSEVTIHwgSlNPTl9VTkVTQ0FQRURfVU5JQ09ERSk7CiAgICBleGl0Owp9CgokdWlkID0gZ2V0X3VzZXJpZCgpOwppZiAoJHVpZCA8IDEpIHsKICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoJ29rJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAnYXV0aCcpLCBKU09OX1VORVNDQVBFRF9TTEFTSEVTIHwgSlNPTl9VTkVTQ0FQRURfVU5JQ09ERSk7CiAgICBleGl0Owp9CgokcmF3ID0gKHN0cmluZykgZmlsZV9nZXRfY29udGVudHMoJ3BocDovL2lucHV0Jyk7CiRkYXRhID0ganNvbl9kZWNvZGUoJHJhdywgdHJ1ZSk7CmlmICghaXNfYXJyYXkoJGRhdGEpIHx8IGVtcHR5KCRkYXRhWydlbmRwb2ludCddKSkgewogICAgZWNobyBqc29uX2VuY29kZShhcnJheSgnb2snID0+IGZhbHNlLCAnZXJyb3InID0+ICdwYXlsb2FkJyksIEpTT05fVU5FU0NBUEVEX1NMQVNIRVMgfCBKU09OX1VORVNDQVBFRF9VTklDT0RFKTsKICAgIGV4aXQ7Cn0KCiRlbmRwb2ludCA9IChzdHJpbmcpICRkYXRhWydlbmRwb2ludCddOwokaWQgPSBoYXNoKCdzaGEyNTYnLCAkZW5kcG9pbnQpOwoKTUFTX05DX1B1c2hSZXBvOjpzYXZlKCR0aGlzLCAkaWQsICRkYXRhLCAoaW50KSAkdWlkKTsKCmlmIChmdW5jdGlvbl9leGlzdHMoJ2F1ZGl0JykpIHsKICAgIGF1ZGl0KChpbnQpICR1aWQsICdNQVNfTm90aWZpY2F0aW9uQ2VudGVyJywgJ1B1c2ggc3Vic2NyaXB0aW9uIHNhdmVkJyk7Cn0KCmVjaG8ganNvbl9lbmNvZGUoYXJyYXkoJ29rJyA9PiB0cnVlKSwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUyB8IEpTT05fVU5FU0NBUEVEX1VOSUNPREUpOwpleGl0Owo=]]></data>
	</file>
	<file>
	  <filename>/action.cron_ping.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnL2xpYi9jbGFzcy5NYXNNb2R1bGVSZXF1ZXN0LnBocCc7CmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgZXhpdDsKCmhlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Jyk7CgokdG9rZW4gPSBNYXNNb2R1bGVSZXF1ZXN0OjpxdWVyeSgnbWFzX3Rva2VuJywgJycpOwokZXhwZWN0ZWQgPSAoc3RyaW5nKSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2Nyb25fdG9rZW4nLCAnJyk7CmlmICgkZXhwZWN0ZWQgPT09ICcnIHx8ICFoYXNoX2VxdWFscygkZXhwZWN0ZWQsICR0b2tlbikpIHsKICAgIGh0dHBfcmVzcG9uc2VfY29kZSg0MDMpOwogICAgZWNobyAnRm9yYmlkZGVuJzsKCiAgICBleGl0Owp9CgpNQVNfTkNfUm91dGVyOjpub3RpZnkoJHRoaXMsIGFycmF5KAogICAgJ3NldmVyaXR5JyA9PiAnaW5mbycsCiAgICAnY2F0ZWdvcnknID0+ICdjcm9uJywKICAgICdzb3VyY2UnID0+ICdjcm9uX3BpbmcnLAogICAgJ3RpdGxlJyA9PiAkdGhpcy0+TGFuZygnY3Jvbl9waW5nX3RpdGxlJyksCiAgICAnYm9keScgPT4gJHRoaXMtPkxhbmcoJ2Nyb25fcGluZ19ib2R5JyksCiAgICAnbWV0YScgPT4gYXJyYXkoJ3RpbWUnID0+IGdtZGF0ZSgnYycpKSwKKSk7CgppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19oZWFsdGhfb25fY3JvbicsICcxJykgIT09ICcwJykgewogICAgJGlzc3VlcyA9IE1BU19OQ19IZWFsdGg6OnJ1bigkdGhpcyk7CiAgICBmb3JlYWNoICgkaXNzdWVzIGFzICRrID0+ICRtc2cpIHsKICAgICAgICBNQVNfTkNfUm91dGVyOjpub3RpZnkoJHRoaXMsIGFycmF5KAogICAgICAgICAgICAnc2V2ZXJpdHknID0+ICd3YXJuaW5nJywKICAgICAgICAgICAgJ2NhdGVnb3J5JyA9PiAnaGVhbHRoJywKICAgICAgICAgICAgJ3NvdXJjZScgPT4gJ2hlYWx0aDonIC4gJGssCiAgICAgICAgICAgICd0aXRsZScgPT4gJHRoaXMtPkxhbmcoJ2hlYWx0aF9pc3N1ZV90aXRsZScpLAogICAgICAgICAgICAnYm9keScgPT4gKHN0cmluZykgJG1zZywKICAgICAgICAgICAgJ21ldGEnID0+IGFycmF5KCdrZXknID0+ICRrKSwKICAgICAgICApKTsKICAgIH0KfQoKZWNobyAnT0snOwpleGl0Owo=]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSBleGl0OwoKJF9fbWNfb3V0ID0gJzwhLS0gTUFTX05vdGlmaWNhdGlvbkNlbnRlciBwbGFjZWhvbGRlciAtLT4nOyBlY2hvICRfX21jX291dDsK]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSBleGl0OwppZiAoISR0aGlzLT5WaXNpYmxlVG9BZG1pblVzZXIoKSkgewppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBNQVNfTm90aWZpY2F0aW9uQ2VudGVyJykpIHJldHVybjsKICAgIHJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKfQoKcmVxdWlyZV9vbmNlIGRpcm5hbWUoX19GSUxFX18pIC4gJy9saWIvbWFzX2NvbW1vbl9sb2FkZXIucGhwJzsKbWFzX3JlcXVpcmVfbWFzX2FkbWluX3VpKCk7Ck1hc19BZG1pbl9VaTo6ZW5zdXJlSWNvbkdpZigkdGhpcyk7Ck1hc19BZG1pbl9VaTo6ZW5zdXJlQmFubmVyKCR0aGlzKTsKTWFzX0FkbWluX1VpOjplbnN1cmVGb3JnZUFzc2V0cygkdGhpcyk7Cgokc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CiRzbWFydHktPmFzc2lnbignbW9kJywgJHRoaXMpOwokc21hcnR5LT5hc3NpZ24oJ21hc19uY192ZXJzaW9uJywgJHRoaXMtPkdldFZlcnNpb24oKSk7Cgokc2hvd0RvbmF0aW9ucyA9ICR0aGlzLT5TaG93RG9uYXRpb25zVGFiKCk7CgokYWN0aXZlVGFiID0gaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSA/IChzdHJpbmcpICRwYXJhbXNbJ2FjdGl2ZV90YWInXSA6ICdzZXR0aW5ncyc7CiRhbGxvd2VkVGFicyA9IGFycmF5KCdzZXR0aW5ncycsICdub3RpZmljYXRpb25zJywgJ2hlbHAnLCAnYWJvdXQnLCAnY2hhbmdlbG9nJywgJ2RvbmF0aW9ucycpOwppZiAoIWluX2FycmF5KCRhY3RpdmVUYWIsICRhbGxvd2VkVGFicywgdHJ1ZSkpIHsKICAgICRhY3RpdmVUYWIgPSAnc2V0dGluZ3MnOwp9CmlmICgkYWN0aXZlVGFiID09PSAnZG9uYXRpb25zJyAmJiAhJHNob3dEb25hdGlvbnMpIHsKICAgICRhY3RpdmVUYWIgPSAnc2V0dGluZ3MnOwp9Cgokc21hcnR5LT5hc3NpZ24oJ3Nob3dfZG9uYXRpb25zX3RhYicsICRzaG93RG9uYXRpb25zID8gJzEnIDogJzAnKTsKJHNtYXJ0eS0+YXNzaWduKCdzaG93X2RvbmF0aW9uc190YWJfY2hlY2tlZCcsICRzaG93RG9uYXRpb25zID8gJzEnIDogJzAnKTsKJHNtYXJ0eS0+YXNzaWduKCdhY3RpdmVfdGFiJywgJGFjdGl2ZVRhYik7Cgokc21hcnR5LT5hc3NpZ24oJ2Zvcm1fc3RhcnQnLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ3NhdmVfc2V0dGluZ3MnLCAkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtX2VuZCcsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokc21hcnR5LT5hc3NpZ24oJ3NldHRpbmdzX2Zvcm1fc3RhcnQnLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ3NhdmVfc2V0dGluZ3MnLCAkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdzZXR0aW5nc19mb3JtX2VuZCcsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKJGFkbWluU2VjdGlvbkl0ZW1zID0gYXJyYXkoCiAgICBsYW5nKCdtYWluJykgPT4gJ21haW4nLAogICAgbGFuZygnY29udGVudCcpID0+ICdjb250ZW50JywKICAgIGxhbmcoJ2xheW91dCcpID0+ICdsYXlvdXQnLAogICAgbGFuZygnZmlsZXMnKSA9PiAnZmlsZXMnLAogICAgbGFuZygndXNlcnNncm91cHMnKSA9PiAndXNlcnNncm91cHMnLAogICAgbGFuZygnZXh0ZW5zaW9ucycpID0+ICdleHRlbnNpb25zJywKICAgIGxhbmcoJ2FkbWluJykgPT4gJ3NpdGVhZG1pbicsCiAgICBsYW5nKCdlY29tbWVyY2UnKSA9PiAnZWNvbW1lcmNlJywKICAgIGxhbmcoJ215cHJlZnMnKSA9PiAnbXlwcmVmcycsCik7CiRzbWFydHktPmFzc2lnbigKICAgICdtYXNfbmNfYWRtaW5fc2VjdGlvbl9kcm9wZG93bicsCiAgICAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdtYXNfbmNfYWRtaW5fc2VjdGlvbicsICRhZG1pblNlY3Rpb25JdGVtcywgLTEsICR0aGlzLT5HZXRBZG1pblNlY3Rpb24oKSkKKTsKCiRzbWFydHktPmFzc2lnbignaGlkZWRvbmF0aW9uc3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdoaWRlZG9uYXRpb25zc3VibWl0JywgJHRoaXMtPkxhbmcoJ2hpZGVkb25hdGlvbnNzdWJtaXQnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2RvbmF0aW9uc3RleHQnLCAkdGhpcy0+TGFuZygnZG9uYXRpb25zdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdzcG9uc29yc3RleHQnLCAkdGhpcy0+TGFuZygnc3BvbnNvcnMnKSk7CiRzbWFydHktPmFzc2lnbignZG9uYXRpb25zX3Nwb25zb3JfaHJlZicsICdodHRwczovL25ld3N0YXJnZXRlZC5jb20nKTsKJHNtYXJ0eS0+YXNzaWduKCdkb25hdGlvbnNfc3BvbnNvcl9sb2dvX3VybCcsICdodHRwczovL25ld3N0YXJnZXRlZC5jb20vaG90bGluay1vay9sb2dvLnBuZycpOwokc21hcnR5LT5hc3NpZ24oJ2RvbmF0aW9uc19zcG9uc29yX2xvZ29fYWx0JywgJHRoaXMtPkxhbmcoJ2RvbmF0aW9uc19zcG9uc29yX2xvZ29fYWx0JykpOwokc21hcnR5LT5hc3NpZ24oJ2RvbmF0aW9uc19zcG9uc29yX2xpbmsnLCAkdGhpcy0+TGFuZygnZG9uYXRpb25zX3Nwb25zb3JfbGluaycpKTsKCiRzbWFydHktPmFzc2lnbignbWFzX25jX2NoYW5nZWxvZ19odG1sJywgJHRoaXMtPkdldENoYW5nZUxvZygpKTsKCiRjZmcgPSBjbXNfY29uZmlnOjpnZXRfaW5zdGFuY2UoKTsKJHBhZ2VJZCA9IChpbnQpIGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCktPkdldERlZmF1bHRQYWdlSUQoKTsKJG1hbmlmZXN0VXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoJ2NudG50MDEnLCAnbWFuaWZlc3QnLCAkcGFnZUlkLCBhcnJheSgnc2hvd3RlbXBsYXRlJyA9PiAnZmFsc2UnKSk7CiRzbWFydHktPmFzc2lnbignbWFzX25jX21hbmlmZXN0X3VybCcsICRtYW5pZmVzdFVybCk7CgokYWpheFB1c2hVcmwgPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsICdhamF4X3B1c2hfc3Vic2NyaWJlJywgJHJldHVybmlkLCBhcnJheSgnc2hvd3RlbXBsYXRlJyA9PiAnZmFsc2UnKSk7CiRzbWFydHktPmFzc2lnbignbWFzX25jX2FqYXhfcHVzaF9zdWJzY3JpYmVfdXJsJywgc3RyX3JlcGxhY2UoJyZhbXA7JywgJyYnLCAkYWpheFB1c2hVcmwpKTsKCiRzbWFydHktPmFzc2lnbignbWFzX25jX3ZhcGlkX3B1YmxpYycsIChzdHJpbmcpICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfdmFwaWRfcHVibGljJywgJycpKTsKCiRjcm9uVG9rZW4gPSAoc3RyaW5nKSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2Nyb25fdG9rZW4nLCAnJyk7CiRjcm9uVXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoJ2NudG50MDEnLCAnY3Jvbl9waW5nJywgJHBhZ2VJZCwgYXJyYXkoJ21hc190b2tlbicgPT4gJGNyb25Ub2tlbiwgJ3Nob3d0ZW1wbGF0ZScgPT4gJ2ZhbHNlJykpOwokc21hcnR5LT5hc3NpZ24oJ21hc19uY19jcm9uX3VybCcsIHN0cl9yZXBsYWNlKCcmYW1wOycsICcmJywgJGNyb25VcmwpKTsKJHNtYXJ0eS0+YXNzaWduKCdtYXNfbmNfY3Jvbl90b2tlbl9kaXNwbGF5JywgJGNyb25Ub2tlbiAhPT0gJycgPyAkY3JvblRva2VuIDogJHRoaXMtPkxhbmcoJ2Nyb25fdG9rZW5fbWlzc2luZycpKTsKCiRzbWFydHktPmFzc2lnbignZW5hYmxlX2VtYWlsX2NoZWNrZWQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2VuYWJsZV9lbWFpbCcsICcxJykgPT09ICcxJyA/ICcxJyA6ICcwJyk7CiRzbWFydHktPmFzc2lnbignZW5hYmxlX2Rpc2NvcmRfY2hlY2tlZCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZW5hYmxlX2Rpc2NvcmQnLCAnMCcpID09PSAnMScgPyAnMScgOiAnMCcpOwokc21hcnR5LT5hc3NpZ24oJ2VuYWJsZV9wdXNoX2NoZWNrZWQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2VuYWJsZV9wdXNoJywgJzEnKSA9PT0gJzEnID8gJzEnIDogJzAnKTsKJHNtYXJ0eS0+YXNzaWduKCdjZ3dlYnB1c2hfYnJvYWRjYXN0X2NoZWNrZWQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2Nnd2VicHVzaF9icm9hZGNhc3QnLCAnMCcpID09PSAnMScgPyAnMScgOiAnMCcpOwokc21hcnR5LT5hc3NpZ24oJ2FkbWluX293bl9tYW5pZmVzdF9jaGVja2VkJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19hZG1pbl9vd25fbWFuaWZlc3QnLCAnMCcpID09PSAnMScgPyAnMScgOiAnMCcpOwokc21hcnR5LT5hc3NpZ24oJ21hc19uY19jaGFpbl9jZ19zaW1wbGVfcHdhX2NoZWNrZWQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2NoYWluX2NnX3NpbXBsZV9wd2EnLCAnMCcpID09PSAnMScgPyAnMScgOiAnMCcpOwokc21hcnR5LT5hc3NpZ24oJ21hc19uY19mcm9udGVuZF9wd2FfY2hlY2tlZCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZnJvbnRlbmRfcHdhJywgJzAnKSA9PT0gJzEnID8gJzEnIDogJzAnKTsKJHNtYXJ0eS0+YXNzaWduKCdtYXNfbmNfdGhlbWVfY29sb3InLCAoc3RyaW5nKSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX3RoZW1lX2NvbG9yJywgJyMwMDc4ZDQnKSk7CiRzbWFydHktPmFzc2lnbignaGFzX2NnX3NpbXBsZV9wd2EnLCBjbGFzc19leGlzdHMoJ01BU19OQ19DR0ludGVyb3AnKSAmJiBNQVNfTkNfQ0dJbnRlcm9wOjpoYXNDR1NpbXBsZVB3YSgpID8gJzEnIDogJzAnKTsKJHNtYXJ0eS0+YXNzaWduKCdoYXNfY2dfd2VicHVzaCcsIGNsYXNzX2V4aXN0cygnTUFTX05DX0NHSW50ZXJvcCcpICYmIE1BU19OQ19DR0ludGVyb3A6Omhhc0NHV2ViUHVzaCgpID8gJzEnIDogJzAnKTsKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWNpcGllbnRzJywgKHN0cmluZykgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19lbWFpbF9yZWNpcGllbnRzJywgJycpKTsKJHNtYXJ0eS0+YXNzaWduKCdkaXNjb3JkX3dlYmhvb2snLCAoc3RyaW5nKSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2Rpc2NvcmRfd2ViaG9vaycsICcnKSk7CiRzbWFydHktPmFzc2lnbignZXZ0X2xvZ2luX2ZhaWxlZF9jaGVja2VkJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19ldnRfbG9naW5fZmFpbGVkJywgJzAnKSA9PT0gJzEnID8gJzEnIDogJzAnKTsKJHNtYXJ0eS0+YXNzaWduKCdldnRfZGVsZXRlX3VzZXJfY2hlY2tlZCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZXZ0X2RlbGV0ZV91c2VyJywgJzAnKSA9PT0gJzEnID8gJzEnIDogJzAnKTsKJHNtYXJ0eS0+YXNzaWduKCdmYXRhbF9zaHV0ZG93bl9jaGVja2VkJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19mYXRhbF9zaHV0ZG93bicsICcwJykgPT09ICcxJyA/ICcxJyA6ICcwJyk7CiRzbWFydHktPmFzc2lnbignaGVhbHRoX21pbl9waHAnLCAoc3RyaW5nKSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2hlYWx0aF9taW5fcGhwJywgJzcuNC4wJykpOwokc21hcnR5LT5hc3NpZ24oJ2hlYWx0aF9kaXNrX3BjdCcsIChzdHJpbmcpICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfaGVhbHRoX2Rpc2tfcGN0JywgJzEwJykpOwokc21hcnR5LT5hc3NpZ24oJ2hlYWx0aF9kYl9tcycsIChzdHJpbmcpICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfaGVhbHRoX2RiX21zJywgJzIwMDAnKSk7CiRzbWFydHktPmFzc2lnbigndmFwaWRfY29udGFjdCcsIChzdHJpbmcpICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfdmFwaWRfY29udGFjdCcsICdtYWlsdG86aW5mb0BuZXdzdGFyZ2V0ZWQuY29tJykpOwokc21hcnR5LT5hc3NpZ24oJ3JhdGVfcGVyX2hvdXInLCAoc3RyaW5nKSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX3JhdGVfcGVyX2hvdXInLCAnMTIwJykpOwoKJG1vZEFzc2V0c0Jhc2UgPSBtYXNfbmNfbW9kdWxlX3B1YmxpY19iYXNlKCR0aGlzKTsKJHNtYXJ0eS0+YXNzaWduKCdtYXNfbmNfbW9kdWxlX2ljb25fdXJsJywgJG1vZEFzc2V0c0Jhc2UgLiAnL2ltYWdlcy9pY29uLTE5Mi5wbmcnKTsKJHNtYXJ0eS0+YXNzaWduKCdtYXNfbmNfYmFubmVyX3VybCcsICRtb2RBc3NldHNCYXNlIC4gJy9pbWFnZXMvYmFubmVyLnBuZycpOwoKJGRiID0gJHRoaXMtPkdldERiKCk7CiRwYWdlTnVtID0gaXNzZXQoJHBhcmFtc1snbWFzX25jX3BhZ2UnXSkgPyBtYXgoMSwgKGludCkgJHBhcmFtc1snbWFzX25jX3BhZ2UnXSkgOiAxOwokcGVyUGFnZSA9IDQwOwokcm93U3RhcnQgPSAoJHBhZ2VOdW0gLSAxKSAqICRwZXJQYWdlOwokdGFiID0gTUFTX05DX1RhYmxlczo6bm90aWZpY2F0aW9ucygpOwokcXVvdGVkX3RhYmxlID0gJHRhYjsKJHRvdGFsID0gKGludCkgJGRiLT5HZXRPbmUoJ1NFTEVDVCBDT1VOVCgqKSBGUk9NICcgLiAkcXVvdGVkX3RhYmxlKTsKJHNxbCA9ICdTRUxFQ1QgaWQsIGNyZWF0ZWQsIHNldmVyaXR5LCBjYXRlZ29yeSwgc291cmNlLCB0aXRsZSwgYm9keSwgZGVsaXZlcmVkX21hc2ssIGlzX3JlYWQgRlJPTSAnCiAgICAuICRxdW90ZWRfdGFibGUgLiAnIE9SREVSIEJZIGlkIERFU0MgTElNSVQgJyAuIChpbnQpICRyb3dTdGFydCAuICcsICcgLiAoaW50KSAkcGVyUGFnZTsKJHJvd3MgPSAkZGItPkdldEFycmF5KCRzcWwpOwppZiAoaXNfYXJyYXkoJHJvd3MpKSB7CiAgICBmb3JlYWNoICgkcm93cyBhcyAmJHIwKSB7CiAgICAgICAgJHIwWydjcmVhdGVkX2ZtdCddID0gZGF0ZSgnZC9tL1kgSDppJywgKGludCkgJHIwWydjcmVhdGVkJ10pOwogICAgfQogICAgdW5zZXQoJHIwKTsKfQokc21hcnR5LT5hc3NpZ24oJ21hc19uY19ub3RpZmljYXRpb25zJywgaXNfYXJyYXkoJHJvd3MpID8gJHJvd3MgOiBhcnJheSgpKTsKJHNtYXJ0eS0+YXNzaWduKCdtYXNfbmNfcGFnZScsICRwYWdlTnVtKTsKJHNtYXJ0eS0+YXNzaWduKCdtYXNfbmNfdG90YWwnLCAkdG90YWwpOwokc21hcnR5LT5hc3NpZ24oJ21hc19uY19wZXJfcGFnZScsICRwZXJQYWdlKTsKJHNtYXJ0eS0+YXNzaWduKCdtYXNfbmNfaGFzX3ByZXYnLCAkcGFnZU51bSA+IDEpOwokc21hcnR5LT5hc3NpZ24oJ21hc19uY19oYXNfbmV4dCcsICgkcGFnZU51bSAqICRwZXJQYWdlKSA8ICR0b3RhbCk7CiRzbWFydHktPmFzc2lnbignbWFzX25jX3ByZXZfcGFnZScsIG1heCgxLCAkcGFnZU51bSAtIDEpKTsKJHNtYXJ0eS0+YXNzaWduKCdtYXNfbmNfbmV4dF9wYWdlJywgJHBhZ2VOdW0gKyAxKTsKJHNtYXJ0eS0+YXNzaWduKCdtYXNfbmNfcHJldl91cmwnLCAkcGFnZU51bSA+IDEgPyAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdtYXNfbmNfcGFnZScgPT4gJHBhZ2VOdW0gLSAxLCAnYWN0aXZlX3RhYicgPT4gJ25vdGlmaWNhdGlvbnMnKSkgOiAnJyk7CiRzbWFydHktPmFzc2lnbignbWFzX25jX25leHRfdXJsJywgKCRwYWdlTnVtICogJHBlclBhZ2UpIDwgJHRvdGFsID8gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnbWFzX25jX3BhZ2UnID0+ICRwYWdlTnVtICsgMSwgJ2FjdGl2ZV90YWInID0+ICdub3RpZmljYXRpb25zJykpIDogJycpOwokc21hcnR5LT5hc3NpZ24oJ21hc19uY19zd19wYXRoJywgJy9tYXNfbmNfc3cuanMnKTsKCiRtc2cgPSBpc3NldCgkcGFyYW1zWydtc2cnXSkgPyAoc3RyaW5nKSAkcGFyYW1zWydtc2cnXSA6ICcnOwppZiAoJG1zZyA9PT0gJ3NhdmVkJykgewogICAgZWNobyAkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoJ3NhdmVkJykpOwp9CmlmICgkbXNnID09PSAncHVibGlzaGVkX3N3JykgewogICAgZWNobyAkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoJ3B1Ymxpc2hlZF9zd19vaycpKTsKfQppZiAoJG1zZyA9PT0gJ2tleXNfcm90YXRlZCcpIHsKICAgIGVjaG8gJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCdrZXlzX3JvdGF0ZWQnKSk7Cn0KCmVjaG8gJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpOwplY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3NldHRpbmdzJywgJHRoaXMtPkxhbmcoJ3RhYl9zZXR0aW5ncycpLCAkYWN0aXZlVGFiID09PSAnc2V0dGluZ3MnKTsKZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdub3RpZmljYXRpb25zJywgJHRoaXMtPkxhbmcoJ3RhYl9ub3RpZmljYXRpb25zJyksICRhY3RpdmVUYWIgPT09ICdub3RpZmljYXRpb25zJyk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignaGVscCcsICR0aGlzLT5MYW5nKCd0YWJfaGVscCcpLCAkYWN0aXZlVGFiID09PSAnaGVscCcpOwplY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2Fib3V0JywgJHRoaXMtPkxhbmcoJ3RhYl9hYm91dCcpLCAkYWN0aXZlVGFiID09PSAnYWJvdXQnKTsKZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdjaGFuZ2Vsb2cnLCAkdGhpcy0+TGFuZygndGFiX2NoYW5nZWxvZycpLCAkYWN0aXZlVGFiID09PSAnY2hhbmdlbG9nJyk7CmlmICgkc2hvd0RvbmF0aW9ucykgewogICAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdkb25hdGlvbnMnLCAkdGhpcy0+TGFuZygnZG9uYXRpb25zX3RhYicpLCAkYWN0aXZlVGFiID09PSAnZG9uYXRpb25zJyk7Cn0KZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdzZXR0aW5ncycpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX3NldHRpbmdzLnRwbCcpOwplY2hvICR0aGlzLT5FbmRUYWIoKTsKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdub3RpZmljYXRpb25zJyk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fbm90aWZpY2F0aW9ucy50cGwnKTsKZWNobyAkdGhpcy0+RW5kVGFiKCk7CgplY2hvICR0aGlzLT5TdGFydFRhYignaGVscCcpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2hlbHAudHBsJyk7CmVjaG8gJHRoaXMtPkVuZFRhYigpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2Fib3V0Jyk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fYWJvdXQudHBsJyk7CmVjaG8gJHRoaXMtPkVuZFRhYigpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2NoYW5nZWxvZycpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2NoYW5nZWxvZy50cGwnKTsKZWNobyAkdGhpcy0+RW5kVGFiKCk7CgppZiAoJHNob3dEb25hdGlvbnMpIHsKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdkb25hdGlvbnMnKTsKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZG9uYXRpb25zLnRwbCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KCmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsK]]></data>
	</file>
	<file>
	  <filename>/action.manifest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSBleGl0OwoKJGNvbmZpZyA9IGNtc19jb25maWc6OmdldF9pbnN0YW5jZSgpOwokcm9vdFVybCA9IHJ0cmltKCRjb25maWctPnNtYXJ0X3Jvb3RfdXJsKCksICcvJyk7CiRiYXNlID0gbWFzX25jX21vZHVsZV9wdWJsaWNfYmFzZSgkdGhpcyk7CiRpY29uMTkyID0gJGJhc2UgLiAnL2ltYWdlcy9pY29uLTE5Mi5wbmcnOwokaWNvbjUxMiA9ICRiYXNlIC4gJy9pbWFnZXMvaWNvbi01MTIucG5nJzsKCiRtYW5pZmVzdCA9IGFycmF5KAogICAgJ25hbWUnID0+ICdNQVMgTm90aWZpY2F0aW9uIENlbnRlcicsCiAgICAnc2hvcnRfbmFtZScgPT4gJ01BUyBOQycsCiAgICAnZGVzY3JpcHRpb24nID0+ICR0aGlzLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpLAogICAgJ3N0YXJ0X3VybCcgPT4gJHJvb3RVcmwgLiAnLycsCiAgICAnc2NvcGUnID0+ICcvJywKICAgICdkaXNwbGF5JyA9PiAnc3RhbmRhbG9uZScsCiAgICAnYmFja2dyb3VuZF9jb2xvcicgPT4gJyNmZmZmZmYnLAogICAgJ3RoZW1lX2NvbG9yJyA9PiAnIzAwNzhkNCcsCiAgICAnaWNvbnMnID0+IGFycmF5KAogICAgICAgIGFycmF5KAogICAgICAgICAgICAnc3JjJyA9PiAkaWNvbjE5MiwKICAgICAgICAgICAgJ3NpemVzJyA9PiAnMTkyeDE5MicsCiAgICAgICAgICAgICd0eXBlJyA9PiAnaW1hZ2UvcG5nJywKICAgICAgICAgICAgJ3B1cnBvc2UnID0+ICdhbnkgbWFza2FibGUnLAogICAgICAgICksCiAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICdzcmMnID0+ICRpY29uNTEyLAogICAgICAgICAgICAnc2l6ZXMnID0+ICc1MTJ4NTEyJywKICAgICAgICAgICAgJ3R5cGUnID0+ICdpbWFnZS9wbmcnLAogICAgICAgICAgICAncHVycG9zZScgPT4gJ2FueSBtYXNrYWJsZScsCiAgICAgICAgKSwKICAgICksCik7CgpoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vbWFuaWZlc3QranNvbjsgY2hhcnNldD1VVEYtOCcpOwplY2hvIGpzb25fZW5jb2RlKCRtYW5pZmVzdCwgSlNPTl9QUkVUVFlfUFJJTlQgfCBKU09OX1VORVNDQVBFRF9TTEFTSEVTIHwgSlNPTl9VTkVTQ0FQRURfVU5JQ09ERSk7CmV4aXQ7Cg==]]></data>
	</file>
	<file>
	  <filename>/action.save_settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSBleGl0OwppZiAoISR0aGlzLT5WaXNpYmxlVG9BZG1pblVzZXIoKSkgewogICAgcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwp9CgokYWN0aXZlVGFiID0gaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSA/IChzdHJpbmcpICRwYXJhbXNbJ2FjdGl2ZV90YWInXSA6ICdzZXR0aW5ncyc7CiRhbGxvd2VkVGFicyA9IGFycmF5KCdzZXR0aW5ncycsICdub3RpZmljYXRpb25zJywgJ2hlbHAnLCAnYWJvdXQnLCAnY2hhbmdlbG9nJywgJ2RvbmF0aW9ucycpOwppZiAoIWluX2FycmF5KCRhY3RpdmVUYWIsICRhbGxvd2VkVGFicywgdHJ1ZSkpIHsKICAgICRhY3RpdmVUYWIgPSAnc2V0dGluZ3MnOwp9CgppZiAoIWVtcHR5KCRwYXJhbXNbJ2hpZGVkb25hdGlvbnNzdWJtaXQnXSkpIHsKICAgICRzaG93RG9uYXRpb25zVGFiID0gIWVtcHR5KCRwYXJhbXNbJ3Nob3dfZG9uYXRpb25zX3RhYiddKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdoaWRlZG9uYXRpb25zdGFiJywgJHNob3dEb25hdGlvbnNUYWIgPyAnJyA6ICR0aGlzLT5HZXRWZXJzaW9uKCkpOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ21zZycgPT4gJ3NhdmVkJywgJ2FjdGl2ZV90YWInID0+ICdzZXR0aW5ncycpKTsKCiAgICByZXR1cm47Cn0KCmlmICghZW1wdHkoJHBhcmFtc1snbWFzX25jX3B1Ymxpc2hfc3cnXSkpIHsKICAgICRzcmMgPSBjbXNfam9pbl9wYXRoKCR0aGlzLT5HZXRNb2R1bGVQYXRoKCksICdqcycsICdtYXMtbmMtc3ctcm9vdC5qcycpOwogICAgJGNvbmZpZyA9IGNtc19jb25maWc6OmdldF9pbnN0YW5jZSgpOwogICAgJGRlc3QgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3Jvb3RfcGF0aCddLCAnbWFzX25jX3N3LmpzJyk7CiAgICBpZiAoIWlzX3JlYWRhYmxlKCRzcmMpKSB7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ21zZycgPT4gJ3NhdmVkJywgJ2FjdGl2ZV90YWInID0+ICdzZXR0aW5ncycpKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQogICAgJGJvZHkgPSAoc3RyaW5nKSAoKGlzX3JlYWRhYmxlKCRzcmMpKSA/IGZpbGVfZ2V0X2NvbnRlbnRzKCRzcmMpIDogZmFsc2UpOwogICAgJGJhbm5lciA9ICcvKiBNQVMgTm90aWZpY2F0aW9uIENlbnRlciBzZXJ2aWNlIHdvcmtlciwgZ2VuZXJhdGVkICcgLiBnbWRhdGUoJ2MnKSAuICIgKi9cbiI7CiAgICAkZGVzdERpciA9IGRpcm5hbWUoJGRlc3QpOwogICAgaWYgKCRib2R5ICE9PSAnJyAmJiBpc19kaXIoJGRlc3REaXIpICYmIGlzX3dyaXRhYmxlKCRkZXN0RGlyKSkgewogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRkZXN0LCAkYmFubmVyIC4gJGJvZHksIExPQ0tfRVgpOwogICAgfQogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYXVkaXQnKSkgewogICAgICAgIGF1ZGl0KDAsICdNQVNfTm90aWZpY2F0aW9uQ2VudGVyJywgJ1B1Ymxpc2hlZCBtYXNfbmNfc3cuanMgdG8gc2l0ZSByb290Jyk7CiAgICB9CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnbXNnJyA9PiAncHVibGlzaGVkX3N3JywgJ2FjdGl2ZV90YWInID0+ICdzZXR0aW5ncycpKTsKCiAgICByZXR1cm47Cn0KCmlmICghZW1wdHkoJHBhcmFtc1snbWFzX25jX3JvdGF0ZV92YXBpZCddKSkgewogICAgJGF1dG8gPSBjbXNfam9pbl9wYXRoKCR0aGlzLT5HZXRNb2R1bGVQYXRoKCksICd2ZW5kb3InLCAnYXV0b2xvYWQucGhwJyk7CiAgICBpZiAoaXNfcmVhZGFibGUoJGF1dG8pKSB7CiAgICAgICAgcmVxdWlyZV9vbmNlICRhdXRvOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmIChjbGFzc19leGlzdHMoJ01pbmlzaGxpbmtcXFdlYlB1c2hcXFZBUElEJykpIHsKICAgICAgICAgICAgICAgICRrZXlzID0gTWluaXNobGlua1xXZWJQdXNoXFZBUElEOjpjcmVhdGVWYXBpZEtleXMoKTsKICAgICAgICAgICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfdmFwaWRfcHVibGljJywgJGtleXNbJ3B1YmxpY0tleSddKTsKICAgICAgICAgICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfdmFwaWRfcHJpdmF0ZScsICRrZXlzWydwcml2YXRlS2V5J10pOwogICAgICAgICAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgICAgICAgICAkZGItPkV4ZWN1dGUoJ0RFTEVURSBGUk9NICcgLiBNQVNfTkNfVGFibGVzOjpwdXNoX3N1YnNjcmlwdGlvbnMoKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYXVkaXQnKSkgewogICAgICAgICAgICAgICAgYXVkaXQoMCwgJ01BU19Ob3RpZmljYXRpb25DZW50ZXInLCAnVkFQSUQgcm90YXRlIGZhaWxlZCcpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ21zZycgPT4gJ2tleXNfcm90YXRlZCcsICdhY3RpdmVfdGFiJyA9PiAnc2V0dGluZ3MnKSk7CgogICAgcmV0dXJuOwp9CgppZiAoIWVtcHR5KCRwYXJhbXNbJ21hc19uY19zZW5kX3Rlc3RfcHVzaCddKSkgewogICAgJHRpdGxlID0gJHRoaXMtPkxhbmcoJ3B1c2hfdGVzdF90aXRsZScpOwogICAgJGJvZHkgPSAkdGhpcy0+TGFuZygncHVzaF90ZXN0X2JvZHknKTsKICAgIE1BU19OQ19XZWJQdXNoOjpzZW5kVG9BZG1pbnMoJHRoaXMsICR0aXRsZSwgJGJvZHkpOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ21zZycgPT4gJ3NhdmVkJywgJ2FjdGl2ZV90YWInID0+ICdzZXR0aW5ncycpKTsKCiAgICByZXR1cm47Cn0KCmlmICghZW1wdHkoJHBhcmFtc1snbWFzX25jX2RlbGV0ZV9zZWxlY3RlZCddKSAmJiBpc3NldCgkcGFyYW1zWydtYXNfbmNfc2VsJ10pICYmIGlzX2FycmF5KCRwYXJhbXNbJ21hc19uY19zZWwnXSkpIHsKICAgIE1BU19OQ19UYWJsZXM6OmRlbGV0ZU5vdGlmaWNhdGlvbnNCeUlkcygkdGhpcywgJHBhcmFtc1snbWFzX25jX3NlbCddKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdtc2cnID0+ICdzYXZlZCcsICdhY3RpdmVfdGFiJyA9PiAnbm90aWZpY2F0aW9ucycpKTsKCiAgICByZXR1cm47Cn0KCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfZW5hYmxlX2VtYWlsJywgIWVtcHR5KCRwYXJhbXNbJ21hc19uY19lbmFibGVfZW1haWwnXSkgPyAnMScgOiAnMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2VuYWJsZV9kaXNjb3JkJywgIWVtcHR5KCRwYXJhbXNbJ21hc19uY19lbmFibGVfZGlzY29yZCddKSA/ICcxJyA6ICcwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfZW5hYmxlX3B1c2gnLCAhZW1wdHkoJHBhcmFtc1snbWFzX25jX2VuYWJsZV9wdXNoJ10pID8gJzEnIDogJzAnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19jZ3dlYnB1c2hfYnJvYWRjYXN0JywgIWVtcHR5KCRwYXJhbXNbJ21hc19uY19jZ3dlYnB1c2hfYnJvYWRjYXN0J10pID8gJzEnIDogJzAnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19hZG1pbl9vd25fbWFuaWZlc3QnLCAhZW1wdHkoJHBhcmFtc1snbWFzX25jX2FkbWluX293bl9tYW5pZmVzdCddKSA/ICcxJyA6ICcwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfY2hhaW5fY2dfc2ltcGxlX3B3YScsICFlbXB0eSgkcGFyYW1zWydtYXNfbmNfY2hhaW5fY2dfc2ltcGxlX3B3YSddKSA/ICcxJyA6ICcwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfZnJvbnRlbmRfcHdhJywgIWVtcHR5KCRwYXJhbXNbJ21hc19uY19mcm9udGVuZF9wd2EnXSkgPyAnMScgOiAnMCcpOwokdGMgPSBpc3NldCgkcGFyYW1zWydtYXNfbmNfdGhlbWVfY29sb3InXSkgPyB0cmltKChzdHJpbmcpICRwYXJhbXNbJ21hc19uY190aGVtZV9jb2xvciddKSA6ICcjMDA3OGQ0JzsKaWYgKCFwcmVnX21hdGNoKCcvXiNbMC05QS1GYS1mXXs2fSQvJywgJHRjKSkgewogICAgJHRjID0gJyMwMDc4ZDQnOwp9CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfdGhlbWVfY29sb3InLCAkdGMpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2VtYWlsX3JlY2lwaWVudHMnLCBpc3NldCgkcGFyYW1zWydtYXNfbmNfZW1haWxfcmVjaXBpZW50cyddKSA/IHRyaW0oKHN0cmluZykgJHBhcmFtc1snbWFzX25jX2VtYWlsX3JlY2lwaWVudHMnXSkgOiAnJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfZGlzY29yZF93ZWJob29rJywgaXNzZXQoJHBhcmFtc1snbWFzX25jX2Rpc2NvcmRfd2ViaG9vayddKSA/IHRyaW0oKHN0cmluZykgJHBhcmFtc1snbWFzX25jX2Rpc2NvcmRfd2ViaG9vayddKSA6ICcnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19ldnRfbG9naW5fZmFpbGVkJywgIWVtcHR5KCRwYXJhbXNbJ21hc19uY19ldnRfbG9naW5fZmFpbGVkJ10pID8gJzEnIDogJzAnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19ldnRfZGVsZXRlX3VzZXInLCAhZW1wdHkoJHBhcmFtc1snbWFzX25jX2V2dF9kZWxldGVfdXNlciddKSA/ICcxJyA6ICcwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfZmF0YWxfc2h1dGRvd24nLCAhZW1wdHkoJHBhcmFtc1snbWFzX25jX2ZhdGFsX3NodXRkb3duJ10pID8gJzEnIDogJzAnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19oZWFsdGhfbWluX3BocCcsIGlzc2V0KCRwYXJhbXNbJ21hc19uY19oZWFsdGhfbWluX3BocCddKSA/IHRyaW0oKHN0cmluZykgJHBhcmFtc1snbWFzX25jX2hlYWx0aF9taW5fcGhwJ10pIDogJzcuNC4wJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfaGVhbHRoX2Rpc2tfcGN0JywgaXNzZXQoJHBhcmFtc1snbWFzX25jX2hlYWx0aF9kaXNrX3BjdCddKSA/IChzdHJpbmcpIG1heCgxLCAoaW50KSAkcGFyYW1zWydtYXNfbmNfaGVhbHRoX2Rpc2tfcGN0J10pIDogJzEwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfaGVhbHRoX2RiX21zJywgaXNzZXQoJHBhcmFtc1snbWFzX25jX2hlYWx0aF9kYl9tcyddKSA/IChzdHJpbmcpIG1heCgwLCAoaW50KSAkcGFyYW1zWydtYXNfbmNfaGVhbHRoX2RiX21zJ10pIDogJzIwMDAnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY192YXBpZF9jb250YWN0JywgaXNzZXQoJHBhcmFtc1snbWFzX25jX3ZhcGlkX2NvbnRhY3QnXSkgPyB0cmltKChzdHJpbmcpICRwYXJhbXNbJ21hc19uY192YXBpZF9jb250YWN0J10pIDogJ21haWx0bzppbmZvQG5ld3N0YXJnZXRlZC5jb20nKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19yYXRlX3Blcl9ob3VyJywgaXNzZXQoJHBhcmFtc1snbWFzX25jX3JhdGVfcGVyX2hvdXInXSkgPyAoc3RyaW5nKSBtYXgoMSwgKGludCkgJHBhcmFtc1snbWFzX25jX3JhdGVfcGVyX2hvdXInXSkgOiAnMTIwJyk7CgokYWxsb3dlZFNlY3Rpb25zID0gYXJyYXkoCiAgICAnbWFpbicsCiAgICAnY29udGVudCcsCiAgICAnbGF5b3V0JywKICAgICdmaWxlcycsCiAgICAndXNlcnNncm91cHMnLAogICAgJ2V4dGVuc2lvbnMnLAogICAgJ3NpdGVhZG1pbicsCiAgICAnZWNvbW1lcmNlJywKICAgICdteXByZWZzJywKKTsKJHNlYyA9IGlzc2V0KCRwYXJhbXNbJ21hc19uY19hZG1pbl9zZWN0aW9uJ10pID8gdHJpbSgoc3RyaW5nKSAkcGFyYW1zWydtYXNfbmNfYWRtaW5fc2VjdGlvbiddKSA6ICdleHRlbnNpb25zJzsKaWYgKCFpbl9hcnJheSgkc2VjLCAkYWxsb3dlZFNlY3Rpb25zLCB0cnVlKSkgewogICAgJHNlYyA9ICdleHRlbnNpb25zJzsKfQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2FkbWluX3NlY3Rpb24nLCAkc2VjKTsKCiRzaG93RG9uYXRpb25zID0gIWVtcHR5KCRwYXJhbXNbJ3Nob3dfZG9uYXRpb25zX3RhYl9zZXR0aW5ncyddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hpZGVkb25hdGlvbnN0YWInLCAkc2hvd0RvbmF0aW9ucyA/ICcnIDogJHRoaXMtPkdldFZlcnNpb24oKSk7CgppZiAoZnVuY3Rpb25fZXhpc3RzKCdhdWRpdCcpKSB7CiAgICBhdWRpdCgwLCAnTUFTX05vdGlmaWNhdGlvbkNlbnRlcicsICdTZXR0aW5ncyBzYXZlZCcpOwp9CgokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnbXNnJyA9PiAnc2F2ZWQnLCAnYWN0aXZlX3RhYicgPT4gJGFjdGl2ZVRhYikpOwo=]]></data>
	</file>
	<file>
	  <filename>/assets/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/assets/banner-772x250.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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AABgo0EwBAAAAICNBsEQAAAAADYaBEMAAAAA2GgQDAEAAABgo0EwBAAAAICNBsEQAAAAADYaBEMAAAAA2GgQDAEAAABgo0EwBAAAAICNBsEQAAAAADYaBEMAAAAA2GgQDAEAAABgo0EwBAAAAICNBsEQAAAAADYaBEMAAAAA2GgQDAEAAABgo0EwBAAAAICNBsEQAAAAADYaBEMAAAAA2GgQDAEAAABgo0EwBAAAAICNBsEQAAAAADYaBEMAAAAA2GgQDAEAAABgo0EwBAAAAICNBsEQAAAAADYaBEMAAAAA2GgQDAEAAABgo0EwBAAAAICNBsEQAAAAADYaBEMAAAAA2GgQDAEAAABgo0EwBAAAAICNBsEQAAAAADYaBEMAAAAA2GgQDAEAAABgo0EwBAAAAICNBsEQAAAAADYaBEMAAAAA2GgQDAEAAABgo0EwBAAAAICNBsEQAAAAADYaBEMAAAAA2GgQDAEAAABgo0EwBAAAAICNBsEQAAAAADYaBEMAAAAA2GgQDAEAAABgo0EwBAAAAICNBsEQAAAAADYaBEMAAAAA2GgQDAEAAABgo/1fjVKNYS1TTiQAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/assets/banner-1544x500.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAABggAAAH0CAIAAABn/zFJAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAGYktHRAAAAEoAg/D/YfMAAAAHdElNRQfqBwESCTsO/AxCAACAAElEQVR42uz9V5Mcubb2j8ED6cq0oxvO7LNfxV8RilDoUpe60NfSF5WJ95w9lqZdmXSwugAyK6u72pHNGc70+g2HbDa7qtIASODBWs/C6P/5/0IYIYQQDgghFOLXePed4Z/RYwmT36evvfWdMHnR3o+EyQfe8dovP5KAQvx0/OAB3nOITzuSEHa/p2uLUQi7rx97Ll90JHuXIaTfw+RIUHjcGT36zj7qwMPu9+nd+fojCZPvPOpSfcu7fPA7D5zXFx3Jw3f5Sef1iCO5o3sd6kFfdpfvPZIvvMvPdCRh8pH4jvHkgfd59JEcvLO7T3z2sTo8011++JYcvra37/KNaxueepefciRhciRP7r9ffSR7l+GbPpEfcZfRjVaHbv/Dlx/J7s5OnoMPd8fv54n8FUd14C7faGNPGpduXdsvfCY+07U9fJfHVvSY0fJv+0S+s6t9zWzn0UfyqIP9+ufgHUf15GfiVxzJgZd+zWj5NU/k6dWe3GX8rM/Bv/aJ/Pyznaccybd9Ij/U3r7JKvXrV6aPOsSnHckXPpGf6Uie7Yn8nesP+1f7e30ik0e/NQAAAAAAAAAAAAAAAPCPAoQhAAAAAAAAAAAAAACAFwoIQwAAAAAAAAAAAAAAAC8UEIYAAAAAAAAAAAAAAABeKCAMAQAAAAAAAAAAAAAAvFBAGAIAAAAAAAAAAAAAAHihgDAEAAAAAAAAAAAAAADwQgFhCAAAAAAAAAAAAAAA4IUCwhAAAAAAAAAAAAAAAMALBYQhAAAAAAAAAAAAAACAFwoIQwAAAAAAAAAAAAAAAC8UEIYAAAAAAAAAAAAAAABeKCAMAQAAAAAAAAAAAAAAvFBAGAIAAAAAAAAAAAAAAHihgDAEAAAAAAAAAAAAAADwQgFhCAAAAAAAAAAAAAAA4IUCwhAAAAAAAAAAAAAAAMALBYQhAAAAAAAAAAAAAACAFwoIQwAAAAAAAAAAAAAAAC8UEIYAAAAAAAAAAAAAAABeKCAMAQAAAAAAAAAAAAAAvFBAGAIAAAAAAAAAAAAAAHihgDAEAAAAAAAAAAAAAADwQgFhCAAAAAAAAAAAAAAA4IUCwhAAAAAAAAAAAAAAAMALBYQhAAAAAAAAAAAAAACAFwoIQwAAAAAAAAAAAAAAAC8UEIYAAAAAAAAAAAAAAABeKCAMAQAAAAAAAAAAAAAAvFBAGAIAAAAAAAAAAAAAAHihgDAEAAAAAAAAAAAAAADwQgFhCAAAAAAAAAAAAAAA4IUCwhAAAAAAAAAAAAAAAMALBYQhAAAAAAAAAAAAAACAFwoIQwAAAAAAAAAAAAAAAC8UEIYAAAAAAAAAAAAAAABeKCAMAQAAAAAAAAAAAAAAvFBAGAIAAAAAAAAAAAAAAHihgDAEAAAAAAAAAAAAAADwQgFhCAAAAAAAAAAAAAAA4IUCwhAAAAAAAAAAAAAAAMALBYQhAAAAAAAAAAAAAACAFwoIQwAAAAAAAAAAAAAAAC8UEIYAAAAAAAAAAAAAAABeKCAMAQAAAAAAAAAAAAAAvFBAGAIAAAAAAAAAAAAAAHihgDAEAAAAAAAAAAAAAADwQgFhCAAAAAAAAAAAAAAA4IUCwhAAAAAAAAAAAAAAAMALBYQhAAAAAAAAAAAAAACAFwoIQwAAAAAAAAAAAAAAAC8UEIYAAAAAAAAAAAAAAABeKCAMAQAAAAAAAAAAAAAAvFBAGAIAAAAAAAAAAAAAAHihgDAEAAAAAAAAAAAAAADwQgFhCAAAAAAAAAAAAAAA4IUCwhAAAAAAAAAAAAAAAMALBYQhAAAAAAAAAAAAAACAFwoIQwAAAAAAAAAAAAAAAC8UEIYAAAAAAAAAAAAAAABeKCAMAQAAAAAAAAAAAAAAvFBAGAIAAAAAAAAAAAAAAHihgDAEAAAAAAAAAAAAAADwQgFhCAAAAAAAAAAAAAAA4IUCwhAAAAAAAAAAAAAAAMALBYQhAAAAAAAAAAAAAACAFwoIQwAAAAAAAAAAAAAAAC8UEIYAAAAAAAAAAAAAAABeKCAMAQAAAAAAAAAAAAAAvFBAGAIAAAAAAAAAAAAAAHihgDAEAAAAAAAAAAAAAADwQgFhCAAAAAAAAAAAAAAA4IUCwhAAAAAAAAAAAAAAAMALBYQhAAAAAAAAAAAAAACAFwoIQwAAAAAAAAAAAAAAAC8UEIYAAAAAAAAAAAAAAABeKCAMAQAAAAAAAAAAAAAAvFBAGAIAAAAAAAAAAAAA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AGSKYAgAAAAAACBTBEMAAAAAAACZIhgCAAAAAADIFMEQAAAAAABApgiGAAAAAAAAMkUwBAAAAAAAkCmCIQAAAAAAgEwRDAEAAAAAAGSKYAgAAAAAACBTBEMAAAAAAACZIhgCAAAAAADIFMEQAAAAAABApgiGAAAAAAAAMkUwBAAAAAAAkCmCIQAAAAAAgEwRDAEAAAAAAGSKYAgAAAAAACBTBEMAAAAAAACZIhgCAAAAAADIFMEQAAAAAABApgiGAAAAAAAAMkUwBAAAAAAAkCmCIQAAAAAAgEwRDAEAAAAAAGSKYAgAAAAAACBTBEMAAAAAAACZIhgCAAAAAADIFMEQAAAAAABApgiGAAAAAAAAMkUwBAAAAAAAkCmCIQAAAAAAgEwRDAEAAAAAAGSKYAgAAAAAACBTBEMAAAAAAACZIhgCAAAAAADIFMEQAAAAAABApgiGAAAAAAAAMkUwBAAAAAAAkCmCIQAAAAAAgEwRDAEAAAAAAGSKYAgAAAAAACBTBEMAAAAAAACZIhgCAAAAAADIFMEQAAAAAABApgiGAAAAAAAAMkUwBAAAAAAAkCmCIQAAAAAAgEwRDAEAAAAAAGSKYAgAAAAAACBTBEMAAAAAAACZIhgCAAAAAADIFMEQAAAAAABApgiGAAAAAAAAMkUwBAAAAAAAkCmCIQAAAAAAgEwRDAEAAAAAAGSKYAgAAAAAACBTBEMAAAAAAACZIhgCAAAAAADIFMEQAAAAAABApgiGAAAAAAAAMkUwBAAAAAAAkCmCIQAAAAAAgEwRDAEAAAAAAGSKYAgAAAAAACBTBEMAAAAAAACZIhgCAAAAAADIFMEQAAAAAABApgiGAAAAAAAAMkUwBAAAAAAAkCmCIQAAAAAAgEwRDAEAAAAAAGSKYAgAAAAAACBTBEMAAAAAAACZIhgCAAAAAADIFMEQAAAAAABApgiGAAAAAAAAMkUwBAAAAAAAkCmCIQAAAAAAgEwRDAEAAAAAAGSKYAgAAAAAACBTBEMAAAAAAACZIhgCAAAAAADIFMEQAAAAAABApgiGAAAAAAAAMkUwBAAAAAAAkCmCIQAAAAAAgEwRDAEAAAAAAGSKYAgAAAAAACBTBEMAAAAAAACZIhgCAAAAAADIFMEQAAAAAABApgiGAAAAAAAAMkUwBAAAAAAAkCmCIQAAAAAAgEwRDAEAAAAAAGSKYAgAAAAAACBTBEMAAAAAAACZIhgCAAAAAADIFMEQAAAAAABApgiGAAAAAAAAMkUwBAAAAAAAkCmCIQAAAAAAgEwRDAEAAAAAAGSKYAgAAAAAACBTBEMAAAAAAACZIhgCAAAAAADIFMEQAAAAAABApgiGAAAAAAAAMkUwBAAAAAAAkCmCIQAAAAAAgEwRDAEAAAAAAGSKYAgAAAAAACBTBEMAAAAAAACZIhgCAAAAAADIFMEQAAAAAABApgiGAAAAAAAAMvX/wZPXAw7EzJUAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/assets/icon-128x128.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/assets/icon-256x256.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAGYktHRAAAAEEAdN9z6a0AAAAHdElNRQfqBwESCTsO/AxCAAAXk0lEQVR42u2dW5AU13nH/1/37G1m2QsLe2ExCyxCsgwLrIVky1JJWI4F2CJWGVKJquKH2FKCQqoUl5yXWFWuSqqUvCklYspJVSKHRE5KOCUtEi7hi+RYsSTQLmQBIcmC3YW9sBf2Njv37j556JnZmd2dZbqnu2eW8/1qCmZmu8853XP+57ucPt2EPc+CYWRFKXYDGKaYsAAYqWEBMFLDAmCkhgXASA0LgJEaFgAjNSwARmpYAIzUsAAYqWEBMFLDAmCkhgXASI2v2A2wBFncKr/tC6yRCtvdRunWSi24DWS9BCGgxws+di8ocQEQFDX5EyoKSAVh/hdN/jA5Pppvcm1P2VvOf6TU17l2T/8p++Ott19QxVKb5WrGgt2X2D7X2VjmiGipk5Dr6BY3Kff2BBg65sZh6CBCZAbRGQDQYpZ/f/cpPQGQMv+CeWYJRBDpM08QlPE+9aOav4EAKPVXQRnvze8p9T2ytgFAyC52+SpSDcuqLrOKRc1IVpE+oszqMrfJPlJQRnWLq8jdjGQVyD66pY50vgoAqQNfuorsZixfRXkguY2hwdBhaJgbgxZHcBRaFIZe7H6WpGQEQAqIQGqyn6W7jgNeBFNUVB/UMgigoRoA1mxGeAbhmwjeQDxc7MaVggDmh3wkRyDmdoUAXwVWNaGmEas3IngDoZsITRTRIBRVAEk/h4d5CSFU+FHRjvqNCE9gcqBYMiiSAIgAJcudZeREUbGqCYE1CN3EZL/3MvBeAJSMbnngZ9KoPtQ0o3oNZkcx+qGXsYHHAlAy0i/e1syUPuRDXSv89Zi+jpt93qRNvZwJZnefyYMKPxrvwroOlPs9qM0bAaRyxgyTDwTUtmLzA6htdbsqlwWQ9nNsTKczUkMoD6B1B5o+C1+Fe9W4JwD28ZmC8VWi6S607nRPA3w1KFPaEKG21T0NuJAFEqmxn70exinqWgFg6LzjqSH3LAB3f8ZR6tZj/S7H7YCzFkCw58+4iJkUGjznoB1w1AIIAGLeBWIYZyFC7Xq07oSiOlWkcwIQIpX5YeeHcZOadahZ51RhDglAiOSLYdxG9WH9TtQ0O1KYIwLgfs94i68Sa7Y4EhA7IQABCINlwHhKTQtadxUeDBQsACEgDO78jNcQULsO1U0FFlOgAAQP/EzRUH1Y016gI1SYAAQ48GWKhhCobcGaLYWUUaAADBYAU2QaNqI8YHvvAgTAeU+mFCivRsNG23sXJgAOAJhSYPVGlFfb29WuAMzkD8OUAhXVaGizt6ttAbD3z5QS9W3wVdrYz5YA2PtnSo2yKgRW29jPngVg758pMVQfGtptTAzbtQAMU2oEVqPM8p1UrAuAw1+mNCmrsnEbFRsWgId/piQRQPVaKNYWOdqyAKwBpjTxr4ZaZmkPiwJg/4cpZXxl8FvLBdmzAAxTkig++Out7VHsJjOMo7gbA7D/w5Q4da2WpoStxwAMU8ooPkt3YmYXiJEaKwLgBChT+qjllhJB7AIxtxeqtUQQu0CM1LAAGKlhATBSwwJgpIYFwEgNC4CRGhYAIzUsAEZqWAC3BfNXv/DjeazhwmNSGW8gAkiFWGtEVAiAiDBD5UEqL3bLVhIsgBWJKtAgovcZNx/Sx7+ujQSEBkCB6FZXv+1rfMPXOqwGgigD8aUrt4AFsOKggNAOaMM/iF1qFpEakch0e9YZg/sSQ3+lXP6Vr/mvK3cMqKt4AcfycAywchAAUaOI/nP0g3+KfrDVCNYIDaSAKOOl+IAmI/oH8f5fhH75zfgAAA4MloEtwMqBqFHEjsZ6DiYGCci57IMIgCrEZj34YuSsAJ0ob2MN5IItwIohILQXYudv0fvTEIGUJiN6NHJmvzbMAsgFC2DF8Jg2/Jg2nFfvT0PUZESejl5uNMIsgSVhAdhFALoB3YCuQzOgGcmPC9+L5JvkvyLjffqbBduYe4mMokSzHvlB/MNqoVla8AoAoK8lhr4V7+Pfekk4BrAJAfvu2XTf1iZjQabR7KAi0+mg+f/FUpNWC79fWJRQ1drenpZuW6M4EYR4UBs9JraGyNpd02SABWAdAnSx7562f/nzLzfVWb4dsU1mu3E2Dp+934t2azdbjfAnaq13Z2mFwGbROoZorPc/vb/Du94/NYX3z0Cx/2O1GJEDiUEOhRfDArCIIRrrAkeffHj/LpsPpbKDriMatb87ESDM2WJmAewCWUEICHF477ZD9xf0cGY7WI59mbxgC2AFgYMPbD386PYiVG0Ufk0DXxe0BCyAPCHoxv7OtqPfecg71z9NdTXa2+3flEmIOSrrURu8bvZKgAWQBwQYRmN94On9O4rQ+wFUVuLuu6EotjUwpATO+tawEVgMCyAPDDTWB44+9fD+Tg8D3wXcey9qa+0KwOgqa72hVBWt8SUMC+BWmIHvo9sP3X8HFTESXb0aHR3mrJbV9o8q/rfLmovW8tKGBXArzMB3b0eRm1FVhSeeQFOTtWhYCEAcq7jzVNl69n+WhAWwLLqx//Mbjz75cHFc/wU0N+Nb30J9fb4aEEIY4j99bccq7gAE9/8l4XmAHBQ98F2iSYT77weAH/0IU1NQ1eUmBwwDQkTvu/+0f/dY7zSE4JmEJWEB5MAQjfWBo0/u2d+5sdhNycDUQFUVXn8dH3yQ/MZ8mQgBIaDraGjAvn1Vex99XvEH//3cibOD2dfnMUlYAEshACEO7+049KWtxW7KIojQ2YlNm/DrX+PSJfzud5iehpa6zCEQQEMD7rkHHR3o7ARRE/D8wW3n+qeujIagsgIWwgJYCiEOPnDn4b07it2O3NTX4xvfwFe/iqkpnDmDaDSZIGpvx9atWLUKqpretn1t4PlD248cPz82G4PCGsiCBbAI3di/u/3oU3tKxfVfBr8ffj8ef3z5rYjo4D2tmi6e/NfuUEJnTygTzgJlQEnX/+mv7VwBvd/SkRE9trPlsV3rIMDBQCYsgAzMwPdPHymtwNchqit9LzzRcfDe9QBPCczDAkiRDHx3HPrS1mLO+LpJU03l89/8XPvaAAxWQBIWQAqBgw/eeXhfsWd8XaZ9beD5g9saaytggD0hsACS6Mb+z286+tQjTXWBYjfFXYjo4D3rXniiI1ChsicEFsD8jO9tF/jmPGKix3a0PLarBfzgcxZAMvD9s0f2f36T95VrhgjFi3D72upK3wt/tP3g7lZA9oefyy0AAQgc3rfz0Jfu9D7wFUK8cmH2SNfIjWARlqs31VQ+/82729f6Jc+Kyi0AQ+y/d/PhfUWY8RVCnLg4+0zXyEtnpv6ia2R0rggaaF8b+JvH7w5U+WQ2AnILQIjdW5q9D3zN3n/k1ZGxOQ0KTvTOHHmtCBogogfvaKirKpM5EpD4UggBqEqgyuu7BWb3ftP5ECd6ZwAc/f2WpmpPfxFVpUCFWng5KxeJLYBAc331gXs9vcPPUr3fvKS5OHagpbbywM4WdoEkRVUpUOGpBTj18dzC3m+S0sAzJ0fmYp7mhdgCMB4xOqf98N3JsaC29DXJRCCc/DB48vKskHhI9hi5BeDhJTGjc9qR10ZOfRxc7pQThRLGMydvnLjooQYMqZcLSywAITq3NNdVV3hQldn7zUj3FmtzicbmtCOvjnimgc6NdQG/vIkguQXQ3lRd6fpjped7P+V3j1vFUw10ttXV+eV9cIbEAvAEy73fxFsNyIzcAnC5b83FjGdOWu/9JikNnPp4zuWT4G7xJY7EAnB/Fmw6ov+mLwzYvbu/QmOzibPXI+6eBpUCFfLOh8oqACGa6wNuz4L1DEemY3pBl5op1DMSdXVmoKW28sDOZmnXiMkqAEBVFbdnwXqGoqGIUdAt2Qg9g5HpiO5qOwPl8s6FySsAL3DkMmOS+nJlt5FYAO4bfUcWu+iGM+UsR/JMyKgzWQXg/izYSDDRdTlYeKe6YZbjJqm5MBnDAIkF0N7o6ixYcuQuUABEcN8CdG6orZN1MlhWATAMAHkF4P5o1zMUmY46kb0h9Ay7mwmVGTkFIKAqgcqSz4GauJ8JlXldmJQCEGhe7f5aMAdzKi5nQltqKw/saOYgWCJUxeu1YCWOtFdDSCoAt5mLGT3DUaeG7emo3jPk7hVB0iKrAIS7twWcjug9gxGHZoIpFDF6hqKunxAZPSA5BZCcBat0sQrHvXaXZ2k72yRdFyarAFxeCxaKG7qjeUvX58LazLkw6RQgpQDcp+ty8EYw4VhxhK7LwREHC2RSyCoAl0e6UNyAYXcdzGLIeZPi8QkpWeQTgHlHRJdnwVYc0s6FSSgA0VxffeA+F2fBnM2BmridCU3NhblXQ4kinwDcvyPidETvuRaGIaA79DIQmtN7Bt2dCpDTAkg6/+cqNZXKdx9aMxMzHLQBhsDD7bf588uKgpQCcHkWrKZS/e6Da4p9kNYRgBCyLQuTzwXyYBZsZdLZVhfwl8s2FSChAODNHRFXHJ1ttXV+n2xxsHwCYJgMpBSAZINcvkh5WiQTgBBQiWfBlkTOeyTKJgC4PQu2cpFzXZh0infvjoiz4fhMJJ47i5hHfpHy+rOq0NqaCp/i/OAl4VyYdAJwj3841fuPb17yqWa/JCDzYjjK6Nzme8r5ccGOyX+S3wigsbbqlSMPbGlaVewjvh2QTwDuzIK90TNw9GcXxqYjqb67bC9Pb4PFIsncfcE2STEMT0We+2nvP//JvdWOBzPyrQuTLQZwZRZsdCb8w59dGJsMQ6Hky3wihgIo5htKfiSk3qf/XbBN9pbmx+R7pB+0cbJ78OS5IccfHiPhujD5BODCLNixNy+e6hmA6tVVBEShmPbcid4rYw4/PCa5LkwmBUgmANBsKBaOObm06o2egWNvXvL61spEV8bmnvtp71zUsWMxhBibjeuSPSlDxab7LWwuDCAjJjPfUPq9aaBTvuy840pZnnHau6UMT5fSxS7aBshRReb3NO9MZxWbEX0SQaEL125+8Onoqqry1tXV5WWFJj1Gp8Pff/m981fGk8M/5W5Gnqdo8ZaY93zmqyAA6BsP3dlSs219LRW29Ew3RN94+MVfXf3+ax8PTUdF1snM3YxlfoXFR5r6bbN/Ylqqioxt8jxFWb2IEBzD3Fiexy5ZEEwUisRff+93b/UO7NnR9tSjO/Zs+0x1lX2P6NibF091D0AthiElhKLacyd6d29usJ0R0g3RPxE+/t714+8O9o+FDGRrWAIkswDJgFJJaPong5NdZ650X7VvDd7o6X/uJ++HYhqU7OF5yWbkeYrytAAABKBgKpwYD8b2bm8u91lrf3rU/94rl7q6RybDCWGG2ulxNNX229sCyCcAACKZb0loxifXJ7vOXO2+OmZVBqPT4e//h+n8KEtUsbgZeZ6i/AWQ2rFvzJojpBuibzz04i/7vvfKxa7u4clQQtDi8y+LACRzgRZAgKqEYonX3//0rd7rezo2PPVox55t6/Nxio69efFUT39hzo9w4M4RBDMjtHtzw5am6uW31Q3RPxE6/u714+9ez3J45Ip7s5DSAmRWYVoDooRufDI42XXmanefaQ0Cy1iDN3r6n/vJe6GolhmSZlexvAUAdFFdVd5Q619VVe6vKIvEEkKI+d3ztwBEwK0dodSofzU16sdTo36OoZctgHTMW4MrSWvw1e1LWoPR6fAPT/WOTYbgU+2MnbrRWB94/At3fHFrc0fbGiFEOKb9/ML1dz4aeevCoIB1m0AEgZPnhk6eX/eH921Y4AilRv1rx397Tc4wd3lYABkIc+hRQjEtKYMdG576vW0LZHDszQunum05PwIEPNyx4Ttf+dwj29cTUTrnfldr7cEvbH7p7U+O/8/H4zOR+ag6T5IZoQu7NzdsaUw6Qsmu/9trx9+91j86N9/1KXWkDLtA2e3PKDaZKZrqOtvX3Te+qjLpFL3R3f/cy+nMD2VXdysXyBBf3r7hxW8/1NHWoAsyMu70phuorih78LNNTXX+ty4NJXSxnO+x2D9JZoTi48HY3u0tPpWujode/MWn3/uvC13dQ5OhVIZnySNlF4hZApHswaFY4vX3r77VO/jlHZ/544c++29vfTg2OQeLOUezxDV1/m9/5e7G2qqEvtANIYIhAIMe3fGZ0zs3vHq2z3r5BIjXzw2/fNfAaDD20jv9/aNzRnoI4FE/ByyAW0EEFaFY4uT7V375f9djmg5VsdObdHHoi1se2b5By/HcMFMDgYqyZ7++438/ujE+a/3xAkRzMe0vXz4Xixs6sk0TkwPZrgWyhdnbFSUc12zeoVYIv7/8vq0tRMutuDI10Fzn37Vpjc2VWYRwXJ/v/RLnN/OEBWAF22OqQG2goqOtwRC3SMAIgRp/WUdbQ0F9lwf+vGEBeIWwMKZLti63mLAAPIGgGUY4pt16Q4KuIxxL8CjuDSwAjxifCf+895pPWW50N+eCx4OR072DPFflDSwATyCCId65PDwyFVFyx8FEEEK889GNkakwWwBvYAF4haL8qvfaj9/+UFGwWAPmR1XBtYng37/aE47GOZL1BhaAhxD9+O3LP33vSjieMC+kEKnIWFEAiL6x4N/+d8/ARBAKpzA9gifCPIQwMRN59qXfnN7V9uyBzua6qhp/OQBdN8ZnY+9cHvm713oGJxxe584sDwvAWxQKx7WuM1ff+Wikc/PajrY1QiAc0073Xr8xFQ7FEnyppsewALxFCBAZEBOz4dM9A6d7BuYv4Uq/+KIdD2EBFIXUva7SlzoKHviLAwfBjNSwABipYQEwUsMCYKSGBcBIDQuAkRoWACM1LABGalgAjNSwABipYQEwUsMCYKSGBcBIDQuAkRoWACM1LABGalgAjNSwABipYQEwUsMCYKSGBcBIDQuAkRoWACM1LABGalgAjNSwABipYQEwUsMCYKSGBcBIDQuAkRoWAHPbYdz6cbRprAiACMSCYUqbRATTQ/lvzh2aub0QwjULwDC3HRYFwC4QU+KEJ6En8t/cqgD4OVZMaROectkFYg0wpYyV3g87FoAFwJQsiailFBBsBcEsAKZU0ROWAgDYcoEU1gBTihAwMwQtamkne1kdFgBTeuga5sas7mQrCOYwgClBEmGEJq3uZMsC8GwAU4JMXbPq/8CuAPiiIKbESEQxOWBjP7v9mB0hpqQITSIRtrGf7YGcOBRmSgVdw80rMHQbuxZgARTWAFMaBEcRHLW3ayGuPHtBTAlgaLh51d7wD8Bnv2IyLYAo9glg5KaA4R8FrwdgL4gpKokoJmx6/yaFCYDzoUwRIcLEFcyOFFJGwd2X86FMsYjNYbK/wDIcGb9ZA4znJGIY7kU8VGAxBQTBaczeL8ABMeMdE59ierDwYpwQgAkbAcYjBKYHMXHFkbIcCmE5EmC8gYBYCMMXoMUcKc/ZHA7PDDAuk4hi+ELhrn8aRwVgGgE2BYxLJKIYPI8ZB1z/NE5n8bn3My6hxRzv/XAyCE5DlMoIsRgYh0jEMHQeM9bu+JAPLggA3PMZR9Hc6v1wSwAAi4BxAoFYGCMXXer9cFMAi46EJcFYZWYIIxcRt7PUK09cFgAhmRUV3PsZK2hRTPbhZp9T+f5ceGABzK4vsj8yTA4EEA/hxofuuT2ZeOYCmUcmAL6xHJMbLYabfZi+7qrbk4mXAgAACAMgfjAHsxBdQ2gCN/ts3N2tEDwXAAAhAB1QQAoEsT2QHUNHaAKTAwhNFLK2yx7FEEDquGEYIAVQOUckI0JAjyM8janidH2TIgrAPAtG0ilSVPaLZMHQoEUxO4zpIWgxq4+0cJZiCyCJ+WQ/AinJF7tGtxsCWhyGhuAYwjcRnoYeL3aTgJIRgImA0CF0GEjKwLQMRBCC70CxkhCAHocQIEJ0FpEZCB3BMRia23l9q5SUADJIukaAkUj2e1KgLIoWzAvvkl9kfm8WssCMUM7vkVrIsERRy1RBi4IXmp/2yLowdkEV2UqmzCZZqiJz+1zfL64i469LVEHzf19cVHr56/JVGDrmxmDoAMFIFMu/z4dSFUAW5lyyDr10zyOzQuG4k5EaFgAjNSwARmpYAIzUsAAYqWEBMFLDAmCkhgXASA0LgJEaFgAjNSwARmpYAIzUsAAYqfl/tKPgDJNbGJcAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/assets/icon.svg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+CiAgPGltYWdlIGhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBSUFBQUJNWFBhY0FBQUFJR05JVWswQUFIb21BQUNBaEFBQStnQUFBSURvQUFCMU1BQUE2bUFBQURxWUFBQVhjSnk2VVR3QUFBQUdZa3RIUkFBQUFFRUFkTjl6NmEwQUFBQUhkRWxOUlFmcUJnVVhGaHpTWmN1N0FBQU1lMGxFUVZSNDJ1MmRlMndjeFIzSHZ6Tzc5L0xkK1hHKzJFbnNPRWtUQmZLd2tqWTRyUkJKQlFVaUlacnlSM21vb2p4S0NoSVZVcW1pQ2xXRW9najFqN1JDVlN1aFBrVC9xRXFoVVJWS2FRcWxUUVFSVlJOQ2dnUk9nQ1NPRS92aVY4NitzKys1dDdjei9lUE85dG01eCs3ZGhWbkg4NUZsM2UwOGRtKytPL09ibWYzTkxNR3RleUFSQnhWOUFZc2RLWUJncEFDQ2tRSUlSZ29nR0NtQVlOUTY1MGNJUUVFb0NNbDlCOGtIVEllaTRIaVpPS1Fndy9MSnpjUXBmWXJDT1BPK3pqc0ZaOUFTTUhUb0tSZ1pjR1luQVFnRlVVQXBRRUVJQ0FGbS9xUGdjNmtqTStVeTk0akphUE9QV0QrcDJXZ0FaekIwWkJKSVRpQitCVm9NbkFzVWdJRFE2YitaTytqNmhSQVFGWW9EemdiNDJoQmNnOFE0b2lIRXcrQkdkVmxXSlFEUDNUUVVoQmJjcllzTUFpaE9OQzJIZnlrU1lZVDdrQmdITE5lR3FnU1lhV1FrQUtpQ3hxWHdCaEFaeE5oWkdCbHJxYTJkTEMrd0xQMnJVSndJcmtGWER6ek5sdEpaRVNCdmJZZ3MvT0lRQW44YlZtNkRiNG41UktZRnFNM1dMeUpjUG5SK3hid0c1Z1NZS1gxNTc1dkI1Y09LcmZDMm1vbHJRZ0RPQVM1cmdEVmNQaXpyaHNOVE1hS1pHc0N0ZDY0a2dHOEpscTRIcVZEQ2xRVGdQRjhEWk9OVEJZRlZhRnhXUGtwWkFUZ0haL0wycng2cW9QMUdxSzV5VVNwa0laditHbWtJb0ttalRIaHBBWEszUDJUUHB6WUlRZXRxS0k1UzRaV2FJRW50TkxUQVczSllVTDRHU0FIcUFWWFFYTElWS2lFQTUwQjlIamhJQU1BYmhPb3VHbEsyQmtqcWhkTUx0NzlvU0NrQlpQdFRWeFFWTGtzQ1RNOTdTdXFHczZIbzRkSTFRRkpmM0kxRkQwc0J2aWdVUjlGbnQ5SXZTREJTQU1Fc0hnRnMycU9vdDJlY3ZTQk9zQ1ZNbzhBRWRTZUlvL1ljNjg1MUtRQUhxQWZzVy9yZ3ZkblFaaU9xZ3ZkUjN6OGNIWDl5ZnVrSzllVDltdXpCZFNrQWFlVDZDNW5lM1hxL2gyZHpoYjJTeGIrZUhkMlpIWG15WWRzRnBiSG1VOVFOZTlzQURoZ01qQlg4NXpCNHNTTjg1Z2hoN0duOTNKTjZuNGNiZVo5SlFrQ29BdXpVTC84aWRiS1JXL09kdXFiWXVBWndkQVo5bTFhMlRqdlBZbzdUTGpESG5YYjZLeWNrT0JuZS9XbS93dm44ZmpjaDRMaEx2M3k3UG56UXVVcjB6OHRqVndFNGIvSzZmL1hZOWwwOXF4a3JIQlZXYUx5NVFzazc3NmluVThXRENYRnhZNmMrZE5EWlpaUGFiMU1CVkVxZi9mWk51M3BXSzVRcVZndHFZaHlHQVVVcEZiNkNKUnpndXVqZm1NTVdkOEVjT01ENW85L1k4TVNkbXhSYTFlVjV2U0Nrekd4dWxEZ04yM1NEN0NjQTQ3ZDFyOWg3YjQvZjQ2d3lodzBiNEM4Kzl3dk9HY2dSeDFKbW14OXVsK3ZJdy9qYWp1YjlEOSt5SXVpdlBwT3VMdlQwZ0xFaWxZQ3prMHJnYlVlSGZXWWI3U1FBUjVQUHRmL2g3VnZYdE5XVWo5T0orKy9IbGkxZ0xDOER6L1ZjRFczSjBsOTMzQklpRFRYbFgxY1VyTDY1V0ZrdzVMdHhwZGRob2M3THRWUks5MzNuNWtkdVcwOXJYM0xqODZHN0c0cUNXQXpwTkNoRklJQnQyOVRkajdrMmIvcDM3MGhTTTZwWkkxYkxValV0anNpbHE2L1VIcjBnemdFOGV2dW1KM1oyVjJsNHJ5WVl4RU1QNGU2N2Nma3lEQVB0N1dodmg2cnVaSHp2cmcwL1B2QkpPc3Zzc0xqS0hnSXdmdHVXbFh2disycjFocmNvbENJWVJEQlllRXloWlBlT1ZXZEhZeThkNmJlRDM0Y05iQURqYXp0YTlqK3lveWJEYXdXUFU5bTdhLzBkRzl2QXhCdGowUUp3M3VSejdYOWt4OVkxN1Yva2FkdjhyaGNmNkY3ZjRSZnUvQ0ZZQUZWVm5yM3ZhN3UycmFrdWVkOTQ1a1FvVlYzYURjc2JYM3lnZTBtalcyd2xFQ29BWXoxcjI3OTNSNVdHdDI4OHMvdmc1ZnYvUEhqNGZMeTY4OSs1c2UzZW01YURpVlJBcUFBY0c3dUNMVjVYRlVuN3hqT1BIeHg2OTN5aWZ6enorTUdodzMzVmFFQUoyZExWQkVWa1gwaHdFOVFSOEJIcmZjRm95dGp6ejVFajUrTWdBQ1VYeGpOUHZURjhaa3lyNGdJNld6eU9SU29BQnlocDlybXRwcHRLR3o5NVovVE5NekVRekd4UThlbW85dFFidzMzamxwKzArRnlxUzFXc3Bxb2pJbXVBcWlycmxyZFlTaktWTnA3NTEranZqa1dNd3VjdGhJRGd5UG40NHdlSHJHclFGZkMwZUIwQyswSWlCVkFVNm5SWXUvdisrRkgwdC9OS1AwZE9nM1B4ZllmSERDdEdWVkdJMC9JRGgzb2lzQW5pUWI5N1ZWdVQrUlFHNC8rOW1HUUdMejZGUUFnSVBneWx3Z2tMTzhjRWZjNVZ3UWFCUFZIUk5VQzFjQUc2d2ErVUwxeUN5VFNMWlN4TU1TaVVPRlVxY0VBczBnaDNCUnRickJqaGNOSzRHTW1VZjVZVlRoa1hJeGJNZ0VPaDY5cDlBdjJFQk5ZQTduTTczRlpzd0dUYWlHbXNmRmxWcmlWWDBld1JPU01wc2ducURQcFZLd1p3TUtwSFV1VUxsekNEbncxYkd4QjBCRHdDeDJJaUJiQTZDb3VrbVZHK3JTWUFSeVdSNXRQWjdIYlFSU2dBcGMwK2E1TVFaOE1hTXlyN2RaNE5aM1REZ2xIMXVWV1hnNG95dzhJRVVGVzZibm5BZkh6T2VTaXFWL2FySlJpTFoyT2FoWTVRVjhEVDB1QVUxUkVTSm9CQ0xmWkJHUVluZFdCNkJYbXBQK1FFc05BS0taUTRWYkxJYWdEblFiOW5WYnVGVVZna1pRekhzbFFsRHFYY242cVNlSVlOVG1iTjV5eDJMQ2FzQjZZb3hHbGxGcXpSUlg5NTk3SlVsbFUwbDRSZ1hkRENzMldGNW1ZanhDZ2dTQUNPcmlYV1JtRWVCNzExamZkYVhFdHVMUFlXeG9TVWhMQW15T29vN0pyUzdCRzJla21ZRWU1c3RUWUt1NlowQk55aXhtTENiRUJIcTlsUm1LWWJmMzcvWFA5WWpOS3J0Nmt2dnVjOEIveHV4ME8zckc1ck5OWEtkVGE3SFFyUnE5eC91eVpFQ01Cem96Q3pCdUN0andaKytJZjNweEtaZ28zeFVjeUJjTTV4UW1rOHJUOTNUemMxTWNyMXVWV1hxdWhHOW91ZmxSUFRDQ2dxWGRwc3lxSU9oR012L1BYRHFhUUdoVUtob0FRS0FjMTlMand5N3pqaHdFdi9PZmZlWjZaTWEzT0R3KzlXaFBTRHhEam5jbzVURjhZaWlYUm5zTEhaNXlyVkZ1a0cyM2ZneE92SEw0QlN5MTZ4aENUVDJVdVI1RjJibDN0ZEpTdjZsWmoyeXZIUTgzLy8vTnhZa290d3poWG1IUjJOcFkvMkRoNDYyUitKYTUxQmYxRVozdnl3LzZldm5kQU1WdklVd0t4dmM3R1RYZ29uRzF6cWpodmFyczQ4Vi9SN0RweCsrZWhBYUNMRkJYbEhpM05QcHdTRVJHTHBvNzJoUTZmNkl3bXRzM1dPREFQaDJBOStmL1RpNk5UY3dwMTltd2lscExXcG9kSHIwcklHWTd6NFNUbk9YSTcxckFtc1h1S2JVL1RIQnZjYzZIMzV2WXVoaVJRamhmb3RIZ0Z5bi9NeXBJNzJYajUwNm1Ja3JuVUdmUzFlVjVieGZRYytlUDFZWDBIalUzQUtqbVVCLzlQZi9QSXo5Mng5Y1BzTlcxWUdCOFlUWTVPcEl1V1lhNGdta25kdFh1WjFxVmRpMml2SEJ2Yjg1Wk9YMzdzWW1rZ3lRa0FGcnc4UUxVQmVCZ3FDU0N4OTlIVG8wTWxMVXluOS9QRGt6LzkyU3N1eUlxY0E4VGM0OTM5Mys0TTdibWoxdTV1OXJvMHJXbnJXdHIvLzJjaEVQRjMwRkFNVFNZWFNTK09KSDczMjhmUmREK1Q4SWVVQ2pWa280U0I5dzlIblh6M21kS3JwelBRaWxua3d2bjFEeCsyYlZ4aTVSV0FFakdOOVIvTjlONi85MmVzbmk4eFhFekRPWDN6N2M4NmhHeHlVVHQvMXRzQXVZOUdDS3lJTVNHZXlaWXBvZlVmQTdjZ3ZoU2ZUK3p0dTZHaFJGYVhFbkJySlpKbk9PTVE5K1NyNWMwVmZRQW5LRHBLSElnbUQ4Y0lvQkJpT0pyS01sYnkxYlZmeWVld3FRTGxMSnUvMmhqNitGSjZaekZZVmpFMmxEeDYvQUxid3R0bGZnQUlRREUvRTk3NzZ2M2Q3aDVKYU5wTTFUZzlHbmp2d3dmSHpZM1pZZEdjVk94bGg4eEJ5NHR6bzkzOXorTWJPZ011aG5oMk9qa1NTQlMrd1hFZ3NUQUVBVURLWjFJNS9OZ3lTNjhVdTFKZHJMVmdCQUlEa0ovRVhadEhuV0lBMjRQcENDaUFZS1lCZ3BBQ0NrUUlJUmdvZ0dDbUFZS1FBZ3BFQ0NFWUtJQmdwZ0dDa0FJS1JBZ2ltbEFBTGVZTFJucFI0TTdNVTRJc2lOVm5VWWFDRUFMTDg2MDYyK1BMeDBqV0FDRnM0ZUIzQ0RLUW1pNGFVTWNLeUZ0UVBQUTB0VmpTa1ZCTkVGdUlEYnZ1U25JQ2VMQnBTdWdZUUt1dEFmZUFjazBPbGRrVXJQdzZRbzRSNm9NVVFHeWtWV0tZR2tMd25wVFRGTlJJWmdGNXllOS95OTdpMEJEV2p4VEZ4cVV4NFdRRUlrWmFnSmpqSGxYUFF5dTNxYTZhVmx3cFVTMnlzL08yUHlwNXhNMDJRblY2QXVURFE0aGo2QkVhRkhRUk4xSURaMVRZUzB4ZzZSazRqRmFrWTBaeHY2TXkwaEt3SFpqQjBEUGNpTW1nbXJ1bWV2dXdPbVNSWCt1UDlKdnZ2VnJ5alpUMm9TQ2FCa1U4UkRaa2ZQVmwwVHljb3lGcUtVQWhIN0FwR3ppQVZ0WlNzdXZVQkhGdzJTak53YUVtTVgwQTBWTEhQY3pWVkw5RGc0QVk0QVZVV2IxWGdISmtFSm9jUUhVUW1XVjBlTmE2UTRXQlpFQUtpQUJSa01VemU1VjVMbVVGNkNyRlJ4TVBJcG12SnJoNUxsRGdIendLWVhpWkg1Mnp3Z0lMZHJXWS9GUHM2K3dHVjA4NW1NdjExSnJMNXRHWXltUTNsMEJJd010RGl5Q1NRVGRmbHZSdDFYU09XZi9CdndBN3ZDSnlsamkxay9XZUdGL1FpUFpQWWVqNTlNYlRhdGtZS0lCZ3BnR0NrQUlLUkFnam0vdzZaaHhtK2djcENBQUFBQUVsRlRrU3VRbUNDIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIvPgo8L3N2Zz4K]]></data>
	</file>
	<file>
	  <filename>/assets/screenshot-1.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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/uud/+9NmzZ161asGDFs2K23nnJKRJEihQrlz7+7ewUkUaRIwYL58kWcdFK7drVqRXTp0rhxxYoRrVvXqlWmTETZsqnvo+LF99svX76IjRt//PHnnyOWLv3mm/XrI778cuHC1asjRoz46qslSyJefXXs2LlzI778csGC1at399kBAAAAwM4RwAIAIFc1bVqrVqVKEV27tmpVr17E0KGffTZ9es63P/XUQw5p3TrnwavcdvLJXbu2bJnz4FVanz49e7ZpE3H11Y88MmjQzvfj8MPbtm3YMOK///3rX086KRPE2p6KFUuXLlo0s2zYsFq1cuUiunVr1apOnUy7f//7tdc++STiggvuuee11379cd6e/Pnz5t1334gbbujbt1u3iD59br/9pZd2d692n/79e/Vq2TLi4YcvuujII7NvV7duv3733RcxY8aiRTkJrO1q99xzzjmHHCJ4tafp379HjyZNIh5++LzzevTIvl3duued98QTqftJQOb3Z99999knT56IK6446qgWLSIuu+zII5s1iyhRonDhnDzPefPuu+8++0TUrFmuXNGimeVhh7VoUbVqxC23nHxymzYRZ5zxwAPDh0c88cSHH+7I3xdI6d+/c+c6dSIefrhfvwMPzL5d3bqXXfbGGxEzZixZ8t13u7vXAAAAAL89++zuDgAA8Nt00UUnnNCpU5Ltjj8+yXa5pW/fVJBqR512Wo8erVtH7LNPnjx58iQ/fuvW9epVqRIxcOCNN/bpk/Pg1W/VKad069a8eUSTJqmKX+wdypRJ3bft2jVoULly9u2GDZs48euvI8qXP/XUu++OyJPniCNuvTWzvPjihx56//3dfTbw+1KsWCowOWTI3/52+OERf/97KiiV0+DVjkpX1gIAAACAvZkKWAAA7BJHHNGuXZMmEbVqVapUunTErFkLF65YkX377t1bt65XL6JJk5o1K1b89ftbv37VquXKRRxwQMOG1art+PZVq5YrV6JERJcuLVvWqRMxZMiOVf5Ku/nmM8/s1StTAWpLa9du2PD99xGXXfbAA2+9FfHmm59++tVXEUuXrl69Zk2m0lCjRtWrly8fceihqSkL+/bt2bN164hKlUqXLlbs1x/fpNKBtr///YwzevSIOPro6657+und3avfrhYtLrjg4YezWpOJFeYkYFi1atmyRYtuv91zz3300ZQpqft33brs211//f/+N3x4ajliRNb9Ys/RosUllzzzTNbrXLE9V758qYpVL798ySXdu0d06tSo0ba+j9et27jxxx8j7rpr0KBJkyKef/7jj2fNylRY2mefVAWtatXKlClcOKJbt8aNK1WKOPfcHj0aNoxo2LBy5RIldvdZAwAAAEDuEMACAGCXSP/weuGFxx3XsWPEn/98772vvJJ9+4svPuGEzp13X3/79u3Va//9s1//ww8//vjTTxHffLN27YYN2U+R2KdPKui0owGsdOCqa9dfThW4pZtvfuqpIUMi7r//9dc/+SQi4pcVtzZu/OGHH3+MGD78iy9mz84sr732iScGD44488xDD91//4hy5UqUKFJk9433jjrqqHbtGjSIaNeuUaNq1SI++WTKlLlzd3evyE6BAvny5c3Bv22uW7dx4w8/7O7eAhERF1zQq1fjxhHduzdtuq3KdStWfPfdxo0R3brdfPNbb0VMmPD11ytX/rJN6nsp9f+nTJk/f/XqzPK++wYPnjIlol+/zp3r14/YuPHHH3/+eXefPQAAAADsHAEsAAByxaefTp48Z05E27aNG9eokfn8zDMPO6xt24hrr3300bffjvjuu3XrNm7MrK9bt0qVsmUjDjusbduGDbfe7yefpPbbrt0v95tb8uRJBZhOOaV791atsm/37rtjxkydGvH110uWrFoVcf75f/hD+/ZbtzvuuI4dmzWLOP/8u+565ZWINWvWr9/8fLNTrlzJkkWKZF/5Km3u3KVLV6/e8fP88ceffvr554iHHnrzzdGjc38cfy233JKqhNWly2WXPfror3/8EiWKFClYMOLMM3v2bNUq4pBDWreuXTuiadPUFImlShUtWqhQxKZNqf9bvvybb9atixg/fubMxYsj3n57zJjp0yOeemrIkIkTUxXNsgogPffclVcef3zESSd17Ni4cc77N336o49ecEH26ydP/vrrZcsimjQ599wHHth6/fjx99131lkRzZvXqpXVlI9DhowfP2dORPfuV1+9eYWjv/zl2GPbto24445+/bp1y3l/n3rq0kuPOiqz3FkVK/bpc++9EYsXr1q1du322xcsmD9/3rwRJ5108MENGkQcfvj++9epE9G6de3a5ctHlC1bvPh++2UqAy1YsHLlmjURM2YsXLhqVcQrr3z66fTpES+9NHLktGmpYMr69Vsfp2jRVGW6Dh0aNapcOaJz5yZNqlaNaNu2fv1KlSJq165QoUSJiNKlixYtWDAib97U8dasSd0f8+YtX/7ddxGffTZz5pIlES+8MHLk1KkRb789btycOds/z+ee+8tfDjss4qSTOnSoXz/n4zl9+n/+c/rp2a+fPHnu3BUrIpo0ufjizSvTjR8/YMApp0Q0b16jRpkyW283ZMjEifPmRXTvfv312wrmbqlEicKFCxSIOPPMrl0bNYo45JAWLapVi2jatFq10qVTz1/BghGbNm3alHr+vv12w4aI8ePnzFm2LOLttz/77OuvI5566sMPp02LWLt2xwKA48ffcceJJ27rvL74Yv78iO7db7zxjTcievZs0aJq1YhzzunRo3HjiHbt6tevUCGiVKkiRQoUiFi5cs2ajRsjPvpoypSFCyNuueWVVz7/PNXf5ctz3q+dVaBAvnz77htx1VXHHNOixfbbn332I4+MGJF18ConUlcn4pFHhg2bNm3Hty9aNDVl4emnd+pUp05Er17Nm1epEtG8ebVqpUplxjd9HyxcmKqwN3z4V18tWRLx6KPDhk2fHjFy5PTpS5fm/Ljjx99665FHZo6zpSFDJk9etCiie/dbb33vvYiePZs1q1Qp4pxzunWrVy+iXbs6dcqWTfUvf/7U9f/++4iPPkr165ZbXn990qSI8ePnzl21Kvt+PPfc+ed36BBx0klt21avnvP+T59+xx1HHpn9+smTFyz45puIJk2uvPLtt3My/gcfXKtWRK9eTZtWqJAal5IlI0qVSk1VmbrKEQsXrlq1fn3E8OHTpi1bFvHoox9+OGtWxMiRM2Ykuc/Hj7/ppkMOiWjevGrVrCqoDRkyZcrSpRHdu99xx4cfRtSqVbZs4cIRV111xBENG0b06NG4cfnyEZUrlyxZqFDEsGFffbVsWUSPHnfc8dFHO94fAAAAgDQBLAAAcsVdd7344gcfRDz3XOPGm/9gX6xY4cIFC0acfvqhhx54YMS997788uY/cF100QkndOqUCUJltd8PP9x1AayuXVNTBlarVr58yZLZt3vuuaFDP/98+wGswoULFsyfPxXEato04r//fffdsWO334/vv//hh59+2n67P/3p2GPbt89U2FqyZPXqnARN9jbvvjt27PTpET17tmlTt27m886dmzevWTPzebrdrnbyyZ07N20a8cADf/rTEUdEFC+euq+3p2rVsmWLF88sjzyybdv69SOuu+7UUzt3jujb95//fPXViMGDx42bOXN3jfbvzyGHtGxZs2bEY49ddNGhh0ZUrly6dE6mTEwHpdLLnj1btapZM6JHjxYtatSIOP7422577bWtt7v//nPP7dEj4pRTOnXKKmianXTgKL1s2rR69TJlIvr27dq1ceOI994bP/7rryOOPfa2215/PRPY+q05+eQOHerVi3jggbPP7tIlonjx/fbLn3/721WtWqZMkSKZ5ZFHtmlTs2bEddedeOIBB0T07Xvvve+/HzF48IQJ8+btfD/TQaannrrwwm7dIk49tWPHevWyb1++fPHihQpFnHBCu3a1a6f6V6NGxBFH3Hbb22+nAl0LFuz68e3UqWHDihUjypRJBdiy89VXCxeuXh3x8sujRs2evev7taVjj91//+rVIx5++Kyz2rfPBK22p06d8uWLFcsszzijU6e6dSP++9/hw2fMiDj77Ecf/fTTVAXJnHwPZ6dAgVSA+qmnzj23Q4eIU09t375Wrezbly9fvHjBghEnnHDggdWrRxx5ZKtWVapEHHHEnXcOG5YKdC1e/OuPc/bj36ZN1aoRDz985pkHHJAJWuVk/IsUySzPOOPgg2vWjPjvf0eMmDMn4uyzn3hizJjcr4TWpk2NGiVLRrzzzqWXduwYUbp0Kvi2JdOiAgAAALlln93dAQAAfhtefXX48IkTI+bMWbw4q4oY6akI00Gr4sULFy5UKDX13wEHbN1++PCJE2fNivjss2nTcuOH8ez06dOz57amHly/PlUh5bXXRo6cPDli5MhJk+bMiZg3b9uVqPr27dmzTZuc92Pp0tWr16yJWLBg+fJvvsm+3YEHNmxYrVrEnDnPPnvVVRFvvPH3v59+esTll590UqdOEd27t2pVt26qUlOhQrtu3Ha1q6567LHBgzMVTLZ0yy1nntmjR/bBvdzSp0/37i1aRDz7bKoiVU6DV9tToUKq4tmbb95wQ+/eET16tGq1rR/qyR1/+EPbtnXrRrz99vXXn3BCzoNXe6oePVq0qF49FfDq3n139yb39enTuXODBhHPPvvnP/fsmfPg1fZUqFCixH77Rbz55lVXHXFERI8ezZtXrbrz++3QoUGDihW3H7zKTsGCqQDXo4+ec07nzhH77puayndX69SpUaOKFbff7p13xo+fP3/X92dLJ5980EG1akW89NLFF3ftmvPg1fb07XvwwXXqRDz77AUXpP9+sjP769Chfv1y5bYfvMpO5vr379+u3a93/bfn5JNTlbZeeumCCzp0yHnwanv69u3QoUaNiGefPffcdu12fvzTihYtWDBv3ogXXjjvvHbtsg9epe3av0UAAAAAvycqYAEAkCt++unnn3/+OeK++1IVrv75z/PP/8MfMus3n2qwUaOIhg2rVy9fPqJIkUKFsvohNV1Ra1fJVKrq1KlZs+zbvfXWp59++eXWUwm+8MIHH4wfH3HppSee2Lnz1tt17tyiRe3aEdWqlStXokRq6sBtBavS7r33lVdGjoy47bazzjrssOzbpadOO+KI1NSN6WXazz+ngksTJsycuWhRxIsvfvjhxIkRDz74xhujR0esXPndd+vW7brx3VkTJ86atXhxxLPPDhs2cWJE795duzZvnlnfqlWdOpUqRZxwQseOTZpEvPDChx9OmpR7xy9fPhWQ+ve/L7jgiCOyb7dmzfr1338fce6599775psRr776ySdffZWasm7ffSNOPbVbt2bNIgYM+OMfe/bMTC2Xli9f3rz77BPx2GOXXHL00RF16/brd++9ESeffOutL72UWfbv36tXq1YRDz980UXbmkKqbt1+/e67L2LGjEWLtjWFVW775z8HDvz008yybdsGDapUifjkkzvv7Ns3++1OO+3OO19/PeLpp4cNmzw5+3bXX9+798EHR1x3Xe/eHTrseP9Kl05NDfn44xdffPjh2w82PP30Bx9MnhwxYMCrr44dGzFlyrx5y5dHFCu2334FCkTUrFm+fIkSEd27N29evXpEuXKpQE92Vq1as2bDhoinnho2bMqUiFdfHTVq+vSI6dNTUxkuWZKaIm3VqtSUdOnjNG9es2bZshHXX/9//9euXcTBBzdqVKXK1vvv3btjxwYNIq688sknR4yImD9/xYrvvsusP/nkf/7z7bczy/79DzmkSZOIhx8+77wePbLvd9265533xBOp+ym7wGlqHHM3wFC+fGo8//3vs87K6v2alq74de65Dz74wQcRr746evSsWZnn6tRTO3WqXz9iwIC+fTt0yOr5S/35scfOO69r14i6dS+44OmnIzZs2LlKSOmpBc8664EHPvggFVyaOzeibt2KFYsXj3j66T/9qXv3iCZNqlbNaiq76tXLli1aNKJ9+9SUhR999OWXu7ISUqVKJUtu6/5Nmzp10aKcfI/llrJlixUrWDDioYf692/fPvugzOrV69Z9/33En//85JOjR0e88cZnn82dm6pIljdvxHnn9ejRoEHE1Vf/4Q9Zfd8fc0ybNtWqRZx+eseOdepEPP74hx/OmJG835nrn6qs9c47EyYsXBhRt26FCkWLRjz99HnndegQ0aRJlSpZTaFXvXqZMoULR7RvX69e2bKpKQo3nyrx5JP//e8RIzLL/v07d65TJ+Lhh/v1O/DA7PtVt+5ll73xRsSMGUuWbP5+2NzmI1y2bNGiBQpEPPTQmWfuv39Oxv9///v884g33vj884ULUxXB9tkn4rzzunWrWzfi6quPOqpRo6zGv3XrKlUiTj+9Q4eaNSMef3z48JxMrZqdAw6oVatUqcxUlzff/MYbX34Z8dBDH3wwe3bEqlVr137/fUTbtrVrlyqVmZIQAAAAYGepgAUAQK565JE33/zkk60DS2mXXHLSSZ07R1xwwbHHHnzw1uvTFbRee23EiNwM1GwpHbxKB7Gyk556MKvPx4/Pfrt0ZabTTjvkkB2phHXHHc8998EHEU899d57n32W/Pz22Sd1/JYtU0GlW27p169Xr4iZM59++rLLIo48sl27HZkKbXe55ponnhgyJOKHH378MatAxE039e3brdvWwYqd1a9fKvBUpEihQtu6P66+OtW/p58eOnTChEwga9WqNWvWr4+4997XXhs1KuK++15/ffTo7PdTpUqZMsWKRRx7bPv2e8N12dv063fIIc2aZabyy84DDwwaNH58xGmnDRjw1lsRn38+a9aSJZmpyZYt++abdesiRo+eNm3RoohbbnnxxU8/jbj44ocfHjo0+/1eeOFDDw0ZEtGnz113vf12xMCBn3wyfXrEF198/fXy5RFLl6b2+8MPP/30888RK1Z899369RFDh06cOHduRP/+9903eHD2+08/7x07Nm5cufLuHu2d169ft26NGkUUKVKwYL582be7+ur//e+TTyKefvqjj6ZOzQSy0kG2e+99++2JEyPuu2/QoC++yH4/VaqULl2kSMSxx7ZtW7v2zvf/T3967LHhwyMGDhw1atasiHXrNm788ceICRPmzFmxIuKyy5566pNPtr+fJk2qVcsqoJXbSpTIWUWjX3uKy379unSpVy+iaNFChbZ1H5x11sMPjxwZ8cQTH300fXrEihWp679w4apV69ZF/O1vL7zw2WcRL700atS2gj1XXHHkkU2a7Hy///Snp54aMyZi4MAxY+bOjVi37vvvU9d/7txVqyIuu+x//xs3bvv7yS6g9Wvp169Tp9q1UxWltj3+jz02ZkzEE08MHz579ubjv3r1+vURf/vbyy9/8UXESy+NGbOtiqZXXHH44bn5/XfzzW+8MWVKxDXXDBw4aVLEvHkrV65bF7FmTep5fP/9KVOWLo244ooXX9zW+wEAAAAgpwSwAADIVd98s3bt+vUR//3vO+9kFTjp2rVVq3r1IqpXr1Ahqx+W77tv4MDhwzMVtXaVvn23PfXgd9+tW7dxY6oC1pQpW68fO3bq1HnzImbMWLBg+fLs99OnT8+erVvnvF/pylV9+tx663PPRRx11NVXP/FExIcfTpgwa1b2U/LlVHpqwhdfvO66U06JaNSoevVy5XbdOO+sWbMWLVq5MuKRRwYNyuoH63r1qlQpUybijDN69mzVKveO26VL8+Y1a26/3eOPDx6cVUBvS48++u67OQnUde7crFmNGrl3HqR0796ixbbGNf1U3XDDc8+NHLnr+nHAAXXrVqwYcddd/ft37RoxatQ//3nKKRFLlz755HnnRWzY8NJLF18csWnTa69demlmOXXqf/5z5pnb33+lSqVKFSny647trtClS5MmWVX62tLjjw8d+uWX22/36KNDh2b1Ht9S5847F2BbvXrt2o0bI557buTIbVVQmjFj8eJvv93+/kqUSFVC29VWr05VBNqe7QXiclvXro0bb2tqxHSlqYEDR4/++uvt7++ttz7/fFtTKNavn6pQVqNG2bJJnqN0Jajnnvvkk9mzs2+3rQpUmytRInem3Eyqa9dGjbZVGWrlytR9M3Dg2LE5mZryrbcmTFi0KPv19eunKoTVqJGqAJZUOsg6YMC7706btvvGDwAAAPj9MQUhAAC7xN13p6YQPO+8P/yhQ4dMRajspCtmpSto7SpVq6amBOzcuUWLOnWyb/faayNHTpoUsWFDqnJFdp5/ftiw8eMjrr761FO7d996fb16qakX27Vr3Lh69YhPPpkyJSc/FKe98cYnn0yZklmWLVuiROHCEZ06NW9eq1ZE27aNGlWvHtGuXWp5wAENGlStuv2KUOmpmc4//+ij27WLOP/8e+997bVdN+4768Ybn3lm6NCIvn0POaRly4j99itQYPMgwLXXnnpqly4R5557992vv77zx6tUqXTpYsWyX79s2TffrF0b8d13WVd629Ls2YsXZzeF2+YqVy5dumjRXT6cvzuVK6cqHGVn0aJVq9asiVi8eNWqtWtz77jpt95//nPOOT16RJxzTq9em0+lmdsKF/51AzK7SqVKpUptK4CxbNm3365fn3r+0sGhbX2/zJ69ZElOAk+VK2/7uNsza1bqOD/99PPP2wrKrl+/7e+VtH322fZUmbklXSlqe9IBpV9L5colS27repQqVaRIgQIRP/30zDOnn557x23YsFKl4sUj5sxZtmzNmpxvN2vW0qVr1vzy+md1/dav//77nExxma5st7tUrlyyZKFC2a8vVSpVOe2nn5544qSTcu+4DRtWqlSsWMScOcuXJ3kff/XVokXffZcKxP2aFdsAAAAABLAAANglpk+fP3/Zsoi3305VkDr88HbtGjfOvv0TTwwaNHp0qoLWhg27rl/pKQG398P2qaf26NG6dWa5s/r0OeSQ1q13PIC1pWXLVq9euzbipZc+/DA1pc9HH20+VWPp0sWK7bdfxG23nXXWoYdG9O9/2GEHHJD9/lq2rFt3b5iybPHilSvXrIm4++5XXvn444grrzz55E6dMuvTU/idf/5RRx144M4fb3f96L1z9c3ITp48u+eannFGt25Nm+764NXm5/lbsLc+f6tWpSpgbc/2Alq/tg8/nDJl0aKIq6465pgWLbJv16tXixZVqkT8+c9PPvlr9Gt3xY9Kly5aNEnlsb31+mdne8H5XaV06SJFdqby14oVa9bkpKIbAAAAQG4zBSEAALvUXXe9+OKHH2a/Pj2l3j33vPzyRx/t+v6kA1i/tpNO6tKlRYtM5aldZcWKb79dty7i3HPvuuuVVyLWr9+4cVsVIPLl23alrD3N7be/8MLw4RGrVq1Zs3791ut79dp//7p1d/44CxasWLGtijllyxYvXrhwRNGihQrl5If6mjUrVChRYvvtFi5cuTInU1OxY+bPX7FiW+NasWLJkkWKRFSosO2KOzvq1FM7d27UKPv133//448//RRx/vkPPvj++xEVK55++gMPROTNe8wxAwZE5Mlz9NF33hlRrVr//g89tLtH8dezYMHKlduqfFO2bLFihQqlnr+cBDVq1ixfflsV7dIWLszdCmh7i48++vLLRYsili//7rttBaAbNKhUqUSJiOOOO/DAnEzRurMWLFi5MieVuXJb3rz77LM3fS/uKgsW5KwyWm7Lm3fnKr/tLQE3AAAA4LdHBSwAAHap998fO3bq1IhJk2bPXrQookmTmjUrVsysf+ut1NR66YpZu8qBBzZsWL16RIMG1aqVK/frj0PJkkWLFioUcdRRBx3UqFHEiy9++OHEiVmN1z//+cc/Rtxxx/PPf/hhxODBY8dOn54JquXUfvsVKJA/f0S+fHnz7rtv9u0WLFi+PCdTc+0pVq9es2bDhoh//OP554cPj7jttn79Djkk948zbNiECbNnR3Tv3rJl7drZtzvjjNSUiPfc89prn36afbt+/Xr2bNVq+8f94IOJE+fM2frzH3748ceff97+9gUK5Mu3rev9e/X+++PHz5kT0aNHixY1amy9Pl3n5ZprTjrpoIMizj//gQfee2/nj1ulyranlBwzZvr0xYsj/vOft98ePz7dl63bHXZY69a5GXjZ0++nYcMmTZo/P6J792bNqlbNvt0ZZ3Tt2rBhxD33vPVWVu/TtH79unbdVhAu7YMPJk9esODXP9/dbcOGH3746aeIW2999dXx4yPuvPO009q2zb79gw/279+hQ8SMGYsXf/NNxIQJX3+9cmXOj5d+3s48s3PnevUiNm5MHf/pp0eMmDkz027o0MmTFy2K6N69adNKlbbez4oVa9Zs3BhRvfqFF77wQsTatRs3bjm147aDPJm1e3P1uB9++OmnnD3PefPuSLBs6NApU5YsiejevXHjChW2Xp8Z/0sueeONrMc/LevxzX7U9+brAQAAAPx++W/6AAD4VTRt2rfvbbdF5MnTseNFF2WWRx7517/+GpVd+vTp2XNbla/SAafKlY8//oYbIvLk6dz50ksj8uTp0mV7y7/8JSJ//h49rrgi4ttv163bVgWRvn233Y8OHZo2rVkz4p13/vGP/v0jZs58+ukrroi45Zb+/Q89NKJXrwMOqF8/olKl0qWLFYvInz8VsCpRokiRQoUiOnVq3rxWrYg337zlltNPj8ibd9sVrt57b9y46dN3/fjntnvuefXVTz6JWLhw25WNknr00Xfe+eyziLVrN2zY1lRGN998+uldu0acckrXrs2aRRQuXLBg/vyp61GwYMQFFxx11AEHZJbZmT8/FYQbOHDkyC+/3Hr98uWpymbb06dPt27Nm0cUK7bffkmm0Pqteuyx996bODFi9eptTxF23nmHHdayZcQTT1x88WGHRbRoUatWuXKZ56x06VSQsnXrOnXKl4+44Ybevdu3j7j33rPP7tZt6/0tXfrNN9u6bq1a1a5dvnzEsce2a1e3bio4mS9fphLXhRcecUTLlhEDBpx5ZufOuTcey5d/+21WFeS21KdP584NG6bup52ZEmxHPfrokCFTpqQCHduq4Hfzzf/3f23bRpxySseO9etHFC6cGr8SJQoXLlAg4oILDj20WbPUsmnT7Pczf/6KFWvWRAwc+OmnmweAfm/uvXfQoMmTI4YNmzx54cLs26Wn6Pv44xtvPOqoiJtvPumkNm0imjatVq1UqYhChfLn33ff1PXImzeiUaMqVUqUiLjwwp49GzWKmDTp9tuPOy7ikUf++McOHTLXa0uPPfbBB9OmRXz33fr1Wd0HpUsXKVKgQMQHH1xzzaGHRhx9dOvW1apFlC9fvHihQpkKjyVLFi6cP39E/foVKxYvHtG5c6NGFSpEXHHFkUc2bRrx1luXXdatW8TTT5933sEH7+6rsOOWL//uu5xMfdinT4cONWtGFCtWqFC+fNtv/9hjH300a1bEd99t2LDt8b/yyq5dI44+ulWrypVT41+wYNbjX7RoROfODRqUKxdxxRWHH96wYcRbb11ySceOEU8/ffbZ2wr+AQAAAOzpVMACAOA3LX/+VAWXk0/u2rVly+zbjRs3bdr8+RELFyarCPXDD6mpxAYPHjNm2rSI44/v1KlZs63b9ey5//7160eUL1+yZNGiEUuWrFq1rQBRzZoVK5YqFXHllb17d+mSWe6s2bMXL165MuKxx955Z+zY3B/3XS09teJNNz3zzLBhEfff/6c/HXVU7u1/yZJVq9asiTj//Pvue/PNiCee+Mtfjj1263bpKQiffvryy487bsePk65E1K/fv/71+usRGzZ8/31WFUTGjJk2beHCiB9/TFU6yS5Yd/nlJ5xw0EGZ5Zb+/OeHHho8OOKuu159ddSo3BuvPV06cNS//z33DBoU8fzzV1xx9NER++6b9VRXfft27dqkSWa5PS+//PHH06Zt/flLL3388dSpEe3bN2xYufLW6wsVyp8/b96Il1/+61+PPvrXG48xY2bMWLIkJ/fTMce0aZNZbunPf37ssY8+irjrrjff/Pzz3OvfkiWrV69bF3H++Q899OGHEU88ceGF3btv3S49BeHTT190UY8eO36cdOWgfv3+85+hQzOVoH6v0uNx7LEDBrz3XsQbb1x2Wc+eER06NGiQVQWk/fZLBayuvvqYY1q0yCxzy5Il33yzfn3Euec+9tjHH0c89dR553XqlKmgldamTa1aZcpEvPrqpZdmFYTMqbfe+vzz+fN/nbHOTWPGzJq1YkXqed60KfU8Z/Veu/zyww9v1Ciz3NKf//zMM599FnHXXe++O3Vqavw3bIg499wnnhg7NuKpp84+u127rMa/Zs1SpSJeffWii3YmwPbWWxMmbCv4BwAAALCnUwELAIDftCOOaNeuceOIUqWKFdtvv+zbvfHGxx9Pnrzzx3vzzdSUitlJBx169+7WLatA2Jo169dvq+LSzpo0afbsJUsievS47LJHH80EmfZWjzwyaNDYsREzZixcuCNTYOXUf//73nvjx0f07n3bbS+9lKpwlpNKI9uTDngdccR11/3vfxGDB48bt63KO0uXrl69dm3EAw+89da4cbtsOH/zXn45FYg66qibbnr55YhFi1auXLNm1x3v3/9+663PP494993PP89qasnt+emnn3/etCniqquefnrEiNzrV7oy1wMPvPvutqbu293++98PPvjyy4jevf/1r3ffjfj229x5P6YDXkccccstb74ZMXjwhAnz5u3us91zrF69du3330d07nzjjW++GXHddS++OG5cxDffrFu3K76f1qzJusJS2jPPpKYmPOGEu+8eNixV8WlblSZ/b5Yu/fbbDRsiHnhg6NCsgqA765lnPv54zpyIE064774RI3JecQuAX8emTXPm/OMf21rOnv2Pf+zuXgIAwO+DClgAAPym9e3bs+f++2+/3faCUzn19tujRn31VcTPP6emNNxnny1rRWT61bp1xL/+9dJLH32U+bxSpeOPv/HGiPbtmzSpWTO1rFEjolWrevUqV46oXbtSpdKlIypXLlOmePGIokVTU82lK/mkA1wLFixf/s03ERMmzJy5aFHEK6+MGDF5cmaZrnyzt0ufxzXXPPHE++9HPPvsVVedeGLuH+fZZ4cN++KLiHfeGTNmxoyIM87o2bNly4iePVu3rlMnolmzWrXKl48oWTI19WDq6kesWPHdd+vWRYwfP3Pm4sURb701evT06RFPPvn++xMmpKY43JEA3EUXPfDAO+9ETJkyd+6yZRGnndatW7NmEY0aVatWtmxm6sGs7zrS3n577NiZMyNq1z7rrAcfjDj55I4dGzaMOPzw/fevUyczNWC5csWL77dfJji5YEFqysvp0xcuXLUq4tVXR42aMSPipZdGjpw6devjpCsKHX74jTe+/HJmisM+fbp0adQoolGjqlVLl868JxYvTgWDPvpo8uT58yP++c9XXhkzJmLRolQA75ZbTj21Q4fcG4eLLnrkkQ8+iJgyZd68lSsjTjstNeVgo0ZVq5YqlZqqbE+4n559dsSIadMi3nln/Pivv44444zU+PXs2bJltWoRzZpVr16mTGqqswIFIlJPX+r527AhYvz42bOXLYt4663PPpszJ+LJJ1NT221visPfu3QA8MYbX375888j/vWvt9+eNCni5JMPOqh27YguXRo1qlgxonXrVAWqMmWKFi1YMKJ48dSUlRs3piqKpStZffXVwoXffBMxYsTUqYsXR7zyypgxc+dGfPnlggWrV2+/Py+/PHr0nDkR7747ceKCBRGnnNK+fa1aEYce2qJFlSoRLVpUr16qVETZsql+5MuXN+8++0SsXLlmzcaNmeDQwoWrVq1bFzF69MyZy5dHjBgxbdrSpREff5xa7q0uuuipp8aNi5gyZcGCb76JOO20Dh1q1Ypo1KhSpeLFM1MPJn2eX3557Nh58yLefXfSpEWLIk45pV27mjUjDj20WbOKFSNatKhWrUSJiLJlixVLT0GYJ09q/L//PmL58tR1WLhw1ar16yNGj549e+XK1PgvXx7x8cczZixfvrtHEWDvkQ5Y5bz97Nm33RaRJ0/Nmn/96+7uPQAA/DblWbNm3boNG9L/8yQAADurSJHu3S++eMe22fZPYVuvzelPZ1m3y37rHdtvzn/Ay1nLHf9JMKfjtnP73f7Wv41xS36fZd1+5++zX7bPreuQW/dF9p/uGeOW8/tiV43br/Ney73nM916zxy33Hpv53yr3fNe2/XPZ7Lzy/lWe/f3Xfaf7t73dqb1njlue+r3Xab1nvXe3v7We9vfE/a2cduz/z6a/drf1vddptWe9d7e/ta76vnM2f731O+77W+dm+/tTZvmzLn99h3rZ9ZHyT6Itauez1+231O/77ZutWe8t3O+1Y68f9asufbaOnVy1g8AALZPBSwAAAAAAIDt2LTp7rtzsyJpzh1zzDHH5OZ5qIgFAAC5bZ/d3QEAAAAAAIA91e4LXgEAAHsLASwAAAAAAIAtCF4BAAA5JYAFAAAAAAAAAACQkAAWAAAAAADA/6fyFQAAsKMEsAAAAAAAgN+9PTd49corr7ySe3vLk6dmzb/+dXefEwAA/LYIYAEAAAAAAL9be27waks7G8TK3SAXAACQIYAFAAAAAAD87mzadPfdBx+8u3uRxI4GqX7ZftOmAQMOPHB3nwMAAPy25N3dHQAAAAAAAPi17L3Bqy3tXEWrdBArT55LLhk1anefCwAA7N1UwAIAAAAAAAAAAEhIAAsAAAAAAPjN27Tpnnt+G5WvcpcpCQEAYOcJYAEAAAAAAL9Ze2rwKk+eK6+cPHl39yJj06YBAw44YHf3AgAA9k4CWAAAAAAAAL+SLYNXe1oQCwAA2HECWAAAAAAAALvY9oJWglgAALD3EsACAAAAAADYRQSrAADgt08ACwAAAAAAIJclDV4JbAEAwN5HAAsAgF/VoEF3333llREzZgwcePfdEbfffuGFp5yyu3vF78WgQf/4x4UXRsyY8cwzN94Ycfvt55xz7LFZt7vggl+2O+aY3d37nTnvW28955yIGTOefPKaayJuv/2PfzzqqN3dq73frbeecUavXhEzZjz22GWXRQwefMst/frt7l7tPW69tU+fbt0iZsx46KE//Sli8OAbbzzttN3dq1/PoEHXXHPiiREzZvznP+ecE3H77X36dOmyu3u19xs06MorjzkmYsaMe+45/fSI228/9dQOHXZ3rwD4vcmtAJUgFgAA7D3y7u4OAACwdzjyyIMPbt064l//uuSS00/fev1hh1188a23RkybNnfuokW7u7c776abzj77+OMj/u//evRo1y5i1qyFC5cujTjkkIsu+sc/dnfv+K16/PHLLz/11IiDD27atHbtzOc//7xp06ZNERs3fv/9jz9GLFv2zTdr1kRMmDBz5oIFEf/735AhY8dGjBkzdercubv7LAAAYM+wadM99xx88O7uxd5n06YBAw44ICJPnksuGT16d/cGAAD2DgJYAADkyHHHde3atu221x94YMSttz7xxKuv7u7eQtYOPfSKK+69N/XPefLs7t5s3+rVa9asXx/Rps25595xR0SJEkWKFCoU0aNH69YNGkRce+1pp/XqFXHEEW3bNmkScc89r7zywQcR99776qvDh29+3lde+cADWR9jbxgHAAAAAADYkwlgAQCwTRUqlC5dokTEQQc1b16/fubzzz+fOnX27IiWLevXr1kz4uijO3bcf/+I229/6qnXX4/46aeffvr55+TH3WefPHny5Ino2/fwwzt2jDjxxO7d27WLqF69QoUyZVLBlHXrIr74YsaMuXMjBgx49tm3346YOvXrrzevwDVo0L/+dfnlEXXrVq1aoULEe++NHv3FFxHffrt27YYNEQcd1LRp3boR33//448//hixbt2GDd9/H9GwYY0alSpl9lOrVqVK5cpFzJjx4ot33pn5/Ior/v3v55+PePnlDz4YMyaiY8cWLRo0iLjwwhNO6NEjok6dKlXKl4/46aeff/7554jJk2fPXrAg4vnn339/1KiIQYM+/XTixIhNm1IVjnJbZhwPPbR9+4gTT+zW7YADIqpXL1++dOlMwOeLL2bNmjcvYsCA558fPDhi6tS5c5cs2Xp/gwcPGHDJJanxKFs24p13Ro2aNCnim29S++neff/9GzaMyJ8/b968eSPefXf06MmTI559dsiQ0aMjLrvs5JN79oxo1apevWrVMtfx6affe2/UqIj//CcVIEp78smrrz7jjIiDDmrSJKuKUOnjjhs3bdrXX0fcccezz773XsTMmQsXLlu2df/TUxDWrVulSrlyEQMHDh8+fnzE5Zc/8MDAgbk//rktfb1efPHDDz//PKJQoQIF8uXLBLEuuujYYzt3jvjss+nT58+PGDly8uTZszNTENatW7ly2bIRAweOGDFhQsTllz/00BtvZPbfsWOzZrVrR1x44R/+cPDBEXXqpK7zTz9t2pS6f+fMWbw44vnnP/jg888jBg0aM+bLL1P37+b3W+/e3bq1bh1x4okdO7ZoEVGrVsWKpUtHfPvtunUbNkS89tonn0yalAqMDR8esX59qrJX2r777rNPnjwR/fr16nXggRHHHdehQ7NmEdWqlStXokTqef3pp4gJE2bNWrgw4t57X3995MhUBbB58za/3jff3K9f6rzLlIl4773PPps+PdOPgw5q1Kh69cz+unX7618ffjiiaNFChQoUiLjhhtNO69EjokePli3r1o1YvTr13hgxYvLkOXMiihbdb78CBX79++DJJy+99IQTIg46qGHDatUyn2eei1Q/x42bMWPhwog77njppREjImbOXLx45cqt9zdo0A039OkTUbdupUqlS0cMHvz55zNmpCqtrVsX0blz06Y1akSUKFG4cMGCmf1eddWTTw4ZErF48erVa9Zk9pcZv1NO6dIlokeP5s1r1dp8/L78ct68VLv8+Xd+PI477qCDGjaM+Mc/+vbt1i1i48Yffvjpp4gWLf7854ceivjhh9T1ve++P/6xV6+IXr1atapTJ+LFFz/++MsvI6688sknhw6NKFYsdT3Hjr3zzn79MvfzBRc8+OC770a888748TNnbv5e7dKlWbOIE0/s0KFhw4jq1cuWLV48dZ4bN0Z88cXXXy9dGjFgwOuvjx4dMXXqggUrVmR/HunxuPXWU0/t3DmiffsGDapUiShZskiRggUjhgyZOHHOnIhrr3322eHDI779dv3677/f8fEaNOhvfzvhhIi6dStWLFky4r33JkyYMyfT7/btGzasXDmiZMnU9R4y5Isvvv464tprn3tu5Mitj/vpp7feesopEWXKFC1aqFDE448PGzZ5csTf/z5w4KefZtrdffcZZ3TpEnH44a1a1aoVMWnSvHnLl0f84Q+33/7665l2HTs2alSlSsSFF/bq1aJFRJ06FSqUKJF6D23aFDF58rx5K1ZEPP/8xx9PmxYxaND48bNnZ95DWypSpGDB/PkjbrjhxBPbto3o3Dm1/xIlChcuUCBi3LhZs5Yujbjqquee+/jj1P28bt3O35cA/D7tqikD0/vdtOnWWxs33t1nCQAAZGWf3d0BAAD2bMce26XLgQdmfnBevfq779aujbj00rvvfuqpTHCoTJkSJYoWjejcuVWr3PgfhG+66eyzTzwx4uqrzzjjmGMili5dterbbyM6dPjjH6+/PuLyy++993//i+jcuXXrRo0iBg78xz8uuSSiSZPatatWzX6/PXoccEDTphGffZYKkHXvfuGFt9wS0a3bBRfcckvEkUf+5S933hnx7LPvvffJJ5nt0lMQ1qlzwgmXXppZpoNXpUsXL16kSMT9919++emnRzRqVLNm5coRxx9/1VX33BPRqdN5591yS8R997300vvvRxx++EEHNW8eUaNGKlC2q9x001lnHXtsxNVX9+175JGpcfzuu4gOHc4779ZbIy6//D//eeGFiM6dW7Zs0CBi4MC///2CCyKaNKlVq3Ll7e+/R482bRo1injjjY8/njAh4vTTb7nl8cdTwZSCBSOOP75z59atI55++m9/698/4h//+N//3nkn4o9//Oc/n346oly5kiWLFYu45JITT+zRI6Jdu8aNa9XK7L9Pn7///fHHI+rU6d37b3/LLFu3Puusv/894qWXPvxw3LiI7t1bt27YMOLBB//yl1NOicifP1++vL+D/9zk+eeHDfvss0zwJu3//q9r19atc76f0qWLFStcOOL++y+66IQTIho1ql69QoWI44+/4YbHHovo1OmSS+69N+K++157bcSIiMMPP/DARo0iatQoX75Uqcx+brihb99evSKuv/6003r2jChTpnjxwoUj+va9/fb//S/i0EOvuuqhhyKmTp03b+nSiHbtGjWqUWPr/tx665lnHn54xOWXn3hily4RGzb88MMPP0R06vSXv9x/f8SFF/7736++GnHggQ0aVKsW8fTTl1/eu3cqUJXV/tJ69GjVqm7diM8+mzFjwYKI7t1Tgatu3a644qGHMu1uueX003v1ijjqqLZtGzWKmD594cLlyyOOPfamm558MuKDDyZOnDUrolev1q3r1fv1r3ufPnfe+eKLEXXq9O8/YEBm2br1n/70n/9EvPTSiBGTJ0d0796iRe3aEQ8+eOGFRx+dCkbuu+/299+jR4sWdepEfPLJV1/Nmxdxwgm33vr88xGrVqUCVB07NmlSo0bElVeecEJWU/rcckufPt26RRx11AEH1K8fMX36okUrV0Yce+wttzz/fMQHH3zxxezZmSDUzvr006lT58/P/LlAgXz59t03onHjqlXLls183qpV7doVK2b+vP/+deps/ufWrWvXrlAh832XfqpGjZo+fcGCTLubburdu1OniKuvPuGE9u0jli5NBdU6dLjyyqeeirj88v/+d8iQiM6dmzSpXj1i4MArrjjuuIgmTapV27w/W4978+Y1a0Z8/PFXX82fH3HMMf/4x8svZ4JbRxzRpk2dOhG33XbaaZ0759791KNH8+Y1akR8/PHUqQsWRBxzzO23v/pq6rgrV0YccUTr1rVrR9x226mnduyYkz0mCxSXLl20aMGCEfff379/t24RjRpVqVK6dMTxx9955xtvRHTqdN11L74Ycd9977wzYUIqyFWzZkSNGmXLFiu2rfNr2rRatYhPPpk2bfHiiBNOGDDgrbdS9/PGjREdO6YCZ1de+Yc/7L9/7o0rAAAAAL8vAlgAAGxTemrBtNdf/+ijceMi5s5dvHj58ohRoyZPnjEjs/7443/ZfkelK1ydeGL37ptPeXjffS+88M47EStXfvvtmjURI0ZMmDB1asSECdOnf/116gf3vHkjzjrr6KO7dMl+/xMmpCpmPf/8++9/+mmqUsrmlXeSSleESvcjX75U0KFWrcqVy5VLVfTZZ5+IMWO+/HLWrIjzz7/zziefjJg9e9GirCo17azq1StUKF064sQTu3bd/Afl++576aUhQ1LjuHZtxIgREydOn54al3nzNh/HI4/MyQ/t48ZNnfr11xGffjp58qxZEV9+OWfOokUR332XqjCUNnz4xInTpqUqbS1YEDFy5BdfzJiRqQyWltPgV3r/zz03ZMjYsZnPa9RInXfDhtWqVaiQ++O6p0nfv+lgXVr9+lWrliuX8/2kK1Rtff9WqlSmzOb379Spc+dGnH/+vfe+/HLE7NmpikrVq5cvX7JkxMknd+7cqlVmv//+dyqwNW5cqiJXujLTq69+/PGkSRFDh44fP316pn3NmhUqlCoVceyxHTo0bZr5/OGH33571KiIpUtTlZY++uiLL2bNivj44ylTvv46UzHr4ouPOSarQFDahAmzZi1aFPH88x9+OGHC1s9/1aply5YoEXHoofvvv3nFv8cfHzx47NhURai1ayPefXfcuNT9nKoItqf47rv16zdujHjuuY8+mjgx83mNGuXLlygR0bDhLwNJ2Rk/PjVO77wzbtz06amA0dq1EWPGTJu2eRCpUaNfBoqqVk1VgDr00Nat69bdfPzef//zzyOWLfv223XrIt5997PPZs7MVIjaWQsWrFjx3XcR8+evWPHtt5nP27RJBayqVUv1q1y5VCBwzZpUpcMaNVIV1UqXTlVuat26du3NKx9Om7Zw4YoVEatWrVmzYUOmwtWJJ7Zv36hRpt1997311pgxEStXpirUjRjx5Zfz50dMmDBnzpIlmUDYWWf16NGiRfbn8eWX8+evWBHxxhtjx86YEbFixXffrV8f8cgj77+/+fU85JAWLVLBo3Llihff+fH78stUwOuNN8aOnTlz8+MOGfLL46aCWjVqpMYhO1sGQnOqVq3U+aTHK1++vHn32SeiVq3U/Zt+zseMmTlz8eKI889/9NGhQyNmz166dPPrvqXx4+fMWbYsVcFszpyIpUu//Xb9+tR+Nq/02KhR5cqbB0oBAAAAYEf8Dv6bcAAAkth//0aNateOqF69YsXNf2AfOHDYsFGjtv5z27ZNmtStG9GlS5s2jRtHlCpVrFiRIpmgT041a1anTrVqEXnypCqQpD377M03/+lP298+HeDKzpw5uybwNHPmggXLlkWsX79x4w8/ZKaGu//+yy47/fRMu/nzly1btSpi0KBPPpkwIWLAgOeee+edzBRZuaVZs1QlsK3H8YYbzj47J+OYmqJwexYtWrFi9eqtP08HW4oWTf154cLly7/5JrM+M+XiL3+mT09dmNalS8uW9etHnHvuH/7QqVNE/frVqpUvH7HffgUK5M+/9fmlVapUpkyJEhETJsycuXllnN+qdMWetB2NP8ycmarwtH7999+n7t/8+VP3b6oiVtr8+anrOGjQ6NFffhkxYMDLL3/wQUSzZjVrVqqUuh6b73fSpB0LKDVtWqPG5hWJ0tJBry3NmbNkycqVEQcf3KRJzZqp7bcVvJszZ8mSVauyX1+vXmqqwi3Nnbt0aVb3eXp/2ztubuvSpVmzWrUizj338MMPPDCifv1Uvzd/LrLarlKl0qWLFUsFg7Z1XebO/eXzmrZlYG3L57VevdQUhlvvb9myrPY3Z86SJatXRzRtWr36jgQGszNqVKqCU5UqBx1UrFgqUFWxYiYYlfbMMx9+OGlSxNln9+zZqlUmqJVepn36aWp/ac2a1ahRrtzW4/vss5deeswx2+9f9erbDkzNmZPdfbZ0aVbjV69epUqlSkXMmZP1+ObUnDlLlmR9fbLeb716lSqVLLnzx93SzJmpfqSnJC1UKH/+vHkj7r//rLO6dcu0mz9/5co1ayIGDfr889mzIwYMePPNzz6L+OGHrKc+njs3FdDbUnqqyrT8+VOBLwAAAABIQgALAIAsHXts166bV6BKe/XVf/7zssuy3y5v3n333XffiKOP7tixTZuIxx9/880PP8z5cbML1Bx66MUX33ZbxPTp8+algwNZRwwye8rq059+yvoH2p2Vrsx15pm33PLwwxHnnnvMMV27RrRsWa9ejRqZKfmqVClbtmTJiLPOOuqozp0jVqz45ps1ayIeeeSNN3ZknHIyjll9fuihl176r39FTJ8+f/7mlT+yGq9tj296PH/+OSdRny0rXW3vKOlKVvfff+mlvXtn7qs77nj22cGDIx57bNCgkSMjKldOBa3ef3/AgD//ObN9ulLKb106KFW2bGoK0LTp01OBwJxaufK779atizjzzDvuePbZiHPPPfLI9u0jWrasU6dKldT9W6BARJUqZcoULx5x1lmHHda2bcSKFamA5dKlq1dnFXDIBO32DNnfh9uW3TnkyZOz5yS31KiRqjR2//3nn3/00annYp99Iu644+WXhw+PeOyx99777LOIypVTQav33//73884I7N9Tp+L7N6TSa9mdvdBdu+ppNKBqeOOO+ighg0zAax0Bavvv08FXf/736FDJ0yI+OMfDzmkVauIdu3q169SZesg2KhR06YtXLh5f7M+7qGH3njjc8+lplrcVsAv6Znn9jjl/Li5e3+nK+llZ+XK1HU688z77x88OOLcc3v0aNYsomXLmjXLlYsoWrRQofz5I6pUKVWqSJGIs87q1q1p01TFrg0bIh55ZOjQSZO23m92z/2e9n4CYO+WJ8+VV06e/OsdZ9OmW29t3Hh3nzUAALA5ASwAAH6hUKGCBfPnjzjssIMOatky8/kpp1xzzT33RIwaNWlSasrBX/4se8opvXp16BBxww1//OOJJ0Ycd1y3bm3b7ngAa+LE1BSBW2rVqkGDmjV/GcDalX7+OWfBoi2NGTNlyqxZmWU6UJauzPXYY1df3b9/RLVqqQpT9er9cqq866/v1++YYyJOPbVnz4MOiliyZOXKb76JaN/+nHP+/vcdGcesKz+1alW/fvXqWQWw9iyNG6cqKqWDV2kDBw4fnqp0kgpS1KpVseK2Kp7tKtdff/rphx8eceqpPXoccEDEkiWrVn37bUT79hdeOGDAr9eP3r27d2/TJquKPEOHjhu34/tLTzGYXqb3W716+fKlSkU89thf/vJ//xdRrVq5ciVLRtSrV6VK2bIR77//2WfTpm29v6ZNa9asWDFi4sTZsxct2v7xv/giNYXllmrUqFChZMmIyZO//nrz+7ZGjVS/Nt9+Z94P06enKoFtqXr11FR1W55H9eqpqdG25/rrTzmlW7eIU0/t2rVly9T9smZNRPv2f/nLAw/kvH+NG1erVq5cJniVNnDgxx9PmbL5c5EKav3apk9PTdmX/fjNmbP5lIPpz3PLp59Onbr5e69UqdTUgoce2rp1nTqZKQ+XLv3mm3XrUoGplSsjjj22XbsGDTJT36VjOaNHT5++eQWsiROznjKxVavatStU2JEAVtay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ASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAA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AFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAAAABYiQAWAAAAAAAAAAAAAAAAAFiJABYAAAAAAAAAAAAAAAAAWIkAFgAAAAAAAAAAAAAA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AMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBK/wcayQIUJeY8qgAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/assets/screenshot-2.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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/uud/+9NmzZ161asGDFs2K23nnJKRJEihQrlz7+7ewUkUaRIwYL58kWcdFK7drVqRXTp0rhxxYoRrVvXqlWmTETZsqnvo+LF99svX76IjRt//PHnnyOWLv3mm/XrI778cuHC1asjRoz46qslSyJefXXs2LlzI778csGC1at399kBAAAAwM4RwAIAIFc1bVqrVqVKEV27tmpVr17E0KGffTZ9es63P/XUQw5p3TrnwavcdvLJXbu2bJnz4FVanz49e7ZpE3H11Y88MmjQzvfj8MPbtm3YMOK///3rX086KRPE2p6KFUuXLlo0s2zYsFq1cuUiunVr1apOnUy7f//7tdc++STiggvuuee11379cd6e/Pnz5t1334gbbujbt1u3iD59br/9pZd2d692n/79e/Vq2TLi4YcvuujII7NvV7duv3733RcxY8aiRTkJrO1q99xzzjmHHCJ4tafp379HjyZNIh5++LzzevTIvl3duued98QTqftJQOb3Z99999knT56IK6446qgWLSIuu+zII5s1iyhRonDhnDzPefPuu+8++0TUrFmuXNGimeVhh7VoUbVqxC23nHxymzYRZ5zxwAPDh0c88cSHH+7I3xdI6d+/c+c6dSIefrhfvwMPzL5d3bqXXfbGGxEzZixZ8t13u7vXAAAAAL89++zuDgAA8Nt00UUnnNCpU5Ltjj8+yXa5pW/fVJBqR512Wo8erVtH7LNPnjx58iQ/fuvW9epVqRIxcOCNN/bpk/Pg1W/VKad069a8eUSTJqmKX+wdypRJ3bft2jVoULly9u2GDZs48euvI8qXP/XUu++OyJPniCNuvTWzvPjihx56//3dfTbw+1KsWCowOWTI3/52+OERf/97KiiV0+DVjkpX1gIAAACAvZkKWAAA7BJHHNGuXZMmEbVqVapUunTErFkLF65YkX377t1bt65XL6JJk5o1K1b89ftbv37VquXKRRxwQMOG1art+PZVq5YrV6JERJcuLVvWqRMxZMiOVf5Ku/nmM8/s1StTAWpLa9du2PD99xGXXfbAA2+9FfHmm59++tVXEUuXrl69Zk2m0lCjRtWrly8fceihqSkL+/bt2bN164hKlUqXLlbs1x/fpNKBtr///YwzevSIOPro6657+und3avfrhYtLrjg4YezWpOJFeYkYFi1atmyRYtuv91zz3300ZQpqft33brs211//f/+N3x4ajliRNb9Ys/RosUllzzzTNbrXLE9V758qYpVL798ySXdu0d06tSo0ba+j9et27jxxx8j7rpr0KBJkyKef/7jj2fNylRY2mefVAWtatXKlClcOKJbt8aNK1WKOPfcHj0aNoxo2LBy5RIldvdZAwAAAEDuEMACAGCXSP/weuGFxx3XsWPEn/98772vvJJ9+4svPuGEzp13X3/79u3Va//9s1//ww8//vjTTxHffLN27YYN2U+R2KdPKui0owGsdOCqa9dfThW4pZtvfuqpIUMi7r//9dc/+SQi4pcVtzZu/OGHH3+MGD78iy9mz84sr732iScGD44488xDD91//4hy5UqUKFJk9433jjrqqHbtGjSIaNeuUaNq1SI++WTKlLlzd3evyE6BAvny5c3Bv22uW7dx4w8/7O7eAhERF1zQq1fjxhHduzdtuq3KdStWfPfdxo0R3brdfPNbb0VMmPD11ytX/rJN6nsp9f+nTJk/f/XqzPK++wYPnjIlol+/zp3r14/YuPHHH3/+eXefPQAAAADsHAEsAAByxaefTp48Z05E27aNG9eokfn8zDMPO6xt24hrr3300bffjvjuu3XrNm7MrK9bt0qVsmUjDjusbduGDbfe7yefpPbbrt0v95tb8uRJBZhOOaV791atsm/37rtjxkydGvH110uWrFoVcf75f/hD+/ZbtzvuuI4dmzWLOP/8u+565ZWINWvWr9/8fLNTrlzJkkWKZF/5Km3u3KVLV6/e8fP88ceffvr554iHHnrzzdGjc38cfy233JKqhNWly2WXPfror3/8EiWKFClYMOLMM3v2bNUq4pBDWreuXTuiadPUFImlShUtWqhQxKZNqf9bvvybb9atixg/fubMxYsj3n57zJjp0yOeemrIkIkTUxXNsgogPffclVcef3zESSd17Ni4cc77N336o49ecEH26ydP/vrrZcsimjQ599wHHth6/fjx99131lkRzZvXqpXVlI9DhowfP2dORPfuV1+9eYWjv/zl2GPbto24445+/bp1y3l/n3rq0kuPOiqz3FkVK/bpc++9EYsXr1q1du322xcsmD9/3rwRJ5108MENGkQcfvj++9epE9G6de3a5ctHlC1bvPh++2UqAy1YsHLlmjURM2YsXLhqVcQrr3z66fTpES+9NHLktGmpYMr69Vsfp2jRVGW6Dh0aNapcOaJz5yZNqlaNaNu2fv1KlSJq165QoUSJiNKlixYtWDAib97U8dasSd0f8+YtX/7ddxGffTZz5pIlES+8MHLk1KkRb789btycOds/z+ee+8tfDjss4qSTOnSoXz/n4zl9+n/+c/rp2a+fPHnu3BUrIpo0ufjizSvTjR8/YMApp0Q0b16jRpkyW283ZMjEifPmRXTvfv312wrmbqlEicKFCxSIOPPMrl0bNYo45JAWLapVi2jatFq10qVTz1/BghGbNm3alHr+vv12w4aI8ePnzFm2LOLttz/77OuvI5566sMPp02LWLt2xwKA48ffcceJJ27rvL74Yv78iO7db7zxjTcievZs0aJq1YhzzunRo3HjiHbt6tevUCGiVKkiRQoUiFi5cs2ajRsjPvpoypSFCyNuueWVVz7/PNXf5ctz3q+dVaBAvnz77htx1VXHHNOixfbbn332I4+MGJF18ConUlcn4pFHhg2bNm3Hty9aNDVl4emnd+pUp05Er17Nm1epEtG8ebVqpUplxjd9HyxcmKqwN3z4V18tWRLx6KPDhk2fHjFy5PTpS5fm/Ljjx99665FHZo6zpSFDJk9etCiie/dbb33vvYiePZs1q1Qp4pxzunWrVy+iXbs6dcqWTfUvf/7U9f/++4iPPkr165ZbXn990qSI8ePnzl21Kvt+PPfc+ed36BBx0klt21avnvP+T59+xx1HHpn9+smTFyz45puIJk2uvPLtt3My/gcfXKtWRK9eTZtWqJAal5IlI0qVSk1VmbrKEQsXrlq1fn3E8OHTpi1bFvHoox9+OGtWxMiRM2Ykuc/Hj7/ppkMOiWjevGrVrCqoDRkyZcrSpRHdu99xx4cfRtSqVbZs4cIRV111xBENG0b06NG4cfnyEZUrlyxZqFDEsGFffbVsWUSPHnfc8dFHO94fAAAAgDQBLAAAcsVdd7344gcfRDz3XOPGm/9gX6xY4cIFC0acfvqhhx54YMS997788uY/cF100QkndOqUCUJltd8PP9x1AayuXVNTBlarVr58yZLZt3vuuaFDP/98+wGswoULFsyfPxXEato04r//fffdsWO334/vv//hh59+2n67P/3p2GPbt89U2FqyZPXqnARN9jbvvjt27PTpET17tmlTt27m886dmzevWTPzebrdrnbyyZ07N20a8cADf/rTEUdEFC+euq+3p2rVsmWLF88sjzyybdv69SOuu+7UUzt3jujb95//fPXViMGDx42bOXN3jfbvzyGHtGxZs2bEY49ddNGhh0ZUrly6dE6mTEwHpdLLnj1btapZM6JHjxYtatSIOP7422577bWtt7v//nPP7dEj4pRTOnXKKmianXTgKL1s2rR69TJlIvr27dq1ceOI994bP/7rryOOPfa2215/PRPY+q05+eQOHerVi3jggbPP7tIlonjx/fbLn3/721WtWqZMkSKZ5ZFHtmlTs2bEddedeOIBB0T07Xvvve+/HzF48IQJ8+btfD/TQaannrrwwm7dIk49tWPHevWyb1++fPHihQpFnHBCu3a1a6f6V6NGxBFH3Hbb22+nAl0LFuz68e3UqWHDihUjypRJBdiy89VXCxeuXh3x8sujRs2evev7taVjj91//+rVIx5++Kyz2rfPBK22p06d8uWLFcsszzijU6e6dSP++9/hw2fMiDj77Ecf/fTTVAXJnHwPZ6dAgVSA+qmnzj23Q4eIU09t375Wrezbly9fvHjBghEnnHDggdWrRxx5ZKtWVapEHHHEnXcOG5YKdC1e/OuPc/bj36ZN1aoRDz985pkHHJAJWuVk/IsUySzPOOPgg2vWjPjvf0eMmDMn4uyzn3hizJjcr4TWpk2NGiVLRrzzzqWXduwYUbp0Kvi2JdOiAgAAALlln93dAQAAfhtefXX48IkTI+bMWbw4q4oY6akI00Gr4sULFy5UKDX13wEHbN1++PCJE2fNivjss2nTcuOH8ez06dOz57amHly/PlUh5bXXRo6cPDli5MhJk+bMiZg3b9uVqPr27dmzTZuc92Pp0tWr16yJWLBg+fJvvsm+3YEHNmxYrVrEnDnPPnvVVRFvvPH3v59+esTll590UqdOEd27t2pVt26qUlOhQrtu3Ha1q6567LHBgzMVTLZ0yy1nntmjR/bBvdzSp0/37i1aRDz7bKoiVU6DV9tToUKq4tmbb95wQ+/eET16tGq1rR/qyR1/+EPbtnXrRrz99vXXn3BCzoNXe6oePVq0qF49FfDq3n139yb39enTuXODBhHPPvvnP/fsmfPg1fZUqFCixH77Rbz55lVXHXFERI8ezZtXrbrz++3QoUGDihW3H7zKTsGCqQDXo4+ec07nzhH77puayndX69SpUaOKFbff7p13xo+fP3/X92dLJ5980EG1akW89NLFF3ftmvPg1fb07XvwwXXqRDz77AUXpP9+sjP769Chfv1y5bYfvMpO5vr379+u3a93/bfn5JNTlbZeeumCCzp0yHnwanv69u3QoUaNiGefPffcdu12fvzTihYtWDBv3ogXXjjvvHbtsg9epe3av0UAAAAAvycqYAEAkCt++unnn3/+OeK++1IVrv75z/PP/8MfMus3n2qwUaOIhg2rVy9fPqJIkUKFsvohNV1Ra1fJVKrq1KlZs+zbvfXWp59++eXWUwm+8MIHH4wfH3HppSee2Lnz1tt17tyiRe3aEdWqlStXokRq6sBtBavS7r33lVdGjoy47bazzjrssOzbpadOO+KI1NSN6WXazz+ngksTJsycuWhRxIsvfvjhxIkRDz74xhujR0esXPndd+vW7brx3VkTJ86atXhxxLPPDhs2cWJE795duzZvnlnfqlWdOpUqRZxwQseOTZpEvPDChx9OmpR7xy9fPhWQ+ve/L7jgiCOyb7dmzfr1338fce6599775psRr776ySdffZWasm7ffSNOPbVbt2bNIgYM+OMfe/bMTC2Xli9f3rz77BPx2GOXXHL00RF16/brd++9ESeffOutL72UWfbv36tXq1YRDz980UXbmkKqbt1+/e67L2LGjEWLtjWFVW775z8HDvz008yybdsGDapUifjkkzvv7Ns3++1OO+3OO19/PeLpp4cNmzw5+3bXX9+798EHR1x3Xe/eHTrseP9Kl05NDfn44xdffPjh2w82PP30Bx9MnhwxYMCrr44dGzFlyrx5y5dHFCu2334FCkTUrFm+fIkSEd27N29evXpEuXKpQE92Vq1as2bDhoinnho2bMqUiFdfHTVq+vSI6dNTUxkuWZKaIm3VqtSUdOnjNG9es2bZshHXX/9//9euXcTBBzdqVKXK1vvv3btjxwYNIq688sknR4yImD9/xYrvvsusP/nkf/7z7bczy/79DzmkSZOIhx8+77wePbLvd9265533xBOp+ym7wGlqHHM3wFC+fGo8//3vs87K6v2alq74de65Dz74wQcRr746evSsWZnn6tRTO3WqXz9iwIC+fTt0yOr5S/35scfOO69r14i6dS+44OmnIzZs2LlKSOmpBc8664EHPvggFVyaOzeibt2KFYsXj3j66T/9qXv3iCZNqlbNaiq76tXLli1aNKJ9+9SUhR999OWXu7ISUqVKJUtu6/5Nmzp10aKcfI/llrJlixUrWDDioYf692/fPvugzOrV69Z9/33En//85JOjR0e88cZnn82dm6pIljdvxHnn9ejRoEHE1Vf/4Q9Zfd8fc0ybNtWqRZx+eseOdepEPP74hx/OmJG835nrn6qs9c47EyYsXBhRt26FCkWLRjz99HnndegQ0aRJlSpZTaFXvXqZMoULR7RvX69e2bKpKQo3nyrx5JP//e8RIzLL/v07d65TJ+Lhh/v1O/DA7PtVt+5ll73xRsSMGUuWbP5+2NzmI1y2bNGiBQpEPPTQmWfuv39Oxv9///v884g33vj884ULUxXB9tkn4rzzunWrWzfi6quPOqpRo6zGv3XrKlUiTj+9Q4eaNSMef3z48JxMrZqdAw6oVatUqcxUlzff/MYbX34Z8dBDH3wwe3bEqlVr137/fUTbtrVrlyqVmZIQAAAAYGepgAUAQK565JE33/zkk60DS2mXXHLSSZ07R1xwwbHHHnzw1uvTFbRee23EiNwM1GwpHbxKB7Gyk556MKvPx4/Pfrt0ZabTTjvkkB2phHXHHc8998EHEU899d57n32W/Pz22Sd1/JYtU0GlW27p169Xr4iZM59++rLLIo48sl27HZkKbXe55ponnhgyJOKHH378MatAxE039e3brdvWwYqd1a9fKvBUpEihQtu6P66+OtW/p58eOnTChEwga9WqNWvWr4+4997XXhs1KuK++15/ffTo7PdTpUqZMsWKRRx7bPv2e8N12dv063fIIc2aZabyy84DDwwaNH58xGmnDRjw1lsRn38+a9aSJZmpyZYt++abdesiRo+eNm3RoohbbnnxxU8/jbj44ocfHjo0+/1eeOFDDw0ZEtGnz113vf12xMCBn3wyfXrEF198/fXy5RFLl6b2+8MPP/30888RK1Z899369RFDh06cOHduRP/+9903eHD2+08/7x07Nm5cufLuHu2d169ft26NGkUUKVKwYL582be7+ur//e+TTyKefvqjj6ZOzQSy0kG2e+99++2JEyPuu2/QoC++yH4/VaqULl2kSMSxx7ZtW7v2zvf/T3967LHhwyMGDhw1atasiHXrNm788ceICRPmzFmxIuKyy5566pNPtr+fJk2qVcsqoJXbSpTIWUWjX3uKy379unSpVy+iaNFChbZ1H5x11sMPjxwZ8cQTH300fXrEihWp679w4apV69ZF/O1vL7zw2WcRL700atS2gj1XXHHkkU2a7Hy///Snp54aMyZi4MAxY+bOjVi37vvvU9d/7txVqyIuu+x//xs3bvv7yS6g9Wvp169Tp9q1UxWltj3+jz02ZkzEE08MHz579ubjv3r1+vURf/vbyy9/8UXESy+NGbOtiqZXXHH44bn5/XfzzW+8MWVKxDXXDBw4aVLEvHkrV65bF7FmTep5fP/9KVOWLo244ooXX9zW+wEAAAAgpwSwAADIVd98s3bt+vUR//3vO+9kFTjp2rVVq3r1IqpXr1Ahqx+W77tv4MDhwzMVtXaVvn23PfXgd9+tW7dxY6oC1pQpW68fO3bq1HnzImbMWLBg+fLs99OnT8+erVvnvF/pylV9+tx663PPRRx11NVXP/FExIcfTpgwa1b2U/LlVHpqwhdfvO66U06JaNSoevVy5XbdOO+sWbMWLVq5MuKRRwYNyuoH63r1qlQpUybijDN69mzVKveO26VL8+Y1a26/3eOPDx6cVUBvS48++u67OQnUde7crFmNGrl3HqR0796ixbbGNf1U3XDDc8+NHLnr+nHAAXXrVqwYcddd/ft37RoxatQ//3nKKRFLlz755HnnRWzY8NJLF18csWnTa69demlmOXXqf/5z5pnb33+lSqVKFSny647trtClS5MmWVX62tLjjw8d+uWX22/36KNDh2b1Ht9S5847F2BbvXrt2o0bI557buTIbVVQmjFj8eJvv93+/kqUSFVC29VWr05VBNqe7QXiclvXro0bb2tqxHSlqYEDR4/++uvt7++ttz7/fFtTKNavn6pQVqNG2bJJnqN0Jajnnvvkk9mzs2+3rQpUmytRInem3Eyqa9dGjbZVGWrlytR9M3Dg2LE5mZryrbcmTFi0KPv19eunKoTVqJGqAJZUOsg6YMC7706btvvGDwAAAPj9MQUhAAC7xN13p6YQPO+8P/yhQ4dMRajspCtmpSto7SpVq6amBOzcuUWLOnWyb/faayNHTpoUsWFDqnJFdp5/ftiw8eMjrr761FO7d996fb16qakX27Vr3Lh69YhPPpkyJSc/FKe98cYnn0yZklmWLVuiROHCEZ06NW9eq1ZE27aNGlWvHtGuXWp5wAENGlStuv2KUOmpmc4//+ij27WLOP/8e+997bVdN+4768Ybn3lm6NCIvn0POaRly4j99itQYPMgwLXXnnpqly4R5557992vv77zx6tUqXTpYsWyX79s2TffrF0b8d13WVd629Ls2YsXZzeF2+YqVy5dumjRXT6cvzuVK6cqHGVn0aJVq9asiVi8eNWqtWtz77jpt95//nPOOT16RJxzTq9em0+lmdsKF/51AzK7SqVKpUptK4CxbNm3365fn3r+0sGhbX2/zJ69ZElOAk+VK2/7uNsza1bqOD/99PPP2wrKrl+/7e+VtH322fZUmbklXSlqe9IBpV9L5colS27repQqVaRIgQIRP/30zDOnn557x23YsFKl4sUj5sxZtmzNmpxvN2vW0qVr1vzy+md1/dav//77nExxma5st7tUrlyyZKFC2a8vVSpVOe2nn5544qSTcu+4DRtWqlSsWMScOcuXJ3kff/XVokXffZcKxP2aFdsAAAAABLAAANglpk+fP3/Zsoi3305VkDr88HbtGjfOvv0TTwwaNHp0qoLWhg27rl/pKQG398P2qaf26NG6dWa5s/r0OeSQ1q13PIC1pWXLVq9euzbipZc+/DA1pc9HH20+VWPp0sWK7bdfxG23nXXWoYdG9O9/2GEHHJD9/lq2rFt3b5iybPHilSvXrIm4++5XXvn444grrzz55E6dMuvTU/idf/5RRx144M4fb3f96L1z9c3ITp48u+eannFGt25Nm+764NXm5/lbsLc+f6tWpSpgbc/2Alq/tg8/nDJl0aKIq6465pgWLbJv16tXixZVqkT8+c9PPvlr9Gt3xY9Kly5aNEnlsb31+mdne8H5XaV06SJFdqby14oVa9bkpKIbAAAAQG4zBSEAALvUXXe9+OKHH2a/Pj2l3j33vPzyRx/t+v6kA1i/tpNO6tKlRYtM5aldZcWKb79dty7i3HPvuuuVVyLWr9+4cVsVIPLl23alrD3N7be/8MLw4RGrVq1Zs3791ut79dp//7p1d/44CxasWLGtijllyxYvXrhwRNGihQrl5If6mjUrVChRYvvtFi5cuTInU1OxY+bPX7FiW+NasWLJkkWKRFSosO2KOzvq1FM7d27UKPv133//448//RRx/vkPPvj++xEVK55++gMPROTNe8wxAwZE5Mlz9NF33hlRrVr//g89tLtH8dezYMHKlduqfFO2bLFihQqlnr+cBDVq1ixfflsV7dIWLszdCmh7i48++vLLRYsili//7rttBaAbNKhUqUSJiOOOO/DAnEzRurMWLFi5MieVuXJb3rz77LM3fS/uKgsW5KwyWm7Lm3fnKr/tLQE3AAAA4LdHBSwAAHap998fO3bq1IhJk2bPXrQookmTmjUrVsysf+ut1NR66YpZu8qBBzZsWL16RIMG1aqVK/frj0PJkkWLFioUcdRRBx3UqFHEiy9++OHEiVmN1z//+cc/Rtxxx/PPf/hhxODBY8dOn54JquXUfvsVKJA/f0S+fHnz7rtv9u0WLFi+PCdTc+0pVq9es2bDhoh//OP554cPj7jttn79Djkk948zbNiECbNnR3Tv3rJl7drZtzvjjNSUiPfc89prn36afbt+/Xr2bNVq+8f94IOJE+fM2frzH3748ceff97+9gUK5Mu3rev9e/X+++PHz5kT0aNHixY1amy9Pl3n5ZprTjrpoIMizj//gQfee2/nj1ulyranlBwzZvr0xYsj/vOft98ePz7dl63bHXZY69a5GXjZ0++nYcMmTZo/P6J792bNqlbNvt0ZZ3Tt2rBhxD33vPVWVu/TtH79unbdVhAu7YMPJk9esODXP9/dbcOGH3746aeIW2999dXx4yPuvPO009q2zb79gw/279+hQ8SMGYsXf/NNxIQJX3+9cmXOj5d+3s48s3PnevUiNm5MHf/pp0eMmDkz027o0MmTFy2K6N69adNKlbbez4oVa9Zs3BhRvfqFF77wQsTatRs3bjm147aDPJm1e3P1uB9++OmnnD3PefPuSLBs6NApU5YsiejevXHjChW2Xp8Z/0sueeONrMc/LevxzX7U9+brAQAAAPx++W/6AAD4VTRt2rfvbbdF5MnTseNFF2WWRx7517/+GpVd+vTp2XNbla/SAafKlY8//oYbIvLk6dz50ksj8uTp0mV7y7/8JSJ//h49rrgi4ttv163bVgWRvn233Y8OHZo2rVkz4p13/vGP/v0jZs58+ukrroi45Zb+/Q89NKJXrwMOqF8/olKl0qWLFYvInz8VsCpRokiRQoUiOnVq3rxWrYg337zlltNPj8ibd9sVrt57b9y46dN3/fjntnvuefXVTz6JWLhw25WNknr00Xfe+eyziLVrN2zY1lRGN998+uldu0acckrXrs2aRRQuXLBg/vyp61GwYMQFFxx11AEHZJbZmT8/FYQbOHDkyC+/3Hr98uWpymbb06dPt27Nm0cUK7bffkmm0Pqteuyx996bODFi9eptTxF23nmHHdayZcQTT1x88WGHRbRoUatWuXKZ56x06VSQsnXrOnXKl4+44Ybevdu3j7j33rPP7tZt6/0tXfrNN9u6bq1a1a5dvnzEsce2a1e3bio4mS9fphLXhRcecUTLlhEDBpx5ZufOuTcey5d/+21WFeS21KdP584NG6bup52ZEmxHPfrokCFTpqQCHduq4Hfzzf/3f23bRpxySseO9etHFC6cGr8SJQoXLlAg4oILDj20WbPUsmnT7Pczf/6KFWvWRAwc+OmnmweAfm/uvXfQoMmTI4YNmzx54cLs26Wn6Pv44xtvPOqoiJtvPumkNm0imjatVq1UqYhChfLn33ff1PXImzeiUaMqVUqUiLjwwp49GzWKmDTp9tuPOy7ikUf++McOHTLXa0uPPfbBB9OmRXz33fr1Wd0HpUsXKVKgQMQHH1xzzaGHRhx9dOvW1apFlC9fvHihQpkKjyVLFi6cP39E/foVKxYvHtG5c6NGFSpEXHHFkUc2bRrx1luXXdatW8TTT5933sEH7+6rsOOWL//uu5xMfdinT4cONWtGFCtWqFC+fNtv/9hjH300a1bEd99t2LDt8b/yyq5dI44+ulWrypVT41+wYNbjX7RoROfODRqUKxdxxRWHH96wYcRbb11ySceOEU8/ffbZ2wr+AQAAAOzpVMACAOA3LX/+VAWXk0/u2rVly+zbjRs3bdr8+RELFyarCPXDD6mpxAYPHjNm2rSI44/v1KlZs63b9ey5//7160eUL1+yZNGiEUuWrFq1rQBRzZoVK5YqFXHllb17d+mSWe6s2bMXL165MuKxx955Z+zY3B/3XS09teJNNz3zzLBhEfff/6c/HXVU7u1/yZJVq9asiTj//Pvue/PNiCee+Mtfjj1263bpKQiffvryy487bsePk65E1K/fv/71+usRGzZ8/31WFUTGjJk2beHCiB9/TFU6yS5Yd/nlJ5xw0EGZ5Zb+/OeHHho8OOKuu159ddSo3BuvPV06cNS//z33DBoU8fzzV1xx9NER++6b9VRXfft27dqkSWa5PS+//PHH06Zt/flLL3388dSpEe3bN2xYufLW6wsVyp8/b96Il1/+61+PPvrXG48xY2bMWLIkJ/fTMce0aZNZbunPf37ssY8+irjrrjff/Pzz3OvfkiWrV69bF3H++Q899OGHEU88ceGF3btv3S49BeHTT190UY8eO36cdOWgfv3+85+hQzOVoH6v0uNx7LEDBrz3XsQbb1x2Wc+eER06NGiQVQWk/fZLBayuvvqYY1q0yCxzy5Il33yzfn3Euec+9tjHH0c89dR553XqlKmgldamTa1aZcpEvPrqpZdmFYTMqbfe+vzz+fN/nbHOTWPGzJq1YkXqed60KfU8Z/Veu/zyww9v1Ciz3NKf//zMM599FnHXXe++O3Vqavw3bIg499wnnhg7NuKpp84+u127rMa/Zs1SpSJeffWii3YmwPbWWxMmbCv4BwAAALCnUwELAIDftCOOaNeuceOIUqWKFdtvv+zbvfHGxx9Pnrzzx3vzzdSUitlJBx169+7WLatA2Jo169dvq+LSzpo0afbsJUsievS47LJHH80EmfZWjzwyaNDYsREzZixcuCNTYOXUf//73nvjx0f07n3bbS+9lKpwlpNKI9uTDngdccR11/3vfxGDB48bt63KO0uXrl69dm3EAw+89da4cbtsOH/zXn45FYg66qibbnr55YhFi1auXLNm1x3v3/9+663PP494993PP89qasnt+emnn3/etCniqquefnrEiNzrV7oy1wMPvPvutqbu293++98PPvjyy4jevf/1r3ffjfj229x5P6YDXkccccstb74ZMXjwhAnz5u3us91zrF69du3330d07nzjjW++GXHddS++OG5cxDffrFu3K76f1qzJusJS2jPPpKYmPOGEu+8eNixV8WlblSZ/b5Yu/fbbDRsiHnhg6NCsgqA765lnPv54zpyIE064774RI3JecQuAX8emTXPm/OMf21rOnv2Pf+zuXgIAwO+DClgAAPym9e3bs+f++2+/3faCUzn19tujRn31VcTPP6emNNxnny1rRWT61bp1xL/+9dJLH32U+bxSpeOPv/HGiPbtmzSpWTO1rFEjolWrevUqV46oXbtSpdKlIypXLlOmePGIokVTU82lK/mkA1wLFixf/s03ERMmzJy5aFHEK6+MGDF5cmaZrnyzt0ufxzXXPPHE++9HPPvsVVedeGLuH+fZZ4cN++KLiHfeGTNmxoyIM87o2bNly4iePVu3rlMnolmzWrXKl48oWTI19WDq6kesWPHdd+vWRYwfP3Pm4sURb701evT06RFPPvn++xMmpKY43JEA3EUXPfDAO+9ETJkyd+6yZRGnndatW7NmEY0aVatWtmxm6sGs7zrS3n577NiZMyNq1z7rrAcfjDj55I4dGzaMOPzw/fevUyczNWC5csWL77dfJji5YEFqysvp0xcuXLUq4tVXR42aMSPipZdGjpw6devjpCsKHX74jTe+/HJmisM+fbp0adQoolGjqlVLl868JxYvTgWDPvpo8uT58yP++c9XXhkzJmLRolQA75ZbTj21Q4fcG4eLLnrkkQ8+iJgyZd68lSsjTjstNeVgo0ZVq5YqlZqqbE+4n559dsSIadMi3nln/Pivv44444zU+PXs2bJltWoRzZpVr16mTGqqswIFIlJPX+r527AhYvz42bOXLYt4663PPpszJ+LJJ1NT221visPfu3QA8MYbX375888j/vWvt9+eNCni5JMPOqh27YguXRo1qlgxonXrVAWqMmWKFi1YMKJ48dSUlRs3piqKpStZffXVwoXffBMxYsTUqYsXR7zyypgxc+dGfPnlggWrV2+/Py+/PHr0nDkR7747ceKCBRGnnNK+fa1aEYce2qJFlSoRLVpUr16qVETZsql+5MuXN+8++0SsXLlmzcaNmeDQwoWrVq1bFzF69MyZy5dHjBgxbdrSpREff5xa7q0uuuipp8aNi5gyZcGCb76JOO20Dh1q1Ypo1KhSpeLFM1MPJn2eX3557Nh58yLefXfSpEWLIk45pV27mjUjDj20WbOKFSNatKhWrUSJiLJlixVLT0GYJ09q/L//PmL58tR1WLhw1ar16yNGj549e+XK1PgvXx7x8cczZixfvrtHEWDvkQ5Y5bz97Nm33RaRJ0/Nmn/96+7uPQAA/DblWbNm3boNG9L/8yQAADurSJHu3S++eMe22fZPYVuvzelPZ1m3y37rHdtvzn/Ay1nLHf9JMKfjtnP73f7Wv41xS36fZd1+5++zX7bPreuQW/dF9p/uGeOW8/tiV43br/Ney73nM916zxy33Hpv53yr3fNe2/XPZ7Lzy/lWe/f3Xfaf7t73dqb1njlue+r3Xab1nvXe3v7We9vfE/a2cduz/z6a/drf1vddptWe9d7e/ta76vnM2f731O+77W+dm+/tTZvmzLn99h3rZ9ZHyT6Itauez1+231O/77ZutWe8t3O+1Y68f9asufbaOnVy1g8AALZPBSwAAAAAAIDt2LTp7rtzsyJpzh1zzDHH5OZ5qIgFAAC5bZ/d3QEAAAAAAIA91e4LXgEAAHsLASwAAAAAAIAtCF4BAAA5JYAFAAAAAAAAAACQkAAWAAAAAADA/6fyFQAAsKMEsAAAAAAAgN+9PTd49corr7ySe3vLk6dmzb/+dXefEwAA/LYIYAEAAAAAAL9be27waks7G8TK3SAXAACQIYAFAAAAAAD87mzadPfdBx+8u3uRxI4GqX7ZftOmAQMOPHB3nwMAAPy25N3dHQAAAAAAAPi17L3Bqy3tXEWrdBArT55LLhk1anefCwAA7N1UwAIAAAAAAAAAAEhIAAsAAAAAAPjN27Tpnnt+G5WvcpcpCQEAYOcJYAEAAAAAAL9Ze2rwKk+eK6+cPHl39yJj06YBAw44YHf3AgAA9k4CWAAAAAAAAL+SLYNXe1oQCwAA2HECWAAAAAAAALvY9oJWglgAALD3EsACAAAAAADYRQSrAADgt08ACwAAAAAAIJclDV4JbAEAwN5HAAsAgF/VoEF3333llREzZgwcePfdEbfffuGFp5yyu3vF78WgQf/4x4UXRsyY8cwzN94Ycfvt55xz7LFZt7vggl+2O+aY3d37nTnvW28955yIGTOefPKaayJuv/2PfzzqqN3dq73frbeecUavXhEzZjz22GWXRQwefMst/frt7l7tPW69tU+fbt0iZsx46KE//Sli8OAbbzzttN3dq1/PoEHXXHPiiREzZvznP+ecE3H77X36dOmyu3u19xs06MorjzkmYsaMe+45/fSI228/9dQOHXZ3rwD4vcmtAJUgFgAA7D3y7u4OAACwdzjyyIMPbt064l//uuSS00/fev1hh1188a23RkybNnfuokW7u7c776abzj77+OMj/u//evRo1y5i1qyFC5cujTjkkIsu+sc/dnfv+K16/PHLLz/11IiDD27atHbtzOc//7xp06ZNERs3fv/9jz9GLFv2zTdr1kRMmDBz5oIFEf/735AhY8dGjBkzdercubv7LAAAYM+wadM99xx88O7uxd5n06YBAw44ICJPnksuGT16d/cGAAD2DgJYAADkyHHHde3atu221x94YMSttz7xxKuv7u7eQtYOPfSKK+69N/XPefLs7t5s3+rVa9asXx/Rps25595xR0SJEkWKFCoU0aNH69YNGkRce+1pp/XqFXHEEW3bNmkScc89r7zywQcR99776qvDh29+3lde+cADWR9jbxgHAAAAAADYkwlgAQCwTRUqlC5dokTEQQc1b16/fubzzz+fOnX27IiWLevXr1kz4uijO3bcf/+I229/6qnXX4/46aeffvr55+TH3WefPHny5Ino2/fwwzt2jDjxxO7d27WLqF69QoUyZVLBlHXrIr74YsaMuXMjBgx49tm3346YOvXrrzevwDVo0L/+dfnlEXXrVq1aoULEe++NHv3FFxHffrt27YYNEQcd1LRp3boR33//448//hixbt2GDd9/H9GwYY0alSpl9lOrVqVK5cpFzJjx4ot33pn5/Ior/v3v55+PePnlDz4YMyaiY8cWLRo0iLjwwhNO6NEjok6dKlXKl4/46aeff/7554jJk2fPXrAg4vnn339/1KiIQYM+/XTixIhNm1IVjnJbZhwPPbR9+4gTT+zW7YADIqpXL1++dOlMwOeLL2bNmjcvYsCA558fPDhi6tS5c5cs2Xp/gwcPGHDJJanxKFs24p13Ro2aNCnim29S++neff/9GzaMyJ8/b968eSPefXf06MmTI559dsiQ0aMjLrvs5JN79oxo1apevWrVMtfx6affe2/UqIj//CcVIEp78smrrz7jjIiDDmrSJKuKUOnjjhs3bdrXX0fcccezz773XsTMmQsXLlu2df/TUxDWrVulSrlyEQMHDh8+fnzE5Zc/8MDAgbk//rktfb1efPHDDz//PKJQoQIF8uXLBLEuuujYYzt3jvjss+nT58+PGDly8uTZszNTENatW7ly2bIRAweOGDFhQsTllz/00BtvZPbfsWOzZrVrR1x44R/+cPDBEXXqpK7zTz9t2pS6f+fMWbw44vnnP/jg888jBg0aM+bLL1P37+b3W+/e3bq1bh1x4okdO7ZoEVGrVsWKpUtHfPvtunUbNkS89tonn0yalAqMDR8esX59qrJX2r777rNPnjwR/fr16nXggRHHHdehQ7NmEdWqlStXokTqef3pp4gJE2bNWrgw4t57X3995MhUBbB58za/3jff3K9f6rzLlIl4773PPps+PdOPgw5q1Kh69cz+unX7618ffjiiaNFChQoUiLjhhtNO69EjokePli3r1o1YvTr13hgxYvLkOXMiihbdb78CBX79++DJJy+99IQTIg46qGHDatUyn2eei1Q/x42bMWPhwog77njppREjImbOXLx45cqt9zdo0A039OkTUbdupUqlS0cMHvz55zNmpCqtrVsX0blz06Y1akSUKFG4cMGCmf1eddWTTw4ZErF48erVa9Zk9pcZv1NO6dIlokeP5s1r1dp8/L78ct68VLv8+Xd+PI477qCDGjaM+Mc/+vbt1i1i48Yffvjpp4gWLf7854ceivjhh9T1ve++P/6xV6+IXr1atapTJ+LFFz/++MsvI6688sknhw6NKFYsdT3Hjr3zzn79MvfzBRc8+OC770a888748TNnbv5e7dKlWbOIE0/s0KFhw4jq1cuWLV48dZ4bN0Z88cXXXy9dGjFgwOuvjx4dMXXqggUrVmR/HunxuPXWU0/t3DmiffsGDapUiShZskiRggUjhgyZOHHOnIhrr3322eHDI779dv3677/f8fEaNOhvfzvhhIi6dStWLFky4r33JkyYMyfT7/btGzasXDmiZMnU9R4y5Isvvv464tprn3tu5Mitj/vpp7feesopEWXKFC1aqFDE448PGzZ5csTf/z5w4KefZtrdffcZZ3TpEnH44a1a1aoVMWnSvHnLl0f84Q+33/7665l2HTs2alSlSsSFF/bq1aJFRJ06FSqUKJF6D23aFDF58rx5K1ZEPP/8xx9PmxYxaND48bNnZ95DWypSpGDB/PkjbrjhxBPbto3o3Dm1/xIlChcuUCBi3LhZs5Yujbjqquee+/jj1P28bt3O35cA/D7tqikD0/vdtOnWWxs33t1nCQAAZGWf3d0BAAD2bMce26XLgQdmfnBevfq779aujbj00rvvfuqpTHCoTJkSJYoWjejcuVWr3PgfhG+66eyzTzwx4uqrzzjjmGMili5dterbbyM6dPjjH6+/PuLyy++993//i+jcuXXrRo0iBg78xz8uuSSiSZPatatWzX6/PXoccEDTphGffZYKkHXvfuGFt9wS0a3bBRfcckvEkUf+5S933hnx7LPvvffJJ5nt0lMQ1qlzwgmXXppZpoNXpUsXL16kSMT9919++emnRzRqVLNm5coRxx9/1VX33BPRqdN5591yS8R997300vvvRxx++EEHNW8eUaNGKlC2q9x001lnHXtsxNVX9+175JGpcfzuu4gOHc4779ZbIy6//D//eeGFiM6dW7Zs0CBi4MC///2CCyKaNKlVq3Ll7e+/R482bRo1injjjY8/njAh4vTTb7nl8cdTwZSCBSOOP75z59atI55++m9/698/4h//+N//3nkn4o9//Oc/n346oly5kiWLFYu45JITT+zRI6Jdu8aNa9XK7L9Pn7///fHHI+rU6d37b3/LLFu3Puusv/894qWXPvxw3LiI7t1bt27YMOLBB//yl1NOicifP1++vL+D/9zk+eeHDfvss0zwJu3//q9r19atc76f0qWLFStcOOL++y+66IQTIho1ql69QoWI44+/4YbHHovo1OmSS+69N+K++157bcSIiMMPP/DARo0iatQoX75Uqcx+brihb99evSKuv/6003r2jChTpnjxwoUj+va9/fb//S/i0EOvuuqhhyKmTp03b+nSiHbtGjWqUWPr/tx665lnHn54xOWXn3hily4RGzb88MMPP0R06vSXv9x/f8SFF/7736++GnHggQ0aVKsW8fTTl1/eu3cqUJXV/tJ69GjVqm7diM8+mzFjwYKI7t1Tgatu3a644qGHMu1uueX003v1ijjqqLZtGzWKmD594cLlyyOOPfamm558MuKDDyZOnDUrolev1q3r1fv1r3ufPnfe+eKLEXXq9O8/YEBm2br1n/70n/9EvPTSiBGTJ0d0796iRe3aEQ8+eOGFRx+dCkbuu+/299+jR4sWdepEfPLJV1/Nmxdxwgm33vr88xGrVqUCVB07NmlSo0bElVeecEJWU/rcckufPt26RRx11AEH1K8fMX36okUrV0Yce+wttzz/fMQHH3zxxezZmSDUzvr006lT58/P/LlAgXz59t03onHjqlXLls183qpV7doVK2b+vP/+deps/ufWrWvXrlAh832XfqpGjZo+fcGCTLubburdu1OniKuvPuGE9u0jli5NBdU6dLjyyqeeirj88v/+d8iQiM6dmzSpXj1i4MArrjjuuIgmTapV27w/W4978+Y1a0Z8/PFXX82fH3HMMf/4x8svZ4JbRxzRpk2dOhG33XbaaZ0759791KNH8+Y1akR8/PHUqQsWRBxzzO23v/pq6rgrV0YccUTr1rVrR9x226mnduyYkz0mCxSXLl20aMGCEfff379/t24RjRpVqVK6dMTxx9955xtvRHTqdN11L74Ycd9977wzYUIqyFWzZkSNGmXLFiu2rfNr2rRatYhPPpk2bfHiiBNOGDDgrbdS9/PGjREdO6YCZ1de+Yc/7L9/7o0rAAAAAL8vAlgAAGxTemrBtNdf/+ijceMi5s5dvHj58ohRoyZPnjEjs/7443/ZfkelK1ydeGL37ptPeXjffS+88M47EStXfvvtmjURI0ZMmDB1asSECdOnf/116gf3vHkjzjrr6KO7dMl+/xMmpCpmPf/8++9/+mmqUsrmlXeSSleESvcjX75U0KFWrcqVy5VLVfTZZ5+IMWO+/HLWrIjzz7/zziefjJg9e9GirCo17azq1StUKF064sQTu3bd/Afl++576aUhQ1LjuHZtxIgREydOn54al3nzNh/HI4/MyQ/t48ZNnfr11xGffjp58qxZEV9+OWfOokUR332XqjCUNnz4xInTpqUqbS1YEDFy5BdfzJiRqQyWltPgV3r/zz03ZMjYsZnPa9RInXfDhtWqVaiQ++O6p0nfv+lgXVr9+lWrliuX8/2kK1Rtff9WqlSmzOb379Spc+dGnH/+vfe+/HLE7NmpikrVq5cvX7JkxMknd+7cqlVmv//+dyqwNW5cqiJXujLTq69+/PGkSRFDh44fP316pn3NmhUqlCoVceyxHTo0bZr5/OGH33571KiIpUtTlZY++uiLL2bNivj44ylTvv46UzHr4ouPOSarQFDahAmzZi1aFPH88x9+OGHC1s9/1aply5YoEXHoofvvv3nFv8cfHzx47NhURai1ayPefXfcuNT9nKoItqf47rv16zdujHjuuY8+mjgx83mNGuXLlygR0bDhLwNJ2Rk/PjVO77wzbtz06amA0dq1EWPGTJu2eRCpUaNfBoqqVk1VgDr00Nat69bdfPzef//zzyOWLfv223XrIt5997PPZs7MVIjaWQsWrFjx3XcR8+evWPHtt5nP27RJBayqVUv1q1y5VCBwzZpUpcMaNVIV1UqXTlVuat26du3NKx9Om7Zw4YoVEatWrVmzYUOmwtWJJ7Zv36hRpt1997311pgxEStXpirUjRjx5Zfz50dMmDBnzpIlmUDYWWf16NGiRfbn8eWX8+evWBHxxhtjx86YEbFixXffrV8f8cgj77+/+fU85JAWLVLBo3Llihff+fH78stUwOuNN8aOnTlz8+MOGfLL46aCWjVqpMYhO1sGQnOqVq3U+aTHK1++vHn32SeiVq3U/Zt+zseMmTlz8eKI889/9NGhQyNmz166dPPrvqXx4+fMWbYsVcFszpyIpUu//Xb9+tR+Nq/02KhR5cqbB0oBAAAAYEf8Dv6bcAAAkth//0aNateOqF69YsXNf2AfOHDYsFGjtv5z27ZNmtStG9GlS5s2jRtHlCpVrFiRIpmgT041a1anTrVqEXnypCqQpD377M03/+lP298+HeDKzpw5uybwNHPmggXLlkWsX79x4w8/ZKaGu//+yy47/fRMu/nzly1btSpi0KBPPpkwIWLAgOeee+edzBRZuaVZs1QlsK3H8YYbzj47J+OYmqJwexYtWrFi9eqtP08HW4oWTf154cLly7/5JrM+M+XiL3+mT09dmNalS8uW9etHnHvuH/7QqVNE/frVqpUvH7HffgUK5M+/9fmlVapUpkyJEhETJsycuXllnN+qdMWetB2NP8ycmarwtH7999+n7t/8+VP3b6oiVtr8+anrOGjQ6NFffhkxYMDLL3/wQUSzZjVrVqqUuh6b73fSpB0LKDVtWqPG5hWJ0tJBry3NmbNkycqVEQcf3KRJzZqp7bcVvJszZ8mSVauyX1+vXmqqwi3Nnbt0aVb3eXp/2ztubuvSpVmzWrUizj338MMPPDCifv1Uvzd/LrLarlKl0qWLFUsFg7Z1XebO/eXzmrZlYG3L57VevdQUhlvvb9myrPY3Z86SJatXRzRtWr36jgQGszNqVKqCU5UqBx1UrFgqUFWxYiYYlfbMMx9+OGlSxNln9+zZqlUmqJVepn36aWp/ac2a1ahRrtzW4/vss5deeswx2+9f9erbDkzNmZPdfbZ0aVbjV69epUqlSkXMmZP1+ObUnDlLlmR9fbLeb716lSqVLLnzx93SzJmpfqSnJC1UKH/+vHkj7r//rLO6dcu0mz9/5co1ayIGDfr889mzIwYMePPNzz6L+OGHrKc+njs3FdDbUnqqyrT8+VOBLwAAAABIQgALAIAsHXts166bV6BKe/XVf/7zssuy3y5v3n333XffiKOP7tixTZuIxx9/880PP8z5cbML1Bx66MUX33ZbxPTp8+algwNZRwwye8rq059+yvoH2p2Vrsx15pm33PLwwxHnnnvMMV27RrRsWa9ejRqZKfmqVClbtmTJiLPOOuqozp0jVqz45ps1ayIeeeSNN3ZknHIyjll9fuihl176r39FTJ8+f/7mlT+yGq9tj296PH/+OSdRny0rXW3vKOlKVvfff+mlvXtn7qs77nj22cGDIx57bNCgkSMjKldOBa3ef3/AgD//ObN9ulLKb106KFW2bGoK0LTp01OBwJxaufK779atizjzzDvuePbZiHPPPfLI9u0jWrasU6dKldT9W6BARJUqZcoULx5x1lmHHda2bcSKFamA5dKlq1dnFXDIBO32DNnfh9uW3TnkyZOz5yS31KiRqjR2//3nn3/00annYp99Iu644+WXhw+PeOyx99777LOIypVTQav33//73884I7N9Tp+L7N6TSa9mdvdBdu+ppNKBqeOOO+ighg0zAax0Bavvv08FXf/736FDJ0yI+OMfDzmkVauIdu3q169SZesg2KhR06YtXLh5f7M+7qGH3njjc8+lplrcVsAv6Znn9jjl/Li5e3+nK+llZ+XK1HU688z77x88OOLcc3v0aNYsomXLmjXLlYsoWrRQofz5I6pUKVWqSJGIs87q1q1p01TFrg0bIh55ZOjQSZO23m92z/2e9n4CYO+WJ8+VV06e/OsdZ9OmW29t3Hh3nzUAALA5ASwAAH6hUKGCBfPnjzjssIMOatky8/kpp1xzzT33RIwaNWlSasrBX/4se8opvXp16BBxww1//OOJJ0Ycd1y3bm3b7ngAa+LE1BSBW2rVqkGDmjV/GcDalX7+OWfBoi2NGTNlyqxZmWU6UJauzPXYY1df3b9/RLVqqQpT9er9cqq866/v1++YYyJOPbVnz4MOiliyZOXKb76JaN/+nHP+/vcdGcesKz+1alW/fvXqWQWw9iyNG6cqKqWDV2kDBw4fnqp0kgpS1KpVseK2Kp7tKtdff/rphx8eceqpPXoccEDEkiWrVn37bUT79hdeOGDAr9eP3r27d2/TJquKPEOHjhu34/tLTzGYXqb3W716+fKlSkU89thf/vJ//xdRrVq5ciVLRtSrV6VK2bIR77//2WfTpm29v6ZNa9asWDFi4sTZsxct2v7xv/giNYXllmrUqFChZMmIyZO//nrz+7ZGjVS/Nt9+Z94P06enKoFtqXr11FR1W55H9eqpqdG25/rrTzmlW7eIU0/t2rVly9T9smZNRPv2f/nLAw/kvH+NG1erVq5cJniVNnDgxx9PmbL5c5EKav3apk9PTdmX/fjNmbP5lIPpz3PLp59Onbr5e69UqdTUgoce2rp1nTqZKQ+XLv3mm3XrUoGplSsjjj22XbsGDTJT36VjOaNHT5++eQWsiROznjKxVavatStU2JEAVtay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ASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAA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AMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAAAADASgSwAAAAAAAAAAAAAAAAAMBKBLAAAAAAAAAAAAAAAAAAwEoEsAAAAAAAAAAAAAAA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AAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGAlAlgAAAAAAAAAAAAAAAAAYCUCWAAAAAAAAAAAAAAAAABgJQJYAAAAAAAAAAAAAAAAAGCl/wOcNxtylpVDvAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/assets/screenshot-3.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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/uud/+9NmzZ161asGDFs2K23nnJKRJEihQrlz7+7ewUkUaRIwYL58kWcdFK7drVqRXTp0rhxxYoRrVvXqlWmTETZsqnvo+LF99svX76IjRt//PHnnyOWLv3mm/XrI778cuHC1asjRoz46qslSyJefXXs2LlzI778csGC1at399kBAAAAwM4RwAIAIFc1bVqrVqVKEV27tmpVr17E0KGffTZ9es63P/XUQw5p3TrnwavcdvLJXbu2bJnz4FVanz49e7ZpE3H11Y88MmjQzvfj8MPbtm3YMOK///3rX086KRPE2p6KFUuXLlo0s2zYsFq1cuUiunVr1apOnUy7f//7tdc++STiggvuuee11379cd6e/Pnz5t1334gbbujbt1u3iD59br/9pZd2d692n/79e/Vq2TLi4YcvuujII7NvV7duv3733RcxY8aiRTkJrO1q99xzzjmHHCJ4tafp379HjyZNIh5++LzzevTIvl3duued98QTqftJQOb3Z99999knT56IK6446qgWLSIuu+zII5s1iyhRonDhnDzPefPuu+8++0TUrFmuXNGimeVhh7VoUbVqxC23nHxymzYRZ5zxwAPDh0c88cSHH+7I3xdI6d+/c+c6dSIefrhfvwMPzL5d3bqXXfbGGxEzZixZ8t13u7vXAAAAAL89++zuDgAA8Nt00UUnnNCpU5Ltjj8+yXa5pW/fVJBqR512Wo8erVtH7LNPnjx58iQ/fuvW9epVqRIxcOCNN/bpk/Pg1W/VKad069a8eUSTJqmKX+wdypRJ3bft2jVoULly9u2GDZs48euvI8qXP/XUu++OyJPniCNuvTWzvPjihx56//3dfTbw+1KsWCowOWTI3/52+OERf/97KiiV0+DVjkpX1gIAAACAvZkKWAAA7BJHHNGuXZMmEbVqVapUunTErFkLF65YkX377t1bt65XL6JJk5o1K1b89ftbv37VquXKRRxwQMOG1art+PZVq5YrV6JERJcuLVvWqRMxZMiOVf5Ku/nmM8/s1StTAWpLa9du2PD99xGXXfbAA2+9FfHmm59++tVXEUuXrl69Zk2m0lCjRtWrly8fceihqSkL+/bt2bN164hKlUqXLlbs1x/fpNKBtr///YwzevSIOPro6657+und3avfrhYtLrjg4YezWpOJFeYkYFi1atmyRYtuv91zz3300ZQpqft33brs211//f/+N3x4ajliRNb9Ys/RosUllzzzTNbrXLE9V758qYpVL798ySXdu0d06tSo0ba+j9et27jxxx8j7rpr0KBJkyKef/7jj2fNylRY2mefVAWtatXKlClcOKJbt8aNK1WKOPfcHj0aNoxo2LBy5RIldvdZAwAAAEDuEMACAGCXSP/weuGFxx3XsWPEn/98772vvJJ9+4svPuGEzp13X3/79u3Va//9s1//ww8//vjTTxHffLN27YYN2U+R2KdPKui0owGsdOCqa9dfThW4pZtvfuqpIUMi7r//9dc/+SQi4pcVtzZu/OGHH3+MGD78iy9mz84sr732iScGD44488xDD91//4hy5UqUKFJk9433jjrqqHbtGjSIaNeuUaNq1SI++WTKlLlzd3evyE6BAvny5c3Bv22uW7dx4w8/7O7eAhERF1zQq1fjxhHduzdtuq3KdStWfPfdxo0R3brdfPNbb0VMmPD11ytX/rJN6nsp9f+nTJk/f/XqzPK++wYPnjIlol+/zp3r14/YuPHHH3/+eXefPQAAAADsHAEsAAByxaefTp48Z05E27aNG9eokfn8zDMPO6xt24hrr3300bffjvjuu3XrNm7MrK9bt0qVsmUjDjusbduGDbfe7yefpPbbrt0v95tb8uRJBZhOOaV791atsm/37rtjxkydGvH110uWrFoVcf75f/hD+/ZbtzvuuI4dmzWLOP/8u+565ZWINWvWr9/8fLNTrlzJkkWKZF/5Km3u3KVLV6/e8fP88ceffvr554iHHnrzzdGjc38cfy233JKqhNWly2WXPfror3/8EiWKFClYMOLMM3v2bNUq4pBDWreuXTuiadPUFImlShUtWqhQxKZNqf9bvvybb9atixg/fubMxYsj3n57zJjp0yOeemrIkIkTUxXNsgogPffclVcef3zESSd17Ni4cc77N336o49ecEH26ydP/vrrZcsimjQ599wHHth6/fjx99131lkRzZvXqpXVlI9DhowfP2dORPfuV1+9eYWjv/zl2GPbto24445+/bp1y3l/n3rq0kuPOiqz3FkVK/bpc++9EYsXr1q1du322xcsmD9/3rwRJ5108MENGkQcfvj++9epE9G6de3a5ctHlC1bvPh++2UqAy1YsHLlmjURM2YsXLhqVcQrr3z66fTpES+9NHLktGmpYMr69Vsfp2jRVGW6Dh0aNapcOaJz5yZNqlaNaNu2fv1KlSJq165QoUSJiNKlixYtWDAib97U8dasSd0f8+YtX/7ddxGffTZz5pIlES+8MHLk1KkRb789btycOds/z+ee+8tfDjss4qSTOnSoXz/n4zl9+n/+c/rp2a+fPHnu3BUrIpo0ufjizSvTjR8/YMApp0Q0b16jRpkyW283ZMjEifPmRXTvfv312wrmbqlEicKFCxSIOPPMrl0bNYo45JAWLapVi2jatFq10qVTz1/BghGbNm3alHr+vv12w4aI8ePnzFm2LOLttz/77OuvI5566sMPp02LWLt2xwKA48ffcceJJ27rvL74Yv78iO7db7zxjTcievZs0aJq1YhzzunRo3HjiHbt6tevUCGiVKkiRQoUiFi5cs2ajRsjPvpoypSFCyNuueWVVz7/PNXf5ctz3q+dVaBAvnz77htx1VXHHNOixfbbn332I4+MGJF18ConUlcn4pFHhg2bNm3Hty9aNDVl4emnd+pUp05Er17Nm1epEtG8ebVqpUplxjd9HyxcmKqwN3z4V18tWRLx6KPDhk2fHjFy5PTpS5fm/Ljjx99665FHZo6zpSFDJk9etCiie/dbb33vvYiePZs1q1Qp4pxzunWrVy+iXbs6dcqWTfUvf/7U9f/++4iPPkr165ZbXn990qSI8ePnzl21Kvt+PPfc+ed36BBx0klt21avnvP+T59+xx1HHpn9+smTFyz45puIJk2uvPLtt3My/gcfXKtWRK9eTZtWqJAal5IlI0qVSk1VmbrKEQsXrlq1fn3E8OHTpi1bFvHoox9+OGtWxMiRM2Ykuc/Hj7/ppkMOiWjevGrVrCqoDRkyZcrSpRHdu99xx4cfRtSqVbZs4cIRV111xBENG0b06NG4cfnyEZUrlyxZqFDEsGFffbVsWUSPHnfc8dFHO94fAAAAgDQBLAAAcsVdd7344gcfRDz3XOPGm/9gX6xY4cIFC0acfvqhhx54YMS997788uY/cF100QkndOqUCUJltd8PP9x1AayuXVNTBlarVr58yZLZt3vuuaFDP/98+wGswoULFsyfPxXEato04r//fffdsWO334/vv//hh59+2n67P/3p2GPbt89U2FqyZPXqnARN9jbvvjt27PTpET17tmlTt27m886dmzevWTPzebrdrnbyyZ07N20a8cADf/rTEUdEFC+euq+3p2rVsmWLF88sjzyybdv69SOuu+7UUzt3jujb95//fPXViMGDx42bOXN3jfbvzyGHtGxZs2bEY49ddNGhh0ZUrly6dE6mTEwHpdLLnj1btapZM6JHjxYtatSIOP7422577bWtt7v//nPP7dEj4pRTOnXKKmianXTgKL1s2rR69TJlIvr27dq1ceOI994bP/7rryOOPfa2215/PRPY+q05+eQOHerVi3jggbPP7tIlonjx/fbLn3/721WtWqZMkSKZ5ZFHtmlTs2bEddedeOIBB0T07Xvvve+/HzF48IQJ8+btfD/TQaannrrwwm7dIk49tWPHevWyb1++fPHihQpFnHBCu3a1a6f6V6NGxBFH3Hbb22+nAl0LFuz68e3UqWHDihUjypRJBdiy89VXCxeuXh3x8sujRs2evev7taVjj91//+rVIx5++Kyz2rfPBK22p06d8uWLFcsszzijU6e6dSP++9/hw2fMiDj77Ecf/fTTVAXJnHwPZ6dAgVSA+qmnzj23Q4eIU09t375Wrezbly9fvHjBghEnnHDggdWrRxx5ZKtWVapEHHHEnXcOG5YKdC1e/OuPc/bj36ZN1aoRDz985pkHHJAJWuVk/IsUySzPOOPgg2vWjPjvf0eMmDMn4uyzn3hizJjcr4TWpk2NGiVLRrzzzqWXduwYUbp0Kvi2JdOiAgAAALlln93dAQAAfhtefXX48IkTI+bMWbw4q4oY6akI00Gr4sULFy5UKDX13wEHbN1++PCJE2fNivjss2nTcuOH8ez06dOz57amHly/PlUh5bXXRo6cPDli5MhJk+bMiZg3b9uVqPr27dmzTZuc92Pp0tWr16yJWLBg+fJvvsm+3YEHNmxYrVrEnDnPPnvVVRFvvPH3v59+esTll590UqdOEd27t2pVt26qUlOhQrtu3Ha1q6567LHBgzMVTLZ0yy1nntmjR/bBvdzSp0/37i1aRDz7bKoiVU6DV9tToUKq4tmbb95wQ+/eET16tGq1rR/qyR1/+EPbtnXrRrz99vXXn3BCzoNXe6oePVq0qF49FfDq3n139yb39enTuXODBhHPPvvnP/fsmfPg1fZUqFCixH77Rbz55lVXHXFERI8ezZtXrbrz++3QoUGDihW3H7zKTsGCqQDXo4+ec07nzhH77puayndX69SpUaOKFbff7p13xo+fP3/X92dLJ5980EG1akW89NLFF3ftmvPg1fb07XvwwXXqRDz77AUXpP9+sjP769Chfv1y5bYfvMpO5vr379+u3a93/bfn5JNTlbZeeumCCzp0yHnwanv69u3QoUaNiGefPffcdu12fvzTihYtWDBv3ogXXjjvvHbtsg9epe3av0UAAAAAvycqYAEAkCt++unnn3/+OeK++1IVrv75z/PP/8MfMus3n2qwUaOIhg2rVy9fPqJIkUKFsvohNV1Ra1fJVKrq1KlZs+zbvfXWp59++eXWUwm+8MIHH4wfH3HppSee2Lnz1tt17tyiRe3aEdWqlStXokRq6sBtBavS7r33lVdGjoy47bazzjrssOzbpadOO+KI1NSN6WXazz+ngksTJsycuWhRxIsvfvjhxIkRDz74xhujR0esXPndd+vW7brx3VkTJ86atXhxxLPPDhs2cWJE795duzZvnlnfqlWdOpUqRZxwQseOTZpEvPDChx9OmpR7xy9fPhWQ+ve/L7jgiCOyb7dmzfr1338fce6599775psRr776ySdffZWasm7ffSNOPbVbt2bNIgYM+OMfe/bMTC2Xli9f3rz77BPx2GOXXHL00RF16/brd++9ESeffOutL72UWfbv36tXq1YRDz980UXbmkKqbt1+/e67L2LGjEWLtjWFVW775z8HDvz008yybdsGDapUifjkkzvv7Ns3++1OO+3OO19/PeLpp4cNmzw5+3bXX9+798EHR1x3Xe/eHTrseP9Kl05NDfn44xdffPjh2w82PP30Bx9MnhwxYMCrr44dGzFlyrx5y5dHFCu2334FCkTUrFm+fIkSEd27N29evXpEuXKpQE92Vq1as2bDhoinnho2bMqUiFdfHTVq+vSI6dNTUxkuWZKaIm3VqtSUdOnjNG9es2bZshHXX/9//9euXcTBBzdqVKXK1vvv3btjxwYNIq688sknR4yImD9/xYrvvsusP/nkf/7z7bczy/79DzmkSZOIhx8+77wePbLvd9265533xBOp+ym7wGlqHHM3wFC+fGo8//3vs87K6v2alq74de65Dz74wQcRr746evSsWZnn6tRTO3WqXz9iwIC+fTt0yOr5S/35scfOO69r14i6dS+44OmnIzZs2LlKSOmpBc8664EHPvggFVyaOzeibt2KFYsXj3j66T/9qXv3iCZNqlbNaiq76tXLli1aNKJ9+9SUhR999OWXu7ISUqVKJUtu6/5Nmzp10aKcfI/llrJlixUrWDDioYf692/fPvugzOrV69Z9/33En//85JOjR0e88cZnn82dm6pIljdvxHnn9ejRoEHE1Vf/4Q9Zfd8fc0ybNtWqRZx+eseOdepEPP74hx/OmJG835nrn6qs9c47EyYsXBhRt26FCkWLRjz99HnndegQ0aRJlSpZTaFXvXqZMoULR7RvX69e2bKpKQo3nyrx5JP//e8RIzLL/v07d65TJ+Lhh/v1O/DA7PtVt+5ll73xRsSMGUuWbP5+2NzmI1y2bNGiBQpEPPTQmWfuv39Oxv9///v884g33vj884ULUxXB9tkn4rzzunWrWzfi6quPOqpRo6zGv3XrKlUiTj+9Q4eaNSMef3z48JxMrZqdAw6oVatUqcxUlzff/MYbX34Z8dBDH3wwe3bEqlVr137/fUTbtrVrlyqVmZIQAAAAYGepgAUAQK565JE33/zkk60DS2mXXHLSSZ07R1xwwbHHHnzw1uvTFbRee23EiNwM1GwpHbxKB7Gyk556MKvPx4/Pfrt0ZabTTjvkkB2phHXHHc8998EHEU899d57n32W/Pz22Sd1/JYtU0GlW27p169Xr4iZM59++rLLIo48sl27HZkKbXe55ponnhgyJOKHH378MatAxE039e3brdvWwYqd1a9fKvBUpEihQtu6P66+OtW/p58eOnTChEwga9WqNWvWr4+4997XXhs1KuK++15/ffTo7PdTpUqZMsWKRRx7bPv2e8N12dv063fIIc2aZabyy84DDwwaNH58xGmnDRjw1lsRn38+a9aSJZmpyZYt++abdesiRo+eNm3RoohbbnnxxU8/jbj44ocfHjo0+/1eeOFDDw0ZEtGnz113vf12xMCBn3wyfXrEF198/fXy5RFLl6b2+8MPP/30888RK1Z899369RFDh06cOHduRP/+9903eHD2+08/7x07Nm5cufLuHu2d169ft26NGkUUKVKwYL582be7+ur//e+TTyKefvqjj6ZOzQSy0kG2e+99++2JEyPuu2/QoC++yH4/VaqULl2kSMSxx7ZtW7v2zvf/T3967LHhwyMGDhw1atasiHXrNm788ceICRPmzFmxIuKyy5566pNPtr+fJk2qVcsqoJXbSpTIWUWjX3uKy379unSpVy+iaNFChbZ1H5x11sMPjxwZ8cQTH300fXrEihWp679w4apV69ZF/O1vL7zw2WcRL700atS2gj1XXHHkkU2a7Hy///Snp54aMyZi4MAxY+bOjVi37vvvU9d/7txVqyIuu+x//xs3bvv7yS6g9Wvp169Tp9q1UxWltj3+jz02ZkzEE08MHz579ubjv3r1+vURf/vbyy9/8UXESy+NGbOtiqZXXHH44bn5/XfzzW+8MWVKxDXXDBw4aVLEvHkrV65bF7FmTep5fP/9KVOWLo244ooXX9zW+wEAAAAgpwSwAADIVd98s3bt+vUR//3vO+9kFTjp2rVVq3r1IqpXr1Ahqx+W77tv4MDhwzMVtXaVvn23PfXgd9+tW7dxY6oC1pQpW68fO3bq1HnzImbMWLBg+fLs99OnT8+erVvnvF/pylV9+tx663PPRRx11NVXP/FExIcfTpgwa1b2U/LlVHpqwhdfvO66U06JaNSoevVy5XbdOO+sWbMWLVq5MuKRRwYNyuoH63r1qlQpUybijDN69mzVKveO26VL8+Y1a26/3eOPDx6cVUBvS48++u67OQnUde7crFmNGrl3HqR0796ixbbGNf1U3XDDc8+NHLnr+nHAAXXrVqwYcddd/ft37RoxatQ//3nKKRFLlz755HnnRWzY8NJLF18csWnTa69demlmOXXqf/5z5pnb33+lSqVKFSny647trtClS5MmWVX62tLjjw8d+uWX22/36KNDh2b1Ht9S5847F2BbvXrt2o0bI557buTIbVVQmjFj8eJvv93+/kqUSFVC29VWr05VBNqe7QXiclvXro0bb2tqxHSlqYEDR4/++uvt7++ttz7/fFtTKNavn6pQVqNG2bJJnqN0Jajnnvvkk9mzs2+3rQpUmytRInem3Eyqa9dGjbZVGWrlytR9M3Dg2LE5mZryrbcmTFi0KPv19eunKoTVqJGqAJZUOsg6YMC7706btvvGDwAAAPj9MQUhAAC7xN13p6YQPO+8P/yhQ4dMRajspCtmpSto7SpVq6amBOzcuUWLOnWyb/faayNHTpoUsWFDqnJFdp5/ftiw8eMjrr761FO7d996fb16qakX27Vr3Lh69YhPPpkyJSc/FKe98cYnn0yZklmWLVuiROHCEZ06NW9eq1ZE27aNGlWvHtGuXWp5wAENGlStuv2KUOmpmc4//+ij27WLOP/8e+997bVdN+4768Ybn3lm6NCIvn0POaRly4j99itQYPMgwLXXnnpqly4R5557992vv77zx6tUqXTpYsWyX79s2TffrF0b8d13WVd629Ls2YsXZzeF2+YqVy5dumjRXT6cvzuVK6cqHGVn0aJVq9asiVi8eNWqtWtz77jpt95//nPOOT16RJxzTq9em0+lmdsKF/51AzK7SqVKpUptK4CxbNm3365fn3r+0sGhbX2/zJ69ZElOAk+VK2/7uNsza1bqOD/99PPP2wrKrl+/7e+VtH322fZUmbklXSlqe9IBpV9L5colS27repQqVaRIgQIRP/30zDOnn557x23YsFKl4sUj5sxZtmzNmpxvN2vW0qVr1vzy+md1/dav//77nExxma5st7tUrlyyZKFC2a8vVSpVOe2nn5544qSTcu+4DRtWqlSsWMScOcuXJ3kff/XVokXffZcKxP2aFdsAAAAABLAAANglpk+fP3/Zsoi3305VkDr88HbtGjfOvv0TTwwaNHp0qoLWhg27rl/pKQG398P2qaf26NG6dWa5s/r0OeSQ1q13PIC1pWXLVq9euzbipZc+/DA1pc9HH20+VWPp0sWK7bdfxG23nXXWoYdG9O9/2GEHHJD9/lq2rFt3b5iybPHilSvXrIm4++5XXvn444grrzz55E6dMuvTU/idf/5RRx144M4fb3f96L1z9c3ITp48u+eannFGt25Nm+764NXm5/lbsLc+f6tWpSpgbc/2Alq/tg8/nDJl0aKIq6465pgWLbJv16tXixZVqkT8+c9PPvlr9Gt3xY9Kly5aNEnlsb31+mdne8H5XaV06SJFdqby14oVa9bkpKIbAAAAQG4zBSEAALvUXXe9+OKHH2a/Pj2l3j33vPzyRx/t+v6kA1i/tpNO6tKlRYtM5aldZcWKb79dty7i3HPvuuuVVyLWr9+4cVsVIPLl23alrD3N7be/8MLw4RGrVq1Zs3791ut79dp//7p1d/44CxasWLGtijllyxYvXrhwRNGihQrl5If6mjUrVChRYvvtFi5cuTInU1OxY+bPX7FiW+NasWLJkkWKRFSosO2KOzvq1FM7d27UKPv133//448//RRx/vkPPvj++xEVK55++gMPROTNe8wxAwZE5Mlz9NF33hlRrVr//g89tLtH8dezYMHKlduqfFO2bLFihQqlnr+cBDVq1ixfflsV7dIWLszdCmh7i48++vLLRYsili//7rttBaAbNKhUqUSJiOOOO/DAnEzRurMWLFi5MieVuXJb3rz77LM3fS/uKgsW5KwyWm7Lm3fnKr/tLQE3AAAA4LdHBSwAAHap998fO3bq1IhJk2bPXrQookmTmjUrVsysf+ut1NR66YpZu8qBBzZsWL16RIMG1aqVK/frj0PJkkWLFioUcdRRBx3UqFHEiy9++OHEiVmN1z//+cc/Rtxxx/PPf/hhxODBY8dOn54JquXUfvsVKJA/f0S+fHnz7rtv9u0WLFi+PCdTc+0pVq9es2bDhoh//OP554cPj7jttn79Djkk948zbNiECbNnR3Tv3rJl7drZtzvjjNSUiPfc89prn36afbt+/Xr2bNVq+8f94IOJE+fM2frzH3748ceff97+9gUK5Mu3rev9e/X+++PHz5kT0aNHixY1amy9Pl3n5ZprTjrpoIMizj//gQfee2/nj1ulyranlBwzZvr0xYsj/vOft98ePz7dl63bHXZY69a5GXjZ0++nYcMmTZo/P6J792bNqlbNvt0ZZ3Tt2rBhxD33vPVWVu/TtH79unbdVhAu7YMPJk9esODXP9/dbcOGH3746aeIW2999dXx4yPuvPO009q2zb79gw/279+hQ8SMGYsXf/NNxIQJX3+9cmXOj5d+3s48s3PnevUiNm5MHf/pp0eMmDkz027o0MmTFy2K6N69adNKlbbez4oVa9Zs3BhRvfqFF77wQsTatRs3bjm147aDPJm1e3P1uB9++OmnnD3PefPuSLBs6NApU5YsiejevXHjChW2Xp8Z/0sueeONrMc/LevxzX7U9+brAQAAAPx++W/6AAD4VTRt2rfvbbdF5MnTseNFF2WWRx7517/+GpVd+vTp2XNbla/SAafKlY8//oYbIvLk6dz50ksj8uTp0mV7y7/8JSJ//h49rrgi4ttv163bVgWRvn233Y8OHZo2rVkz4p13/vGP/v0jZs58+ukrroi45Zb+/Q89NKJXrwMOqF8/olKl0qWLFYvInz8VsCpRokiRQoUiOnVq3rxWrYg337zlltNPj8ibd9sVrt57b9y46dN3/fjntnvuefXVTz6JWLhw25WNknr00Xfe+eyziLVrN2zY1lRGN998+uldu0acckrXrs2aRRQuXLBg/vyp61GwYMQFFxx11AEHZJbZmT8/FYQbOHDkyC+/3Hr98uWpymbb06dPt27Nm0cUK7bffkmm0Pqteuyx996bODFi9eptTxF23nmHHdayZcQTT1x88WGHRbRoUatWuXKZ56x06VSQsnXrOnXKl4+44Ybevdu3j7j33rPP7tZt6/0tXfrNN9u6bq1a1a5dvnzEsce2a1e3bio4mS9fphLXhRcecUTLlhEDBpx5ZufOuTcey5d/+21WFeS21KdP584NG6bup52ZEmxHPfrokCFTpqQCHduq4Hfzzf/3f23bRpxySseO9etHFC6cGr8SJQoXLlAg4oILDj20WbPUsmnT7Pczf/6KFWvWRAwc+OmnmweAfm/uvXfQoMmTI4YNmzx54cLs26Wn6Pv44xtvPOqoiJtvPumkNm0imjatVq1UqYhChfLn33ff1PXImzeiUaMqVUqUiLjwwp49GzWKmDTp9tuPOy7ikUf++McOHTLXa0uPPfbBB9OmRXz33fr1Wd0HpUsXKVKgQMQHH1xzzaGHRhx9dOvW1apFlC9fvHihQpkKjyVLFi6cP39E/foVKxYvHtG5c6NGFSpEXHHFkUc2bRrx1luXXdatW8TTT5933sEH7+6rsOOWL//uu5xMfdinT4cONWtGFCtWqFC+fNtv/9hjH300a1bEd99t2LDt8b/yyq5dI44+ulWrypVT41+wYNbjX7RoROfODRqUKxdxxRWHH96wYcRbb11ySceOEU8/ffbZ2wr+AQAAAOzpVMACAOA3LX/+VAWXk0/u2rVly+zbjRs3bdr8+RELFyarCPXDD6mpxAYPHjNm2rSI44/v1KlZs63b9ey5//7160eUL1+yZNGiEUuWrFq1rQBRzZoVK5YqFXHllb17d+mSWe6s2bMXL165MuKxx955Z+zY3B/3XS09teJNNz3zzLBhEfff/6c/HXVU7u1/yZJVq9asiTj//Pvue/PNiCee+Mtfjj1263bpKQiffvryy487bsePk65E1K/fv/71+usRGzZ8/31WFUTGjJk2beHCiB9/TFU6yS5Yd/nlJ5xw0EGZ5Zb+/OeHHho8OOKuu159ddSo3BuvPV06cNS//z33DBoU8fzzV1xx9NER++6b9VRXfft27dqkSWa5PS+//PHH06Zt/flLL3388dSpEe3bN2xYufLW6wsVyp8/b96Il1/+61+PPvrXG48xY2bMWLIkJ/fTMce0aZNZbunPf37ssY8+irjrrjff/Pzz3OvfkiWrV69bF3H++Q899OGHEU88ceGF3btv3S49BeHTT190UY8eO36cdOWgfv3+85+hQzOVoH6v0uNx7LEDBrz3XsQbb1x2Wc+eER06NGiQVQWk/fZLBayuvvqYY1q0yCxzy5Il33yzfn3Euec+9tjHH0c89dR553XqlKmgldamTa1aZcpEvPrqpZdmFYTMqbfe+vzz+fN/nbHOTWPGzJq1YkXqed60KfU8Z/Veu/zyww9v1Ciz3NKf//zMM599FnHXXe++O3Vqavw3bIg499wnnhg7NuKpp84+u127rMa/Zs1SpSJeffWii3YmwPbWWxMmbCv4BwAAALCnUwELAIDftCOOaNeuceOIUqWKFdtvv+zbvfHGxx9Pnrzzx3vzzdSUitlJBx169+7WLatA2Jo169dvq+LSzpo0afbsJUsievS47LJHH80EmfZWjzwyaNDYsREzZixcuCNTYOXUf//73nvjx0f07n3bbS+9lKpwlpNKI9uTDngdccR11/3vfxGDB48bt63KO0uXrl69dm3EAw+89da4cbtsOH/zXn45FYg66qibbnr55YhFi1auXLNm1x3v3/9+663PP494993PP89qasnt+emnn3/etCniqquefnrEiNzrV7oy1wMPvPvutqbu293++98PPvjyy4jevf/1r3ffjfj229x5P6YDXkccccstb74ZMXjwhAnz5u3us91zrF69du3330d07nzjjW++GXHddS++OG5cxDffrFu3K76f1qzJusJS2jPPpKYmPOGEu+8eNixV8WlblSZ/b5Yu/fbbDRsiHnhg6NCsgqA765lnPv54zpyIE064774RI3JecQuAX8emTXPm/OMf21rOnv2Pf+zuXgIAwO+DClgAAPym9e3bs+f++2+/3faCUzn19tujRn31VcTPP6emNNxnny1rRWT61bp1xL/+9dJLH32U+bxSpeOPv/HGiPbtmzSpWTO1rFEjolWrevUqV46oXbtSpdKlIypXLlOmePGIokVTU82lK/mkA1wLFixf/s03ERMmzJy5aFHEK6+MGDF5cmaZrnyzt0ufxzXXPPHE++9HPPvsVVedeGLuH+fZZ4cN++KLiHfeGTNmxoyIM87o2bNly4iePVu3rlMnolmzWrXKl48oWTI19WDq6kesWPHdd+vWRYwfP3Pm4sURb701evT06RFPPvn++xMmpKY43JEA3EUXPfDAO+9ETJkyd+6yZRGnndatW7NmEY0aVatWtmxm6sGs7zrS3n577NiZMyNq1z7rrAcfjDj55I4dGzaMOPzw/fevUyczNWC5csWL77dfJji5YEFqysvp0xcuXLUq4tVXR42aMSPipZdGjpw6devjpCsKHX74jTe+/HJmisM+fbp0adQoolGjqlVLl868JxYvTgWDPvpo8uT58yP++c9XXhkzJmLRolQA75ZbTj21Q4fcG4eLLnrkkQ8+iJgyZd68lSsjTjstNeVgo0ZVq5YqlZqqbE+4n559dsSIadMi3nln/Pivv44444zU+PXs2bJltWoRzZpVr16mTGqqswIFIlJPX+r527AhYvz42bOXLYt4663PPpszJ+LJJ1NT221visPfu3QA8MYbX375888j/vWvt9+eNCni5JMPOqh27YguXRo1qlgxonXrVAWqMmWKFi1YMKJ48dSUlRs3piqKpStZffXVwoXffBMxYsTUqYsXR7zyypgxc+dGfPnlggWrV2+/Py+/PHr0nDkR7747ceKCBRGnnNK+fa1aEYce2qJFlSoRLVpUr16qVETZsql+5MuXN+8++0SsXLlmzcaNmeDQwoWrVq1bFzF69MyZy5dHjBgxbdrSpREff5xa7q0uuuipp8aNi5gyZcGCb76JOO20Dh1q1Ypo1KhSpeLFM1MPJn2eX3557Nh58yLefXfSpEWLIk45pV27mjUjDj20WbOKFSNatKhWrUSJiLJlixVLT0GYJ09q/L//PmL58tR1WLhw1ar16yNGj549e+XK1PgvXx7x8cczZixfvrtHEWDvkQ5Y5bz97Nm33RaRJ0/Nmn/96+7uPQAA/DblWbNm3boNG9L/8yQAADurSJHu3S++eMe22fZPYVuvzelPZ1m3y37rHdtvzn/Ay1nLHf9JMKfjtnP73f7Wv41xS36fZd1+5++zX7bPreuQW/dF9p/uGeOW8/tiV43br/Ney73nM916zxy33Hpv53yr3fNe2/XPZ7Lzy/lWe/f3Xfaf7t73dqb1njlue+r3Xab1nvXe3v7We9vfE/a2cduz/z6a/drf1vddptWe9d7e/ta76vnM2f731O+77W+dm+/tTZvmzLn99h3rZ9ZHyT6Itauez1+231O/77ZutWe8t3O+1Y68f9asufbaOnVy1g8AALZPBSwAAAAAAIDt2LTp7rtzsyJpzh1zzDHH5OZ5qIgFAAC5bZ/d3QEAAAAAAIA91e4LXgEAAHsLASwAAAAAAIAtCF4BAAA5JYAFAAAAAAAAAACQkAAWAAAAAADA/6fyFQAAsKMEsAAAAAAAgN+9PTd49corr7ySe3vLk6dmzb/+dXefEwAA/LYIYAEAAAAAAL9be27waks7G8TK3SAXAACQIYAFAAAAAAD87mzadPfdBx+8u3uRxI4GqX7ZftOmAQMOPHB3nwMAAPy25N3dHQAAAAAAAPi17L3Bqy3tXEWrdBArT55LLhk1anefCwAA7N1UwAIAAAAAAAAAAEhIAAsAAAAAAPjN27Tpnnt+G5WvcpcpCQEAYOcJYAEAAAAAAL9Ze2rwKk+eK6+cPHl39yJj06YBAw44YHf3AgAA9k4CWAAAAAAAAL+SLYNXe1oQCwAA2HECWAAAAAAAALvY9oJWglgAALD3EsACAAAAAADYRQSrAADgt08ACwAAAAAAIJclDV4JbAEAwN5HAAsAgF/VoEF3333llREzZgwcePfdEbfffuGFp5yyu3vF78WgQf/4x4UXRsyY8cwzN94Ycfvt55xz7LFZt7vggl+2O+aY3d37nTnvW28955yIGTOefPKaayJuv/2PfzzqqN3dq73frbeecUavXhEzZjz22GWXRQwefMst/frt7l7tPW69tU+fbt0iZsx46KE//Sli8OAbbzzttN3dq1/PoEHXXHPiiREzZvznP+ecE3H77X36dOmyu3u19xs06MorjzkmYsaMe+45/fSI228/9dQOHXZ3rwD4vcmtAJUgFgAA7D3y7u4OAACwdzjyyIMPbt064l//uuSS00/fev1hh1188a23RkybNnfuokW7u7c776abzj77+OMj/u//evRo1y5i1qyFC5cujTjkkIsu+sc/dnfv+K16/PHLLz/11IiDD27atHbtzOc//7xp06ZNERs3fv/9jz9GLFv2zTdr1kRMmDBz5oIFEf/735AhY8dGjBkzdercubv7LAAAYM+wadM99xx88O7uxd5n06YBAw44ICJPnksuGT16d/cGAAD2DgJYAADkyHHHde3atu221x94YMSttz7xxKuv7u7eQtYOPfSKK+69N/XPefLs7t5s3+rVa9asXx/Rps25595xR0SJEkWKFCoU0aNH69YNGkRce+1pp/XqFXHEEW3bNmkScc89r7zywQcR99776qvDh29+3lde+cADWR9jbxgHAAAAAADYkwlgAQCwTRUqlC5dokTEQQc1b16/fubzzz+fOnX27IiWLevXr1kz4uijO3bcf/+I229/6qnXX4/46aeffvr55+TH3WefPHny5Ino2/fwwzt2jDjxxO7d27WLqF69QoUyZVLBlHXrIr74YsaMuXMjBgx49tm3346YOvXrrzevwDVo0L/+dfnlEXXrVq1aoULEe++NHv3FFxHffrt27YYNEQcd1LRp3boR33//448//hixbt2GDd9/H9GwYY0alSpl9lOrVqVK5cpFzJjx4ot33pn5/Ior/v3v55+PePnlDz4YMyaiY8cWLRo0iLjwwhNO6NEjok6dKlXKl4/46aeff/7554jJk2fPXrAg4vnn339/1KiIQYM+/XTixIhNm1IVjnJbZhwPPbR9+4gTT+zW7YADIqpXL1++dOlMwOeLL2bNmjcvYsCA558fPDhi6tS5c5cs2Xp/gwcPGHDJJanxKFs24p13Ro2aNCnim29S++neff/9GzaMyJ8/b968eSPefXf06MmTI559dsiQ0aMjLrvs5JN79oxo1apevWrVMtfx6affe2/UqIj//CcVIEp78smrrz7jjIiDDmrSJKuKUOnjjhs3bdrXX0fcccezz773XsTMmQsXLlu2df/TUxDWrVulSrlyEQMHDh8+fnzE5Zc/8MDAgbk//rktfb1efPHDDz//PKJQoQIF8uXLBLEuuujYYzt3jvjss+nT58+PGDly8uTZszNTENatW7ly2bIRAweOGDFhQsTllz/00BtvZPbfsWOzZrVrR1x44R/+cPDBEXXqpK7zTz9t2pS6f+fMWbw44vnnP/jg888jBg0aM+bLL1P37+b3W+/e3bq1bh1x4okdO7ZoEVGrVsWKpUtHfPvtunUbNkS89tonn0yalAqMDR8esX59qrJX2r777rNPnjwR/fr16nXggRHHHdehQ7NmEdWqlStXokTqef3pp4gJE2bNWrgw4t57X3995MhUBbB58za/3jff3K9f6rzLlIl4773PPps+PdOPgw5q1Kh69cz+unX7618ffjiiaNFChQoUiLjhhtNO69EjokePli3r1o1YvTr13hgxYvLkOXMiihbdb78CBX79++DJJy+99IQTIg46qGHDatUyn2eei1Q/x42bMWPhwog77njppREjImbOXLx45cqt9zdo0A039OkTUbdupUqlS0cMHvz55zNmpCqtrVsX0blz06Y1akSUKFG4cMGCmf1eddWTTw4ZErF48erVa9Zk9pcZv1NO6dIlokeP5s1r1dp8/L78ct68VLv8+Xd+PI477qCDGjaM+Mc/+vbt1i1i48Yffvjpp4gWLf7854ceivjhh9T1ve++P/6xV6+IXr1atapTJ+LFFz/++MsvI6688sknhw6NKFYsdT3Hjr3zzn79MvfzBRc8+OC770a888748TNnbv5e7dKlWbOIE0/s0KFhw4jq1cuWLV48dZ4bN0Z88cXXXy9dGjFgwOuvjx4dMXXqggUrVmR/HunxuPXWU0/t3DmiffsGDapUiShZskiRggUjhgyZOHHOnIhrr3322eHDI779dv3677/f8fEaNOhvfzvhhIi6dStWLFky4r33JkyYMyfT7/btGzasXDmiZMnU9R4y5Isvvv464tprn3tu5Mitj/vpp7feesopEWXKFC1aqFDE448PGzZ5csTf/z5w4KefZtrdffcZZ3TpEnH44a1a1aoVMWnSvHnLl0f84Q+33/7665l2HTs2alSlSsSFF/bq1aJFRJ06FSqUKJF6D23aFDF58rx5K1ZEPP/8xx9PmxYxaND48bNnZ95DWypSpGDB/PkjbrjhxBPbto3o3Dm1/xIlChcuUCBi3LhZs5Yujbjqquee+/jj1P28bt3O35cA/D7tqikD0/vdtOnWWxs33t1nCQAAZGWf3d0BAAD2bMce26XLgQdmfnBevfq779aujbj00rvvfuqpTHCoTJkSJYoWjejcuVWr3PgfhG+66eyzTzwx4uqrzzjjmGMili5dterbbyM6dPjjH6+/PuLyy++993//i+jcuXXrRo0iBg78xz8uuSSiSZPatatWzX6/PXoccEDTphGffZYKkHXvfuGFt9wS0a3bBRfcckvEkUf+5S933hnx7LPvvffJJ5nt0lMQ1qlzwgmXXppZpoNXpUsXL16kSMT9919++emnRzRqVLNm5coRxx9/1VX33BPRqdN5591yS8R997300vvvRxx++EEHNW8eUaNGKlC2q9x001lnHXtsxNVX9+175JGpcfzuu4gOHc4779ZbIy6//D//eeGFiM6dW7Zs0CBi4MC///2CCyKaNKlVq3Ll7e+/R482bRo1injjjY8/njAh4vTTb7nl8cdTwZSCBSOOP75z59atI55++m9/698/4h//+N//3nkn4o9//Oc/n346oly5kiWLFYu45JITT+zRI6Jdu8aNa9XK7L9Pn7///fHHI+rU6d37b3/LLFu3Puusv/894qWXPvxw3LiI7t1bt27YMOLBB//yl1NOicifP1++vL+D/9zk+eeHDfvss0zwJu3//q9r19atc76f0qWLFStcOOL++y+66IQTIho1ql69QoWI44+/4YbHHovo1OmSS+69N+K++157bcSIiMMPP/DARo0iatQoX75Uqcx+brihb99evSKuv/6003r2jChTpnjxwoUj+va9/fb//S/i0EOvuuqhhyKmTp03b+nSiHbtGjWqUWPr/tx665lnHn54xOWXn3hily4RGzb88MMPP0R06vSXv9x/f8SFF/7736++GnHggQ0aVKsW8fTTl1/eu3cqUJXV/tJ69GjVqm7diM8+mzFjwYKI7t1Tgatu3a644qGHMu1uueX003v1ijjqqLZtGzWKmD594cLlyyOOPfamm558MuKDDyZOnDUrolev1q3r1fv1r3ufPnfe+eKLEXXq9O8/YEBm2br1n/70n/9EvPTSiBGTJ0d0796iRe3aEQ8+eOGFRx+dCkbuu+/299+jR4sWdepEfPLJV1/Nmxdxwgm33vr88xGrVqUCVB07NmlSo0bElVeecEJWU/rcckufPt26RRx11AEH1K8fMX36okUrV0Yce+wttzz/fMQHH3zxxezZmSDUzvr006lT58/P/LlAgXz59t03onHjqlXLls183qpV7doVK2b+vP/+deps/ufWrWvXrlAh832XfqpGjZo+fcGCTLubburdu1OniKuvPuGE9u0jli5NBdU6dLjyyqeeirj88v/+d8iQiM6dmzSpXj1i4MArrjjuuIgmTapV27w/W4978+Y1a0Z8/PFXX82fH3HMMf/4x8svZ4JbRxzRpk2dOhG33XbaaZ0759791KNH8+Y1akR8/PHUqQsWRBxzzO23v/pq6rgrV0YccUTr1rVrR9x226mnduyYkz0mCxSXLl20aMGCEfff379/t24RjRpVqVK6dMTxx9955xtvRHTqdN11L74Ycd9977wzYUIqyFWzZkSNGmXLFiu2rfNr2rRatYhPPpk2bfHiiBNOGDDgrbdS9/PGjREdO6YCZ1de+Yc/7L9/7o0rAAAAAL8vAlgAAGxTemrBtNdf/+ijceMi5s5dvHj58ohRoyZPnjEjs/7443/ZfkelK1ydeGL37ptPeXjffS+88M47EStXfvvtmjURI0ZMmDB1asSECdOnf/116gf3vHkjzjrr6KO7dMl+/xMmpCpmPf/8++9/+mmqUsrmlXeSSleESvcjX75U0KFWrcqVy5VLVfTZZ5+IMWO+/HLWrIjzz7/zziefjJg9e9GirCo17azq1StUKF064sQTu3bd/Afl++576aUhQ1LjuHZtxIgREydOn54al3nzNh/HI4/MyQ/t48ZNnfr11xGffjp58qxZEV9+OWfOokUR332XqjCUNnz4xInTpqUqbS1YEDFy5BdfzJiRqQyWltPgV3r/zz03ZMjYsZnPa9RInXfDhtWqVaiQ++O6p0nfv+lgXVr9+lWrliuX8/2kK1Rtff9WqlSmzOb379Spc+dGnH/+vfe+/HLE7NmpikrVq5cvX7JkxMknd+7cqlVmv//+dyqwNW5cqiJXujLTq69+/PGkSRFDh44fP316pn3NmhUqlCoVceyxHTo0bZr5/OGH33571KiIpUtTlZY++uiLL2bNivj44ylTvv46UzHr4ouPOSarQFDahAmzZi1aFPH88x9+OGHC1s9/1aply5YoEXHoofvvv3nFv8cfHzx47NhURai1ayPefXfcuNT9nKoItqf47rv16zdujHjuuY8+mjgx83mNGuXLlygR0bDhLwNJ2Rk/PjVO77wzbtz06amA0dq1EWPGTJu2eRCpUaNfBoqqVk1VgDr00Nat69bdfPzef//zzyOWLfv223XrIt5997PPZs7MVIjaWQsWrFjx3XcR8+evWPHtt5nP27RJBayqVUv1q1y5VCBwzZpUpcMaNVIV1UqXTlVuat26du3NKx9Om7Zw4YoVEatWrVmzYUOmwtWJJ7Zv36hRpt1997311pgxEStXpirUjRjx5Zfz50dMmDBnzpIlmUDYWWf16NGiRfbn8eWX8+evWBHxxhtjx86YEbFixXffrV8f8cgj77+/+fU85JAWLVLBo3Llihff+fH78stUwOuNN8aOnTlz8+MOGfLL46aCWjVqpMYhO1sGQnOqVq3U+aTHK1++vHn32SeiVq3U/Zt+zseMmTlz8eKI889/9NGhQyNmz166dPPrvqXx4+fMWbYsVcFszpyIpUu//Xb9+tR+Nq/02KhR5cqbB0oBAAAAYEf8Dv6bcAAAkth//0aNateOqF69YsXNf2AfOHDYsFGjtv5z27ZNmtStG9GlS5s2jRtHlCpVrFiRIpmgT041a1anTrVqEXnypCqQpD377M03/+lP298+HeDKzpw5uybwNHPmggXLlkWsX79x4w8/ZKaGu//+yy47/fRMu/nzly1btSpi0KBPPpkwIWLAgOeee+edzBRZuaVZs1QlsK3H8YYbzj47J+OYmqJwexYtWrFi9eqtP08HW4oWTf154cLly7/5JrM+M+XiL3+mT09dmNalS8uW9etHnHvuH/7QqVNE/frVqpUvH7HffgUK5M+/9fmlVapUpkyJEhETJsycuXllnN+qdMWetB2NP8ycmarwtH7999+n7t/8+VP3b6oiVtr8+anrOGjQ6NFffhkxYMDLL3/wQUSzZjVrVqqUuh6b73fSpB0LKDVtWqPG5hWJ0tJBry3NmbNkycqVEQcf3KRJzZqp7bcVvJszZ8mSVauyX1+vXmqqwi3Nnbt0aVb3eXp/2ztubuvSpVmzWrUizj338MMPPDCifv1Uvzd/LrLarlKl0qWLFUsFg7Z1XebO/eXzmrZlYG3L57VevdQUhlvvb9myrPY3Z86SJatXRzRtWr36jgQGszNqVKqCU5UqBx1UrFgqUFWxYiYYlfbMMx9+OGlSxNln9+zZqlUmqJVepn36aWp/ac2a1ahRrtzW4/vss5deeswx2+9f9erbDkzNmZPdfbZ0aVbjV69epUqlSkXMmZP1+ObUnDlLlmR9fbLeb716lSqVLLnzx93SzJmpfqSnJC1UKH/+vHkj7r//rLO6dcu0mz9/5co1ayIGDfr889mzIwYMePPNzz6L+OGHrKc+njs3FdDbUnqqyrT8+VOBLwAAAABIQgALAIAsHXts166bV6BKe/XVf/7zssuy3y5v3n333XffiKOP7tixTZuIxx9/880PP8z5cbML1Bx66MUX33ZbxPTp8+algwNZRwwye8rq059+yvoH2p2Vrsx15pm33PLwwxHnnnvMMV27RrRsWa9ejRqZKfmqVClbtmTJiLPOOuqozp0jVqz45ps1ayIeeeSNN3ZknHIyjll9fuihl176r39FTJ8+f/7mlT+yGq9tj296PH/+OSdRny0rXW3vKOlKVvfff+mlvXtn7qs77nj22cGDIx57bNCgkSMjKldOBa3ef3/AgD//ObN9ulLKb106KFW2bGoK0LTp01OBwJxaufK779atizjzzDvuePbZiHPPPfLI9u0jWrasU6dKldT9W6BARJUqZcoULx5x1lmHHda2bcSKFamA5dKlq1dnFXDIBO32DNnfh9uW3TnkyZOz5yS31KiRqjR2//3nn3/00annYp99Iu644+WXhw+PeOyx99777LOIypVTQav33//73884I7N9Tp+L7N6TSa9mdvdBdu+ppNKBqeOOO+ighg0zAax0Bavvv08FXf/736FDJ0yI+OMfDzmkVauIdu3q169SZesg2KhR06YtXLh5f7M+7qGH3njjc8+lplrcVsAv6Znn9jjl/Li5e3+nK+llZ+XK1HU688z77x88OOLcc3v0aNYsomXLmjXLlYsoWrRQofz5I6pUKVWqSJGIs87q1q1p01TFrg0bIh55ZOjQSZO23m92z/2e9n4CYO+WJ8+VV06e/OsdZ9OmW29t3Hh3nzUAALA5ASwAAH6hUKGCBfPnjzjssIMOatky8/kpp1xzzT33RIwaNWlSasrBX/4se8opvXp16BBxww1//OOJJ0Ycd1y3bm3b7ngAa+LE1BSBW2rVqkGDmjV/GcDalX7+OWfBoi2NGTNlyqxZmWU6UJauzPXYY1df3b9/RLVqqQpT9er9cqq866/v1++YYyJOPbVnz4MOiliyZOXKb76JaN/+nHP+/vcdGcesKz+1alW/fvXqWQWw9iyNG6cqKqWDV2kDBw4fnqp0kgpS1KpVseK2Kp7tKtdff/rphx8eceqpPXoccEDEkiWrVn37bUT79hdeOGDAr9eP3r27d2/TJquKPEOHjhu34/tLTzGYXqb3W716+fKlSkU89thf/vJ//xdRrVq5ciVLRtSrV6VK2bIR77//2WfTpm29v6ZNa9asWDFi4sTZsxct2v7xv/giNYXllmrUqFChZMmIyZO//nrz+7ZGjVS/Nt9+Z94P06enKoFtqXr11FR1W55H9eqpqdG25/rrTzmlW7eIU0/t2rVly9T9smZNRPv2f/nLAw/kvH+NG1erVq5cJniVNnDgxx9PmbL5c5EKav3apk9PTdmX/fjNmbP5lIPpz3PLp59Onbr5e69UqdTUgoce2rp1nTqZKQ+XLv3mm3XrUoGplSsjjj22XbsGDTJT36VjOaNHT5++eQWsiROznjKxVavatStU2JEAVtay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ASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAAAAAAAACAhASwAAAAAAAAAAAAEhLAAgAAAAAAAAAASEgACwAAAAAAAAAAICEBLAAAAAAAAAAAgIQEsAAAAAAAAAAAABISwAIAAAAAAAAAAEhIAAsAAAAAAAAAACAhASwAAAAAAAAAAICEBLAAAAAAAAAAAAASEsACAAAAAAAAAABISAALAAAAAAAAAAAgIQEsAAAA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AAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAAAAAAAFiIABYAAAAAAAAAAAAAAAAAWIgAFgAAAAAAAAAAAAAAAABYiAAWAAAAAAAAAAAA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AAAAAAAAAAAAAAAAYCECWAAAAAAAAAAAAAAAAABgIQJYAAAAAAAAAAAAAAAAAGAhAlgAAAAAAAAAAAAAAAAAYCECWAAAAAAAAAAAAAAAAABgIQJYAAAAAAAAAAAAAAAAAGAhAlgAAAAAAAAAAAAAAAAAYCECWAAAAAAAAAAAAAAAAABgIQJYAAAAAAAAAAAAAAAAAGAhAlgAAAAAAAAAAAAAAAAAYCECWAAAAAAAAAAAAAAAAABgIQJYAAAAAAAAAAAAAAAAAGAhAlgAAAAAAAAAAAAAAAAAYCECWAAAAAAAAAAAAAAAAABgIQJYAAAAAAAAAAAAAAAAAGAhAlgAAAAAAAAAAAAAAAAAYCECWAAAAAAAAAAAAAAAAABgIQJYAAAAAAAAAAAAAAAAAGAhAlgAAAAAAAAAAAAAAAAAYCECWAAAAAAAAAAAAAAAAABgIQJYAAAAAAAAAAAAAAAAAGAhAlgAAAAAAAAAAAAAAAAAYCECWAAAAAAAAAAAAAAAAABgIQJYAAAAAAAAAAAAAAAAAGAhAlgAAAAAAAAAAAAAAAAAYCECWAAAAAAAAAAAAAAAAABgIQJYAAAAAAAAAAAAAAAAAGAhAlgAAAAAAAAAAAAAAAAAYCECWAAAAAAAAAAAAAAAAABgIQJYAAAAAAAAAAAAAAAAAGAhAlgAAAAAAAAAAAAAAAAAYCECWAAAAAAAAAAAAAAAAABgIQJYAAAAAAAAAAAAAAAAAGAhAlgAAAAAAAAAAAAAAAAAYCECWAAAAAAAAAAAAAAAAABgIQJYAAAAAAAAAAAAAAAAAGAhAlgAAAAAAAAAAAAAAAAAYCECWAAAAAAAAAAAAAAAAABgIQJYAAAAAAAAAAAAAAAAAGAhAlgAAAAAAAAAAAAAAAAAYCECWAAAAAAAAAAAAAAAAABgIQJYAAAAAAAAAAAAAAAAAGAhAlgAAAAAAAAAAAAAAAAAYCECWAAAAAAAAAAAAAAAAABgIQJYAAAAAAAAAAAAAAAAAGAhAlgAAAAAAAAAAAAAAAAAYKH/AQPDh6O5nU9TAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgInJlcXVpcmUiOiB7CiAgICAgICAgIm1pbmlzaGxpbmsvd2ViLXB1c2giOiAiXjYuMCIKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/composer.lock</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIl9yZWFkbWUiOiBbCiAgICAgICAgIlRoaXMgZmlsZSBsb2NrcyB0aGUgZGVwZW5kZW5jaWVzIG9mIHlvdXIgcHJvamVjdCB0byBhIGtub3duIHN0YXRlIiwKICAgICAgICAiUmVhZCBtb3JlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnL2RvYy8wMS1iYXNpYy11c2FnZS5tZCNpbnN0YWxsaW5nLWRlcGVuZGVuY2llcyIsCiAgICAgICAgIlRoaXMgZmlsZSBpcyBAZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkiCiAgICBdLAogICAgImNvbnRlbnQtaGFzaCI6ICI5ZjQxZWI0ZDRiNTJiODMzYzUzOGYzNjdhMThhNDMwYSIsCiAgICAicGFja2FnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJicmljay9tYXRoIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMC45LjMiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGguZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiY2E1N2QxOGYwMjhmODRmNzc3YjIxNjhjZDE5MTFiMGRlZTIzNDNhZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2JyaWNrL21hdGgvemlwYmFsbC9jYTU3ZDE4ZjAyOGY4NGY3NzdiMjE2OGNkMTkxMWIwZGVlMjM0M2FlIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiY2E1N2QxOGYwMjhmODRmNzc3YjIxNjhjZDE5MTFiMGRlZTIzNDNhZSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWpzb24iOiAiKiIsCiAgICAgICAgICAgICAgICAicGhwIjogIl43LjEgfHwgXjguMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocC1jb3ZlcmFsbHMvcGhwLWNvdmVyYWxscyI6ICJeMi4yIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjcuNS4xNSB8fCBeOC41IHx8IF45LjAiLAogICAgICAgICAgICAgICAgInZpbWVvL3BzYWxtIjogIjQuOS4yIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJCcmlja1xcTWF0aFxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQXJiaXRyYXJ5LXByZWNpc2lvbiBhcml0aG1ldGljIGxpYnJhcnkiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiQXJiaXRyYXJ5LXByZWNpc2lvbiIsCiAgICAgICAgICAgICAgICAiQmlnSW50ZWdlciIsCiAgICAgICAgICAgICAgICAiQmlnUmF0aW9uYWwiLAogICAgICAgICAgICAgICAgImFyaXRobWV0aWMiLAogICAgICAgICAgICAgICAgImJpZ2RlY2ltYWwiLAogICAgICAgICAgICAgICAgImJpZ251bSIsCiAgICAgICAgICAgICAgICAiYnJpY2siLAogICAgICAgICAgICAgICAgIm1hdGgiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC90cmVlLzAuOS4zIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9CZW5Nb3JlbCIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vdGlkZWxpZnQuY29tL2Z1bmRpbmcvZ2l0aHViL3BhY2thZ2lzdC9icmljay9tYXRoIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ0aWRlbGlmdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMS0wOC0xNVQyMDo1MDoxOCswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiZmdyb3NzZS9waHBhc24xIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuNS4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNDIwNjBlZDQ1MzQ0Nzg5ZmI5ZjIxZjlmMTg2NGZjNDdiOWUzNTA3YiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2Zncm9zc2UvUEhQQVNOMS96aXBiYWxsLzQyMDYwZWQ0NTM0NDc4OWZiOWYyMWY5ZjE4NjRmYzQ3YjllMzUwN2IiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0MjA2MGVkNDUzNDQ3ODlmYjlmMjFmOWYxODY0ZmM0N2I5ZTM1MDdiIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjcuMSB8fCBeOC4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwLWNvdmVyYWxscy9waHAtY292ZXJhbGxzIjogIn4yLjAiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNy4wIHx8IF44LjAgfHwgXjkuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWJjbWF0aCI6ICJCQ21hdGggaXMgdGhlIGZhbGxiYWNrIGV4dGVuc2lvbiBmb3IgYmlnIGludGVnZXIgY2FsY3VsYXRpb25zIiwKICAgICAgICAgICAgICAgICJleHQtY3VybCI6ICJGb3IgbG9hZGluZyBPSUQgaW5mb3JtYXRpb24gZnJvbSB0aGUgd2ViIGlmIHRoZXkgaGF2ZSBub3QgYmVlIGRlZmluZWQgc3RhdGljYWxseSIsCiAgICAgICAgICAgICAgICAiZXh0LWdtcCI6ICJHTVAgaXMgdGhlIHByZWZlcnJlZCBleHRlbnNpb24gZm9yIGJpZyBpbnRlZ2VyIGNhbGN1bGF0aW9ucyIsCiAgICAgICAgICAgICAgICAicGhwc2VjbGliL2JjbWF0aF9jb21wYXQiOiAiQkNtYXRoIHBvbHlmaWxsIGZvciBzZXJ2ZXJzIHdoZXJlIG5laXRoZXIgR01QIG5vciBCQ21hdGggaXMgYXZhaWxhYmxlIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIyLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiRkdcXCI6ICJsaWIvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRnJpZWRyaWNoIEdyb8OfZSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ZHcm9zc2UiLAogICAgICAgICAgICAgICAgICAgICJyb2xlIjogIkF1dGhvciIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQWxsIGNvbnRyaWJ1dG9ycyIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GR3Jvc3NlL1BIUEFTTjEvY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBQSFAgRnJhbWV3b3JrIHRoYXQgYWxsb3dzIHlvdSB0byBlbmNvZGUgYW5kIGRlY29kZSBhcmJpdHJhcnkgQVNOLjEgc3RydWN0dXJlcyB1c2luZyB0aGUgSVRVLVQgWC42OTAgRW5jb2RpbmcgUnVsZXMuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GR3Jvc3NlL1BIUEFTTjEiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiREVSIiwKICAgICAgICAgICAgICAgICJhc24uMSIsCiAgICAgICAgICAgICAgICAiYXNuMSIsCiAgICAgICAgICAgICAgICAiYmVyIiwKICAgICAgICAgICAgICAgICJiaW5hcnkiLAogICAgICAgICAgICAgICAgImRlY29kaW5nIiwKICAgICAgICAgICAgICAgICJlbmNvZGluZyIsCiAgICAgICAgICAgICAgICAieC41MDkiLAogICAgICAgICAgICAgICAgInguNjkwIiwKICAgICAgICAgICAgICAgICJ4NTA5IiwKICAgICAgICAgICAgICAgICJ4NjkwIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xL3RyZWUvdjIuNS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiYWJhbmRvbmVkIjogdHJ1ZSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMi0xMi0xOVQxMTowODoyNiswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9ndXp6bGUiLAogICAgICAgICAgICAidmVyc2lvbiI6ICI3LjEyLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZWFhODE1OTgwMzFjZjU3YTllMzYyNThjODU0NmRlZmZmYzk5NGNiYSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2d1enpsZS9ndXp6bGUvemlwYmFsbC9lYWE4MTU5ODAzMWNmNTdhOWUzNjI1OGM4NTQ2ZGVmZmZjOTk0Y2JhIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZWFhODE1OTgwMzFjZjU3YTllMzYyNThjODU0NmRlZmZmYzk5NGNiYSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWpzb24iOiAiKiIsCiAgICAgICAgICAgICAgICAiZ3V6emxlaHR0cC9wcm9taXNlcyI6ICJeMi41IiwKICAgICAgICAgICAgICAgICJndXp6bGVodHRwL3BzcjciOiAiXjIuMTIiLAogICAgICAgICAgICAgICAgInBocCI6ICJeNy4yLjUgfHwgXjguMCIsCiAgICAgICAgICAgICAgICAicHNyL2h0dHAtY2xpZW50IjogIl4xLjAiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvZGVwcmVjYXRpb24tY29udHJhY3RzIjogIl4yLjUgfHwgXjMuMCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS9wb2x5ZmlsbC1waHA4MCI6ICJeMS4yNCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInByb3ZpZGUiOiB7CiAgICAgICAgICAgICAgICAicHNyL2h0dHAtY2xpZW50LWltcGxlbWVudGF0aW9uIjogIjEuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgImJhbWFybmkvY29tcG9zZXItYmluLXBsdWdpbiI6ICJeMS44LjIiLAogICAgICAgICAgICAgICAgImV4dC1jdXJsIjogIioiLAogICAgICAgICAgICAgICAgImd1enpsZS9jbGllbnQtaW50ZWdyYXRpb24tdGVzdHMiOiAiMy4wLjIiLAogICAgICAgICAgICAgICAgImd1enpsZWh0dHAvdGVzdC1zZXJ2ZXIiOiAiXjAuNSIsCiAgICAgICAgICAgICAgICAicGhwLWh0dHAvbWVzc2FnZS1mYWN0b3J5IjogIl4xLjEiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeOC41LjUyIHx8IF45LjYuMzQiLAogICAgICAgICAgICAgICAgInBzci9sb2ciOiAiXjEuMSB8fCBeMi4wIHx8IF4zLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgImV4dC1jdXJsIjogIlJlcXVpcmVkIGZvciBDVVJMIGhhbmRsZXIgc3VwcG9ydCIsCiAgICAgICAgICAgICAgICAiZXh0LWludGwiOiAiUmVxdWlyZWQgZm9yIEludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lIChJRE4pIHN1cHBvcnQiLAogICAgICAgICAgICAgICAgInBzci9sb2ciOiAiUmVxdWlyZWQgZm9yIHVzaW5nIHRoZSBMb2cgbWlkZGxld2FyZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJiYW1hcm5pLWJpbiI6IHsKICAgICAgICAgICAgICAgICAgICAiYmluLWxpbmtzIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAiZm9yd2FyZC1jb21tYW5kIjogZmFsc2UKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwIgogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiR3V6emxlSHR0cFxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHcmFoYW0gQ2FtcGJlbGwiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJoZWxsb0BnamNhbXBiZWxsLmNvLnVrIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL0dyYWhhbUNhbXBiZWxsIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJNaWNoYWVsIERvd2xpbmciLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJtdGRvd2xpbmdAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL210ZG93bGluZyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiSmVyZW15IExpbmRibG9tIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiamVyZW1lYW1pYUBnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vamVyZW1lYW1pYSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiR2VvcmdlIE1wb25vcyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImdtcG9ub3NAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2dtcG9ub3MiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlRvYmlhcyBOeWhvbG0iLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ0b2JpYXMubnlob2xtQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9OeWhvbG0iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk3DoXJrIFPDoWdpLUthesOhciIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm1hcmsuc2FnaWthemFyQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zYWdpa2F6YXJtYXJrIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJUb2JpYXMgU2NodWx0emUiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ3ZWJtYXN0ZXJAdHViby13b3JsZC5kZSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ub2Jpb24iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJHdXp6bGUgaXMgYSBQSFAgSFRUUCBjbGllbnQgbGlicmFyeSIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJjbGllbnQiLAogICAgICAgICAgICAgICAgImN1cmwiLAogICAgICAgICAgICAgICAgImZyYW1ld29yayIsCiAgICAgICAgICAgICAgICAiaHR0cCIsCiAgICAgICAgICAgICAgICAiaHR0cCBjbGllbnQiLAogICAgICAgICAgICAgICAgInBzci0xOCIsCiAgICAgICAgICAgICAgICAicHNyLTciLAogICAgICAgICAgICAgICAgInJlc3QiLAogICAgICAgICAgICAgICAgIndlYiBzZXJ2aWNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzIiwKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvdHJlZS83LjEyLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmdW5kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0dyYWhhbUNhbXBiZWxsIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXRodWIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL055aG9sbSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vdGlkZWxpZnQuY29tL2Z1bmRpbmcvZ2l0aHViL3BhY2thZ2lzdC9ndXp6bGVodHRwL2d1enpsZSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAidGlkZWxpZnQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjYtMDYtMTZUMjI6MTE6NDgrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogImd1enpsZWh0dHAvcHJvbWlzZXMiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIyLjUuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3Byb21pc2VzLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjQzNjBlOTgyZjg3ZjVmMjU4YmY4NzJkMDk0NjQ3NzkxZGIyZjRjOGUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9ndXp6bGUvcHJvbWlzZXMvemlwYmFsbC80MzYwZTk4MmY4N2Y1ZjI1OGJmODcyZDA5NDY0Nzc5MWRiMmY0YzhlIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNDM2MGU5ODJmODdmNWYyNThiZjg3MmQwOTQ2NDc3OTFkYjJmNGM4ZSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIl43LjIuNSB8fCBeOC4wIiwKICAgICAgICAgICAgICAgICJzeW1mb255L2RlcHJlY2F0aW9uLWNvbnRyYWN0cyI6ICJeMi41IHx8IF4zLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJiYW1hcm5pL2NvbXBvc2VyLWJpbi1wbHVnaW4iOiAiXjEuOC4yIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjguNS41MiB8fCBeOS42LjM0IgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJhbWFybmktYmluIjogewogICAgICAgICAgICAgICAgICAgICJiaW4tbGlua3MiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICJmb3J3YXJkLWNvbW1hbmQiOiBmYWxzZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIkd1enpsZUh0dHBcXFByb21pc2VcXCI6ICJzcmMvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiR3JhaGFtIENhbXBiZWxsIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiaGVsbG9AZ2pjYW1wYmVsbC5jby51ayIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HcmFoYW1DYW1wYmVsbCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTWljaGFlbCBEb3dsaW5nIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAibXRkb3dsaW5nQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tdGRvd2xpbmciCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlRvYmlhcyBOeWhvbG0iLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ0b2JpYXMubnlob2xtQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9OeWhvbG0iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlRvYmlhcyBTY2h1bHR6ZSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIndlYm1hc3RlckB0dWJvLXdvcmxkLmRlIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1RvYmlvbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkd1enpsZSBwcm9taXNlcyBsaWJyYXJ5IiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgInByb21pc2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3Byb21pc2VzL2lzc3VlcyIsCiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHJvbWlzZXMvdHJlZS8yLjUuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZ1bmRpbmciOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vR3JhaGFtQ2FtcGJlbGwiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTnlob2xtIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXRodWIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly90aWRlbGlmdC5jb20vZnVuZGluZy9naXRodWIvcGFja2FnaXN0L2d1enpsZWh0dHAvcHJvbWlzZXMiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInRpZGVsaWZ0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDI2LTA2LTAyVDEyOjIzOjQzKzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJndXp6bGVodHRwL3BzcjciLAogICAgICAgICAgICAidmVyc2lvbiI6ICIyLjEyLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3LmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjliMzgwMTJlN2I1NGY1OTQ3MDdlNmRiNTJjNjg0ZGMwYTc0YjNhNDMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9ndXp6bGUvcHNyNy96aXBiYWxsLzliMzgwMTJlN2I1NGY1OTQ3MDdlNmRiNTJjNjg0ZGMwYTc0YjNhNDMiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5YjM4MDEyZTdiNTRmNTk0NzA3ZTZkYjUyYzY4NGRjMGE3NGIzYTQzIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjcuMi41IHx8IF44LjAiLAogICAgICAgICAgICAgICAgInBzci9odHRwLWZhY3RvcnkiOiAiXjEuMCIsCiAgICAgICAgICAgICAgICAicHNyL2h0dHAtbWVzc2FnZSI6ICJeMS4xIHx8IF4yLjAiLAogICAgICAgICAgICAgICAgInJhbG91cGhpZS9nZXRhbGxoZWFkZXJzIjogIl4zLjAiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvZGVwcmVjYXRpb24tY29udHJhY3RzIjogIl4yLjUgfHwgXjMuMCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS9wb2x5ZmlsbC1waHA4MCI6ICJeMS4yNCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInByb3ZpZGUiOiB7CiAgICAgICAgICAgICAgICAicHNyL2h0dHAtZmFjdG9yeS1pbXBsZW1lbnRhdGlvbiI6ICIxLjAiLAogICAgICAgICAgICAgICAgInBzci9odHRwLW1lc3NhZ2UtaW1wbGVtZW50YXRpb24iOiAiMS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAiYmFtYXJuaS9jb21wb3Nlci1iaW4tcGx1Z2luIjogIl4xLjguMiIsCiAgICAgICAgICAgICAgICAiaHR0cC1pbnRlcm9wL2h0dHAtZmFjdG9yeS10ZXN0cyI6ICIxLjEuMCIsCiAgICAgICAgICAgICAgICAianNodHRwL21pbWUtZGIiOiAiMS41NC4wLjEiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeOC41LjUyIHx8IF45LjYuMzQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgImxhbWluYXMvbGFtaW5hcy1odHRwaGFuZGxlcnJ1bm5lciI6ICJFbWl0IFBTUi03IHJlc3BvbnNlcyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJiYW1hcm5pLWJpbiI6IHsKICAgICAgICAgICAgICAgICAgICAiYmluLWxpbmtzIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAiZm9yd2FyZC1jb21tYW5kIjogZmFsc2UKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJHdXp6bGVIdHRwXFxQc3I3XFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkdyYWhhbSBDYW1wYmVsbCIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImhlbGxvQGdqY2FtcGJlbGwuY28udWsiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vR3JhaGFtQ2FtcGJlbGwiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm10ZG93bGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHZW9yZ2UgTXBvbm9zIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZ21wb25vc0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZ21wb25vcyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiVG9iaWFzIE55aG9sbSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInRvYmlhcy5ueWhvbG1AZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL055aG9sbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTcOhcmsgU8OhZ2ktS2F6w6FyIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAibWFyay5zYWdpa2F6YXJAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NhZ2lrYXphcm1hcmsiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlRvYmlhcyBTY2h1bHR6ZSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIndlYm1hc3RlckB0dWJvLXdvcmxkLmRlIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1RvYmlvbiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTcOhcmsgU8OhZ2ktS2F6w6FyIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAibWFyay5zYWdpa2F6YXJAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zYWdpa2F6YXJtYXJrLmh1IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUFNSLTcgbWVzc2FnZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGFsc28gcHJvdmlkZXMgY29tbW9uIHV0aWxpdHkgbWV0aG9kcyIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgICAgICJtZXNzYWdlIiwKICAgICAgICAgICAgICAgICJwc3ItNyIsCiAgICAgICAgICAgICAgICAicmVxdWVzdCIsCiAgICAgICAgICAgICAgICAicmVzcG9uc2UiLAogICAgICAgICAgICAgICAgInN0cmVhbSIsCiAgICAgICAgICAgICAgICAidXJpIiwKICAgICAgICAgICAgICAgICJ1cmwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3BzcjcvaXNzdWVzIiwKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3L3RyZWUvMi4xMi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HcmFoYW1DYW1wYmVsbCIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9OeWhvbG0iLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3RpZGVsaWZ0LmNvbS9mdW5kaW5nL2dpdGh1Yi9wYWNrYWdpc3QvZ3V6emxlaHR0cC9wc3I3IiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ0aWRlbGlmdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyNi0wNi0xNlQyMTo1MDoxMSswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAibWluaXNobGluay93ZWItcHVzaCIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInY2LjAuNyIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXB1c2gtbGlicy93ZWItcHVzaC1waHAuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMjNhNzhiODU4NWJkY2VjYWEzMjNmMWRkMWFjZGM1NDhlMjg4OTJmZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3dlYi1wdXNoLWxpYnMvd2ViLXB1c2gtcGhwL3ppcGJhbGwvMjNhNzhiODU4NWJkY2VjYWEzMjNmMWRkMWFjZGM1NDhlMjg4OTJmZSIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjIzYTc4Yjg1ODViZGNlY2FhMzIzZjFkZDFhY2RjNTQ4ZTI4ODkyZmUiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgImV4dC1jdXJsIjogIioiLAogICAgICAgICAgICAgICAgImV4dC1qc29uIjogIioiLAogICAgICAgICAgICAgICAgImV4dC1tYnN0cmluZyI6ICIqIiwKICAgICAgICAgICAgICAgICJleHQtb3BlbnNzbCI6ICIqIiwKICAgICAgICAgICAgICAgICJndXp6bGVodHRwL2d1enpsZSI6ICJeNy4wLjF8XjYuMiIsCiAgICAgICAgICAgICAgICAicGhwIjogIj49Ny4yIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LWtleS1tZ210IjogIl4yLjAiLAogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlIjogIl4yLjAiLAogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1lY2RzYSI6ICJeMi4wIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LXV0aWwtZWNjIjogIl4yLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJmcmllbmRzb2ZwaHAvcGhwLWNzLWZpeGVyIjogIl4yLjE0IiwKICAgICAgICAgICAgICAgICJwaHBzdGFuL3BocHN0YW4iOiAiXjAuMTF8XjAuMTIiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeOC4wfF45LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIk1pbmlzaGxpbmtcXFdlYlB1c2hcXCI6ICJzcmMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJMb3VpcyBMYWdyYW5nZSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImxhZ3JhbmdlLmxvdWlzQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NaW5pc2hsaW5rIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiV2ViIFB1c2ggbGlicmFyeSBmb3IgUEhQIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocCIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJQdXNoIEFQSSIsCiAgICAgICAgICAgICAgICAiV2ViUHVzaCIsCiAgICAgICAgICAgICAgICAibm90aWZpY2F0aW9ucyIsCiAgICAgICAgICAgICAgICAicHVzaCIsCiAgICAgICAgICAgICAgICAid2ViIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wdXNoLWxpYnMvd2ViLXB1c2gtcGhwL2lzc3VlcyIsCiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocC90cmVlL3Y2LjAuNyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMS0xMS0yMlQxNzozNjowMSswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicHNyL2h0dHAtY2xpZW50IiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1jbGllbnQuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYmI1OTA2ZWRjMWMzMjRjOWEwNWFhMDg3M2Q0MDExNzk0MWU1ZmE5MCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3BocC1maWcvaHR0cC1jbGllbnQvemlwYmFsbC9iYjU5MDZlZGMxYzMyNGM5YTA1YWEwODczZDQwMTE3OTQxZTVmYTkwIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYmI1OTA2ZWRjMWMzMjRjOWEwNWFhMDg3M2Q0MDExNzk0MWU1ZmE5MCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIl43LjAgfHwgXjguMCIsCiAgICAgICAgICAgICAgICAicHNyL2h0dHAtbWVzc2FnZSI6ICJeMS4wIHx8IF4yLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMC54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJQc3JcXEh0dHBcXENsaWVudFxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJQSFAtRklHIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tbW9uIGludGVyZmFjZSBmb3IgSFRUUCBjbGllbnRzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtY2xpZW50IiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImh0dHAiLAogICAgICAgICAgICAgICAgImh0dHAtY2xpZW50IiwKICAgICAgICAgICAgICAgICJwc3IiLAogICAgICAgICAgICAgICAgInBzci0xOCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtY2xpZW50IgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGltZSI6ICIyMDIzLTA5LTIzVDE0OjE3OjUwKzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJwc3IvaHR0cC1mYWN0b3J5IiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1mYWN0b3J5LmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjJiNDc2NWZkZGZlM2I1MDhhYzYyZjgyOWU4NTJiMTUwMWQzZjZlOGEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9waHAtZmlnL2h0dHAtZmFjdG9yeS96aXBiYWxsLzJiNDc2NWZkZGZlM2I1MDhhYzYyZjgyOWU4NTJiMTUwMWQzZjZlOGEiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIyYjQ3NjVmZGRmZTNiNTA4YWM2MmY4MjllODUyYjE1MDFkM2Y2ZThhIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj03LjEiLAogICAgICAgICAgICAgICAgInBzci9odHRwLW1lc3NhZ2UiOiAiXjEuMCB8fCBeMi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiUHNyXFxIdHRwXFxNZXNzYWdlXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlBIUC1GSUciLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3d3dy5waHAtZmlnLm9yZy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQU1ItMTc6IENvbW1vbiBpbnRlcmZhY2VzIGZvciBQU1ItNyBIVFRQIG1lc3NhZ2UgZmFjdG9yaWVzIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImZhY3RvcnkiLAogICAgICAgICAgICAgICAgImh0dHAiLAogICAgICAgICAgICAgICAgIm1lc3NhZ2UiLAogICAgICAgICAgICAgICAgInBzciIsCiAgICAgICAgICAgICAgICAicHNyLTE3IiwKICAgICAgICAgICAgICAgICJwc3ItNyIsCiAgICAgICAgICAgICAgICAicmVxdWVzdCIsCiAgICAgICAgICAgICAgICAicmVzcG9uc2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLWZhY3RvcnkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjQtMDQtMTVUMTI6MDY6MTQrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInBzci9odHRwLW1lc3NhZ2UiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1tZXNzYWdlLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjQwMmQzNWJjYjkyYzcwYzAyNmQxYTZhOTg4M2YwNmIyZWFkMjNkNzEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9waHAtZmlnL2h0dHAtbWVzc2FnZS96aXBiYWxsLzQwMmQzNWJjYjkyYzcwYzAyNmQxYTZhOTg4M2YwNmIyZWFkMjNkNzEiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0MDJkMzViY2I5MmM3MGMwMjZkMWE2YTk4ODNmMDZiMmVhZDIzZDcxIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjcuMiB8fCBeOC4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIyLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiUHNyXFxIdHRwXFxNZXNzYWdlXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlBIUC1GSUciLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3d3dy5waHAtZmlnLm9yZy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21tb24gaW50ZXJmYWNlIGZvciBIVFRQIG1lc3NhZ2VzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtbWVzc2FnZSIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgICAgICJodHRwLW1lc3NhZ2UiLAogICAgICAgICAgICAgICAgInBzciIsCiAgICAgICAgICAgICAgICAicHNyLTciLAogICAgICAgICAgICAgICAgInJlcXVlc3QiLAogICAgICAgICAgICAgICAgInJlc3BvbnNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1tZXNzYWdlL3RyZWUvMi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGltZSI6ICIyMDIzLTA0LTA0VDA5OjU0OjUxKzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJyYWxvdXBoaWUvZ2V0YWxsaGVhZGVycyIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4zIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9yYWxvdXBoaWUvZ2V0YWxsaGVhZGVycy5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIxMjBiNjA1ZGZlYjk5NjgwOGMzMWI2NDc3MjkwYTcxNGQzNTZlODIyIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcmFsb3VwaGllL2dldGFsbGhlYWRlcnMvemlwYmFsbC8xMjBiNjA1ZGZlYjk5NjgwOGMzMWI2NDc3MjkwYTcxNGQzNTZlODIyIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMTIwYjYwNWRmZWI5OTY4MDhjMzFiNjQ3NzI5MGE3MTRkMzU2ZTgyMiIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49NS42IgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwLWNvdmVyYWxscy9waHAtY292ZXJhbGxzIjogIl4yLjEiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNSB8fCBeNi41IgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvZ2V0YWxsaGVhZGVycy5waHAiCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJSYWxwaCBLaGF0dGFyIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAicmFscGgua2hhdHRhckBnbWFpbC5jb20iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHBvbHlmaWxsIGZvciBnZXRhbGxoZWFkZXJzLiIsCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vcmFsb3VwaGllL2dldGFsbGhlYWRlcnMvaXNzdWVzIiwKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzL3RyZWUvZGV2ZWxvcCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxOS0wMy0wOFQwODo1NTozNyswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvYmFzZTY0dXJsIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuMC40IiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9iYXNlNjR1cmwuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNzc1MmNlOTMxZWMyODVkYTRlZDFmNGM1YWEyN2U0NWUwOTdiZTYxZCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL1Nwb21reS1MYWJzL2Jhc2U2NHVybC96aXBiYWxsLzc3NTJjZTkzMWVjMjg1ZGE0ZWQxZjRjNWFhMjdlNDVlMDk3YmU2MWQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI3NzUyY2U5MzFlYzI4NWRhNGVkMWY0YzVhYTI3ZTQ1ZTA5N2JlNjFkIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj03LjEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHBzdGFuL2V4dGVuc2lvbi1pbnN0YWxsZXIiOiAiXjEuMCIsCiAgICAgICAgICAgICAgICAicGhwc3Rhbi9waHBzdGFuIjogIl4wLjExfF4wLjEyIiwKICAgICAgICAgICAgICAgICJwaHBzdGFuL3BocHN0YW4tYmViZXJsZWktYXNzZXJ0IjogIl4wLjExfF4wLjEyIiwKICAgICAgICAgICAgICAgICJwaHBzdGFuL3BocHN0YW4tZGVwcmVjYXRpb24tcnVsZXMiOiAiXjAuMTF8XjAuMTIiLAogICAgICAgICAgICAgICAgInBocHN0YW4vcGhwc3Rhbi1waHB1bml0IjogIl4wLjExfF4wLjEyIiwKICAgICAgICAgICAgICAgICJwaHBzdGFuL3BocHN0YW4tc3RyaWN0LXJ1bGVzIjogIl4wLjExfF4wLjEyIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJCYXNlNjRVcmxcXCI6ICJzcmMvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9iYXNlNjR1cmwvY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQmFzZSA2NCBVUkwgU2FmZSBFbmNvZGluZy9EZWNvZGluZyBQSFAgTGlicmFyeSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImJhc2U2NCIsCiAgICAgICAgICAgICAgICAicmZjNDY0OCIsCiAgICAgICAgICAgICAgICAic2FmZSIsCiAgICAgICAgICAgICAgICAidXJsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2Jhc2U2NHVybC9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsL3RyZWUvdjIuMC40IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy5wYXRyZW9uLmNvbS9GbG9yZW50TW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInBhdHJlb24iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjAtMTEtMDNUMDk6MTA6MjUrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInN5bWZvbnkvZGVwcmVjYXRpb24tY29udHJhY3RzIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuNS40IiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L2RlcHJlY2F0aW9uLWNvbnRyYWN0cy5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI2MDUzODlmMmE3ZTU2MjVmMjczYjUzOTYwZGM0NmFlYWY5YzYyOTE4IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc3ltZm9ueS9kZXByZWNhdGlvbi1jb250cmFjdHMvemlwYmFsbC82MDUzODlmMmE3ZTU2MjVmMjczYjUzOTYwZGM0NmFlYWY5YzYyOTE4IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNjA1Mzg5ZjJhN2U1NjI1ZjI3M2I1Mzk2MGRjNDZhZWFmOWM2MjkxOCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49Ny4xIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgInRoYW5rcyI6IHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L2NvbnRyYWN0cyIsCiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAic3ltZm9ueS9jb250cmFjdHMiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1haW4iOiAiMi41LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbi5waHAiCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJOaWNvbGFzIEdyZWthcyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInBAdGNod29yay5jb20iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlN5bWZvbnkgQ29tbXVuaXR5IiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIGdlbmVyaWMgZnVuY3Rpb24gYW5kIGNvbnZlbnRpb24gdG8gdHJpZ2dlciBkZXByZWNhdGlvbiBub3RpY2VzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20iLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvZGVwcmVjYXRpb24tY29udHJhY3RzL3RyZWUvdjIuNS40IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc3ltZm9ueS5jb20vc3BvbnNvciIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mYWJwb3QiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3RpZGVsaWZ0LmNvbS9mdW5kaW5nL2dpdGh1Yi9wYWNrYWdpc3Qvc3ltZm9ueS9zeW1mb255IiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ0aWRlbGlmdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyNC0wOS0yNVQxNDoxMToxMyswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3ltZm9ueS9wb2x5ZmlsbC1waHA4MCIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInYxLjM3LjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvcG9seWZpbGwtcGhwODAuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZGZiNTU3MjZjM2E3NmVhM2I2NDU5ZmNmZGExZWMyZDgwYTY4MjQxMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3N5bWZvbnkvcG9seWZpbGwtcGhwODAvemlwYmFsbC9kZmI1NTcyNmMzYTc2ZWEzYjY0NTlmY2ZkYTFlYzJkODBhNjgyNDExIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZGZiNTU3MjZjM2E3NmVhM2I2NDU5ZmNmZGExZWMyZDgwYTY4MjQxMSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49Ny4yIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgInRoYW5rcyI6IHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L3BvbHlmaWxsIiwKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJzeW1mb255L3BvbHlmaWxsIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgImJvb3RzdHJhcC5waHAiCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJTeW1mb255XFxQb2x5ZmlsbFxcUGhwODBcXCI6ICIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImNsYXNzbWFwIjogWwogICAgICAgICAgICAgICAgICAgICJSZXNvdXJjZXMvc3R1YnMiCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJJb24gQmF6YW4iLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJpb24uYmF6YW5AZ21haWwuY29tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJOaWNvbGFzIEdyZWthcyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInBAdGNod29yay5jb20iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlN5bWZvbnkgQ29tbXVuaXR5IiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTeW1mb255IHBvbHlmaWxsIGJhY2twb3J0aW5nIHNvbWUgUEhQIDguMCsgZmVhdHVyZXMgdG8gbG93ZXIgUEhQIHZlcnNpb25zIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiY29tcGF0aWJpbGl0eSIsCiAgICAgICAgICAgICAgICAicG9seWZpbGwiLAogICAgICAgICAgICAgICAgInBvcnRhYmxlIiwKICAgICAgICAgICAgICAgICJzaGltIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvcG9seWZpbGwtcGhwODAvdHJlZS92MS4zNy4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc3ltZm9ueS5jb20vc3BvbnNvciIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mYWJwb3QiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbmljb2xhcy1ncmVrYXMiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3RpZGVsaWZ0LmNvbS9mdW5kaW5nL2dpdGh1Yi9wYWNrYWdpc3Qvc3ltZm9ueS9zeW1mb255IiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ0aWRlbGlmdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyNi0wNC0xMFQxNjoxOToyMiswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAid2ViLXRva2VuL2p3dC1jb3JlIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuMi4xMSIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1jb3JlLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjUzYmViNmY2YzFlZWM0ZmE5M2MxYzNlNWQ5ZTU3MDFlNzFmYTE2NzgiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy93ZWItdG9rZW4vand0LWNvcmUvemlwYmFsbC81M2JlYjZmNmMxZWVjNGZhOTNjMWMzZTVkOWU1NzAxZTcxZmExNjc4IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNTNiZWI2ZjZjMWVlYzRmYTkzYzFjM2U1ZDllNTcwMWU3MWZhMTY3OCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiYnJpY2svbWF0aCI6ICJeMC44LjE3fF4wLjkiLAogICAgICAgICAgICAgICAgImV4dC1qc29uIjogIioiLAogICAgICAgICAgICAgICAgImV4dC1tYnN0cmluZyI6ICIqIiwKICAgICAgICAgICAgICAgICJmZ3Jvc3NlL3BocGFzbjEiOiAiXjIuMCIsCiAgICAgICAgICAgICAgICAicGhwIjogIj49Ny4yIiwKICAgICAgICAgICAgICAgICJzcG9ta3ktbGFicy9iYXNlNjR1cmwiOiAiXjEuMHxeMi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiY29uZmxpY3QiOiB7CiAgICAgICAgICAgICAgICAic3BvbWt5LWxhYnMvam9zZSI6ICIqIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJKb3NlXFxDb21wb25lbnRcXENvcmVcXCI6ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQWxsIGNvbnRyaWJ1dG9ycyIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWZyYW1ld29yay9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb3JlIGNvbXBvbmVudCBvZiB0aGUgSldUIEZyYW1ld29yay4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbiIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJKT1NFIiwKICAgICAgICAgICAgICAgICJKV0UiLAogICAgICAgICAgICAgICAgIkpXSyIsCiAgICAgICAgICAgICAgICAiSldLU2V0IiwKICAgICAgICAgICAgICAgICJKV1MiLAogICAgICAgICAgICAgICAgIkpvdCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNSIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNiIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNyIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOSIsCiAgICAgICAgICAgICAgICAiUkZDNzUyMCIsCiAgICAgICAgICAgICAgICAiYnVuZGxlIiwKICAgICAgICAgICAgICAgICJqd2EiLAogICAgICAgICAgICAgICAgImp3dCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWNvcmUvdHJlZS92Mi4yLjExIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnBhdHJlb24uY29tL0Zsb3JlbnRNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAicGF0cmVvbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImFiYW5kb25lZCI6ICJ3ZWItdG9rZW4vand0LWxpYnJhcnkiLAogICAgICAgICAgICAidGltZSI6ICIyMDIxLTAzLTE3VDE0OjU1OjUyKzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJ3ZWItdG9rZW4vand0LWtleS1tZ210IiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuMi4xMSIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1rZXktbWdtdC5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIwYjExNjM3OTUxNTcwMGQyMzdiNGU1ZGU4Njg3OTA3OGNjYjA5ZDhhIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXRva2VuL2p3dC1rZXktbWdtdC96aXBiYWxsLzBiMTE2Mzc5NTE1NzAwZDIzN2I0ZTVkZTg2ODc5MDc4Y2NiMDlkOGEiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIwYjExNjM3OTUxNTcwMGQyMzdiNGU1ZGU4Njg3OTA3OGNjYjA5ZDhhIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJleHQtb3BlbnNzbCI6ICIqIiwKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1jbGllbnQiOiAiXjEuMCIsCiAgICAgICAgICAgICAgICAicHNyL2h0dHAtZmFjdG9yeSI6ICJeMS4wIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LWNvcmUiOiAiXjIuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAiZXh0LXNvZGl1bSI6ICJTb2RpdW0gaXMgcmVxdWlyZWQgZm9yIE9LUCBrZXkgY3JlYXRpb24sIEVkRFNBIHNpZ25hdHVyZSBhbGdvcml0aG0gYW5kIEVDREgtRVMga2V5IGVuY3J5cHRpb24gd2l0aCBPS1Aga2V5cyIsCiAgICAgICAgICAgICAgICAicGhwLWh0dHAvaHR0cGx1ZyI6ICJUbyBlbmFibGUgSktVL1g1VSBzdXBwb3J0LiIsCiAgICAgICAgICAgICAgICAicGhwLWh0dHAvbWVzc2FnZS1mYWN0b3J5IjogIlRvIGVuYWJsZSBKS1UvWDVVIHN1cHBvcnQuIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LXV0aWwtZWNjIjogIlRvIHVzZSBFQyBrZXkgYW5hbHl6ZXJzLiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiSm9zZVxcQ29tcG9uZW50XFxLZXlNYW5hZ2VtZW50XFwiOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1rZXktbWdtdC9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJLZXkgTWFuYWdlbWVudCBjb21wb25lbnQgb2YgdGhlIEpXVCBGcmFtZXdvcmsuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiSk9TRSIsCiAgICAgICAgICAgICAgICAiSldFIiwKICAgICAgICAgICAgICAgICJKV0siLAogICAgICAgICAgICAgICAgIkpXS1NldCIsCiAgICAgICAgICAgICAgICAiSldTIiwKICAgICAgICAgICAgICAgICJKb3QiLAogICAgICAgICAgICAgICAgIlJGQzc1MTUiLAogICAgICAgICAgICAgICAgIlJGQzc1MTYiLAogICAgICAgICAgICAgICAgIlJGQzc1MTciLAogICAgICAgICAgICAgICAgIlJGQzc1MTgiLAogICAgICAgICAgICAgICAgIlJGQzc1MTkiLAogICAgICAgICAgICAgICAgIlJGQzc1MjAiLAogICAgICAgICAgICAgICAgImJ1bmRsZSIsCiAgICAgICAgICAgICAgICAiandhIiwKICAgICAgICAgICAgICAgICJqd3QiLAogICAgICAgICAgICAgICAgInN5bWZvbnkiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1rZXktbWdtdC90cmVlL3YyLjIuMTEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmdW5kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vRmxvcmVudE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJwYXRyZW9uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiYWJhbmRvbmVkIjogIndlYi10b2tlbi9qd3QtbGlicmFyeSIsCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjEtMDMtMTdUMTQ6NTU6NTIrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuMi4xMSIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1zaWduYXR1cmUuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMDE1YjU5YWFmM2I2ZThmYjlmNWJkMTMzODg0NWI3NDY0YzdkODEwMyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3dlYi10b2tlbi9qd3Qtc2lnbmF0dXJlL3ppcGJhbGwvMDE1YjU5YWFmM2I2ZThmYjlmNWJkMTMzODg0NWI3NDY0YzdkODEwMyIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjAxNWI1OWFhZjNiNmU4ZmI5ZjViZDEzMzg4NDViNzQ2NGM3ZDgxMDMiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3QtY29yZSI6ICJeMi4xIgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZWNkc2EiOiAiRUNEU0EgQmFzZWQgU2lnbmF0dXJlIEFsZ29yaXRobXMiLAogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1lZGRzYSI6ICJFZERTQSBCYXNlZCBTaWduYXR1cmUgQWxnb3JpdGhtcyIsCiAgICAgICAgICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWV4cGVyaW1lbnRhbCI6ICJFeHBlcmltZW50YWwgU2lnbmF0dXJlIEFsZ29yaXRobXMiLAogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1obWFjIjogIkhNQUMgQmFzZWQgU2lnbmF0dXJlIEFsZ29yaXRobXMiLAogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1ub25lIjogIk5vbmUgU2lnbmF0dXJlIEFsZ29yaXRobSIsCiAgICAgICAgICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLXJzYSI6ICJSU0EgQmFzZWQgU2lnbmF0dXJlIEFsZ29yaXRobXMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIkpvc2VcXENvbXBvbmVudFxcU2lnbmF0dXJlXFwiOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1zaWduYXR1cmUvY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2lnbmF0dXJlIGNvbXBvbmVudCBvZiB0aGUgSldUIEZyYW1ld29yay4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbiIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJKT1NFIiwKICAgICAgICAgICAgICAgICJKV0UiLAogICAgICAgICAgICAgICAgIkpXSyIsCiAgICAgICAgICAgICAgICAiSldLU2V0IiwKICAgICAgICAgICAgICAgICJKV1MiLAogICAgICAgICAgICAgICAgIkpvdCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNSIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNiIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNyIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOSIsCiAgICAgICAgICAgICAgICAiUkZDNzUyMCIsCiAgICAgICAgICAgICAgICAiYnVuZGxlIiwKICAgICAgICAgICAgICAgICJqd2EiLAogICAgICAgICAgICAgICAgImp3dCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LXNpZ25hdHVyZS90cmVlL3YyLjIuMTEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmdW5kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vRmxvcmVudE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJwYXRyZW9uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiYWJhbmRvbmVkIjogIndlYi10b2tlbi9qd3QtbGlicmFyeSIsCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjEtMDMtMDFUMTk6NTU6MjgrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1lY2RzYSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInYyLjIuMTEiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1lY2RzYS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0NGNiYmI0Mzc0YzUxZjFjZjQ4YjgyYWU3NjFlZmJmMjRlMWE4NTkxIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVjZHNhL3ppcGJhbGwvNDRjYmJiNDM3NGM1MWYxY2Y0OGI4MmFlNzYxZWZiZjI0ZTFhODU5MSIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjQ0Y2JiYjQzNzRjNTFmMWNmNDhiODJhZTc2MWVmYmYyNGUxYTg1OTEiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgImV4dC1vcGVuc3NsIjogIioiLAogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlIjogIl4yLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIkpvc2VcXENvbXBvbmVudFxcU2lnbmF0dXJlXFxBbGdvcml0aG1cXCI6ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQWxsIGNvbnRyaWJ1dG9ycyIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWZyYW1ld29yay9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFQ0RTQSBCYXNlZCBTaWduYXR1cmUgQWxnb3JpdGhtcyB0aGUgSldUIEZyYW1ld29yay4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbiIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJKT1NFIiwKICAgICAgICAgICAgICAgICJKV0UiLAogICAgICAgICAgICAgICAgIkpXSyIsCiAgICAgICAgICAgICAgICAiSldLU2V0IiwKICAgICAgICAgICAgICAgICJKV1MiLAogICAgICAgICAgICAgICAgIkpvdCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNSIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNiIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNyIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOSIsCiAgICAgICAgICAgICAgICAiUkZDNzUyMCIsCiAgICAgICAgICAgICAgICAiYnVuZGxlIiwKICAgICAgICAgICAgICAgICJqd2EiLAogICAgICAgICAgICAgICAgImp3dCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZWNkc2EvdHJlZS92Mi4yLjExIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnBhdHJlb24uY29tL0Zsb3JlbnRNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAicGF0cmVvbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImFiYW5kb25lZCI6ICJ3ZWItdG9rZW4vand0LWxpYnJhcnkiLAogICAgICAgICAgICAidGltZSI6ICIyMDIxLTAxLTIxVDE5OjE4OjAzKzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJ3ZWItdG9rZW4vand0LXV0aWwtZWNjIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuMi4xMSIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC11dGlsLWVjYy5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5MTVmM2ZkZTg2ZjUyMzZjMjA1NjIwZDYxMTc3YjllZjQzODYzZGViIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXRva2VuL2p3dC11dGlsLWVjYy96aXBiYWxsLzkxNWYzZmRlODZmNTIzNmMyMDU2MjBkNjExNzdiOWVmNDM4NjNkZWIiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5MTVmM2ZkZTg2ZjUyMzZjMjA1NjIwZDYxMTc3YjllZjQzODYzZGViIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJicmljay9tYXRoIjogIl4wLjguMTd8XjAuOSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWJjbWF0aCI6ICJHTVAgb3IgQkNNYXRoIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBpbXByb3ZlIHRoZSBsaWJyYXJ5IHBlcmZvcm1hbmNlIiwKICAgICAgICAgICAgICAgICJleHQtZ21wIjogIkdNUCBvciBCQ01hdGggaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRvIGltcHJvdmUgdGhlIGxpYnJhcnkgcGVyZm9ybWFuY2UiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIkpvc2VcXENvbXBvbmVudFxcQ29yZVxcVXRpbFxcRWNjXFwiOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1mcmFtZXdvcmsvY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRUNDIFRvb2xzIGZvciB0aGUgSldUIEZyYW1ld29yay4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbiIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJKT1NFIiwKICAgICAgICAgICAgICAgICJKV0UiLAogICAgICAgICAgICAgICAgIkpXSyIsCiAgICAgICAgICAgICAgICAiSldLU2V0IiwKICAgICAgICAgICAgICAgICJKV1MiLAogICAgICAgICAgICAgICAgIkpvdCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNSIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNiIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNyIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOSIsCiAgICAgICAgICAgICAgICAiUkZDNzUyMCIsCiAgICAgICAgICAgICAgICAiYnVuZGxlIiwKICAgICAgICAgICAgICAgICJqd2EiLAogICAgICAgICAgICAgICAgImp3dCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LXV0aWwtZWNjL3RyZWUvdjIuMi4xMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZ1bmRpbmciOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy5wYXRyZW9uLmNvbS9GbG9yZW50TW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInBhdHJlb24iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhYmFuZG9uZWQiOiAid2ViLXRva2VuL2p3dC1saWJyYXJ5IiwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMS0wMy0yNFQxMzozNToxNyswMDowMCIKICAgICAgICB9CiAgICBdLAogICAgInBhY2thZ2VzLWRldiI6IFtdLAogICAgImFsaWFzZXMiOiBbXSwKICAgICJtaW5pbXVtLXN0YWJpbGl0eSI6ICJzdGFibGUiLAogICAgInN0YWJpbGl0eS1mbGFncyI6IHt9LAogICAgInByZWZlci1zdGFibGUiOiBmYWxzZSwKICAgICJwcmVmZXItbG93ZXN0IjogZmFsc2UsCiAgICAicGxhdGZvcm0iOiB7fSwKICAgICJwbGF0Zm9ybS1kZXYiOiB7fSwKICAgICJwbHVnaW4tYXBpLXZlcnNpb24iOiAiMi45LjAiCn0K]]></data>
	</file>
	<file>
	  <filename>/docs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/docs/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKVmVyc2lvbiAyLCBKdW5lIDE5OTEKClNlZSBtb2R1bGUgZG9jdW1lbnRhdGlvbiBmb3IgbGljZW5zZSB0ZXJtcy4K]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/banner.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/icon-192.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/icon-512.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAWNElEQVR4nO3dy5IcaXXA8S8J7Y23egW/Ae9gYJgBG3BgmBkYRdjc8cJP4IUv4QvGxFxAQ3AJw2ik4V38CrMFg/fphdSSOjurOysrM7/zfef320yrlFV91NVd519ZUs1QPvWg3DTM/HI4fdww+fX0mBsXL7n9tTOcuK1mZ5hcdtEMpZThwj9jqBnmjmt5hrnbXzvDs8v2nuGu299shrnrrp1h5rimZ5i7/ZZnmLvu2hlO3FazM7x02aUzDEP5xMw1AYDOCQAASEgAAEBCAgAAEhIAAJCQAACAhAQAACQkAAAgIQEAAAkJAABISAAAQEICAAASEgAAkJAAAICEBAAAJCQAACAhAQAACQkAAEhIAABAQgIAABISAACQkAAAgIQEAAAkJAAAICEBAAAJCQAASEgAAEBCAgAAEhIAAJDQvdoDsImx9gBASkPtAVhPALTDkgeiue1xSRwEJwBisuyB1s09jomCQARADBY+kMH0sU4QVCQA6rH0gexefhwUAwcTAMey9AHmiYGDCYBjWPwAy109ZgqBHQmA/Vj6AJdxVmBHAmB7Fj/A9pwV2JgA2I7FD7A/IbARAXA5ix/geELgQgJgPYsfoD4hsJIAOJ/FDxCPEDiT/xvgeSx/gNg8Ti/kDMAyvqEA2uFswAIC4HYWP0C7hMAtvARwmuUP0AeP5zMEwDzfLAB98bg+4SWA63yDAPTLSwIvcQbgBcsfIAeP90UAXPHNAJBL+sf97C8BpP8GAEgs9UsCmc8AWP4AlJJ0H2QNgJR3NgAnpdsLGQMg3Z0MwCKp9kO2AEh15wJwtjR7IlMApLlTAbhIin2RJQBS3JkAbKb7vZEhALq/EwHYRdf7o/cA6PrOA2B33e6RngOg2zsNgEN1uU96DYAu7ywAqulur/QYAN3dSQCE0NV+6S0AurpzAAinmz3TWwAAAAv0FADdVBkAoXWxb3oJgC7uDACa0fze6SEAmr8TAGhS0/unhwAAAM7UegA0XV8ANK/ZPdRyADT7RQegK03uo1YDoMkvNgDdam4vtRoAAMAFWgyA5ioLgBSa2k8tBgAAcKHWAqCpugIgnWb2VEsB0MwXFYDUmthXLQUAALCRVgKgiZoCgGfC761WAgAA2FALARC+ogBgRuj91UIAAAAbix4AoesJAO4Qdo9FDwAAYAeRAyBsNQHAGULus8gBAADsJGoAhKwlAFgp3F6LGgAAwI4EAAAkFDEAwp0mAYANhNpvEQMAANhZtAAIVUcAsLEwey5aAAAABxAAAJBQpAAIc1oEAHYUYt9FCgAA4CACAAASihIAIU6HAMBBqu+9KAEAABxIAABAQgIAABKKEADVXwcBgAqq7r8IAQAAHEwAAEBCAgAAEhIAAJBQ7QDwFwAByKzaHqwdAABABQIAABISAACQkAAAgIQEAAAkJAAAIKGaAeCfAAJApX3oDAAAJCQAACAhAQAACQkAAEhIAABAQgIAABISAACQkAAAgIQEAAAkJAAAICEBAAAJCQAASEgAAEBCAgAAEhIAAJCQAACAhAQAACQkAAAgIQEAAAkJAABISAAAQEICAAASuld7AIClxj/8953HDH/yxQMmgfYJACC08Q+/Pu/4//3V84/FAJwmAIBwxj+et/RP3s7LMfDJL21ym9ALfwcACGX842/2ud3f/3KX24VWOQMAhLDX4r/2OZ5FwPDJL+/+uSA6ZwCA6o5Y/tc+3+9/cejng4gEAFDV0cv/+ecVASQnAIBqxv/7oO7nFwEkJgCAKmov/ysigKwEAHC4KMv/yvi7n9ceAQ4nAAAgIQEAHCras/8rzgKQjQAADhN1+V8RAWQiAAAgIQEAAAl5K2DYyPjB39QeIbZXXqk9wSLj735ehj/9q9pjwO6cAYANWP5AawQAXMjyB1okAID9NXL6/4p/DUAGAgAuMH7wt7VHAFhFAMBKlj/QMgEAK4yPLH+gbQIAzmT5Az0QAACQkACAM3j2D/RCAMBC46Nv1h4BYDMCABaw/IHeCAC4g+W/gcePa09wFv8vADIQAACQkACAW3j2D/RKAMAJlv/GGnkZwOl/shAAMGN89K3aIwDsSgDAxPih5Q/0TwAAxwn+MoDT/2QiAOAlnv0fIGgEWP5kIwDgGcsfyEQAQLH8DxfsLIBn/2QkAEhv/PDbtUfIKUgEDJ/8cu0RoAoBANRTOQIsfzITAKTm2X8AtSLg8eMy/vS1Op8bAhAApGX5B3J0BLz0+UQAWQ3lUw9mL775y+H0ccPk19Njblw8lFLKePvtr53hxG3Nz3DH7UeYYXLZRTOUUoYL/4yhZpg7btkM4+PvzNw+Ibzyyn63fUtoDK8/ml4y8+G677dlP/9rv+fnbr/lGeauu3aGE7cVc4ZhesgOe/fap3MGgHQs/+D2Ohtwx+2OP3l1n88LQd2rPQDADS8v60vOCAT5lwYQkZcAws8wuSzM6fcIM8wdd/sMnv03bkkMXLj0X7wU4CWAOjPMXddLADdua4OXAARA+Bkml4VZvhFmmDvu9AyWP0s9jQABUGeGuesKgBu3tUEA+DsApGD5cw5/H4AMBADds/xZY/zJ52qPALsSAACQkACga+Pj79YegYY5C0DPBADdsvzZggigVwKALln+bGl8TwTQHwFAd8Ynlj/bEwH0RgAAQEICgK549s+exvdeqT0CbEYA0I3xyfdqj0ACIoBeCAC6YPlzJBFADwQAzbP8qUEE0DoBAAAJCQCa5tk/NY3vfbb2CLCaAKBZ45Pv1x4BRADNEgA0yfInkvHdz9YeAc4mAGjO+JHlv5Xh7/+n9gjdEAG0RgBAUlfLXwRATgKApnj2v43p0hcB23AWgJYIAJph+W/j1LIXAdsY3/1M7RFgEQEAidy15EUA5CEAIImly10EQA4CABI4d6mLAOifAIDOrV3mIgD6JgBowvjRD2qP0KRLl7gIWMdfBKQFAgA6tdXyFgHQJwEAHdp6aYsA6I8AgM7staxFAPRFAABAQgIAOrL3s3RnAaAfAgA6cdRyFgHQBwEAHTh6KYsAaJ8AgMbVWsYiANomAAjPmwCdVnsJ1/78kXkzIKITANCoKMs3yhzAeQQANCja0o02D3A3AQCNibpso84FzBMA0JDoSzb6fMALAgAa0cpybWVOyE4AQANaW6qtzQsZCQAASEgAAEBCAoDQvAkQLfNmQEQmACC4Vl9Pb3VuyEIAAEBCAgAAEhIAAJCQAACAhAQAACQkAAAgIQEAgbX+T+lanx96JgAIy5sA0QNvBkRUAgAAEhIAAJCQAACAhAQAACQkAAAgIQEAQfXyT+h6+XNAbwQAACQkAAAgIQFASN4EiJ6M73669ghwgwAAgIQEAAAkJAAAICEBAAAJCQAIqLd/O9/bnwd6IAAAICEBAAAJCQAASEgAEM740d/VHgE2N77jzYCIRQAAQEICAAASEgAQTK//ZK7XPxe0SgAAQEICAAASEgAAkJAAAICEBAAAJCQACGX8rTcBol/eDIhIBAAE0vs/lev9zwctEQAAkJAAAICEBAAAJHSv9gDAC+M//FntEYAknAEAgIQEAAAkJAAAICEBQBjeBIgMvBkQUQgAAEhIAABAQgIAABISAACQkAAAgIQEAAAkJAAAICEBAAAJCQBC8CZAZOLNgIhAAABAQgIAABISAACQ0L3aA0A2w+f/69kHw9zvTj5ccswtxw2TX9845MIZ7rr9M2cYf/almdsA9uAMAAAkJADgQM+f/TNr+Mova48AaQgAOIjlv4wIgGMIAABISABQXYY3AfLs/zzDV35Ve4Tdje/8ee0RSE4AwM6Gz/+o9ghNyhABUJMAAICEBADsyLP/yzgLAPsRALATy38bw1+LANiDdwKkuuHT/1hKyfGXAaGUUoav/7bMv3MiHGcon3owe/HNXy55O9AlbwX6/Ljx9ttfO8OJ25qf4Y7bjzDD5LJL35r1xlu/xpuhhxAYXvvR/m/De+3DPt4K+PQMpYzvf3HmuLY8XfzPfzX5zZ3v60WPQRFmmLvu2hlO3FbMGYbpITvs3WufTgCEn2FyWYIAuLr98aMfzHyO+IbXnp36FwAbzvD0g/H9v5w5Nr7hzd82snwjzDB33d2Xb4QZhukhO+zda5/OSwCENXzmn0oppdkQgOHNj64+qjoHzHEGIPwMk8sOevYdcYYWQmB47T/L+q/D5LjF98Utx+09w9nP+NbO8OKDFs4CvFj8zy9Z9Ixs5pZmPtzz2XeEGeauu/uz7wgzDNNDdti71z6dAAg/w+SySss30gzjR9+f+b36ni7/UtZ/HSbHLb4vbjlu7xnOfsBfO8P1y6JGwPDmk9L28o0ww9x1d1++EWYYpofssHevfTovAdCc4TP/XMpQyvgkZgiQz9PFD21xBiD8DJPLKj/7jjXD0w/GJ9+bOfZYL579l7L+6zA57syvw+xxe89w9jO+tTPcvG6EswDDG0+efXDt0rkjFz0jm73ejQ/3fPYdYYa56+7+7DvCDMP0kGU/e+vvawEQfobJZWGWb4QZrl9WKwSuL/9S1n8dJset/Dpc+829Zzj7AX/tDHPXHcr4/l/MXHd/wxuPn8/w8n9mfvHisgUPyLPXu/Hhyq9zMzPMXXf35RthhmF6yLKfvfX3tZcA6Mbw2X8ppQxlfPLd2qPQqReLH9rnDED4GSaXXfqMrOMzANMZxsf7h8Dw2g9vneHGZdcuuvDrfO3Dlc/IGj8DUEo55CzA8MaHt86wzTPfne/rZmaYu+7aGU7cVswZhukhy3721t/XAiD8DJPLLn1AThQAV/YKgafLf9kM6xffzg/IHQRAGUoZH+4TAcPrHy6e4cZl0+MWPCDPXu/Ghyu/zs3MMHfdtTOcuK2YMwzTQ5b97K2/r70EQPeGV/61lFLK+Pg7VeeI4uO3Xz/5e/ff+umBk8Q1vP6ozD+wQj+cAQg/w+SyS5+RJTwDMD1mixAYXv3h5c8KDzwD8PHbb8z8/u3uv/Xw8vt6ybPCDc4AlLLNWYCni3/9DPPHPLtswTOy2evdOcPc7bc8w9x1185w4rZizjBMD1n2s7f+vhYA4WeYXHbpA7IAeD7D+OG3Zz7H3YZXf7jZDDMXTj68/AF5zfK/cv/Bw9tnOPsBf+3XYe66N2dYGwHXF/9lM1zygLxuhrnbb3mGueuuneHEbcWcYZgesuxnb/197SUA0ho+92+llLI6BKL7+J31i//5bfz4q6WUUu4/eP/i24po+NoHzz6YexCFvjkDEH6GyWUXzVBmHuhanmHuuPUzjB9+a+ZzTo66eva/ywyT4y74Onz8zpsz17vM9QhY+Gdc8qxwwzMApQxlfPiFmdubXPNq8e80w+xtLXhGtm6GudtveYa5666d4cRtxZxhmB6y7HF2/X0tAMLPMLnsohnKzA94yzPMHXf5DKdCYHj1P3aeYXLcyq/DHsv/yosIWPhnXLIUdli+pyJg+Npv5m9LAASaYe66a2c4cVsxZximhyx7nF1/X3sJACaGz/17KUMp46O7zwjQhheLH7jiDED4GSaXXTRDmSn8lmeYO277GcZH33z27H/vGeZu/7yvw57P/q88PQuw8M+45FnhTs++x4dfKMNXfz0zw8xtOQMQaIa5666d4cRtxZxhmB6y7HF2/X0tAMLPMLnsohnKzA94yzPMHdfyDHO3v3yGI5b/lfsPfnZjlNVLoenlG2GGudtveYa5666d4cRtxZxhmB6y7HF2/X39iZlrAgCdEwAAkJAAgA4cefq/lFI+/vFXDv18wPYEAAAkJAAAICEBAAAJCQAASEgAAEBCAgAAEhIA0IH7X3/32M939U6AQLMEAAAkJAAAICEBAJ046mWAp/83QKB1AgA6sncEWP7QDwEAAAkJAOjMXmcBPPuHvggA6NDWEWD5Q3/u1R4A2Mf9r79XylDKx2+/sf42HjwspQybzQTE4QwAdO7+N95bd723Hm47CBCKMwCQwNMIePpM/uO3Xz993Fs/LZ7xQw4CAJK5/42fvPjFYNlDVl4CAICEBAAAJCQAACAhAQAACQkAAEhIAABAQgIAABISAACQkAAAgIQEAAAkJAAAICEBAAAJCQAASEgAAEBCAgAAEhIAAJCQAACAhAQAACQkAAAgIQEAAAkJAABISAAAQEICAAASEgAAkJAAAICEBAAAJCQAACAhAQAACQkAAEhIAABAQgIAABISAACQkAAAgIQEAAAkJAAAICEBAAAJCQAASEgAAEBCAgAAEhIAAJCQAACAhAQAACQkAAAgIQEAAAkJAABISAAAQEICAAASEgAAkJAAAICEBAAAJCQAACAhAQAACQkAAEhIAABAQgIAABISAACQkAAAgIQEAAAkJAAAICEBAAAJCQAASEgAAEBCAgAAEhIAAJCQAACAhAQAACRUMwCGip8bAKKosg+dAQCAhAQAACQkAAAgIQEAAAkJAABISAAAQEK1A8A/BQQgs2p7sHYAAAAVCAAASEgAAEBCAgAAEooQAP4iIAAZVd1/EQIAADiYAACAhAQAACQUJQD8PQAAMqm+96IEAABwIAEAAAlFCoDqp0MA4AAh9l2kAAAADiIAACChaAEQ4rQIAOwkzJ6LFgAAwAEiBkCYOgKADYXabxEDAADYmQAAgISiBkCo0yQAcKFwey1qAAAAO4ocAOFqCQBWCLnPIgcAALCT6AEQspoAYKGweyx6AAAAO2ghAMLWEwDcIvT+aiEAAICNtRIAoSsKACbC761WAgAA2FBLARC+pgCgNLKvWgqAUhr5ogKQVjN7qrUAAAA20GIANFNXAKTS1H5qMQAAgAu1GgBNVRYA3WtuL7UaAKU0+MUGoEtN7qOWA6CURr/oAHSj2T3UegAAACv0EADN1hcATWt6//QQAKU0ficA0Jzm904vAVBKB3cGAE3oYt/0FAAAwEK9BUAXVQZAWN3smd4CoJSO7hwAQulqv/QYAKV0dicBUF13e6XXACilwzsLgCq63Cc9B0Apnd5pABym2z3SewCU0vGdB8Cuut4fGQKglM7vRAA21/3eyBIApSS4MwHYRIp9kSkASklypwKwWpo9kS0ASkl05wJwllT7IWMAlJLsTgbgTun2QtYAKCXhnQ3ArJT74F7tASq7utPHqlMAUEPKxX8l8xmAl6X+JgBIKP3jvgB4If03A0ASHu+LlwCmvCQA0C+L/yXOAMzzTQLQF4/rEwLgNN8sAH3weD7DSwC385IAQLss/lsIgGWEAEA7LP4FvARwHt9UALF5nF7IGYDzORsAEI/FfyYBsJ4QAKjP4l9JAFxOCAAcz+K/kADYjhAA2J/FvxEBsD0hALA9i39jAmA/L3+zigGA81n6OxIAx3BWAGA5i/8AAuBYzgoAzLP0DyYA6hEDQHaWfkUCIIbpD4EgAHpk4QciAGKa+yERBUBLLPvgBEA7bvthEgdADZZ8wwRAH/wQAnAW/zdAAEhIAABAQgIAABISAACQkAAAgIQEAAAkJAAAICEBAAAJCQAASEgAAEBCAgAAEhIAAJCQAACAhAQAACQkAAAgIQEAAAkJAABISAAAQEICAAASEgAAkJAAAICEBAAAJCQAACAhAQAACQkAAEhIAABAQgIAABISAACQ0P8DzVKqjpjDKEcAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhIAAgAPcAAABBdQBFfBBLevZQUvpQUfxcXABJgwBNiQtQhgFQjgxTjBZSgR9WgRBVjBhXiQBPkABTlApWkQpZlgBWmQBZnQlamxBalBBdmiBXgiBdjRBgnxxjnABcpAtfoABfqQZgpgthpQBhrQtjqhBjpBBnqhBprwBltApqtABqvApuuxBssxBvuBJyvD14piJ2uFxYh1hbjWFaiFJhlFN9n0t7oQBuww12xwBxyAp4zRZ4wx58xRF5ygB10xd/0FiBoleEqEiDsUiLv1OMuGmXumyYuxiA0CKK2iqO20aLwUiPx0aV0keZ2Uyc2lKc1XSfwXamzn+pynGp03yt1Vqm42et5XS26Hm46KSRqoWqx5OuxJ22yoGu04611I+42Zu605O93py/2oi85Ye/653A27XK2rnK2JPC55vL76vM5a7S7brY76LO8LXW8MDP3MDR3v7U1P/Y2MPV5M3a48La7M3e6sLe883g7tbi69/m7cbh9c3i8tTm9Nvn8Nbp99zq9eDo7uvx9uzz+PD1+vX5/P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAAIf8LSW1hZ2VNYWdpY2sOZ2FtbWE9MC40NTQ1NDUALAAAAAAgACAAAAj/AAkJHEiwoMGDCAkN+kOnocOHdOxI1ENRj59BCd38yNCgowULFy5oGDGCRIkSKlSsYMFCRxM1B7UsCBDAgIEDBxJAgDCBAgUOHDyEMEEUBYoaO8wUbLMAAE2bOHXy9AlUKFETRmsgZTNwkA8ATmvezLmz58+gQ4serXGDCUZCfzCAfTpWqtmqabGuvVGkj0A5AuaKjVqWKocQebOyxVHnb+CwUMny7FnhRQwRVxXfYOxYcOQDG6BwGX1lAAEYmfdyJgTY89gIXgi+KVBARmqtmxuzfkwXp5O3A+G82XJ7se7WkG22ADQwj25CgpKoxb0aOV0DRAbuOWIkz0Ap0413+k5uAMtAMTx4WBn4JXzu8b1jC6SSfspANO6r8xabgMzANVVUccZAc5ygF3XH7WeTAnIIxAcYEI6xh0B7sHCgeLu5lsAQdwgiBAQdgMBBEIHwEYWBmunnGk4bAFEBBV+AAYIHSLiQVooJrojTAxBQ8IQUH6BV3HsZJkfYVEAdlphqORop2V1C5tdkb08aZpWU8A32ZE94DbkaHgzoaJeVS+LWg18KzSBmYWddeeENSwBXRmBUjtlmmTXgkEZBWQhQJ5tdTmdDGAeRQYMDCCCgQAQRSFBBBSGCIIIIJ1SaQgo5KLEnQoPcEcenoII6x6ikkroHcAmlqipBAQEAOw==]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/mas-nc-push.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KGZ1bmN0aW9uICgpIHsKICAndXNlIHN0cmljdCc7CgogIGZ1bmN0aW9uIHVybEJhc2U2NFRvVWludDhBcnJheShiYXNlNjRTdHJpbmcpIHsKICAgIHZhciBwYWRkaW5nID0gJz0nLnJlcGVhdCgoNCAtIChiYXNlNjRTdHJpbmcubGVuZ3RoICUgNCkpICUgNCk7CiAgICB2YXIgYmFzZTY0ID0gKGJhc2U2NFN0cmluZyArIHBhZGRpbmcpLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJyk7CiAgICB2YXIgcmF3RGF0YSA9IHdpbmRvdy5hdG9iKGJhc2U2NCk7CiAgICB2YXIgb3V0cHV0QXJyYXkgPSBuZXcgVWludDhBcnJheShyYXdEYXRhLmxlbmd0aCk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhd0RhdGEubGVuZ3RoOyArK2kpIHsKICAgICAgb3V0cHV0QXJyYXlbaV0gPSByYXdEYXRhLmNoYXJDb2RlQXQoaSk7CiAgICB9CiAgICByZXR1cm4gb3V0cHV0QXJyYXk7CiAgfQoKICBmdW5jdGlvbiByZWFkeShmbikgewogICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgIT09ICdsb2FkaW5nJykgewogICAgICBmbigpOwogICAgfSBlbHNlIHsKICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZuKTsKICAgIH0KICB9CgogIHJlYWR5KGZ1bmN0aW9uICgpIHsKICAgIHZhciBjZmcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFzLW5jLXB1c2gtY29uZmlnJyk7CiAgICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcy1uYy1zdWJzY3JpYmUtYnRuJyk7CiAgICBpZiAoIWNmZyB8fCAhYnRuKSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciBzdWJzY3JpYmVVcmwgPSBjZmcuZ2V0QXR0cmlidXRlKCdkYXRhLXN1YnNjcmliZS11cmwnKTsKICAgIHZhciB2YXBpZCA9IGNmZy5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmFwaWQtcHVibGljJyk7CiAgICB2YXIgc3dVcmwgPSBjZmcuZ2V0QXR0cmlidXRlKCdkYXRhLXN3LXVybCcpIHx8ICcvbWFzX25jX3N3LmpzJzsKICAgIGlmICghc3Vic2NyaWJlVXJsIHx8ICF2YXBpZCkgewogICAgICBidG4uZGlzYWJsZWQgPSB0cnVlOwogICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoISgnc2VydmljZVdvcmtlcicgaW4gbmF2aWdhdG9yKSB8fCAhKCdQdXNoTWFuYWdlcicgaW4gd2luZG93KSkgewogICAgICBidG4uZGlzYWJsZWQgPSB0cnVlOwogICAgICByZXR1cm47CiAgICB9CgogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcihzd1VybCkudGhlbihmdW5jdGlvbiAocmVnKSB7CiAgICAgICAgcmV0dXJuIHJlZy5wdXNoTWFuYWdlci5zdWJzY3JpYmUoewogICAgICAgICAgdXNlclZpc2libGVPbmx5OiB0cnVlLAogICAgICAgICAgYXBwbGljYXRpb25TZXJ2ZXJLZXk6IHVybEJhc2U2NFRvVWludDhBcnJheSh2YXBpZCkKICAgICAgICB9KTsKICAgICAgfSkudGhlbihmdW5jdGlvbiAoc3ViKSB7CiAgICAgICAgdmFyIGpzb24gPSB0eXBlb2Ygc3ViLnRvSlNPTiA9PT0gJ2Z1bmN0aW9uJyA/IHN1Yi50b0pTT04oKSA6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoc3ViKSk7CiAgICAgICAgcmV0dXJuIGZldGNoKHN1YnNjcmliZVVybCwgewogICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSwKICAgICAgICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nLAogICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoanNvbikKICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgIHJldHVybiByZXMuanNvbigpOwogICAgICAgIH0pOwogICAgICB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5vaykgewogICAgICAgICAgYnRuLnRleHRDb250ZW50ID0gJ1N1YnNjcmliZWQnOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBidG4udGV4dENvbnRlbnQgPSAnU3Vic2NyaWJlIGZhaWxlZCc7CiAgICAgICAgfQogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgYnRuLnRleHRDb250ZW50ID0gJ1N1YnNjcmliZSBmYWlsZWQnOwogICAgICB9KTsKICAgIH0pOwogIH0pOwp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/js/mas-nc-sw-register.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KGZ1bmN0aW9uICgpIHsKICAndXNlIHN0cmljdCc7CiAgaWYgKCEoJ3NlcnZpY2VXb3JrZXInIGluIG5hdmlnYXRvcikpIHsKICAgIHJldHVybjsKICB9CiAgdmFyIHBhdGggPSAnL21hc19uY19zdy5qcyc7CiAgdHJ5IHsKICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKHBhdGgpLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICB9IGNhdGNoIChlKSB7fQp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/js/mas-nc-sw-root.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogTUFTIE5vdGlmaWNhdGlvbiBDZW50ZXI6IG1pbmltYWwgcHVzaCBoYW5kbGVyIGZvciBwdWJsaXNoZWQgbWFzX25jX3N3LmpzICovCnNlbGYuYWRkRXZlbnRMaXN0ZW5lcigncHVzaCcsIGZ1bmN0aW9uIChldmVudCkgewogIHZhciBwYXlsb2FkID0geyB0aXRsZTogJ05vdGljZScsIGJvZHk6ICcnIH07CiAgaWYgKGV2ZW50LmRhdGEpIHsKICAgIHRyeSB7CiAgICAgIHZhciBwYXJzZWQgPSBldmVudC5kYXRhLmpzb24oKTsKICAgICAgaWYgKHBhcnNlZCAmJiBwYXJzZWQudGl0bGUpIHsKICAgICAgICBwYXlsb2FkLnRpdGxlID0gU3RyaW5nKHBhcnNlZC50aXRsZSk7CiAgICAgIH0KICAgICAgaWYgKHBhcnNlZCAmJiBwYXJzZWQuYm9keSkgewogICAgICAgIHBheWxvYWQuYm9keSA9IFN0cmluZyhwYXJzZWQuYm9keSk7CiAgICAgIH0KICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgcGF5bG9hZC5ib2R5ID0gZXZlbnQuZGF0YS50ZXh0KCk7CiAgICB9CiAgfQogIGV2ZW50LndhaXRVbnRpbChzZWxmLnJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKHBheWxvYWQudGl0bGUsIHsKICAgIGJvZHk6IHBheWxvYWQuYm9keSwKICAgIGljb246ICcvbW9kdWxlcy9NQVNfTm90aWZpY2F0aW9uQ2VudGVyL2ltYWdlcy9pY29uLTE5Mi5wbmcnCiAgfSkpOwp9KTsKCnNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbm90aWZpY2F0aW9uY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICBldmVudC5ub3RpZmljYXRpb24uY2xvc2UoKTsKICBldmVudC53YWl0VW50aWwoY2xpZW50cy5vcGVuV2luZG93KCcvJykpOwp9KTsK]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKcmVxdWlyZV9vbmNlIGRpcm5hbWUoX19GSUxFX18pIC4gJy8uLi9saWIvbWFzX2NvbW1vbl9sb2FkZXIucGhwJzsKbWFzX3JlcXVpcmVfbWFzX2xhbmdfZGVmYXVsdHMoKTsKLy8gTUFTIHNoYXJlZCBkb25hdGlvbnMgYWRtaW4gVUkKJGxhbmdbJ2RvbmF0aW9uc3RhYiddID0gJ0RvbmF0aW9ucyc7CiRsYW5nWyd0YWJfZG9uYXRpb25zJ10gPSAnRG9uYXRpb25zJzsKJGxhbmdbJ3Nob3dkb25hdGlvbnN0YWInXSA9ICdTaG93IERvbmF0aW9ucyB0YWInOwokbGFuZ1snZG9uYXRpb25zX3RhYl9oaWRkZW4nXSA9ICdEb25hdGlvbnMgdGFiIGhhcyBiZWVuIGhpZGRlbi4gWW91IGNhbiBzaG93IGl0IGFnYWluIGluIG1vZHVsZSBzZXR0aW5ncy4nOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnTUFTIE5vdGlmaWNhdGlvbiBDZW50ZXInOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdJbnRlcm5hbCBub3RpZmljYXRpb24gaHViIGZvciBDTVMgTWFkZSBTaW1wbGU6IGNvcmUgZXZlbnQgYWxlcnRzLCBlbWFpbCwgRGlzY29yZCB3ZWJob29rcywgV2ViIFB1c2ggKFZBUElEKSB3aXRoIGJ1aWx0LWluIG1hbmlmZXN0IGFuZCBzZXJ2aWNlIHdvcmtlciBoZWxwZXJzLCBoZWFsdGggY2hlY2tzLCBjcm9uIFVSTCwgYW5kIGludGVyb3BlcmFiaWxpdHkgaG9va3MuIENHU2ltcGxlUFdBIGlzIG9wdGlvbmFsLiBNSVQgbGljZW5zZS4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdNQVNfTm90aWZpY2F0aW9uQ2VudGVyIGluc3RhbGxlZC4gR3JhbnQgIk1hbmFnZSBNQVNfTm90aWZpY2F0aW9uQ2VudGVyIiB0byB0cnVzdGVkIGFkbWlucywgc2V0IGVtYWlsIHJlY2lwaWVudHMgb3IgRGlzY29yZCB3ZWJob29rLCBhbmQgcHVibGlzaCB0aGUgc2VydmljZSB3b3JrZXIgaWYgeW91IHVzZSBXZWIgUHVzaC4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ01BU19Ob3RpZmljYXRpb25DZW50ZXIgcmVtb3ZlZC4nOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ1JlbW92ZSBNQVNfTm90aWZpY2F0aW9uQ2VudGVyLCBkYXRhYmFzZSB0YWJsZXMsIHB1c2ggc3Vic2NyaXB0aW9ucywgYW5kIHBlcm1pc3Npb25zPyc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgZGVuaWVkJzsKJGxhbmdbJ3RhYl9zZXR0aW5ncyddID0gJ1NldHRpbmdzJzsKJGxhbmdbJ3RhYl9ub3RpZmljYXRpb25zJ10gPSAnTm90aWZpY2F0aW9ucyc7CiRsYW5nWyd0YWJfaGVscCddID0gJ0hlbHAnOwokbGFuZ1sndGFiX2Fib3V0J10gPSAnQWJvdXQnOwokbGFuZ1sndGFiX2NoYW5nZWxvZyddID0gJ0NoYW5nZWxvZyc7CiRsYW5nWydkb25hdGlvbnNfdGFiJ10gPSAnRG9uYXRpb25zJzsKJGxhbmdbJ3NhdmUnXSA9ICdTYXZlIHNldHRpbmdzJzsKJGxhbmdbJ3NhdmVkJ10gPSAnU2V0dGluZ3Mgc2F2ZWQuJzsKJGxhbmdbJ3B1Ymxpc2hlZF9zd19vayddID0gJ1NlcnZpY2Ugd29ya2VyIHN0dWIgcHVibGlzaGVkIHRvIHNpdGUgcm9vdCBhcyBtYXNfbmNfc3cuanMuJzsKJGxhbmdbJ2tleXNfcm90YXRlZCddID0gJ1ZBUElEIGtleXMgcm90YXRlZCBhbmQgcHVzaCBzdWJzY3JpcHRpb25zIGNsZWFyZWQuJzsKJGxhbmdbJ2hpZGVkb25hdGlvbnNzdWJtaXQnXSA9ICdIaWRlIERvbmF0aW9ucyB0YWInOwokbGFuZ1snc3BvbnNvcnMnXSA9ICdTcG9uc29yJzsKJGxhbmdbJ2RvbmF0aW9uc3RleHQnXSA9ICdJZiB0aGlzIG1vZHVsZSBoZWxwcyB5b3VyIHByb2plY3QsIHlvdSBjYW4gc3VwcG9ydCBjb250aW51ZWQgZGV2ZWxvcG1lbnQuJzsKJGxhbmdbJ2RvbmF0aW9uc19zcG9uc29yX2xvZ29fYWx0J10gPSAnTmV3cyBUYXJnZXRlZCBsb2dvJzsKJGxhbmdbJ2RvbmF0aW9uc19zcG9uc29yX2xpbmsnXSA9ICdWaXNpdCBOZXdzVGFyZ2V0ZWQnOwokbGFuZ1snZG9uYXRlX2J0biddID0gJ0RvbmF0ZSc7CiRsYW5nWydzZWN0aW9uX21vZHVsZV91aSddID0gJ01vZHVsZSBVSSc7CiRsYW5nWydhZG1pbl9zZWN0aW9uX2xhYmVsJ10gPSAnQWRtaW4gbWVudSBzZWN0aW9uJzsKJGxhbmdbJ2FkbWluX3NlY3Rpb25faGVscCddID0gJ0Nob29zZSB0aGUgdG9wLWxldmVsIGFkbWluIG1lbnUgd2hlcmUgdGhpcyBtb2R1bGUgYXBwZWFycyAoc2FtZSBpZGVhIGFzIEN1c3RvbSBHbG9iYWwgU2V0dGluZ3MpLiBVc2VycyB3aXRoIEVkaXRvci1vbmx5IGFjY2VzcyBjYW5ub3Qgb3BlbiB0aGUgU2l0ZSBBZG1pbiBhcmVhLCBzbyBhdm9pZCBwbGFjaW5nIHRoZSBtb2R1bGUgb25seSB1bmRlciBTaXRlIEFkbWluIGlmIHRob3NlIHVzZXJzIG11c3QgbWFuYWdlIGl0Lic7CiRsYW5nWydzaG93X2RvbmF0aW9uc190YWInXSA9ICdTaG93IERvbmF0aW9ucyB0YWInOwokbGFuZ1snc2hvd19kb25hdGlvbnNfdGFiX2hlbHAnXSA9ICdXaGVuIHR1cm5lZCBvZmYsIHRoZSBEb25hdGlvbnMgdGFiIGlzIGhpZGRlbiB1bnRpbCB5b3UgZW5hYmxlIGl0IGFnYWluIGhlcmUuJzsKJGxhbmdbJ3RoZW1lX2NvbG9yX2xhYmVsJ10gPSAnUFdBIHRoZW1lIGNvbG9yIChtYW5pZmVzdCBhbmQgbWV0YSknOwokbGFuZ1sndGhlbWVfY29sb3JfaGVscCddID0gJ1VzZSBhIENTUyBoZXggY29sb3IgbGlrZSAjMDA3OGQ0LiBVc2VkIGZvciB0aGVtZS1jb2xvciBhbmQgdGhlIG1hbmlmZXN0IGRpc3BsYXkgZmllbGQuJzsKJGxhbmdbJ3N0YW5kYWxvbmVfcHdhX2hlYWRpbmcnXSA9ICdQdWJsaWMgc2l0ZSBQV0EgKHN0YW5kYWxvbmUpJzsKJGxhbmdbJ21hc19uY19mcm9udGVuZF9wd2FfaGVscCddID0gJ09uIHB1YmxpYyBwYWdlcywgYXBwZW5kIHRoZSB3ZWIgYXBwIG1hbmlmZXN0LCB0aGVtZS1jb2xvciwgYW5kIHJlZ2lzdGVyIC9tYXNfbmNfc3cuanMgdmlhIHRoZSBtZXRhZGF0YSBob29rIChyZXF1aXJlcyB7bWV0YWRhdGF9IGluIHlvdXIgcGFnZSB0ZW1wbGF0ZSkuJzsKJGxhbmdbJ3N0YW5kYWxvbmVfcHdhX25vdGUnXSA9ICdUdXJuIHRoaXMgb24gb25seSB3aGVuIHlvdSB3YW50IGluc3RhbGxhYmlsaXR5IGFuZCB0aGUgc2VydmljZSB3b3JrZXIgb24gbm9ybWFsIHNpdGUgcGFnZXMuIEFkbWluIFdlYiBQdXNoIHN0aWxsIHVzZXMgdGhlIG1vZHVsZSBhZG1pbiBoZWFkZXIgd2l0aG91dCB0aGlzIG9wdGlvbi4nOwokbGFuZ1snbWFzX25jX2NoYWluX2NnX3NpbXBsZV9wd2FfaGVscCddID0gJ01lcmdlIHB1c2ggc2NyaXB0cyBpbnRvIENHU2ltcGxlUFdBIGNvbWJpbmVkIHNlcnZpY2Ugd29ya2VyIChyZXF1aXJlcyBDR1NpbXBsZVBXQSkuIExlYXZlIG9mZiB0byBzdGF5IGluZGVwZW5kZW50Lic7CiRsYW5nWydjaGFpbl9jZ19ub3RlJ10gPSAnQWZ0ZXIgY2hhbmdpbmcgdGhlIENHU2ltcGxlUFdBIG1lcmdlIG9wdGlvbiwgdXBncmFkZSBvciByZWluc3RhbGwgQ0dTaW1wbGVQV0EtZGVwZW5kZW50IG1vZHVsZXMgaWYgbmVlZGVkLCB0aGVuIHJlZ2VuZXJhdGUgdGhlIHNpdGUgd29ya2VyIGZyb20gQ0dTaW1wbGVQV0EgYWRtaW4uIE1BUyBkb2VzIG5vdCBzaGlwIGEgY29weSBvZiBDR1NpbXBsZVBXQSAoZGlmZmVyZW50IGxpY2Vuc2UgYW5kIHNjb3BlKS4nOwokbGFuZ1snYWRtaW5fb3duX21hbmlmZXN0X2hlbHAnXSA9ICdXaGVuIENHU2ltcGxlUFdBIG1lcmdlIGlzIGVuYWJsZWQsIGFsc28gb3V0cHV0IHRoaXMgbW9kdWxlIG1hbmlmZXN0IGFuZCB0aGVtZS1jb2xvciBpbiB0aGUgbW9kdWxlIGFkbWluIGhlYWRlciAoYXZvaWRzIHJlbHlpbmcgb24gQ0dTaW1wbGVQV0EgYWxvbmUgZm9yIHRob3NlIHRhZ3MpLic7CiRsYW5nWydoZWxwX3BhcmFtX2FjdGlvbiddID0gJ0Zyb250ZW5kIGFjdGlvbiAocmVzZXJ2ZWQpLic7CiRsYW5nWydoZWxwX2Jhbm5lcl90aXRsZSddID0gJ05lZWQgbW9yZSBoZWxwPyc7CiRsYW5nWydoZWxwX2Jhbm5lcl9ib2R5J10gPSAnTUFTIG1vZHVsZXMgYW5kIGRvY3VtZW50YXRpb246JzsKJGxhbmdbJ2hlbHBfdGFiX2dlbmVyYWwnXSA9ICdPdmVydmlldyc7CiRsYW5nWydoZWxwX3RhYl9jaGFubmVscyddID0gJ0NoYW5uZWxzJzsKJGxhbmdbJ2hlbHBfdGFiX2ludGVyb3AnXSA9ICdJbnRlcm9wJzsKJGxhbmdbJ2hlbHBfZ2VuZXJhbF9oZWFkaW5nJ10gPSAnV2hhdCB0aGlzIG1vZHVsZSBkb2VzJzsKJGxhbmdbJ2hlbHBfZ2VuZXJhbF9pbnRybyddID0gJ01BUyBOb3RpZmljYXRpb24gQ2VudGVyIHN0b3JlcyBvcGVyYXRvci1mYWNpbmcgYWxlcnRzIGluIHRoZSBkYXRhYmFzZSBhbmQgb3B0aW9uYWxseSBkZWxpdmVycyBjb3BpZXMgYnkgZW1haWwsIERpc2NvcmQgd2ViaG9vaywgb3IgV2ViIFB1c2guJzsKJGxhbmdbJ2hlbHBfZ2VuZXJhbF9saTEnXSA9ICdTdWJzY3JpYmUgdG8gc2VsZWN0ZWQgQ01TIGNvcmUgZXZlbnRzIChuZXcgdXNlcnMsIG1vZHVsZSBpbnN0YWxscywgb3B0aW9uYWwgbG9naW4gZmFpbHVyZXMpLic7CiRsYW5nWydoZWxwX2dlbmVyYWxfbGkyJ10gPSAnUnVuIHBlcmlvZGljIGNoZWNrcyBmcm9tIGNyb24gdXNpbmcgdGhlIHNpZ25lZCBjcm9uIFVSTC4nOwokbGFuZ1snaGVscF9nZW5lcmFsX2xpMyddID0gJ0ludGVncmF0ZSBjdXN0b20gbW9kdWxlcyB1c2luZyB0aGUgZG9jdW1lbnRlZCBob29rIG5hbWUuJzsKJGxhbmdbJ2hlbHBfY2hhbm5lbHNfYm9keSddID0gJ0VtYWlsIHVzZXMgQ01TIE1hZGUgU2ltcGxlIG1haWwgc2V0dGluZ3MgKGNtc19tYWlsZXIpLiBEaXNjb3JkIGV4cGVjdHMgYW4gSW5jb21pbmcgV2ViaG9vayBVUkwgdW5kZXIgZGlzY29yZC5jb20uIFdlYiBQdXNoIHJlcXVpcmVzIEhUVFBTLCBHTVAvQ29tcG9zZXIgZGVwZW5kZW5jaWVzLCBWQVBJRCBrZXlzLCBhbmQgbWFzX25jX3N3LmpzIGluIHRoZSBzaXRlIHJvb3QgKFB1Ymxpc2ggYnV0dG9uKS4gT3B0aW9uYWw6IG1lcmdlIHdpdGggQ0dTaW1wbGVQV0EgaWYgeW91IGVuYWJsZSB0aGF0IGludGVncmF0aW9uLic7CiRsYW5nWydoZWxwX2ludGVyb3BfYm9keSddID0gJ0NhbGwgQ01TTVMgSG9va01hbmFnZXI6OmRvX2hvb2soXCdNQVNfTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZnlcJywgYXJyYXkoJHBheWxvYWQpKSB3aGVyZSAkcGF5bG9hZCBpbmNsdWRlcyBzZXZlcml0eSwgY2F0ZWdvcnksIHRpdGxlLCBib2R5LCBvcHRpb25hbCBtZXRhLiBUaGlzIHN0b3JlcyB0aGUgYWxlcnQgYW5kIHJ1bnMgb3V0Ym91bmQgY2hhbm5lbHMgYWNjb3JkaW5nIHRvIFNldHRpbmdzLic7CiRsYW5nWydoZWxwX2ludGVyb3BfY2dfYm9keSddID0gJ01BU19Ob3RpZmljYXRpb25DZW50ZXIgZG9lcyBub3QgcmVxdWlyZSBDR1NpbXBsZVBXQS4gQnkgZGVmYXVsdCBpdCBvdXRwdXRzIGl0cyBvd24gbWFuaWZlc3QgbGluaywgdGhlbWUtY29sb3IsIGFuZCBhZG1pbiBzY3JpcHRzLCBhbmQgeW91IHB1Ymxpc2ggbWFzX25jX3N3LmpzIHRvIHRoZSBzaXRlIHJvb3QuIElmIHlvdSBlbmFibGUgdGhlIG9wdGlvbmFsIENHU2ltcGxlUFdBIG1lcmdlIGNoZWNrYm94IGFuZCBDR1NpbXBsZVBXQSBpcyBpbnN0YWxsZWQsIE1BUyByZWdpc3RlcnMgYSBTZXJ2aWNlV29ya2VyQWRkb24gYW5kIG1heSBjaGFpbiBDR1NpbXBsZVBXQSBhZG1pbiBoZWFkZXJzIChzYW1lIHBhdHRlcm4gYXMgQ0dXZWJQdXNoKS4gQ29weWluZyB0aGUgZnVsbCBDR1NpbXBsZVBXQSBwcm9kdWN0IGludG8gdGhpcyBtb2R1bGUgaXMgbm90IGluY2x1ZGVkIChsaWNlbnNlIGFuZCBtYWludGVuYW5jZSBkaWZmZXIpLiBXaGVuIENHV2ViUHVzaCBpcyBpbnN0YWxsZWQsIHlvdSBjYW4gZW5hYmxlIHRoZSBvcHRpb25hbCBicmlkZ2UgdGhhdCBjYWxscyBDR1dlYlB1c2ggYnJvYWRjYXN0X21lc3NhZ2UgKENHRXh0ZW5zaW9ucyBub3RpZmljYXRpb25fbWVzc2FnZSkuIEF2b2lkIGR1cGxpY2F0ZSBub3RpZmljYXRpb25zIGlmIG9uZSBkZXZpY2UgdXNlcyBib3RoIHN1YnNjcmlwdGlvbiBzdG9yZXMuJzsKJGxhbmdbJ3NlY3Rpb25fY2dfc3RhY2snXSA9ICdDR1NpbXBsZVBXQSAvIENHV2ViUHVzaCc7CiRsYW5nWydjZ19zdGFja19kZXRlY3RlZCddID0gJ0luc3RhbGxlZCBtb2R1bGVzIChydW50aW1lIGRldGVjdGlvbiknOwokbGFuZ1snY2dfc2ltcGxlcHdhX2xhYmVsJ10gPSAnQ0dTaW1wbGVQV0EnOwokbGFuZ1snY2dfd2VicHVzaF9sYWJlbCddID0gJ0NHV2ViUHVzaCc7CiRsYW5nWydjZ19kZXRlY3RlZF95ZXMnXSA9ICd5ZXMnOwokbGFuZ1snY2dfZGV0ZWN0ZWRfbm8nXSA9ICdubyc7CiRsYW5nWydjZ3dlYnB1c2hfYnJvYWRjYXN0X2hlbHAnXSA9ICdBbHNvIGJyb2FkY2FzdCBXZWIgUHVzaCB0aHJvdWdoIENHV2ViUHVzaCB0byBhbGwgZGV2aWNlcyBpbiBpdHMgc3Vic2NyaXB0aW9uIHN0b3JlIChvcHRpb25hbDsgcmVxdWlyZXMgQ0dXZWJQdXNoIGFuZCBDR0V4dGVuc2lvbnMgbm90aWZpY2F0aW9uX21lc3NhZ2UpLic7CiRsYW5nWydhZG1pbl9vd25fbWFuaWZlc3RfaGVscCddID0gJ1doZW4gQ0dTaW1wbGVQV0EgaXMgcHJlc2VudCwgc3RpbGwgb3V0cHV0IHRoaXMgbW9kdWxlIG1hbmlmZXN0IGxpbmsgYW5kIHRoZW1lLWNvbG9yIGluIGFkbWluIGhlYWRlcnMgKGRlZmF1bHQgb2ZmIHRvIGF2b2lkIGR1cGxpY2F0ZSBtYW5pZmVzdCBsaW5rcykuJzsKJGxhbmdbJ2NnX3N0YWNrX25vdGUnXSA9ICdJbnRlcm5hbCBNQVMgV2ViIFB1c2ggdXNlcyB0aGlzIG1vZHVsZSBWQVBJRCBrZXlzIGFuZCBtYXNfbmNfc3cuanMgKG9yIHRoZSBtZXJnZWQgQ0dTaW1wbGVQV0Egd29ya2VyIG9ubHkgaWYgeW91IGVuYWJsZSBtZXJnZSkuIENHV2ViUHVzaCB1c2VzIGl0cyBvd24ga2V5czsgYWxpZ24gZXhwZWN0YXRpb25zIGlmIHlvdSBlbmFibGUgdGhlIGJyaWRnZS4nOwokbGFuZ1snY2hhbmdlbG9nX25vdGUnXSA9ICdDaGFuZ2Vsb2cgaXMgcmVhZCBmcm9tIENIQU5HRUxPRy5tZCBpbiB0aGUgbW9kdWxlIGZvbGRlci4nOwokbGFuZ1snc2VjdGlvbl9jaGFubmVscyddID0gJ0NoYW5uZWxzJzsKJGxhbmdbJ2VuYWJsZV9lbWFpbCddID0gJ0VtYWlsJzsKJGxhbmdbJ2VuYWJsZV9lbWFpbF9oZWxwJ10gPSAnU2VuZCBhIGNvcHkgb2YgZWFjaCBub3RpZmljYXRpb24gdXNpbmcgdGhlIGdsb2JhbCBDTVMgbWFpbGVyLic7CiRsYW5nWydlbWFpbF9yZWNpcGllbnRzJ10gPSAnRW1haWwgcmVjaXBpZW50cyc7CiRsYW5nWydlbWFpbF9yZWNpcGllbnRzX2hlbHAnXSA9ICdDb21tYSBvciB3aGl0ZXNwYWNlIHNlcGFyYXRlZCBhZGRyZXNzZXMuJzsKJGxhbmdbJ2VuYWJsZV9kaXNjb3JkJ10gPSAnRGlzY29yZCB3ZWJob29rJzsKJGxhbmdbJ2VuYWJsZV9kaXNjb3JkX2hlbHAnXSA9ICdQT1NUIGNvbXBhY3QgZW1iZWRzIHRvIGEgRGlzY29yZCBJbmNvbWluZyBXZWJob29rLic7CiRsYW5nWydkaXNjb3JkX3dlYmhvb2snXSA9ICdXZWJob29rIFVSTCc7CiRsYW5nWydlbmFibGVfcHVzaCddID0gJ1dlYiBQdXNoJzsKJGxhbmdbJ2VuYWJsZV9wdXNoX2hlbHAnXSA9ICdTZW5kIFdlYiBQdXNoIHRvIHN0b3JlZCBhZG1pbmlzdHJhdG9yIHN1YnNjcmlwdGlvbnMuJzsKJGxhbmdbJ3NlY3Rpb25fd2VicHVzaCddID0gJ1dlYiBQdXNoIChQV0EpJzsKJGxhbmdbJ3ZhcGlkX3B1YmxpYyddID0gJ1ZBUElEIHB1YmxpYyBrZXknOwokbGFuZ1sndmFwaWRfY29udGFjdCddID0gJ1ZBUElEIGNvbnRhY3QgKG1haWx0bzogb3IgaHR0cHM6KSc7CiRsYW5nWydtYW5pZmVzdF91cmwnXSA9ICdXZWIgYXBwIG1hbmlmZXN0IFVSTCc7CiRsYW5nWyd3ZWJwdXNoX2luc3RhbGxfbm90ZSddID0gJ0hUVFBTIGlzIHJlcXVpcmVkIGluIHByb2R1Y3Rpb24uIFB1Ymxpc2ggbWFzX25jX3N3LmpzIHRvIHRoZSBzaXRlIHJvb3QuIENHU2ltcGxlUFdBIG1lcmdlIGlzIG9wdGlvbmFsIHVuZGVyIE1vZHVsZSBVSS4nOwokbGFuZ1snYnRuX3N1YnNjcmliZV9wdXNoJ10gPSAnU3Vic2NyaWJlIG9uIHRoaXMgYnJvd3Nlcic7CiRsYW5nWydidG5fdGVzdF9wdXNoJ10gPSAnU2VuZCB0ZXN0IFdlYiBQdXNoJzsKJGxhbmdbJ2J0bl9yb3RhdGVfdmFwaWQnXSA9ICdSb3RhdGUgVkFQSUQga2V5cyc7CiRsYW5nWydidG5fcHVibGlzaF9zdyddID0gJ1B1Ymxpc2ggc2VydmljZSB3b3JrZXIgc3R1YiB0byBzaXRlIHJvb3QnOwokbGFuZ1sncHVibGlzaF9zd19oZWxwJ10gPSAnV3JpdGVzIG1hc19uY19zdy5qcyBpbnRvIHRoZSBDTVMgcm9vdC4gRW5zdXJlIEhUVFBTIGFuZCBjYWNoZSBoZWFkZXJzIHN1aXQgeW91ciBlbnZpcm9ubWVudC4nOwokbGFuZ1snc2VjdGlvbl9ldmVudHMnXSA9ICdPcHRpb25hbCBzZWN1cml0eSBldmVudHMnOwokbGFuZ1snZXZ0X2xvZ2luX2ZhaWxlZF9vcHQnXSA9ICdOb3RpZnkgb24gZmFpbGVkIGFkbWluIGxvZ2luIGF0dGVtcHRzJzsKJGxhbmdbJ2V2dF9kZWxldGVfdXNlcl9vcHQnXSA9ICdOb3RpZnkgd2hlbiBhIGJhY2tlbmQgdXNlciBpcyBkZWxldGVkJzsKJGxhbmdbJ3NlY3Rpb25fcmF0ZXMnXSA9ICdSYXRlIGxpbWl0aW5nJzsKJGxhbmdbJ3JhdGVfcGVyX2hvdXInXSA9ICdNYXggbm90aWZpY2F0aW9ucyBwZXIgY2F0ZWdvcnkgcGVyIGhvdXInOwokbGFuZ1snc2VjdGlvbl9oZWFsdGgnXSA9ICdIZWFsdGggdGhyZXNob2xkcyc7CiRsYW5nWydoZWFsdGhfbWluX3BocCddID0gJ01pbmltdW0gUEhQIHZlcnNpb24gKHdhcm4gYmVsb3cpJzsKJGxhbmdbJ2hlYWx0aF9kaXNrX3BjdCddID0gJ1dhcm4gd2hlbiBmcmVlIGRpc2sgZmFsbHMgYmVsb3cgdGhpcyBwZXJjZW50JzsKJGxhbmdbJ2hlYWx0aF9kYl9tcyddID0gJ1dhcm4gd2hlbiBhIERCIHBpbmcgZXhjZWVkcyB0aGlzIG1hbnkgbWlsbGlzZWNvbmRzICgwIGRpc2FibGVzKSc7CiRsYW5nWydzZWN0aW9uX2FkdmFuY2VkJ10gPSAnQWR2YW5jZWQnOwokbGFuZ1snZmF0YWxfc2h1dGRvd25fb3B0J10gPSAnUmVjb3JkIHNhbml0aXplZCBmYXRhbCBzaHV0ZG93biBtZXNzYWdlcyBhcyBub3RpZmljYXRpb25zJzsKJGxhbmdbJ2ZhdGFsX3NodXRkb3duX3dhcm4nXSA9ICdNYXkgY2FwdHVyZSBzZW5zaXRpdmUgcGF0aHMgaW4gcmFyZSBjYXNlcy4gS2VlcCByZXN0cmljdGVkIHRvIHRydXN0ZWQgYWRtaW5zLic7CiRsYW5nWydzZWN0aW9uX2Nyb24nXSA9ICdDcm9uJzsKJGxhbmdbJ2Nyb25fdXJsX2xhYmVsJ10gPSAnU2lnbmVkIGNyb24gVVJMJzsKJGxhbmdbJ2Nyb25faGVscCddID0gJ0NhbGwgZnJvbSBjcm9uIHdpdGggY3VybCBvbiBhbiBpbnRlcnZhbCB5b3UgY2hvb3NlLiBFeGFtcGxlOiBjdXJsIC1mc1MgIlVSTCInOwokbGFuZ1snY3Jvbl90b2tlbl9taXNzaW5nJ10gPSAnKHRva2VuIG1pc3Npbmc7IHJlaW5zdGFsbCBtb2R1bGUpJzsKJGxhbmdbJ25vdGlmaWNhdGlvbnNfaW50cm8nXSA9ICdTdG9yZWQgbm90aWZpY2F0aW9ucyBmcm9tIENNUyBldmVudHMsIGNyb24sIGhlYWx0aCBjaGVja3MsIGFuZCBjdXN0b20gaG9va3MuJzsKJGxhbmdbJ25vdGlmaWNhdGlvbnNfZW1wdHknXSA9ICdObyBub3RpZmljYXRpb25zIHlldC4nOwokbGFuZ1snY29sX2NyZWF0ZWQnXSA9ICdDcmVhdGVkJzsKJGxhbmdbJ2NvbF9zZXZlcml0eSddID0gJ1NldmVyaXR5JzsKJGxhbmdbJ2NvbF9jYXRlZ29yeSddID0gJ0NhdGVnb3J5JzsKJGxhbmdbJ2NvbF90aXRsZSddID0gJ1RpdGxlJzsKJGxhbmdbJ2NvbF9kZWxpdmVyZWQnXSA9ICdEZWxpdmVyZWQgbWFzayc7CiRsYW5nWydidG5fZGVsZXRlX3NlbGVjdGVkJ10gPSAnRGVsZXRlIHNlbGVjdGVkJzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlJ10gPSAnRGVsZXRlIHNlbGVjdGVkIG5vdGlmaWNhdGlvbnM/JzsKJGxhbmdbJ3BhZ2VyX3ByZXYnXSA9ICdQcmV2aW91cyc7CiRsYW5nWydwYWdlcl9uZXh0J10gPSAnTmV4dCc7CiRsYW5nWydwYWdlcl9wYWdlJ10gPSAnUGFnZSc7CiRsYW5nWydwYWdlcl90b3RhbCddID0gJ3RvdGFsIHJvd3MnOwokbGFuZ1snZXZ0X25ld191c2VyX3RpdGxlJ10gPSAnTmV3IGJhY2tlbmQgdXNlcic7CiRsYW5nWydldnRfbmV3X3VzZXJfYm9keSddID0gJ1VzZXIgY3JlYXRlZDonOwokbGFuZ1snZXZ0X21vZHVsZV9pbnN0YWxsZWRfdGl0bGUnXSA9ICdNb2R1bGUgaW5zdGFsbGVkJzsKJGxhbmdbJ2V2dF9tb2R1bGVfdXBncmFkZWRfdGl0bGUnXSA9ICdNb2R1bGUgdXBncmFkZWQnOwokbGFuZ1snZXZ0X21vZHVsZV91bmluc3RhbGxlZF90aXRsZSddID0gJ01vZHVsZSB1bmluc3RhbGxlZCc7CiRsYW5nWydldnRfbG9naW5fZmFpbGVkX3RpdGxlJ10gPSAnTG9naW4gZmFpbGVkJzsKJGxhbmdbJ2V2dF9sb2dpbl9mYWlsZWRfYm9keSddID0gJ0ZhaWxlZCBsb2dpbiBhdHRlbXB0IGZvciB1c2VyJzsKJGxhbmdbJ2V2dF91c2VyX2RlbGV0ZWRfdGl0bGUnXSA9ICdVc2VyIGRlbGV0ZWQnOwokbGFuZ1snbm90aWZ5X2RlZmF1bHRfdGl0bGUnXSA9ICdOb3RpZmljYXRpb24nOwokbGFuZ1snZmF0YWxfbm90aWZ5X3RpdGxlJ10gPSAnRmF0YWwgZXJyb3IgKHNhbml0aXplZCknOwokbGFuZ1snY3Jvbl9waW5nX3RpdGxlJ10gPSAnQ3JvbiBoZWFydGJlYXQnOwokbGFuZ1snY3Jvbl9waW5nX2JvZHknXSA9ICdTY2hlZHVsZWQgY3JvbiBwaW5nIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS4nOwokbGFuZ1snaGVhbHRoX2lzc3VlX3RpdGxlJ10gPSAnSGVhbHRoIHdhcm5pbmcnOwokbGFuZ1sncHVzaF90ZXN0X3RpdGxlJ10gPSAnTUFTIE5vdGlmaWNhdGlvbiBDZW50ZXIgdGVzdCc7CiRsYW5nWydwdXNoX3Rlc3RfYm9keSddID0gJ1RoaXMgaXMgYSB0ZXN0IFdlYiBQdXNoIGZyb20gTUFTIE5vdGlmaWNhdGlvbiBDZW50ZXIuJzsKJGxhbmdbJ2V2ZW50ZGVzY19Ob3RpZnknXSA9ICdSYWlzZWQgd2hlbiBhbm90aGVyIG1vZHVsZSBvciBob29rIHNlbmRzIGEgY3VzdG9tIG5vdGlmaWNhdGlvbiBwYXlsb2FkIGludG8gTUFTX05vdGlmaWNhdGlvbkNlbnRlci4nOwokbGFuZ1snZXZlbnRoZWxwX05vdGlmeSddID0gJ1BhcmFtZXRlcnM6IHNldmVyaXR5IChpbmZvfHdhcm5pbmd8ZXJyb3IpLCBjYXRlZ29yeSwgdGl0bGUsIGJvZHksIG9wdGlvbmFsIG1ldGEgYXJyYXkuJzsKJGxhbmdbJ2Fib3V0X2hlYWRpbmdfbW9kdWxlJ10gPSAnTW9kdWxlIGRldGFpbHMnOwokbGFuZ1snYWJvdXRfbGFiZWxfbmFtZSddID0gJ05hbWUnOwokbGFuZ1snYWJvdXRfbGFiZWxfdmVyc2lvbiddID0gJ1ZlcnNpb24nOwokbGFuZ1snYWJvdXRfbGFiZWxfYXV0aG9yJ10gPSAnQXV0aG9yJzsKJGxhbmdbJ2Fib3V0X2xhYmVsX2VtYWlsJ10gPSAnRW1haWwnOwokbGFuZ1snYWJvdXRfbGFiZWxfbGljZW5zZSddID0gJ0xpY2Vuc2UnOwokbGFuZ1snYWJvdXRfbGljZW5zZV92YWx1ZSddID0gJ01JVCc7CiRsYW5nWydhYm91dF9oZWFkaW5nX2NvbXBhdCddID0gJ0NvbXBhdGliaWxpdHknOwokbGFuZ1snYWJvdXRfbWluX2NtcyddID0gJ01pbmltdW0gQ01TIE1hZGUgU2ltcGxlJzsKJGxhbmdbJ2Fib3V0X21pbl9waHAnXSA9ICdNaW5pbXVtIFBIUCc7CiRsYW5nWydhYm91dF9oZWFkaW5nX3N1bW1hcnknXSA9ICdTdW1tYXJ5JzsKLy8gRm9yZ2Ugc2NyZWVuc2hvdCBjYXB0aW9ucwokbGFuZ1snc2NyZWVuc2hvdF8xJ10gPSAnU2V0dGluZ3MgdGFiIHdpdGggcHVzaCBub3RpZmljYXRpb24gb3B0aW9ucyc7CiRsYW5nWydzY3JlZW5zaG90XzInXSA9ICdOb3RpZmljYXRpb24gbGlzdCBhbmQgZGVsaXZlcnkgbG9nIG92ZXJ2aWV3JzsKJGxhbmdbJ3NjcmVlbnNob3RfMyddID0gJ1N1YnNjcmlwdGlvbiBhbmQgVkFQSUQgY29uZmlndXJhdGlvbiBzY3JlZW4nOwo=]]></data>
	</file>
	<file>
	  <filename>/lang/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIE1BUyBzaGFyZWQgZG9uYXRpb25zIGFkbWluIFVJCiRsYW5nWydkb25hdGlvbnN0YWInXSA9ICdEb25hc2pvbmVyJzsKJGxhbmdbJ3RhYl9kb25hdGlvbnMnXSA9ICdEb25hc2pvbmVyJzsKJGxhbmdbJ3Nob3dkb25hdGlvbnN0YWInXSA9ICdWaXMgZmFuZW4gRG9uYXNqb25lcic7CiRsYW5nWydkb25hdGlvbnNfdGFiX2hpZGRlbiddID0gJ0RvbmFzam9uc2ZhbmVuIGVyIHNranVsdC4gRHUga2FuIHZpc2UgZGVuIGlnamVuIGkgbW9kdWxpbm5zdGlsbGluZ2VuZS4nOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnTUFTIE5vdGlmaWNhdGlvbiBDZW50ZXInOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdJbnRlcm50IHZhcnNsaW5nc3N5c3RlbSBmb3IgQ01TIE1hZGUgU2ltcGxlOiBramVybmVoZW5kZWxzZXIsIGUtcG9zdCwgRGlzY29yZC13ZWJob29rcywgV2ViIFB1c2ggKFZBUElEKSBtZWQgaW5uZWJ5Z2QgbWFuaWZlc3Qgb2cgc2VydmljZSB3b3JrZXItaGplbHAsIGhlbHNlc2pla2tlciwgY3Jvbi1VUkwgb2cga3Jva2VyIGZvciBhbmRyZSBtb2R1bGVyLiBDR1NpbXBsZVBXQSBlciB2YWxnZnJpdHQuIE1JVC1saXNlbnMuJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTUFTX05vdGlmaWNhdGlvbkNlbnRlciBlciBpbnN0YWxsZXJ0LiBHaSDCq01hbmFnZSBNQVNfTm90aWZpY2F0aW9uQ2VudGVywrsgdGlsIGJldHJvZGRlIGFkbWluaXN0cmF0b3Jlciwgc2V0dCBlLXBvc3Rtb3R0YWtlcmUgZWxsZXIgRGlzY29yZC13ZWJob29rLCBvZyBwdWJsaXNlciBzZXJ2aWNlIHdvcmtlciB2ZWQgV2ViIFB1c2guJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdNQVNfTm90aWZpY2F0aW9uQ2VudGVyIGVyIGZqZXJuZXQuJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdGamVybmUgTUFTX05vdGlmaWNhdGlvbkNlbnRlciwgZGF0YWJhc2V0YWJlbGxlciwgcHVzaC1hYm9ubmVtZW50ZXIgb2cgdGlsZ2FuZ2VyPyc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdJbmdlbiB0aWxnYW5nJzsKJGxhbmdbJ3RhYl9zZXR0aW5ncyddID0gJ0lubnN0aWxsaW5nZXInOwokbGFuZ1sndGFiX25vdGlmaWNhdGlvbnMnXSA9ICdWYXJzbGluZ2VyJzsKJGxhbmdbJ3RhYl9oZWxwJ10gPSAnSGplbHAnOwokbGFuZ1sndGFiX2Fib3V0J10gPSAnT20nOwokbGFuZ1sndGFiX2NoYW5nZWxvZyddID0gJ0VuZHJpbmdzbG9nZyc7CiRsYW5nWydkb25hdGlvbnNfdGFiJ10gPSAnRG9uYXNqb25lcic7CiRsYW5nWydzYXZlJ10gPSAnTGFncmUgaW5uc3RpbGxpbmdlcic7CiRsYW5nWydzYXZlZCddID0gJ0lubnN0aWxsaW5nZW5lIGVyIGxhZ3JldC4nOwokbGFuZ1sncHVibGlzaGVkX3N3X29rJ10gPSAnU2VydmljZSB3b3JrZXIgZXIgcHVibGlzZXJ0IHRpbCBuZXR0cm90IHNvbSBtYXNfbmNfc3cuanMuJzsKJGxhbmdbJ2tleXNfcm90YXRlZCddID0gJ1ZBUElELW7DuGtsZXIgZXIgcm90ZXJ0IG9nIHB1c2gtYWJvbm5lbWVudCBlciB0w7htdC4nOwokbGFuZ1snaGlkZWRvbmF0aW9uc3N1Ym1pdCddID0gJ1NranVsIGZhbmVuIERvbmFzam9uZXInOwokbGFuZ1snc3BvbnNvcnMnXSA9ICdTcG9uc29yJzsKJGxhbmdbJ2RvbmF0aW9uc3RleHQnXSA9ICdIdmlzIGRlbm5lIG1vZHVsZW4gaGplbHBlciBwcm9zamVrdGV0IGRpdHQsIGthbiBkdSBzdMO4dHRlIHZpZGVyZSB1dHZpa2xpbmcuJzsKJGxhbmdbJ2RvbmF0aW9uc19zcG9uc29yX2xvZ29fYWx0J10gPSAnTmV3cyBUYXJnZXRlZC1sb2dvJzsKJGxhbmdbJ2RvbmF0aW9uc19zcG9uc29yX2xpbmsnXSA9ICdCZXPDuGsgTmV3c1RhcmdldGVkJzsKJGxhbmdbJ2RvbmF0ZV9idG4nXSA9ICdEb25lcic7CiRsYW5nWydzZWN0aW9uX21vZHVsZV91aSddID0gJ01vZHVsLVVJJzsKJGxhbmdbJ2FkbWluX3NlY3Rpb25fbGFiZWwnXSA9ICdBZG1pbmlzdHJhc2pvbnNtZW55IChzZWtzam9uKSc7CiRsYW5nWydhZG1pbl9zZWN0aW9uX2hlbHAnXSA9ICdWZWxnIMO4dmVyc3RlIG5pdsOlIGkgYWRtaW4tbWVueWVuIGRlciBtb2R1bGVuIHNrYWwgdmlzZXMgKHNhbW1lIGlkw6kgc29tIGVnZW5kZWZpbmVydGUgZ2xvYmFsZSBpbm5zdGlsbGluZ2VyKS4gQnJ1a2VyZSBtZWQga3VuIHJlZGFrdMO4cnRpbGdhbmcga2FuIGlra2Ugw6VwbmUgb21yw6VkZXQgTmV0dHN0ZWRhZG1pbiwgc8OlIHVubmfDpSDDpSBsZWdnZSBtb2R1bGVuIGt1biBkZXIgaHZpcyBzbGlrZSBicnVrZXJlIHNrYWwga3VubmUgYnJ1a2UgZGVuLic7CiRsYW5nWydzaG93X2RvbmF0aW9uc190YWInXSA9ICdWaXMgZmFuZW4gRG9uYXNqb25lcic7CiRsYW5nWydzaG93X2RvbmF0aW9uc190YWJfaGVscCddID0gJ07DpXIgZGVuIGVyIGF2LCBza2p1bGVzIERvbmFzam9uZXIgdGlsIGR1IHNsw6VyIGRlbiBww6UgaWdqZW4gaGVyLic7CiRsYW5nWyd0aGVtZV9jb2xvcl9sYWJlbCddID0gJ1BXQSB0aGVtZS1jb2xvciAobWFuaWZlc3Qgb2cgbWV0YSknOwokbGFuZ1sndGhlbWVfY29sb3JfaGVscCddID0gJ0JydWsgaGV4ZmFyZ2UsIGZvciBla3NlbXBlbCAjMDA3OGQ0LiBCcnVrZXMgdGlsIHRoZW1lLWNvbG9yIG9nIG1hbmlmZXN0LWZlbHRldCBmb3IgdmlzbmluZ3NmYXJnZS4nOwokbGFuZ1snc3RhbmRhbG9uZV9wd2FfaGVhZGluZyddID0gJ09mZmVudGxpZyBQV0EgKGZyaXR0c3TDpWVuZGUpJzsKJGxhbmdbJ21hc19uY19mcm9udGVuZF9wd2FfaGVscCddID0gJ1DDpSB2YW5saWdlIG5ldHRzaWRlciwgbGVnZyB2ZWQgd2ViIGFwcCBtYW5pZmVzdCwgdGhlbWUtY29sb3Igb2cgcmVnaXN0cmVyIC9tYXNfbmNfc3cuanMgdmlhIG1ldGFkYXRhLWtyb2tlbiAoa3JldmVyIHttZXRhZGF0YX0gaSBzaWRlbWFsZW4pLic7CiRsYW5nWydzdGFuZGFsb25lX3B3YV9ub3RlJ10gPSAnU2zDpSBww6UgYmFyZSBuw6VyIGR1IHZpbCBoYSBpbnN0YWxsYXNqb24gb2cgc2VydmljZSB3b3JrZXIgcMOlIG9mZmVudGxpZ2Ugc2lkZXIuIEFkbWluIFdlYiBQdXNoIGJydWtlciBmb3J0c2F0dCBtb2R1bGVucyBhZG1pbi1oZWFkZXIgdXRlbiBkZXR0ZSB2YWxnZXQuJzsKJGxhbmdbJ21hc19uY19jaGFpbl9jZ19zaW1wbGVfcHdhX2hlbHAnXSA9ICdGbGV0dCBwdXNoLXNrcmlwdCBpbm4gaSBDR1NpbXBsZVBXQSBzaW4ga29tYmluZXJ0ZSBzZXJ2aWNlIHdvcmtlciAoa3JldmVyIENHU2ltcGxlUFdBKS4gTGEgc3TDpSBhdiBmb3Igw6UgdsOmcmUgdWF2aGVuZ2lnLic7CiRsYW5nWydjaGFpbl9jZ19ub3RlJ10gPSAnRXR0ZXIgZW5kcmluZyBhdiBDR1NpbXBsZVBXQS1mbGV0dGluZywgb3BwZ3JhZGVyIGVsbGVyIHJlaW5zdGFsbMOpciBldmVudHVlbGxlIG1vZHVsZXIgc29tIGF2aGVuZ2VyIGF2IENHU2ltcGxlUFdBLCBvZyByZWdlbmVyZXIgc2l0ZSB3b3JrZXIgZnJhIENHU2ltcGxlUFdBLWFkbWluLiBNQVMgbGV2ZXJlciBpa2tlIGVuIGtvcGkgYXYgQ0dTaW1wbGVQV0EgKGFubmV0IGxpc2Vuc29tZmFuZykuJzsKJGxhbmdbJ2FkbWluX293bl9tYW5pZmVzdF9oZWxwJ10gPSAnTsOlciBDR1NpbXBsZVBXQS1mbGV0dGluZyBlciBww6UsIHZpcyBvZ3PDpSBkZW5uZSBtb2R1bGVucyBtYW5pZmVzdCBvZyB0aGVtZS1jb2xvciBpIG1vZHVsLWFkbWluLWhlYWRlciAoc2xpayBhdCBkdSBpa2tlIGJhcmUgc3RvbGVyIHDDpSBDR1NpbXBsZVBXQSBmb3IgZGlzc2UgdGFnZ2VuZSkuJzsKJGxhbmdbJ2hlbHBfcGFyYW1fYWN0aW9uJ10gPSAnRnJvbnRlbmQtaGFuZGxpbmcgKHJlc2VydmVydCkuJzsKJGxhbmdbJ2hlbHBfYmFubmVyX3RpdGxlJ10gPSAnVHJlbmdlciBkdSBtZXIgaGplbHA/JzsKJGxhbmdbJ2hlbHBfYmFubmVyX2JvZHknXSA9ICdNQVMtbW9kdWxlciBvZyBkb2t1bWVudGFzam9uOic7CiRsYW5nWydoZWxwX3RhYl9nZW5lcmFsJ10gPSAnT3ZlcnNpa3QnOwokbGFuZ1snaGVscF90YWJfY2hhbm5lbHMnXSA9ICdLYW5hbGVyJzsKJGxhbmdbJ2hlbHBfdGFiX2ludGVyb3AnXSA9ICdJbnRlZ3Jhc2pvbic7CiRsYW5nWydoZWxwX2dlbmVyYWxfaGVhZGluZyddID0gJ0h2YSBtb2R1bGVuIGdqw7hyJzsKJGxhbmdbJ2hlbHBfZ2VuZXJhbF9pbnRybyddID0gJ01BUyBOb3RpZmljYXRpb24gQ2VudGVyIGxhZ3JlciBvcGVyYXRvcnZhcnNsZXIgaSBkYXRhYmFzZW4gb2cga2FuIG9nc8OlIHNlbmRlIGtvcGllciBww6UgZS1wb3N0LCBEaXNjb3JkIGVsbGVyIFdlYiBQdXNoLic7CiRsYW5nWydoZWxwX2dlbmVyYWxfbGkxJ10gPSAnQWJvbm5lciBww6UgdXR2YWxndGUgQ01TLWhlbmRlbHNlciAobnllIGJydWtlcmUsIG1vZHVsaW5zdGFsbGFzam9uZXIsIHZhbGdmcmllIGlubmxvZ2dpbmdmZWlsKS4nOwokbGFuZ1snaGVscF9nZW5lcmFsX2xpMiddID0gJ0tqw7hyIHBlcmlvZGlza2Ugc2pla2tlciBmcmEgY3JvbiBtZWQgZGVuIHNpZ25lcnRlIGNyb24tVVJMLWVuLic7CiRsYW5nWydoZWxwX2dlbmVyYWxfbGkzJ10gPSAnS29ibGUgdGlsIGVnbmUgbW9kdWxlciBtZWQgZG9rdW1lbnRlcnQgaG9vay1uYXZuLic7CiRsYW5nWydoZWxwX2NoYW5uZWxzX2JvZHknXSA9ICdFLXBvc3QgYnJ1a2VyIENNUyBNYWRlIFNpbXBsZSBzaW4gZ2xvYmFsZSBtYWlsZXIgKGNtc19tYWlsZXIpLiBEaXNjb3JkIGtyZXZlciBJbmNvbWluZyBXZWJob29rIGhvcyBkaXNjb3JkLmNvbS4gV2ViIFB1c2gga3JldmVyIEhUVFBTLCBHTVAgb2cgQ29tcG9zZXIsIFZBUElELW7DuGtsZXIgb2cgbWFzX25jX3N3LmpzIGkgcm90IChQdWJsaXNlci1rbmFwcCkuIFZhbGdmcml0dDogZmxldHQgbWVkIENHU2ltcGxlUFdBIGh2aXMgZHUgc2zDpXIgcMOlIGRlbiBpbnRlZ3Jhc2pvbmVuLic7CiRsYW5nWydoZWxwX2ludGVyb3BfYm9keSddID0gJ0thbGwgQ01TTVMgSG9va01hbmFnZXI6OmRvX2hvb2soXCdNQVNfTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZnlcJywgYXJyYXkoJHBheWxvYWQpKSBkZXIgJHBheWxvYWQgaGFyIHNldmVyaXR5LCBjYXRlZ29yeSwgdGl0bGUsIGJvZHkgb2cgdmFsZ2ZyaSBtZXRhLiBMYWdyZXIgdmFyc2VsZXQgb2cga2rDuHJlciB1dC1rYW5hbGVyIGV0dGVyIElubnN0aWxsaW5nZXIuJzsKJGxhbmdbJ2hlbHBfaW50ZXJvcF9jZ19ib2R5J10gPSAnTUFTX05vdGlmaWNhdGlvbkNlbnRlciBrcmV2ZXIgaWtrZSBDR1NpbXBsZVBXQS4gU29tIHN0YW5kYXJkIHZpc2VyIG1vZHVsZW4gZWdldCBtYW5pZmVzdCwgdGhlbWUtY29sb3Igb2cgYWRtaW4tc2tyaXB0LCBvZyBkdSBwdWJsaXNlcmVyIG1hc19uY19zdy5qcyB0aWwgbmV0dHJvdC4gSHZpcyBkdSBzbMOlciBww6UgdmFsZ2ZyaSBDR1NpbXBsZVBXQS1mbGV0dGluZyBvZyBDR1NpbXBsZVBXQSBlciBpbnN0YWxsZXJ0LCByZWdpc3RyZXJlcyBTZXJ2aWNlV29ya2VyQWRkb24gb2cgYWRtaW4ga2FuIGtqZWRlIENHU2ltcGxlUFdBIEdldEhlYWRlckhUTUwgKHNhbW1lIGlkw6kgc29tIENHV2ViUHVzaCkuIEhlbGUgQ0dTaW1wbGVQV0EtcHJvZHVrdGV0IGVyIGlra2UgaW5uZWJ5Z2QgKGxpc2VucyBvZyB2ZWRsaWtlaG9sZCBza2lsbGVyIHNlZykuIE7DpXIgQ0dXZWJQdXNoIGVyIGluc3RhbGxlcnQsIGthbiBkdSBzbMOlIHDDpSBicm8gc29tIGthbGxlciBicm9hZGNhc3RfbWVzc2FnZSAoQ0dFeHRlbnNpb25zIG5vdGlmaWNhdGlvbl9tZXNzYWdlKS4gVW5uZ8OlIGRvYmxlIHZhcnNsZXIgaHZpcyBzYW1tZSBlbmhldCBicnVrZXIgYmVnZ2UgYWJvbm5lbWVudHNsYWdyZW5lLic7CiRsYW5nWydzZWN0aW9uX2NnX3N0YWNrJ10gPSAnQ0dTaW1wbGVQV0EgLyBDR1dlYlB1c2gnOwokbGFuZ1snY2dfc3RhY2tfZGV0ZWN0ZWQnXSA9ICdJbnN0YWxsZXJ0ZSBtb2R1bGVyIChrasO4cmV0aWRzZGV0ZWtzam9uKSc7CiRsYW5nWydjZ19zaW1wbGVwd2FfbGFiZWwnXSA9ICdDR1NpbXBsZVBXQSc7CiRsYW5nWydjZ193ZWJwdXNoX2xhYmVsJ10gPSAnQ0dXZWJQdXNoJzsKJGxhbmdbJ2NnX2RldGVjdGVkX3llcyddID0gJ2phJzsKJGxhbmdbJ2NnX2RldGVjdGVkX25vJ10gPSAnbmVpJzsKJGxhbmdbJ2Nnd2VicHVzaF9icm9hZGNhc3RfaGVscCddID0gJ1NlbmQgb2dzw6UgV2ViIFB1c2ggdmlhIENHV2ViUHVzaCB0aWwgYWxsZSBlbmhldGVyIGkgZGVucyBhYm9ubmVtZW50c2xhZ2VyICh2YWxnZnJpdHQ7IGtyZXZlciBDR1dlYlB1c2ggb2cgQ0dFeHRlbnNpb25zIG5vdGlmaWNhdGlvbl9tZXNzYWdlKS4nOwokbGFuZ1snYWRtaW5fb3duX21hbmlmZXN0X2hlbHAnXSA9ICdOw6VyIENHU2ltcGxlUFdBIGVyIHRpbCBzdGVkZSwgdmlzIGxpa2V2ZWwgZGVubmUgbW9kdWxlbnMgbWFuaWZlc3QtbGVua2Ugb2cgdGhlbWUtY29sb3IgaSBhZG1pbi1oZWFkZXIgKHN0YW5kYXJkIGF2IGZvciDDpSB1bm5nw6UgZG9ibGUgbWFuaWZlc3QtbGVua2VyKS4nOwokbGFuZ1snY2dfc3RhY2tfbm90ZSddID0gJ0ludGVybnQgTUFTIFdlYiBQdXNoIGJydWtlciBkZW5uZSBtb2R1bGVucyBWQVBJRC1uw7hrbGVyIG9nIG1hc19uY19zdy5qcyAoZWxsZXIgc2FtbWVuc2zDpXR0IENHU2ltcGxlUFdBLXdvcmtlciBiYXJlIGh2aXMgZmxldHRpbmcgZXIgcMOlKS4gQ0dXZWJQdXNoIGhhciBlZ25lIG7DuGtsZXI7IGF2a2xhciBmb3J2ZW50bmluZyBodmlzIGR1IGJydWtlciBicm9lbi4nOwokbGFuZ1snY2hhbmdlbG9nX25vdGUnXSA9ICdFbmRyaW5nc2xvZ2cgbGVzZXMgZnJhIENIQU5HRUxPRy5tZCBpIG1vZHVsbWFwcGVuLic7CiRsYW5nWydzZWN0aW9uX2NoYW5uZWxzJ10gPSAnS2FuYWxlcic7CiRsYW5nWydlbmFibGVfZW1haWwnXSA9ICdFLXBvc3QnOwokbGFuZ1snZW5hYmxlX2VtYWlsX2hlbHAnXSA9ICdTZW5kIGtvcGkgYXYgaHZlcnQgdmFyc2VsIG1lZCBkZW4gZ2xvYmFsZSBDTVMtbWFpbGVyZW4uJzsKJGxhbmdbJ2VtYWlsX3JlY2lwaWVudHMnXSA9ICdFLXBvc3Rtb3R0YWtlcmUnOwokbGFuZ1snZW1haWxfcmVjaXBpZW50c19oZWxwJ10gPSAnQWRyZXNzZXIgYWRza2lsdCBtZWQga29tbWEgZWxsZXIgbWVsbG9tcm9tLic7CiRsYW5nWydlbmFibGVfZGlzY29yZCddID0gJ0Rpc2NvcmQtd2ViaG9vayc7CiRsYW5nWydlbmFibGVfZGlzY29yZF9oZWxwJ10gPSAnUE9TVCBrb21wYWt0ZSBlbWJlZHMgdGlsIERpc2NvcmQgSW5jb21pbmcgV2ViaG9vay4nOwokbGFuZ1snZGlzY29yZF93ZWJob29rJ10gPSAnV2ViaG9vay1VUkwnOwokbGFuZ1snZW5hYmxlX3B1c2gnXSA9ICdXZWIgUHVzaCc7CiRsYW5nWydlbmFibGVfcHVzaF9oZWxwJ10gPSAnU2VuZCBXZWIgUHVzaCB0aWwgbGFncmVkZSBhZG1pbmlzdHJhdG9yLWFib25uZW1lbnQuJzsKJGxhbmdbJ3NlY3Rpb25fd2VicHVzaCddID0gJ1dlYiBQdXNoIChQV0EpJzsKJGxhbmdbJ3ZhcGlkX3B1YmxpYyddID0gJ1ZBUElEIG9mZmVudGxpZyBuw7hra2VsJzsKJGxhbmdbJ3ZhcGlkX2NvbnRhY3QnXSA9ICdWQVBJRCBrb250YWt0IChtYWlsdG86IGVsbGVyIGh0dHBzOiknOwokbGFuZ1snbWFuaWZlc3RfdXJsJ10gPSAnV2ViIGFwcCBtYW5pZmVzdC1VUkwnOwokbGFuZ1snd2VicHVzaF9pbnN0YWxsX25vdGUnXSA9ICdIVFRQUyBrcmV2ZXMgaSBwcm9kdWtzam9uLiBQdWJsaXNlciBtYXNfbmNfc3cuanMgdGlsIHJvdC4gQ0dTaW1wbGVQV0EtZmxldHRpbmcgZXIgdmFsZ2ZyaXR0IHVuZGVyIE1vZHVsLVVJLic7CiRsYW5nWydidG5fc3Vic2NyaWJlX3B1c2gnXSA9ICdBYm9ubmVyIGkgZGVubmUgbmV0dGxlc2VyZW4nOwokbGFuZ1snYnRuX3Rlc3RfcHVzaCddID0gJ1NlbmQgdGVzdC1XZWIgUHVzaCc7CiRsYW5nWydidG5fcm90YXRlX3ZhcGlkJ10gPSAnUm90ZXIgVkFQSUQtbsO4a2xlcic7CiRsYW5nWydidG5fcHVibGlzaF9zdyddID0gJ1B1Ymxpc2VyIHNlcnZpY2Ugd29ya2VyIHRpbCByb3QnOwokbGFuZ1sncHVibGlzaF9zd19oZWxwJ10gPSAnU2tyaXZlciBtYXNfbmNfc3cuanMgaSBDTVMtcm90LiBTaWtyZSBIVFRQUyBvZyBjYWNoZS1oZWFkZXJlIHNvbSBwYXNzZXIgbWlsasO4ZXQuJzsKJGxhbmdbJ3NlY3Rpb25fZXZlbnRzJ10gPSAnVmFsZ2ZyaWUgc2lra2VyaGV0c2hlbmRlbHNlcic7CiRsYW5nWydldnRfbG9naW5fZmFpbGVkX29wdCddID0gJ1ZhcnNsZSB2ZWQgbWlzbHlra2VkZSBhZG1pbi1pbm5sb2dnaW5nZXInOwokbGFuZ1snZXZ0X2RlbGV0ZV91c2VyX29wdCddID0gJ1ZhcnNsZSBuw6VyIGVuIGJhY2tlbmQtYnJ1a2VyIHNsZXR0ZXMnOwokbGFuZ1snc2VjdGlvbl9yYXRlcyddID0gJ0JlZ3JlbnNuaW5nJzsKJGxhbmdbJ3JhdGVfcGVyX2hvdXInXSA9ICdNYWtzIHZhcnNsZXIgcGVyIGthdGVnb3JpIHBlciB0aW1lJzsKJGxhbmdbJ3NlY3Rpb25faGVhbHRoJ10gPSAnSGVsc2VncmVuc2VyJzsKJGxhbmdbJ2hlYWx0aF9taW5fcGhwJ10gPSAnTWluaW11bSBQSFAtdmVyc2pvbiAoYWR2YXIgdW5kZXIpJzsKJGxhbmdbJ2hlYWx0aF9kaXNrX3BjdCddID0gJ0FkdmFyIG7DpXIgbGVkaWcgZGlzayBnw6VyIHVuZGVyIGRlbm5lIHByb3NlbnRlbic7CiRsYW5nWydoZWFsdGhfZGJfbXMnXSA9ICdBZHZhciBuw6VyIERCLXBpbmcgb3ZlcnN0aWdlciBkZXR0ZSBhbnRhbGxldCBtcyAoMCBzbMOlciBhdiknOwokbGFuZ1snc2VjdGlvbl9hZHZhbmNlZCddID0gJ0F2YW5zZXJ0JzsKJGxhbmdbJ2ZhdGFsX3NodXRkb3duX29wdCddID0gJ1RhIG9wcCBzYW5pdGVydGUgZmF0YWxlIGF2c2x1dG5pbmdzZmVpbCBzb20gdmFyc2xlcic7CiRsYW5nWydmYXRhbF9zaHV0ZG93bl93YXJuJ10gPSAnS2FuIGkgc2plbGRuZSB0aWxmZWxsZXIgZmFuZ2Ugc2Vuc2l0aXZlIHN0aWVyLiBLdW4gZm9yIGJldHJvZGRlIGFkbWluaXN0cmF0b3Jlci4nOwokbGFuZ1snc2VjdGlvbl9jcm9uJ10gPSAnQ3Jvbic7CiRsYW5nWydjcm9uX3VybF9sYWJlbCddID0gJ1NpZ25lcnQgY3Jvbi1VUkwnOwokbGFuZ1snY3Jvbl9oZWxwJ10gPSAnS2FsbCBmcmEgY3JvbiBtZWQgY3VybCBldHRlciBlZ2V0IGludGVydmFsbC4gRWtzZW1wZWw6IGN1cmwgLWZzUyDCq1VSTMK7JzsKJGxhbmdbJ2Nyb25fdG9rZW5fbWlzc2luZyddID0gJyh0b2tlbiBtYW5nbGVyOyBpbnN0YWxsZXIgbW9kdWxlbiBww6Ugbnl0dCknOwokbGFuZ1snbm90aWZpY2F0aW9uc19pbnRybyddID0gJ0xhZ3JlZGUgdmFyc2xlciBmcmEgQ01TLWhlbmRlbHNlciwgY3JvbiwgaGVsc2VzamVra2VyIG9nIGVnbmUgaG9va3MuJzsKJGxhbmdbJ25vdGlmaWNhdGlvbnNfZW1wdHknXSA9ICdJbmdlbiB2YXJzbGVyIGVubsOlLic7CiRsYW5nWydjb2xfY3JlYXRlZCddID0gJ1RpZHNwdW5rdCc7CiRsYW5nWydjb2xfc2V2ZXJpdHknXSA9ICdBbHZvcmxpZ2hldCc7CiRsYW5nWydjb2xfY2F0ZWdvcnknXSA9ICdLYXRlZ29yaSc7CiRsYW5nWydjb2xfdGl0bGUnXSA9ICdUaXR0ZWwnOwokbGFuZ1snY29sX2RlbGl2ZXJlZCddID0gJ0xldmVydCAobWFza2UpJzsKJGxhbmdbJ2J0bl9kZWxldGVfc2VsZWN0ZWQnXSA9ICdTbGV0dCB2YWxndGUnOwokbGFuZ1snY29uZmlybV9kZWxldGUnXSA9ICdTbGV0dGUgdmFsZ3RlIHZhcnNsZXI/JzsKJGxhbmdbJ3BhZ2VyX3ByZXYnXSA9ICdGb3JyaWdlJzsKJGxhbmdbJ3BhZ2VyX25leHQnXSA9ICdOZXN0ZSc7CiRsYW5nWydwYWdlcl9wYWdlJ10gPSAnU2lkZSc7CiRsYW5nWydwYWdlcl90b3RhbCddID0gJ3JhZGVyIHRvdGFsdCc7CiRsYW5nWydldnRfbmV3X3VzZXJfdGl0bGUnXSA9ICdOeSBiYWNrZW5kLWJydWtlcic7CiRsYW5nWydldnRfbmV3X3VzZXJfYm9keSddID0gJ0JydWtlciBvcHByZXR0ZXQ6JzsKJGxhbmdbJ2V2dF9tb2R1bGVfaW5zdGFsbGVkX3RpdGxlJ10gPSAnTW9kdWwgaW5zdGFsbGVydCc7CiRsYW5nWydldnRfbW9kdWxlX3VwZ3JhZGVkX3RpdGxlJ10gPSAnTW9kdWwgb3BwZ3JhZGVydCc7CiRsYW5nWydldnRfbW9kdWxlX3VuaW5zdGFsbGVkX3RpdGxlJ10gPSAnTW9kdWwgYXZpbnN0YWxsZXJ0JzsKJGxhbmdbJ2V2dF9sb2dpbl9mYWlsZWRfdGl0bGUnXSA9ICdJbm5sb2dnaW5nIG1pc2x5a2tldCc7CiRsYW5nWydldnRfbG9naW5fZmFpbGVkX2JvZHknXSA9ICdNaXNseWtrZXQgaW5ubG9nZ2luZyBmb3IgYnJ1a2VyJzsKJGxhbmdbJ2V2dF91c2VyX2RlbGV0ZWRfdGl0bGUnXSA9ICdCcnVrZXIgc2xldHRldCc7CiRsYW5nWydub3RpZnlfZGVmYXVsdF90aXRsZSddID0gJ1ZhcnNlbCc7CiRsYW5nWydmYXRhbF9ub3RpZnlfdGl0bGUnXSA9ICdGYXRhbCBmZWlsIChzYW5pdGVydCknOwokbGFuZ1snY3Jvbl9waW5nX3RpdGxlJ10gPSAnQ3JvbiBoZWFydGJlYXQnOwokbGFuZ1snY3Jvbl9waW5nX2JvZHknXSA9ICdQbGFubGFndCBjcm9uLWthbGwgYmxlIGtqw7hydC4nOwokbGFuZ1snaGVhbHRoX2lzc3VlX3RpdGxlJ10gPSAnSGVsc2VhZHZhcnNlbCc7CiRsYW5nWydwdXNoX3Rlc3RfdGl0bGUnXSA9ICdNQVMgTm90aWZpY2F0aW9uIENlbnRlci10ZXN0JzsKJGxhbmdbJ3B1c2hfdGVzdF9ib2R5J10gPSAnRGV0dGUgZXIgZW4gdGVzdC1XZWIgUHVzaCBmcmEgTUFTIE5vdGlmaWNhdGlvbiBDZW50ZXIuJzsKJGxhbmdbJ2V2ZW50ZGVzY19Ob3RpZnknXSA9ICdVdGzDuHNlcyBuw6VyIGVuIGFubmVuIG1vZHVsIGVsbGVyIGhvb2sgc2VuZGVyIGV0IHRpbHBhc3NldCB2YXJzZWwgdGlsIE1BU19Ob3RpZmljYXRpb25DZW50ZXIuJzsKJGxhbmdbJ2V2ZW50aGVscF9Ob3RpZnknXSA9ICdQYXJhbWV0ZXJlOiBzZXZlcml0eSAoaW5mb3x3YXJuaW5nfGVycm9yKSwgY2F0ZWdvcnksIHRpdGxlLCBib2R5LCB2YWxnZnJpIG1ldGEtYXJyYXkuJzsKJGxhbmdbJ2Fib3V0X2hlYWRpbmdfbW9kdWxlJ10gPSAnTW9kdWxkZXRhbGplcic7CiRsYW5nWydhYm91dF9sYWJlbF9uYW1lJ10gPSAnTmF2bic7CiRsYW5nWydhYm91dF9sYWJlbF92ZXJzaW9uJ10gPSAnVmVyc2pvbic7CiRsYW5nWydhYm91dF9sYWJlbF9hdXRob3InXSA9ICdGb3JmYXR0ZXInOwokbGFuZ1snYWJvdXRfbGFiZWxfZW1haWwnXSA9ICdFLXBvc3QnOwokbGFuZ1snYWJvdXRfbGFiZWxfbGljZW5zZSddID0gJ0xpc2Vucyc7CiRsYW5nWydhYm91dF9saWNlbnNlX3ZhbHVlJ10gPSAnTUlUJzsKJGxhbmdbJ2Fib3V0X2hlYWRpbmdfY29tcGF0J10gPSAnS29tcGF0aWJpbGl0ZXQnOwokbGFuZ1snYWJvdXRfbWluX2NtcyddID0gJ01pbmltdW0gQ01TIE1hZGUgU2ltcGxlJzsKJGxhbmdbJ2Fib3V0X21pbl9waHAnXSA9ICdNaW5pbXVtIFBIUCc7CiRsYW5nWydhYm91dF9oZWFkaW5nX3N1bW1hcnknXSA9ICdTYW1tZW5kcmFnJzsK]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.MasModuleRequest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSBleGl0OwpjbGFzcyBNYXNNb2R1bGVSZXF1ZXN0CnsKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcXVlcnkoc3RyaW5nICRrZXksIHN0cmluZyAkZGVmYXVsdCA9ICcnKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHYgPSBmaWx0ZXJfaW5wdXQoSU5QVVRfR0VULCAka2V5LCBGSUxURVJfVU5TQUZFX1JBVyk7CiAgICAgICAgaWYgKCR2ID09PSBudWxsIHx8ICR2ID09PSBmYWxzZSkgewogICAgICAgICAgICAkdiA9IGZpbHRlcl9pbnB1dChJTlBVVF9QT1NULCAka2V5LCBGSUxURVJfVU5TQUZFX1JBVyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAoJHYgPT09IG51bGwgfHwgJHYgPT09IGZhbHNlKSA/ICRkZWZhdWx0IDogKHN0cmluZykgJHY7CiAgICB9CiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBvc3Qoc3RyaW5nICRrZXksIHN0cmluZyAkZGVmYXVsdCA9ICcnKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHYgPSBmaWx0ZXJfaW5wdXQoSU5QVVRfUE9TVCwgJGtleSwgRklMVEVSX1VOU0FGRV9SQVcpOwogICAgICAgIHJldHVybiAoJHYgPT09IG51bGwgfHwgJHYgPT09IGZhbHNlKSA/ICRkZWZhdWx0IDogKHN0cmluZykgJHY7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/mas_common/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/mas_common/lang/mas_admin_defaults_en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNoYXJlZCBBZG1pbiBTZXR0aW5ncyBhbmQgRG9uYXRpb25zIGxhbmcga2V5cyBmb3IgTUFTXyogbW9kdWxlcy4KICogTG9hZGVkIGF1dG9tYXRpY2FsbHkgdmlhIG1hc19kb2NzX2RlZmF1bHRzX2VuX1VTLnBocC4KICovCmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYXNfY29tbW9uX21lcmdlX2FkbWluX2xhbmcnKSkgewogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLHN0cmluZz4gJGxhbmcKICAgICAqLwogICAgZnVuY3Rpb24gbWFzX2NvbW1vbl9tZXJnZV9hZG1pbl9sYW5nKGFycmF5ICYkbGFuZykKICAgIHsKICAgICAgICAkbWFzQWRtaW5EZWZhdWx0cyA9IGFycmF5KAogICAgICAgICAgICAnYWRtaW5zZXR0aW5ncycgPT4gJ0FkbWluIFNldHRpbmdzJywKICAgICAgICAgICAgJ2RvbmF0aW9uc3RhYicgPT4gJ0RvbmF0aW9ucycsCiAgICAgICAgICAgICdkb25hdGlvbnNfdGFiJyA9PiAnRG9uYXRpb25zJywKICAgICAgICAgICAgJ3RhYl9kb25hdGlvbnMnID0+ICdEb25hdGlvbnMnLAogICAgICAgICAgICAnZG9uYXRlX2J0bicgPT4gJ0RvbmF0ZScsCiAgICAgICAgICAgICdkb25hdGlvbnN0ZXh0JyA9PiAnQSBsb3Qgb2YgdGltZSBhbmQgZWZmb3J0IGhhcyBiZWVuIHB1dCBpbnRvIGNyZWF0aW5nIHRoaXMgbW9kdWxlLiBJZiBpdCBoZWxwcyB5b3VyIHNpdGUsIHBsZWFzZSBjb25zaWRlciBzdXBwb3J0aW5nIGNvbnRpbnVlZCBkZXZlbG9wbWVudC4nLAogICAgICAgICAgICAnc3BvbnNvcnMnID0+ICdDdXJyZW50IHNwb25zb3JzLCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEnLAogICAgICAgICAgICAnZG9uYXRpb25zX3Nwb25zb3JfbG9nb19hbHQnID0+ICdOZXdzIFRhcmdldGVkIGxvZ28nLAogICAgICAgICAgICAnZG9uYXRpb25zX3Nwb25zb3JfbGluaycgPT4gJ1Zpc2l0IE5ld3NUYXJnZXRlZCcsCiAgICAgICAgICAgICdoaWRlZG9uYXRpb25zc3VibWl0JyA9PiAnSGlkZSBkb25hdGlvbnMgdGFiJywKICAgICAgICAgICAgJ2RvbmF0aW9uc190YWJfaGlkZGVuJyA9PiAnRG9uYXRpb25zIHRhYiBoYXMgYmVlbiBoaWRkZW4uIFlvdSBjYW4gc2hvdyBpdCBhZ2FpbiBpbiBBZG1pbiBTZXR0aW5ncy4nLAogICAgICAgICAgICAnc2hvd19kb25hdGlvbnNfdGFiJyA9PiAnU2hvdyBEb25hdGlvbnMgdGFiJywKICAgICAgICAgICAgJ3Nob3dfZG9uYXRpb25zX3RhYl9oZWxwJyA9PiAnV2hlbiB0dXJuZWQgb2ZmLCB0aGUgRG9uYXRpb25zIHRhYiBpcyBoaWRkZW4gdW50aWwgeW91IGVuYWJsZSBpdCBhZ2FpbiBpbiBBZG1pbiBTZXR0aW5ncy4nLAogICAgICAgICAgICAnc2hvd2RvbmF0aW9uc3RhYicgPT4gJ1Nob3cgZG9uYXRpb25zIHRhYicsCiAgICAgICAgICAgICdhZG1pbnNlY3Rpb24nID0+ICdBZG1pbiBtZW51IHNlY3Rpb24nLAogICAgICAgICAgICAnYWRtaW5zZWN0aW9uaGVscCcgPT4gJ1NlbGVjdCB3aGljaCBhZG1pbiBtZW51IHNlY3Rpb24gdGhpcyBtb2R1bGUgYXBwZWFycyB1bmRlci4nLAogICAgICAgICAgICAnbWFpbicgPT4gJ0NNUycsCiAgICAgICAgICAgICdmaWxlcycgPT4gJ0ZpbGVzJywKICAgICAgICAgICAgJ215cHJlZnMnID0+ICdNeSBQcmVmZXJlbmNlcycsCiAgICAgICAgICAgICdleHRlbnNpb25zJyA9PiAnRXh0ZW5zaW9ucycsCiAgICAgICAgICAgICdjb250ZW50JyA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICdzaXRlYWRtaW4nID0+ICdTaXRlIGFkbWluJywKICAgICAgICAgICAgJ3VzZXJzZ3JvdXBzJyA9PiAnVXNlciBNYW5hZ2VtZW50JywKICAgICAgICAgICAgJ2xheW91dCcgPT4gJ0xheW91dCcsCiAgICAgICAgICAgICdlY29tbWVyY2UnID0+ICdFLUNvbW1lcmNlJywKICAgICAgICApOwogICAgICAgIGZvcmVhY2ggKCRtYXNBZG1pbkRlZmF1bHRzIGFzICRrID0+ICR2KSB7CiAgICAgICAgICAgIGlmICghaXNzZXQoJGxhbmdbJGtdKSB8fCAkbGFuZ1ska10gPT09ICcnIHx8ICRsYW5nWyRrXSA9PT0gJGspIHsKICAgICAgICAgICAgICAgICRsYW5nWyRrXSA9ICR2OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgppZiAoaXNzZXQoJGxhbmcpICYmIGlzX2FycmF5KCRsYW5nKSkgewogICAgbWFzX2NvbW1vbl9tZXJnZV9hZG1pbl9sYW5nKCRsYW5nKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/lang/mas_docs_defaults_en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIERlZmF1bHQgSGVscCAvIEFib3V0IGxhbmcga2V5cyBmb3IgTUFTXyogbW9kdWxlcy4KICoKICogSW4gbGFuZy9lbl9VUy5waHA6CiAqICAgcmVxdWlyZV9vbmNlIGRpcm5hbWUoX19GSUxFX18pIC4gJy8uLi9saWIvbWFzX2NvbW1vbl9sb2FkZXIucGhwJzsKICogICBtYXNfcmVxdWlyZV9tYXNfbGFuZ19kZWZhdWx0cygpOwogKgogKiBUaGUgZXhwbGljaXQgbWVyZ2UgY2FsbCBpcyByZXF1aXJlZCBiZWNhdXNlIHJlcXVpcmVfb25jZSBza2lwcyByZS1ydW5uaW5nIHRoaXMgZmlsZQogKiB3aGVuIGFub3RoZXIgTUFTIG1vZHVsZSBsb2FkZWQgSGVscC9BYm91dCBzdHJpbmdzIGZpcnN0IGluIHRoZSBzYW1lIHJlcXVlc3QuCiAqLwppZiAoIWlzc2V0KCRsYW5nKSkgewogICAgJGxhbmcgPSBhcnJheSgpOwp9CgpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvbWFzX2FkbWluX2RlZmF1bHRzX2VuX1VTLnBocCc7CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWFzX2NvbW1vbl9tZXJnZV9kb2NzX2xhbmcnKSkgewogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLHN0cmluZz4gJGxhbmcKICAgICAqLwogICAgZnVuY3Rpb24gbWFzX2NvbW1vbl9tZXJnZV9kb2NzX2xhbmcoYXJyYXkgJiRsYW5nKQogICAgewogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ21hc19jb21tb25fbWVyZ2VfYWRtaW5fbGFuZycpKSB7CiAgICAgICAgICAgIG1hc19jb21tb25fbWVyZ2VfYWRtaW5fbGFuZygkbGFuZyk7CiAgICAgICAgfQoKICAgICAgICAkbWFzRG9jc0RlZmF1bHRzID0gYXJyYXkoCiAgICAgICAgICAgICdoZWxwJyA9PiAnT3BlbiBIZWxwIGluIHRoZSBNb2R1bGUgTWFuYWdlciBmb3IgdGFiYmVkIGRvY3VtZW50YXRpb24uJywKICAgICAgICAgICAgJ2hlbHBfZ2VuZXJhbCcgPT4gJ0dlbmVyYWwnLAogICAgICAgICAgICAnaGVscF9jb25maWd1cmF0aW9uJyA9PiAnQ29uZmlndXJhdGlvbicsCiAgICAgICAgICAgICdoZWxwX3Ryb3VibGVzaG9vdGluZycgPT4gJ1Ryb3VibGVzaG9vdGluZycsCiAgICAgICAgICAgICdoZWxwX292ZXJ2aWV3X2hlYWRpbmcnID0+ICdPdmVydmlldycsCiAgICAgICAgICAgICdoZWxwX3F1aWNrc3RhcnRfaGVhZGluZycgPT4gJ1F1aWNrIHN0YXJ0JywKICAgICAgICAgICAgJ2hlbHBfcXVpY2tzdGFydF8xJyA9PiAnSW5zdGFsbCBvciB1cGdyYWRlIHRoZSBtb2R1bGUgZnJvbSBFeHRlbnNpb25zLCB0aGVuIG9wZW4gaXRzIGFkbWluIHNjcmVlbi4nLAogICAgICAgICAgICAnaGVscF9xdWlja3N0YXJ0XzInID0+ICdDb25maWd1cmUgb3B0aW9ucyBvbiB0aGUgU2V0dGluZ3MgdGFiIGFuZCBzYXZlLicsCiAgICAgICAgICAgICdoZWxwX3F1aWNrc3RhcnRfMycgPT4gJ1VzZSB0aGUgbW9kdWxlIHRhZ3Mgb3IgYWN0aW9ucyBvbiB5b3VyIHNpdGUgYXMgZGVzY3JpYmVkIGluIHRoZSBzdW1tYXJ5IGJlbG93LicsCiAgICAgICAgICAgICdoZWxwX3JlcXVpcmVtZW50c19oZWFkaW5nJyA9PiAnU3lzdGVtIHJlcXVpcmVtZW50cycsCiAgICAgICAgICAgICdoZWxwX3JlcXVpcmVtZW50c19jbXMnID0+ICdDTVMgTWFkZSBTaW1wbGUnLAogICAgICAgICAgICAnaGVscF9yZXF1aXJlbWVudHNfcGhwJyA9PiAnUEhQJywKICAgICAgICAgICAgJ2hlbHBfY29uZmlndXJhdGlvbl9ib2R5JyA9PiAnVXNlIHRoZSBTZXR0aW5ncyBhbmQgQWRtaW4gc2V0dGluZ3MgdGFicyBpbiB0aGUgbW9kdWxlIGFkbWluLiBQcmVmZXJlbmNlcyBhcmUgc3RvcmVkIGluIHRoZSBDTVNNUyBtb2R1bGUgcHJlZmVyZW5jZSBzdG9yZSB1bmxlc3MgZG9jdW1lbnRlZCBvdGhlcndpc2UuJywKICAgICAgICAgICAgJ2hlbHBfY29uZmlnX2FkbWluX2hlYWRpbmcnID0+ICdBZG1pbicsCiAgICAgICAgICAgICdoZWxwX2NvbmZpZ19hZG1pbl8xJyA9PiAnQ2hvb3NlIHRoZSBhZG1pbiBtZW51IHNlY3Rpb24gdW5kZXIgQWRtaW4gc2V0dGluZ3MgaWYgdGhlIG1vZHVsZSBzdXBwb3J0cyBpdC4nLAogICAgICAgICAgICAnaGVscF9jb25maWdfYWRtaW5fMicgPT4gJ0dyYW50IG1vZHVsZSBwZXJtaXNzaW9ucyB0byB0aGUgY29ycmVjdCBhZG1pbiBncm91cHMgdW5kZXIgVXNlcnMgYW5kIEdyb3Vwcy4nLAogICAgICAgICAgICAnaGVscF90c18xJyA9PiAnQ2xlYXIgQ01TTVMgdGVtcGxhdGUgYW5kIGNhY2hlIGFmdGVyIGNoYW5naW5nIG1vZHVsZSBzZXR0aW5ncy4nLAogICAgICAgICAgICAnaGVscF90c18yJyA9PiAnQ2hlY2sgdGhlIGFkbWluIGF1ZGl0IGxvZyBhbmQgUEhQIGVycm9yIGxvZyBmb3IgZmFpbHVyZXMuJywKICAgICAgICAgICAgJ2hlbHBfdHNfMycgPT4gJ0NvbmZpcm0gZmlsZSBwZXJtaXNzaW9ucyBhbmQgb3duZXJzaGlwIG1hdGNoIHlvdXIgaG9zdCByZXF1aXJlbWVudHMuJywKICAgICAgICAgICAgJ2hlbHBfdHNfc3VwcG9ydF9ib2R5JyA9PiAnRm9yIHNpdGUtc3BlY2lmaWMgc3VwcG9ydCBjb250YWN0JywKICAgICAgICAgICAgJ2hlbHBfY3JlZGl0c19oZWFkaW5nJyA9PiAnQ3JlZGl0cycsCiAgICAgICAgICAgICdoZWxwX2NyZWRpdHNfYm9keScgPT4gJ0RldmVsb3BlZCBieScsCiAgICAgICAgICAgICdhYm91dF90YWJfbW9kdWxlJyA9PiAnTW9kdWxlJywKICAgICAgICAgICAgJ2Fib3V0X3RhYl9jb21wYXQnID0+ICdDb21wYXRpYmlsaXR5JywKICAgICAgICAgICAgJ2Fib3V0X3RhYl9zdW1tYXJ5JyA9PiAnU3VtbWFyeScsCiAgICAgICAgICAgICdhYm91dF90YWJfY2hhbmdlbG9nJyA9PiAnQ2hhbmdlIGxvZycsCiAgICAgICAgICAgICdhYm91dF9sYWJlbF9uYW1lJyA9PiAnTmFtZScsCiAgICAgICAgICAgICdhYm91dF9sYWJlbF92ZXJzaW9uJyA9PiAnVmVyc2lvbicsCiAgICAgICAgICAgICdhYm91dF9sYWJlbF9hdXRob3InID0+ICdBdXRob3InLAogICAgICAgICAgICAnYWJvdXRfbGFiZWxfZW1haWwnID0+ICdFbWFpbCcsCiAgICAgICAgICAgICdhYm91dF9sYWJlbF91cmwnID0+ICdXZWJzaXRlJywKICAgICAgICAgICAgJ2Fib3V0X2xhYmVsX2xpY2Vuc2UnID0+ICdMaWNlbnNlJywKICAgICAgICAgICAgJ2Fib3V0X2xpY2Vuc2VfdmFsdWUnID0+ICdNSVQnLAogICAgICAgICAgICAnYWJvdXRfbWluX2NtcycgPT4gJ01pbmltdW0gQ01TIE1hZGUgU2ltcGxlJywKICAgICAgICAgICAgJ2Fib3V0X21pbl9waHAnID0+ICdNaW5pbXVtIFBIUCcsCiAgICAgICAgICAgICdhYm91dF9kZXBlbmRlbmNpZXNfaGVhZGluZycgPT4gJ01vZHVsZSBkZXBlbmRlbmNpZXMnLAogICAgICAgICAgICAnYWJvdXRfZGVwZW5kZW5jaWVzX25vbmUnID0+ICdObyBtb2R1bGUgZGVwZW5kZW5jaWVzIGRlY2xhcmVkLicsCiAgICAgICAgKTsKICAgICAgICBmb3JlYWNoICgkbWFzRG9jc0RlZmF1bHRzIGFzICRrID0+ICR2KSB7CiAgICAgICAgICAgIGlmICghaXNzZXQoJGxhbmdbJGtdKSB8fCAkbGFuZ1ska10gPT09ICcnIHx8ICRsYW5nWyRrXSA9PT0gJGspIHsKICAgICAgICAgICAgICAgICRsYW5nWyRrXSA9ICR2OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgppZiAoaXNzZXQoJGxhbmcpICYmIGlzX2FycmF5KCRsYW5nKSkgewogICAgbWFzX2NvbW1vbl9tZXJnZV9kb2NzX2xhbmcoJGxhbmcpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/mas_common/lib/mas_admin_branding.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1vZHVsZSBpY29uL2Jhbm5lciBnZW5lcmF0aW9uIGZvciBNQVMgYWRtaW4gVUkuCiAqCiAqIEBwYWNrYWdlIE1BU19Db21tb24KICovCmlmICghZGVmaW5lZCgnTUFTX0FETUlOX0JSQU5ESU5HX0xPQURFRCcpKSB7CiAgICBkZWZpbmUoJ01BU19BRE1JTl9CUkFORElOR19MT0FERUQnLCB0cnVlKTsKfQoKZmluYWwgY2xhc3MgTWFzX0FkbWluX0JyYW5kaW5nCnsKICAgIC8qKgogICAgICogQHBhcmFtIENNU01vZHVsZSAkbW9kCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBtb2R1bGVQYXRoKCRtb2QpCiAgICB7CiAgICAgICAgcmV0dXJuIGNtc19qb2luX3BhdGgoJG1vZC0+R2V0TW9kdWxlUGF0aCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBpbWFnZXMvaWNvbi5naWYgZnJvbSBpY29uLnBuZyB3aGVuIG1pc3NpbmcgKHJlcXVpcmVzIEltYWdlTWFnaWNrIGNvbnZlcnQpLgogICAgICoKICAgICAqIEBwYXJhbSBDTVNNb2R1bGUgJG1vZAogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZW5zdXJlSWNvbkdpZigkbW9kKQogICAgewogICAgICAgICRpbWFnZXNEaXIgPSBjbXNfam9pbl9wYXRoKHNlbGY6Om1vZHVsZVBhdGgoJG1vZCksICdpbWFnZXMnKTsKICAgICAgICAkZ2lmID0gJGltYWdlc0RpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnaWNvbi5naWYnOwogICAgICAgIGlmICghaXNfZGlyKCRpbWFnZXNEaXIpKSB7CiAgICAgICAgICAgIG1rZGlyKCRpbWFnZXNEaXIsIDA3NTUsIHRydWUpOwogICAgICAgIH0KICAgICAgICAkc291cmNlcyA9IGFycmF5KAogICAgICAgICAgICBjbXNfam9pbl9wYXRoKCRpbWFnZXNEaXIsICdpY29uLTUxMi5wbmcnKSwKICAgICAgICAgICAgY21zX2pvaW5fcGF0aCgkaW1hZ2VzRGlyLCAnaWNvbi0xOTIucG5nJyksCiAgICAgICAgICAgIGNtc19qb2luX3BhdGgoJGltYWdlc0RpciwgJ0ljb24ucG5nJyksCiAgICAgICAgICAgIGNtc19qb2luX3BhdGgoJGltYWdlc0RpciwgJ2ljb24ucG5nJyksCiAgICAgICAgICAgIGNtc19qb2luX3BhdGgoc2VsZjo6bW9kdWxlUGF0aCgkbW9kKSwgJ2ljb24ucG5nJyksCiAgICAgICAgICAgIGNtc19qb2luX3BhdGgoc2VsZjo6bW9kdWxlUGF0aCgkbW9kKSwgJ2ljb25zJywgJ2ljb24ucG5nJyksCiAgICAgICAgKTsKICAgICAgICAkc3JjID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJHNvdXJjZXMgYXMgJGMpIHsKICAgICAgICAgICAgaWYgKGlzX2ZpbGUoJGMpKSB7CiAgICAgICAgICAgICAgICAkc3JjID0gJGM7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJHNyYyA9PT0gJycgJiYgaXNfZmlsZSgkZ2lmKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKCRzcmMgPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzX2ZpbGUoJGdpZikpIHsKICAgICAgICAgICAgJHNpemUgPSBAZ2V0aW1hZ2VzaXplKCRnaWYpOwogICAgICAgICAgICAkdmFsaWRTaXplID0gaXNfYXJyYXkoJHNpemUpICYmICRzaXplWzBdID49IDE2ICYmICRzaXplWzBdIDw9IDQ4ICYmICRzaXplWzFdID49IDE2ICYmICRzaXplWzFdIDw9IDQ4CiAgICAgICAgICAgICAgICAmJiBhYnMoJHNpemVbMF0gLSAkc2l6ZVsxXSkgPD0gNDsKICAgICAgICAgICAgJHNyY010aW1lID0gKGludCkgQGZpbGVtdGltZSgkc3JjKTsKICAgICAgICAgICAgJGdpZk10aW1lID0gKGludCkgQGZpbGVtdGltZSgkZ2lmKTsKICAgICAgICAgICAgaWYgKCR2YWxpZFNpemUgJiYgJGdpZk10aW1lID49ICRzcmNNdGltZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdW5saW5rKCRnaWYpOwogICAgICAgIH0KICAgICAgICByZXF1aXJlX29uY2UgX19ESVJfXyAuICcvbWFzX2ZvcmdlX2Fzc2V0cy5waHAnOwogICAgICAgICRiZyA9IE1hc19Gb3JnZV9Bc3NldHM6OmRldGVjdEltYWdlQmFja2dyb3VuZENvbG9yKCRzcmMpOwogICAgICAgICRjbWQgPSAnY29udmVydCAnIC4gZXNjYXBlc2hlbGxhcmcoJHNyYykKICAgICAgICAgICAgLiAnIC1iYWNrZ3JvdW5kICcgLiBlc2NhcGVzaGVsbGFyZygkYmcpCiAgICAgICAgICAgIC4gJyAtcmVzaXplIDMyeDMyXiAtZ3Jhdml0eSBjZW50ZXIgLWV4dGVudCAzMngzMicKICAgICAgICAgICAgLiAnIC1hbHBoYSBvZmYgJwogICAgICAgICAgICAuIGVzY2FwZXNoZWxsYXJnKCRnaWYpIC4gJyAyPi9kZXYvbnVsbCc7CiAgICAgICAgQGV4ZWMoJGNtZCwgJG91dCwgJGNvZGUpOwogICAgICAgIGlmICgkY29kZSAhPT0gMCB8fCAhaXNfZmlsZSgkZ2lmKSkgewogICAgICAgICAgICBjb3B5KCRzcmMsICRnaWYpOwogICAgICAgIH0KICAgICAgICBpZiAoaXNfZmlsZSgkZ2lmKSkgewogICAgICAgICAgICBjaG1vZCgkZ2lmLCAwNjQ0KTsKICAgICAgICAgICAgQGNob3duKCRnaWYsICduZXdzdDM5MjInKTsKICAgICAgICAgICAgQGNoZ3JwKCRnaWYsICduZXdzdDM5MjInKTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2l6ZSBpbWFnZXMvYmFubmVyLnBuZyB0byA2MDB4MTIwIHdoZW4gZmlsZSBleGlzdHMuCiAgICAgKgogICAgICogQHBhcmFtIENNU01vZHVsZSAkbW9kCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlbnN1cmVCYW5uZXIoJG1vZCkKICAgIHsKICAgICAgICAkaW1hZ2VzRGlyID0gY21zX2pvaW5fcGF0aChzZWxmOjptb2R1bGVQYXRoKCRtb2QpLCAnaW1hZ2VzJyk7CiAgICAgICAgaWYgKCFpc19kaXIoJGltYWdlc0RpcikpIHsKICAgICAgICAgICAgbWtkaXIoJGltYWdlc0RpciwgMDc1NSwgdHJ1ZSk7CiAgICAgICAgfQogICAgICAgICRiYW5uZXIgPSAkaW1hZ2VzRGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdiYW5uZXIucG5nJzsKICAgICAgICAkc291cmNlcyA9IGFycmF5KAogICAgICAgICAgICBjbXNfam9pbl9wYXRoKCRpbWFnZXNEaXIsICdCYW5uZXIucG5nJyksCiAgICAgICAgICAgIGNtc19qb2luX3BhdGgoJGltYWdlc0RpciwgJ2Jhbm5lcjEucG5nJyksCiAgICAgICAgICAgICRiYW5uZXIsCiAgICAgICAgKTsKICAgICAgICAkc3JjID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJHNvdXJjZXMgYXMgJGMpIHsKICAgICAgICAgICAgaWYgKGlzX2ZpbGUoJGMpKSB7CiAgICAgICAgICAgICAgICAkc3JjID0gJGM7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJHNyYyA9PT0gJycpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAkdG1wID0gJGJhbm5lciAuICcudG1wLnBuZyc7CiAgICAgICAgcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnL21hc19mb3JnZV9hc3NldHMucGhwJzsKICAgICAgICAkYmcgPSBNYXNfRm9yZ2VfQXNzZXRzOjpkZXRlY3RJbWFnZUJhY2tncm91bmRDb2xvcigkc3JjKTsKICAgICAgICAkY21kID0gJ2NvbnZlcnQgJyAuIGVzY2FwZXNoZWxsYXJnKCRzcmMpCiAgICAgICAgICAgIC4gJyAtYmFja2dyb3VuZCAnIC4gZXNjYXBlc2hlbGxhcmcoJGJnKQogICAgICAgICAgICAuICcgLXJlc2l6ZSA2MDB4MTIwXiAtZ3Jhdml0eSBjZW50ZXIgLWV4dGVudCA2MDB4MTIwICcKICAgICAgICAgICAgLiAnIC1hbHBoYSBvZmYgJwogICAgICAgICAgICAuIGVzY2FwZXNoZWxsYXJnKCR0bXApIC4gJyAyPi9kZXYvbnVsbCc7CiAgICAgICAgQGV4ZWMoJGNtZCwgJG91dCwgJGNvZGUpOwogICAgICAgIGlmICgkY29kZSA9PT0gMCAmJiBpc19maWxlKCR0bXApKSB7CiAgICAgICAgICAgIEByZW5hbWUoJHRtcCwgJGJhbm5lcik7CiAgICAgICAgfSBlbHNlaWYgKCFpc19maWxlKCRiYW5uZXIpICYmICRzcmMgIT09ICRiYW5uZXIpIHsKICAgICAgICAgICAgY29weSgkc3JjLCAkYmFubmVyKTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzX2ZpbGUoJGJhbm5lcikpIHsKICAgICAgICAgICAgY2htb2QoJGJhbm5lciwgMDY0NCk7CiAgICAgICAgICAgIEBjaG93bigkYmFubmVyLCAnbmV3c3QzOTIyJyk7CiAgICAgICAgICAgIEBjaGdycCgkYmFubmVyLCAnbmV3c3QzOTIyJyk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/lib/mas_admin_ui.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNoYXJlZCBDTVNNUyBhZG1pbiBVSSBoZWxwZXJzIGZvciBNQVNfKiBtb2R1bGVzIChpY29uLCBiYW5uZXIsIGRvbmF0aW9ucyB0YWIpLgogKgogKiBAcGFja2FnZSBNQVNfQ29tbW9uCiAqLwoKaWYgKCFkZWZpbmVkKCdNQVNfQ09NTU9OX1ZFUlNJT04nKSkgewogICAgZGVmaW5lKCdNQVNfQ09NTU9OX1ZFUlNJT04nLCAnMS4wLjAnKTsKfQoKaWYgKCFkZWZpbmVkKCdNQVNfQURNSU5fVUlfTE9BREVEJykpIHsKICAgIGRlZmluZSgnTUFTX0FETUlOX1VJX0xPQURFRCcsIHRydWUpOwp9CgpmaW5hbCBjbGFzcyBNYXNfQWRtaW5fVWkKewogICAgcHVibGljIGNvbnN0IFNQT05TT1JfSFJFRiA9ICdodHRwczovL25ld3N0YXJnZXRlZC5jb20nOwogICAgcHVibGljIGNvbnN0IFNQT05TT1JfTE9HTyA9ICdodHRwczovL25ld3N0YXJnZXRlZC5jb20vaG90bGluay1vay9sb2dvLnBuZyc7CiAgICBwdWJsaWMgY29uc3QgRE9OQVRFX0hSRUYgPSAnaHR0cHM6Ly9uZXdzdGFyZ2V0ZWQuY29tLyc7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBBYnNvbHV0ZSBwYXRoIHRvIGJ1bmRsZWQgbWFzX2NvbW1vbiByb290IChsaWIvbWFzX2NvbW1vbi8pLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvbW1vblBhdGgoKQogICAgewogICAgICAgIHJldHVybiBkaXJuYW1lKF9fRElSX18pOwogICAgfQoKICAgIC8qKgogICAgICogQWxsb3cgU21hcnR5IHRvIGxvYWQgdGVtcGxhdGVzIGZyb20gbGliL21hc19jb21tb24vdGVtcGxhdGVzLy4KICAgICAqCiAgICAgKiBAcGFyYW0gU21hcnR5X0NNU3xudWxsICRzbWFydHkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWdpc3RlclNtYXJ0eVNlY3VyZURpcnMoJHNtYXJ0eSA9IG51bGwpCiAgICB7CiAgICAgICAgcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnL21hc19zbWFydHlfc2VjdXJlLnBocCc7CiAgICAgICAgbWFzX2NvbW1vbl9yZWdpc3Rlcl9zbWFydHlfc2VjdXJlX2RpcnMoJHNtYXJ0eSwgc2VsZjo6Y29tbW9uUGF0aCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENNU01TIGFkbWluIG1lbnUgc2VjdGlvbiBrZXlzIChzZWUgQ21zQWRtaW5UaGVtZUJhc2U6OiRfdmFsaWRfc2VjdGlvbnMpLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nW10KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRWYWxpZEFkbWluU2VjdGlvbnMoKQogICAgewogICAgICAgIHJldHVybiBhcnJheSgKICAgICAgICAgICAgJ21haW4nLAogICAgICAgICAgICAnY29udGVudCcsCiAgICAgICAgICAgICdsYXlvdXQnLAogICAgICAgICAgICAnZmlsZXMnLAogICAgICAgICAgICAndXNlcnNncm91cHMnLAogICAgICAgICAgICAnZXh0ZW5zaW9ucycsCiAgICAgICAgICAgICdzaXRlYWRtaW4nLAogICAgICAgICAgICAnbXlwcmVmcycsCiAgICAgICAgICAgICdlY29tbWVyY2UnLAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzZWN0aW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkZWZhdWx0CiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNhbml0aXplQWRtaW5TZWN0aW9uKCRzZWN0aW9uLCAkZGVmYXVsdCA9ICdleHRlbnNpb25zJykKICAgIHsKICAgICAgICAkc2VjdGlvbiA9IHRyaW0oKHN0cmluZykgJHNlY3Rpb24pOwogICAgICAgIGlmIChpbl9hcnJheSgkc2VjdGlvbiwgc2VsZjo6Z2V0VmFsaWRBZG1pblNlY3Rpb25zKCksIHRydWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkc2VjdGlvbjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRkZWZhdWx0OwogICAgfQoKICAgIC8qKgogICAgICogSHVtYW4gbGFiZWwgZm9yIGFuIGFkbWluIHNlY3Rpb24ga2V5LgogICAgICoKICAgICAqIEBwYXJhbSAkbW9kCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzZWN0aW9uCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEFkbWluU2VjdGlvbkxhYmVsKCRtb2QsICRzZWN0aW9uKQogICAgewogICAgICAgIGlmICgkc2VjdGlvbiA9PT0gJ21haW4nKSB7CiAgICAgICAgICAgIHJldHVybiAnQ01TJzsKICAgICAgICB9CgogICAgICAgICRsYWJlbCA9ICRtb2QtPkxhbmcoJHNlY3Rpb24pOwogICAgICAgIGlmICgkbGFiZWwgIT09ICcnICYmICRsYWJlbCAhPT0gJHNlY3Rpb24pIHsKICAgICAgICAgICAgcmV0dXJuICRsYWJlbDsKICAgICAgICB9CgogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2xhbmcnKSkgewogICAgICAgICAgICAkY29yZSA9IGxhbmcoJHNlY3Rpb24pOwogICAgICAgICAgICBpZiAoJGNvcmUgIT09ICcnICYmICRjb3JlICE9PSAkc2VjdGlvbikgewogICAgICAgICAgICAgICAgcmV0dXJuICRjb3JlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdWNmaXJzdCgkc2VjdGlvbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBPcHRpb25zIGZvciBDcmVhdGVJbnB1dERyb3Bkb3duIChsYWJlbCA9PiB2YWx1ZSksIGluIENNU01TIG1lbnUgb3JkZXIuCiAgICAgKgogICAgICogQHBhcmFtICRtb2QKICAgICAqIEByZXR1cm4gYXJyYXk8c3RyaW5nLHN0cmluZz4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRBZG1pblNlY3Rpb25PcHRpb25zKCRtb2QpCiAgICB7CiAgICAgICAgJG9wdGlvbnMgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKHNlbGY6OmdldFZhbGlkQWRtaW5TZWN0aW9ucygpIGFzICRzZWN0aW9uKSB7CiAgICAgICAgICAgICRvcHRpb25zW3NlbGY6OmdldEFkbWluU2VjdGlvbkxhYmVsKCRtb2QsICRzZWN0aW9uKV0gPSAkc2VjdGlvbjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRvcHRpb25zOwogICAgfQoKICAgIC8qKgogICAgICogUmVidWlsZCBDTVNNUyBhZG1pbiBtZW51IGFmdGVyIGFkbWluc2VjdGlvbiBwcmVmZXJlbmNlIGNoYW5nZXMuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2xlYXJBZG1pbk1lbnVDYWNoZSgpCiAgICB7CiAgICAgICAgJHVpZCA9IGdldF91c2VyaWQoZmFsc2UpOwogICAgICAgIGlmICgkdWlkKSB7CiAgICAgICAgICAgIGNtc19jYWNoZV9oYW5kbGVyOjpnZXRfaW5zdGFuY2UoKS0+ZXJhc2UoJ3RoZW1laW5mbycgLiAoaW50KSAkdWlkKTsKICAgICAgICB9CgogICAgICAgICRnQ21zID0gY21zbXMoKTsKICAgICAgICBpZiAoJGdDbXMgJiYgbWV0aG9kX2V4aXN0cygkZ0NtcywgJ0NsZWFyQWRtaW5NZW51Q2FjaGUnKSkgewogICAgICAgICAgICAkZ0Ntcy0+Q2xlYXJBZG1pbk1lbnVDYWNoZSgpOwogICAgICAgIH0KICAgICAgICBpZiAoJGdDbXMgJiYgbWV0aG9kX2V4aXN0cygkZ0NtcywgJ0NsZWFyQ2FjaGUnKSkgewogICAgICAgICAgICAkZ0Ntcy0+Q2xlYXJDYWNoZSgpOwogICAgICAgIH0KICAgICAgICBpZiAoJGdDbXMpIHsKICAgICAgICAgICAgJG1vZG9wcyA9ICRnQ21zLT5HZXRNb2R1bGVPcGVyYXRpb25zKCk7CiAgICAgICAgICAgIGlmICgkbW9kb3BzICYmIG1ldGhvZF9leGlzdHMoJG1vZG9wcywgJ0NsZWFyQ2FjaGUnKSkgewogICAgICAgICAgICAgICAgJG1vZG9wcy0+Q2xlYXJDYWNoZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKCiAgICAvKioKICAgICAqIEBwYXJhbSAkbW9kCiAgICAgKiBAcmV0dXJuIHN0cmluZyBQdWJsaWMgVVJMIGJhc2UgZm9yIG1vZHVsZSBhc3NldHMgKG5vIHRyYWlsaW5nIHNsYXNoKS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtb2R1bGVBc3NldHNCYXNlKCRtb2QpCiAgICB7CiAgICAgICAgJGNvbmZpZyA9IGNtc191dGlsczo6Z2V0X2NvbmZpZygpOwogICAgICAgICRyb290ID0gcnRyaW0oKHN0cmluZykgJGNvbmZpZ1sncm9vdF91cmwnXSwgJy8nKTsKICAgICAgICByZXR1cm4gJHJvb3QgLiAnL21vZHVsZXMvJyAuICRtb2QtPkdldE5hbWUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkbW9kCiAgICAgKiBAcmV0dXJuIHN0cmluZyBGaWxlc3lzdGVtIHBhdGggdG8gbW9kdWxlIGRpcmVjdG9yeS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtb2R1bGVQYXRoKCRtb2QpCiAgICB7CiAgICAgICAgcmV0dXJuIGNtc19qb2luX3BhdGgoJG1vZC0+R2V0TW9kdWxlUGF0aCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkbW9kCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaG93RG9uYXRpb25zVGFiKCRtb2QpCiAgICB7CiAgICAgICAgaWYgKCFtZXRob2RfZXhpc3RzKCRtb2QsICdTaG93RG9uYXRpb25zVGFiJykpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiAoYm9vbCkgJG1vZC0+U2hvd0RvbmF0aW9uc1RhYigpOwogICAgfQoKICAgIC8qKgogICAgICogUHVibGljIG1vZHVsZSBhc3NldCBVUkwgd2l0aCA/dj1maWxlbXRpbWUgc28gQ0ROIGNhY2hlcyByZWZyZXNoIGFmdGVyIGltYWdlIHVwZGF0ZXMuCiAgICAgKgogICAgICogQHBhcmFtICRtb2QKICAgICAqIEBwYXJhbSBzdHJpbmcgJHJlbGF0aXZlUGF0aCBQYXRoIHVuZGVyIG1vZHVsZSByb290LCBlLmcuIGltYWdlcy9iYW5uZXIucG5nCiAgICAgKiBAcmV0dXJuIHN0cmluZyBVUkwgb3IgZW1wdHkgaWYgZmlsZSBtaXNzaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdmVyc2lvbmVkQXNzZXRVcmwoJG1vZCwgJHJlbGF0aXZlUGF0aCkKICAgIHsKICAgICAgICAkcmVsYXRpdmVQYXRoID0gbHRyaW0oc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAoc3RyaW5nKSAkcmVsYXRpdmVQYXRoKSwgJy8nKTsKICAgICAgICAkcGF0aCA9IGNtc19qb2luX3BhdGgoc2VsZjo6bW9kdWxlUGF0aCgkbW9kKSwgJHJlbGF0aXZlUGF0aCk7CiAgICAgICAgaWYgKCFpc19maWxlKCRwYXRoKSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgICAgICR1cmwgPSBzZWxmOjptb2R1bGVBc3NldHNCYXNlKCRtb2QpIC4gJy8nIC4gJHJlbGF0aXZlUGF0aDsKICAgICAgICAkbXRpbWUgPSBAZmlsZW10aW1lKCRwYXRoKTsKICAgICAgICBpZiAoJG10aW1lKSB7CiAgICAgICAgICAgICR1cmwgLj0gJz92PScgLiAoaW50KSAkbXRpbWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkdXJsOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtICRtb2QKICAgICAqIEByZXR1cm4gc3RyaW5nIFVSTCBvciBlbXB0eSBpZiBiYW5uZXIgZmlsZSBtaXNzaW5nLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGJhbm5lclVybCgkbW9kKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjp2ZXJzaW9uZWRBc3NldFVybCgkbW9kLCAnaW1hZ2VzL2Jhbm5lci5wbmcnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkbW9kCiAgICAgKiBAcGFyYW0gU21hcnR5X0ludGVybmFsX1RlbXBsYXRlfFNtYXJ0eSAkc21hcnR5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYXNzaWduQnJhbmRpbmcoJG1vZCwgJHNtYXJ0eSkKICAgIHsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ21hc19iYW5uZXJfdXJsJywgc2VsZjo6YmFubmVyVXJsKCRtb2QpKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ21hc19tb2R1bGVfdmVyc2lvbicsICRtb2QtPkdldFZlcnNpb24oKSk7CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdtYXNfbW9kdWxlX2ljb25fdXJsJywgc2VsZjo6dmVyc2lvbmVkQXNzZXRVcmwoJG1vZCwgJ2ltYWdlcy9pY29uLmdpZicpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkbW9kCiAgICAgKiBAcGFyYW0gU21hcnR5X0ludGVybmFsX1RlbXBsYXRlfFNtYXJ0eSAkc21hcnR5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRpZAogICAgICogQHBhcmFtIGludHxzdHJpbmcgJHJldHVybmlkCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmb3JtQWN0aW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzZXR0aW5nc0Zvcm1BY3Rpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhc3NpZ25Eb25hdGlvbnMoJG1vZCwgJHNtYXJ0eSwgJGlkLCAkcmV0dXJuaWQsICRmb3JtQWN0aW9uID0gJ2RlZmF1bHRhZG1pbicsICRzZXR0aW5nc0Zvcm1BY3Rpb24gPSAnc2F2ZV9zZXR0aW5ncycpCiAgICB7CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdtb2QnLCAkbW9kKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ2RvbmF0aW9uc3RleHQnLCBzZWxmOjpsYW5nKCRtb2QsICdkb25hdGlvbnN0ZXh0JywgJ0lmIHRoaXMgbW9kdWxlIGhlbHBzIHlvdXIgcHJvamVjdCwgeW91IGNhbiBzdXBwb3J0IGNvbnRpbnVlZCBkZXZlbG9wbWVudC4nKSk7CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdzcG9uc29yc3RleHQnLCBzZWxmOjpsYW5nKCRtb2QsICdzcG9uc29ycycsICdTcG9uc29yJykpOwogICAgICAgICRzbWFydHktPmFzc2lnbignZG9uYXRpb25zX3Nwb25zb3JfaHJlZicsIHNlbGY6OlNQT05TT1JfSFJFRik7CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdkb25hdGlvbnNfc3BvbnNvcl9sb2dvX3VybCcsIHNlbGY6OlNQT05TT1JfTE9HTyk7CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdkb25hdGlvbnNfc3BvbnNvcl9sb2dvX2FsdCcsIHNlbGY6OmxhbmcoJG1vZCwgJ2RvbmF0aW9uc19zcG9uc29yX2xvZ29fYWx0JywgJ05ld3MgVGFyZ2V0ZWQgbG9nbycpKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ2RvbmF0aW9uc19zcG9uc29yX2xpbmsnLCBzZWxmOjpsYW5nKCRtb2QsICdkb25hdGlvbnNfc3BvbnNvcl9saW5rJywgJ1Zpc2l0IE5ld3NUYXJnZXRlZCcpKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ2RvbmF0ZV9idG4nLCBzZWxmOjpsYW5nKCRtb2QsICdkb25hdGVfYnRuJywgJ0RvbmF0ZScpKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ2hpZGVkb25hdGlvbnNzdWJtaXQnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdoaWRlZG9uYXRpb25zc3VibWl0Jywgc2VsZjo6bGFuZygkbW9kLCAnaGlkZWRvbmF0aW9uc3N1Ym1pdCcsICdIaWRlIERvbmF0aW9ucyB0YWInKSkpOwogICAgICAgICRzbWFydHktPmFzc2lnbignc2V0dGluZ3NfZm9ybV9zdGFydCcsICRtb2QtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICRzZXR0aW5nc0Zvcm1BY3Rpb24sICRyZXR1cm5pZCkpOwogICAgICAgICRzbWFydHktPmFzc2lnbignc2V0dGluZ3NfZm9ybV9lbmQnLCAkbW9kLT5DcmVhdGVGb3JtRW5kKCkpOwogICAgICAgICRzbWFydHktPmFzc2lnbignZm9ybV9zdGFydCcsICRtb2QtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICRmb3JtQWN0aW9uLCAkcmV0dXJuaWQpKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ2Zvcm1fZW5kJywgJG1vZC0+Q3JlYXRlRm9ybUVuZCgpKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ2FjdGlvbmlkJywgJGlkKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlbmRlciBkb25hdGlvbnMgdGFiIHVzaW5nIHNoYXJlZCB0ZW1wbGF0ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gJG1vZAogICAgICogQHBhcmFtIHN0cmluZyAkaWQKICAgICAqIEBwYXJhbSBpbnR8c3RyaW5nICRyZXR1cm5pZAogICAgICogQHBhcmFtIHN0cmluZyAkZm9ybUFjdGlvbgogICAgICogQHBhcmFtIHN0cmluZyAkc2V0dGluZ3NGb3JtQWN0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVuZGVyRG9uYXRpb25zVGFiKCRtb2QsICRpZCwgJHJldHVybmlkLCAkZm9ybUFjdGlvbiA9ICdkZWZhdWx0YWRtaW4nLCAkc2V0dGluZ3NGb3JtQWN0aW9uID0gJ3NhdmVfc2V0dGluZ3MnKQogICAgewogICAgICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgICAgICBzZWxmOjpyZWdpc3RlclNtYXJ0eVNlY3VyZURpcnMoJHNtYXJ0eSk7CiAgICAgICAgc2VsZjo6YXNzaWduRG9uYXRpb25zKCRtb2QsICRzbWFydHksICRpZCwgJHJldHVybmlkLCAkZm9ybUFjdGlvbiwgJHNldHRpbmdzRm9ybUFjdGlvbik7CiAgICAgICAgJHRwbFBhdGggPSBzZWxmOjpjb21tb25QYXRoKCkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3RlbXBsYXRlcycgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2RvbmF0aW9ucy50cGwnOwogICAgICAgICR0cGwgPSAkc21hcnR5LT5jcmVhdGVUZW1wbGF0ZSgkdHBsUGF0aCk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdtb2QnLCAkbW9kKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2RvbmF0aW9uc3RleHQnLCAkc21hcnR5LT5nZXRUZW1wbGF0ZVZhcnMoJ2RvbmF0aW9uc3RleHQnKSk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdzcG9uc29yc3RleHQnLCAkc21hcnR5LT5nZXRUZW1wbGF0ZVZhcnMoJ3Nwb25zb3JzdGV4dCcpKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2RvbmF0aW9uc19zcG9uc29yX2hyZWYnLCBzZWxmOjpTUE9OU09SX0hSRUYpOwogICAgICAgICR0cGwtPmFzc2lnbignZG9uYXRpb25zX3Nwb25zb3JfbG9nb191cmwnLCBzZWxmOjpTUE9OU09SX0xPR08pOwogICAgICAgICR0cGwtPmFzc2lnbignZG9uYXRpb25zX3Nwb25zb3JfbG9nb19hbHQnLCAkc21hcnR5LT5nZXRUZW1wbGF0ZVZhcnMoJ2RvbmF0aW9uc19zcG9uc29yX2xvZ29fYWx0JykpOwogICAgICAgICR0cGwtPmFzc2lnbignZG9uYXRpb25zX3Nwb25zb3JfbGluaycsICRzbWFydHktPmdldFRlbXBsYXRlVmFycygnZG9uYXRpb25zX3Nwb25zb3JfbGluaycpKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2RvbmF0ZV9idG4nLCAkc21hcnR5LT5nZXRUZW1wbGF0ZVZhcnMoJ2RvbmF0ZV9idG4nKSk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdoaWRlZG9uYXRpb25zc3VibWl0JywgJHNtYXJ0eS0+Z2V0VGVtcGxhdGVWYXJzKCdoaWRlZG9uYXRpb25zc3VibWl0JykpOwogICAgICAgICR0cGwtPmFzc2lnbignc2V0dGluZ3NfZm9ybV9zdGFydCcsICRzbWFydHktPmdldFRlbXBsYXRlVmFycygnc2V0dGluZ3NfZm9ybV9zdGFydCcpKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ3NldHRpbmdzX2Zvcm1fZW5kJywgJHNtYXJ0eS0+Z2V0VGVtcGxhdGVWYXJzKCdzZXR0aW5nc19mb3JtX2VuZCcpKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2FjdGlvbmlkJywgJGlkKTsKICAgICAgICBlY2hvICR0cGwtPmZldGNoKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFY2hvIHNldHRpbmdzIGJhbm5lciBibG9jayAoZm9yIG5vbi1TbWFydHkgYWRtaW4gdGFicykuCiAgICAgKgogICAgICogQHBhcmFtICRtb2QKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRlc2NyaXB0aW9uSHRtbCBPcHRpb25hbCBleHRyYSBIVE1MIGJlbG93IHRpdGxlIChhbHJlYWR5IGVzY2FwZWQpLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVjaG9TZXR0aW5nc0Jhbm5lcigkbW9kLCAkZGVzY3JpcHRpb25IdG1sID0gJycpCiAgICB7CiAgICAgICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwogICAgICAgIHNlbGY6OnJlZ2lzdGVyU21hcnR5U2VjdXJlRGlycygkc21hcnR5KTsKICAgICAgICAkdHBsRmlsZSA9IHNlbGY6OmNvbW1vblBhdGgoKSAuICcvdGVtcGxhdGVzL3NldHRpbmdzX2Jhbm5lcl9lY2hvLnRwbCc7CiAgICAgICAgaWYgKCFpc19maWxlKCR0cGxGaWxlKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgkdHBsRmlsZSwgbnVsbCwgbnVsbCwgJHNtYXJ0eSk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdtYXNfYmFubmVyX3VybCcsIHNlbGY6OmJhbm5lclVybCgkbW9kKSk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdtYXNfbW9kdWxlX25hbWUnLCAkbW9kLT5HZXRGcmllbmRseU5hbWUoKSk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdtYXNfbW9kdWxlX3ZlcnNpb24nLCAkbW9kLT5HZXRWZXJzaW9uKCkpOwogICAgICAgICR0cGwtPmFzc2lnbignbWFzX2Rlc2NyaXB0aW9uX2h0bWwnLCAkZGVzY3JpcHRpb25IdG1sKTsKICAgICAgICBlY2hvICR0cGwtPmZldGNoKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTbWFydHkgYmFubmVyIHNuaXBwZXQgZm9yIHNldHRpbmdzIHRlbXBsYXRlcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNldHRpbmdzQmFubmVyU21hcnR5U25pcHBldCgpCiAgICB7CiAgICAgICAgJHBhdGggPSBzZWxmOjpjb21tb25QYXRoKCkgLiAnL3RlbXBsYXRlcy9zZXR0aW5nc19iYW5uZXJfc25pcHBldC50cGwnOwogICAgICAgIGlmICghaXNfZmlsZSgkcGF0aCkgfHwgIWlzX3JlYWRhYmxlKCRwYXRoKSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgICAgICRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJHBhdGgpOwogICAgICAgIHJldHVybiAoJGNvbnRlbnQgIT09IGZhbHNlKSA/IChzdHJpbmcpICRjb250ZW50IDogJyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gJG1vZAogICAgICogQHBhcmFtIHN0cmluZyAka2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRmYWxsYmFjawogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbGFuZygkbW9kLCAka2V5LCAkZmFsbGJhY2spCiAgICB7CiAgICAgICAgJHYgPSAkbW9kLT5MYW5nKCRrZXkpOwogICAgICAgIGlmICgkdiA9PT0gJycgfHwgJHYgPT09ICRrZXkpIHsKICAgICAgICAgICAgcmV0dXJuICRmYWxsYmFjazsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICR2OwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGltYWdlcy9pY29uLmdpZiBmcm9tIGljb24ucG5nIHdoZW4gbWlzc2luZyAocmVxdWlyZXMgSW1hZ2VNYWdpY2sgY29udmVydCkuCiAgICAgKgogICAgICogQHBhcmFtICRtb2QKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuc3VyZUljb25HaWYoJG1vZCkKICAgIHsKICAgICAgICByZXF1aXJlX29uY2UgX19ESVJfXyAuICcvbWFzX2FkbWluX2JyYW5kaW5nLnBocCc7CiAgICAgICAgcmV0dXJuIE1hc19BZG1pbl9CcmFuZGluZzo6ZW5zdXJlSWNvbkdpZigkbW9kKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2l6ZSBpbWFnZXMvYmFubmVyLnBuZyB0byA2MDB4MTIwIHdoZW4gZmlsZSBleGlzdHMuCiAgICAgKgogICAgICogQHBhcmFtICRtb2QKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuc3VyZUJhbm5lcigkbW9kKQogICAgewogICAgICAgIHJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy9tYXNfYWRtaW5fYnJhbmRpbmcucGhwJzsKICAgICAgICByZXR1cm4gTWFzX0FkbWluX0JyYW5kaW5nOjplbnN1cmVCYW5uZXIoJG1vZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZW5lcmF0ZSBDTVNNUyBGb3JnZSBsaXN0aW5nIGFzc2V0cyB1bmRlciBhc3NldHMvIChpY29ucywgYmFubmVycykuCiAgICAgKiBBbHNvIHJlZnJlc2hlcyBydW50aW1lIGltYWdlcy9pY29uLmdpZiBhbmQgaW1hZ2VzL2Jhbm5lci5wbmcuCiAgICAgKgogICAgICogQHBhcmFtICRtb2QKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsbWl4ZWQ+ICRvcHRpb25zCiAgICAgKiBAcmV0dXJuIGFycmF5PHN0cmluZyxtaXhlZD4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlbnN1cmVGb3JnZUFzc2V0cygkbW9kLCBhcnJheSAkb3B0aW9ucyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnL21hc19mb3JnZV9hc3NldHMucGhwJzsKICAgICAgICBpZiAoJG1vZC0+R2V0TmFtZSgpID09PSAnTUFTX0FjY2Vzc2liaWxpdHknKSB7CiAgICAgICAgICAgIE1hc19Gb3JnZV9Bc3NldHM6OmVuc3VyZUFjY2Vzc2liaWxpdHlNYXN0ZXJzKCRtb2QpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gTWFzX0ZvcmdlX0Fzc2V0czo6ZW5zdXJlRm9yZ2VBc3NldHMoJG1vZCwgJG9wdGlvbnMpOwogICAgfQoKICAgIC8qKgogICAgICogVmFsaWRhdGUgRm9yZ2UgYXNzZXQgZmlsZXMgZm9yIHBhY2thZ2luZy4KICAgICAqCiAgICAgKiBAcGFyYW0gJG1vZAogICAgICogQHBhcmFtIGJvb2wgJHJlcXVpcmVTY3JlZW5zaG90cwogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsbWl4ZWQ+CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdmFsaWRhdGVGb3JnZUFzc2V0cygkbW9kLCAkcmVxdWlyZVNjcmVlbnNob3RzID0gdHJ1ZSkKICAgIHsKICAgICAgICByZXF1aXJlX29uY2UgX19ESVJfXyAuICcvbWFzX2ZvcmdlX2Fzc2V0cy5waHAnOwogICAgICAgIHJldHVybiBNYXNfRm9yZ2VfQXNzZXRzOjp2YWxpZGF0ZUZvcmdlQXNzZXRzKCRtb2QsICRyZXF1aXJlU2NyZWVuc2hvdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHB1Ymxpc2hhYmxlTWFzTW9kdWxlcygpCiAgICB7CiAgICAgICAgcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnL21hc19mb3JnZV9hc3NldHMucGhwJzsKICAgICAgICByZXR1cm4gTWFzX0ZvcmdlX0Fzc2V0czo6cHVibGlzaGFibGVNb2R1bGVzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUYWJiZWQgSGVscCAoTW9kdWxlIE1hbmFnZXIpLiBTZWUgTWFzX01vZHVsZV9Eb2NzLgogICAgICoKICAgICAqIEBwYXJhbSAkbW9kCiAgICAgKiBAcGFyYW0gYXJyYXk8aW50LGFycmF5PHN0cmluZyxzdHJpbmc+PnxudWxsICR0YWJzCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLG1peGVkPiAkZXh0cmFBc3NpZ24KICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZmV0Y2hUYWJiZWRIZWxwKCRtb2QsICR0YWJzID0gbnVsbCwgYXJyYXkgJGV4dHJhQXNzaWduID0gYXJyYXkoKSkKICAgIHsKICAgICAgICByZXF1aXJlX29uY2UgX19ESVJfXyAuICcvbWFzX21vZHVsZV9kb2NzLnBocCc7CiAgICAgICAgcmV0dXJuIE1hc19Nb2R1bGVfRG9jczo6ZmV0Y2hUYWJiZWRIZWxwKCRtb2QsICR0YWJzLCAkZXh0cmFBc3NpZ24pOwogICAgfQoKICAgIC8qKgogICAgICogVGFiYmVkIEFib3V0IChNb2R1bGUgTWFuYWdlcikuIFNlZSBNYXNfTW9kdWxlX0RvY3MuCiAgICAgKgogICAgICogQHBhcmFtICRtb2QKICAgICAqIEBwYXJhbSBhcnJheTxpbnQsYXJyYXk8c3RyaW5nLHN0cmluZz4+fG51bGwgJHRhYnMKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsbWl4ZWQ+ICRleHRyYUFzc2lnbgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmZXRjaFRhYmJlZEFib3V0KCRtb2QsICR0YWJzID0gbnVsbCwgYXJyYXkgJGV4dHJhQXNzaWduID0gYXJyYXkoKSkKICAgIHsKICAgICAgICByZXF1aXJlX29uY2UgX19ESVJfXyAuICcvbWFzX21vZHVsZV9kb2NzLnBocCc7CiAgICAgICAgcmV0dXJuIE1hc19Nb2R1bGVfRG9jczo6ZmV0Y2hUYWJiZWRBYm91dCgkbW9kLCAkdGFicywgJGV4dHJhQXNzaWduKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/lib/mas_forge_assets.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIENNU01TIEZvcmdlIGxpc3RpbmcgYXNzZXRzIChhc3NldHMvaWNvbi0qLnBuZywgYmFubmVyLSoucG5nLCBzY3JlZW5zaG90LSoucG5nKS4KICogTm90IGxvYWRlZCBhdCBydW50aW1lOyBwYWNrYWdlZCBmb3IgRm9yZ2UgcHJvamVjdCBwYWdlcyBvbmx5LgogKgogKiBAcGFja2FnZSBNQVNfQ29tbW9uCiAqLwoKaWYgKCFkZWZpbmVkKCdNQVNfRk9SR0VfQVNTRVRTX0xPQURFRCcpKSB7CiAgICBkZWZpbmUoJ01BU19GT1JHRV9BU1NFVFNfTE9BREVEJywgdHJ1ZSk7Cn0KCnJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy9tYXNfZm9yZ2VfYXNzZXRfaW1hZ2VzLnBocCc7CgpmaW5hbCBjbGFzcyBNYXNfRm9yZ2VfQXNzZXRzCnsKICAgIC8qKiBAdmFyIHN0cmluZ1tdICovCiAgICBwdWJsaWMgc3RhdGljICRwdWJsaXNoYWJsZU1vZHVsZXMgPSBhcnJheSgKICAgICAgICAnTUFTX0FjY2Vzc2liaWxpdHknLAogICAgICAgICdNQVNfQUlBc3Npc3RhbnQnLAogICAgICAgICdNQVNfQXV0aEh1YicsCiAgICAgICAgJ01BU19CdWxsZXRpbicsCiAgICAgICAgJ01BU19DYXJ0JywKICAgICAgICAnTUFTX0NHQmxvZ1RvTElTRScsCiAgICAgICAgJ01BU19DU1InLAogICAgICAgICdNQVNfRGlzcXVzJywKICAgICAgICAnTUFTX011bHRpRGFzaCcsCiAgICAgICAgJ01BU19Ob3RpZmljYXRpb25DZW50ZXInLAogICAgICAgICdNQVNfT3BlblN0cmVldE1hcCcsCiAgICAgICAgJ01BU19QYXltZW50JywKICAgICAgICAnTUFTX1BheXBhbCcsCiAgICAgICAgJ01BU19SZWZlcnJhbFN5c3RlbScsCiAgICAgICAgJ01BU19TZWN1cml0eScsCiAgICAgICAgJ01BU19TaG9wJywKICAgICAgICAnTUFTX1NvY2lhbHMnLAogICAgKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nW10KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwdWJsaXNoYWJsZU1vZHVsZXMoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjokcHVibGlzaGFibGVNb2R1bGVzOwogICAgfQoKICAgIC8qKgogICAgICogR2VuZXJhdGUgcnVudGltZSArIEZvcmdlIGFzc2V0cyBmb3IgYSBtb2R1bGUuCiAgICAgKgogICAgICogQHBhcmFtICRtb2QKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsbWl4ZWQ+ICRvcHRpb25zIHNraXBfcnVudGltZSwgc2tpcF9mb3JnZSwgc2tpcF9zY3JlZW5zaG90cwogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsbWl4ZWQ+CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZW5zdXJlRm9yZ2VBc3NldHMoJG1vZCwgYXJyYXkgJG9wdGlvbnMgPSBhcnJheSgpKQogICAgewogICAgICAgICRyZXN1bHQgPSBhcnJheSgKICAgICAgICAgICAgJ21vZHVsZScgPT4gJG1vZC0+R2V0TmFtZSgpLAogICAgICAgICAgICAncnVudGltZV9pY29uJyA9PiBmYWxzZSwKICAgICAgICAgICAgJ3J1bnRpbWVfYmFubmVyJyA9PiBmYWxzZSwKICAgICAgICAgICAgJ2ZvcmdlX2ljb25zJyA9PiBmYWxzZSwKICAgICAgICAgICAgJ2ZvcmdlX2Jhbm5lcnMnID0+IGZhbHNlLAogICAgICAgICAgICAnZXJyb3JzJyA9PiBhcnJheSgpLAogICAgICAgICk7CgogICAgICAgIGlmIChlbXB0eSgkb3B0aW9uc1snc2tpcF9ydW50aW1lJ10pKSB7CiAgICAgICAgICAgICRyZXN1bHRbJ3J1bnRpbWVfaWNvbiddID0gTWFzX0FkbWluX1VpOjplbnN1cmVJY29uR2lmKCRtb2QpOwogICAgICAgICAgICAkcmVzdWx0WydydW50aW1lX2Jhbm5lciddID0gTWFzX0FkbWluX1VpOjplbnN1cmVCYW5uZXIoJG1vZCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zWydza2lwX2ZvcmdlJ10pKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgJG1vZHVsZVBhdGggPSBNYXNfQWRtaW5fVWk6Om1vZHVsZVBhdGgoJG1vZCk7CiAgICAgICAgJGFzc2V0c0RpciA9IGNtc19qb2luX3BhdGgoJG1vZHVsZVBhdGgsICdhc3NldHMnKTsKICAgICAgICBpZiAoIWlzX2RpcigkYXNzZXRzRGlyKSkgewogICAgICAgICAgICBta2RpcigkYXNzZXRzRGlyLCAwNzU1LCB0cnVlKTsKICAgICAgICB9CgogICAgICAgICRpY29uU3JjID0gc2VsZjo6cmVzb2x2ZUljb25Tb3VyY2UoJG1vZHVsZVBhdGgpOwogICAgICAgIGlmICgkaWNvblNyYyAhPT0gJycpIHsKICAgICAgICAgICAgJHJlc3VsdFsnZm9yZ2VfaWNvbnMnXSA9IE1hc19Gb3JnZV9Bc3NldEltYWdlczo6Z2VuZXJhdGVGb3JnZUljb25zKCRhc3NldHNEaXIsICRpY29uU3JjLCAkcmVzdWx0WydlcnJvcnMnXSk7CiAgICAgICAgICAgIE1hc19Gb3JnZV9Bc3NldEltYWdlczo6Y29weVN2Z0lmUHJlc2VudCgkbW9kdWxlUGF0aCwgJGFzc2V0c0Rpcik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHJlc3VsdFsnZXJyb3JzJ11bXSA9ICdObyBpY29uIHNvdXJjZSBQTkcgZm91bmQnOwogICAgICAgIH0KCiAgICAgICAgJGJhbm5lclNyYyA9IHNlbGY6OnJlc29sdmVCYW5uZXJTb3VyY2UoJG1vZHVsZVBhdGgpOwogICAgICAgIGlmICgkYmFubmVyU3JjICE9PSAnJykgewogICAgICAgICAgICAkcmVzdWx0Wydmb3JnZV9iYW5uZXJzJ10gPSBNYXNfRm9yZ2VfQXNzZXRJbWFnZXM6OmdlbmVyYXRlRm9yZ2VCYW5uZXJzKCRhc3NldHNEaXIsICRiYW5uZXJTcmMsICRyZXN1bHRbJ2Vycm9ycyddKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcmVzdWx0WydlcnJvcnMnXVtdID0gJ05vIGJhbm5lciBzb3VyY2UgZm91bmQnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gJG1vZAogICAgICogQHBhcmFtIGJvb2wgJHJlcXVpcmVTY3JlZW5zaG90cwogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsbWl4ZWQ+CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdmFsaWRhdGVGb3JnZUFzc2V0cygkbW9kLCAkcmVxdWlyZVNjcmVlbnNob3RzID0gdHJ1ZSkKICAgIHsKICAgICAgICAkbW9kdWxlUGF0aCA9IE1hc19BZG1pbl9VaTo6bW9kdWxlUGF0aCgkbW9kKTsKICAgICAgICAkYXNzZXRzRGlyID0gY21zX2pvaW5fcGF0aCgkbW9kdWxlUGF0aCwgJ2Fzc2V0cycpOwogICAgICAgICRyZXBvcnQgPSBhcnJheSgKICAgICAgICAgICAgJ21vZHVsZScgPT4gJG1vZC0+R2V0TmFtZSgpLAogICAgICAgICAgICAnb2snID0+IHRydWUsCiAgICAgICAgICAgICdpc3N1ZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdmaWxlcycgPT4gYXJyYXkoKSwKICAgICAgICApOwoKICAgICAgICAkc3BlY3MgPSBhcnJheSgKICAgICAgICAgICAgJ2ljb24tMTI4eDEyOC5wbmcnID0+IGFycmF5KCd3JyA9PiAxMjgsICdoJyA9PiAxMjgsICdtYXgnID0+IDEwNDg1NzYsICdyZXF1aXJlZCcgPT4gdHJ1ZSksCiAgICAgICAgICAgICdpY29uLTI1NngyNTYucG5nJyA9PiBhcnJheSgndycgPT4gMjU2LCAnaCcgPT4gMjU2LCAnbWF4JyA9PiAxMDQ4NTc2LCAncmVxdWlyZWQnID0+IHRydWUpLAogICAgICAgICAgICAnYmFubmVyLTc3MngyNTAucG5nJyA9PiBhcnJheSgndycgPT4gNzcyLCAnaCcgPT4gMjUwLCAnbWF4JyA9PiA0MTk0MzA0LCAncmVxdWlyZWQnID0+IHRydWUpLAogICAgICAgICAgICAnYmFubmVyLTE1NDR4NTAwLnBuZycgPT4gYXJyYXkoJ3cnID0+IDE1NDQsICdoJyA9PiA1MDAsICdtYXgnID0+IDQxOTQzMDQsICdyZXF1aXJlZCcgPT4gdHJ1ZSksCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRyZXF1aXJlU2NyZWVuc2hvdHMpIHsKICAgICAgICAgICAgZm9yICgkaSA9IDE7ICRpIDw9IDM7ICRpKyspIHsKICAgICAgICAgICAgICAgICRzcGVjc1snc2NyZWVuc2hvdC0nIC4gJGkgLiAnLnBuZyddID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJ21pbl93JyA9PiA4MDAsCiAgICAgICAgICAgICAgICAgICAgJ21heF93JyA9PiAxOTIwLAogICAgICAgICAgICAgICAgICAgICdtYXgnID0+IDIwOTcxNTIsCiAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkJyA9PiB0cnVlLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJHNwZWNzIGFzICRuYW1lID0+ICRzcGVjKSB7CiAgICAgICAgICAgICRwYXRoID0gY21zX2pvaW5fcGF0aCgkYXNzZXRzRGlyLCAkbmFtZSk7CiAgICAgICAgICAgIGlmICghaXNfZmlsZSgkcGF0aCkpIHsKICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJHNwZWNbJ3JlcXVpcmVkJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlcG9ydFsnb2snXSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICRyZXBvcnRbJ2lzc3VlcyddW10gPSAnTWlzc2luZyAnIC4gJG5hbWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkc2l6ZSA9IEBmaWxlc2l6ZSgkcGF0aCk7CiAgICAgICAgICAgIGlmICgkc2l6ZSAhPT0gZmFsc2UgJiYgJHNpemUgPiAoaW50KSAkc3BlY1snbWF4J10pIHsKICAgICAgICAgICAgICAgICRyZXBvcnRbJ29rJ10gPSBmYWxzZTsKICAgICAgICAgICAgICAgICRyZXBvcnRbJ2lzc3VlcyddW10gPSAkbmFtZSAuICcgZXhjZWVkcyBtYXggc2l6ZSAoJyAuICRzaXplIC4gJyBieXRlcyknOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRkaW1zID0gQGdldGltYWdlc2l6ZSgkcGF0aCk7CiAgICAgICAgICAgIGlmICghaXNfYXJyYXkoJGRpbXMpKSB7CiAgICAgICAgICAgICAgICAkcmVwb3J0WydvayddID0gZmFsc2U7CiAgICAgICAgICAgICAgICAkcmVwb3J0Wydpc3N1ZXMnXVtdID0gJG5hbWUgLiAnIGlzIG5vdCBhIHJlYWRhYmxlIGltYWdlJzsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpc3NldCgkc3BlY1sndyddKSAmJiAoJGRpbXNbMF0gIT09IChpbnQpICRzcGVjWyd3J10gfHwgJGRpbXNbMV0gIT09IChpbnQpICRzcGVjWydoJ10pKSB7CiAgICAgICAgICAgICAgICAkcmVwb3J0WydvayddID0gZmFsc2U7CiAgICAgICAgICAgICAgICAkcmVwb3J0Wydpc3N1ZXMnXVtdID0gJG5hbWUgLiAnIGV4cGVjdGVkICcgLiAkc3BlY1sndyddIC4gJ3gnIC4gJHNwZWNbJ2gnXSAuICcsIGdvdCAnIC4gJGRpbXNbMF0gLiAneCcgLiAkZGltc1sxXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNzZXQoJHNwZWNbJ21pbl93J10pICYmICRkaW1zWzBdIDwgKGludCkgJHNwZWNbJ21pbl93J10pIHsKICAgICAgICAgICAgICAgICRyZXBvcnRbJ29rJ10gPSBmYWxzZTsKICAgICAgICAgICAgICAgICRyZXBvcnRbJ2lzc3VlcyddW10gPSAkbmFtZSAuICcgd2lkdGggJyAuICRkaW1zWzBdIC4gJyBiZWxvdyBtaW5pbXVtICcgLiAkc3BlY1snbWluX3cnXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNzZXQoJHNwZWNbJ21heF93J10pICYmICRkaW1zWzBdID4gKGludCkgJHNwZWNbJ21heF93J10pIHsKICAgICAgICAgICAgICAgICRyZXBvcnRbJ29rJ10gPSBmYWxzZTsKICAgICAgICAgICAgICAgICRyZXBvcnRbJ2lzc3VlcyddW10gPSAkbmFtZSAuICcgd2lkdGggJyAuICRkaW1zWzBdIC4gJyBhYm92ZSBtYXhpbXVtICcgLiAkc3BlY1snbWF4X3cnXTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcmVwb3J0WydmaWxlcyddWyRuYW1lXSA9ICRkaW1zWzBdIC4gJ3gnIC4gJGRpbXNbMV07CiAgICAgICAgfQoKICAgICAgICAkc3ZnID0gY21zX2pvaW5fcGF0aCgkYXNzZXRzRGlyLCAnaWNvbi5zdmcnKTsKICAgICAgICBpZiAoaXNfZmlsZSgkc3ZnKSAmJiAhaXNfZmlsZShjbXNfam9pbl9wYXRoKCRhc3NldHNEaXIsICdpY29uLTEyOHgxMjgucG5nJykpKSB7CiAgICAgICAgICAgICRyZXBvcnRbJ29rJ10gPSBmYWxzZTsKICAgICAgICAgICAgJHJlcG9ydFsnaXNzdWVzJ11bXSA9ICdpY29uLnN2ZyBwcmVzZW50IGJ1dCBpY29uLTEyOHgxMjgucG5nIG1pc3NpbmcgKEZvcmdlIHJlcXVpcmVzIFBORyBmYWxsYmFjayknOwogICAgICAgIH0KCiAgICAgICAgJGdpZiA9IGNtc19qb2luX3BhdGgoJG1vZHVsZVBhdGgsICdpbWFnZXMnLCAnaWNvbi5naWYnKTsKICAgICAgICBpZiAoaXNfZmlsZSgkZ2lmKSkgewogICAgICAgICAgICAkZyA9IEBnZXRpbWFnZXNpemUoJGdpZik7CiAgICAgICAgICAgIGlmICghaXNfYXJyYXkoJGcpIHx8ICRnWzBdIDwgMTYgfHwgJGdbMF0gPiA0OCB8fCAkZ1sxXSA8IDE2IHx8ICRnWzFdID4gNDgpIHsKICAgICAgICAgICAgICAgICRyZXBvcnRbJ29rJ10gPSBmYWxzZTsKICAgICAgICAgICAgICAgICRyZXBvcnRbJ2lzc3VlcyddW10gPSAnUnVudGltZSBpY29uLmdpZiBpbnZhbGlkIHNpemU6ICcgLiAoaXNfYXJyYXkoJGcpID8gJGdbMF0gLiAneCcgLiAkZ1sxXSA6ICd1bnJlYWRhYmxlJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVwb3J0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkbW9kdWxlUGF0aAogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXNvbHZlSWNvblNvdXJjZSgkbW9kdWxlUGF0aCkKICAgIHsKICAgICAgICAkaW1hZ2VzRGlyID0gY21zX2pvaW5fcGF0aCgkbW9kdWxlUGF0aCwgJ2ltYWdlcycpOwogICAgICAgICRhc3NldHNEaXIgPSBjbXNfam9pbl9wYXRoKCRtb2R1bGVQYXRoLCAnYXNzZXRzJyk7CiAgICAgICAgJGNhbmRpZGF0ZXMgPSBhcnJheSgKICAgICAgICAgICAgY21zX2pvaW5fcGF0aCgkaW1hZ2VzRGlyLCAnaWNvbi01MTIucG5nJyksCiAgICAgICAgICAgIGNtc19qb2luX3BhdGgoJGltYWdlc0RpciwgJ2ljb24tMTkyLnBuZycpLAogICAgICAgICAgICBjbXNfam9pbl9wYXRoKCRpbWFnZXNEaXIsICdJY29uLnBuZycpLAogICAgICAgICAgICBjbXNfam9pbl9wYXRoKCRpbWFnZXNEaXIsICdpY29uLnBuZycpLAogICAgICAgICAgICBjbXNfam9pbl9wYXRoKCRtb2R1bGVQYXRoLCAnaWNvbi5wbmcnKSwKICAgICAgICAgICAgY21zX2pvaW5fcGF0aCgkbW9kdWxlUGF0aCwgJ2ljb25zJywgJ2ljb24ucG5nJyksCiAgICAgICAgICAgIGNtc19qb2luX3BhdGgoJGltYWdlc0RpciwgJ2ljb24uZ2lmJyksCiAgICAgICAgICAgIGNtc19qb2luX3BhdGgoJGFzc2V0c0RpciwgJ2ljb24tMjU2eDI1Ni5wbmcnKSwKICAgICAgICAgICAgY21zX2pvaW5fcGF0aCgkYXNzZXRzRGlyLCAnaWNvbi0xMjh4MTI4LnBuZycpLAogICAgICAgICk7CiAgICAgICAgZm9yZWFjaCAoJGNhbmRpZGF0ZXMgYXMgJHBhdGgpIHsKICAgICAgICAgICAgaWYgKGlzX2ZpbGUoJHBhdGgpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHBhdGg7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICcnOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkbW9kdWxlUGF0aAogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXNvbHZlQmFubmVyU291cmNlKCRtb2R1bGVQYXRoKQogICAgewogICAgICAgICRpbWFnZXNEaXIgPSBjbXNfam9pbl9wYXRoKCRtb2R1bGVQYXRoLCAnaW1hZ2VzJyk7CiAgICAgICAgJGNhbmRpZGF0ZXMgPSBhcnJheSgKICAgICAgICAgICAgY21zX2pvaW5fcGF0aCgkaW1hZ2VzRGlyLCAnQmFubmVyLnBuZycpLAogICAgICAgICAgICBjbXNfam9pbl9wYXRoKCRpbWFnZXNEaXIsICdiYW5uZXIxLnBuZycpLAogICAgICAgICAgICBjbXNfam9pbl9wYXRoKCRpbWFnZXNEaXIsICdiYW5uZXIucG5nJyksCiAgICAgICAgKTsKICAgICAgICBmb3JlYWNoICgkY2FuZGlkYXRlcyBhcyAkcGF0aCkgewogICAgICAgICAgICBpZiAoaXNfZmlsZSgkcGF0aCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkcGF0aDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJyc7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZXRlY3RJbWFnZUJhY2tncm91bmRDb2xvcigkaW1hZ2VTcmMpCiAgICB7CiAgICAgICAgcmV0dXJuIE1hc19Gb3JnZV9Bc3NldEltYWdlczo6ZGV0ZWN0SW1hZ2VCYWNrZ3JvdW5kQ29sb3IoJGltYWdlU3JjKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuc3VyZVBsYWNlaG9sZGVyU2NyZWVuc2hvdHMoJG1vZCwgYXJyYXkgJGxhYmVscyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgcmV0dXJuIE1hc19Gb3JnZV9Bc3NldEltYWdlczo6ZW5zdXJlUGxhY2Vob2xkZXJTY3JlZW5zaG90cygkbW9kLCAkbGFiZWxzKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuc3VyZUFjY2Vzc2liaWxpdHlNYXN0ZXJzKCRtb2QpCiAgICB7CiAgICAgICAgcmV0dXJuIE1hc19Gb3JnZV9Bc3NldEltYWdlczo6ZW5zdXJlQWNjZXNzaWJpbGl0eU1hc3RlcnMoJG1vZCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/lib/mas_forge_asset_images.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEltYWdlIGdlbmVyYXRpb24gaGVscGVycyBmb3IgTWFzX0ZvcmdlX0Fzc2V0cyAoRm9yZ2UgaWNvbnMsIGJhbm5lcnMsIHNjcmVlbnNob3RzKS4KICoKICogQHBhY2thZ2UgTUFTX0NvbW1vbgogKi8KCmlmICghZGVmaW5lZCgnTUFTX0ZPUkdFX0FTU0VUX0lNQUdFU19MT0FERUQnKSkgewogICAgZGVmaW5lKCdNQVNfRk9SR0VfQVNTRVRfSU1BR0VTX0xPQURFRCcsIHRydWUpOwp9CgpmaW5hbCBjbGFzcyBNYXNfRm9yZ2VfQXNzZXRJbWFnZXMKewogICAgLyoqCiAgICAgKiBEZXRlY3QgYSBzb2xpZCBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gb3BhcXVlIHBpeGVscyAocm91bmRlZCBpY29ucyBvbiB0cmFuc3BhcmVuY3kpLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGltYWdlU3JjCiAgICAgKiBAcmV0dXJuIHN0cmluZyBDU1MgaGV4IGNvbG9yCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGV0ZWN0SW1hZ2VCYWNrZ3JvdW5kQ29sb3IoJGltYWdlU3JjKQogICAgewogICAgICAgICRzaXplID0gQGdldGltYWdlc2l6ZSgkaW1hZ2VTcmMpOwogICAgICAgIGlmICghaXNfYXJyYXkoJHNpemUpIHx8IGVtcHR5KCRzaXplWzBdKSB8fCBlbXB0eSgkc2l6ZVsxXSkpIHsKICAgICAgICAgICAgcmV0dXJuICcjZmZmZmZmJzsKICAgICAgICB9CiAgICAgICAgJHcgPSAoaW50KSAkc2l6ZVswXTsKICAgICAgICAkaCA9IChpbnQpICRzaXplWzFdOwogICAgICAgICRwb2ludHMgPSBhcnJheSgKICAgICAgICAgICAgYXJyYXkoKGludCkgcm91bmQoJHcgKiAwLjEyKSwgKGludCkgcm91bmQoJGggKiAwLjUwKSksCiAgICAgICAgICAgIGFycmF5KChpbnQpIHJvdW5kKCR3ICogMC41MCksIChpbnQpIHJvdW5kKCRoICogMC4xMikpLAogICAgICAgICAgICBhcnJheSgoaW50KSByb3VuZCgkdyAqIDAuODgpLCAoaW50KSByb3VuZCgkaCAqIDAuNTApKSwKICAgICAgICAgICAgYXJyYXkoKGludCkgcm91bmQoJHcgKiAwLjUwKSwgKGludCkgcm91bmQoJGggKiAwLjg4KSksCiAgICAgICAgICAgIGFycmF5KChpbnQpIHJvdW5kKCR3ICogMC4xOCksIChpbnQpIHJvdW5kKCRoICogMC4xOCkpLAogICAgICAgICAgICBhcnJheSgoaW50KSByb3VuZCgkdyAqIDAuODIpLCAoaW50KSByb3VuZCgkaCAqIDAuMTgpKSwKICAgICAgICAgICAgYXJyYXkoKGludCkgcm91bmQoJHcgKiAwLjE4KSwgKGludCkgcm91bmQoJGggKiAwLjgyKSksCiAgICAgICAgICAgIGFycmF5KChpbnQpIHJvdW5kKCR3ICogMC44MiksIChpbnQpIHJvdW5kKCRoICogMC44MikpLAogICAgICAgICk7CiAgICAgICAgZm9yZWFjaCAoJHBvaW50cyBhcyAkcHQpIHsKICAgICAgICAgICAgJHggPSAoaW50KSAkcHRbMF07CiAgICAgICAgICAgICR5ID0gKGludCkgJHB0WzFdOwogICAgICAgICAgICBpZiAoJHggPCAwIHx8ICR5IDwgMCB8fCAkeCA+PSAkdyB8fCAkeSA+PSAkaCkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGFscGhhQ21kID0gJ2NvbnZlcnQgJyAuIGVzY2FwZXNoZWxsYXJnKCRpbWFnZVNyYykKICAgICAgICAgICAgICAgIC4gJyAtZm9ybWF0ICIlW2Z4OnUucHsnIC4gJHggLiAnLCcgLiAkeSAuICd9LmFdIiBpbmZvOiAyPi9kZXYvbnVsbCc7CiAgICAgICAgICAgICRhbHBoYU91dCA9IGFycmF5KCk7CiAgICAgICAgICAgIEBleGVjKCRhbHBoYUNtZCwgJGFscGhhT3V0LCAkYWxwaGFDb2RlKTsKICAgICAgICAgICAgJGFscGhhID0gKCRhbHBoYUNvZGUgPT09IDAgJiYgaXNzZXQoJGFscGhhT3V0WzBdKSkgPyAoZmxvYXQpICRhbHBoYU91dFswXSA6IDAuMDsKICAgICAgICAgICAgaWYgKCRhbHBoYSA8IDAuNSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGNvbG9yQ21kID0gJ2NvbnZlcnQgJyAuIGVzY2FwZXNoZWxsYXJnKCRpbWFnZVNyYykKICAgICAgICAgICAgICAgIC4gJyAtZm9ybWF0ICIlW2hleDp1LnB7JyAuICR4IC4gJywnIC4gJHkgLiAnfV0iIGluZm86IDI+L2Rldi9udWxsJzsKICAgICAgICAgICAgJGNvbG9yT3V0ID0gYXJyYXkoKTsKICAgICAgICAgICAgQGV4ZWMoJGNvbG9yQ21kLCAkY29sb3JPdXQsICRjb2xvckNvZGUpOwogICAgICAgICAgICBpZiAoJGNvbG9yQ29kZSAhPT0gMCB8fCBlbXB0eSgkY29sb3JPdXRbMF0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkaGV4ID0gc3RydG9sb3dlcihsdHJpbSgoc3RyaW5nKSAkY29sb3JPdXRbMF0sICcjJykpOwogICAgICAgICAgICBpZiAoc3RybGVuKCRoZXgpID09PSA4KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJyMnIC4gc3Vic3RyKCRoZXgsIDAsIDYpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChzdHJsZW4oJGhleCkgPT09IDYpIHsKICAgICAgICAgICAgICAgIHJldHVybiAnIycgLiAkaGV4OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAnI2ZmZmZmZic7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhc3NldHNEaXIKICAgICAqIEBwYXJhbSBzdHJpbmcgJGljb25TcmMKICAgICAqIEBwYXJhbSBhcnJheTxpbnQsc3RyaW5nPiAkZXJyb3JzCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZW5lcmF0ZUZvcmdlSWNvbnMoJGFzc2V0c0RpciwgJGljb25TcmMsIGFycmF5ICYkZXJyb3JzKQogICAgewogICAgICAgICRvayA9IHRydWU7CiAgICAgICAgJHRhcmdldHMgPSBhcnJheSgKICAgICAgICAgICAgJ2ljb24tMTI4eDEyOC5wbmcnID0+ICcxMjh4MTI4JywKICAgICAgICAgICAgJ2ljb24tMjU2eDI1Ni5wbmcnID0+ICcyNTZ4MjU2JywKICAgICAgICApOwogICAgICAgIGZvcmVhY2ggKCR0YXJnZXRzIGFzICRmaWxlID0+ICRkaW0pIHsKICAgICAgICAgICAgJGRlc3QgPSBjbXNfam9pbl9wYXRoKCRhc3NldHNEaXIsICRmaWxlKTsKICAgICAgICAgICAgaWYgKCFzZWxmOjpmbGF0dGVuUmVzaXplVG9HZW9tZXRyeSgkaWNvblNyYywgJGRpbSwgJGRlc3QpKSB7CiAgICAgICAgICAgICAgICAkZXJyb3JzW10gPSAnRmFpbGVkIHRvIGdlbmVyYXRlICcgLiAkZmlsZTsKICAgICAgICAgICAgICAgICRvayA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb2s7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhc3NldHNEaXIKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJhbm5lclNyYwogICAgICogQHBhcmFtIGFycmF5PGludCxzdHJpbmc+ICRlcnJvcnMKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdlbmVyYXRlRm9yZ2VCYW5uZXJzKCRhc3NldHNEaXIsICRiYW5uZXJTcmMsIGFycmF5ICYkZXJyb3JzKQogICAgewogICAgICAgICRvayA9IHRydWU7CiAgICAgICAgJHN0YW5kYXJkID0gY21zX2pvaW5fcGF0aCgkYXNzZXRzRGlyLCAnYmFubmVyLTc3MngyNTAucG5nJyk7CiAgICAgICAgaWYgKCFzZWxmOjpmbGF0dGVuUmVzaXplVG9HZW9tZXRyeSgkYmFubmVyU3JjLCAnNzcyeDI1MCcsICRzdGFuZGFyZCkpIHsKICAgICAgICAgICAgJGVycm9yc1tdID0gJ0ZhaWxlZCB0byBnZW5lcmF0ZSBiYW5uZXItNzcyeDI1MC5wbmcnOwogICAgICAgICAgICAkb2sgPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRyZXRpbmEgPSBjbXNfam9pbl9wYXRoKCRhc3NldHNEaXIsICdiYW5uZXItMTU0NHg1MDAucG5nJyk7CiAgICAgICAgJHNyY0ZvclJldGluYSA9IGlzX2ZpbGUoJHN0YW5kYXJkKSA/ICRzdGFuZGFyZCA6ICRiYW5uZXJTcmM7CiAgICAgICAgaWYgKCFzZWxmOjpmbGF0dGVuUmVzaXplVG9HZW9tZXRyeSgkc3JjRm9yUmV0aW5hLCAnMTU0NHg1MDAnLCAkcmV0aW5hKSkgewogICAgICAgICAgICAkZXJyb3JzW10gPSAnRmFpbGVkIHRvIGdlbmVyYXRlIGJhbm5lci0xNTQ0eDUwMC5wbmcnOwogICAgICAgICAgICAkb2sgPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkb2s7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtb2R1bGVQYXRoCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhc3NldHNEaXIKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb3B5U3ZnSWZQcmVzZW50KCRtb2R1bGVQYXRoLCAkYXNzZXRzRGlyKQogICAgewogICAgICAgICRkZXN0ID0gY21zX2pvaW5fcGF0aCgkYXNzZXRzRGlyLCAnaWNvbi5zdmcnKTsKICAgICAgICBpZiAoaXNfZmlsZSgkZGVzdCkpIHsKICAgICAgICAgICAgc2VsZjo6ZmluYWxpemVGaWxlKCRkZXN0KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkY2FuZGlkYXRlcyA9IGFycmF5KAogICAgICAgICAgICBjbXNfam9pbl9wYXRoKCRtb2R1bGVQYXRoLCAnaW1hZ2VzJywgJ2ljb24uc3ZnJyksCiAgICAgICAgKTsKICAgICAgICBmb3JlYWNoICgkY2FuZGlkYXRlcyBhcyAkcGF0aCkgewogICAgICAgICAgICBpZiAoaXNfZmlsZSgkcGF0aCkpIHsKICAgICAgICAgICAgICAgIGNvcHkoJHBhdGgsICRkZXN0KTsKICAgICAgICAgICAgICAgIHNlbGY6OmZpbmFsaXplRmlsZSgkZGVzdCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBGb3JnZSBzY3JlZW5zaG90cyBmcm9tIGJhbm5lciArIG1vZHVsZSBsYWJlbCB3aGVuIGxpdmUgY2FwdHVyZSBpcyB1bmF2YWlsYWJsZS4KICAgICAqCiAgICAgKiBAcGFyYW0gJG1vZAogICAgICogQHBhcmFtIGFycmF5PGludCxzdHJpbmc+ICRsYWJlbHMKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuc3VyZVBsYWNlaG9sZGVyU2NyZWVuc2hvdHMoJG1vZCwgYXJyYXkgJGxhYmVscyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgJG1vZHVsZVBhdGggPSBNYXNfQWRtaW5fVWk6Om1vZHVsZVBhdGgoJG1vZCk7CiAgICAgICAgJGFzc2V0c0RpciA9IGNtc19qb2luX3BhdGgoJG1vZHVsZVBhdGgsICdhc3NldHMnKTsKICAgICAgICBpZiAoIWlzX2RpcigkYXNzZXRzRGlyKSkgewogICAgICAgICAgICBta2RpcigkYXNzZXRzRGlyLCAwNzU1LCB0cnVlKTsKICAgICAgICB9CgogICAgICAgICRiYW5uZXJTcmMgPSBNYXNfRm9yZ2VfQXNzZXRzOjpyZXNvbHZlQmFubmVyU291cmNlKCRtb2R1bGVQYXRoKTsKICAgICAgICBpZiAoJGJhbm5lclNyYyA9PT0gJycgJiYgaXNfZmlsZShjbXNfam9pbl9wYXRoKCRhc3NldHNEaXIsICdiYW5uZXItNzcyeDI1MC5wbmcnKSkpIHsKICAgICAgICAgICAgJGJhbm5lclNyYyA9IGNtc19qb2luX3BhdGgoJGFzc2V0c0RpciwgJ2Jhbm5lci03NzJ4MjUwLnBuZycpOwogICAgICAgIH0KICAgICAgICBpZiAoJGJhbm5lclNyYyA9PT0gJycpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKGNvdW50KCRsYWJlbHMpIDwgMykgewogICAgICAgICAgICAkbGFiZWxzID0gYXJyYXkoCiAgICAgICAgICAgICAgICBzZWxmOjpkZWZhdWx0U2NyZWVuc2hvdExhYmVsKCRtb2QsIDEpLAogICAgICAgICAgICAgICAgc2VsZjo6ZGVmYXVsdFNjcmVlbnNob3RMYWJlbCgkbW9kLCAyKSwKICAgICAgICAgICAgICAgIHNlbGY6OmRlZmF1bHRTY3JlZW5zaG90TGFiZWwoJG1vZCwgMyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkbmFtZSA9ICRtb2QtPkdldEZyaWVuZGx5TmFtZSgpOwogICAgICAgIGlmICgkbmFtZSA9PT0gJycpIHsKICAgICAgICAgICAgJG5hbWUgPSAkbW9kLT5HZXROYW1lKCk7CiAgICAgICAgfQogICAgICAgICRvayA9IHRydWU7CiAgICAgICAgZm9yICgkaSA9IDE7ICRpIDw9IDM7ICRpKyspIHsKICAgICAgICAgICAgJGRlc3QgPSBjbXNfam9pbl9wYXRoKCRhc3NldHNEaXIsICdzY3JlZW5zaG90LScgLiAkaSAuICcucG5nJyk7CiAgICAgICAgICAgIGlmIChpc19maWxlKCRkZXN0KSkgewogICAgICAgICAgICAgICAgJGRpbXMgPSBAZ2V0aW1hZ2VzaXplKCRkZXN0KTsKICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkZGltcykgJiYgJGRpbXNbMF0gPj0gODAwICYmICRkaW1zWzBdIDw9IDE5MjApIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkbGFiZWwgPSBpc3NldCgkbGFiZWxzWyRpIC0gMV0pID8gKHN0cmluZykgJGxhYmVsc1skaSAtIDFdIDogKCdTY3JlZW5zaG90ICcgLiAkaSk7CiAgICAgICAgICAgICR0bXAgPSAkZGVzdCAuICcudG1wLnBuZyc7CiAgICAgICAgICAgICRjbWQgPSAnY29udmVydCAtc2l6ZSAxMjAweDY3NSBjYW52YXM6I2Y0ZjZmOCAnCiAgICAgICAgICAgICAgICAuIGVzY2FwZXNoZWxsYXJnKCRiYW5uZXJTcmMpIC4gJyAtZ3Jhdml0eSBub3J0aCAtZ2VvbWV0cnkgKzArNDAgLWNvbXBvc2l0ZSAnCiAgICAgICAgICAgICAgICAuICctZ3Jhdml0eSBjZW50ZXIgLXBvaW50c2l6ZSAyOCAtZmlsbCAiIzIyMjIyMiIgLWFubm90YXRlICswKzEyMCAnCiAgICAgICAgICAgICAgICAuIGVzY2FwZXNoZWxsYXJnKCRuYW1lKQogICAgICAgICAgICAgICAgLiAnIC1ncmF2aXR5IHNvdXRoIC1wb2ludHNpemUgMjIgLWZpbGwgIiM1NTU1NTUiIC1hbm5vdGF0ZSArMCs4MCAnCiAgICAgICAgICAgICAgICAuIGVzY2FwZXNoZWxsYXJnKCRsYWJlbCkKICAgICAgICAgICAgICAgIC4gJyAnIC4gZXNjYXBlc2hlbGxhcmcoJHRtcCkgLiAnIDI+L2Rldi9udWxsJzsKICAgICAgICAgICAgQGV4ZWMoJGNtZCwgJG91dCwgJGNvZGUpOwogICAgICAgICAgICBpZiAoJGNvZGUgIT09IDAgfHwgIWlzX2ZpbGUoJHRtcCkpIHsKICAgICAgICAgICAgICAgICRjbWQyID0gJ2NvbnZlcnQgJyAuIGVzY2FwZXNoZWxsYXJnKCRiYW5uZXJTcmMpCiAgICAgICAgICAgICAgICAgICAgLiAnIC1yZXNpemUgMTIwMHggLWJhY2tncm91bmQgIiNmNGY2ZjgiIC1ncmF2aXR5IGNlbnRlciAtZXh0ZW50IDEyMDB4Njc1ICcKICAgICAgICAgICAgICAgICAgICAuIGVzY2FwZXNoZWxsYXJnKCR0bXApIC4gJyAyPi9kZXYvbnVsbCc7CiAgICAgICAgICAgICAgICBAZXhlYygkY21kMiwgJG91dDIsICRjb2RlMik7CiAgICAgICAgICAgICAgICBpZiAoJGNvZGUyICE9PSAwIHx8ICFpc19maWxlKCR0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgJG9rID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQHJlbmFtZSgkdG1wLCAkZGVzdCk7CiAgICAgICAgICAgIHNlbGY6OmZpbmFsaXplRmlsZSgkZGVzdCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb2s7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZW5lcmF0ZSBkZWZhdWx0IGFjY2Vzc2liaWxpdHkgbW9kdWxlIG1hc3RlcnMgKGljb24gKyBiYW5uZXIpLgogICAgICoKICAgICAqIEBwYXJhbSAkbW9kCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlbnN1cmVBY2Nlc3NpYmlsaXR5TWFzdGVycygkbW9kKQogICAgewogICAgICAgIGlmICgkbW9kLT5HZXROYW1lKCkgIT09ICdNQVNfQWNjZXNzaWJpbGl0eScpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAkaW1hZ2VzRGlyID0gY21zX2pvaW5fcGF0aChNYXNfQWRtaW5fVWk6Om1vZHVsZVBhdGgoJG1vZCksICdpbWFnZXMnKTsKICAgICAgICBpZiAoIWlzX2RpcigkaW1hZ2VzRGlyKSkgewogICAgICAgICAgICBta2RpcigkaW1hZ2VzRGlyLCAwNzU1LCB0cnVlKTsKICAgICAgICB9CiAgICAgICAgJGljb241MTIgPSBjbXNfam9pbl9wYXRoKCRpbWFnZXNEaXIsICdpY29uLTUxMi5wbmcnKTsKICAgICAgICAkYmFubmVyID0gY21zX2pvaW5fcGF0aCgkaW1hZ2VzRGlyLCAnQmFubmVyLnBuZycpOwoKICAgICAgICBpZiAoIWlzX2ZpbGUoJGljb241MTIpKSB7CiAgICAgICAgICAgICR0bXAgPSAkaWNvbjUxMiAuICcudG1wLnBuZyc7CiAgICAgICAgICAgICRjbWQgPSAnY29udmVydCAtc2l6ZSA1MTJ4NTEyIHhjOiIjMjU2M2ViIiAnCiAgICAgICAgICAgICAgICAuICctZmlsbCB3aGl0ZSAtcG9pbnRzaXplIDIyMCAtZ3Jhdml0eSBjZW50ZXIgLWFubm90YXRlICswLTMwICJBMTF5IiAnCiAgICAgICAgICAgICAgICAuICctZmlsbCB3aGl0ZSAtcG9pbnRzaXplIDcyIC1ncmF2aXR5IGNlbnRlciAtYW5ub3RhdGUgKzArMTIwICJNQVMiICcKICAgICAgICAgICAgICAgIC4gZXNjYXBlc2hlbGxhcmcoJHRtcCkgLiAnIDI+L2Rldi9udWxsJzsKICAgICAgICAgICAgQGV4ZWMoJGNtZCwgJG91dCwgJGNvZGUpOwogICAgICAgICAgICBpZiAoJGNvZGUgIT09IDAgfHwgIWlzX2ZpbGUoJHRtcCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBAcmVuYW1lKCR0bXAsICRpY29uNTEyKTsKICAgICAgICAgICAgc2VsZjo6ZmluYWxpemVGaWxlKCRpY29uNTEyKTsKICAgICAgICB9CgogICAgICAgIGlmICghaXNfZmlsZSgkYmFubmVyKSkgewogICAgICAgICAgICAkdG1wID0gJGJhbm5lciAuICcudG1wLnBuZyc7CiAgICAgICAgICAgICRjbWQgPSAnY29udmVydCAtc2l6ZSAxNTM2eDM4NCBncmFkaWVudDojMWQ0ZWQ4LSMzYjgyZjYgJwogICAgICAgICAgICAgICAgLiAnLWZpbGwgd2hpdGUgLXBvaW50c2l6ZSA3MiAtZ3Jhdml0eSB3ZXN0IC1hbm5vdGF0ZSArODArMCAiTUFTIEFjY2Vzc2liaWxpdHkiICcKICAgICAgICAgICAgICAgIC4gJy1maWxsICIjZGJlYWZlIiAtcG9pbnRzaXplIDM2IC1ncmF2aXR5IHdlc3QgLWFubm90YXRlICs4MCs5MCAiV2lkZ2V0LCBhdWRpdHMsIGFuZCBmcm9udGVuZCBhY2Nlc3NpYmlsaXR5IHRvb2xzIiAnCiAgICAgICAgICAgICAgICAuIGVzY2FwZXNoZWxsYXJnKCR0bXApIC4gJyAyPi9kZXYvbnVsbCc7CiAgICAgICAgICAgIEBleGVjKCRjbWQsICRvdXQsICRjb2RlKTsKICAgICAgICAgICAgaWYgKCRjb2RlICE9PSAwIHx8ICFpc19maWxlKCR0bXApKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQHJlbmFtZSgkdG1wLCAkYmFubmVyKTsKICAgICAgICAgICAgc2VsZjo6ZmluYWxpemVGaWxlKCRiYW5uZXIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGlzX2ZpbGUoJGljb241MTIpICYmIGlzX2ZpbGUoJGJhbm5lcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpbWFnZVNyYwogICAgICogQHBhcmFtIHN0cmluZyAkZ2VvbWV0cnkKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRlc3QKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBmbGF0dGVuUmVzaXplVG9HZW9tZXRyeSgkaW1hZ2VTcmMsICRnZW9tZXRyeSwgJGRlc3QpCiAgICB7CiAgICAgICAgJGJnID0gc2VsZjo6ZGV0ZWN0SW1hZ2VCYWNrZ3JvdW5kQ29sb3IoJGltYWdlU3JjKTsKICAgICAgICAkdG1wID0gJGRlc3QgLiAnLnRtcC5wbmcnOwogICAgICAgICRjbWQgPSAnY29udmVydCAnIC4gZXNjYXBlc2hlbGxhcmcoJGltYWdlU3JjKQogICAgICAgICAgICAuICcgLWJhY2tncm91bmQgJyAuIGVzY2FwZXNoZWxsYXJnKCRiZykKICAgICAgICAgICAgLiAnIC1yZXNpemUgJyAuICRnZW9tZXRyeSAuICdeIC1ncmF2aXR5IGNlbnRlciAtZXh0ZW50ICcgLiAkZ2VvbWV0cnkKICAgICAgICAgICAgLiAnIC1hbHBoYSBvZmYgJwogICAgICAgICAgICAuIGVzY2FwZXNoZWxsYXJnKCR0bXApIC4gJyAyPi9kZXYvbnVsbCc7CiAgICAgICAgQGV4ZWMoJGNtZCwgJG91dCwgJGNvZGUpOwogICAgICAgIGlmICgkY29kZSAhPT0gMCB8fCAhaXNfZmlsZSgkdG1wKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIEByZW5hbWUoJHRtcCwgJGRlc3QpOwogICAgICAgIHNlbGY6OmZpbmFsaXplRmlsZSgkZGVzdCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gJG1vZAogICAgICogQHBhcmFtIGludCAkaW5kZXgKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGRlZmF1bHRTY3JlZW5zaG90TGFiZWwoJG1vZCwgJGluZGV4KQogICAgewogICAgICAgICRrZXlzID0gYXJyYXkoCiAgICAgICAgICAgIDEgPT4gJ1NldHRpbmdzIHRhYiB3aXRoIG1vZHVsZSBiYW5uZXIgYW5kIG9wdGlvbnMnLAogICAgICAgICAgICAyID0+ICdQcmltYXJ5IGFkbWluIHZpZXcnLAogICAgICAgICAgICAzID0+ICdFZGl0IGZvcm0gb3IgZnJvbnRlbmQgb3V0cHV0JywKICAgICAgICApOwogICAgICAgICRrZXkgPSAnc2NyZWVuc2hvdF8nIC4gKGludCkgJGluZGV4OwogICAgICAgICR2ID0gJG1vZC0+TGFuZygka2V5KTsKICAgICAgICBpZiAoJHYgIT09ICcnICYmICR2ICE9PSAka2V5KSB7CiAgICAgICAgICAgIHJldHVybiAkdjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGlzc2V0KCRrZXlzWyRpbmRleF0pID8gJGtleXNbJGluZGV4XSA6ICgnU2NyZWVuc2hvdCAnIC4gJGluZGV4KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBhdGgKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZmluYWxpemVGaWxlKCRwYXRoKQogICAgewogICAgICAgIGlmICghaXNfZmlsZSgkcGF0aCkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjaG1vZCgkcGF0aCwgMDY0NCk7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0cHd1aWQnKSAmJiBwb3NpeF9nZXRldWlkKCkgPT09IDApIHsKICAgICAgICAgICAgQGNob3duKCRwYXRoLCAnbmV3c3QzOTIyJyk7CiAgICAgICAgICAgIEBjaGdycCgkcGF0aCwgJ25ld3N0MzkyMicpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/lib/mas_module_docs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFRhYmJlZCBIZWxwIC8gQWJvdXQgZm9yIE1BU18qIG1vZHVsZXMgKExvZ1dhdGNoLXN0eWxlLCBzaGFyZWQgc2hlbGwpLgogKgogKiBAcGFja2FnZSBNQVNfQ29tbW9uCiAqLwppZiAoIWRlZmluZWQoJ01BU19NT0RVTEVfRE9DU19MT0FERUQnKSkgewogICAgZGVmaW5lKCdNQVNfTU9EVUxFX0RPQ1NfTE9BREVEJywgdHJ1ZSk7Cn0KCnJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy9tYXNfYWRtaW5fdWkucGhwJzsKCmZpbmFsIGNsYXNzIE1hc19Nb2R1bGVfRG9jcwp7CiAgICAvKioKICAgICAqIEBwYXJhbSBDTVNNb2R1bGUgJG1vZAogICAgICogQHBhcmFtIGFycmF5PGludCxhcnJheTxzdHJpbmcsc3RyaW5nPj58bnVsbCAkdGFicyBFYWNoOiBpZCwgbGFuZywgb3B0aW9uYWwgaW5jbHVkZSAoU21hcnR5IGluY2x1ZGUgcGF0aCkKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsbWl4ZWQ+ICRleHRyYUFzc2lnbgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmZXRjaFRhYmJlZEhlbHAoQ01TTW9kdWxlICRtb2QsICR0YWJzID0gbnVsbCwgYXJyYXkgJGV4dHJhQXNzaWduID0gYXJyYXkoKSkKICAgIHsKICAgICAgICBpZiAoJHRhYnMgPT09IG51bGwpIHsKICAgICAgICAgICAgJHRhYnMgPSBzZWxmOjpkZWZhdWx0SGVscFRhYnMoJG1vZCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBzZWxmOjpmZXRjaFRhYmJlZCgkbW9kLCAnaGVscCcsICR0YWJzLCAkZXh0cmFBc3NpZ24pOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIENNU01vZHVsZSAkbW9kCiAgICAgKiBAcGFyYW0gYXJyYXk8aW50LGFycmF5PHN0cmluZyxzdHJpbmc+PnxudWxsICR0YWJzCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLG1peGVkPiAkZXh0cmFBc3NpZ24KICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZmV0Y2hUYWJiZWRBYm91dChDTVNNb2R1bGUgJG1vZCwgJHRhYnMgPSBudWxsLCBhcnJheSAkZXh0cmFBc3NpZ24gPSBhcnJheSgpKQogICAgewogICAgICAgIGlmICgkdGFicyA9PT0gbnVsbCkgewogICAgICAgICAgICAkdGFicyA9IHNlbGY6OmRlZmF1bHRBYm91dFRhYnMoJG1vZCk7CiAgICAgICAgfQogICAgICAgIGlmICghaXNzZXQoJGV4dHJhQXNzaWduWydtYXNfY2hhbmdlbG9nX2h0bWwnXSkpIHsKICAgICAgICAgICAgJGV4dHJhQXNzaWduWydtYXNfY2hhbmdlbG9nX2h0bWwnXSA9IHNlbGY6OmNoYW5nZWxvZ0h0bWwoJG1vZCk7CiAgICAgICAgfQogICAgICAgIGlmICghaXNzZXQoJGV4dHJhQXNzaWduWydtYXNfYWJvdXRfZGVwZW5kZW5jaWVzJ10pKSB7CiAgICAgICAgICAgICRleHRyYUFzc2lnblsnbWFzX2Fib3V0X2RlcGVuZGVuY2llcyddID0gc2VsZjo6ZGVwZW5kZW5jaWVzSHRtbCgkbW9kKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHNlbGY6OmZldGNoVGFiYmVkKCRtb2QsICdhYm91dCcsICR0YWJzLCAkZXh0cmFBc3NpZ24pOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIENNU01vZHVsZSAkbW9kCiAgICAgKiBAcmV0dXJuIHN0cmluZyBIVE1MCiAgICAgKi8KICAgIC8qKgogICAgICogQHBhcmFtIENNU01vZHVsZSAkbW9kCiAgICAgKiBAcmV0dXJuIHN0cmluZyBIVE1MIGxpc3Qgb3IgZW1wdHkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZXBlbmRlbmNpZXNIdG1sKENNU01vZHVsZSAkbW9kKQogICAgewogICAgICAgICRkZXBzID0gJG1vZC0+R2V0RGVwZW5kZW5jaWVzKCk7CiAgICAgICAgaWYgKCFpc19hcnJheSgkZGVwcykgfHwgY291bnQoJGRlcHMpID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICAgICAgJG91dCA9IGFycmF5KCc8dWw+Jyk7CiAgICAgICAgZm9yZWFjaCAoJGRlcHMgYXMgJG5hbWUgPT4gJHZlcikgewogICAgICAgICAgICAkb3V0W10gPSAnPGxpPjxzdHJvbmc+JyAuIGNtc19odG1sZW50aXRpZXMoKHN0cmluZykgJG5hbWUpIC4gJzwvc3Ryb25nPiAmZ3Q7PSAnCiAgICAgICAgICAgICAgICAuIGNtc19odG1sZW50aXRpZXMoKHN0cmluZykgJHZlcikgLiAnPC9saT4nOwogICAgICAgIH0KICAgICAgICAkb3V0W10gPSAnPC91bD4nOwogICAgICAgIHJldHVybiBpbXBsb2RlKCJcbiIsICRvdXQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIENNU01vZHVsZSAkbW9kCiAgICAgKiBAcmV0dXJuIHN0cmluZyBIVE1MCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hhbmdlbG9nSHRtbChDTVNNb2R1bGUgJG1vZCkKICAgIHsKICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygkbW9kLCAnR2V0Q2hhbmdlTG9nJykpIHsKICAgICAgICAgICAgJGh0bWwgPSAoc3RyaW5nKSAkbW9kLT5HZXRDaGFuZ2VMb2coKTsKICAgICAgICAgICAgaWYgKCRodG1sICE9PSAnJykgewogICAgICAgICAgICAgICAgcmV0dXJuICRodG1sOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRiYXNlRGlyID0gcmVhbHBhdGgoTWFzX0FkbWluX1VpOjptb2R1bGVQYXRoKCRtb2QpKTsKICAgICAgICBpZiAoISRiYXNlRGlyKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICAgICAgJGZpbGUgPSByZWFscGF0aChNYXNfQWRtaW5fVWk6Om1vZHVsZVBhdGgoJG1vZCkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ0NIQU5HRUxPRy5tZCcpOwogICAgICAgIGlmICghJGZpbGUgfHwgIWlzX2ZpbGUoJGZpbGUpIHx8ICFpc19yZWFkYWJsZSgkZmlsZSkgfHwgc3RycG9zKCRmaWxlLCAkYmFzZURpcikgIT09IDApIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgICAgICAkbWFya2Rvd24gPSAoKGlzX3JlYWRhYmxlKCRmaWxlKSkgPyBmaWxlX2dldF9jb250ZW50cygkZmlsZSkgOiBmYWxzZSk7CiAgICAgICAgaWYgKCRtYXJrZG93biA9PT0gZmFsc2UgfHwgJG1hcmtkb3duID09PSAnJykgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0ibWFzLWRvYy1jaGFuZ2Vsb2ciPicgLiBubDJicihjbXNfaHRtbGVudGl0aWVzKChzdHJpbmcpICRtYXJrZG93bikpIC4gJzwvZGl2Pic7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQ01TTW9kdWxlICRtb2QKICAgICAqIEByZXR1cm4gYXJyYXk8aW50LGFycmF5PHN0cmluZyxzdHJpbmc+PgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlZmF1bHRIZWxwVGFicyhDTVNNb2R1bGUgJG1vZCkKICAgIHsKICAgICAgICAkbmFtZSA9ICRtb2QtPkdldE5hbWUoKTsKICAgICAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgICAgIGFycmF5KCdpZCcgPT4gJ2dlbmVyYWwnLCAnbGFuZycgPT4gJ2hlbHBfZ2VuZXJhbCcpLAogICAgICAgICAgICBhcnJheSgnaWQnID0+ICdjb25maWd1cmF0aW9uJywgJ2xhbmcnID0+ICdoZWxwX2NvbmZpZ3VyYXRpb24nKSwKICAgICAgICAgICAgYXJyYXkoJ2lkJyA9PiAndHJvdWJsZXNob290aW5nJywgJ2xhbmcnID0+ICdoZWxwX3Ryb3VibGVzaG9vdGluZycpLAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQ01TTW9kdWxlICRtb2QKICAgICAqIEByZXR1cm4gYXJyYXk8aW50LGFycmF5PHN0cmluZyxzdHJpbmc+PgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlZmF1bHRBYm91dFRhYnMoQ01TTW9kdWxlICRtb2QpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KAogICAgICAgICAgICBhcnJheSgnaWQnID0+ICdtb2R1bGUnLCAnbGFuZycgPT4gJ2Fib3V0X3RhYl9tb2R1bGUnKSwKICAgICAgICAgICAgYXJyYXkoJ2lkJyA9PiAnY29tcGF0JywgJ2xhbmcnID0+ICdhYm91dF90YWJfY29tcGF0JyksCiAgICAgICAgICAgIGFycmF5KCdpZCcgPT4gJ3N1bW1hcnknLCAnbGFuZycgPT4gJ2Fib3V0X3RhYl9zdW1tYXJ5JyksCiAgICAgICAgICAgIGFycmF5KCdpZCcgPT4gJ2NoYW5nZWxvZycsICdsYW5nJyA9PiAnYWJvdXRfdGFiX2NoYW5nZWxvZycpLAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQ01TTW9kdWxlICRtb2QKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtpbmQgaGVscHxhYm91dAogICAgICogQHBhcmFtIGFycmF5PGludCxhcnJheTxzdHJpbmcsc3RyaW5nPj4gJHRhYnMKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsbWl4ZWQ+ICRleHRyYUFzc2lnbgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZmV0Y2hUYWJiZWQoQ01TTW9kdWxlICRtb2QsICRraW5kLCBhcnJheSAkdGFicywgYXJyYXkgJGV4dHJhQXNzaWduKQogICAgewogICAgICAgICRzbWFydHkgPSBjbXNfdXRpbHM6OmdldF9zbWFydHkoKTsKICAgICAgICBpZiAoISRzbWFydHkpIHsKICAgICAgICAgICAgcmV0dXJuICRraW5kID09PSAnaGVscCcgPyAoc3RyaW5nKSAkbW9kLT5MYW5nKCdoZWxwJykgOiAnJzsKICAgICAgICB9CiAgICAgICAgTWFzX0FkbWluX1VpOjpyZWdpc3RlclNtYXJ0eVNlY3VyZURpcnMoJHNtYXJ0eSk7CiAgICAgICAgJG1vZE5hbWUgPSAkbW9kLT5HZXROYW1lKCk7CiAgICAgICAgJHByZWZpeCA9IHByZWdfcmVwbGFjZSgnL1teYS16QS1aMC05Xy1dLycsICcnLCAkbW9kTmFtZSkgLiAnLScgLiAka2luZDsKICAgICAgICAkdGFiUm93cyA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAoJHRhYnMgYXMgJHRhYikgewogICAgICAgICAgICAkaWQgPSBpc3NldCgkdGFiWydpZCddKSA/IChzdHJpbmcpICR0YWJbJ2lkJ10gOiAndGFiJzsKICAgICAgICAgICAgJGxhbmdLZXkgPSBpc3NldCgkdGFiWydsYW5nJ10pID8gKHN0cmluZykgJHRhYlsnbGFuZyddIDogJGlkOwogICAgICAgICAgICAkaW5jbHVkZSA9IGlzc2V0KCR0YWJbJ2luY2x1ZGUnXSkgPyAoc3RyaW5nKSAkdGFiWydpbmNsdWRlJ10gOiAnJzsKICAgICAgICAgICAgaWYgKCRpbmNsdWRlID09PSAnJykgewogICAgICAgICAgICAgICAgJGluY2x1ZGUgPSBzZWxmOjpyZXNvbHZlVGFiSW5jbHVkZSgkbW9kLCAka2luZCwgJGlkKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkbGFiZWwgPSAkbW9kLT5MYW5nKCRsYW5nS2V5KTsKICAgICAgICAgICAgaWYgKCRsYWJlbCA9PT0gJycgfHwgJGxhYmVsID09PSAkbGFuZ0tleSkgewogICAgICAgICAgICAgICAgJGxhYmVsID0gdWNmaXJzdChzdHJfcmVwbGFjZSgnXycsICcgJywgJGxhbmdLZXkpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGFiUm93c1tdID0gYXJyYXkoCiAgICAgICAgICAgICAgICAnaWQnID0+ICRwcmVmaXggLiAnLScgLiAkaWQsCiAgICAgICAgICAgICAgICAnbGFiZWwnID0+ICRsYWJlbCwKICAgICAgICAgICAgICAgICdpbmNsdWRlJyA9PiAkaW5jbHVkZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJHRwbFBhdGggPSBNYXNfQWRtaW5fVWk6OmNvbW1vblBhdGgoKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAndGVtcGxhdGVzJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnbWFzX3RhYmJlZF9kb2NzLnRwbCc7CiAgICAgICAgaWYgKCFpc19maWxlKCR0cGxQYXRoKSkgewogICAgICAgICAgICByZXR1cm4gJGtpbmQgPT09ICdoZWxwJyA/IChzdHJpbmcpICRtb2QtPkxhbmcoJ2hlbHAnKSA6ICcnOwogICAgICAgIH0KICAgICAgICAkdHBsID0gJHNtYXJ0eS0+Y3JlYXRlVGVtcGxhdGUoJHRwbFBhdGgpOwogICAgICAgICR0cGwtPmFzc2lnbignbW9kJywgJG1vZCk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdtYXNfZG9jX2tpbmQnLCAka2luZCk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdtYXNfZG9jX3RhYnMnLCAkdGFiUm93cyk7CiAgICAgICAgZm9yZWFjaCAoJGV4dHJhQXNzaWduIGFzICRrZXkgPT4gJHZhbCkgewogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJGtleSwgJHZhbCk7CiAgICAgICAgfQogICAgICAgICRzbWFydHktPmFzc2lnbignbW9kJywgJG1vZCk7CiAgICAgICAgcmV0dXJuIChzdHJpbmcpICR0cGwtPmZldGNoKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBQcmVmZXIgbW9kdWxlIHRhYiB0cGwsIHRoZW4gTUFTX0NvbW1vbiBkZWZhdWx0LgogICAgICoKICAgICAqIEBwYXJhbSBDTVNNb2R1bGUgJG1vZAogICAgICogQHBhcmFtIHN0cmluZyAka2luZCBoZWxwfGFib3V0CiAgICAgKiBAcGFyYW0gc3RyaW5nICRpZCBUYWIgaWQKICAgICAqIEByZXR1cm4gc3RyaW5nIFNtYXJ0eSBpbmNsdWRlIHBhdGgKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcmVzb2x2ZVRhYkluY2x1ZGUoQ01TTW9kdWxlICRtb2QsICRraW5kLCAkaWQpCiAgICB7CiAgICAgICAgJG1vZE5hbWUgPSAkbW9kLT5HZXROYW1lKCk7CiAgICAgICAgJG1vZHVsZVRwbCA9ICdoZWxwXycgLiAkaWQgLiAnX3RhYi50cGwnOwogICAgICAgIGlmICgka2luZCA9PT0gJ2Fib3V0JykgewogICAgICAgICAgICAkbW9kdWxlVHBsID0gJ2Fib3V0XycgLiAkaWQgLiAnX3RhYi50cGwnOwogICAgICAgIH0KICAgICAgICAkbW9kdWxlUGF0aCA9IGNtc19qb2luX3BhdGgoTWFzX0FkbWluX1VpOjptb2R1bGVQYXRoKCRtb2QpLCAndGVtcGxhdGVzJywgJG1vZHVsZVRwbCk7CiAgICAgICAgaWYgKGlzX2ZpbGUoJG1vZHVsZVBhdGgpKSB7CiAgICAgICAgICAgIHJldHVybiAnbW9kdWxlX2ZpbGVfdHBsOicgLiAkbW9kTmFtZSAuICc7JyAuICRtb2R1bGVUcGw7CiAgICAgICAgfQogICAgICAgICRjb21tb25UcGwgPSAoJGtpbmQgPT09ICdhYm91dCcgPyAnYWJvdXRfJyA6ICdoZWxwXycpIC4gJGlkIC4gJ190YWIudHBsJzsKICAgICAgICAkY29tbW9uUGF0aCA9IGNtc19qb2luX3BhdGgoTWFzX0FkbWluX1VpOjpjb21tb25QYXRoKCksICd0ZW1wbGF0ZXMnLCAkY29tbW9uVHBsKTsKICAgICAgICBpZiAoaXNfZmlsZSgkY29tbW9uUGF0aCkpIHsKICAgICAgICAgICAgcmV0dXJuICRjb21tb25QYXRoOwogICAgICAgIH0KICAgICAgICAkZmFsbGJhY2tQYXRoID0gY21zX2pvaW5fcGF0aChNYXNfQWRtaW5fVWk6OmNvbW1vblBhdGgoKSwgJ3RlbXBsYXRlcycsICdoZWxwX2ZhbGxiYWNrX3RhYi50cGwnKTsKICAgICAgICBpZiAoaXNfZmlsZSgkZmFsbGJhY2tQYXRoKSkgewogICAgICAgICAgICByZXR1cm4gJGZhbGxiYWNrUGF0aDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICdtb2R1bGVfZmlsZV90cGw6JyAuICRtb2ROYW1lIC4gJztoZWxwX2dlbmVyYWxfdGFiLnRwbCc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/lib/mas_smarty_secure.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJlZ2lzdGVyIGJ1bmRsZWQgbWFzX2NvbW1vbiB0ZW1wbGF0ZSBkaXJlY3Rvcnkgd2l0aCBTbWFydHkgc2VjdXJpdHkgcG9saWN5LgogKgogKiBAcGFja2FnZSBNQVNfQ29tbW9uCiAqLwppZiAoIWRlZmluZWQoJ01BU19TTUFSVFlfU0VDVVJFX0xPQURFRCcpKSB7CiAgICBkZWZpbmUoJ01BU19TTUFSVFlfU0VDVVJFX0xPQURFRCcsIHRydWUpOwp9CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWFzX2NvbW1vbl9yZWdpc3Rlcl9zbWFydHlfc2VjdXJlX2RpcnMnKSkgewogICAgLyoqCiAgICAgKiBAcGFyYW0gU21hcnR5X0NNU3xudWxsICRzbWFydHkKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkY29tbW9uUGF0aCBCdW5kbGVkIG1hc19jb21tb24gcm9vdDsgZGVmYXVsdHMgdmlhIE1hc19BZG1pbl9VaSB3aGVuIGxvYWRlZC4KICAgICAqLwogICAgZnVuY3Rpb24gbWFzX2NvbW1vbl9yZWdpc3Rlcl9zbWFydHlfc2VjdXJlX2RpcnMoJHNtYXJ0eSA9IG51bGwsICRjb21tb25QYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJHNtYXJ0eSA9PT0gbnVsbCkgewogICAgICAgICAgICAkc21hcnR5ID0gY21zX3V0aWxzOjpnZXRfc21hcnR5KCk7CiAgICAgICAgfQogICAgICAgIGlmICghJHNtYXJ0eSB8fCAhaXNzZXQoJHNtYXJ0eS0+c2VjdXJpdHlfcG9saWN5KSB8fCAhaXNfb2JqZWN0KCRzbWFydHktPnNlY3VyaXR5X3BvbGljeSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoJGNvbW1vblBhdGggPT09IG51bGwgJiYgY2xhc3NfZXhpc3RzKCdNYXNfQWRtaW5fVWknLCBmYWxzZSkpIHsKICAgICAgICAgICAgJGNvbW1vblBhdGggPSBNYXNfQWRtaW5fVWk6OmNvbW1vblBhdGgoKTsKICAgICAgICB9CiAgICAgICAgaWYgKCRjb21tb25QYXRoID09PSBudWxsIHx8ICRjb21tb25QYXRoID09PSAnJykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICR0cGxEaXIgPSByZWFscGF0aCgkY29tbW9uUGF0aCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAndGVtcGxhdGVzJyk7CiAgICAgICAgaWYgKCEkdHBsRGlyIHx8ICFpc19kaXIoJHRwbERpcikpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkdHBsRGlyID0gcnRyaW0oJHRwbERpciwgRElSRUNUT1JZX1NFUEFSQVRPUikgLiBESVJFQ1RPUllfU0VQQVJBVE9SOwogICAgICAgICRwb2xpY3kgPSAkc21hcnR5LT5zZWN1cml0eV9wb2xpY3k7CiAgICAgICAgJHNlY3VyZSA9ICRwb2xpY3ktPnNlY3VyZV9kaXI7CiAgICAgICAgaWYgKCRzZWN1cmUgPT09IG51bGwpIHsKICAgICAgICAgICAgJHNlY3VyZSA9IGFycmF5KCk7CiAgICAgICAgfSBlbHNlaWYgKCFpc19hcnJheSgkc2VjdXJlKSkgewogICAgICAgICAgICAkc2VjdXJlID0gKGFycmF5KSAkc2VjdXJlOwogICAgICAgIH0KICAgICAgICBpZiAoIWluX2FycmF5KCR0cGxEaXIsICRzZWN1cmUsIHRydWUpKSB7CiAgICAgICAgICAgICRzZWN1cmVbXSA9ICR0cGxEaXI7CiAgICAgICAgICAgICRwb2xpY3ktPnNlY3VyZV9kaXIgPSAkc2VjdXJlOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/mas_common/templates/about_changelog_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdhYm91dF90YWJfY2hhbmdlbG9nJyl8ZXNjYXBlOidodG1sJ308L2gzPgoKe2lmICRtYXNfY2hhbmdlbG9nX2h0bWx8ZGVmYXVsdDonJyAhPSAnJ30KICB7JG1hc19jaGFuZ2Vsb2dfaHRtbCBub2ZpbHRlcn0Ke2Vsc2V9CiAgPHA+eyRtb2QtPkxhbmcoJ2NoYW5nZWxvZycpfGVzY2FwZTonaHRtbCd9PC9wPgp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/templates/about_compat_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdhYm91dF90YWJfY29tcGF0Jyl8ZXNjYXBlOidodG1sJ308L2gzPgoKPHA+PHN0cm9uZz57JG1vZC0+TGFuZygnYWJvdXRfbWluX2NtcycpfGVzY2FwZTonaHRtbCd9PC9zdHJvbmc+IHskbW9kLT5NaW5pbXVtQ01TVmVyc2lvbigpfGVzY2FwZTonaHRtbCd9PC9wPgo8cD48c3Ryb25nPnskbW9kLT5MYW5nKCdhYm91dF9taW5fcGhwJyl8ZXNjYXBlOidodG1sJ308L3N0cm9uZz4geyRtb2QtPkdldE1pbmltdW1QSFBWZXJzaW9uKCl8ZXNjYXBlOidodG1sJ308L3A+Cgo8aDQ+eyRtb2QtPkxhbmcoJ2Fib3V0X2RlcGVuZGVuY2llc19oZWFkaW5nJyl8ZXNjYXBlOidodG1sJ308L2g0Pgp7aWYgJG1hc19hYm91dF9kZXBlbmRlbmNpZXN8ZGVmYXVsdDonJyAhPSAnJ30KICB7JG1hc19hYm91dF9kZXBlbmRlbmNpZXMgbm9maWx0ZXJ9CntlbHNlfQogIDxwPnskbW9kLT5MYW5nKCdhYm91dF9kZXBlbmRlbmNpZXNfbm9uZScpfGVzY2FwZTonaHRtbCd9PC9wPgp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/templates/about_module_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdhYm91dF90YWJfbW9kdWxlJyl8ZXNjYXBlOidodG1sJ308L2gzPgoKPHA+PHN0cm9uZz57JG1vZC0+TGFuZygnYWJvdXRfbGFiZWxfbmFtZScpfGVzY2FwZTonaHRtbCd9PC9zdHJvbmc+IHskbW9kLT5HZXRGcmllbmRseU5hbWUoKXxlc2NhcGU6J2h0bWwnfTwvcD4KPHA+PHN0cm9uZz57JG1vZC0+TGFuZygnYWJvdXRfbGFiZWxfdmVyc2lvbicpfGVzY2FwZTonaHRtbCd9PC9zdHJvbmc+IHskbW9kLT5HZXRWZXJzaW9uKCl8ZXNjYXBlOidodG1sJ308L3A+CjxwPjxzdHJvbmc+eyRtb2QtPkxhbmcoJ2Fib3V0X2xhYmVsX2F1dGhvcicpfGVzY2FwZTonaHRtbCd9PC9zdHJvbmc+IHskbW9kLT5HZXRBdXRob3IoKXxlc2NhcGU6J2h0bWwnfTwvcD4Ke2lmICRtb2QtPkdldEF1dGhvckVtYWlsKCl8ZGVmYXVsdDonJyAhPSAnJ30KPHA+PHN0cm9uZz57JG1vZC0+TGFuZygnYWJvdXRfbGFiZWxfZW1haWwnKXxlc2NhcGU6J2h0bWwnfTwvc3Ryb25nPiA8YSBocmVmPSJtYWlsdG86eyRtb2QtPkdldEF1dGhvckVtYWlsKCl8ZXNjYXBlOid1cmwnfSI+eyRtb2QtPkdldEF1dGhvckVtYWlsKCl8ZXNjYXBlOidodG1sJ308L2E+PC9wPgp7L2lmfQp7aWYgJG1vZC0+R2V0QXV0aG9yVXJsKCl8ZGVmYXVsdDonJyAhPSAnJ30KPHA+PHN0cm9uZz57JG1vZC0+TGFuZygnYWJvdXRfbGFiZWxfdXJsJyl8ZXNjYXBlOidodG1sJ308L3N0cm9uZz4gPGEgaHJlZj0ieyRtb2QtPkdldEF1dGhvclVybCgpfGVzY2FwZTonaHRtbCd9IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIj57JG1vZC0+R2V0QXV0aG9yVXJsKCl8ZXNjYXBlOidodG1sJ308L2E+PC9wPgp7L2lmfQo8cD48c3Ryb25nPnskbW9kLT5MYW5nKCdhYm91dF9sYWJlbF9saWNlbnNlJyl8ZXNjYXBlOidodG1sJ308L3N0cm9uZz4geyRtb2QtPkxhbmcoJ2Fib3V0X2xpY2Vuc2VfdmFsdWUnKXxlc2NhcGU6J2h0bWwnfTwvcD4K]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/templates/about_summary_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdhYm91dF90YWJfc3VtbWFyeScpfGVzY2FwZTonaHRtbCd9PC9oMz4KPHA+eyRtb2QtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyl8ZXNjYXBlOidodG1sJ308L3A+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/templates/donations.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8aDI+eyRtb2QtPkxhbmcoJ2RvbmF0aW9uc190YWInKXxkZWZhdWx0OidEb25hdGlvbnMnfGVzY2FwZTonaHRtbCd9PC9oMj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCAjY2ZkN2RmO3BhZGRpbmc6MTJweDtib3JkZXItcmFkaXVzOjNweDtiYWNrZ3JvdW5kOiNmZmY7bWF4LXdpZHRoOjg1MHB4OyI+CiAgICA8aDMgY2xhc3M9InBhZ2V0ZXh0Ij57JHNwb25zb3JzdGV4dHxlc2NhcGU6J2h0bWwnfTwvaDM+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O21hcmdpbi10b3A6MTBweDtmbGV4LXdyYXA6d3JhcDsiPgogICAgICA8aW1nCiAgICAgICAgc3JjPSJ7JGRvbmF0aW9uc19zcG9uc29yX2xvZ29fdXJsfGVzY2FwZTonaHRtbCd9IgogICAgICAgIGFsdD0ieyRkb25hdGlvbnNfc3BvbnNvcl9sb2dvX2FsdHxlc2NhcGU6J2h0bWwnfSIKICAgICAgICB3aWR0aD0iNDgiCiAgICAgICAgaGVpZ2h0PSI0OCIKICAgICAgICBzdHlsZT0ibWF4LXdpZHRoOjQ4cHg7bWF4LWhlaWdodDo0OHB4O3dpZHRoOmF1dG87aGVpZ2h0OmF1dG87b2JqZWN0LWZpdDpjb250YWluO2ZsZXgtc2hyaW5rOjA7IgogICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgZGVjb2Rpbmc9ImFzeW5jIgogICAgICA+CiAgICAgIDxhIGhyZWY9InskZG9uYXRpb25zX3Nwb25zb3JfaHJlZnxlc2NhcGU6J2h0bWwnfSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+eyRkb25hdGlvbnNfc3BvbnNvcl9saW5rfGVzY2FwZX08L2E+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0ibWFyZ2luLXRvcDoyMHB4OyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZG9uYXRpb25zdGV4dH08L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij48YSBjbGFzcz0icGFnZWJ1dHRvbiIgc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tncm91bmQ6I2ZmYzQzOTtjb2xvcjojMDAwO3BhZGRpbmc6OHB4IDE0cHg7Ym9yZGVyLXJhZGl1czo0cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7IiBocmVmPSJodHRwczovL25ld3N0YXJnZXRlZC5jb20vIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIj57JGRvbmF0ZV9idG58ZXNjYXBlfTwvYT48L3A+CiAgPC9kaXY+CgogIHskc2V0dGluZ3NfZm9ybV9zdGFydH0KICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWFjdGl2ZV90YWIiIHZhbHVlPSJkb25hdGlvbnMiPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9c2hvd19kb25hdGlvbnNfdGFiIiB2YWx1ZT0iMCI+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0ibWFyZ2luLXRvcDoxNnB4OyI+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGhpZGVkb25hdGlvbnNzdWJtaXR9PC9wPgogIDwvZGl2PgogIHskc2V0dGluZ3NfZm9ybV9lbmR9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/templates/help_configuration_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdoZWxwX2NvbmZpZ3VyYXRpb24nKXxlc2NhcGU6J2h0bWwnfTwvaDM+Cgo8cD57JG1vZC0+TGFuZygnaGVscF9jb25maWd1cmF0aW9uX2JvZHknKXxlc2NhcGU6J2h0bWwnfTwvcD4KCjxoND57JG1vZC0+TGFuZygnaGVscF9jb25maWdfYWRtaW5faGVhZGluZycpfGVzY2FwZTonaHRtbCd9PC9oND4KPHVsPgogIDxsaT57JG1vZC0+TGFuZygnaGVscF9jb25maWdfYWRtaW5fMScpfGVzY2FwZTonaHRtbCd9PC9saT4KICA8bGk+eyRtb2QtPkxhbmcoJ2hlbHBfY29uZmlnX2FkbWluXzInKXxlc2NhcGU6J2h0bWwnfTwvbGk+CjwvdWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/templates/help_fallback_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5HZXRGcmllbmRseU5hbWUoKXxlc2NhcGU6J2h0bWwnfTwvaDM+CjxwPnskbW9kLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpfGVzY2FwZTonaHRtbCd9PC9wPgo=]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/templates/help_general_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdoZWxwX2dlbmVyYWwnKXxlc2NhcGU6J2h0bWwnfTwvaDM+Cgo8aDQ+eyRtb2QtPkxhbmcoJ2hlbHBfb3ZlcnZpZXdfaGVhZGluZycpfGVzY2FwZTonaHRtbCd9PC9oND4KPHA+eyRtb2QtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyl8ZXNjYXBlOidodG1sJ308L3A+Cgo8aDQ+eyRtb2QtPkxhbmcoJ2hlbHBfcXVpY2tzdGFydF9oZWFkaW5nJyl8ZXNjYXBlOidodG1sJ308L2g0Pgo8b2w+CiAgPGxpPnskbW9kLT5MYW5nKCdoZWxwX3F1aWNrc3RhcnRfMScpfGVzY2FwZTonaHRtbCd9PC9saT4KICA8bGk+eyRtb2QtPkxhbmcoJ2hlbHBfcXVpY2tzdGFydF8yJyl8ZXNjYXBlOidodG1sJ308L2xpPgogIDxsaT57JG1vZC0+TGFuZygnaGVscF9xdWlja3N0YXJ0XzMnKXxlc2NhcGU6J2h0bWwnfTwvbGk+Cjwvb2w+Cgo8aDQ+eyRtb2QtPkxhbmcoJ2hlbHBfcmVxdWlyZW1lbnRzX2hlYWRpbmcnKXxlc2NhcGU6J2h0bWwnfTwvaDQ+Cjx1bD4KICA8bGk+eyRtb2QtPkxhbmcoJ2hlbHBfcmVxdWlyZW1lbnRzX2NtcycpfGVzY2FwZTonaHRtbCd9IHskbW9kLT5NaW5pbXVtQ01TVmVyc2lvbigpfGVzY2FwZTonaHRtbCd9PC9saT4KICA8bGk+eyRtb2QtPkxhbmcoJ2hlbHBfcmVxdWlyZW1lbnRzX3BocCcpfGVzY2FwZTonaHRtbCd9IHskbW9kLT5HZXRNaW5pbXVtUEhQVmVyc2lvbigpfGVzY2FwZTonaHRtbCd9PC9saT4KPC91bD4KCjxoND57JG1vZC0+TGFuZygnaGVscF9jcmVkaXRzX2hlYWRpbmcnKXxlc2NhcGU6J2h0bWwnfTwvaDQ+CjxwPnskbW9kLT5MYW5nKCdoZWxwX2NyZWRpdHNfYm9keScpfGVzY2FwZTonaHRtbCd9CntpZiAkbW9kLT5HZXRBdXRob3IoKXxkZWZhdWx0OicnICE9ICcnfQogPHN0cm9uZz57JG1vZC0+R2V0QXV0aG9yKCl8ZXNjYXBlOidodG1sJ308L3N0cm9uZz4Key9pZn0Ke2lmICRtb2QtPkdldEF1dGhvckVtYWlsKCl8ZGVmYXVsdDonJyAhPSAnJ30KIHwgPGEgaHJlZj0ibWFpbHRvOnskbW9kLT5HZXRBdXRob3JFbWFpbCgpfGVzY2FwZTondXJsJ30iPnskbW9kLT5HZXRBdXRob3JFbWFpbCgpfGVzY2FwZTonaHRtbCd9PC9hPgp7L2lmfQo8L3A+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/templates/help_troubleshooting_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdoZWxwX3Ryb3VibGVzaG9vdGluZycpfGVzY2FwZTonaHRtbCd9PC9oMz4KCjx1bD4KICA8bGk+eyRtb2QtPkxhbmcoJ2hlbHBfdHNfMScpfGVzY2FwZTonaHRtbCd9PC9saT4KICA8bGk+eyRtb2QtPkxhbmcoJ2hlbHBfdHNfMicpfGVzY2FwZTonaHRtbCd9PC9saT4KICA8bGk+eyRtb2QtPkxhbmcoJ2hlbHBfdHNfMycpfGVzY2FwZTonaHRtbCd9PC9saT4KPC91bD4KCjxwPnskbW9kLT5MYW5nKCdoZWxwX3RzX3N1cHBvcnRfYm9keScpfGVzY2FwZTonaHRtbCd9IDxhIGhyZWY9Imh0dHBzOi8vbmV3c3RhcmdldGVkLmNvbS9jb250YWN0LyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+bmV3c3RhcmdldGVkLmNvbS9jb250YWN0PC9hPjwvcD4K]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/templates/mas_tabbed_docs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHN0eWxlPgoubWFzLWRvYy10YWJzIHsgbWFyZ2luOiAyMHB4IDAgMDsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNkZGQ7IH0KLm1hcy1kb2MtdGFicyBhIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwYWRkaW5nOiAxMHB4IDIwcHg7IG1hcmdpbi1yaWdodDogNXB4OyBiYWNrZ3JvdW5kOiAjZjVmNWY1OyBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBib3JkZXItYm90dG9tOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAjMzMzOyB9Ci5tYXMtZG9jLXRhYnMgYS5hY3RpdmUgeyBiYWNrZ3JvdW5kOiAjZmZmOyBib3JkZXItYm90dG9tOiAycHggc29saWQgI2ZmZjsgbWFyZ2luLWJvdHRvbTogLTJweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0KLm1hcy1kb2MtdGFicyBhOmhvdmVyIHsgYmFja2dyb3VuZDogI2U5ZTllOTsgfQoubWFzLWRvYy1jb250ZW50IHsgcGFkZGluZzogMjBweDsgYm9yZGVyOiAxcHggc29saWQgI2RkZDsgYm9yZGVyLXRvcDogbm9uZTsgYmFja2dyb3VuZDogI2ZmZjsgfQoubWFzLWRvYy1zZWN0aW9uIHsgZGlzcGxheTogbm9uZTsgfQoubWFzLWRvYy1zZWN0aW9uLmFjdGl2ZSB7IGRpc3BsYXk6IGJsb2NrOyB9Cjwvc3R5bGU+Cgo8ZGl2IGNsYXNzPSJtYXMtZG9jLXRhYnMgbWFzLWRvYy10YWJzLXskbWFzX2RvY19raW5kfGVzY2FwZTonaHRtbCd9Ij4Ke2ZvcmVhY2ggZnJvbT0kbWFzX2RvY190YWJzIGl0ZW09dGFifQogIDxhIGhyZWY9IiN7JHRhYi5pZHxlc2NhcGU6J2h0bWwnfSIgY2xhc3M9Im1hcy1kb2MtdGFie2lmICR0YWJAZmlyc3R9IGFjdGl2ZXsvaWZ9IiBkYXRhLXRhYj0ieyR0YWIuaWR8ZXNjYXBlOidodG1sJ30iPnskdGFiLmxhYmVsfGVzY2FwZTonaHRtbCd9PC9hPgp7L2ZvcmVhY2h9CjwvZGl2PgoKPGRpdiBjbGFzcz0ibWFzLWRvYy1jb250ZW50IG1hcy1kb2MtY29udGVudC17JG1hc19kb2Nfa2luZHxlc2NhcGU6J2h0bWwnfSI+Cntmb3JlYWNoIGZyb209JG1hc19kb2NfdGFicyBpdGVtPXRhYn0KICA8ZGl2IGlkPSJ7JHRhYi5pZHxlc2NhcGU6J2h0bWwnfSIgY2xhc3M9Im1hcy1kb2Mtc2VjdGlvbntpZiAkdGFiQGZpcnN0fSBhY3RpdmV7L2lmfSI+CiAgICB7aW5jbHVkZSBmaWxlPSR0YWIuaW5jbHVkZX0KICA8L2Rpdj4Key9mb3JlYWNofQo8L2Rpdj4KCjxzY3JpcHQ+CihmdW5jdGlvbigpIHsKICB2YXIgcm9vdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYXMtZG9jLXRhYnMteyRtYXNfZG9jX2tpbmR8ZXNjYXBlOidqYXZhc2NyaXB0J30nKTsKICBpZiAoIXJvb3QgfHwgIXJvb3QucGFyZW50Tm9kZSkgeyByZXR1cm47IH0KICB2YXIgY29udGFpbmVyID0gcm9vdC5wYXJlbnROb2RlOwogIHZhciB0YWJzID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5tYXMtZG9jLXRhYicpOwogIHZhciBzZWN0aW9ucyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCcubWFzLWRvYy1zZWN0aW9uJyk7CiAgdGFicy5mb3JFYWNoKGZ1bmN0aW9uKHRhYikgewogICAgdGFiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIHZhciB0YXJnZXQgPSB0aGlzLmdldEF0dHJpYnV0ZSgnZGF0YS10YWInKTsKICAgICAgdGFicy5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsgdC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsgfSk7CiAgICAgIHNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocykgeyBzLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOyB9KTsKICAgICAgdGhpcy5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgdmFyIHBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0KTsKICAgICAgaWYgKHBhbmVsKSB7IHBhbmVsLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOyB9CiAgICB9KTsKICB9KTsKfSkoKTsKPC9zY3JpcHQ+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/templates/settings_banner_echo.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICB7aWYgJG1hc19iYW5uZXJfdXJsfGRlZmF1bHQ6JycgIT0gJyd9CiAgPGltZyBzcmM9InskbWFzX2Jhbm5lcl91cmx8ZXNjYXBlOidodG1sJ30iIGFsdD0iIiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjEyMCIgc3R5bGU9Im1heC13aWR0aDoxMDAlO2hlaWdodDphdXRvO2JvcmRlci1yYWRpdXM6NnB4O21hcmdpbi1ib3R0b206MTJweDsiPgogIHsvaWZ9CiAgPGgyPnskbWFzX21vZHVsZV9uYW1lfGVzY2FwZTonaHRtbCd9IDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDpub3JtYWw7Zm9udC1zaXplOjEycHg7Ij52eyRtYXNfbW9kdWxlX3ZlcnNpb258ZXNjYXBlOidodG1sJ308L3NwYW4+PC9oMj4KICB7aWYgJG1hc19kZXNjcmlwdGlvbl9odG1sfGRlZmF1bHQ6JycgIT0gJyd9CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1hc19kZXNjcmlwdGlvbl9odG1sIG5vZmlsdGVyfTwvcD4KICB7L2lmfQo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common/templates/settings_banner_snippet.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICB7aWYgJG1hc19iYW5uZXJfdXJsfGRlZmF1bHQ6JycgIT0gJyd9CiAgPGltZyBzcmM9InskbWFzX2Jhbm5lcl91cmx8ZXNjYXBlOidodG1sJ30iIGFsdD0iIiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjEyMCIgc3R5bGU9Im1heC13aWR0aDoxMDAlO2hlaWdodDphdXRvO2JvcmRlci1yYWRpdXM6NnB4O21hcmdpbi1ib3R0b206MTJweDsiPgogIHsvaWZ9CiAgPGgyPnskbW9kLT5MYW5nKCdmcmllbmRseW5hbWUnKXxlc2NhcGU6J2h0bWwnfSA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc2l6ZToxMnB4OyI+dnskbWFzX21vZHVsZV92ZXJzaW9ufGVzY2FwZX08L3NwYW4+PC9oMj4K]]></data>
	</file>
	<file>
	  <filename>/lib/mas_common_loader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEJ1bmRsZWQgTUFTX0NvbW1vbiBsb2FkZXIgKGlkZW50aWNhbCBjb3B5IGluIGV2ZXJ5IE1BU18qIG1vZHVsZSBsaWIvbWFzX2NvbW1vbl9sb2FkZXIucGhwKS4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSAmJiAhZnVuY3Rpb25fZXhpc3RzKCdjbXNtcycpKSB7CiAgICBleGl0Owp9CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWFzX21hc19jb21tb25fcm9vdCcpKSB7CiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIGZ1bmN0aW9uIG1hc19tYXNfY29tbW9uX3Jvb3QoKQogICAgewogICAgICAgIHN0YXRpYyAkcm9vdCA9IG51bGw7CiAgICAgICAgaWYgKCRyb290ID09PSBudWxsKSB7CiAgICAgICAgICAgICRyb290ID0gZGlybmFtZShfX0ZJTEVfXykgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ21hc19jb21tb24nOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHJvb3Q7CiAgICB9Cn0KCmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYXNfbWFzX2NvbW1vbl9wYXRoJykpIHsKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkcmVsYXRpdmUgUGF0aCByZWxhdGl2ZSB0byBtYXNfY29tbW9uIHJvb3QgKGUuZy4gbGliL21hc19hZG1pbl91aS5waHApCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIGZ1bmN0aW9uIG1hc19tYXNfY29tbW9uX3BhdGgoJHJlbGF0aXZlKQogICAgewogICAgICAgICRyZWxhdGl2ZSA9IGx0cmltKHN0cl9yZXBsYWNlKGFycmF5KCcvJywgJ1xcJyksIERJUkVDVE9SWV9TRVBBUkFUT1IsIChzdHJpbmcpICRyZWxhdGl2ZSksIERJUkVDVE9SWV9TRVBBUkFUT1IpOwogICAgICAgICRwYXRoID0gbWFzX21hc19jb21tb25fcm9vdCgpIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRyZWxhdGl2ZTsKICAgICAgICByZXR1cm4gaXNfcmVhZGFibGUoJHBhdGgpID8gJHBhdGggOiBudWxsOwogICAgfQp9CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWFzX3JlcXVpcmVfbWFzX2FkbWluX3VpJykpIHsKICAgIGZ1bmN0aW9uIG1hc19yZXF1aXJlX21hc19hZG1pbl91aSgpCiAgICB7CiAgICAgICAgaWYgKGNsYXNzX2V4aXN0cygnTWFzX0FkbWluX1VpJywgZmFsc2UpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJHBhdGggPSBtYXNfbWFzX2NvbW1vbl9wYXRoKCdsaWIvbWFzX2FkbWluX3VpLnBocCcpOwogICAgICAgIGlmICgkcGF0aCA9PT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICdNQVMgbW9kdWxlOiBzaGFyZWQgYWRtaW4gVUkgbm90IGZvdW5kLiBSZS11cGxvYWQgdGhlIG1vZHVsZSBvciByZXN0b3JlIGxpYi9tYXNfY29tbW9uLy4nCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJlcXVpcmVfb25jZSAkcGF0aDsKICAgIH0KfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21hc19yZXF1aXJlX21hc19sYW5nX2RlZmF1bHRzJykpIHsKICAgIGZ1bmN0aW9uIG1hc19yZXF1aXJlX21hc19sYW5nX2RlZmF1bHRzKCkKICAgIHsKICAgICAgICBzdGF0aWMgJGxvYWRlZCA9IGZhbHNlOwogICAgICAgIGlmICgkbG9hZGVkKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJHBhdGggPSBtYXNfbWFzX2NvbW1vbl9wYXRoKCdsYW5nL21hc19kb2NzX2RlZmF1bHRzX2VuX1VTLnBocCcpOwogICAgICAgIGlmICgkcGF0aCA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHJlcXVpcmVfb25jZSAkcGF0aDsKICAgICAgICAkbG9hZGVkID0gdHJ1ZTsKICAgIH0KfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21hc19yZXF1aXJlX21hc19mb3JnZV9hc3NldHMnKSkgewogICAgZnVuY3Rpb24gbWFzX3JlcXVpcmVfbWFzX2ZvcmdlX2Fzc2V0cygpCiAgICB7CiAgICAgICAgaWYgKGNsYXNzX2V4aXN0cygnTWFzX0ZvcmdlX0Fzc2V0cycsIGZhbHNlKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICRwYXRoID0gbWFzX21hc19jb21tb25fcGF0aCgnbGliL21hc19mb3JnZV9hc3NldHMucGhwJyk7CiAgICAgICAgaWYgKCRwYXRoID09PSBudWxsKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgJ01BUyBtb2R1bGU6IGZvcmdlIGFzc2V0IGhlbHBlcnMgbm90IGZvdW5kLiBSZS11cGxvYWQgdGhlIG1vZHVsZSBvciByZXN0b3JlIGxpYi9tYXNfY29tbW9uLy4nCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJlcXVpcmVfb25jZSAkcGF0aDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_cg_interop.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE9wdGlvbmFsIGludGVncmF0aW9uIHdpdGggQ0dTaW1wbGVQV0EgYW5kIENHV2ViUHVzaCB3aGVuIHRob3NlIG1vZHVsZXMgYXJlIGluc3RhbGxlZC4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKZmluYWwgY2xhc3MgTUFTX05DX0NHSW50ZXJvcAp7CiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGhhc0NHU2ltcGxlUHdhKCk6IGJvb2wKICAgIHsKICAgICAgICAkbSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dTaW1wbGVQV0EnKTsKCiAgICAgICAgcmV0dXJuICRtIGluc3RhbmNlb2YgQ01TTW9kdWxlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaGFzQ0dXZWJQdXNoKCk6IGJvb2wKICAgIHsKICAgICAgICAkbSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dXZWJQdXNoJyk7CgogICAgICAgIHJldHVybiAkbSBpbnN0YW5jZW9mIENNU01vZHVsZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkbWluIGhlYWRlciBwcmVmaXg6IHNhbWUgcGF0dGVybiBhcyBDR1dlYlB1c2g6OkdldEhlYWRlckhUTUwgKENHU2ltcGxlUFdBIGluaXQgKyBTVyBjb21iaW5lcikuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYWRtaW5Qd2FIZWFkZXJQcmVmaXgoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJG0gPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NHU2ltcGxlUFdBJyk7CiAgICAgICAgaWYgKCEkbSBpbnN0YW5jZW9mIENNU01vZHVsZSB8fCAhbWV0aG9kX2V4aXN0cygkbSwgJ0dldEhlYWRlckhUTUwnKSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiAoc3RyaW5nKSAkbS0+R2V0SGVhZGVySFRNTCgpOwogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkZSkgewogICAgICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdhdWRpdCcpKSB7CiAgICAgICAgICAgICAgICBhdWRpdCgwLCAnTUFTX05vdGlmaWNhdGlvbkNlbnRlcicsICdDR1NpbXBsZVBXQSBHZXRIZWFkZXJIVE1MIGZhaWxlZCAoZGV0YWlscyBvbWl0dGVkKScpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQnJvYWRjYXN0IHRoZSBzYW1lIHRpdGxlIGFuZCBib2R5IHRocm91Z2ggQ0dXZWJQdXNoIHRvIGFsbCBrbm93biBzdWJzY3JpcHRpb25zIChvcHRpb25hbCkuCiAgICAgKgogICAgICogQHJldHVybiBib29sIHRydWUgaWYgYnJvYWRjYXN0X21lc3NhZ2UgcmFuIHdpdGhvdXQgdGhyb3dpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0cnlDR1dlYlB1c2hCcm9hZGNhc3QoQ01TTW9kdWxlICRtYXMsIHN0cmluZyAkdGl0bGUsIHN0cmluZyAkYm9keSk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoIWlzX29iamVjdCgkbWFzKSB8fCAkbWFzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfY2d3ZWJwdXNoX2Jyb2FkY2FzdCcsICcwJykgIT09ICcxJykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRjZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dXZWJQdXNoJyk7CiAgICAgICAgaWYgKCEkY2cgaW5zdGFuY2VvZiBDTVNNb2R1bGUgfHwgIW1ldGhvZF9leGlzdHMoJGNnLCAnYnJvYWRjYXN0X21lc3NhZ2UnKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmICghY2xhc3NfZXhpc3RzKCdub3RpZmljYXRpb25fbWVzc2FnZScpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJG1zZyA9IG5ldyBub3RpZmljYXRpb25fbWVzc2FnZSgpOwogICAgICAgICAgICAkbXNnLT5tb2R1bGUgPSAnTUFTX05vdGlmaWNhdGlvbkNlbnRlcic7CiAgICAgICAgICAgICRtc2ctPnN1YmplY3QgPSBtYl9zdWJzdHIoJHRpdGxlLCAwLCAyNTApOwogICAgICAgICAgICAkbXNnLT5ib2R5ID0gJGJvZHk7CiAgICAgICAgICAgICRjZy0+YnJvYWRjYXN0X21lc3NhZ2UoJG1zZyk7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYXVkaXQnKSkgewogICAgICAgICAgICAgICAgYXVkaXQoMCwgJ01BU19Ob3RpZmljYXRpb25DZW50ZXInLCAnQ0dXZWJQdXNoIGJyaWRnZSBicm9hZGNhc3QgZmFpbGVkIChkZXRhaWxzIG9taXR0ZWQpJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_changelog.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1pbmltYWwgTWFya2Rvd24gdG8gSFRNTCBmb3IgQ0hBTkdFTE9HLm1kIChNQVNfT3BlblN0cmVldE1hcC1jb21wYXRpYmxlKS4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKZmluYWwgY2xhc3MgTUFTX05DX0NoYW5nZWxvZwp7CiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1hcmtkb3duVG9IdG1sKHN0cmluZyAkbWFya2Rvd24pOiBzdHJpbmcKICAgIHsKICAgICAgICAkbGluZXMgPSBwcmVnX3NwbGl0KCcvXHJcbnxccnxcbi8nLCAkbWFya2Rvd24pOwogICAgICAgIGlmICghaXNfYXJyYXkoJGxpbmVzKSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgICAgICRvdXQgPSBhcnJheSgpOwogICAgICAgICRpbkxpc3QgPSBmYWxzZTsKICAgICAgICBmb3JlYWNoICgkbGluZXMgYXMgJGxpbmUpIHsKICAgICAgICAgICAgaWYgKCRsaW5lID09PSAnJykgewogICAgICAgICAgICAgICAgaWYgKCRpbkxpc3QpIHsKICAgICAgICAgICAgICAgICAgICAkb3V0W10gPSAnPC91bD4nOwogICAgICAgICAgICAgICAgICAgICRpbkxpc3QgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXiMjI1xzKyguKykkLycsICRsaW5lLCAkbSkpIHsKICAgICAgICAgICAgICAgIGlmICgkaW5MaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gJzwvdWw+JzsKICAgICAgICAgICAgICAgICAgICAkaW5MaXN0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkb3V0W10gPSAnPGgzPicgLiBjbXNfaHRtbGVudGl0aWVzKCRtWzFdKSAuICc8L2gzPic7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL14jI1xzKyguKykkLycsICRsaW5lLCAkbSkpIHsKICAgICAgICAgICAgICAgIGlmICgkaW5MaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gJzwvdWw+JzsKICAgICAgICAgICAgICAgICAgICAkaW5MaXN0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkb3V0W10gPSAnPGgyPicgLiBjbXNfaHRtbGVudGl0aWVzKCRtWzFdKSAuICc8L2gyPic7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL14jXHMrKC4rKSQvJywgJGxpbmUsICRtKSkgewogICAgICAgICAgICAgICAgaWYgKCRpbkxpc3QpIHsKICAgICAgICAgICAgICAgICAgICAkb3V0W10gPSAnPC91bD4nOwogICAgICAgICAgICAgICAgICAgICRpbkxpc3QgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRvdXRbXSA9ICc8aDI+JyAuIGNtc19odG1sZW50aXRpZXMoJG1bMV0pIC4gJzwvaDI+JzsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXlstKl1ccysoLispJC8nLCAkbGluZSwgJG0pKSB7CiAgICAgICAgICAgICAgICBpZiAoISRpbkxpc3QpIHsKICAgICAgICAgICAgICAgICAgICAkb3V0W10gPSAnPHVsPic7CiAgICAgICAgICAgICAgICAgICAgJGluTGlzdCA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkb3V0W10gPSAnPGxpPicgLiBjbXNfaHRtbGVudGl0aWVzKCRtWzFdKSAuICc8L2xpPic7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJGluTGlzdCkgewogICAgICAgICAgICAgICAgJG91dFtdID0gJzwvdWw+JzsKICAgICAgICAgICAgICAgICRpbkxpc3QgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb3V0W10gPSAnPHA+JyAuIGNtc19odG1sZW50aXRpZXMoJGxpbmUpIC4gJzwvcD4nOwogICAgICAgIH0KICAgICAgICBpZiAoJGluTGlzdCkgewogICAgICAgICAgICAkb3V0W10gPSAnPC91bD4nOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGltcGxvZGUoIlxuIiwgJG91dCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_core_events.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1hcHMgQ29yZTo6KiBtb2R1bGUgZXZlbnRzIHRvIHJvdXRlciBwYXlsb2Fkcy4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKZmluYWwgY2xhc3MgTUFTX05DX0NvcmVFdmVudHMKewogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLG1peGVkPiAkcGFyYW1zCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaGFuZGxlKENNU01vZHVsZSAkbW9kLCBzdHJpbmcgJG9yaWdpbmF0b3IsIHN0cmluZyAkZXZlbnRuYW1lLCBhcnJheSAkcGFyYW1zKTogdm9pZAogICAgewogICAgICAgIGlmICgkb3JpZ2luYXRvciAhPT0gJ0NvcmUnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRwYXlsb2FkID0gbnVsbDsKCiAgICAgICAgc3dpdGNoICgkZXZlbnRuYW1lKSB7CiAgICAgICAgICAgIGNhc2UgJ0FkZFVzZXJQb3N0JzoKICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJHBhcmFtc1sndXNlciddKSAmJiBpc19vYmplY3QoJHBhcmFtc1sndXNlciddKSkgewogICAgICAgICAgICAgICAgICAgICR1ID0gJHBhcmFtc1sndXNlciddOwogICAgICAgICAgICAgICAgICAgICR1bmFtZSA9IGlzc2V0KCR1LT51c2VybmFtZSkgPyAoc3RyaW5nKSAkdS0+dXNlcm5hbWUgOiAnPyc7CiAgICAgICAgICAgICAgICAgICAgJHBheWxvYWQgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgJ3NldmVyaXR5JyA9PiAnaW5mbycsCiAgICAgICAgICAgICAgICAgICAgICAgICdjYXRlZ29yeScgPT4gJ3VzZXInLAogICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlJyA9PiAnQ29yZTo6QWRkVXNlclBvc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAndGl0bGUnID0+ICRtb2QtPkxhbmcoJ2V2dF9uZXdfdXNlcl90aXRsZScpLAogICAgICAgICAgICAgICAgICAgICAgICAnYm9keScgPT4gJG1vZC0+TGFuZygnZXZ0X25ld191c2VyX2JvZHknKSAuICcgJyAuICR1bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgJ21ldGEnID0+IGFycmF5KCd1c2VybmFtZScgPT4gJHVuYW1lKSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdNb2R1bGVJbnN0YWxsZWQnOgogICAgICAgICAgICAgICAgJHBheWxvYWQgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAnc2V2ZXJpdHknID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICAnY2F0ZWdvcnknID0+ICdtb2R1bGUnLAogICAgICAgICAgICAgICAgICAgICdzb3VyY2UnID0+ICdDb3JlOjpNb2R1bGVJbnN0YWxsZWQnLAogICAgICAgICAgICAgICAgICAgICd0aXRsZScgPT4gJG1vZC0+TGFuZygnZXZ0X21vZHVsZV9pbnN0YWxsZWRfdGl0bGUnKSwKICAgICAgICAgICAgICAgICAgICAnYm9keScgPT4gaXNzZXQoJHBhcmFtc1snbmFtZSddKSA/IChzdHJpbmcpICRwYXJhbXNbJ25hbWUnXSA6ICcnLAogICAgICAgICAgICAgICAgICAgICdtZXRhJyA9PiBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnID0+IGlzc2V0KCRwYXJhbXNbJ25hbWUnXSkgPyAoc3RyaW5nKSAkcGFyYW1zWyduYW1lJ10gOiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nID0+IGlzc2V0KCRwYXJhbXNbJ3ZlcnNpb24nXSkgPyAoc3RyaW5nKSAkcGFyYW1zWyd2ZXJzaW9uJ10gOiAnJywKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnTW9kdWxlVXBncmFkZWQnOgogICAgICAgICAgICAgICAgJHBheWxvYWQgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAnc2V2ZXJpdHknID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICAnY2F0ZWdvcnknID0+ICdtb2R1bGUnLAogICAgICAgICAgICAgICAgICAgICdzb3VyY2UnID0+ICdDb3JlOjpNb2R1bGVVcGdyYWRlZCcsCiAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJyA9PiAkbW9kLT5MYW5nKCdldnRfbW9kdWxlX3VwZ3JhZGVkX3RpdGxlJyksCiAgICAgICAgICAgICAgICAgICAgJ2JvZHknID0+IChpc3NldCgkcGFyYW1zWyduYW1lJ10pID8gKHN0cmluZykgJHBhcmFtc1snbmFtZSddIDogJycpIC4gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgIC4gKGlzc2V0KCRwYXJhbXNbJ29sZHZlcnNpb24nXSkgPyAoc3RyaW5nKSAkcGFyYW1zWydvbGR2ZXJzaW9uJ10gOiAnJykgLiAnIOKGkiAnCiAgICAgICAgICAgICAgICAgICAgICAgIC4gKGlzc2V0KCRwYXJhbXNbJ25ld3ZlcnNpb24nXSkgPyAoc3RyaW5nKSAkcGFyYW1zWyduZXd2ZXJzaW9uJ10gOiAnJyksCiAgICAgICAgICAgICAgICAgICAgJ21ldGEnID0+IGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAnbmFtZScgPT4gaXNzZXQoJHBhcmFtc1snbmFtZSddKSA/IChzdHJpbmcpICRwYXJhbXNbJ25hbWUnXSA6ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAnb2xkdmVyc2lvbicgPT4gaXNzZXQoJHBhcmFtc1snb2xkdmVyc2lvbiddKSA/IChzdHJpbmcpICRwYXJhbXNbJ29sZHZlcnNpb24nXSA6ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAnbmV3dmVyc2lvbicgPT4gaXNzZXQoJHBhcmFtc1snbmV3dmVyc2lvbiddKSA/IChzdHJpbmcpICRwYXJhbXNbJ25ld3ZlcnNpb24nXSA6ICcnLAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdNb2R1bGVVbmluc3RhbGxlZCc6CiAgICAgICAgICAgICAgICAkcGF5bG9hZCA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICdzZXZlcml0eScgPT4gJ3dhcm5pbmcnLAogICAgICAgICAgICAgICAgICAgICdjYXRlZ29yeScgPT4gJ21vZHVsZScsCiAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZScgPT4gJ0NvcmU6Ok1vZHVsZVVuaW5zdGFsbGVkJywKICAgICAgICAgICAgICAgICAgICAndGl0bGUnID0+ICRtb2QtPkxhbmcoJ2V2dF9tb2R1bGVfdW5pbnN0YWxsZWRfdGl0bGUnKSwKICAgICAgICAgICAgICAgICAgICAnYm9keScgPT4gaXNzZXQoJHBhcmFtc1snbmFtZSddKSA/IChzdHJpbmcpICRwYXJhbXNbJ25hbWUnXSA6ICcnLAogICAgICAgICAgICAgICAgICAgICdtZXRhJyA9PiBhcnJheSgnbmFtZScgPT4gaXNzZXQoJHBhcmFtc1snbmFtZSddKSA/IChzdHJpbmcpICRwYXJhbXNbJ25hbWUnXSA6ICcnKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ0xvZ2luRmFpbGVkJzoKICAgICAgICAgICAgICAgIGlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZXZ0X2xvZ2luX2ZhaWxlZCcsICcwJykgIT09ICcxJykgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR1c2VyID0gaXNzZXQoJHBhcmFtc1sndXNlciddKSA/IChzdHJpbmcpICRwYXJhbXNbJ3VzZXInXSA6ICc/JzsKICAgICAgICAgICAgICAgICRwYXlsb2FkID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJ3NldmVyaXR5JyA9PiAnd2FybmluZycsCiAgICAgICAgICAgICAgICAgICAgJ2NhdGVnb3J5JyA9PiAnc2VjdXJpdHknLAogICAgICAgICAgICAgICAgICAgICdzb3VyY2UnID0+ICdDb3JlOjpMb2dpbkZhaWxlZCcsCiAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJyA9PiAkbW9kLT5MYW5nKCdldnRfbG9naW5fZmFpbGVkX3RpdGxlJyksCiAgICAgICAgICAgICAgICAgICAgJ2JvZHknID0+ICRtb2QtPkxhbmcoJ2V2dF9sb2dpbl9mYWlsZWRfYm9keScpIC4gJyAnIC4gJHVzZXIsCiAgICAgICAgICAgICAgICAgICAgJ21ldGEnID0+IGFycmF5KCd1c2VyJyA9PiAkdXNlciksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdEZWxldGVVc2VyUG9zdCc6CiAgICAgICAgICAgICAgICBpZiAoJG1vZC0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2V2dF9kZWxldGVfdXNlcicsICcwJykgIT09ICcxJykgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJHBhcmFtc1sndXNlciddKSAmJiBpc19vYmplY3QoJHBhcmFtc1sndXNlciddKSkgewogICAgICAgICAgICAgICAgICAgICR1ID0gJHBhcmFtc1sndXNlciddOwogICAgICAgICAgICAgICAgICAgICR1bmFtZSA9IGlzc2V0KCR1LT51c2VybmFtZSkgPyAoc3RyaW5nKSAkdS0+dXNlcm5hbWUgOiAnPyc7CiAgICAgICAgICAgICAgICAgICAgJHBheWxvYWQgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgJ3NldmVyaXR5JyA9PiAnd2FybmluZycsCiAgICAgICAgICAgICAgICAgICAgICAgICdjYXRlZ29yeScgPT4gJ3VzZXInLAogICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlJyA9PiAnQ29yZTo6RGVsZXRlVXNlclBvc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAndGl0bGUnID0+ICRtb2QtPkxhbmcoJ2V2dF91c2VyX2RlbGV0ZWRfdGl0bGUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgJ2JvZHknID0+ICR1bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgJ21ldGEnID0+IGFycmF5KCd1c2VybmFtZScgPT4gJHVuYW1lKSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNfYXJyYXkoJHBheWxvYWQpKSB7CiAgICAgICAgICAgIE1BU19OQ19Sb3V0ZXI6Om5vdGlmeSgkbW9kLCAkcGF5bG9hZCk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_dispatcher.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEVtYWlsLCBEaXNjb3JkLCBXZWIgUHVzaCBkZWxpdmVyeSBmb3Igc2F2ZWQgbm90aWZpY2F0aW9ucy4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKZmluYWwgY2xhc3MgTUFTX05DX0Rpc3BhdGNoZXIKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludCBiaXRtYXNrIE1BU19OQ19Sb3V0ZXI6OkRFTElWRVJfKgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlbGl2ZXIoQ01TTW9kdWxlICRtb2QsIGludCAkaWQsIHN0cmluZyAkdGl0bGUsIHN0cmluZyAkYm9keSwgc3RyaW5nICRzZXZlcml0eSwgc3RyaW5nICRjYXRlZ29yeSk6IGludAogICAgewogICAgICAgICRtYXNrID0gMDsKICAgICAgICAkc3ViamVjdCA9ICdbJyAuICRzZXZlcml0eSAuICddICcgLiAkdGl0bGU7CgogICAgICAgIGlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZW5hYmxlX2VtYWlsJywgJzEnKSA9PT0gJzEnKSB7CiAgICAgICAgICAgIGlmIChzZWxmOjpzZW5kRW1haWwoJG1vZCwgJHN1YmplY3QsICRib2R5KSkgewogICAgICAgICAgICAgICAgJG1hc2sgfD0gTUFTX05DX1JvdXRlcjo6REVMSVZFUl9FTUFJTDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJG1vZC0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2VuYWJsZV9kaXNjb3JkJywgJzAnKSA9PT0gJzEnKSB7CiAgICAgICAgICAgIGlmIChzZWxmOjpzZW5kRGlzY29yZCgkbW9kLCAkdGl0bGUsICRib2R5LCAkc2V2ZXJpdHkpKSB7CiAgICAgICAgICAgICAgICAkbWFzayB8PSBNQVNfTkNfUm91dGVyOjpERUxJVkVSX0RJU0NPUkQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHdhbnRXZWJQdXNoID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2VuYWJsZV9wdXNoJywgJzEnKSA9PT0gJzEnCiAgICAgICAgICAgIHx8ICRtb2QtPkdldFByZWZlcmVuY2UoJ21hc19uY19jZ3dlYnB1c2hfYnJvYWRjYXN0JywgJzAnKSA9PT0gJzEnOwogICAgICAgIGlmICgkd2FudFdlYlB1c2gpIHsKICAgICAgICAgICAgaWYgKE1BU19OQ19XZWJQdXNoOjpzZW5kVG9BZG1pbnMoJG1vZCwgJHRpdGxlLCAkYm9keSkpIHsKICAgICAgICAgICAgICAgICRtYXNrIHw9IE1BU19OQ19Sb3V0ZXI6OkRFTElWRVJfUFVTSDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRtYXNrOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHNlbmRFbWFpbChDTVNNb2R1bGUgJG1vZCwgc3RyaW5nICRzdWJqZWN0LCBzdHJpbmcgJGJvZHkpOiBib29sCiAgICB7CiAgICAgICAgJHRvUmF3ID0gdHJpbSgoc3RyaW5nKSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZW1haWxfcmVjaXBpZW50cycsICcnKSk7CiAgICAgICAgaWYgKCR0b1JhdyA9PT0gJycpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAkcGFydHMgPSBwcmVnX3NwbGl0KCcvW1xzLDtdKy8nLCAkdG9SYXcsIC0xLCBQUkVHX1NQTElUX05PX0VNUFRZKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRwYXJ0cykgfHwgY291bnQoJHBhcnRzKSA8IDEpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJG1haWwgPSBuZXcgY21zX21haWxlcih0cnVlKTsKICAgICAgICAgICAgJHZhbGlkID0gMDsKICAgICAgICAgICAgZm9yZWFjaCAoJHBhcnRzIGFzICRhZGRyKSB7CiAgICAgICAgICAgICAgICAkYWRkciA9IHRyaW0oKHN0cmluZykgJGFkZHIpOwogICAgICAgICAgICAgICAgaWYgKCRhZGRyICE9PSAnJyAmJiBmaWx0ZXJfdmFyKCRhZGRyLCBGSUxURVJfVkFMSURBVEVfRU1BSUwpKSB7CiAgICAgICAgICAgICAgICAgICAgJG1haWwtPkFkZEFkZHJlc3MoJGFkZHIpOwogICAgICAgICAgICAgICAgICAgICR2YWxpZCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkdmFsaWQgPCAxKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG1haWwtPlNldFN1YmplY3QoJHN1YmplY3QpOwogICAgICAgICAgICAkbWFpbC0+U2V0Qm9keSgkYm9keSk7CiAgICAgICAgICAgICRtYWlsLT5TZW5kKCk7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYXVkaXQnKSkgewogICAgICAgICAgICAgICAgYXVkaXQoMCwgJ01BU19Ob3RpZmljYXRpb25DZW50ZXInLCAnRW1haWwgZGVsaXZlcnkgZmFpbGVkIChkZXRhaWxzIG9taXR0ZWQpJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gc2VuZERpc2NvcmQoQ01TTW9kdWxlICRtb2QsIHN0cmluZyAkdGl0bGUsIHN0cmluZyAkYm9keSwgc3RyaW5nICRzZXZlcml0eSk6IGJvb2wKICAgIHsKICAgICAgICAkdXJsID0gdHJpbSgoc3RyaW5nKSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZGlzY29yZF93ZWJob29rJywgJycpKTsKICAgICAgICBpZiAoJHVybCA9PT0gJycgfHwgIWZpbHRlcl92YXIoJHVybCwgRklMVEVSX1ZBTElEQVRFX1VSTCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAkaG9zdCA9IHBhcnNlX3VybCgkdXJsLCBQSFBfVVJMX0hPU1QpOwogICAgICAgIGlmICghaXNfc3RyaW5nKCRob3N0KQogICAgICAgICAgICB8fCAoc3RyaXBvcygkaG9zdCwgJ2Rpc2NvcmQnKSA9PT0gZmFsc2UgJiYgc3RyaXBvcygkaG9zdCwgJ2Rpc2NvcmRhcHAnKSA9PT0gZmFsc2UpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRjb2xvciA9IDM0NDcwMDM7CiAgICAgICAgaWYgKCRzZXZlcml0eSA9PT0gJ3dhcm5pbmcnKSB7CiAgICAgICAgICAgICRjb2xvciA9IDE2Nzc2OTYwOwogICAgICAgIH0KICAgICAgICBpZiAoJHNldmVyaXR5ID09PSAnZXJyb3InKSB7CiAgICAgICAgICAgICRjb2xvciA9IDE1MTU4MzMyOwogICAgICAgIH0KCiAgICAgICAgJHBheWxvYWQgPSBhcnJheSgKICAgICAgICAgICAgJ2VtYmVkcycgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgICAgICAgICAndGl0bGUnID0+IG1iX3N1YnN0cigkdGl0bGUsIDAsIDI1NiksCiAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiBtYl9zdWJzdHIoJGJvZHksIDAsIDQwOTApLAogICAgICAgICAgICAgICAgICAgICdjb2xvcicgPT4gJGNvbG9yLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKSwKICAgICAgICApOwogICAgICAgICRqc29uID0ganNvbl9lbmNvZGUoJHBheWxvYWQsIEpTT05fVU5FU0NBUEVEX1NMQVNIRVMgfCBKU09OX1VORVNDQVBFRF9VTklDT0RFKTsKICAgICAgICBpZiAoJGpzb24gPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRjaCA9IGN1cmxfaW5pdCgkdXJsKTsKICAgICAgICBpZiAoJGNoID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGN1cmxfc2V0b3B0X2FycmF5KCRjaCwgYXJyYXkoCiAgICAgICAgICAgIENVUkxPUFRfUE9TVCA9PiB0cnVlLAogICAgICAgICAgICBDVVJMT1BUX0hUVFBIRUFERVIgPT4gYXJyYXkoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbicpLAogICAgICAgICAgICBDVVJMT1BUX1BPU1RGSUVMRFMgPT4gJGpzb24sCiAgICAgICAgICAgIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgPT4gdHJ1ZSwKICAgICAgICAgICAgQ1VSTE9QVF9USU1FT1VUID0+IDEyLAogICAgICAgICAgICBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VUID0+IDgsCiAgICAgICAgKSk7CiAgICAgICAgJHJlcyA9IGN1cmxfZXhlYygkY2gpOwogICAgICAgICRjb2RlID0gKGludCkgY3VybF9nZXRpbmZvKCRjaCwgQ1VSTElORk9fSFRUUF9DT0RFKTsKICAgICAgICByZXR1cm4gJGNvZGUgPj0gMjAwICYmICRjb2RlIDwgMzAwOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_health.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFN5c3RlbSBoZWFsdGggcHJvYmVzIChkaXNrLCBQSFAgdmVyc2lvbiwgREIgbGF0ZW5jeSkuCiAqLwppZiAoIWRlZmluZWQoJ0NNU19WRVJTSU9OJykpIHsKICAgIGV4aXQ7Cn0KCmZpbmFsIGNsYXNzIE1BU19OQ19IZWFsdGgKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PHN0cmluZyxzdHJpbmd8aW50fGZsb2F0PgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJ1bihDTVNNb2R1bGUgJG1vZCk6IGFycmF5CiAgICB7CiAgICAgICAgJG91dCA9IGFycmF5KCk7CgogICAgICAgICRtaW5QaHAgPSB0cmltKChzdHJpbmcpICRtb2QtPkdldFByZWZlcmVuY2UoJ21hc19uY19oZWFsdGhfbWluX3BocCcsICc3LjQuMCcpKTsKICAgICAgICBpZiAoJG1pblBocCA9PT0gJycpIHsKICAgICAgICAgICAgJG1pblBocCA9ICc3LjQuMCc7CiAgICAgICAgfQogICAgICAgICRjdXIgPSBQSFBfVkVSU0lPTjsKICAgICAgICBpZiAodmVyc2lvbl9jb21wYXJlKCRjdXIsICRtaW5QaHAsICc8JykpIHsKICAgICAgICAgICAgJG91dFsncGhwJ10gPSAnUEhQICcgLiAkY3VyIC4gJyBpcyBiZWxvdyBjb25maWd1cmVkIG1pbmltdW0gJyAuICRtaW5QaHA7CiAgICAgICAgfQoKICAgICAgICAkZGlza1BjdCA9IChpbnQpICRtb2QtPkdldFByZWZlcmVuY2UoJ21hc19uY19oZWFsdGhfZGlza19wY3QnLCAnMTAnKTsKICAgICAgICBpZiAoJGRpc2tQY3QgPCAxKSB7CiAgICAgICAgICAgICRkaXNrUGN0ID0gMTA7CiAgICAgICAgfQogICAgICAgICRjb25maWcgPSBjbXNfY29uZmlnOjpnZXRfaW5zdGFuY2UoKTsKICAgICAgICAkcm9vdCA9IGlzc2V0KCRjb25maWdbJ3Jvb3RfcGF0aCddKSA/IChzdHJpbmcpICRjb25maWdbJ3Jvb3RfcGF0aCddIDogZGlybmFtZShkaXJuYW1lKGRpcm5hbWUoX19ESVJfXykpKTsKICAgICAgICAkZnJlZSA9IEBkaXNrX2ZyZWVfc3BhY2UoJHJvb3QpOwogICAgICAgICR0b3RhbCA9IEBkaXNrX3RvdGFsX3NwYWNlKCRyb290KTsKICAgICAgICBpZiAoJGZyZWUgIT09IGZhbHNlICYmICR0b3RhbCAhPT0gZmFsc2UgJiYgJHRvdGFsID4gMCkgewogICAgICAgICAgICAkcGN0RnJlZSA9ICgkZnJlZSAvICR0b3RhbCkgKiAxMDAuMDsKICAgICAgICAgICAgaWYgKCRwY3RGcmVlIDwgKGZsb2F0KSAkZGlza1BjdCkgewogICAgICAgICAgICAgICAgJG91dFsnZGlzayddID0gJ0xvdyBkaXNrIHNwYWNlIG9uIGFwcGxpY2F0aW9uIHJvb3Q6IGFib3V0ICcgLiByb3VuZCgkcGN0RnJlZSwgMSkgLiAnJSBmcmVlICh0aHJlc2hvbGQgJyAuICRkaXNrUGN0IC4gJyUpLic7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRtYXhNcyA9IChpbnQpICRtb2QtPkdldFByZWZlcmVuY2UoJ21hc19uY19oZWFsdGhfZGJfbXMnLCAnMjAwMCcpOwogICAgICAgIGlmICgkbWF4TXMgPiAwKSB7CiAgICAgICAgICAgICRkYiA9ICRtb2QtPkdldERiKCk7CiAgICAgICAgICAgICR0MCA9IG1pY3JvdGltZSh0cnVlKTsKICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCdTRUxFQ1QgMScpOwogICAgICAgICAgICAkbXMgPSAobWljcm90aW1lKHRydWUpIC0gJHQwKSAqIDEwMDAuMDsKICAgICAgICAgICAgaWYgKCRtcyA+ICRtYXhNcykgewogICAgICAgICAgICAgICAgJG91dFsnZGInXSA9ICdEYXRhYmFzZSBwaW5nIHNsb3c6IGFib3V0ICcgLiByb3VuZCgkbXMpIC4gJyBtcyAodGhyZXNob2xkICcgLiAkbWF4TXMgLiAnIG1zKS4nOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_push_repo.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFB1c2ggc3Vic2NyaXB0aW9uIHBlcnNpc3RlbmNlIChKU09OIGJsb2JzKS4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKZmluYWwgY2xhc3MgTUFTX05DX1B1c2hSZXBvCnsKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxpbnQsYXJyYXk8c3RyaW5nLG1peGVkPj4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkQWxsKENNU01vZHVsZSAkbW9kKTogYXJyYXkKICAgIHsKICAgICAgICAkZGIgPSAkbW9kLT5HZXREYigpOwogICAgICAgICRzcWwgPSAnU0VMRUNUIGlkLCBzdWJzY3JpcHRpb25fanNvbiwgYWRtaW5fdWlkLCBjcmVhdGVkLCBsYXN0X3NlZW4gRlJPTSAnIC4gTUFTX05DX1RhYmxlczo6cHVzaF9zdWJzY3JpcHRpb25zKCk7CiAgICAgICAgJHJvd3MgPSAkZGItPkdldEFycmF5KCRzcWwpOwogICAgICAgIGlmICghaXNfYXJyYXkoJHJvd3MpKSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheSgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyb3dzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PHN0cmluZyxtaXhlZD4gJHN1YnNjcmlwdGlvbiBkZWNvZGVkIFB1c2hTdWJzY3JpcHRpb24gSlNPTiAoZW5kcG9pbnQsIGtleXMpCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2F2ZShDTVNNb2R1bGUgJG1vZCwgc3RyaW5nICRpZCwgYXJyYXkgJHN1YnNjcmlwdGlvbiwgaW50ICRhZG1pblVpZCk6IHZvaWQKICAgIHsKICAgICAgICAkZGIgPSAkbW9kLT5HZXREYigpOwogICAgICAgICRqc29uID0ganNvbl9lbmNvZGUoJHN1YnNjcmlwdGlvbiwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUyB8IEpTT05fVU5FU0NBUEVEX1VOSUNPREUpOwogICAgICAgIGlmICgkanNvbiA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkbm93ID0gdGltZSgpOwogICAgICAgICRleGlzdHMgPSAkZGItPkdldE9uZSgnU0VMRUNUIGlkIEZST00gJyAuIE1BU19OQ19UYWJsZXM6OnB1c2hfc3Vic2NyaXB0aW9ucygpIC4gJyBXSEVSRSBpZCA9ID8nLCBhcnJheSgkaWQpKTsKICAgICAgICBpZiAoJGV4aXN0cykgewogICAgICAgICAgICAkc3FsID0gJ1VQREFURSAnIC4gTUFTX05DX1RhYmxlczo6cHVzaF9zdWJzY3JpcHRpb25zKCkKICAgICAgICAgICAgICAgIC4gJyBTRVQgc3Vic2NyaXB0aW9uX2pzb24gPSA/LCBhZG1pbl91aWQgPSA/LCBsYXN0X3NlZW4gPSA/IFdIRVJFIGlkID0gPyc7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkc3FsLCBhcnJheSgkanNvbiwgJGFkbWluVWlkLCAkbm93LCAkaWQpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkc3FsID0gJ0lOU0VSVCBJTlRPICcgLiBNQVNfTkNfVGFibGVzOjpwdXNoX3N1YnNjcmlwdGlvbnMoKQogICAgICAgICAgICAgICAgLiAnIChpZCwgc3Vic2NyaXB0aW9uX2pzb24sIGFkbWluX3VpZCwgY3JlYXRlZCwgbGFzdF9zZWVuKSBWQUxVRVMgKD8sPyw/LD8sPyknOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHNxbCwgYXJyYXkoJGlkLCAkanNvbiwgJGFkbWluVWlkLCAkbm93LCAkbm93KSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVsZXRlKENNU01vZHVsZSAkbW9kLCBzdHJpbmcgJGlkKTogdm9pZAogICAgewogICAgICAgICRkYiA9ICRtb2QtPkdldERiKCk7CiAgICAgICAgJGRiLT5FeGVjdXRlKCdERUxFVEUgRlJPTSAnIC4gTUFTX05DX1RhYmxlczo6cHVzaF9zdWJzY3JpcHRpb25zKCkgLiAnIFdIRVJFIGlkID0gPycsIGFycmF5KCRpZCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsbWl4ZWQ+fG51bGwKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdWJzY3JpcHRpb25Gcm9tUm93KGFycmF5ICRyb3cpOiA/YXJyYXkKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCRyb3dbJ3N1YnNjcmlwdGlvbl9qc29uJ10pKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgICAkZGVjID0ganNvbl9kZWNvZGUoKHN0cmluZykgJHJvd1snc3Vic2NyaXB0aW9uX2pzb24nXSwgdHJ1ZSk7CgogICAgICAgIHJldHVybiBpc19hcnJheSgkZGVjKSA/ICRkZWMgOiBudWxsOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_pwa_addon.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE9wdGlvbmFsIENHU2ltcGxlUFdBIHNlcnZpY2Ugd29ya2VyIG1lcmdlIChvbmx5IHdoZW4gbWFzX25jX2NoYWluX2NnX3NpbXBsZV9wd2EgaXMgb24gYW5kIENHU2ltcGxlUFdBIGlzIGluc3RhbGxlZCkuCiAqLwppZiAoIWRlZmluZWQoJ0NNU19WRVJTSU9OJykpIHsKICAgIGV4aXQ7Cn0KCmlmICghY2xhc3NfZXhpc3RzKCdDR1NpbXBsZVBXQVxTZXJ2aWNlV29ya2VyQWRkb24nKSkgewogICAgcmV0dXJuOwp9CgpmaW5hbCBjbGFzcyBNQVNfTkNfUHdhQWRkb24gZXh0ZW5kcyBDR1NpbXBsZVBXQVxTZXJ2aWNlV29ya2VyQWRkb24KewogICAgLyoqIEB2YXIgQ01TTW9kdWxlICovCiAgICBwcml2YXRlICRtb2Q7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KENNU01vZHVsZSAkbW9kKQogICAgewogICAgICAgICR0aGlzLT5tb2QgPSAkbW9kOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMaWJyYXJ5RmlsZXMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgICAgIGNtc19qb2luX3BhdGgoJHRoaXMtPm1vZC0+R2V0TW9kdWxlUGF0aCgpLCAnanMnLCAnbWFzLW5jLXB1c2guanMnKSwKICAgICAgICApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNb2RpZmllZERhdGUoKTogaW50CiAgICB7CiAgICAgICAgJGYgPSBjbXNfam9pbl9wYXRoKCR0aGlzLT5tb2QtPkdldE1vZHVsZVBhdGgoKSwgJ2pzJywgJ21hcy1uYy1zdy1yb290LmpzJyk7CgogICAgICAgIHJldHVybiBpc19maWxlKCRmKSA/IChpbnQpIGZpbGVtdGltZSgkZikgOiB0aW1lKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNlcnZpY2VXb3JrZXJDb2RlKCk6IHN0cmluZwogICAgewogICAgICAgICRwYXRoID0gY21zX2pvaW5fcGF0aCgkdGhpcy0+bW9kLT5HZXRNb2R1bGVQYXRoKCksICdqcycsICdtYXMtbmMtc3ctcm9vdC5qcycpOwogICAgICAgICR0eHQgPSBpc19yZWFkYWJsZSgkcGF0aCkgPyAoc3RyaW5nKSBmaWxlX2dldF9jb250ZW50cygkcGF0aCkgOiAnJzsKCiAgICAgICAgcmV0dXJuICR0eHQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0YXJ0dXBDb2RlKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_pwa_standalone.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFN0YW5kYWxvbmUgUFdBIGFuZCBhZG1pbiBoZWFkIGhlbHBlcnMgKG5vIENHU2ltcGxlUFdBIHJlcXVpcmVkKS4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKZmluYWwgY2xhc3MgTUFTX05DX1B3YVN0YW5kYWxvbmUKewogICAgLyoqCiAgICAgKiBIVE1MIGZvciBtb2R1bGUgYWRtaW4gcGFnZXM6IG1hbmlmZXN0LCBpY29ucywgcHVzaCBjbGllbnQgc2NyaXB0LgogICAgICogT3B0aW9uYWwgQ0dTaW1wbGVQV0EgcHJlZml4IG9ubHkgd2hlbiBwcmVmZXJlbmNlIG1hc19uY19jaGFpbl9jZ19zaW1wbGVfcHdhIGlzIG9uLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGFkbWluSGVhZE1hcmt1cChDTVNNb2R1bGUgJG1vZCk6IHN0cmluZwogICAgewogICAgICAgICRvdXQgPSAnJzsKICAgICAgICAkY2hhaW4gPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfY2hhaW5fY2dfc2ltcGxlX3B3YScsICcwJykgPT09ICcxJzsKICAgICAgICBpZiAoJGNoYWluICYmIGNsYXNzX2V4aXN0cygnTUFTX05DX0NHSW50ZXJvcCcpICYmIE1BU19OQ19DR0ludGVyb3A6Omhhc0NHU2ltcGxlUHdhKCkpIHsKICAgICAgICAgICAgJG91dCAuPSBNQVNfTkNfQ0dJbnRlcm9wOjphZG1pblB3YUhlYWRlclByZWZpeCgpOwogICAgICAgIH0KCiAgICAgICAgJHVzZVNpdGVQd2EgPSAkY2hhaW4gJiYgY2xhc3NfZXhpc3RzKCdNQVNfTkNfQ0dJbnRlcm9wJykgJiYgTUFTX05DX0NHSW50ZXJvcDo6aGFzQ0dTaW1wbGVQd2EoKTsKICAgICAgICBpZiAoISR1c2VTaXRlUHdhIHx8ICRtb2QtPkdldFByZWZlcmVuY2UoJ21hc19uY19hZG1pbl9vd25fbWFuaWZlc3QnLCAnMCcpID09PSAnMScpIHsKICAgICAgICAgICAgJG91dCAuPSBzZWxmOjptYW5pZmVzdEJsb2NrKCRtb2QpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRpY29uMTkyID0gJG1vZC0+R2V0TW9kdWxlVVJMUGF0aCgpIC4gJy9pbWFnZXMvaWNvbi0xOTIucG5nJzsKICAgICAgICAgICAgJG91dCAuPSAnPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSInIC4gY21zX2h0bWxlbnRpdGllcygkaWNvbjE5MikgLiAnIj4nOwogICAgICAgIH0KICAgICAgICAkanMgPSAkbW9kLT5HZXRNb2R1bGVVUkxQYXRoKCkgLiAnL2pzL21hcy1uYy1wdXNoLmpzJzsKICAgICAgICAkb3V0IC49ICc8c2NyaXB0IGRlZmVyIHNyYz0iJyAuIGNtc19odG1sZW50aXRpZXMoJGpzKSAuICciPjwvc2NyaXB0Pic7CgogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIC8qKgogICAgICogQXBwZW5kIG1hbmlmZXN0LCB0aGVtZS1jb2xvciwgaWNvbnMsIGFuZCBTVyByZWdpc3RyYXRpb24gb24gcHVibGljIHBhZ2VzLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsbWl4ZWQ+ICRwYXJhbXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBob29rTWV0YWRhdGFQb3N0cmVuZGVyKCRwYXJhbXMpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkcGFyYW1zKSB8fCAhaXNzZXQoJHBhcmFtc1snaHRtbCddKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BU19Ob3RpZmljYXRpb25DZW50ZXInKTsKICAgICAgICBpZiAoISRtb2QgaW5zdGFuY2VvZiBDTVNNb2R1bGUgfHwgJG1vZC0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2Zyb250ZW5kX3B3YScsICcwJykgIT09ICcxJykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICghQ21zQXBwOjpnZXRfaW5zdGFuY2UoKS0+aXNfZnJvbnRlbmRfcmVxdWVzdCgpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJHNuaXBwZXQgPSBzZWxmOjptYW5pZmVzdEJsb2NrKCRtb2QpOwogICAgICAgICRyZWcgPSAkbW9kLT5HZXRNb2R1bGVVUkxQYXRoKCkgLiAnL2pzL21hcy1uYy1zdy1yZWdpc3Rlci5qcyc7CiAgICAgICAgJHNuaXBwZXQgLj0gJzxzY3JpcHQgZGVmZXIgc3JjPSInIC4gY21zX2h0bWxlbnRpdGllcygkcmVnKSAuICciPjwvc2NyaXB0Pic7CiAgICAgICAgJHBhcmFtc1snaHRtbCddIC49ICJcbiIgLiAkc25pcHBldDsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBtYW5pZmVzdEJsb2NrKENNU01vZHVsZSAkbW9kKTogc3RyaW5nCiAgICB7CiAgICAgICAgJG91dCA9ICcnOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRwYWdlSWQgPSAoaW50KSBDbXNBcHA6OmdldF9pbnN0YW5jZSgpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXREZWZhdWx0UGFnZUlEKCk7CiAgICAgICAgICAgICRtYW5pZmVzdFVybCA9ICRtb2QtPmNyZWF0ZV91cmwoJ2NudG50MDEnLCAnbWFuaWZlc3QnLCAkcGFnZUlkLCBhcnJheSgnc2hvd3RlbXBsYXRlJyA9PiAnZmFsc2UnKSk7CiAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgICRtYW5pZmVzdFVybCA9ICcnOwogICAgICAgIH0KICAgICAgICAkaWNvbjE5MiA9ICRtb2QtPkdldE1vZHVsZVVSTFBhdGgoKSAuICcvaW1hZ2VzL2ljb24tMTkyLnBuZyc7CiAgICAgICAgaWYgKCRtYW5pZmVzdFVybCAhPT0gJycpIHsKICAgICAgICAgICAgJG91dCAuPSAnPGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJlZj0iJyAuIGNtc19odG1sZW50aXRpZXMoJG1hbmlmZXN0VXJsKSAuICciIGNyb3Nzb3JpZ2luPSJ1c2UtY3JlZGVudGlhbHMiPic7CiAgICAgICAgfQogICAgICAgICRjb2xvciA9IHRyaW0oKHN0cmluZykgJG1vZC0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX3RoZW1lX2NvbG9yJywgJyMwMDc4ZDQnKSk7CiAgICAgICAgaWYgKCRjb2xvciA9PT0gJycpIHsKICAgICAgICAgICAgJGNvbG9yID0gJyMwMDc4ZDQnOwogICAgICAgIH0KICAgICAgICAkb3V0IC49ICc8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iJyAuIGNtc19odG1sZW50aXRpZXMoJGNvbG9yKSAuICciPic7CiAgICAgICAgJG91dCAuPSAnPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSInIC4gY21zX2h0bWxlbnRpdGllcygkaWNvbjE5MikgLiAnIj4nOwoKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_router.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIENlbnRyYWwgbm90aWZpY2F0aW9uIHJvdXRlcjogcGVyc2lzdCByb3cgKyBvdXRib3VuZCBkaXNwYXRjaCArIHJhdGUgbGltaXQuCiAqLwppZiAoIWRlZmluZWQoJ0NNU19WRVJTSU9OJykpIHsKICAgIGV4aXQ7Cn0KCmZpbmFsIGNsYXNzIE1BU19OQ19Sb3V0ZXIKewogICAgLyoqIEJpdCBmbGFncyBmb3IgZGVsaXZlcmVkX21hc2sgKi8KICAgIHB1YmxpYyBjb25zdCBERUxJVkVSX0VNQUlMID0gMTsKCiAgICBwdWJsaWMgY29uc3QgREVMSVZFUl9ESVNDT1JEID0gMjsKCiAgICBwdWJsaWMgY29uc3QgREVMSVZFUl9QVVNIID0gNDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsbWl4ZWQ+ICRwYXlsb2FkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbm90aWZ5KENNU01vZHVsZSAkbW9kLCBhcnJheSAkcGF5bG9hZCk6IGludAogICAgewogICAgICAgICRzZXZlcml0eSA9IGlzc2V0KCRwYXlsb2FkWydzZXZlcml0eSddKSA/IChzdHJpbmcpICRwYXlsb2FkWydzZXZlcml0eSddIDogJ2luZm8nOwogICAgICAgIGlmICghaW5fYXJyYXkoJHNldmVyaXR5LCBhcnJheSgnaW5mbycsICd3YXJuaW5nJywgJ2Vycm9yJyksIHRydWUpKSB7CiAgICAgICAgICAgICRzZXZlcml0eSA9ICdpbmZvJzsKICAgICAgICB9CiAgICAgICAgJGNhdGVnb3J5ID0gaXNzZXQoJHBheWxvYWRbJ2NhdGVnb3J5J10pID8gcHJlZ19yZXBsYWNlKCcvW15hLXowLTlfXC1dL2knLCAnJywgKHN0cmluZykgJHBheWxvYWRbJ2NhdGVnb3J5J10pIDogJ2N1c3RvbSc7CiAgICAgICAgaWYgKCRjYXRlZ29yeSA9PT0gJycpIHsKICAgICAgICAgICAgJGNhdGVnb3J5ID0gJ2N1c3RvbSc7CiAgICAgICAgfQogICAgICAgICRzb3VyY2UgPSBpc3NldCgkcGF5bG9hZFsnc291cmNlJ10pID8gc3Vic3RyKChzdHJpbmcpICRwYXlsb2FkWydzb3VyY2UnXSwgMCwgMTI4KSA6ICdNQVNfTm90aWZpY2F0aW9uQ2VudGVyJzsKICAgICAgICAkdGl0bGUgPSBpc3NldCgkcGF5bG9hZFsndGl0bGUnXSkgPyBzdWJzdHIoKHN0cmluZykgJHBheWxvYWRbJ3RpdGxlJ10sIDAsIDI1NSkgOiAkbW9kLT5MYW5nKCdub3RpZnlfZGVmYXVsdF90aXRsZScpOwogICAgICAgICRib2R5ID0gaXNzZXQoJHBheWxvYWRbJ2JvZHknXSkgPyAoc3RyaW5nKSAkcGF5bG9hZFsnYm9keSddIDogJyc7CiAgICAgICAgJG1ldGEgPSBpc3NldCgkcGF5bG9hZFsnbWV0YSddKSAmJiBpc19hcnJheSgkcGF5bG9hZFsnbWV0YSddKSA/ICRwYXlsb2FkWydtZXRhJ10gOiBhcnJheSgpOwoKICAgICAgICBpZiAoJGNhdGVnb3J5ICE9PSAnY3JvbicgJiYgJGNhdGVnb3J5ICE9PSAnaGVhbHRoJyAmJiAhc2VsZjo6cmF0ZUFsbG93KCRtb2QsICRjYXRlZ29yeSkpIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICAkZGIgPSAkbW9kLT5HZXREYigpOwogICAgICAgICRjb250ZXh0SnNvbiA9IGpzb25fZW5jb2RlKCRtZXRhLCBKU09OX1VORVNDQVBFRF9TTEFTSEVTIHwgSlNPTl9VTkVTQ0FQRURfVU5JQ09ERSk7CiAgICAgICAgaWYgKCRjb250ZXh0SnNvbiA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgJGNvbnRleHRKc29uID0gJ3t9JzsKICAgICAgICB9CgogICAgICAgICRzZXEgPSAkZGItPkdlbklEKENNU19EQl9QUkVGSVggLiAnbW9kX21hc19uY19ub3RpZmljYXRpb25zX3NlcScpOwogICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gJyAuIE1BU19OQ19UYWJsZXM6Om5vdGlmaWNhdGlvbnMoKQogICAgICAgICAgICAuICcgKGlkLCBjcmVhdGVkLCBzZXZlcml0eSwgY2F0ZWdvcnksIHNvdXJjZSwgdGl0bGUsIGJvZHksIGNvbnRleHRfanNvbiwgZGVsaXZlcmVkX21hc2ssIGlzX3JlYWQpJwogICAgICAgICAgICAuICcgVkFMVUVTICg/LD8sPyw/LD8sPyw/LD8sPyw/KSc7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRzcWwsIGFycmF5KAogICAgICAgICAgICAkc2VxLAogICAgICAgICAgICB0aW1lKCksCiAgICAgICAgICAgICRzZXZlcml0eSwKICAgICAgICAgICAgJGNhdGVnb3J5LAogICAgICAgICAgICAkc291cmNlLAogICAgICAgICAgICAkdGl0bGUsCiAgICAgICAgICAgICRib2R5LAogICAgICAgICAgICAkY29udGV4dEpzb24sCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAsCiAgICAgICAgKSk7CgogICAgICAgICRtYXNrID0gKGludCkgTUFTX05DX0Rpc3BhdGNoZXI6OmRlbGl2ZXIoJG1vZCwgJHNlcSwgJHRpdGxlLCAkYm9keSwgJHNldmVyaXR5LCAkY2F0ZWdvcnkpOwogICAgICAgICRkYi0+RXhlY3V0ZSgKICAgICAgICAgICAgJ1VQREFURSAnIC4gTUFTX05DX1RhYmxlczo6bm90aWZpY2F0aW9ucygpIC4gJyBTRVQgZGVsaXZlcmVkX21hc2sgPSA/IFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIGFycmF5KCRtYXNrLCAkc2VxKQogICAgICAgICk7CgogICAgICAgIHJldHVybiAoaW50KSAkc2VxOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHJhdGVBbGxvdyhDTVNNb2R1bGUgJG1vZCwgc3RyaW5nICRjYXRlZ29yeSk6IGJvb2wKICAgIHsKICAgICAgICAkbWF4ID0gKGludCkgJG1vZC0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX3JhdGVfcGVyX2hvdXInLCAnMTIwJyk7CiAgICAgICAgaWYgKCRtYXggPCAxKSB7CiAgICAgICAgICAgICRtYXggPSAxMjA7CiAgICAgICAgfQogICAgICAgICR3aW5kb3cgPSAzNjAwOwogICAgICAgICRrZXkgPSAnbWFzX25jX3JsXycgLiBtZDUoJGNhdGVnb3J5KTsKICAgICAgICAkbm93ID0gdGltZSgpOwogICAgICAgICRyYXcgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCRrZXksICcnKTsKICAgICAgICAkZGF0YSA9ICgkcmF3ICE9PSAnJyAmJiBpc19zdHJpbmcoJHJhdykpID8ganNvbl9kZWNvZGUoJHJhdywgdHJ1ZSkgOiBudWxsOwogICAgICAgIGlmICghaXNfYXJyYXkoJGRhdGEpIHx8ICFpc3NldCgkZGF0YVsndCddLCAkZGF0YVsnYyddKSkgewogICAgICAgICAgICAkZGF0YSA9IGFycmF5KCd0JyA9PiAkbm93LCAnYycgPT4gMCk7CiAgICAgICAgfQogICAgICAgIGlmICgoJG5vdyAtIChpbnQpICRkYXRhWyd0J10pID4gJHdpbmRvdykgewogICAgICAgICAgICAkZGF0YSA9IGFycmF5KCd0JyA9PiAkbm93LCAnYycgPT4gMCk7CiAgICAgICAgfQogICAgICAgICRkYXRhWydjJ10gPSAoaW50KSAkZGF0YVsnYyddICsgMTsKICAgICAgICAkbW9kLT5TZXRQcmVmZXJlbmNlKCRrZXksIGpzb25fZW5jb2RlKCRkYXRhLCBKU09OX1VORVNDQVBFRF9VTklDT0RFKSk7CiAgICAgICAgaWYgKCRkYXRhWydjJ10gPiAkbWF4KSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_tables.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFRhYmxlIG5hbWUgaGVscGVycyBmb3IgTUFTX05vdGlmaWNhdGlvbkNlbnRlci4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKZmluYWwgY2xhc3MgTUFTX05DX1RhYmxlcwp7CiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vdGlmaWNhdGlvbnMoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIENNU19EQl9QUkVGSVggLiAnbW9kX21hc19uY19ub3RpZmljYXRpb25zJzsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHB1c2hfc3Vic2NyaXB0aW9ucygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gQ01TX0RCX1BSRUZJWCAuICdtb2RfbWFzX25jX3B1c2hfc3Vic2NyaXB0aW9ucyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8aW50fHN0cmluZz4gJHJhd0lkcwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlbGV0ZU5vdGlmaWNhdGlvbnNCeUlkcyhDTVNNb2R1bGUgJG1vZCwgYXJyYXkgJHJhd0lkcyk6IHZvaWQKICAgIHsKICAgICAgICAkaWRzID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoICgkcmF3SWRzIGFzICRyaWQpIHsKICAgICAgICAgICAgJHJpZCA9IChpbnQpICRyaWQ7CiAgICAgICAgICAgIGlmICgkcmlkID4gMCkgewogICAgICAgICAgICAgICAgJGlkc1tdID0gJHJpZDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoZW1wdHkoJGlkcykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJGRiID0gJG1vZC0+R2V0RGIoKTsKICAgICAgICAkdGFibGUgPSBzZWxmOjpub3RpZmljYXRpb25zKCk7CiAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnIC4gJHRhYmxlIC4gJyBXSEVSRSBpZCBJTiAoJyAuIHN0cl9yZXBlYXQoJz8sJywgY291bnQoJGlkcykgLSAxKSAuICc/KSc7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRzcWwsICRpZHMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_urls.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJlc29sdmUgbW9kdWxlIHB1YmxpYyBVUkwgYmFzZSB3aXRob3V0IGRvdWJsaW5nIHNtYXJ0X3Jvb3RfdXJsIHdoZW4gR2V0TW9kdWxlVVJMUGF0aCBpcyBhYnNvbHV0ZS4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKLyoqCiAqIEByZXR1cm4gc3RyaW5nIG5vIHRyYWlsaW5nIHNsYXNoCiAqLwpmdW5jdGlvbiBtYXNfbmNfbW9kdWxlX3B1YmxpY19iYXNlKENNU01vZHVsZSAkbW9kKTogc3RyaW5nCnsKICAgICRwYXRoID0gcnRyaW0oKHN0cmluZykgJG1vZC0+R2V0TW9kdWxlVVJMUGF0aCgpLCAnLycpOwogICAgaWYgKCRwYXRoICE9PSAnJyAmJiBwcmVnX21hdGNoKCcjXmh0dHBzPzovLyNpJywgJHBhdGgpKSB7CiAgICAgICAgcmV0dXJuICRwYXRoOwogICAgfQogICAgJGNmZyA9IGNtc19jb25maWc6OmdldF9pbnN0YW5jZSgpOwoKICAgIHJldHVybiBydHJpbSgkY2ZnLT5zbWFydF9yb290X3VybCgpLCAnLycpIC4gJHBhdGg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_webpush.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFdlYiBQdXNoIHZpYSBtaW5pc2hsaW5rL3dlYi1wdXNoIChvcHRpb25hbCBDb21wb3NlciB2ZW5kb3IpLgogKi8KaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSB7CiAgICBleGl0Owp9CgpmaW5hbCBjbGFzcyBNQVNfTkNfV2ViUHVzaAp7CiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB2ZW5kb3JBdXRvbG9hZCgpOiBib29sCiAgICB7CiAgICAgICAgc3RhdGljICRkb25lID0gZmFsc2U7CiAgICAgICAgaWYgKCRkb25lKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICAkYmFzZSA9IGRpcm5hbWUoX19ESVJfXykgLiAnL3ZlbmRvci9hdXRvbG9hZC5waHAnOwogICAgICAgIGlmIChpc19maWxlKCRiYXNlKSkgewogICAgICAgICAgICByZXF1aXJlX29uY2UgJGJhc2U7CiAgICAgICAgICAgICRkb25lID0gdHJ1ZTsKCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheXtwdWJsaWNLZXk6c3RyaW5nLHByaXZhdGVLZXk6c3RyaW5nfXxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0VmFwaWRLZXlzKENNU01vZHVsZSAkbW9kKTogP2FycmF5CiAgICB7CiAgICAgICAgJHB1YiA9IHRyaW0oKHN0cmluZykgJG1vZC0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX3ZhcGlkX3B1YmxpYycsICcnKSk7CiAgICAgICAgJHByaXYgPSB0cmltKChzdHJpbmcpICRtb2QtPkdldFByZWZlcmVuY2UoJ21hc19uY192YXBpZF9wcml2YXRlJywgJycpKTsKICAgICAgICBpZiAoJHB1YiA9PT0gJycgfHwgJHByaXYgPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFycmF5KCdwdWJsaWNLZXknID0+ICRwdWIsICdwcml2YXRlS2V5JyA9PiAkcHJpdik7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZW5kVG9BZG1pbnMoQ01TTW9kdWxlICRtb2QsIHN0cmluZyAkdGl0bGUsIHN0cmluZyAkYm9keSk6IGJvb2wKICAgIHsKICAgICAgICAkaW50ZXJuYWxPayA9IGZhbHNlOwogICAgICAgIGlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZW5hYmxlX3B1c2gnLCAnMScpID09PSAnMScgJiYgc2VsZjo6dmVuZG9yQXV0b2xvYWQoKSkgewogICAgICAgICAgICAka2V5cyA9IHNlbGY6OmdldFZhcGlkS2V5cygkbW9kKTsKICAgICAgICAgICAgJHJvd3MgPSAka2V5cyA/IE1BU19OQ19QdXNoUmVwbzo6bG9hZEFsbCgkbW9kKSA6IGFycmF5KCk7CiAgICAgICAgICAgIGlmICgka2V5cyAmJiBjb3VudCgkcm93cykgPiAwKSB7CiAgICAgICAgICAgICAgICAkaW50ZXJuYWxPayA9IHNlbGY6OnNlbmRUb0FkbWluc0ludGVybmFsKCRtb2QsICR0aXRsZSwgJGJvZHksICRrZXlzLCAkcm93cyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJGJyaWRnZU9rID0gZmFsc2U7CiAgICAgICAgaWYgKGNsYXNzX2V4aXN0cygnTUFTX05DX0NHSW50ZXJvcCcpKSB7CiAgICAgICAgICAgICRicmlkZ2VPayA9IE1BU19OQ19DR0ludGVyb3A6OnRyeUNHV2ViUHVzaEJyb2FkY2FzdCgkbW9kLCAkdGl0bGUsICRib2R5KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkaW50ZXJuYWxPayB8fCAkYnJpZGdlT2s7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXl7cHVibGljS2V5OnN0cmluZyxwcml2YXRlS2V5OnN0cmluZ30gJGtleXMKICAgICAqIEBwYXJhbSBhcnJheTxpbnQsYXJyYXk8c3RyaW5nLG1peGVkPj4gJHJvd3MKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gc2VuZFRvQWRtaW5zSW50ZXJuYWwoQ01TTW9kdWxlICRtb2QsIHN0cmluZyAkdGl0bGUsIHN0cmluZyAkYm9keSwgYXJyYXkgJGtleXMsIGFycmF5ICRyb3dzKTogYm9vbAogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRhdXRoID0gYXJyYXkoCiAgICAgICAgICAgICAgICAnVkFQSUQnID0+IGFycmF5KAogICAgICAgICAgICAgICAgICAgICdzdWJqZWN0JyA9PiBzZWxmOjptYWlsdG9TdWJqZWN0KCRtb2QpLAogICAgICAgICAgICAgICAgICAgICdwdWJsaWNLZXknID0+ICRrZXlzWydwdWJsaWNLZXknXSwKICAgICAgICAgICAgICAgICAgICAncHJpdmF0ZUtleScgPT4gJGtleXNbJ3ByaXZhdGVLZXknXSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRwYXlsb2FkID0ganNvbl9lbmNvZGUoCiAgICAgICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgICAgICAgICAndGl0bGUnID0+IG1iX3N1YnN0cigkdGl0bGUsIDAsIDEyMCksCiAgICAgICAgICAgICAgICAgICAgJ2JvZHknID0+IG1iX3N1YnN0cigkYm9keSwgMCwgMTAyNCksCiAgICAgICAgICAgICAgICAgICAgJ3RhZycgPT4gJ21hcy1uYy0nIC4gdGltZSgpLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIEpTT05fVU5FU0NBUEVEX1NMQVNIRVMgfCBKU09OX1VORVNDQVBFRF9VTklDT0RFCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkcGF5bG9hZCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHdlYlB1c2ggPSBuZXcgTWluaXNobGlua1xXZWJQdXNoXFdlYlB1c2goJGF1dGgsIGFycmF5KCdUVEwnID0+IDMwMCkpOwogICAgICAgICAgICAkYW55ID0gZmFsc2U7CiAgICAgICAgICAgIGZvcmVhY2ggKCRyb3dzIGFzICRyb3cpIHsKICAgICAgICAgICAgICAgICRzdWJBcnIgPSBNQVNfTkNfUHVzaFJlcG86OnN1YnNjcmlwdGlvbkZyb21Sb3coJHJvdyk7CiAgICAgICAgICAgICAgICBpZiAoISRzdWJBcnIgfHwgZW1wdHkoJHN1YkFyclsnZW5kcG9pbnQnXSkpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgJHN1YnNjcmlwdGlvbiA9IE1pbmlzaGxpbmtcV2ViUHVzaFxTdWJzY3JpcHRpb246OmNyZWF0ZSgkc3ViQXJyKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHdlYlB1c2gtPnNlbmROb3RpZmljYXRpb24oJHN1YnNjcmlwdGlvbiwgJHBheWxvYWQpOwogICAgICAgICAgICAgICAgJGFueSA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCEkYW55KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yZWFjaCAoJHdlYlB1c2gtPmZsdXNoKCkgYXMgJHJlcG9ydCkgewogICAgICAgICAgICAgICAgaWYgKCRyZXBvcnQtPmlzU3VjY2VzcygpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcmVzcCA9IG1ldGhvZF9leGlzdHMoJHJlcG9ydCwgJ2dldFJlc3BvbnNlJykgPyAkcmVwb3J0LT5nZXRSZXNwb25zZSgpIDogbnVsbDsKICAgICAgICAgICAgICAgICRjb2RlID0gKCRyZXNwICYmIG1ldGhvZF9leGlzdHMoJHJlc3AsICdnZXRTdGF0dXNDb2RlJykpID8gKGludCkgJHJlc3AtPmdldFN0YXR1c0NvZGUoKSA6IDA7CiAgICAgICAgICAgICAgICBpZiAoJGNvZGUgPT09IDQxMCB8fCAkY29kZSA9PT0gNDA0KSB7CiAgICAgICAgICAgICAgICAgICAgJGVuZHBvaW50ID0gKHN0cmluZykgJHJlcG9ydC0+Z2V0UmVxdWVzdCgpLT5nZXRVcmkoKTsKICAgICAgICAgICAgICAgICAgICAkaWQgPSBoYXNoKCdzaGEyNTYnLCAkZW5kcG9pbnQpOwogICAgICAgICAgICAgICAgICAgIE1BU19OQ19QdXNoUmVwbzo6ZGVsZXRlKCRtb2QsICRpZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkZSkgewogICAgICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdhdWRpdCcpKSB7CiAgICAgICAgICAgICAgICBhdWRpdCgwLCAnTUFTX05vdGlmaWNhdGlvbkNlbnRlcicsICdXZWIgUHVzaCBiYXRjaCBmYWlsZWQgKGRldGFpbHMgb21pdHRlZCknKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbWFpbHRvU3ViamVjdChDTVNNb2R1bGUgJG1vZCk6IHN0cmluZwogICAgewogICAgICAgICRhZG1pbkVtYWlsID0gKHN0cmluZykgJG1vZC0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX3ZhcGlkX2NvbnRhY3QnLCAnbWFpbHRvOmluZm9AbmV3c3RhcmdldGVkLmNvbScpOwogICAgICAgIGlmIChzdHJwb3MoJGFkbWluRW1haWwsICdtYWlsdG86JykgIT09IDAgJiYgZmlsdGVyX3ZhcigkYWRtaW5FbWFpbCwgRklMVEVSX1ZBTElEQVRFX0VNQUlMKSkgewogICAgICAgICAgICByZXR1cm4gJ21haWx0bzonIC4gJGFkbWluRW1haWw7CiAgICAgICAgfQogICAgICAgIGlmIChzdHJwb3MoJGFkbWluRW1haWwsICdtYWlsdG86JykgPT09IDApIHsKICAgICAgICAgICAgcmV0dXJuICRhZG1pbkVtYWlsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICdtYWlsdG86aW5mb0BuZXdzdGFyZ2V0ZWQuY29tJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/MAS_NotificationCenter.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnL2xpYi9jbGFzcy5NYXNNb2R1bGVSZXF1ZXN0LnBocCc7CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFNlZSBMSUNFTlNFIGZvciBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24uCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovKioKICogTUFTX05vdGlmaWNhdGlvbkNlbnRlcjogaW50ZXJuYWwgbm90aWZpY2F0aW9ucyBmb3IgQ01TIE1hZGUgU2ltcGxlIChNSVQpLgogKgogKiBAYXV0aG9yIG1hc3RlcjMzOTUKICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnL2xpYi9tYXNfY29tbW9uX2xvYWRlci5waHAnOwoKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnL2xpYi9tYXNfbmNfdGFibGVzLnBocCc7CnJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy9saWIvbWFzX25jX3VybHMucGhwJzsKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnL2xpYi9tYXNfbmNfY2hhbmdlbG9nLnBocCc7CnJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy9saWIvbWFzX25jX3B1c2hfcmVwby5waHAnOwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvbGliL21hc19uY193ZWJwdXNoLnBocCc7CnJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy9saWIvbWFzX25jX2Rpc3BhdGNoZXIucGhwJzsKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnL2xpYi9tYXNfbmNfcm91dGVyLnBocCc7CnJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy9saWIvbWFzX25jX2hlYWx0aC5waHAnOwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvbGliL21hc19uY19jb3JlX2V2ZW50cy5waHAnOwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvbGliL21hc19uY19jZ19pbnRlcm9wLnBocCc7CnJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy9saWIvbWFzX25jX3B3YV9zdGFuZGFsb25lLnBocCc7CgpmaW5hbCBjbGFzcyBNQVNfTm90aWZpY2F0aW9uQ2VudGVyIGV4dGVuZHMgQ01TTW9kdWxlCnsKICAgIHB1YmxpYyBjb25zdCBQRVJNX01BTkFHRSA9ICdNYW5hZ2UgTUFTX05vdGlmaWNhdGlvbkNlbnRlcic7CgogICAgcHVibGljIGNvbnN0IEVWVF9OT1RJRlkgPSAnTm90aWZ5JzsKCiAgICAvKioKICAgICAqIFByb2dyYW1tYXRpYyBBUEkgZm9yIG90aGVyIFBIUCBjb2RlIChzYW1lIG1vZHVsZSByZXF1ZXN0KS4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLG1peGVkPiAkcGF5bG9hZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vdGlmeShhcnJheSAkcGF5bG9hZCk6IGludAogICAgewogICAgICAgICRtID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQVNfTm90aWZpY2F0aW9uQ2VudGVyJyk7CiAgICAgICAgaWYgKCEkbSBpbnN0YW5jZW9mIHNlbGYpIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gTUFTX05DX1JvdXRlcjo6bm90aWZ5KCRtLCAkcGF5bG9hZCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldE5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnTUFTX05vdGlmaWNhdGlvbkNlbnRlcic7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VmVyc2lvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICcxLjAuNic7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvcigpCiAgICB7CiAgICAgICAgcmV0dXJuICdtYXN0ZXIzMzk1JzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQogICAgewogICAgICAgIHJldHVybiAnaW5mb0BuZXdzdGFyZ2V0ZWQuY29tJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRIZWxwKCkKICAgIHsKICAgICAgICByZXF1aXJlX29uY2UgZGlybmFtZShfX0ZJTEVfXykgLiAnL2xpYi9tYXNfY29tbW9uX2xvYWRlci5waHAnOwptYXNfcmVxdWlyZV9tYXNfYWRtaW5fdWkoKTsKcmV0dXJuIE1hc19BZG1pbl9VaTo6ZmV0Y2hUYWJiZWRIZWxwKCR0aGlzLCBhcnJheSgKICAgICAgICAgICAgYXJyYXkoJ2lkJyA9PiAnZ2VuZXJhbCcsICdsYW5nJyA9PiAnaGVscF90YWJfZ2VuZXJhbCcpLAogICAgICAgICAgICBhcnJheSgnaWQnID0+ICdjaGFubmVscycsICdsYW5nJyA9PiAnaGVscF90YWJfY2hhbm5lbHMnKSwKICAgICAgICAgICAgYXJyYXkoJ2lkJyA9PiAnaW50ZXJvcCcsICdsYW5nJyA9PiAnaGVscF90YWJfaW50ZXJvcCcpLAogICAgICAgICkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBYm91dCgpCiAgICB7CiAgICAgICAgcmVxdWlyZV9vbmNlIGRpcm5hbWUoX19GSUxFX18pIC4gJy9saWIvbWFzX2NvbW1vbl9sb2FkZXIucGhwJzsKbWFzX3JlcXVpcmVfbWFzX2FkbWluX3VpKCk7CnJldHVybiBNYXNfQWRtaW5fVWk6OmZldGNoVGFiYmVkQWJvdXQoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKQogICAgewogICAgICAgICRiYXNlRGlyID0gcmVhbHBhdGgoJHRoaXMtPkdldE1vZHVsZVBhdGgoKSk7CiAgICAgICAgJGZpbGUgPSByZWFscGF0aCgkdGhpcy0+R2V0TW9kdWxlUGF0aCgpIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdDSEFOR0VMT0cubWQnKTsKICAgICAgICBpZiAoISRiYXNlRGlyIHx8ICEkZmlsZSB8fCAhaXNfZmlsZSgkZmlsZSkgfHwgIWlzX3JlYWRhYmxlKCRmaWxlKSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgICAgIGlmIChzdHJwb3MoJGZpbGUsICRiYXNlRGlyKSAhPT0gMCB8fCBiYXNlbmFtZSgkZmlsZSkgIT09ICdDSEFOR0VMT0cubWQnKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICAgICAgJG1hcmtkb3duID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlKTsKICAgICAgICBpZiAoJG1hcmtkb3duID09PSBmYWxzZSB8fCAkbWFya2Rvd24gPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0ibWFzX25jX2NoYW5nZWxvZ19odG1sIj4nIC4gTUFTX05DX0NoYW5nZWxvZzo6bWFya2Rvd25Ub0h0bWwoKHN0cmluZykgJG1hcmtkb3duKSAuICc8L2Rpdj4nOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBIYW5kbGVzRXZlbnRzKCkKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gUmVnaXN0ZXJFdmVudHMoKQogICAgewogICAgICAgICR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCAnQWRkVXNlclBvc3QnLCBmYWxzZSk7CiAgICAgICAgJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdNb2R1bGVJbnN0YWxsZWQnLCBmYWxzZSk7CiAgICAgICAgJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdNb2R1bGVVcGdyYWRlZCcsIGZhbHNlKTsKICAgICAgICAkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ01vZHVsZVVuaW5zdGFsbGVkJywgZmFsc2UpOwogICAgICAgICR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCAnTG9naW5GYWlsZWQnLCBmYWxzZSk7CiAgICAgICAgJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdEZWxldGVVc2VyUG9zdCcsIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsbWl4ZWQ+ICRwYXJhbXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIERvRXZlbnQoJG9yaWdpbmF0b3IsICRldmVudG5hbWUsICYkcGFyYW1zKQogICAgewogICAgICAgIGlmICgkb3JpZ2luYXRvciA9PT0gJ0NvcmUnKSB7CiAgICAgICAgICAgIE1BU19OQ19Db3JlRXZlbnRzOjpoYW5kbGUoJHRoaXMsICRvcmlnaW5hdG9yLCAkZXZlbnRuYW1lLCAkcGFyYW1zKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEV2ZW50SGVscCgkZXZlbnRuYW1lKQogICAgewogICAgICAgICRrZXkgPSAnZXZlbnRoZWxwXycgLiAkZXZlbnRuYW1lOwoKICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJGtleSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEV2ZW50RGVzY3JpcHRpb24oJGV2ZW50bmFtZSkKICAgIHsKICAgICAgICAka2V5ID0gJ2V2ZW50ZGVzY18nIC4gJGV2ZW50bmFtZTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCRrZXkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEhhc0FkbWluKCkKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkKICAgIHsKICAgICAgICBzdGF0aWMgJGFsbG93ZWQgPSBudWxsOwogICAgICAgIGlmICgkYWxsb3dlZCA9PT0gbnVsbCkgewogICAgICAgICAgICAkYWxsb3dlZCA9IGFycmF5KAogICAgICAgICAgICAgICAgJ21haW4nLAogICAgICAgICAgICAgICAgJ2NvbnRlbnQnLAogICAgICAgICAgICAgICAgJ2xheW91dCcsCiAgICAgICAgICAgICAgICAnZmlsZXMnLAogICAgICAgICAgICAgICAgJ3VzZXJzZ3JvdXBzJywKICAgICAgICAgICAgICAgICdleHRlbnNpb25zJywKICAgICAgICAgICAgICAgICdzaXRlYWRtaW4nLAogICAgICAgICAgICAgICAgJ2Vjb21tZXJjZScsCiAgICAgICAgICAgICAgICAnbXlwcmVmcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRkZWZhdWx0ID0gJ2V4dGVuc2lvbnMnOwogICAgICAgICR2ID0gdHJpbSgoc3RyaW5nKSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2FkbWluX3NlY3Rpb24nLCAkZGVmYXVsdCkpOwogICAgICAgIGlmICghaW5fYXJyYXkoJHYsICRhbGxvd2VkLCB0cnVlKSkgewogICAgICAgICAgICByZXR1cm4gJGRlZmF1bHQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHY7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oc2VsZjo6UEVSTV9NQU5BR0UpCiAgICAgICAgICAgIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJzIuMi4xMCc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldE1pbmltdW1QSFBWZXJzaW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJzcuNC4wJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdyZWFsbHlfdW5pbnN0YWxsJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIExhenlMb2FkQWRtaW4oKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gTGF6eUxvYWRGcm9udGVuZCgpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRQYXJhbWV0ZXJzKCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19jaGFpbl9jZ19zaW1wbGVfcHdhJywgJzAnKSAhPT0gJzEnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJHB3YSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dTaW1wbGVQV0EnKTsKICAgICAgICBpZiAoISRwd2EgfHwgIWNsYXNzX2V4aXN0cygnQ0dTaW1wbGVQV0FcU2VydmljZVdvcmtlckFkZG9uJykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkYWRkb25GaWxlID0gY21zX2pvaW5fcGF0aCgkdGhpcy0+R2V0TW9kdWxlUGF0aCgpLCAnbGliJywgJ21hc19uY19wd2FfYWRkb24ucGhwJyk7CiAgICAgICAgaWYgKCFpc19yZWFkYWJsZSgkYWRkb25GaWxlKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHJlcXVpcmVfb25jZSAkYWRkb25GaWxlOwogICAgICAgIGlmIChjbGFzc19leGlzdHMoJ01BU19OQ19Qd2FBZGRvbicpKSB7CiAgICAgICAgICAgICRwd2EtPnJlZ2lzdGVyU2VydmljZVdvcmtlckFkZG9uKG5ldyBNQVNfTkNfUHdhQWRkb24oJHRoaXMpKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEhlYWRlckhUTUwoJGFjdGlvbiA9ICcnKQogICAgewogICAgICAgIGlmICghY2xhc3NfZXhpc3RzKCdNQVNfTkNfUHdhU3RhbmRhbG9uZScpKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBNQVNfTkNfUHdhU3RhbmRhbG9uZTo6YWRtaW5IZWFkTWFya3VwKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU3VwcHJlc3NBZG1pbk91dHB1dCgmJHJlcXVlc3QpCiAgICB7CiAgICAgICAgaWYgKCgkbWFjdFZhbCA9IE1hc01vZHVsZVJlcXVlc3Q6OnF1ZXJ5KCdtYWN0JykpICE9PSAnJykgewogICAgICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsICRtYWN0VmFsKTsKICAgICAgICAgICAgaWYgKGNvdW50KCR0bXApID4gMiAmJiAkdG1wWzBdID09PSAnTUFTX05vdGlmaWNhdGlvbkNlbnRlcicgJiYgJHRtcFsyXSA9PT0gJ2FqYXhfcHVzaF9zdWJzY3JpYmUnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBJbml0aWFsaXplRnJvbnRlbmQoKQogICAgewogICAgICAgICR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbih0cnVlLCBmYWxzZSk7CiAgICAgICAgJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOwogICAgICAgIHN0YXRpYyAkaG9va0RvbmUgPSBmYWxzZTsKICAgICAgICBpZiAoISRob29rRG9uZSkgewogICAgICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmFkZF9ob29rKCdNQVNfTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZnknLCBhcnJheShfX0NMQVNTX18sICdob29rTm90aWZ5SW5jb21pbmcnKSk7CiAgICAgICAgICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6YWRkX2hvb2soJ21ldGFkYXRhX3Bvc3RyZW5kZXInLCBhcnJheSgnTUFTX05DX1B3YVN0YW5kYWxvbmUnLCAnaG9va01ldGFkYXRhUG9zdHJlbmRlcicpKTsKICAgICAgICAgICAgJGhvb2tEb25lID0gdHJ1ZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5tYXliZVJlZ2lzdGVyU2h1dGRvd25Qcm9iZSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICRwYXlsb2FkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaG9va05vdGlmeUluY29taW5nKCRwYXlsb2FkKTogdm9pZAogICAgewogICAgICAgIGlmICghaXNfYXJyYXkoJHBheWxvYWQpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJG0gPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BU19Ob3RpZmljYXRpb25DZW50ZXInKTsKICAgICAgICBpZiAoISRtIGluc3RhbmNlb2Ygc2VsZikgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIE1BU19OQ19Sb3V0ZXI6Om5vdGlmeSgkbSwgJHBheWxvYWQpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gbWF5YmVSZWdpc3RlclNodXRkb3duUHJvYmUoKTogdm9pZAogICAgewogICAgICAgIHN0YXRpYyAkcmVnaXN0ZXJlZCA9IGZhbHNlOwogICAgICAgIGlmICgkcmVnaXN0ZXJlZCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2ZhdGFsX3NodXRkb3duJywgJzAnKSAhPT0gJzEnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgcmVnaXN0ZXJfc2h1dGRvd25fZnVuY3Rpb24oYXJyYXkoX19DTEFTU19fLCAnc2h1dGRvd25Qcm9iZScpKTsKICAgICAgICAkcmVnaXN0ZXJlZCA9IHRydWU7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaHV0ZG93blByb2JlKCk6IHZvaWQKICAgIHsKICAgICAgICAkZXJyID0gZXJyb3JfZ2V0X2xhc3QoKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRlcnIpIHx8ICFpc3NldCgkZXJyWyd0eXBlJ10pKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJGZhdGFsVHlwZXMgPSBhcnJheShFX0VSUk9SLCBFX1BBUlNFLCBFX0NPUkVfRVJST1IsIEVfQ09NUElMRV9FUlJPUiwgRV9VU0VSX0VSUk9SKTsKICAgICAgICBpZiAoIWluX2FycmF5KChpbnQpICRlcnJbJ3R5cGUnXSwgJGZhdGFsVHlwZXMsIHRydWUpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJG0gPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BU19Ob3RpZmljYXRpb25DZW50ZXInKTsKICAgICAgICBpZiAoISRtIGluc3RhbmNlb2Ygc2VsZikgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICRtc2cgPSBpc3NldCgkZXJyWydtZXNzYWdlJ10pID8gKHN0cmluZykgJGVyclsnbWVzc2FnZSddIDogJ2ZhdGFsJzsKICAgICAgICAkbXNnID0gcHJlZ19yZXBsYWNlKCcvXHMrLycsICcgJywgc3RyaXBfdGFncygkbXNnKSk7CiAgICAgICAgJG1zZyA9IG1iX3N1YnN0cigkbXNnLCAwLCA0MDApOwogICAgICAgIE1BU19OQ19Sb3V0ZXI6Om5vdGlmeSgkbSwgYXJyYXkoCiAgICAgICAgICAgICdzZXZlcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgJ2NhdGVnb3J5JyA9PiAnc3lzdGVtJywKICAgICAgICAgICAgJ3NvdXJjZScgPT4gJ3NodXRkb3duJywKICAgICAgICAgICAgJ3RpdGxlJyA9PiAkbS0+TGFuZygnZmF0YWxfbm90aWZ5X3RpdGxlJyksCiAgICAgICAgICAgICdib2R5JyA9PiAkbXNnLAogICAgICAgICAgICAnbWV0YScgPT4gYXJyYXkoKSwKICAgICAgICApKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUFkbWluKCkKICAgIHsKICAgICAgICAkdGhpcy0+bWF5YmVSZWdpc3RlclNodXRkb3duUHJvYmUoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2hvd0RvbmF0aW9uc1RhYigpCiAgICB7CiAgICAgICAgcmV0dXJuICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaGlkZWRvbmF0aW9uc3RhYicsICcnKSAhPT0gJHRoaXMtPkdldFZlcnNpb24oKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSBleGl0OwppZiAoIWRlZmluZWQoJ0NNU19WRVJTSU9OJykpIHsKICAgIGV4aXQ7Cn0KCmlmICghZnVuY3Rpb25fZXhpc3RzKCdnbXBfYWJzJykpIHsKICAgIHJldHVybiAnR01QIGV4dGVuc2lvbiBpcyByZXF1aXJlZCBmb3IgV2ViIFB1c2ggVkFQSUQga2V5cy4gRW5hYmxlIHBocC1nbXAgYW5kIHJlaW5zdGFsbC4nOwp9CgokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTWFuYWdlIE1BU19Ob3RpZmljYXRpb25DZW50ZXInLCAnQ29uZmlndXJlIE1BUyBOb3RpZmljYXRpb24gQ2VudGVyLCBhbGVydHMsIGFuZCB0cmFuc3BvcnRzJyk7CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoKJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsKCiRmbGRzID0gJwogICAgaWQgSSBLRVkgTk9UTlVMTCwKICAgIGNyZWF0ZWQgSSBOT1ROVUxMLAogICAgc2V2ZXJpdHkgQygxNikgTk9UTlVMTCwKICAgIGNhdGVnb3J5IEMoNjQpIE5PVE5VTEwsCiAgICBzb3VyY2UgQygxMjgpIE5PVE5VTEwsCiAgICB0aXRsZSBDKDI1NSkgTk9UTlVMTCwKICAgIGJvZHkgWCBOT1ROVUxMLAogICAgY29udGV4dF9qc29uIFgyLAogICAgZGVsaXZlcmVkX21hc2sgSSBOT1ROVUxMIERFRkFVTFQgMCwKICAgIGlzX3JlYWQgSTEgTk9UTlVMTCBERUZBVUxUIDAKJzsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKENNU19EQl9QUkVGSVggLiAnbW9kX21hc19uY19ub3RpZmljYXRpb25zJywgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJGRiLT5DcmVhdGVTZXF1ZW5jZShDTVNfREJfUFJFRklYIC4gJ21vZF9tYXNfbmNfbm90aWZpY2F0aW9uc19zZXEnKTsKCiRmbGRzMiA9ICcKICAgIGlkIEMoNjQpIEtFWSBOT1ROVUxMLAogICAgc3Vic2NyaXB0aW9uX2pzb24gWCBOT1ROVUxMLAogICAgYWRtaW5fdWlkIEkgTk9UTlVMTCBERUZBVUxUIDAsCiAgICBjcmVhdGVkIEkgTk9UTlVMTCwKICAgIGxhc3Rfc2VlbiBJIE5PVE5VTEwKJzsKJHNxbGFycmF5MiA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChDTVNfREJfUFJFRklYIC4gJ21vZF9tYXNfbmNfcHVzaF9zdWJzY3JpcHRpb25zJywgJGZsZHMyLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheTIpOwoKJHRoaXMtPkNyZWF0ZUV2ZW50KCdOb3RpZnknKTsKCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfZW5hYmxlX2VtYWlsJywgJzEnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19lbmFibGVfZGlzY29yZCcsICcwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfZW5hYmxlX3B1c2gnLCAnMScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2VtYWlsX3JlY2lwaWVudHMnLCAnJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfZGlzY29yZF93ZWJob29rJywgJycpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX3JhdGVfcGVyX2hvdXInLCAnMTIwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfZXZ0X2xvZ2luX2ZhaWxlZCcsICcwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfZXZ0X2RlbGV0ZV91c2VyJywgJzAnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19oZWFsdGhfbWluX3BocCcsICc3LjQuMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2hlYWx0aF9kaXNrX3BjdCcsICcxMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2hlYWx0aF9kYl9tcycsICcyMDAwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfZmF0YWxfc2h1dGRvd24nLCAnMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX3ZhcGlkX2NvbnRhY3QnLCAnbWFpbHRvOmluZm9AbmV3c3RhcmdldGVkLmNvbScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2hlYWx0aF9vbl9jcm9uJywgJzEnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hpZGVkb25hdGlvbnN0YWInLCAnJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfYWRtaW5fc2VjdGlvbicsICdleHRlbnNpb25zJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfY2hhaW5fY2dfc2ltcGxlX3B3YScsICcwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfZnJvbnRlbmRfcHdhJywgJzAnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY190aGVtZV9jb2xvcicsICcjMDA3OGQ0Jyk7CgppZiAoZnVuY3Rpb25fZXhpc3RzKCdyYW5kb21fYnl0ZXMnKSkgewogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19jcm9uX3Rva2VuJywgYmluMmhleChyYW5kb21fYnl0ZXMoMjQpKSk7Cn0gZWxzZSB7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2Nyb25fdG9rZW4nLCBzaGExKHVuaXFpZCgoc3RyaW5nKSBtdF9yYW5kKCksIHRydWUpKSk7Cn0KCiRhdXRvID0gY21zX2pvaW5fcGF0aCgkdGhpcy0+R2V0TW9kdWxlUGF0aCgpLCAndmVuZG9yJywgJ2F1dG9sb2FkLnBocCcpOwppZiAoaXNfcmVhZGFibGUoJGF1dG8pKSB7CiAgICByZXF1aXJlX29uY2UgJGF1dG87CiAgICB0cnkgewogICAgICAgIGlmIChjbGFzc19leGlzdHMoJ01pbmlzaGxpbmtcXFdlYlB1c2hcXFZBUElEJykpIHsKICAgICAgICAgICAgJGtleXMgPSBNaW5pc2hsaW5rXFdlYlB1c2hcVkFQSUQ6OmNyZWF0ZVZhcGlkS2V5cygpOwogICAgICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX3ZhcGlkX3B1YmxpYycsICRrZXlzWydwdWJsaWNLZXknXSk7CiAgICAgICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfdmFwaWRfcHJpdmF0ZScsICRrZXlzWydwcml2YXRlS2V5J10pOwogICAgICAgIH0KICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkZSkgewogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2F1ZGl0JykpIHsKICAgICAgICAgICAgYXVkaXQoMCwgJ01BU19Ob3RpZmljYXRpb25DZW50ZXInLCAnVkFQSUQga2V5IGdlbmVyYXRpb24gc2tpcHBlZCBkdXJpbmcgaW5zdGFsbC4nKTsKICAgICAgICB9CiAgICB9Cn0KCiR0aGlzLT5SZWdpc3RlckV2ZW50cygpOwoKcmVxdWlyZV9vbmNlIGRpcm5hbWUoX19GSUxFX18pIC4gJy9saWIvbWFzX2NvbW1vbl9sb2FkZXIucGhwJzsKbWFzX3JlcXVpcmVfbWFzX2FkbWluX3VpKCk7Ck1hc19BZG1pbl9VaTo6ZW5zdXJlSWNvbkdpZigkdGhpcyk7Ck1hc19BZG1pbl9VaTo6ZW5zdXJlQmFubmVyKCR0aGlzKTsKTWFzX0FkbWluX1VpOjplbnN1cmVGb3JnZUFzc2V0cygkdGhpcyk7Cg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSBleGl0OwppZiAoIWRlZmluZWQoJ0NNU19WRVJTSU9OJykpIHsKICAgIGV4aXQ7Cn0KCiRkYiA9ICR0aGlzLT5HZXREYigpOwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKENNU19EQl9QUkVGSVggLiAnbW9kX21hc19uY19ub3RpZmljYXRpb25zJyk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChDTVNfREJfUFJFRklYIC4gJ21vZF9tYXNfbmNfcHVzaF9zdWJzY3JpcHRpb25zJyk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRkYi0+RHJvcFNlcXVlbmNlKENNU19EQl9QUkVGSVggLiAnbW9kX21hc19uY19ub3RpZmljYXRpb25zX3NlcScpOwoKJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoKTsKCiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNYW5hZ2UgTUFTX05vdGlmaWNhdGlvbkNlbnRlcicpOwoKJHRoaXMtPlJlbW92ZUV2ZW50KCdOb3RpZnknKTsKCiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCAnQWRkVXNlclBvc3QnKTsKJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsICdNb2R1bGVJbnN0YWxsZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsICdNb2R1bGVVcGdyYWRlZCcpOwokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ01vZHVsZVVuaW5zdGFsbGVkJyk7CiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCAnTG9naW5GYWlsZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsICdEZWxldGVVc2VyUG9zdCcpOwo=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSBleGl0OwppZiAoIWRlZmluZWQoJ0NNU19WRVJTSU9OJykpIHsKICAgIGV4aXQ7Cn0KCiRvbGQgPSBpc3NldCgkb2xkdmVyc2lvbikgPyAoc3RyaW5nKSAkb2xkdmVyc2lvbiA6ICcnOwokbmV3VmVyc2lvbiA9ICR0aGlzLT5HZXRWZXJzaW9uKCk7CmlmICgkb2xkICE9PSAnJyAmJiBmdW5jdGlvbl9leGlzdHMoJ2F1ZGl0JykpIHsKICAgIGF1ZGl0KCcnLCAnTUFTX05vdGlmaWNhdGlvbkNlbnRlcicsICdVcGdyYWRlZCBmcm9tICcgLiAkb2xkIC4gJyB0byAnIC4gJG5ld1ZlcnNpb24pOwp9CgppZiAodHJpbSgoc3RyaW5nKSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2FkbWluX3NlY3Rpb24nLCAnJykpID09PSAnJykgewogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19hZG1pbl9zZWN0aW9uJywgJ2V4dGVuc2lvbnMnKTsKfQokY2hhaW4gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2NoYWluX2NnX3NpbXBsZV9wd2EnLCBudWxsKTsKaWYgKCRjaGFpbiAhPT0gJzAnICYmICRjaGFpbiAhPT0gJzEnKSB7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2NoYWluX2NnX3NpbXBsZV9wd2EnLCAnMCcpOwp9CiRmZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZnJvbnRlbmRfcHdhJywgbnVsbCk7CmlmICgkZmUgIT09ICcwJyAmJiAkZmUgIT09ICcxJykgewogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19mcm9udGVuZF9wd2EnLCAnMCcpOwp9CmlmICghcHJlZ19tYXRjaCgnL14jWzAtOUEtRmEtZl17Nn0kLycsIChzdHJpbmcpICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfdGhlbWVfY29sb3InLCAnJykpKSB7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX3RoZW1lX2NvbG9yJywgJyMwMDc4ZDQnKTsKfQoKcmVxdWlyZV9vbmNlIGRpcm5hbWUoX19GSUxFX18pIC4gJy9saWIvbWFzX2NvbW1vbl9sb2FkZXIucGhwJzsKbWFzX3JlcXVpcmVfbWFzX2FkbWluX3VpKCk7Ck1hc19BZG1pbl9VaTo6ZW5zdXJlSWNvbkdpZigkdGhpcyk7Ck1hc19BZG1pbl9VaTo6ZW5zdXJlQmFubmVyKCR0aGlzKTsKTWFzX0FkbWluX1VpOjplbnN1cmVGb3JnZUFzc2V0cygkdGhpcyk7Cg==]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJNQVNfTm90aWZpY2F0aW9uQ2VudGVyIgp2ZXJzaW9uID0gIjEuMC42IgphdXRob3IgPSAibWFzdGVyMzM5NSIKYXV0aG9yZW1haWwgPSAiaW5mb0BuZXdzdGFyZ2V0ZWQuY29tIgptaW5jbXN2ZXJzaW9uID0gIjIuMi4xMCIKbGF6eWxvYWRhZG1pbiA9IDAKbGF6eWxvYWRmcm9udGVuZCA9IDAK]]></data>
	</file>
	<file>
	  <filename>/readme.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBNQVNfTm90aWZpY2F0aW9uQ2VudGVyCgojIyBUaGlyZC1QYXJ0eSBTZXJ2aWNlcwoKLSBkaXNjb3JkLmNvbQo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/about.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0ibWFyZ2luLXRvcDoxMnB4OyI+CiAgPGgzPnskbW9kLT5MYW5nKCdhYm91dF9oZWFkaW5nX21vZHVsZScpfGVzY2FwZTonaHRtbCd9PC9oMz4KICA8cD48c3Ryb25nPnskbW9kLT5MYW5nKCdhYm91dF9sYWJlbF9uYW1lJyl8ZXNjYXBlOidodG1sJ308L3N0cm9uZz4geyRtb2QtPkdldEZyaWVuZGx5TmFtZSgpfGVzY2FwZTonaHRtbCd9PC9wPgogIDxwPjxzdHJvbmc+eyRtb2QtPkxhbmcoJ2Fib3V0X2xhYmVsX3ZlcnNpb24nKXxlc2NhcGU6J2h0bWwnfTwvc3Ryb25nPiB7JG1vZC0+R2V0VmVyc2lvbigpfGVzY2FwZTonaHRtbCd9PC9wPgogIDxwPjxzdHJvbmc+eyRtb2QtPkxhbmcoJ2Fib3V0X2xhYmVsX2F1dGhvcicpfGVzY2FwZTonaHRtbCd9PC9zdHJvbmc+IHskbW9kLT5HZXRBdXRob3IoKXxlc2NhcGU6J2h0bWwnfTwvcD4KICA8cD48c3Ryb25nPnskbW9kLT5MYW5nKCdhYm91dF9sYWJlbF9lbWFpbCcpfGVzY2FwZTonaHRtbCd9PC9zdHJvbmc+IDxhIGhyZWY9Im1haWx0bzp7JG1vZC0+R2V0QXV0aG9yRW1haWwoKXxlc2NhcGU6J3VybCd9Ij57JG1vZC0+R2V0QXV0aG9yRW1haWwoKXxlc2NhcGU6J2h0bWwnfTwvYT48L3A+CiAgPHA+PHN0cm9uZz57JG1vZC0+TGFuZygnYWJvdXRfbGFiZWxfbGljZW5zZScpfGVzY2FwZTonaHRtbCd9PC9zdHJvbmc+IHskbW9kLT5MYW5nKCdhYm91dF9saWNlbnNlX3ZhbHVlJyl8ZXNjYXBlOidodG1sJ308L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8aDM+eyRtb2QtPkxhbmcoJ2Fib3V0X2hlYWRpbmdfY29tcGF0Jyl8ZXNjYXBlOidodG1sJ308L2gzPgogIDxwPnskbW9kLT5MYW5nKCdhYm91dF9taW5fY21zJyl8ZXNjYXBlOidodG1sJ30geyRtb2QtPk1pbmltdW1DTVNWZXJzaW9uKCl8ZXNjYXBlOidodG1sJ308L3A+CiAgPHA+eyRtb2QtPkxhbmcoJ2Fib3V0X21pbl9waHAnKXxlc2NhcGU6J2h0bWwnfSB7JG1vZC0+R2V0TWluaW11bVBIUFZlcnNpb24oKXxlc2NhcGU6J2h0bWwnfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxoMz57JG1vZC0+TGFuZygnYWJvdXRfaGVhZGluZ19zdW1tYXJ5Jyl8ZXNjYXBlOidodG1sJ308L2gzPgogIDxwPnskbW9kLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpfGVzY2FwZTonaHRtbCd9PC9wPgo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/admin_about.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IG1hcy1uYy1hZG1pbi1hYm91dCI+CiAgPGgyPnskbW9kLT5MYW5nKCd0YWJfYWJvdXQnKXxlc2NhcGU6J2h0bWwnfTwvaDI+CiAge2luY2x1ZGUgZmlsZT0nbW9kdWxlX2ZpbGVfdHBsOk1BU19Ob3RpZmljYXRpb25DZW50ZXI7YWJvdXQudHBsJ30KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_changelog.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8aDI+eyRtb2QtPkxhbmcoJ3RhYl9jaGFuZ2Vsb2cnKXxlc2NhcGU6J2h0bWwnfTwvaDI+CiAgPHAgY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygnY2hhbmdlbG9nX25vdGUnKX08L3A+CiAgeyRtYXNfbmNfY2hhbmdlbG9nX2h0bWx9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_help.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IG1hcy1uYy1hZG1pbi1oZWxwIj4KICA8aDI+eyRtb2QtPkxhbmcoJ3RhYl9oZWxwJyl8ZXNjYXBlOidodG1sJ308L2gyPgogIHtpbmNsdWRlIGZpbGU9J21vZHVsZV9maWxlX3RwbDpNQVNfTm90aWZpY2F0aW9uQ2VudGVyO2hlbHAudHBsJ30KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_notifications.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8aDI+eyRtb2QtPkxhbmcoJ3RhYl9ub3RpZmljYXRpb25zJyl8ZXNjYXBlOidodG1sJ308L2gyPgogIDxwIGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ25vdGlmaWNhdGlvbnNfaW50cm8nKX08L3A+CjwvZGl2PgoKeyRzZXR0aW5nc19mb3JtX3N0YXJ0fQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWFjdGl2ZV90YWIiIHZhbHVlPSJub3RpZmljYXRpb25zIj4KCntpZiBpc3NldCgkbWFzX25jX25vdGlmaWNhdGlvbnMpICYmICRtYXNfbmNfbm90aWZpY2F0aW9uc3xAY291bnQgPiAwfQo8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSIgc3R5bGU9IndpZHRoOjEwMCU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOyI+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+PC90aD4KICAgICAgPHRoPnskbW9kLT5MYW5nKCdjb2xfY3JlYXRlZCcpfTwvdGg+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnY29sX3NldmVyaXR5Jyl9PC90aD4KICAgICAgPHRoPnskbW9kLT5MYW5nKCdjb2xfY2F0ZWdvcnknKX08L3RoPgogICAgICA8dGg+eyRtb2QtPkxhbmcoJ2NvbF90aXRsZScpfTwvdGg+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnY29sX2RlbGl2ZXJlZCcpfTwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogIHtmb3JlYWNoIGZyb209JG1hc19uY19ub3RpZmljYXRpb25zIGl0ZW09cm93fQogICAgPHRyPgogICAgICA8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfW1hc19uY19zZWxbXSIgdmFsdWU9Inskcm93LmlkfGVzY2FwZX0iPjwvdGQ+CiAgICAgIDx0ZD57JHJvdy5jcmVhdGVkX2ZtdHxlc2NhcGV9PC90ZD4KICAgICAgPHRkPnskcm93LnNldmVyaXR5fGVzY2FwZX08L3RkPgogICAgICA8dGQ+eyRyb3cuY2F0ZWdvcnl8ZXNjYXBlfTwvdGQ+CiAgICAgIDx0ZD48c3Ryb25nPnskcm93LnRpdGxlfGVzY2FwZX08L3N0cm9uZz48YnI+PHNtYWxsPnskcm93LmJvZHl8ZXNjYXBlfTwvc21hbGw+PC90ZD4KICAgICAgPHRkPnskcm93LmRlbGl2ZXJlZF9tYXNrfGVzY2FwZX08L3RkPgogICAgPC90cj4KICB7L2ZvcmVhY2h9CiAgPC90Ym9keT4KPC90YWJsZT4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0ibWFyZ2luLXRvcDoxMnB4OyI+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hc19uY19kZWxldGVfc2VsZWN0ZWQiIGNsYXNzPSJwYWdlYnV0dG9uIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2J0bl9kZWxldGVfc2VsZWN0ZWQnKX0iIG9uY2xpY2s9InJldHVybiBjb25maXJtKCd7JG1vZC0+TGFuZygnY29uZmlybV9kZWxldGUnKXxlc2NhcGU6J2phdmFzY3JpcHQnfScpOyI+CiAgPC9wPgo8L2Rpdj4Ke2Vsc2V9CjxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ25vdGlmaWNhdGlvbnNfZW1wdHknKX08L3A+CnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciIHN0eWxlPSJtYXJnaW4tdG9wOjE2cHg7Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPgogICAge2lmICRtYXNfbmNfaGFzX3ByZXYgJiYgJG1hc19uY19wcmV2X3VybCAhPSAnJ30KICAgICAgPGEgaHJlZj0ieyRtYXNfbmNfcHJldl91cmx8ZXNjYXBlOidodG1sJ30iPnskbW9kLT5MYW5nKCdwYWdlcl9wcmV2Jyl9PC9hPgogICAgey9pZn0KICAgICZuYnNwOyB7JG1vZC0+TGFuZygncGFnZXJfcGFnZScpfSB7JG1hc19uY19wYWdlfGVzY2FwZX0gLSB7JG1vZC0+TGFuZygncGFnZXJfdG90YWwnKX0geyRtYXNfbmNfdG90YWx8ZXNjYXBlfSAmbmJzcDsKICAgIHtpZiAkbWFzX25jX2hhc19uZXh0ICYmICRtYXNfbmNfbmV4dF91cmwgIT0gJyd9CiAgICAgIDxhIGhyZWY9InskbWFzX25jX25leHRfdXJsfGVzY2FwZTonaHRtbCd9Ij57JG1vZC0+TGFuZygncGFnZXJfbmV4dCcpfTwvYT4KICAgIHsvaWZ9CiAgPC9wPgo8L2Rpdj4KCnskc2V0dGluZ3NfZm9ybV9lbmR9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_settings.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8aW1nIHNyYz0ieyRtYXNfbmNfYmFubmVyX3VybHxlc2NhcGU6J2h0bWwnfSIgYWx0PSIiIHdpZHRoPSI2MDAiIGhlaWdodD0iMTIwIiBzdHlsZT0ibWF4LXdpZHRoOjEwMCU7aGVpZ2h0OmF1dG87Ym9yZGVyLXJhZGl1czo2cHg7bWFyZ2luLWJvdHRvbToxMnB4OyI+CiAgPGgyPnskbW9kLT5MYW5nKCdmcmllbmRseW5hbWUnKXxlc2NhcGU6J2h0bWwnfSA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc2l6ZToxMnB4OyI+dnskbWFzX25jX3ZlcnNpb258ZXNjYXBlfTwvc3Bhbj48L2gyPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyl9PC9wPgo8L2Rpdj4KCnskc2V0dGluZ3NfZm9ybV9zdGFydH0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1hY3RpdmVfdGFiIiB2YWx1ZT0ic2V0dGluZ3MiPgoKPGgzIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3NlY3Rpb25fbW9kdWxlX3VpJyl9PC9oMz4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdhZG1pbl9zZWN0aW9uX2xhYmVsJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbWFzX25jX2FkbWluX3NlY3Rpb25fZHJvcGRvd259PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxzcGFuIGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ2FkbWluX3NlY3Rpb25faGVscCcpfTwvc3Bhbj48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Nob3dfZG9uYXRpb25zX3RhYicpfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfXNob3dfZG9uYXRpb25zX3RhYl9zZXR0aW5ncyIgdmFsdWU9IjEiIHtpZiAkc2hvd19kb25hdGlvbnNfdGFiX2NoZWNrZWQgPT0gJzEnfWNoZWNrZWR7L2lmfT4geyRtb2QtPkxhbmcoJ3Nob3dfZG9uYXRpb25zX3RhYl9oZWxwJyl9PC9sYWJlbD48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3RoZW1lX2NvbG9yX2xhYmVsJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hc19uY190aGVtZV9jb2xvciIgdmFsdWU9InskbWFzX25jX3RoZW1lX2NvbG9yfGVzY2FwZX0iIHN0eWxlPSJ3aWR0aDoxNDBweDttYXgtd2lkdGg6OTAlOyIgbWF4bGVuZ3RoPSIzMiIgcGF0dGVybj0iI1swLTlBLUZhLWZdezZ9IiBwbGFjZWhvbGRlcj0iIzAwNzhkNCIgYXV0b2NvbXBsZXRlPSJvZmYiPjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48c3BhbiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCd0aGVtZV9jb2xvcl9oZWxwJyl9PC9zcGFuPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnc3RhbmRhbG9uZV9wd2FfaGVhZGluZycpfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfW1hc19uY19mcm9udGVuZF9wd2EiIHZhbHVlPSIxIiB7aWYgJG1hc19uY19mcm9udGVuZF9wd2FfY2hlY2tlZCA9PSAnMSd9Y2hlY2tlZHsvaWZ9PiB7JG1vZC0+TGFuZygnbWFzX25jX2Zyb250ZW5kX3B3YV9oZWxwJyl9PC9sYWJlbD48L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PHNwYW4gY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygnc3RhbmRhbG9uZV9wd2Ffbm90ZScpfTwvc3Bhbj48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9bWFzX25jX2NoYWluX2NnX3NpbXBsZV9wd2EiIHZhbHVlPSIxIiB7aWYgJG1hc19uY19jaGFpbl9jZ19zaW1wbGVfcHdhX2NoZWNrZWQgPT0gJzEnfWNoZWNrZWR7L2lmfT4geyRtb2QtPkxhbmcoJ21hc19uY19jaGFpbl9jZ19zaW1wbGVfcHdhX2hlbHAnKX08L2xhYmVsPjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfW1hc19uY19hZG1pbl9vd25fbWFuaWZlc3QiIHZhbHVlPSIxIiB7aWYgJGFkbWluX293bl9tYW5pZmVzdF9jaGVja2VkID09ICcxJ31jaGVja2Vkey9pZn0+IHskbW9kLT5MYW5nKCdhZG1pbl9vd25fbWFuaWZlc3RfaGVscCcpfTwvbGFiZWw+PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxzcGFuIGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ2NoYWluX2NnX25vdGUnKX08L3NwYW4+PC9wPgo8L2Rpdj4KCjxoMyBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdzZWN0aW9uX2NoYW5uZWxzJyl9PC9oMz4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdlbmFibGVfZW1haWwnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1tYXNfbmNfZW5hYmxlX2VtYWlsIiB2YWx1ZT0iMSIge2lmICRlbmFibGVfZW1haWxfY2hlY2tlZCA9PSAnMSd9Y2hlY2tlZHsvaWZ9PiB7JG1vZC0+TGFuZygnZW5hYmxlX2VtYWlsX2hlbHAnKX08L2xhYmVsPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnZW1haWxfcmVjaXBpZW50cycpfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1tYXNfbmNfZW1haWxfcmVjaXBpZW50cyIgdmFsdWU9InskZW1haWxfcmVjaXBpZW50c3xlc2NhcGV9IiBzdHlsZT0id2lkdGg6OTAlO21heC13aWR0aDo1NjBweDsiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0iYWRtaW5AZXhhbXBsZS5jb20iPjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48c3BhbiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdlbWFpbF9yZWNpcGllbnRzX2hlbHAnKX08L3NwYW4+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdlbmFibGVfZGlzY29yZCcpfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfW1hc19uY19lbmFibGVfZGlzY29yZCIgdmFsdWU9IjEiIHtpZiAkZW5hYmxlX2Rpc2NvcmRfY2hlY2tlZCA9PSAnMSd9Y2hlY2tlZHsvaWZ9PiB7JG1vZC0+TGFuZygnZW5hYmxlX2Rpc2NvcmRfaGVscCcpfTwvbGFiZWw+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdkaXNjb3JkX3dlYmhvb2snKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9bWFzX25jX2Rpc2NvcmRfd2ViaG9vayIgdmFsdWU9InskZGlzY29yZF93ZWJob29rfGVzY2FwZX0iIHN0eWxlPSJ3aWR0aDo5MCU7bWF4LXdpZHRoOjU2MHB4OyIgYXV0b2NvbXBsZXRlPSJvZmYiIHNwZWxsY2hlY2s9ImZhbHNlIj48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2VuYWJsZV9wdXNoJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9bWFzX25jX2VuYWJsZV9wdXNoIiB2YWx1ZT0iMSIge2lmICRlbmFibGVfcHVzaF9jaGVja2VkID09ICcxJ31jaGVja2Vkey9pZn0+IHskbW9kLT5MYW5nKCdlbmFibGVfcHVzaF9oZWxwJyl9PC9sYWJlbD48L3A+CjwvZGl2PgoKPGgzIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3NlY3Rpb25fY2dfc3RhY2snKX08L2gzPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2NnX3N0YWNrX2RldGVjdGVkJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxzcGFuIGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ2NnX3NpbXBsZXB3YV9sYWJlbCcpfToge2lmICRoYXNfY2dfc2ltcGxlX3B3YSA9PSAnMSd9eyRtb2QtPkxhbmcoJ2NnX2RldGVjdGVkX3llcycpfXtlbHNlfXskbW9kLT5MYW5nKCdjZ19kZXRlY3RlZF9ubycpfXsvaWZ9ICZuYnNwO3wmbmJzcDsgeyRtb2QtPkxhbmcoJ2NnX3dlYnB1c2hfbGFiZWwnKX06IHtpZiAkaGFzX2NnX3dlYnB1c2ggPT0gJzEnfXskbW9kLT5MYW5nKCdjZ19kZXRlY3RlZF95ZXMnKX17ZWxzZX17JG1vZC0+TGFuZygnY2dfZGV0ZWN0ZWRfbm8nKX17L2lmfTwvc3Bhbj48L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1tYXNfbmNfY2d3ZWJwdXNoX2Jyb2FkY2FzdCIgdmFsdWU9IjEiIHtpZiAkY2d3ZWJwdXNoX2Jyb2FkY2FzdF9jaGVja2VkID09ICcxJ31jaGVja2Vkey9pZn0+IHskbW9kLT5MYW5nKCdjZ3dlYnB1c2hfYnJvYWRjYXN0X2hlbHAnKX08L2xhYmVsPjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48c3BhbiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdjZ19zdGFja19ub3RlJyl9PC9zcGFuPjwvcD4KPC9kaXY+Cgo8aDMgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnc2VjdGlvbl93ZWJwdXNoJyl9PC9oMz4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd2YXBpZF9wdWJsaWMnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGNvZGUgc3R5bGU9IndvcmQtYnJlYWs6YnJlYWstYWxsOyI+eyRtYXNfbmNfdmFwaWRfcHVibGljfGVzY2FwZX08L2NvZGU+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd2YXBpZF9jb250YWN0Jyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hc19uY192YXBpZF9jb250YWN0IiB2YWx1ZT0ieyR2YXBpZF9jb250YWN0fGVzY2FwZX0iIHN0eWxlPSJ3aWR0aDo5MCU7bWF4LXdpZHRoOjU2MHB4OyI+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdtYW5pZmVzdF91cmwnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGEgaHJlZj0ieyRtYXNfbmNfbWFuaWZlc3RfdXJsfGVzY2FwZTonaHRtbCd9IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIj57JG1hc19uY19tYW5pZmVzdF91cmx8ZXNjYXBlOidodG1sJ308L2E+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCd3ZWJwdXNoX2luc3RhbGxfbm90ZScpfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InBhZ2VidXR0b24iIGlkPSJtYXMtbmMtc3Vic2NyaWJlLWJ0biI+eyRtb2QtPkxhbmcoJ2J0bl9zdWJzY3JpYmVfcHVzaCcpfTwvYnV0dG9uPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1tYXNfbmNfc2VuZF90ZXN0X3B1c2giIGNsYXNzPSJwYWdlYnV0dG9uIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2J0bl90ZXN0X3B1c2gnKX0iPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1tYXNfbmNfcm90YXRlX3ZhcGlkIiBjbGFzcz0icGFnZWJ1dHRvbiIgdmFsdWU9InskbW9kLT5MYW5nKCdidG5fcm90YXRlX3ZhcGlkJyl9IiBvbmNsaWNrPSJyZXR1cm4gY29uZmlybSgnUm90YXRlIFZBUElEIGtleXMgYW5kIHJlbW92ZSBwdXNoIHN1YnNjcmlwdGlvbnM/Jyk7Ij4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9bWFzX25jX3B1Ymxpc2hfc3ciIGNsYXNzPSJwYWdlYnV0dG9uIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2J0bl9wdWJsaXNoX3N3Jyl9Ij4KICA8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PHNwYW4gY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygncHVibGlzaF9zd19oZWxwJyl9PC9zcGFuPjwvcD4KPC9kaXY+CjxkaXYgaWQ9Im1hcy1uYy1wdXNoLWNvbmZpZyIKICAgICBkYXRhLXN1YnNjcmliZS11cmw9InskbWFzX25jX2FqYXhfcHVzaF9zdWJzY3JpYmVfdXJsfGVzY2FwZTonaHRtbCd9IgogICAgIGRhdGEtdmFwaWQtcHVibGljPSJ7JG1hc19uY192YXBpZF9wdWJsaWN8ZXNjYXBlOidodG1sJ30iCiAgICAgZGF0YS1zdy11cmw9InskbWFzX25jX3N3X3BhdGh8ZXNjYXBlOidodG1sJ30iPjwvZGl2PgoKPGgzIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3NlY3Rpb25fZXZlbnRzJyl9PC9oMz4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfW1hc19uY19ldnRfbG9naW5fZmFpbGVkIiB2YWx1ZT0iMSIge2lmICRldnRfbG9naW5fZmFpbGVkX2NoZWNrZWQgPT0gJzEnfWNoZWNrZWR7L2lmfT4geyRtb2QtPkxhbmcoJ2V2dF9sb2dpbl9mYWlsZWRfb3B0Jyl9PC9sYWJlbD48L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1tYXNfbmNfZXZ0X2RlbGV0ZV91c2VyIiB2YWx1ZT0iMSIge2lmICRldnRfZGVsZXRlX3VzZXJfY2hlY2tlZCA9PSAnMSd9Y2hlY2tlZHsvaWZ9PiB7JG1vZC0+TGFuZygnZXZ0X2RlbGV0ZV91c2VyX29wdCcpfTwvbGFiZWw+PC9wPgo8L2Rpdj4KCjxoMyBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdzZWN0aW9uX3JhdGVzJyl9PC9oMz4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdyYXRlX3Blcl9ob3VyJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxpbnB1dCB0eXBlPSJudW1iZXIiIG5hbWU9InskYWN0aW9uaWR9bWFzX25jX3JhdGVfcGVyX2hvdXIiIHZhbHVlPSJ7JHJhdGVfcGVyX2hvdXJ8ZXNjYXBlfSIgbWluPSIxIiBtYXg9IjEwMDAwIiBzdHlsZT0id2lkdGg6MTIwcHg7Ij48L3A+CjwvZGl2PgoKPGgzIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3NlY3Rpb25faGVhbHRoJyl9PC9oMz4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdoZWFsdGhfbWluX3BocCcpfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1tYXNfbmNfaGVhbHRoX21pbl9waHAiIHZhbHVlPSJ7JGhlYWx0aF9taW5fcGhwfGVzY2FwZX0iIHN0eWxlPSJ3aWR0aDoxMjBweDsiPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnaGVhbHRoX2Rpc2tfcGN0Jyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxpbnB1dCB0eXBlPSJudW1iZXIiIG5hbWU9InskYWN0aW9uaWR9bWFzX25jX2hlYWx0aF9kaXNrX3BjdCIgdmFsdWU9InskaGVhbHRoX2Rpc2tfcGN0fGVzY2FwZX0iIG1pbj0iMSIgbWF4PSI5OSIgc3R5bGU9IndpZHRoOjEwMHB4OyI+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdoZWFsdGhfZGJfbXMnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGlucHV0IHR5cGU9Im51bWJlciIgbmFtZT0ieyRhY3Rpb25pZH1tYXNfbmNfaGVhbHRoX2RiX21zIiB2YWx1ZT0ieyRoZWFsdGhfZGJfbXN8ZXNjYXBlfSIgbWluPSIwIiBtYXg9IjYwMDAwIiBzdHlsZT0id2lkdGg6MTIwcHg7Ij48L3A+CjwvZGl2PgoKPGgzIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3NlY3Rpb25fYWR2YW5jZWQnKX08L2gzPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9bWFzX25jX2ZhdGFsX3NodXRkb3duIiB2YWx1ZT0iMSIge2lmICRmYXRhbF9zaHV0ZG93bl9jaGVja2VkID09ICcxJ31jaGVja2Vkey9pZn0+IHskbW9kLT5MYW5nKCdmYXRhbF9zaHV0ZG93bl9vcHQnKX08L2xhYmVsPjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48c3BhbiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdmYXRhbF9zaHV0ZG93bl93YXJuJyl9PC9zcGFuPjwvcD4KPC9kaXY+Cgo8aDMgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnc2VjdGlvbl9jcm9uJyl9PC9oMz4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdjcm9uX3VybF9sYWJlbCcpfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48Y29kZSBzdHlsZT0id29yZC1icmVhazpicmVhay1hbGw7Ij57JG1hc19uY19jcm9uX3VybHxlc2NhcGV9PC9jb2RlPjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48c3BhbiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdjcm9uX2hlbHAnKX08L3NwYW4+PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9InBhZ2VidXR0b24iIHZhbHVlPSJ7JG1vZC0+TGFuZygnc2F2ZScpfSI+PC9wPgo8L2Rpdj4KCnskc2V0dGluZ3NfZm9ybV9lbmR9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/donations.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8aDI+eyRtb2QtPkxhbmcoJ2RvbmF0aW9uc190YWInKXxkZWZhdWx0OidEb25hdGlvbnMnfGVzY2FwZTonaHRtbCd9PC9oMj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCAjY2ZkN2RmO3BhZGRpbmc6MTJweDtib3JkZXItcmFkaXVzOjNweDtiYWNrZ3JvdW5kOiNmZmY7bWF4LXdpZHRoOjg1MHB4OyI+CiAgICA8aDMgY2xhc3M9InBhZ2V0ZXh0Ij57JHNwb25zb3JzdGV4dHxlc2NhcGU6J2h0bWwnfTwvaDM+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O21hcmdpbi10b3A6MTBweDtmbGV4LXdyYXA6d3JhcDsiPgogICAgICA8aW1nCiAgICAgICAgc3JjPSJ7JGRvbmF0aW9uc19zcG9uc29yX2xvZ29fdXJsfGVzY2FwZTonaHRtbCd9IgogICAgICAgIGFsdD0ieyRkb25hdGlvbnNfc3BvbnNvcl9sb2dvX2FsdHxlc2NhcGU6J2h0bWwnfSIKICAgICAgICB3aWR0aD0iNDgiCiAgICAgICAgaGVpZ2h0PSI0OCIKICAgICAgICBzdHlsZT0ibWF4LXdpZHRoOjQ4cHg7bWF4LWhlaWdodDo0OHB4O3dpZHRoOmF1dG87aGVpZ2h0OmF1dG87b2JqZWN0LWZpdDpjb250YWluO2ZsZXgtc2hyaW5rOjA7IgogICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgZGVjb2Rpbmc9ImFzeW5jIgogICAgICA+CiAgICAgIDxhIGhyZWY9InskZG9uYXRpb25zX3Nwb25zb3JfaHJlZnxlc2NhcGU6J2h0bWwnfSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+eyRkb25hdGlvbnNfc3BvbnNvcl9saW5rfGVzY2FwZX08L2E+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0ibWFyZ2luLXRvcDoyMHB4OyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZG9uYXRpb25zdGV4dH08L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij48YSBjbGFzcz0icGFnZWJ1dHRvbiIgc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tncm91bmQ6I2ZmYzQzOTtjb2xvcjojMDAwO3BhZGRpbmc6OHB4IDE0cHg7Ym9yZGVyLXJhZGl1czo0cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7IiBocmVmPSJodHRwczovL25ld3N0YXJnZXRlZC5jb20vIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIj57JGRvbmF0ZV9idG58ZXNjYXBlfTwvYT48L3A+CiAgPC9kaXY+CgogIHskc2V0dGluZ3NfZm9ybV9zdGFydH0KICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWFjdGl2ZV90YWIiIHZhbHVlPSJkb25hdGlvbnMiPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9c2hvd19kb25hdGlvbnNfdGFiIiB2YWx1ZT0iMCI+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0ibWFyZ2luLXRvcDoxNnB4OyI+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGhpZGVkb25hdGlvbnNzdWJtaXR9PC9wPgogIDwvZGl2PgogIHskc2V0dGluZ3NfZm9ybV9lbmR9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/help.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2PgoKPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iIHN0eWxlPSJtYXJnaW4tdG9wOiAyMHB4OyBwYWRkaW5nOiAxNXB4OyBiYWNrZ3JvdW5kOiAjZThmNGY4OyBib3JkZXItbGVmdDogNHB4IHNvbGlkICMyMTk2RjM7Ij4KICA8cCBzdHlsZT0ibWFyZ2luOiAwOyI+PHN0cm9uZz57JG1vZC0+TGFuZygnaGVscF9iYW5uZXJfdGl0bGUnKXxlc2NhcGU6J2h0bWwnfTwvc3Ryb25nPiB7JG1vZC0+TGFuZygnaGVscF9iYW5uZXJfYm9keScpfGVzY2FwZTonaHRtbCd9IDxhIGhyZWY9Imh0dHBzOi8vbmV3c3RhcmdldGVkLmNvbS8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPm5ld3N0YXJnZXRlZC5jb208L2E+PC9wPgo8L2Rpdj4KCnsqIElubmVyIG5hdmlnYXRpb24gbXVzdCBOT1QgdXNlIGRpdiNwYWdlX3RhYnM6IGNtc19pbml0VGFicygpIGJpbmRzIEFMTCBkaXZzIHVuZGVyIHRoZSByZWFsICNwYWdlX3RhYnMgYW5kIHdvdWxkIGhpZGUgI2hlbHBfYyB3aGVuIGNsaWNraW5nIHN1Yi10YWJzLiBVc2UgPGEgcm9sZT0idGFiIj4gcGx1cyBzY29wZWQgc2NyaXB0LiAqfQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojbWFzX25jX2hlbHBfc3VidGFicyB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBtYXJnaW4tdG9wOiAyMHB4Owp9CiNtYXNfbmNfaGVscF9zdWJ0YWJzIGEubWFzLW5jLWhlbHAtdGFiIHsKICBjb2xvcjogIzU4NTg1ODsKICBib3JkZXItcmFkaXVzOiA0cHggNHB4IDAgMDsKICB0ZXh0LXNoYWRvdzogLTFweCAxcHggMCAjZmZmOwogIGJhY2tncm91bmQ6ICNkZGQ7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGZsb2F0OiBsZWZ0OwogIGN1cnNvcjogcG9pbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHBhZGRpbmc6IDExcHg7CiAgbWFyZ2luLXRvcDogMXB4OwogIG1hcmdpbi1yaWdodDogMXB4OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBkaXNwbGF5OiBibG9jazsKICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9CiNtYXNfbmNfaGVscF9zdWJ0YWJzIGEubWFzLW5jLWhlbHAtdGFiOmhvdmVyLAojbWFzX25jX2hlbHBfc3VidGFicyBhLm1hcy1uYy1oZWxwLXRhYjpmb2N1cyB7CiAgY29sb3I6ICMxNDdmZGI7Cn0KI21hc19uY19oZWxwX3N1YnRhYnMgYS5tYXMtbmMtaGVscC10YWIuYWN0aXZlIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LXNoYWRvdzogLTFweCAtMXB4IDAgIzA1NDg4MjsKICBiYWNrZ3JvdW5kOiAjMTQ3ZmRiOwp9CiNtYXNfbmNfaGVscF9zdWJjb250ZW50IHsKICBiYWNrZ3JvdW5kOiAjZmZmOwogIGJvcmRlci1yYWRpdXM6IDAgMCA0cHggNHB4OwogIHBhZGRpbmc6IDIwcHggMTBweDsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogIGJvcmRlci10b3A6IDNweCBzb2xpZCAjMTQ3ZmRiOwogIGNsZWFyOiBib3RoOwp9Cjwvc3R5bGU+Cgo8bmF2IGlkPSJtYXNfbmNfaGVscF9zdWJ0YWJzIiBhcmlhLWxhYmVsPSJIZWxwIHNlY3Rpb25zIj4KICA8YSBocmVmPSIjIiByb2xlPSJ0YWIiIGNsYXNzPSJtYXMtbmMtaGVscC10YWIgYWN0aXZlIiBpZD0ibWFzX25jX2hlbHBfdGFiX2dlbmVyYWwiPnskbW9kLT5MYW5nKCdoZWxwX3RhYl9nZW5lcmFsJyl8ZXNjYXBlOidodG1sJ308L2E+CiAgPGEgaHJlZj0iIyIgcm9sZT0idGFiIiBjbGFzcz0ibWFzLW5jLWhlbHAtdGFiIiBpZD0ibWFzX25jX2hlbHBfdGFiX2NoYW5uZWxzIj57JG1vZC0+TGFuZygnaGVscF90YWJfY2hhbm5lbHMnKXxlc2NhcGU6J2h0bWwnfTwvYT4KICA8YSBocmVmPSIjIiByb2xlPSJ0YWIiIGNsYXNzPSJtYXMtbmMtaGVscC10YWIiIGlkPSJtYXNfbmNfaGVscF90YWJfaW50ZXJvcCI+eyRtb2QtPkxhbmcoJ2hlbHBfdGFiX2ludGVyb3AnKXxlc2NhcGU6J2h0bWwnfTwvYT4KPC9uYXY+Cgo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8ZGl2IGlkPSJtYXNfbmNfaGVscF9zdWJjb250ZW50Ij4KCiAgPHNlY3Rpb24gaWQ9Im1hc19uY19oZWxwX3BhbmVsX2dlbmVyYWwiIGNsYXNzPSJtYXMtbmMtaGVscC1wYW5lbCIgcm9sZT0idGFicGFuZWwiPgogICAge2luY2x1ZGUgZmlsZT0nbW9kdWxlX2ZpbGVfdHBsOk1BU19Ob3RpZmljYXRpb25DZW50ZXI7aGVscF9nZW5lcmFsX3RhYi50cGwnfQogIDwvc2VjdGlvbj4KICA8c2VjdGlvbiBpZD0ibWFzX25jX2hlbHBfcGFuZWxfY2hhbm5lbHMiIGNsYXNzPSJtYXMtbmMtaGVscC1wYW5lbCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiIHJvbGU9InRhYnBhbmVsIj4KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2hlbHBfY2hhbm5lbHNfYm9keScpfTwvcD4KICAgIDwvZGl2PgogIDwvc2VjdGlvbj4KICA8c2VjdGlvbiBpZD0ibWFzX25jX2hlbHBfcGFuZWxfaW50ZXJvcCIgY2xhc3M9Im1hcy1uYy1oZWxwLXBhbmVsIiBzdHlsZT0iZGlzcGxheTpub25lOyIgcm9sZT0idGFicGFuZWwiPgogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnaGVscF9pbnRlcm9wX2JvZHknKX08L3A+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2hlbHBfaW50ZXJvcF9jZ19ib2R5Jyl9PC9wPgogICAgPC9kaXY+CiAgPC9zZWN0aW9uPgoKICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8L2Rpdj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKGZ1bmN0aW9uICgpIHsKICBpZiAodHlwZW9mIGpRdWVyeSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgIHJldHVybjsKICB9CiAgalF1ZXJ5KGZ1bmN0aW9uICgkKSB7CiAgICB2YXIgJHRhYnMgPSAkKCcjbWFzX25jX2hlbHBfc3VidGFicyBhLm1hcy1uYy1oZWxwLXRhYicpOwogICAgdmFyICRwYW5lbHMgPSAkKCcjbWFzX25jX2hlbHBfc3ViY29udGVudCBzZWN0aW9uLm1hcy1uYy1oZWxwLXBhbmVsJyk7CiAgICBpZiAoISR0YWJzLmxlbmd0aCB8fCAhJHBhbmVscy5sZW5ndGgpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24gYWN0aXZhdGUoJHRhYikgewogICAgICB2YXIgc3VmZml4ID0gJHRhYi5hdHRyKCdpZCcpLnJlcGxhY2UoL15tYXNfbmNfaGVscF90YWJfLywgJycpOwogICAgICAkdGFicy5yZW1vdmVDbGFzcygnYWN0aXZlJyk7CiAgICAgICR0YWIuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAkcGFuZWxzLmhpZGUoKTsKICAgICAgJCgnI21hc19uY19oZWxwX3BhbmVsXycgKyBzdWZmaXgpLnNob3coKTsKICAgIH0KICAgICR0YWJzLm9uKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgYWN0aXZhdGUoJCh0aGlzKSk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0pOwogICAgdmFyICRmaXJzdCA9ICR0YWJzLmZpbHRlcignLmFjdGl2ZScpLmZpcnN0KCk7CiAgICBpZiAoJGZpcnN0Lmxlbmd0aCkgewogICAgICBhY3RpdmF0ZSgkZmlyc3QpOwogICAgfSBlbHNlIHsKICAgICAgYWN0aXZhdGUoJHRhYnMuZmlyc3QoKSk7CiAgICB9CiAgfSk7Cn0pKCk7Cjwvc2NyaXB0Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/help_channels_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdoZWxwX3RhYl9jaGFubmVscycpfGVzY2FwZTonaHRtbCd9PC9oMz4KPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnaGVscF9jaGFubmVsc19ib2R5Jyl8ZXNjYXBlOidodG1sJ308L3A+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/help_general_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8aDM+eyRtb2QtPkxhbmcoJ2hlbHBfZ2VuZXJhbF9oZWFkaW5nJyl9PC9oMz4KICA8cD57JG1vZC0+TGFuZygnaGVscF9nZW5lcmFsX2ludHJvJyl9PC9wPgogIDx1bD4KICAgIDxsaT57JG1vZC0+TGFuZygnaGVscF9nZW5lcmFsX2xpMScpfTwvbGk+CiAgICA8bGk+eyRtb2QtPkxhbmcoJ2hlbHBfZ2VuZXJhbF9saTInKX08L2xpPgogICAgPGxpPnskbW9kLT5MYW5nKCdoZWxwX2dlbmVyYWxfbGkzJyl9PC9saT4KICA8L3VsPgo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/help_interop_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdoZWxwX3RhYl9pbnRlcm9wJyl8ZXNjYXBlOidodG1sJ308L2gzPgo8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdoZWxwX2ludGVyb3BfYm9keScpfGVzY2FwZTonaHRtbCd9PC9wPgo8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdoZWxwX2ludGVyb3BfY2dfYm9keScpfGVzY2FwZTonaHRtbCd9PC9wPgo=]]></data>
	</file>
	<file>
	  <filename>/Test/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/Test/generate_brand_assets.py</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoiIiJSZWdlbmVyYXRlIGJhbm5lciArIGljb25zIGZvciBNQVNfTm90aWZpY2F0aW9uQ2VudGVyLiBSZXF1aXJlcyBQaWxsb3cuIiIiCgpmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFubm90YXRpb25zCgppbXBvcnQgb3MKaW1wb3J0IHN5cwoKZnJvbSBQSUwgaW1wb3J0IEltYWdlLCBJbWFnZURyYXcsIEltYWdlRm9udAoKQUNDRU5UID0gKDAsIDEyMCwgMjEyLCAyNTUpCkFDQ0VOVF9EQVJLID0gKDAsIDU4LCAxMDQsIDI1NSkKV0hJVEUgPSAoMjU1LCAyNTUsIDI1NSwgMjU1KQpXSElURV9TT0ZUID0gKDIzMCwgMjQyLCAyNTUsIDI1NSkKCgpkZWYgbGVycChhOiBmbG9hdCwgYjogZmxvYXQsIHQ6IGZsb2F0KSAtPiBmbG9hdDoKICAgIHJldHVybiBhICsgKGIgLSBhKSAqIHQKCgpkZWYgaG9yaXpvbnRhbF9ncmFkaWVudChzaXplOiB0dXBsZVtpbnQsIGludF0sIGxlZnQ6IHR1cGxlLCByaWdodDogdHVwbGUpIC0+IEltYWdlLkltYWdlOgogICAgdywgaCA9IHNpemUKICAgIGltZyA9IEltYWdlLm5ldygiUkdCQSIsIHNpemUpCiAgICBwaXggPSBpbWcubG9hZCgpCiAgICBmb3IgeCBpbiByYW5nZSh3KToKICAgICAgICB0ID0geCAvIG1heCh3IC0gMSwgMSkKICAgICAgICByID0gaW50KGxlcnAobGVmdFswXSwgcmlnaHRbMF0sIHQpKQogICAgICAgIGcgPSBpbnQobGVycChsZWZ0WzFdLCByaWdodFsxXSwgdCkpCiAgICAgICAgYiA9IGludChsZXJwKGxlZnRbMl0sIHJpZ2h0WzJdLCB0KSkKICAgICAgICBhbCA9IGludChsZXJwKGxlZnRbM10sIHJpZ2h0WzNdLCB0KSkKICAgICAgICBmb3IgeSBpbiByYW5nZShoKToKICAgICAgICAgICAgcGl4W3gsIHldID0gKHIsIGcsIGIsIGFsKQogICAgcmV0dXJuIGltZwoKCmRlZiBsb2FkX2ZvbnQoc2l6ZTogaW50KSAtPiBJbWFnZUZvbnQuRnJlZVR5cGVGb250IHwgSW1hZ2VGb250LkltYWdlRm9udDoKICAgIHBhdGhzID0gKAogICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL2RlamF2dS1zYW5zLWZvbnRzL0RlamFWdVNhbnMtQm9sZC50dGYiLAogICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL2RlamF2dS9EZWphVnVTYW5zLUJvbGQudHRmIiwKICAgICkKICAgIGZvciBwIGluIHBhdGhzOgogICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHApOgogICAgICAgICAgICByZXR1cm4gSW1hZ2VGb250LnRydWV0eXBlKHAsIHNpemUpCiAgICByZXR1cm4gSW1hZ2VGb250LmxvYWRfZGVmYXVsdCgpCgoKZGVmIGRyYXdfYmVsbChpbWc6IEltYWdlLkltYWdlLCBjeDogZmxvYXQsIGN5OiBmbG9hdCwgc2NhbGU6IGZsb2F0KSAtPiBOb25lOgogICAgZHIgPSBJbWFnZURyYXcuRHJhdyhpbWcpCiAgICBzID0gc2NhbGUKICAgIGJvZHkgPSBbCiAgICAgICAgKGN4IC0gOTUgKiBzLCBjeSArIDM1ICogcyksCiAgICAgICAgKGN4IC0gODUgKiBzLCBjeSAtIDU1ICogcyksCiAgICAgICAgKGN4IC0gNDUgKiBzLCBjeSAtIDEwNSAqIHMpLAogICAgICAgIChjeCArIDQ1ICogcywgY3kgLSAxMDUgKiBzKSwKICAgICAgICAoY3ggKyA4NSAqIHMsIGN5IC0gNTUgKiBzKSwKICAgICAgICAoY3ggKyA5NSAqIHMsIGN5ICsgMzUgKiBzKSwKICAgICAgICAoY3ggKyA1NSAqIHMsIGN5ICsgNTUgKiBzKSwKICAgICAgICAoY3ggKyAzNSAqIHMsIGN5ICsgMjUgKiBzKSwKICAgICAgICAoY3ggLSAzNSAqIHMsIGN5ICsgMjUgKiBzKSwKICAgICAgICAoY3ggLSA1NSAqIHMsIGN5ICsgNTUgKiBzKSwKICAgIF0KICAgIGRyLnBvbHlnb24oYm9keSwgZmlsbD1XSElURSkKICAgIGlubmVyID0gWwogICAgICAgIChjeCAtIDI4ICogcywgY3kgKyA4ICogcyksCiAgICAgICAgKGN4IC0gMjIgKiBzLCBjeSAtIDM1ICogcyksCiAgICAgICAgKGN4LCBjeSAtIDU4ICogcyksCiAgICAgICAgKGN4ICsgMjIgKiBzLCBjeSAtIDM1ICogcyksCiAgICAgICAgKGN4ICsgMjggKiBzLCBjeSArIDggKiBzKSwKICAgIF0KICAgIGRyLnBvbHlnb24oaW5uZXIsIGZpbGw9QUNDRU5UKQogICAgZHIuZWxsaXBzZSgKICAgICAgICBbY3ggLSAxNCAqIHMsIGN5ICsgNDggKiBzLCBjeCArIDE0ICogcywgY3kgKyA3NiAqIHNdLAogICAgICAgIGZpbGw9V0hJVEVfU09GVCwKICAgICkKICAgIHIgPSAyMiAqIHMKICAgIGRyLmVsbGlwc2UoCiAgICAgICAgW2N4ICsgNDggKiBzIC0gciwgY3kgLSA5OCAqIHMgLSByLCBjeCArIDQ4ICogcyArIHIsIGN5IC0gOTggKiBzICsgcl0sCiAgICAgICAgZmlsbD0oMjU1LCA4MCwgODAsIDI1NSksCiAgICApCgoKZGVmIG1ha2VfYmFubmVyKG91dF9wYXRoOiBzdHIpIC0+IE5vbmU6CiAgICB3LCBoID0gNjAwLCAxMjAKICAgIGJhc2UgPSBob3Jpem9udGFsX2dyYWRpZW50KCh3LCBoKSwgQUNDRU5UX0RBUkssIEFDQ0VOVCkKICAgIGRyID0gSW1hZ2VEcmF3LkRyYXcoYmFzZSkKICAgIGZvbnRfdGl0bGUgPSBsb2FkX2ZvbnQoMjYpCiAgICBmb250X3N1YiA9IGxvYWRfZm9udCgxNCkKICAgIGRyLnRleHQoKDI0LCAyOCksICJNQVMgTm90aWZpY2F0aW9uIENlbnRlciIsIGZvbnQ9Zm9udF90aXRsZSwgZmlsbD1XSElURSkKICAgIGRyLnRleHQoKDI0LCA2OCksICJBbGVydHMsIGVtYWlsLCBEaXNjb3JkLCBhbmQgd2ViIHB1c2giLCBmb250PWZvbnRfc3ViLCBmaWxsPSgyMjAsIDIzNSwgMjU1LCAyNTUpKQogICAgb3ZlcmxheSA9IEltYWdlLm5ldygiUkdCQSIsICh3LCBoKSwgKDAsIDAsIDAsIDApKQogICAgZHJhd19iZWxsKG92ZXJsYXksIDUyMCwgNzgsIDAuMjIpCiAgICBiYXNlID0gSW1hZ2UuYWxwaGFfY29tcG9zaXRlKGJhc2UsIG92ZXJsYXkpCiAgICBiYXNlLnNhdmUob3V0X3BhdGgsICJQTkciKQoKCmRlZiBtYWtlX2ljb24oc2l6ZTogaW50LCBvdXRfcGF0aDogc3RyKSAtPiBOb25lOgogICAgaW1nID0gSW1hZ2UubmV3KCJSR0JBIiwgKHNpemUsIHNpemUpLCAoMCwgMCwgMCwgMCkpCiAgICBtYXJnaW4gPSBpbnQoc2l6ZSAqIDAuMDYpCiAgICBncmFkID0gaG9yaXpvbnRhbF9ncmFkaWVudCgoc2l6ZSwgc2l6ZSksIEFDQ0VOVF9EQVJLLCBBQ0NFTlQpCiAgICBtYXNrID0gSW1hZ2UubmV3KCJMIiwgKHNpemUsIHNpemUpLCAwKQogICAgbWRyID0gSW1hZ2VEcmF3LkRyYXcobWFzaykKICAgIG1kci5yb3VuZGVkX3JlY3RhbmdsZSgKICAgICAgICBbbWFyZ2luLCBtYXJnaW4sIHNpemUgLSBtYXJnaW4sIHNpemUgLSBtYXJnaW5dLAogICAgICAgIHJhZGl1cz1pbnQoc2l6ZSAqIDAuMTgpLAogICAgICAgIGZpbGw9MjU1LAogICAgKQogICAgaW1nLnBhc3RlKGdyYWQsICgwLCAwKSkKICAgIGltZy5wdXRhbHBoYShtYXNrKQogICAgYmVsbF9sYXllciA9IEltYWdlLm5ldygiUkdCQSIsIChzaXplLCBzaXplKSwgKDAsIDAsIDAsIDApKQogICAgZHJhd19iZWxsKGJlbGxfbGF5ZXIsIHNpemUgLyAyLCBzaXplIC8gMiwgc2l6ZSAvIDUxMikKICAgIGltZyA9IEltYWdlLmFscGhhX2NvbXBvc2l0ZShpbWcsIGJlbGxfbGF5ZXIpCiAgICByb3VuZGVkID0gSW1hZ2UubmV3KCJSR0JBIiwgKHNpemUsIHNpemUpLCAoMCwgMCwgMCwgMCkpCiAgICByb3VuZGVkLnBhc3RlKGltZywgKDAsIDApKQogICAgcm91bmRlZC5wdXRhbHBoYShtYXNrKQogICAgcm91bmRlZC5zYXZlKG91dF9wYXRoLCAiUE5HIikKCgpkZWYgbWFrZV9pY29uX2dpZihvdXRfcGF0aDogc3RyKSAtPiBOb25lOgogICAgc2l6ZSA9IDY0CiAgICBpbWcgPSBJbWFnZS5uZXcoIlJHQkEiLCAoc2l6ZSwgc2l6ZSksICgwLCAwLCAwLCAwKSkKICAgIGdyYWQgPSBob3Jpem9udGFsX2dyYWRpZW50KChzaXplLCBzaXplKSwgQUNDRU5UX0RBUkssIEFDQ0VOVCkKICAgIGltZy5wYXN0ZShncmFkLCAoMCwgMCkpCiAgICBiZWxsX2xheWVyID0gSW1hZ2UubmV3KCJSR0JBIiwgKHNpemUsIHNpemUpLCAoMCwgMCwgMCwgMCkpCiAgICBkcmF3X2JlbGwoYmVsbF9sYXllciwgc2l6ZSAvIDIsIHNpemUgLyAyLCBzaXplIC8gNTEyKQogICAgaW1nID0gSW1hZ2UuYWxwaGFfY29tcG9zaXRlKGltZywgYmVsbF9sYXllcikKICAgIHJnYiA9IEltYWdlLm5ldygiUkdCIiwgaW1nLnNpemUsICgyNTUsIDI1NSwgMjU1KSkKICAgIHJnYi5wYXN0ZShpbWcsIG1hc2s9aW1nLnNwbGl0KClbM10pCiAgICByZ2Iuc2F2ZShvdXRfcGF0aCwgIkdJRiIpCgoKZGVmIG1haW4oKSAtPiBpbnQ6CiAgICByb290ID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCiAgICBpbWFnZXMgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihyb290LCAiLi4iLCAiaW1hZ2VzIikpCiAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihpbWFnZXMpOgogICAgICAgIHByaW50KCJNaXNzaW5nIGltYWdlcyBkaXJlY3Rvcnk6IiwgaW1hZ2VzLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgcmV0dXJuIDEKICAgIG1ha2VfYmFubmVyKG9zLnBhdGguam9pbihpbWFnZXMsICJiYW5uZXIucG5nIikpCiAgICBtYWtlX2ljb24oMTkyLCBvcy5wYXRoLmpvaW4oaW1hZ2VzLCAiaWNvbi0xOTIucG5nIikpCiAgICBtYWtlX2ljb24oNTEyLCBvcy5wYXRoLmpvaW4oaW1hZ2VzLCAiaWNvbi01MTIucG5nIikpCiAgICBtYWtlX2ljb25fZ2lmKG9zLnBhdGguam9pbihpbWFnZXMsICJpY29uLmdpZiIpKQogICAgcHJpbnQoIk9LIC0+IiwgaW1hZ2VzKQogICAgcmV0dXJuIDAKCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgcmFpc2UgU3lzdGVtRXhpdChtYWluKCkpCg==]]></data>
	</file>
	<file>
	  <filename>/to-do/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/to-do/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBNQVNfTm90aWZpY2F0aW9uQ2VudGVyIGNoYW5nZWxvZwoKIyMgMS4wLjYgLSAwMS8wNy8yMDI2CgojIyMgRml4ZWQKCi0gTW9kdWxlQ2hlY2tlcjogc2VydmljZSB3b3JrZXIgcHVibGlzaCB1c2VzIHdyaXRhYmxlLXBhdGggY2hlY2tzIGluc3RlYWQgb2YgYEBmaWxlX3B1dF9jb250ZW50c2AuCi0gTW9kdWxlQ2hlY2tlcjogYnVsayBub3RpZmljYXRpb24gZGVsZXRlIHVzZXMgYSBzaW5nbGUgYERFTEVURSAuLi4gV0hFUkUgaWQgSU4gKC4uLilgIHF1ZXJ5IGluc3RlYWQgb2YgTisxIGxvb3AuCgojIyAxLjAuNSAtIDA2LzA1LzIwMjYKCiMjIyBDaGFuZ2VkCgotICoqQWRtaW4gYnJhbmRpbmc6KiogVXBkYXRlZCBgaW1hZ2VzL2Jhbm5lci5wbmdgICg2MDB4MTIwKSwgYGltYWdlcy9pY29uLTE5Mi5wbmdgLCBgaW1hZ2VzL2ljb24tNTEyLnBuZ2AsIGFuZCBgaW1hZ2VzL2ljb24uZ2lmYCB3aXRoIG1hdGNoaW5nIGdyYWRpZW50IHN0eWxpbmcgYW5kIGEgYmVsbCBtb3RpZiBhbGlnbmVkIHdpdGggdGhlIGRlZmF1bHQgdGhlbWUgY29sb3IgKGAjMDA3OGQ0YCkuIFJlZ2VuZXJhdGUgdmlhIGBUZXN0L2dlbmVyYXRlX2JyYW5kX2Fzc2V0cy5weWAgaWYgeW91IGFkanVzdCBjb2xvcnMuCi0gKipDR1NpbXBsZVBXQSBpcyBvcHRpb25hbDoqKiBkZWZhdWx0IGlzIHN0YW5kYWxvbmUgUFdBIGhlYWRlcnMgZm9yIHRoaXMgbW9kdWxlIChtYW5pZmVzdCwgY29uZmlndXJhYmxlIHRoZW1lLWNvbG9yLCBhcHBsZSB0b3VjaCBpY29uLCBwdXNoIHNjcmlwdCkuIFNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbiBvbiBwdWJsaWMgcGFnZXMgaXMgYXZhaWxhYmxlIHZpYSBwcmVmZXJlbmNlIGFuZCB0aGUgYG1ldGFkYXRhX3Bvc3RyZW5kZXJgIGhvb2sgKHdoZW4gYHttZXRhZGF0YX1gIGV4aXN0cyBpbiB0ZW1wbGF0ZXMpLgotICoqT3B0LWluIENHU2ltcGxlUFdBIG1lcmdlOioqIHByZWZlcmVuY2UgYG1hc19uY19jaGFpbl9jZ19zaW1wbGVfcHdhYCBtdXN0IGJlIGVuYWJsZWQgdG8gcmVnaXN0ZXIgYE1BU19OQ19Qd2FBZGRvbmAgYW5kIHRvIGNoYWluIENHU2ltcGxlUFdBIGFkbWluIGBHZXRIZWFkZXJIVE1MYC4gVGhlIGR1cGxpY2F0ZS1tYW5pZmVzdCBjaGVja2JveCBhcHBsaWVzIG9ubHkgaW4gdGhhdCBtZXJnZWQgbW9kZS4KLSAqKk5ldyBmaWxlczoqKiBgbGliL21hc19uY19wd2Ffc3RhbmRhbG9uZS5waHBgLCBganMvbWFzLW5jLXN3LXJlZ2lzdGVyLmpzYC4KCiMjIyBOb3RlCgotIFRoZSBmdWxsIENHU2ltcGxlUFdBIHByb2R1Y3QgKG9mZmxpbmUgY29udGVudCB0eXBlLCBhc3NldCBzY2FubmVyLCBhZG1pbiBVSSwgYW5kIHNvIG9uKSBpcyBub3QgdmVuZG9yZWQgaW5zaWRlIE1BUyAoR1BMIHNjb3BlIGFuZCBsb25nLXRlcm0gbWFpbnRlbmFuY2UpLiBVc2UgQ0dTaW1wbGVQV0EgYXMgYSBzZXBhcmF0ZSBtb2R1bGUgd2hlbiB5b3UgbmVlZCB0aGF0IGZlYXR1cmUgc2V0LCBvciBrZWVwIE1BUyBzdGFuZGFsb25lIHdpdGggcHVibGlzaCArIG9wdGlvbmFsIHB1YmxpYyBQV0Egb3V0cHV0LgoKIyMgMS4wLjQgLSAwNi8wNS8yMDI2CgojIyMgQWRkZWQKCi0gKipNb2R1bGUgVUkgKFNldHRpbmdzKToqKiBjb25maWd1cmFibGUgKiphZG1pbiBtZW51IHNlY3Rpb24qKiAoYG1hc19uY19hZG1pbl9zZWN0aW9uYCkgd2l0aCB0aGUgc2FtZSB0b3AtbGV2ZWwgY2hvaWNlcyBhcyBjb3JlIGFkbWluIChNYWluLCBDb250ZW50LCBMYXlvdXQsIEZpbGVzLCBVc2VycyAmIEdyb3VwcywgRXh0ZW5zaW9ucywgU2l0ZSBBZG1pbiwgRS1Db21tZXJjZSwgTXkgUHJlZmVyZW5jZXMpLiBgR2V0QWRtaW5TZWN0aW9uKClgIHJlYWRzIHRoaXMgcHJlZmVyZW5jZSB3aXRoIHZhbGlkYXRpb24uCi0gKipTaG93IERvbmF0aW9ucyB0YWIqKiBtb3ZlZCBpbnRvIHRoZSBuZXcgKipNb2R1bGUgVUkqKiBibG9jayBhdCB0aGUgdG9wIG9mIFNldHRpbmdzICh3aXRoIHNob3J0IGhlbHApLiBUaGUgRG9uYXRpb25zIHRhYiBoaWRlIGNvbnRyb2wgb24gdGhlIERvbmF0aW9ucyB0YWIgbm93IHBvc3RzIGBzYXZlX3NldHRpbmdzYCB3aXRoIHRoZSBzYW1lIGhpZGRlbiBmaWVsZCBwYXR0ZXJuIGFzIE1BU19PcGVuU3RyZWV0TWFwIHNvICoqSGlkZSBEb25hdGlvbnMgdGFiKiogd29ya3MuCgojIyAxLjAuMyAtIDA2LzA1LzIwMjYKCiMjIyBBZGRlZAoKLSAqKkNHU2ltcGxlUFdBIHBhcml0eToqKiBBZG1pbiBgR2V0SGVhZGVySFRNTGAgbm93IHByZWZpeGVzIGBDR1NpbXBsZVBXQTo6R2V0SGVhZGVySFRNTCgpYCB3aGVuIHRoYXQgbW9kdWxlIGlzIGluc3RhbGxlZCAoc2FtZSBwYXR0ZXJuIGFzIGBDR1dlYlB1c2g6OkdldEhlYWRlckhUTUxgKSwgc28gc2VydmljZSB3b3JrZXIgcmVnZW5lcmF0aW9uIGFuZCBzY3JpcHQgY29tYmluZXIgcnVuIG9uIE1BUyBhZG1pbiBwYWdlcy4gV2hlbiBDR1NpbXBsZVBXQSBpcyBwcmVzZW50LCB0aGUgZXh0cmEgbW9kdWxlIG1hbmlmZXN0IGxpbmsgYW5kIHRoZW1lLWNvbG9yIGFyZSBza2lwcGVkIGJ5IGRlZmF1bHQgdG8gYXZvaWQgZHVwbGljYXRlIG1hbmlmZXN0czsgb3B0aW9uYWwgcHJlZmVyZW5jZSBmb3JjZXMgdGhlIE1BUyBtYW5pZmVzdCBpbiBhZG1pbiBoZWFkZXJzLgotICoqQ0dXZWJQdXNoIGJyaWRnZToqKiBPcHRpb25hbCBzZXR0aW5nIHRvIGFsc28gY2FsbCBgQ0dXZWJQdXNoOjpicm9hZGNhc3RfbWVzc2FnZSgpYCB3aXRoIGEgYG5vdGlmaWNhdGlvbl9tZXNzYWdlYCBidWlsdCBmcm9tIHRoZSBzYW1lIHRpdGxlIGFuZCBib2R5IGFzIE1BUyBkZWxpdmVyaWVzLiBEaXNwYXRjaGVyIHJ1bnMgV2ViIFB1c2ggd2hlbiBlaXRoZXIgaW50ZXJuYWwgcHVzaCBvciB0aGlzIGJyaWRnZSBpcyBlbmFibGVkLiBJbnRlcm5hbCBNaW5pc2hsaW5rIHNlbmRzIGFyZSBnYXRlZCBieSB0aGUgZXhpc3RpbmcgV2ViIFB1c2ggY2hhbm5lbCBjaGVja2JveC4KLSAqKkludGVyb3A6KiogTmV3IGBsaWIvbWFzX25jX2NnX2ludGVyb3AucGhwYCwgU2V0dGluZ3Mgc2VjdGlvbiBzaG93aW5nIHJ1bnRpbWUgZGV0ZWN0aW9uIG9mIENHU2ltcGxlUFdBIGFuZCBDR1dlYlB1c2gsIEhlbHAgSW50ZXJvcCB0YWIgdGV4dCBmb3IgdGhlIENHIHN0YWNrLgoKIyMgMS4wLjIgLSAwNy8wNS8yMDI2CgojIyMgRml4ZWQKCi0gSGVscCBzdWItdGFicyAoT3ZlcnZpZXcsIENoYW5uZWxzLCBJbnRlcm9wKSBubyBsb25nZXIgcmV1c2UgYGRpdiNwYWdlX3RhYnNgIG1hcmt1cC4gQ01TIGFkbWluIGBjbXNfaW5pdFRhYnMoKWAgYmluZHMgZXZlcnkgYGRpdmAgdW5kZXIgdGhlIHJlYWwgbW9kdWxlIGAjcGFnZV90YWJzYCwgd2hpY2ggaGlkIGAjaGVscF9jYCB3aGVuIGEgc3ViLXRhYiB3YXMgY2xpY2tlZC4gU3ViLW5hdmlnYXRpb24gbm93IHVzZXMgYDxhIHJvbGU9InRhYiI+YCBwbHVzIHNjb3BlZCBqUXVlcnkgc28gSGVscCBjb250ZW50IHN0YXlzIHZpc2libGUuCgojIyAxLjAuMSAtIDA3LzA1LzIwMjYKCiMjIyBGaXhlZAoKLSBBZG1pbiBiYW5uZXIgYW5kIG1hbmlmZXN0IGljb24gVVJMcyBubyBsb25nZXIgZG91YmxlIHRoZSBzaXRlIHJvb3Qgd2hlbiBgR2V0TW9kdWxlVVJMUGF0aCgpYCBhbHJlYWR5IHJldHVybnMgYW4gYWJzb2x1dGUgVVJMLgotIERvbmF0aW9ucyBzcG9uc29yIGxvZ28gdXNlcyBmaXhlZCBkaW1lbnNpb25zIGFuZCBgb2JqZWN0LWZpdGAgc28gbGFyZ2Ugc291cmNlIGltYWdlcyBkbyBub3Qgb3ZlcmZsb3cgdGhlIGxheW91dC4KCiMjIDEuMC4wIC0gMDYvMDUvMjAyNgoKIyMjIEFkZGVkCgotIEZpcnN0IHJlbGVhc2U6IGludGVybmFsIG5vdGlmaWNhdGlvbiBsb2cgd2l0aCBDTVMgY29yZSBldmVudCBob29rcyAobmV3IHVzZXIsIG1vZHVsZSBpbnN0YWxsIG9yIHVwZ3JhZGUgb3IgdW5pbnN0YWxsLCBvcHRpb25hbCBsb2dpbiBmYWlsdXJlIGFuZCB1c2VyIGRlbGV0ZSkuCi0gT3V0Ym91bmQgY2hhbm5lbHM6IGVtYWlsIHZpYSBgY21zX21haWxlcmAsIERpc2NvcmQgSW5jb21pbmcgV2ViaG9va3MsIFdlYiBQdXNoIHVzaW5nIGBtaW5pc2hsaW5rL3dlYi1wdXNoYCBhbmQgVkFQSUQga2V5cyBzdG9yZWQgaW4gbW9kdWxlIHByZWZlcmVuY2VzLgotIFN5c3RlbSBoZWFsdGggY2hlY2tzIChQSFAgdmVyc2lvbiBmbG9vciwgZnJlZSBkaXNrIHBlcmNlbnQsIERCIHBpbmcpIG9uIGNyb24gd2hlbiBlbmFibGVkLgotIFNpZ25lZCBjcm9uIFVSTCBhY3Rpb24gZm9yIGhlYXJ0YmVhdCBhbmQgaGVhbHRoIGV2YWx1YXRpb24uCi0gT3BlcmF0b3IgVUkgYWxpZ25lZCB3aXRoIE1BU19PcGVuU3RyZWV0TWFwIHRhYnMgKFNldHRpbmdzLCBOb3RpZmljYXRpb25zLCBIZWxwLCBBYm91dCwgQ2hhbmdlbG9nLCBvcHRpb25hbCBEb25hdGlvbnMpLgotIFByb2dyZXNzaXZlIFdlYiBBcHAgbWFuaWZlc3QgYWN0aW9uIGFuZCBvcHRpb25hbCBDR1NpbXBsZVBXQSBzZXJ2aWNlIHdvcmtlciBtZXJnZSBzdXBwb3J0LgotIFB1Ymxpc2hpbmcgaGVscGVyIHRoYXQgd3JpdGVzIGBtYXNfbmNfc3cuanNgIHRvIHRoZSBDTVMgZG9jdW1lbnQgcm9vdC4KLSBJbnRlcm9wZXJhYmlsaXR5OiBgSG9va01hbmFnZXI6OmRvX2hvb2soJ01BU19Ob3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmeScsIGFycmF5KCRwYXlsb2FkKSlgIGFuZCBkb2N1bWVudGVkIG1vZHVsZSBldmVudCBgTm90aWZ5YC4K]]></data>
	</file>
	<file>
	  <filename>/vendor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/autoload.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgppZiAoUEhQX1ZFUlNJT05fSUQgPCA1MDYwMCkgewogICAgaWYgKCFoZWFkZXJzX3NlbnQoKSkgewogICAgICAgIGhlYWRlcignSFRUUC8xLjEgNTAwIEludGVybmFsIFNlcnZlciBFcnJvcicpOwogICAgfQogICAgJGVyciA9ICdDb21wb3NlciAyLjMuMCBkcm9wcGVkIHN1cHBvcnQgZm9yIGF1dG9sb2FkaW5nIG9uIFBIUCA8NS42IGFuZCB5b3UgYXJlIHJ1bm5pbmcgJy5QSFBfVkVSU0lPTi4nLCBwbGVhc2UgdXBncmFkZSBQSFAgb3IgdXNlIENvbXBvc2VyIDIuMiBMVFMgdmlhICJjb21wb3NlciBzZWxmLXVwZGF0ZSAtLTIuMiIuIEFib3J0aW5nLicuUEhQX0VPTDsKICAgIGlmICghaW5pX2dldCgnZGlzcGxheV9lcnJvcnMnKSkgewogICAgICAgIGlmIChQSFBfU0FQSSA9PT0gJ2NsaScgfHwgUEhQX1NBUEkgPT09ICdwaHBkYmcnKSB7CiAgICAgICAgICAgIGZ3cml0ZShTVERFUlIsICRlcnIpOwogICAgICAgIH0gZWxzZWlmICghaGVhZGVyc19zZW50KCkpIHsKICAgICAgICAgICAgZWNobyAkZXJyOwogICAgICAgIH0KICAgIH0KICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCRlcnIpOwp9CgpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvY29tcG9zZXIvYXV0b2xvYWRfcmVhbC5waHAnOwoKcmV0dXJuIENvbXBvc2VyQXV0b2xvYWRlckluaXQ5ZjQxZWI0ZDRiNTJiODMzYzUzOGYzNjdhMThhNDMwYTo6Z2V0TG9hZGVyKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/bin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/brick/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/brick/math/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/brick/math/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDaGFuZ2Vsb2cKCkFsbCBub3RhYmxlIGNoYW5nZXMgdG8gdGhpcyBwcm9qZWN0IHdpbGwgYmUgZG9jdW1lbnRlZCBpbiB0aGlzIGZpbGUuCgojIyBbMC45LjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjkuMykgLSAyMDIxLTA4LTE1Cgrwn5qAICoqQ29tcGF0aWJpbGl0eSB3aXRoIFBIUCA4LjEqKgoKLSBTdXBwb3J0IGZvciBjdXN0b20gb2JqZWN0IHNlcmlhbGl6YXRpb247IHRoaXMgcmVtb3ZlcyBhIHdhcm5pbmcgb24gUEhQIDguMSBkdWUgdG8gdGhlIGBTZXJpYWxpemFibGVgIGludGVyZmFjZSBiZWluZyBkZXByZWNhdGVkICh0aGFua3MgQFRSb3dib3RoYW0pCgojIyBbMC45LjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjkuMikgLSAyMDIxLTAxLTIwCgrwn5CbICoqQnVnIGZpeCoqCgotIEluY29ycmVjdCByZXN1bHRzIGNvdWxkIGJlIHJldHVybmVkIHdoZW4gdXNpbmcgdGhlIEJDTWF0aCBjYWxjdWxhdG9yLCB3aXRoIGEgZGVmYXVsdCBzY2FsZSBzZXQgd2l0aCBgYmNzY2FsZSgpYCwgb24gUEhQID49IDcuMiAoIzU1KS4KCiMjIFswLjkuMV0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuOS4xKSAtIDIwMjAtMDgtMTkKCuKcqCBOZXcgZmVhdHVyZXMKCi0gYEJpZ0ludGVnZXI6Om5vdCgpYCByZXR1cm5zIHRoZSBiaXR3aXNlIGBOT1RgIHZhbHVlCgrwn5CbICoqQnVnIGZpeGVzKioKCi0gYEJpZ0ludGVnZXI6OnRvQnl0ZXMoKWAgY291bGQgcmV0dXJuIGFuIGluY29ycmVjdCBiaW5hcnkgcmVwcmVzZW50YXRpb24gZm9yIHNvbWUgbnVtYmVycwotIFRoZSBiaXR3aXNlIG9wZXJhdGlvbnMgYGFuZCgpYCwgYG9yKClgLCBgeG9yKClgIG9uIGBCaWdJbnRlZ2VyYCBjb3VsZCByZXR1cm4gYW4gaW5jb3JyZWN0IHJlc3VsdCB3aGVuIHRoZSBHTVAgZXh0ZW5zaW9uIGlzIG5vdCBhdmFpbGFibGUKCiMjIFswLjkuMF0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuOS4wKSAtIDIwMjAtMDgtMTgKCvCfkYwgKipJbXByb3ZlbWVudHMqKgoKLSBgQmlnTnVtYmVyOjpvZigpYCBub3cgYWNjZXB0cyBgLjEyM2AgYW5kIGAxMjMuYCBmb3JtYXRzLCBib3RoIG9mIHdoaWNoIHJldHVybiBhIGBCaWdEZWNpbWFsYAoK8J+SpSAqKkJyZWFraW5nIGNoYW5nZXMqKgoKLSBEZXByZWNhdGVkIG1ldGhvZCBgQmlnSW50ZWdlcjo6cG93ZXJNb2QoKWAgaGFzIGJlZW4gcmVtb3ZlZCAtIHVzZSBgbW9kUG93KClgIGluc3RlYWQKLSBEZXByZWNhdGVkIG1ldGhvZCBgQmlnSW50ZWdlcjo6cGFyc2UoKWAgaGFzIGJlZW4gcmVtb3ZlZCAtIHVzZSBgZnJvbUJhc2UoKWAgaW5zdGVhZAoKIyMgWzAuOC4xN10oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuOC4xNykgLSAyMDIwLTA4LTE5Cgrwn5CbICoqQnVnIGZpeCoqCgotIGBCaWdJbnRlZ2VyOjp0b0J5dGVzKClgIGNvdWxkIHJldHVybiBhbiBpbmNvcnJlY3QgYmluYXJ5IHJlcHJlc2VudGF0aW9uIGZvciBzb21lIG51bWJlcnMKLSBUaGUgYml0d2lzZSBvcGVyYXRpb25zIGBhbmQoKWAsIGBvcigpYCwgYHhvcigpYCBvbiBgQmlnSW50ZWdlcmAgY291bGQgcmV0dXJuIGFuIGluY29ycmVjdCByZXN1bHQgd2hlbiB0aGUgR01QIGV4dGVuc2lvbiBpcyBub3QgYXZhaWxhYmxlCgojIyBbMC44LjE2XShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC44LjE2KSAtIDIwMjAtMDgtMTgKCvCfmpEgKipDcml0aWNhbCBmaXgqKgoKLSBUaGlzIHZlcnNpb24gcmVpbnRyb2R1Y2VzIHRoZSBkZXByZWNhdGVkIGBCaWdJbnRlZ2VyOjpwYXJzZSgpYCBtZXRob2QsIHRoYXQgaGFzIGJlZW4gcmVtb3ZlZCBieSBtaXN0YWtlIGluIHZlcnNpb24gYDAuOC45YCBhbmQgc2hvdWxkIGhhdmUgbGFzdGVkIGZvciB0aGUgd2hvbGUgYDAuOGAgcmVsZWFzZSBjeWNsZS4KCuKcqCAqKk5ldyBmZWF0dXJlcyoqCgotIGBCaWdJbnRlZ2VyOjptb2RJbnZlcnNlKClgIGNhbGN1bGF0ZXMgYSBtb2R1bGFyIG11bHRpcGxpY2F0aXZlIGludmVyc2UKLSBgQmlnSW50ZWdlcjo6ZnJvbUJ5dGVzKClgIGNyZWF0ZXMgYSBgQmlnSW50ZWdlcmAgZnJvbSBhIGJ5dGUgc3RyaW5nCi0gYEJpZ0ludGVnZXI6OnRvQnl0ZXMoKWAgY29udmVydHMgYSBgQmlnSW50ZWdlcmAgdG8gYSBieXRlIHN0cmluZwotIGBCaWdJbnRlZ2VyOjpyYW5kb21CaXRzKClgIGNyZWF0ZXMgYSBwc2V1ZG8tcmFuZG9tIGBCaWdJbnRlZ2VyYCBvZiBhIGdpdmVuIGJpdCBsZW5ndGgKLSBgQmlnSW50ZWdlcjo6cmFuZG9tUmFuZ2UoKWAgY3JlYXRlcyBhIHBzZXVkby1yYW5kb20gYEJpZ0ludGVnZXJgIGJldHdlZW4gdHdvIGJvdW5kcwoK8J+SqSAqKkRlcHJlY2F0aW9ucyoqCgotIGBCaWdJbnRlZ2VyOjpwb3dlck1vZCgpYCBpcyBub3cgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgYG1vZFBvdygpYAoKIyMgWzAuOC4xNV0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuOC4xNSkgLSAyMDIwLTA0LTE1Cgrwn5CbICoqRml4ZXMqKgoKLSBhZGRlZCBtaXNzaW5nIGBleHQtanNvbmAgcmVxdWlyZW1lbnQsIGR1ZSB0byBgQmlnTnVtYmVyYCBpbXBsZW1lbnRpbmcgYEpzb25TZXJpYWxpemFibGVgCgrimqHvuI8gKipPcHRpbWl6YXRpb25zKioKCi0gYWRkaXRpb25hbCBvcHRpbWl6YXRpb24gaW4gYEJpZ0ludGVnZXI6OnJlbWFpbmRlcigpYAoKIyMgWzAuOC4xNF0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuOC4xNCkgLSAyMDIwLTAyLTE4CgrinKggKipOZXcgZmVhdHVyZXMqKgoKLSBgQmlnSW50ZWdlcjo6Z2V0TG93ZXN0U2V0Qml0KClgIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSByaWdodG1vc3Qgb25lIGJpdAoKIyMgWzAuOC4xM10oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuOC4xMykgLSAyMDIwLTAyLTE2CgrinKggKipOZXcgZmVhdHVyZXMqKgoKLSBgQmlnSW50ZWdlcjo6aXNFdmVuKClgIHRlc3RzIHdoZXRoZXIgdGhlIG51bWJlciBpcyBldmVuCi0gYEJpZ0ludGVnZXI6OmlzT2RkKClgIHRlc3RzIHdoZXRoZXIgdGhlIG51bWJlciBpcyBvZGQKLSBgQmlnSW50ZWdlcjo6dGVzdEJpdCgpYCB0ZXN0cyBpZiBhIGJpdCBpcyBzZXQKLSBgQmlnSW50ZWdlcjo6Z2V0Qml0TGVuZ3RoKClgIHJldHVybnMgdGhlIG51bWJlciBvZiBiaXRzIGluIHRoZSBtaW5pbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIKCiMjIFswLjguMTJdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjguMTIpIC0gMjAyMC0wMi0wMwoK8J+boO+4jyAqKk1haW50ZW5hbmNlIHJlbGVhc2UqKgoKQ2xhc3NlcyBhcmUgbm93IGFubm90YXRlZCBmb3IgYmV0dGVyIHN0YXRpYyBhbmFseXNpcyB3aXRoIFtwc2FsbV0oaHR0cHM6Ly9wc2FsbS5kZXYvKS4KClRoaXMgaXMgYSBtYWludGVuYW5jZSByZWxlYXNlOiBubyBidWcgZml4ZXMsIG5vIG5ldyBmZWF0dXJlcywgbm8gYnJlYWtpbmcgY2hhbmdlcy4KCiMjIFswLjguMTFdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjguMTEpIC0gMjAyMC0wMS0yMwoK4pyoICoqTmV3IGZlYXR1cmUqKgoKYEJpZ0ludGVnZXI6OnBvd2VyTW9kKClgIHBlcmZvcm1zIGEgcG93ZXItd2l0aC1tb2R1bG8gb3BlcmF0aW9uLiBVc2VmdWwgZm9yIGNyeXB0by4KCiMjIFswLjguMTBdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjguMTApIC0gMjAyMC0wMS0yMQoK4pyoICoqTmV3IGZlYXR1cmUqKgoKYEJpZ0ludGVnZXI6Om1vZCgpYCByZXR1cm5zIHRoZSAqKm1vZHVsbyoqIG9mIHR3byBudW1iZXJzLiBUaGUgKm1vZHVsbyogZGlmZmVycyBmcm9tIHRoZSAqcmVtYWluZGVyKiB3aGVuIHRoZSBzaWducyBvZiB0aGUgb3BlcmFuZHMgYXJlIGRpZmZlcmVudC4KCiMjIFswLjguOV0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuOC45KSAtIDIwMjAtMDEtMDgKCuKaoe+4jyAqKlBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyoqCgpBIGZldyBhZGRpdGlvbmFsIG9wdGltaXphdGlvbnMgaW4gYEJpZ0ludGVnZXJgIGFuZCBgQmlnRGVjaW1hbGAgd2hlbiBvbmUgb2YgdGhlIG9wZXJhbmRzIGNhbiBiZSByZXR1cm5lZCBhcyBpcy4gVGhhbmtzIHRvIEB0b210b21zZW4gaW4gIzI0LgoKIyMgWzAuOC44XShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC44LjgpIC0gMjAxOS0wNC0yNQoK8J+QmyAqKkJ1ZyBmaXhlcyoqCgotIGBCaWdJbnRlZ2VyOjp0b0Jhc2UoKWAgY291bGQgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyBmb3IgemVybyB2YWx1ZXMgKEJDTWF0aCAmIE5hdGl2ZSBjYWxjdWxhdG9ycyBvbmx5LCBHTVAgY2FsY3VsYXRvciB1bmFmZmVjdGVkKQoK4pyoICoqTmV3IGZlYXR1cmVzKioKCi0gYEJpZ0ludGVnZXI6OnRvQXJiaXRyYXJ5QmFzZSgpYCBjb252ZXJ0cyBhIG51bWJlciB0byBhbiBhcmJpdHJhcnkgYmFzZSwgdXNpbmcgYSBjdXN0b20gYWxwaGFiZXQKLSBgQmlnSW50ZWdlcjo6ZnJvbUFyYml0cmFyeUJhc2UoKWAgY29udmVydHMgYSBzdHJpbmcgaW4gYW4gYXJiaXRyYXJ5IGJhc2UsIHVzaW5nIGEgY3VzdG9tIGFscGhhYmV0LCBiYWNrIHRvIGEgbnVtYmVyCgpUaGVzZSBtZXRob2RzIGNhbiBiZSB1c2VkIGFzIHRoZSBmb3VuZGF0aW9uIHRvIGNvbnZlcnQgc3RyaW5ncyBiZXR3ZWVuIGRpZmZlcmVudCBiYXNlcy9hbHBoYWJldHMsIHVzaW5nIEJpZ0ludGVnZXIgYXMgYW4gaW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uLgoK8J+SqSAqKkRlcHJlY2F0aW9ucyoqCgotIGBCaWdJbnRlZ2VyOjpwYXJzZSgpYCBpcyBub3cgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgYGZyb21CYXNlKClgCgpgQmlnSW50ZWdlcjo6ZnJvbUJhc2UoKWAgd29ya3MgdGhlIHNhbWUgd2F5IGFzIGBwYXJzZSgpYCwgd2l0aCAyIG1pbm9yIGRpZmZlcmVuY2VzOgoKLSB0aGUgYCRiYXNlYCBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQsIGl0IGRvZXMgbm90IGRlZmF1bHQgdG8gYDEwYAotIGl0IHRocm93cyBhIGBOdW1iZXJGb3JtYXRFeGNlcHRpb25gIGluc3RlYWQgb2YgYW4gYEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbmAgd2hlbiB0aGUgbnVtYmVyIGlzIG1hbGZvcm1lZAoKIyMgWzAuOC43XShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC44LjcpIC0gMjAxOS0wNC0yMAoKKipJbXByb3ZlbWVudHMqKgoKLSBTYWZlciBjb252ZXJzaW9uIGZyb20gYGZsb2F0YCB3aGVuIHVzaW5nIGN1c3RvbSBsb2NhbGVzCi0gKipNdWNoIGZhc3RlcioqIGBOYXRpdmVDYWxjdWxhdG9yYCBpbXBsZW1lbnRhdGlvbiDwn5qACgpZb3UgY2FuIGV4cGVjdCAqKmF0IGxlYXN0IGEgM3ggcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQqKiBmb3IgY29tbW9uIGFyaXRobWV0aWMgb3BlcmF0aW9ucyB3aGVuIHVzaW5nIHRoZSBsaWJyYXJ5IG9uIHN5c3RlbXMgd2l0aG91dCBHTVAgb3IgQkNNYXRoOyBpdCBnZXRzIGV4cG9uZW50aWFsbHkgZmFzdGVyIG9uIG11bHRpcGxpY2F0aW9ucyB3aXRoIGEgaGlnaCBudW1iZXIgb2YgZGlnaXRzLiBUaGlzIGlzIGR1ZSB0byBjYWxjdWxhdGlvbnMgbm93IGJlaW5nIHBlcmZvcm1lZCBvbiB3aG9sZSBibG9ja3Mgb2YgZGlnaXRzICh0aGUgYmxvY2sgc2l6ZSBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLCAzMi1iaXQgb3IgNjQtYml0KSBpbnN0ZWFkIG9mIGRpZ2l0LWJ5LWRpZ2l0IGFzIGJlZm9yZS4KCiMjIFswLjguNl0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuOC42KSAtIDIwMTktMDQtMTEKCioqTmV3IG1ldGhvZCoqCgpgQmlnTnVtYmVyOjpzdW0oKWAgcmV0dXJucyB0aGUgc3VtIG9mIG9uZSBvciBtb3JlIG51bWJlcnMuCgojIyBbMC44LjVdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjguNSkgLSAyMDE5LTAyLTEyCgoqKkJ1ZyBmaXgqKjogYG9mKClgIGZhY3RvcnkgbWV0aG9kcyBjb3VsZCBmYWlsIHdoZW4gcGFzc2luZyBhIGBmbG9hdGAgaW4gZW52aXJvbm1lbnRzIHVzaW5nIGEgYExDX05VTUVSSUNgIGxvY2FsZSB3aXRoIGEgZGVjaW1hbCBzZXBhcmF0b3Igb3RoZXIgdGhhbiBgJy4nYCAoIzIwKS4KClRoYW5rcyBAbWFub3dhcmsg8J+RjQoKIyMgWzAuOC40XShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC44LjQpIC0gMjAxOC0xMi0wNwoKKipOZXcgbWV0aG9kKioKCmBCaWdEZWNpbWFsOjpzcXJ0KClgIGNhbGN1bGF0ZXMgdGhlIHNxdWFyZSByb290IG9mIGEgZGVjaW1hbCBudW1iZXIsIHRvIGEgZ2l2ZW4gc2NhbGUuCgojIyBbMC44LjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjguMykgLSAyMDE4LTEyLTA2CgoqKk5ldyBtZXRob2QqKgoKYEJpZ0ludGVnZXI6OnNxcnQoKWAgY2FsY3VsYXRlcyB0aGUgc3F1YXJlIHJvb3Qgb2YgYSBudW1iZXIgKHRoYW5rcyBAcGV0ZXIyNzlrKS4KCioqTmV3IGV4Y2VwdGlvbioqCgpgTmVnYXRpdmVOdW1iZXJFeGNlcHRpb25gIGlzIHRocm93biB3aGVuIGNhbGxpbmcgYHNxcnQoKWAgb24gYSBuZWdhdGl2ZSBudW1iZXIuCgojIyBbMC44LjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjguMikgLSAyMDE4LTExLTA4CgoqKlBlcmZvcm1hbmNlIHVwZGF0ZSoqCgotIEZ1cnRoZXIgaW1wcm92ZW1lbnQgb2YgYHRvSW50KClgIHBlcmZvcm1hbmNlCi0gYE5hdGl2ZUNhbGN1bGF0b3JgIGNhbiBub3cgcGVyZm9ybSBzb21lIG11bHRpcGxpY2F0aW9ucyBtb3JlIGVmZmljaWVudGx5CgojIyBbMC44LjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjguMSkgLSAyMDE4LTExLTA3CgpQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gb2YgYHRvSW50KClgIG1ldGhvZHMuCgojIyBbMC44LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjguMCkgLSAyMDE4LTEwLTEzCgoqKkJyZWFraW5nIGNoYW5nZXMqKgoKVGhlIGZvbGxvd2luZyBkZXByZWNhdGVkIG1ldGhvZHMgaGF2ZSBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgbmV3IG1ldGhvZCBuYW1lIGluc3RlYWQ6Cgp8IE1ldGhvZCByZW1vdmVkIHwgUmVwbGFjZW1lbnQgbWV0aG9kIHwKfCAtLS0gfCAtLS0gfAp8IGBCaWdEZWNpbWFsOjpnZXRJbnRlZ3JhbCgpYCB8IGBCaWdEZWNpbWFsOjpnZXRJbnRlZ3JhbFBhcnQoKWAgfAp8IGBCaWdEZWNpbWFsOjpnZXRGcmFjdGlvbigpYCB8IGBCaWdEZWNpbWFsOjpnZXRGcmFjdGlvbmFsUGFydCgpYCB8CgotLS0KCioqTmV3IGZlYXR1cmVzKioKCmBCaWdJbnRlZ2VyYCBoYXMgYmVlbiBhdWdtZW50ZWQgd2l0aCA1IG5ldyBtZXRob2RzIGZvciBiaXR3aXNlIG9wZXJhdGlvbnM6Cgp8IE5ldyBtZXRob2QgfCBEZXNjcmlwdGlvbiB8CnwgLS0tIHwgLS0tIHwKfCBgYW5kKClgIHwgcGVyZm9ybXMgYSBiaXR3aXNlIGBBTkRgIG9wZXJhdGlvbiBvbiB0d28gbnVtYmVycyB8CnwgYG9yKClgIHwgcGVyZm9ybXMgYSBiaXR3aXNlIGBPUmAgb3BlcmF0aW9uIG9uIHR3byBudW1iZXJzIHwKfCBgeG9yKClgIHwgcGVyZm9ybXMgYSBiaXR3aXNlIGBYT1JgIG9wZXJhdGlvbiBvbiB0d28gbnVtYmVycyB8CnwgYHNoaWZ0ZWRMZWZ0KClgIHwgcmV0dXJucyB0aGUgbnVtYmVyIHNoaWZ0ZWQgbGVmdCBieSBhIG51bWJlciBvZiBiaXRzIHwKfCBgc2hpZnRlZFJpZ2h0KClgIHwgcmV0dXJucyB0aGUgbnVtYmVyIHNoaWZ0ZWQgcmlnaHQgYnkgYSBudW1iZXIgb2YgYml0cyB8CgpUaGFua3MgdG8gQERBU1BSaUQg8J+RjQoKIyMgWzAuNy4zXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC43LjMpIC0gMjAxOC0wOC0yMAoKKipOZXcgbWV0aG9kOioqIGBCaWdEZWNpbWFsOjpoYXNOb25aZXJvRnJhY3Rpb25hbFBhcnQoKWAKCioqUmVuYW1lZC9kZXByZWNhdGVkIG1ldGhvZHM6KioKCi0gYEJpZ0RlY2ltYWw6OmdldEludGVncmFsKClgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGdldEludGVncmFsUGFydCgpYCBhbmQgaXMgbm93IGRlcHJlY2F0ZWQKLSBgQmlnRGVjaW1hbDo6Z2V0RnJhY3Rpb24oKWAgaGFzIGJlZW4gcmVuYW1lZCB0byBgZ2V0RnJhY3Rpb25hbFBhcnQoKWAgYW5kIGlzIG5vdyBkZXByZWNhdGVkCgojIyBbMC43LjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjcuMikgLSAyMDE4LTA3LTIxCgoqKlBlcmZvcm1hbmNlIHVwZGF0ZSoqCgpgQmlnSW50ZWdlcjo6cGFyc2UoKWAgYW5kIGB0b0Jhc2UoKWAgbm93IHVzZSBHTVAncyBidWlsdC1pbiBiYXNlIGNvbnZlcnNpb24gZmVhdHVyZXMgd2hlbiBhdmFpbGFibGUuCgojIyBbMC43LjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjcuMSkgLSAyMDE4LTAzLTAxCgpUaGlzIGlzIGEgbWFpbnRlbmFuY2UgcmVsZWFzZSwgbm8gY29kZSBoYXMgYmVlbiBjaGFuZ2VkLgoKLSBXaGVuIGluc3RhbGxlZCB3aXRoIGAtLW5vLWRldmAsIHRoZSBhdXRvbG9hZGVyIGRvZXMgbm90IGF1dG9sb2FkIHRlc3RzIGFueW1vcmUKLSBUZXN0cyBhbmQgb3RoZXIgZmlsZXMgdW5uZWNlc3NhcnkgZm9yIHByb2R1Y3Rpb24gYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIGRpc3QgcGFja2FnZQoKVGhpcyB3aWxsIGhlbHAgbWFrZSBpbnN0YWxsYXRpb25zIG1vcmUgY29tcGFjdC4KCiMjIFswLjcuMF0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuNy4wKSAtIDIwMTctMTAtMDIKCk1ldGhvZHMgcmVuYW1lZDoKCi0gYEJpZ051bWJlcjpzaWduKClgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGdldFNpZ24oKWAKLSBgQmlnRGVjaW1hbDo6dW5zY2FsZWRWYWx1ZSgpYCBoYXMgYmVlbiByZW5hbWVkIHRvIGBnZXRVbnNjYWxlZFZhbHVlKClgCi0gYEJpZ0RlY2ltYWw6OnNjYWxlKClgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGdldFNjYWxlKClgCi0gYEJpZ0RlY2ltYWw6OmludGVncmFsKClgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGdldEludGVncmFsKClgCi0gYEJpZ0RlY2ltYWw6OmZyYWN0aW9uKClgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGdldEZyYWN0aW9uKClgCi0gYEJpZ1JhdGlvbmFsOjpudW1lcmF0b3IoKWAgaGFzIGJlZW4gcmVuYW1lZCB0byBgZ2V0TnVtZXJhdG9yKClgCi0gYEJpZ1JhdGlvbmFsOjpkZW5vbWluYXRvcigpYCBoYXMgYmVlbiByZW5hbWVkIHRvIGBnZXREZW5vbWluYXRvcigpYAoKQ2xhc3NlcyByZW5hbWVkOgoKLSBgQXJpdGhtZXRpY0V4Y2VwdGlvbmAgaGFzIGJlZW4gcmVuYW1lZCB0byBgTWF0aEV4Y2VwdGlvbmAKCiMjIFswLjYuMl0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuNi4yKSAtIDIwMTctMTAtMDIKClRoZSBiYXNlIGNsYXNzIGZvciBhbGwgZXhjZXB0aW9ucyBpcyBub3cgYE1hdGhFeGNlcHRpb25gLgpgQXJpdGhtZXRpY0V4Y2VwdGlvbmAgaGFzIGJlZW4gZGVwcmVjYXRlZCwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAwLjcuMC4KCiMjIFswLjYuMV0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuNi4xKSAtIDIwMTctMTAtMDIKCkEgbnVtYmVyIG9mIG1ldGhvZHMgaGF2ZSBiZWVuIHJlbmFtZWQ6CgotIGBCaWdOdW1iZXI6c2lnbigpYCBpcyBkZXByZWNhdGVkOyB1c2UgYGdldFNpZ24oKWAgaW5zdGVhZAotIGBCaWdEZWNpbWFsOjp1bnNjYWxlZFZhbHVlKClgIGlzIGRlcHJlY2F0ZWQ7IHVzZSBgZ2V0VW5zY2FsZWRWYWx1ZSgpYCBpbnN0ZWFkCi0gYEJpZ0RlY2ltYWw6OnNjYWxlKClgIGlzIGRlcHJlY2F0ZWQ7IHVzZSBgZ2V0U2NhbGUoKWAgaW5zdGVhZAotIGBCaWdEZWNpbWFsOjppbnRlZ3JhbCgpYCBpcyBkZXByZWNhdGVkOyB1c2UgYGdldEludGVncmFsKClgIGluc3RlYWQKLSBgQmlnRGVjaW1hbDo6ZnJhY3Rpb24oKWAgaXMgZGVwcmVjYXRlZDsgdXNlIGBnZXRGcmFjdGlvbigpYCBpbnN0ZWFkCi0gYEJpZ1JhdGlvbmFsOjpudW1lcmF0b3IoKWAgaXMgZGVwcmVjYXRlZDsgdXNlIGBnZXROdW1lcmF0b3IoKWAgaW5zdGVhZAotIGBCaWdSYXRpb25hbDo6ZGVub21pbmF0b3IoKWAgaXMgZGVwcmVjYXRlZDsgdXNlIGBnZXREZW5vbWluYXRvcigpYCBpbnN0ZWFkCgpUaGUgb2xkIG1ldGhvZHMgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gMC43LjAuCgojIyBbMC42LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjYuMCkgLSAyMDE3LTA4LTI1CgotIE1pbmltdW0gUEhQIHZlcnNpb24gaXMgbm93IFs3LjFdKGh0dHBzOi8vZ29waHA3MS5vcmcvKTsgZm9yIFBIUCA1LjYgYW5kIFBIUCA3LjAgc3VwcG9ydCwgdXNlIHZlcnNpb24gYDAuNWAKLSBEZXByZWNhdGVkIG1ldGhvZCBgQmlnRGVjaW1hbDo6d2l0aFNjYWxlKClgIGhhcyBiZWVuIHJlbW92ZWQ7IHVzZSBgdG9TY2FsZSgpYCBpbnN0ZWFkCi0gTWV0aG9kIGBCaWdOdW1iZXI6OnRvSW50ZWdlcigpYCBoYXMgYmVlbiByZW5hbWVkIHRvIGB0b0ludCgpYAoKIyMgWzAuNS40XShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC41LjQpIC0gMjAxNi0xMC0xNwoKYEJpZ051bWJlcmAgY2xhc3NlcyBub3cgaW1wbGVtZW50IFtKc29uU2VyaWFsaXphYmxlXShodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vY2xhc3MuanNvbnNlcmlhbGl6YWJsZS5waHApLgpUaGUgSlNPTiBvdXRwdXQgaXMgYWx3YXlzIGEgc3RyaW5nLgoKIyMgWzAuNS4zXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC41LjMpIC0gMjAxNi0wMy0zMQoKVGhpcyBpcyBhIGJ1Z2ZpeCByZWxlYXNlLiBEaXZpZGluZyBieSBhIG5lZ2F0aXZlIHBvd2VyIG9mIDEgd2l0aCB0aGUgc2FtZSBzY2FsZSBhcyB0aGUgZGl2aWRlbmQgY291bGQgdHJpZ2dlciBhbiBpbmNvcnJlY3Qgb3B0aW1pemF0aW9uIHdoaWNoIHJlc3VsdGVkIGluIGEgd3JvbmcgcmVzdWx0LiBTZWUgIzYuCgojIyBbMC41LjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjUuMikgLSAyMDE1LTA4LTA2CgpUaGUgYCRzY2FsZWAgcGFyYW1ldGVyIG9mIGBCaWdEZWNpbWFsOjpkaXZpZGVkQnkoKWAgaXMgbm93IG9wdGlvbmFsIGFnYWluLgoKIyMgWzAuNS4xXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC41LjEpIC0gMjAxNS0wNy0wNQoKKipOZXcgbWV0aG9kOiBgQmlnTnVtYmVyOjp0b1NjYWxlKClgKioKClRoaXMgYWxsb3dzIHRvIGNvbnZlcnQgYW55IGBCaWdOdW1iZXJgIHRvIGEgYEJpZ0RlY2ltYWxgIHdpdGggYSBnaXZlbiBzY2FsZSwgdXNpbmcgcm91bmRpbmcgaWYgbmVjZXNzYXJ5LgoKIyMgWzAuNS4wXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC41LjApIC0gMjAxNS0wNy0wNAoKKipOZXcgZmVhdHVyZXMqKgotIENvbW1vbiBgQmlnTnVtYmVyYCBpbnRlcmZhY2UgZm9yIGFsbCBjbGFzc2VzLCB3aXRoIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKICAtIGBzaWduKClgIGFuZCBkZXJpdmVkIG1ldGhvZHMgKGBpc1plcm8oKWAsIGBpc1Bvc2l0aXZlKClgLCAuLi4pCiAgLSBgY29tcGFyZVRvKClgIGFuZCBkZXJpdmVkIG1ldGhvZHMgKGBpc0VxdWFsVG8oKWAsIGBpc0dyZWF0ZXJUaGFuKClgLCAuLi4pIHRoYXQgd29yayBhY3Jvc3MgZGlmZmVyZW50IGBCaWdOdW1iZXJgIHR5cGVzCiAgLSBgdG9CaWdJbnRlZ2VyKClgLCBgdG9CaWdEZWNpbWFsKClgLCBgdG9CaWdSYXRpb25hbGAoKSBjb252ZXJzaW9uIG1ldGhvZHMKICAtIGB0b0ludGVnZXIoKWAgYW5kIGB0b0Zsb2F0KClgIGNvbnZlcnNpb24gbWV0aG9kcyB0byBuYXRpdmUgdHlwZXMKLSBVbmlmaWVkIGBvZigpYCBiZWhhdmlvdXI6IGV2ZXJ5IGNsYXNzIG5vdyBhY2NlcHRzIGFueSB0eXBlIG9mIG51bWJlciwgcHJvdmlkZWQgdGhhdCBpdCBjYW4gYmUgc2FmZWx5IGNvbnZlcnRlZCB0byB0aGUgY3VycmVudCB0eXBlCi0gTmV3IG1ldGhvZDogYEJpZ0RlY2ltYWw6OmV4YWN0bHlEaXZpZGVkQnkoKWA7IHRoaXMgbWV0aG9kIGF1dG9tYXRpY2FsbHkgY29tcHV0ZXMgdGhlIHNjYWxlIG9mIHRoZSByZXN1bHQsIHByb3ZpZGVkIHRoYXQgdGhlIGRpdmlzaW9uIHlpZWxkcyBhIGZpbml0ZSBudW1iZXIgb2YgZGlnaXRzCi0gTmV3IG1ldGhvZHM6IGBCaWdSYXRpb25hbDo6cXVvdGllbnQoKWAgYW5kIGByZW1haW5kZXIoKWAKLSBGaW5lLWdyYWluZWQgZXhjZXB0aW9uczogYERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uYCwgYFJvdW5kaW5nTmVjZXNzYXJ5RXhjZXB0aW9uYCwgYE51bWJlckZvcm1hdEV4Y2VwdGlvbmAKLSBGYWN0b3J5IG1ldGhvZHMgYHplcm8oKWAsIGBvbmUoKWAgYW5kIGB0ZW4oKWAgYXZhaWxhYmxlIGluIGFsbCBjbGFzc2VzCi0gUm91bmRpbmcgbW9kZSByZWludHJvZHVjZWQgaW4gYEJpZ0ludGVnZXI6OmRpdmlkZWRCeSgpYAoKVGhpcyByZWxlYXNlIGFsc28gY29tZXMgd2l0aCBtYW55IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cy4KCi0tLQoKKipCcmVha2luZyBjaGFuZ2VzKioKLSBgQmlnSW50ZWdlcmA6CiAgLSBgZ2V0U2lnbigpYCBpcyByZW5hbWVkIHRvIGBzaWduKClgCiAgLSBgdG9TdHJpbmcoKWAgaXMgcmVuYW1lZCB0byBgdG9CYXNlKClgCiAgLSBgQmlnSW50ZWdlcjo6ZGl2aWRlZEJ5KClgIG5vdyB0aHJvd3MgYW4gZXhjZXB0aW9uIGJ5IGRlZmF1bHQgaWYgdGhlIHJlbWFpbmRlciBpcyBub3QgemVybzsgdXNlIGBxdW90aWVudCgpYCB0byBnZXQgdGhlIHByZXZpb3VzIGJlaGF2aW91cgotIGBCaWdEZWNpbWFsYDoKICAtIGBnZXRTaWduKClgIGlzIHJlbmFtZWQgdG8gYHNpZ24oKWAKICAtIGBnZXRVbnNjYWxlZFZhbHVlKClgIGlzIHJlbmFtZWQgdG8gYHVuc2NhbGVkVmFsdWUoKWAKICAtIGBnZXRTY2FsZSgpYCBpcyByZW5hbWVkIHRvIGBzY2FsZSgpYAogIC0gYGdldEludGVncmFsKClgIGlzIHJlbmFtZWQgdG8gYGludGVncmFsKClgCiAgLSBgZ2V0RnJhY3Rpb24oKWAgaXMgcmVuYW1lZCB0byBgZnJhY3Rpb24oKWAKICAtIGBkaXZpZGVBbmRSZW1haW5kZXIoKWAgaXMgcmVuYW1lZCB0byBgcXVvdGllbnRBbmRSZW1haW5kZXIoKWAKICAtIGBkaXZpZGVkQnkoKWAgbm93IHRha2VzIGEgKiptYW5kYXRvcnkqKiBgJHNjYWxlYCBwYXJhbWV0ZXIgKipiZWZvcmUqKiB0aGUgcm91bmRpbmcgbW9kZQogIC0gYHRvQmlnSW50ZWdlcigpYCBkb2VzIG5vdCBhY2NlcHQgYSBgJHJvdW5kaW5nTW9kZWAgcGFyYW1ldGVyIGFueSBtb3JlCiAgLSBgdG9CaWdSYXRpb25hbCgpYCBkb2VzIG5vdCBzaW1wbGlmeSB0aGUgZnJhY3Rpb24gYW55IG1vcmU7IGV4cGxpY2l0bHkgYWRkIGAtPnNpbXBsaWZpZWQoKWAgdG8gZ2V0IHRoZSBwcmV2aW91cyBiZWhhdmlvdXIKLSBgQmlnUmF0aW9uYWxgOgogIC0gYGdldFNpZ24oKWAgaXMgcmVuYW1lZCB0byBgc2lnbigpYAogIC0gYGdldE51bWVyYXRvcigpYCBpcyByZW5hbWVkIHRvICBgbnVtZXJhdG9yKClgCiAgLSBgZ2V0RGVub21pbmF0b3IoKWAgaXMgcmVuYW1lZCB0byAgYGRlbm9taW5hdG9yKClgCiAgLSBgb2YoKWAgaXMgcmVuYW1lZCB0byBgbmQoKWAsIHdoaWxlIGBwYXJzZSgpYCBpcyByZW5hbWVkIHRvIGBvZigpYAotIE1pc2NlbGxhbmVvdXM6CiAgLSBgQXJpdGhtZXRpY0V4Y2VwdGlvbmAgaXMgbW92ZWQgdG8gYW4gYEV4Y2VwdGlvblxgIHN1Yi1uYW1lc3BhY2UKICAtIGBvZigpYCBmYWN0b3J5IG1ldGhvZHMgbm93IHRocm93IGBOdW1iZXJGb3JtYXRFeGNlcHRpb25gIGluc3RlYWQgb2YgYEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbmAKCiMjIFswLjQuM10oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuNC4zKSAtIDIwMTYtMDMtMzEKCkJhY2twb3J0IG9mIHR3byBidWcgZml4ZXMgZnJvbSB0aGUgMC41IGJyYW5jaDoKLSBgQmlnSW50ZWdlcjo6cGFyc2UoKWAgZGlkIG5vdCBhbHdheXMgdGhyb3cgYEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbmAgYXMgZXhwZWN0ZWQKLSBEaXZpZGluZyBieSBhIG5lZ2F0aXZlIHBvd2VyIG9mIDEgd2l0aCB0aGUgc2FtZSBzY2FsZSBhcyB0aGUgZGl2aWRlbmQgY291bGQgdHJpZ2dlciBhbiBpbmNvcnJlY3Qgb3B0aW1pemF0aW9uIHdoaWNoIHJlc3VsdGVkIGluIGEgd3JvbmcgcmVzdWx0LiBTZWUgIzYuCgojIyBbMC40LjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjQuMikgLSAyMDE1LTA2LTE2CgpOZXcgbWV0aG9kOiBgQmlnRGVjaW1hbDo6c3RyaXBUcmFpbGluZ1plcm9zKClgCgojIyBbMC40LjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjQuMSkgLSAyMDE1LTA2LTEyCgpJbnRyb2R1Y2luZyBhIGBCaWdSYXRpb25hbGAgY2xhc3MsIHRvIHBlcmZvcm0gY2FsY3VsYXRpb25zIG9uIGZyYWN0aW9ucyBvZiBhbnkgc2l6ZS4KCiMjIFswLjQuMF0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuNC4wKSAtIDIwMTUtMDYtMTIKClJvdW5kaW5nIG1vZGVzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gYEJpZ0ludGVnZXJgLCBhbmQgYXJlIG5vdyBhIGNvbmNlcHQgc3BlY2lmaWMgdG8gYEJpZ0RlY2ltYWxgLgoKYEJpZ0ludGVnZXI6OmRpdmlkZWRCeSgpYCBub3cgYWx3YXlzIHJldHVybnMgdGhlIHF1b3RpZW50IG9mIHRoZSBkaXZpc2lvbi4KCiMjIFswLjMuNV0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuMy41KSAtIDIwMTYtMDMtMzEKCkJhY2twb3J0IG9mIHR3byBidWcgZml4ZXMgZnJvbSB0aGUgMC41IGJyYW5jaDoKCi0gYEJpZ0ludGVnZXI6OnBhcnNlKClgIGRpZCBub3QgYWx3YXlzIHRocm93IGBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb25gIGFzIGV4cGVjdGVkCi0gRGl2aWRpbmcgYnkgYSBuZWdhdGl2ZSBwb3dlciBvZiAxIHdpdGggdGhlIHNhbWUgc2NhbGUgYXMgdGhlIGRpdmlkZW5kIGNvdWxkIHRyaWdnZXIgYW4gaW5jb3JyZWN0IG9wdGltaXphdGlvbiB3aGljaCByZXN1bHRlZCBpbiBhIHdyb25nIHJlc3VsdC4gU2VlICM2LgoKIyMgWzAuMy40XShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC4zLjQpIC0gMjAxNS0wNi0xMQoKTmV3IG1ldGhvZHM6Ci0gYEJpZ0ludGVnZXI6OnJlbWFpbmRlcigpYCByZXR1cm5zIHRoZSByZW1haW5kZXIgb2YgYSBkaXZpc2lvbiBvbmx5Ci0gYEJpZ0ludGVnZXI6OmdjZCgpYCByZXR1cm5zIHRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBvZiB0d28gbnVtYmVycwoKIyMgWzAuMy4zXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC4zLjMpIC0gMjAxNS0wNi0wNwoKRml4IGB0b1N0cmluZygpYCBub3QgaGFuZGxpbmcgbmVnYXRpdmUgbnVtYmVycy4KCiMjIFswLjMuMl0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuMy4yKSAtIDIwMTUtMDYtMDcKCmBCaWdJbnRlZ2VyYCBhbmQgYEJpZ0RlY2ltYWxgIG5vdyBoYXZlIGEgYGdldFNpZ24oKWAgbWV0aG9kIHRoYXQgcmV0dXJuczoKLSBgLTFgIGlmIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUKLSBgMGAgaWYgdGhlIG51bWJlciBpcyB6ZXJvCi0gYDFgIGlmIHRoZSBudW1iZXIgaXMgcG9zaXRpdmUKCiMjIFswLjMuMV0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuMy4xKSAtIDIwMTUtMDYtMDUKCk1pbm9yIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cwoKIyMgWzAuMy4wXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC4zLjApIC0gMjAxNS0wNi0wNAoKVGhlIGAkcm91bmRpbmdNb2RlYCBhbmQgYCRzY2FsZWAgcGFyYW1ldGVycyBoYXZlIGJlZW4gc3dhcHBlZCBpbiBgQmlnRGVjaW1hbDo6ZGl2aWRlZEJ5KClgLgoKIyMgWzAuMi4yXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC4yLjIpIC0gMjAxNS0wNi0wNAoKU3Ryb25nZXIgaW1tdXRhYmlsaXR5IGd1YXJhbnRlZSBmb3IgYEJpZ0ludGVnZXJgIGFuZCBgQmlnRGVjaW1hbGAuCgpTbyBmYXIsIGl0IHdvdWxkIGhhdmUgYmVlbiBwb3NzaWJsZSB0byBicmVhayBpbW11dGFiaWxpdHkgb2YgdGhlc2UgY2xhc3NlcyBieSBjYWxsaW5nIHRoZSBgdW5zZXJpYWxpemUoKWAgaW50ZXJuYWwgZnVuY3Rpb24uIFRoaXMgcmVsZWFzZSBmaXhlcyB0aGF0LgoKIyMgWzAuMi4xXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC4yLjEpIC0gMjAxNS0wNi0wMgoKQWRkZWQgYEJpZ0RlY2ltYWw6OmRpdmlkZUFuZFJlbWFpbmRlcigpYAoKIyMgWzAuMi4wXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC4yLjApIC0gMjAxNS0wNS0yMgoKLSBgbWluKClgIGFuZCBgbWF4KClgIGRvIG5vdCBhY2NlcHQgYW4gYGFycmF5YCBhbnkgbW9yZSwgYnV0IGEgdmFyaWFibGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMKLSAqKm1pbmltdW0gUEhQIHZlcnNpb24gaXMgbm93IDUuNioqCi0gY29udGludW91cyBpbnRlZ3JhdGlvbiB3aXRoIFBIUCA3CgojIyBbMC4xLjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjEuMSkgLSAyMDE0LTA5LTAxCgotIEFkZGVkIGBCaWdJbnRlZ2VyOjpwb3dlcigpYAotIEFkZGVkIEhIVk0gc3VwcG9ydAoKIyMgWzAuMS4wXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC4xLjApIC0gMjAxNC0wOC0zMQoKRmlyc3QgYmV0YSByZWxlYXNlLgoK]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiYnJpY2svbWF0aCIsCiAgICAiZGVzY3JpcHRpb24iOiAiQXJiaXRyYXJ5LXByZWNpc2lvbiBhcml0aG1ldGljIGxpYnJhcnkiLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAia2V5d29yZHMiOiBbCiAgICAgICAgIkJyaWNrIiwKICAgICAgICAiTWF0aCIsCiAgICAgICAgIkFyYml0cmFyeS1wcmVjaXNpb24iLAogICAgICAgICJBcml0aG1ldGljIiwKICAgICAgICAiQmlnSW50ZWdlciIsCiAgICAgICAgIkJpZ0RlY2ltYWwiLAogICAgICAgICJCaWdSYXRpb25hbCIsCiAgICAgICAgIkJpZ251bSIKICAgIF0sCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInBocCI6ICJeNy4xIHx8IF44LjAiLAogICAgICAgICJleHQtanNvbiI6ICIqIgogICAgfSwKICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl43LjUuMTUgfHwgXjguNSB8fCBeOS4wIiwKICAgICAgICAicGhwLWNvdmVyYWxscy9waHAtY292ZXJhbGxzIjogIl4yLjIiLAogICAgICAgICJ2aW1lby9wc2FsbSI6ICI0LjkuMiIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiQnJpY2tcXE1hdGhcXCI6ICJzcmMvIgogICAgICAgIH0KICAgIH0sCiAgICAiYXV0b2xvYWQtZGV2IjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkJyaWNrXFxNYXRoXFxUZXN0c1xcIjogInRlc3RzLyIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCBCZW5qYW1pbiBNb3JlbAoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZgp0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbgp0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvCnVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mCnRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywKc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUgpDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIKSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4KQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/SECURITY.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBTZWN1cml0eSBQb2xpY3kKCiMjIFN1cHBvcnRlZCBWZXJzaW9ucwoKT25seSB0aGUgbGFzdCB0d28gcmVsZWFzZSBzdHJlYW1zIGFyZSBzdXBwb3J0ZWQuCgp8IFZlcnNpb24gfCBTdXBwb3J0ZWQgICAgICAgICAgfAp8IC0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfAp8IDAuOS54ICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IDAuOC54ICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IDwgMC44ICAgfCA6eDogICAgICAgICAgICAgICAgfAoKIyMgUmVwb3J0aW5nIGEgVnVsbmVyYWJpbGl0eQoKVG8gcmVwb3J0IGEgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSwgcGxlYXNlIHVzZSB0aGUKW1RpZGVsaWZ0IHNlY3VyaXR5IGNvbnRhY3RdKGh0dHBzOi8vdGlkZWxpZnQuY29tL3NlY3VyaXR5KS4KVGlkZWxpZnQgd2lsbCBjb29yZGluYXRlIHRoZSBmaXggYW5kIGRpc2Nsb3N1cmUuCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/BigDecimal.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGg7Cgp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cRGl2aXNpb25CeVplcm9FeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXEV4Y2VwdGlvblxNYXRoRXhjZXB0aW9uOwp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cTmVnYXRpdmVOdW1iZXJFeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXEludGVybmFsXENhbGN1bGF0b3I7CgovKioKICogSW1tdXRhYmxlLCBhcmJpdHJhcnktcHJlY2lzaW9uIHNpZ25lZCBkZWNpbWFsIG51bWJlcnMuCiAqCiAqIEBwc2FsbS1pbW11dGFibGUKICovCmZpbmFsIGNsYXNzIEJpZ0RlY2ltYWwgZXh0ZW5kcyBCaWdOdW1iZXIKewogICAgLyoqCiAgICAgKiBUaGUgdW5zY2FsZWQgdmFsdWUgb2YgdGhpcyBkZWNpbWFsIG51bWJlci4KICAgICAqCiAgICAgKiBUaGlzIGlzIGEgc3RyaW5nIG9mIGRpZ2l0cyB3aXRoIGFuIG9wdGlvbmFsIGxlYWRpbmcgbWludXMgc2lnbi4KICAgICAqIE5vIGxlYWRpbmcgemVybyBtdXN0IGJlIHByZXNlbnQuCiAgICAgKiBObyBsZWFkaW5nIG1pbnVzIHNpZ24gbXVzdCBiZSBwcmVzZW50IGlmIHRoZSB2YWx1ZSBpcyAwLgogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJHZhbHVlOwoKICAgIC8qKgogICAgICogVGhlIHNjYWxlIChudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50KSBvZiB0aGlzIGRlY2ltYWwgbnVtYmVyLgogICAgICoKICAgICAqIFRoaXMgbXVzdCBiZSB6ZXJvIG9yIG1vcmUuCiAgICAgKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJpdmF0ZSAkc2NhbGU7CgogICAgLyoqCiAgICAgKiBQcm90ZWN0ZWQgY29uc3RydWN0b3IuIFVzZSBhIGZhY3RvcnkgbWV0aG9kIHRvIG9idGFpbiBhbiBpbnN0YW5jZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZSBUaGUgdW5zY2FsZWQgdmFsdWUsIHZhbGlkYXRlZC4KICAgICAqIEBwYXJhbSBpbnQgICAgJHNjYWxlIFRoZSBzY2FsZSwgdmFsaWRhdGVkLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICR2YWx1ZSwgaW50ICRzY2FsZSA9IDApCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgICAgICR0aGlzLT5zY2FsZSA9ICRzY2FsZTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBCaWdEZWNpbWFsIG9mIHRoZSBnaXZlbiB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBCaWdEZWNpbWFsCiAgICAgKgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uIElmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgQmlnRGVjaW1hbC4KICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9mKCR2YWx1ZSkgOiBCaWdOdW1iZXIKICAgIHsKICAgICAgICByZXR1cm4gcGFyZW50OjpvZigkdmFsdWUpLT50b0JpZ0RlY2ltYWwoKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBCaWdEZWNpbWFsIGZyb20gYW4gdW5zY2FsZWQgdmFsdWUgYW5kIGEgc2NhbGUuCiAgICAgKgogICAgICogRXhhbXBsZTogYCgxMjM0NSwgMylgIHdpbGwgcmVzdWx0IGluIHRoZSBCaWdEZWNpbWFsIGAxMi4zNDVgLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdmFsdWUgVGhlIHVuc2NhbGVkIHZhbHVlLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICAkc2NhbGUgVGhlIHNjYWxlIG9mIHRoZSBudW1iZXIsIHBvc2l0aXZlIG9yIHplcm8uCiAgICAgKgogICAgICogQHJldHVybiBCaWdEZWNpbWFsCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBzY2FsZSBpcyBuZWdhdGl2ZS4KICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9mVW5zY2FsZWRWYWx1ZSgkdmFsdWUsIGludCAkc2NhbGUgPSAwKSA6IEJpZ0RlY2ltYWwKICAgIHsKICAgICAgICBpZiAoJHNjYWxlIDwgMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVGhlIHNjYWxlIGNhbm5vdCBiZSBuZWdhdGl2ZS4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgQmlnRGVjaW1hbCgoc3RyaW5nKSBCaWdJbnRlZ2VyOjpvZigkdmFsdWUpLCAkc2NhbGUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEJpZ0RlY2ltYWwgcmVwcmVzZW50aW5nIHplcm8sIHdpdGggYSBzY2FsZSBvZiB6ZXJvLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnRGVjaW1hbAogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gemVybygpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgIC8qKgogICAgICAgICAqIEBwc2FsbS1zdXBwcmVzcyBJbXB1cmVTdGF0aWNWYXJpYWJsZQogICAgICAgICAqIEB2YXIgQmlnRGVjaW1hbHxudWxsICR6ZXJvCiAgICAgICAgICovCiAgICAgICAgc3RhdGljICR6ZXJvOwoKICAgICAgICBpZiAoJHplcm8gPT09IG51bGwpIHsKICAgICAgICAgICAgJHplcm8gPSBuZXcgQmlnRGVjaW1hbCgnMCcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR6ZXJvOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEJpZ0RlY2ltYWwgcmVwcmVzZW50aW5nIG9uZSwgd2l0aCBhIHNjYWxlIG9mIHplcm8uCiAgICAgKgogICAgICogQHJldHVybiBCaWdEZWNpbWFsCiAgICAgKgogICAgICogQHBzYWxtLXB1cmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvbmUoKSA6IEJpZ0RlY2ltYWwKICAgIHsKICAgICAgICAvKioKICAgICAgICAgKiBAcHNhbG0tc3VwcHJlc3MgSW1wdXJlU3RhdGljVmFyaWFibGUKICAgICAgICAgKiBAdmFyIEJpZ0RlY2ltYWx8bnVsbCAkb25lCiAgICAgICAgICovCiAgICAgICAgc3RhdGljICRvbmU7CgogICAgICAgIGlmICgkb25lID09PSBudWxsKSB7CiAgICAgICAgICAgICRvbmUgPSBuZXcgQmlnRGVjaW1hbCgnMScpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRvbmU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgQmlnRGVjaW1hbCByZXByZXNlbnRpbmcgdGVuLCB3aXRoIGEgc2NhbGUgb2YgemVyby4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwKICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRlbigpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgIC8qKgogICAgICAgICAqIEBwc2FsbS1zdXBwcmVzcyBJbXB1cmVTdGF0aWNWYXJpYWJsZQogICAgICAgICAqIEB2YXIgQmlnRGVjaW1hbHxudWxsICR0ZW4KICAgICAgICAgKi8KICAgICAgICBzdGF0aWMgJHRlbjsKCiAgICAgICAgaWYgKCR0ZW4gPT09IG51bGwpIHsKICAgICAgICAgICAgJHRlbiA9IG5ldyBCaWdEZWNpbWFsKCcxMCcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0ZW47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzdW0gb2YgdGhpcyBudW1iZXIgYW5kIHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogVGhlIHJlc3VsdCBoYXMgYSBzY2FsZSBvZiBgbWF4KCR0aGlzLT5zY2FsZSwgJHRoYXQtPnNjYWxlKWAuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0IFRoZSBudW1iZXIgdG8gYWRkLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnRGVjaW1hbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwgVGhlIHJlc3VsdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIE1hdGhFeGNlcHRpb24gSWYgdGhlIG51bWJlciBpcyBub3QgdmFsaWQsIG9yIGlzIG5vdCBjb252ZXJ0aWJsZSB0byBhIEJpZ0RlY2ltYWwuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwbHVzKCR0aGF0KSA6IEJpZ0RlY2ltYWwKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0RlY2ltYWw6Om9mKCR0aGF0KTsKCiAgICAgICAgaWYgKCR0aGF0LT52YWx1ZSA9PT0gJzAnICYmICR0aGF0LT5zY2FsZSA8PSAkdGhpcy0+c2NhbGUpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT52YWx1ZSA9PT0gJzAnICYmICR0aGlzLT5zY2FsZSA8PSAkdGhhdC0+c2NhbGUpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGF0OwogICAgICAgIH0KCiAgICAgICAgWyRhLCAkYl0gPSAkdGhpcy0+c2NhbGVWYWx1ZXMoJHRoaXMsICR0aGF0KTsKCiAgICAgICAgJHZhbHVlID0gQ2FsY3VsYXRvcjo6Z2V0KCktPmFkZCgkYSwgJGIpOwogICAgICAgICRzY2FsZSA9ICR0aGlzLT5zY2FsZSA+ICR0aGF0LT5zY2FsZSA/ICR0aGlzLT5zY2FsZSA6ICR0aGF0LT5zY2FsZTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdEZWNpbWFsKCR2YWx1ZSwgJHNjYWxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGRpZmZlcmVuY2Ugb2YgdGhpcyBudW1iZXIgYW5kIHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogVGhlIHJlc3VsdCBoYXMgYSBzY2FsZSBvZiBgbWF4KCR0aGlzLT5zY2FsZSwgJHRoYXQtPnNjYWxlKWAuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0IFRoZSBudW1iZXIgdG8gc3VidHJhY3QuIE11c3QgYmUgY29udmVydGlibGUgdG8gYSBCaWdEZWNpbWFsLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnRGVjaW1hbCBUaGUgcmVzdWx0LgogICAgICoKICAgICAqIEB0aHJvd3MgTWF0aEV4Y2VwdGlvbiBJZiB0aGUgbnVtYmVyIGlzIG5vdCB2YWxpZCwgb3IgaXMgbm90IGNvbnZlcnRpYmxlIHRvIGEgQmlnRGVjaW1hbC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1pbnVzKCR0aGF0KSA6IEJpZ0RlY2ltYWwKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0RlY2ltYWw6Om9mKCR0aGF0KTsKCiAgICAgICAgaWYgKCR0aGF0LT52YWx1ZSA9PT0gJzAnICYmICR0aGF0LT5zY2FsZSA8PSAkdGhpcy0+c2NhbGUpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgWyRhLCAkYl0gPSAkdGhpcy0+c2NhbGVWYWx1ZXMoJHRoaXMsICR0aGF0KTsKCiAgICAgICAgJHZhbHVlID0gQ2FsY3VsYXRvcjo6Z2V0KCktPnN1YigkYSwgJGIpOwogICAgICAgICRzY2FsZSA9ICR0aGlzLT5zY2FsZSA+ICR0aGF0LT5zY2FsZSA/ICR0aGlzLT5zY2FsZSA6ICR0aGF0LT5zY2FsZTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdEZWNpbWFsKCR2YWx1ZSwgJHNjYWxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHByb2R1Y3Qgb2YgdGhpcyBudW1iZXIgYW5kIHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogVGhlIHJlc3VsdCBoYXMgYSBzY2FsZSBvZiBgJHRoaXMtPnNjYWxlICsgJHRoYXQtPnNjYWxlYC4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJHRoYXQgVGhlIG11bHRpcGxpZXIuIE11c3QgYmUgY29udmVydGlibGUgdG8gYSBCaWdEZWNpbWFsLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnRGVjaW1hbCBUaGUgcmVzdWx0LgogICAgICoKICAgICAqIEB0aHJvd3MgTWF0aEV4Y2VwdGlvbiBJZiB0aGUgbXVsdGlwbGllciBpcyBub3QgYSB2YWxpZCBudW1iZXIsIG9yIGlzIG5vdCBjb252ZXJ0aWJsZSB0byBhIEJpZ0RlY2ltYWwuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtdWx0aXBsaWVkQnkoJHRoYXQpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgICR0aGF0ID0gQmlnRGVjaW1hbDo6b2YoJHRoYXQpOwoKICAgICAgICBpZiAoJHRoYXQtPnZhbHVlID09PSAnMScgJiYgJHRoYXQtPnNjYWxlID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+dmFsdWUgPT09ICcxJyAmJiAkdGhpcy0+c2NhbGUgPT09IDApIHsKICAgICAgICAgICAgcmV0dXJuICR0aGF0OwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gQ2FsY3VsYXRvcjo6Z2V0KCktPm11bCgkdGhpcy0+dmFsdWUsICR0aGF0LT52YWx1ZSk7CiAgICAgICAgJHNjYWxlID0gJHRoaXMtPnNjYWxlICsgJHRoYXQtPnNjYWxlOwoKICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoJHZhbHVlLCAkc2NhbGUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBkaXZpc2lvbiBvZiB0aGlzIG51bWJlciBieSB0aGUgZ2l2ZW4gb25lLCBhdCB0aGUgZ2l2ZW4gc2NhbGUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0ICAgICAgICAgVGhlIGRpdmlzb3IuCiAgICAgKiBAcGFyYW0gaW50fG51bGwgICAgICAgICAgICAgICAgICAgJHNjYWxlICAgICAgICBUaGUgZGVzaXJlZCBzY2FsZSwgb3IgbnVsbCB0byB1c2UgdGhlIHNjYWxlIG9mIHRoaXMgbnVtYmVyLgogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICAgICAgICRyb3VuZGluZ01vZGUgQW4gb3B0aW9uYWwgcm91bmRpbmcgbW9kZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgdGhlIHNjYWxlIG9yIHJvdW5kaW5nIG1vZGUgaXMgaW52YWxpZC4KICAgICAqIEB0aHJvd3MgTWF0aEV4Y2VwdGlvbiAgICAgICAgICAgICBJZiB0aGUgbnVtYmVyIGlzIGludmFsaWQsIGlzIHplcm8sIG9yIHJvdW5kaW5nIHdhcyBuZWNlc3NhcnkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXZpZGVkQnkoJHRoYXQsID9pbnQgJHNjYWxlID0gbnVsbCwgaW50ICRyb3VuZGluZ01vZGUgPSBSb3VuZGluZ01vZGU6OlVOTkVDRVNTQVJZKSA6IEJpZ0RlY2ltYWwKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0RlY2ltYWw6Om9mKCR0aGF0KTsKCiAgICAgICAgaWYgKCR0aGF0LT5pc1plcm8oKSkgewogICAgICAgICAgICB0aHJvdyBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbjo6ZGl2aXNpb25CeVplcm8oKTsKICAgICAgICB9CgogICAgICAgIGlmICgkc2NhbGUgPT09IG51bGwpIHsKICAgICAgICAgICAgJHNjYWxlID0gJHRoaXMtPnNjYWxlOwogICAgICAgIH0gZWxzZWlmICgkc2NhbGUgPCAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdTY2FsZSBjYW5ub3QgYmUgbmVnYXRpdmUuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoYXQtPnZhbHVlID09PSAnMScgJiYgJHRoYXQtPnNjYWxlID09PSAwICYmICRzY2FsZSA9PT0gJHRoaXMtPnNjYWxlKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgICRwID0gJHRoaXMtPnZhbHVlV2l0aE1pblNjYWxlKCR0aGF0LT5zY2FsZSArICRzY2FsZSk7CiAgICAgICAgJHEgPSAkdGhhdC0+dmFsdWVXaXRoTWluU2NhbGUoJHRoaXMtPnNjYWxlIC0gJHNjYWxlKTsKCiAgICAgICAgJHJlc3VsdCA9IENhbGN1bGF0b3I6OmdldCgpLT5kaXZSb3VuZCgkcCwgJHEsICRyb3VuZGluZ01vZGUpOwoKICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoJHJlc3VsdCwgJHNjYWxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGV4YWN0IHJlc3VsdCBvZiB0aGUgZGl2aXNpb24gb2YgdGhpcyBudW1iZXIgYnkgdGhlIGdpdmVuIG9uZS4KICAgICAqCiAgICAgKiBUaGUgc2NhbGUgb2YgdGhlIHJlc3VsdCBpcyBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgdG8gZml0IGFsbCB0aGUgZnJhY3Rpb24gZGlnaXRzLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgZGl2aXNvci4gTXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhIEJpZ0RlY2ltYWwuCiAgICAgKgogICAgICogQHJldHVybiBCaWdEZWNpbWFsIFRoZSByZXN1bHQuCiAgICAgKgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uIElmIHRoZSBkaXZpc29yIGlzIG5vdCBhIHZhbGlkIG51bWJlciwgaXMgbm90IGNvbnZlcnRpYmxlIHRvIGEgQmlnRGVjaW1hbCwgaXMgemVybywKICAgICAqICAgICAgICAgICAgICAgICAgICAgICBvciB0aGUgcmVzdWx0IHlpZWxkcyBhbiBpbmZpbml0ZSBudW1iZXIgb2YgZGlnaXRzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhhY3RseURpdmlkZWRCeSgkdGhhdCkgOiBCaWdEZWNpbWFsCiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdEZWNpbWFsOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdC0+dmFsdWUgPT09ICcwJykgewogICAgICAgICAgICB0aHJvdyBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbjo6ZGl2aXNpb25CeVplcm8oKTsKICAgICAgICB9CgogICAgICAgIFssICRiXSA9ICR0aGlzLT5zY2FsZVZhbHVlcygkdGhpcywgJHRoYXQpOwoKICAgICAgICAkZCA9IFxydHJpbSgkYiwgJzAnKTsKICAgICAgICAkc2NhbGUgPSBcc3RybGVuKCRiKSAtIFxzdHJsZW4oJGQpOwoKICAgICAgICAkY2FsY3VsYXRvciA9IENhbGN1bGF0b3I6OmdldCgpOwoKICAgICAgICBmb3JlYWNoIChbNSwgMl0gYXMgJHByaW1lKSB7CiAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICRsYXN0RGlnaXQgPSAoaW50KSAkZFstMV07CgogICAgICAgICAgICAgICAgaWYgKCRsYXN0RGlnaXQgJSAkcHJpbWUgIT09IDApIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZCA9ICRjYWxjdWxhdG9yLT5kaXZRKCRkLCAoc3RyaW5nKSAkcHJpbWUpOwogICAgICAgICAgICAgICAgJHNjYWxlKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+ZGl2aWRlZEJ5KCR0aGF0LCAkc2NhbGUpLT5zdHJpcFRyYWlsaW5nWmVyb3MoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhpcyBudW1iZXIgZXhwb25lbnRpYXRlZCB0byB0aGUgZ2l2ZW4gdmFsdWUuCiAgICAgKgogICAgICogVGhlIHJlc3VsdCBoYXMgYSBzY2FsZSBvZiBgJHRoaXMtPnNjYWxlICogJGV4cG9uZW50YC4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRleHBvbmVudCBUaGUgZXhwb25lbnQuCiAgICAgKgogICAgICogQHJldHVybiBCaWdEZWNpbWFsIFRoZSByZXN1bHQuCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBleHBvbmVudCBpcyBub3QgaW4gdGhlIHJhbmdlIDAgdG8gMSwwMDAsMDAwLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcG93ZXIoaW50ICRleHBvbmVudCkgOiBCaWdEZWNpbWFsCiAgICB7CiAgICAgICAgaWYgKCRleHBvbmVudCA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gQmlnRGVjaW1hbDo6b25lKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGV4cG9uZW50ID09PSAxKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIGlmICgkZXhwb25lbnQgPCAwIHx8ICRleHBvbmVudCA+IENhbGN1bGF0b3I6Ok1BWF9QT1dFUikgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZigKICAgICAgICAgICAgICAgICdUaGUgZXhwb25lbnQgJWQgaXMgbm90IGluIHRoZSByYW5nZSAwIHRvICVkLicsCiAgICAgICAgICAgICAgICAkZXhwb25lbnQsCiAgICAgICAgICAgICAgICBDYWxjdWxhdG9yOjpNQVhfUE9XRVIKICAgICAgICAgICAgKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoQ2FsY3VsYXRvcjo6Z2V0KCktPnBvdygkdGhpcy0+dmFsdWUsICRleHBvbmVudCksICR0aGlzLT5zY2FsZSAqICRleHBvbmVudCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBxdW90aWVudCBvZiB0aGUgZGl2aXNpb24gb2YgdGhpcyBudW1iZXIgYnkgdGhpcyBnaXZlbiBvbmUuCiAgICAgKgogICAgICogVGhlIHF1b3RpZW50IGhhcyBhIHNjYWxlIG9mIGAwYC4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJHRoYXQgVGhlIGRpdmlzb3IuIE11c3QgYmUgY29udmVydGlibGUgdG8gYSBCaWdEZWNpbWFsLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnRGVjaW1hbCBUaGUgcXVvdGllbnQuCiAgICAgKgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uIElmIHRoZSBkaXZpc29yIGlzIG5vdCBhIHZhbGlkIGRlY2ltYWwgbnVtYmVyLCBvciBpcyB6ZXJvLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcXVvdGllbnQoJHRoYXQpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgICR0aGF0ID0gQmlnRGVjaW1hbDo6b2YoJHRoYXQpOwoKICAgICAgICBpZiAoJHRoYXQtPmlzWmVybygpKSB7CiAgICAgICAgICAgIHRocm93IERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uOjpkaXZpc2lvbkJ5WmVybygpOwogICAgICAgIH0KCiAgICAgICAgJHAgPSAkdGhpcy0+dmFsdWVXaXRoTWluU2NhbGUoJHRoYXQtPnNjYWxlKTsKICAgICAgICAkcSA9ICR0aGF0LT52YWx1ZVdpdGhNaW5TY2FsZSgkdGhpcy0+c2NhbGUpOwoKICAgICAgICAkcXVvdGllbnQgPSBDYWxjdWxhdG9yOjpnZXQoKS0+ZGl2USgkcCwgJHEpOwoKICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoJHF1b3RpZW50LCAwKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJlbWFpbmRlciBvZiB0aGUgZGl2aXNpb24gb2YgdGhpcyBudW1iZXIgYnkgdGhpcyBnaXZlbiBvbmUuCiAgICAgKgogICAgICogVGhlIHJlbWFpbmRlciBoYXMgYSBzY2FsZSBvZiBgbWF4KCR0aGlzLT5zY2FsZSwgJHRoYXQtPnNjYWxlKWAuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0IFRoZSBkaXZpc29yLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnRGVjaW1hbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwgVGhlIHJlbWFpbmRlci4KICAgICAqCiAgICAgKiBAdGhyb3dzIE1hdGhFeGNlcHRpb24gSWYgdGhlIGRpdmlzb3IgaXMgbm90IGEgdmFsaWQgZGVjaW1hbCBudW1iZXIsIG9yIGlzIHplcm8uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1haW5kZXIoJHRoYXQpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgICR0aGF0ID0gQmlnRGVjaW1hbDo6b2YoJHRoYXQpOwoKICAgICAgICBpZiAoJHRoYXQtPmlzWmVybygpKSB7CiAgICAgICAgICAgIHRocm93IERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uOjpkaXZpc2lvbkJ5WmVybygpOwogICAgICAgIH0KCiAgICAgICAgJHAgPSAkdGhpcy0+dmFsdWVXaXRoTWluU2NhbGUoJHRoYXQtPnNjYWxlKTsKICAgICAgICAkcSA9ICR0aGF0LT52YWx1ZVdpdGhNaW5TY2FsZSgkdGhpcy0+c2NhbGUpOwoKICAgICAgICAkcmVtYWluZGVyID0gQ2FsY3VsYXRvcjo6Z2V0KCktPmRpdlIoJHAsICRxKTsKCiAgICAgICAgJHNjYWxlID0gJHRoaXMtPnNjYWxlID4gJHRoYXQtPnNjYWxlID8gJHRoaXMtPnNjYWxlIDogJHRoYXQtPnNjYWxlOwoKICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoJHJlbWFpbmRlciwgJHNjYWxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHF1b3RpZW50IGFuZCByZW1haW5kZXIgb2YgdGhlIGRpdmlzaW9uIG9mIHRoaXMgbnVtYmVyIGJ5IHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogVGhlIHF1b3RpZW50IGhhcyBhIHNjYWxlIG9mIGAwYCwgYW5kIHRoZSByZW1haW5kZXIgaGFzIGEgc2NhbGUgb2YgYG1heCgkdGhpcy0+c2NhbGUsICR0aGF0LT5zY2FsZSlgLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgZGl2aXNvci4gTXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhIEJpZ0RlY2ltYWwuCiAgICAgKgogICAgICogQHJldHVybiBCaWdEZWNpbWFsW10gQW4gYXJyYXkgY29udGFpbmluZyB0aGUgcXVvdGllbnQgYW5kIHRoZSByZW1haW5kZXIuCiAgICAgKgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uIElmIHRoZSBkaXZpc29yIGlzIG5vdCBhIHZhbGlkIGRlY2ltYWwgbnVtYmVyLCBvciBpcyB6ZXJvLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcXVvdGllbnRBbmRSZW1haW5kZXIoJHRoYXQpIDogYXJyYXkKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0RlY2ltYWw6Om9mKCR0aGF0KTsKCiAgICAgICAgaWYgKCR0aGF0LT5pc1plcm8oKSkgewogICAgICAgICAgICB0aHJvdyBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbjo6ZGl2aXNpb25CeVplcm8oKTsKICAgICAgICB9CgogICAgICAgICRwID0gJHRoaXMtPnZhbHVlV2l0aE1pblNjYWxlKCR0aGF0LT5zY2FsZSk7CiAgICAgICAgJHEgPSAkdGhhdC0+dmFsdWVXaXRoTWluU2NhbGUoJHRoaXMtPnNjYWxlKTsKCiAgICAgICAgWyRxdW90aWVudCwgJHJlbWFpbmRlcl0gPSBDYWxjdWxhdG9yOjpnZXQoKS0+ZGl2UVIoJHAsICRxKTsKCiAgICAgICAgJHNjYWxlID0gJHRoaXMtPnNjYWxlID4gJHRoYXQtPnNjYWxlID8gJHRoaXMtPnNjYWxlIDogJHRoYXQtPnNjYWxlOwoKICAgICAgICAkcXVvdGllbnQgPSBuZXcgQmlnRGVjaW1hbCgkcXVvdGllbnQsIDApOwogICAgICAgICRyZW1haW5kZXIgPSBuZXcgQmlnRGVjaW1hbCgkcmVtYWluZGVyLCAkc2NhbGUpOwoKICAgICAgICByZXR1cm4gWyRxdW90aWVudCwgJHJlbWFpbmRlcl07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGlzIG51bWJlciwgcm91bmRlZCBkb3duIHRvIHRoZSBnaXZlbiBudW1iZXIgb2YgZGVjaW1hbHMuCiAgICAgKgogICAgICogQHBhcmFtIGludCAkc2NhbGUKICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgdGhlIHNjYWxlIGlzIG5lZ2F0aXZlLgogICAgICogQHRocm93cyBOZWdhdGl2ZU51bWJlckV4Y2VwdGlvbiBJZiB0aGlzIG51bWJlciBpcyBuZWdhdGl2ZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNxcnQoaW50ICRzY2FsZSkgOiBCaWdEZWNpbWFsCiAgICB7CiAgICAgICAgaWYgKCRzY2FsZSA8IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1NjYWxlIGNhbm5vdCBiZSBuZWdhdGl2ZS4nKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+dmFsdWUgPT09ICcwJykgewogICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoJzAnLCAkc2NhbGUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT52YWx1ZVswXSA9PT0gJy0nKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBOZWdhdGl2ZU51bWJlckV4Y2VwdGlvbignQ2Fubm90IGNhbGN1bGF0ZSB0aGUgc3F1YXJlIHJvb3Qgb2YgYSBuZWdhdGl2ZSBudW1iZXIuJyk7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+dmFsdWU7CiAgICAgICAgJGFkZERpZ2l0cyA9IDIgKiAkc2NhbGUgLSAkdGhpcy0+c2NhbGU7CgogICAgICAgIGlmICgkYWRkRGlnaXRzID4gMCkgewogICAgICAgICAgICAvLyBhZGQgemVyb3MKICAgICAgICAgICAgJHZhbHVlIC49IFxzdHJfcmVwZWF0KCcwJywgJGFkZERpZ2l0cyk7CiAgICAgICAgfSBlbHNlaWYgKCRhZGREaWdpdHMgPCAwKSB7CiAgICAgICAgICAgIC8vIHRyaW0gZGlnaXRzCiAgICAgICAgICAgIGlmICgtJGFkZERpZ2l0cyA+PSBcc3RybGVuKCR0aGlzLT52YWx1ZSkpIHsKICAgICAgICAgICAgICAgIC8vIHJlcXVlc3RpbmcgYSBzY2FsZSB0b28gbG93LCB3aWxsIGFsd2F5cyB5aWVsZCBhIHplcm8gcmVzdWx0CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoJzAnLCAkc2NhbGUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdmFsdWUgPSBcc3Vic3RyKCR2YWx1ZSwgMCwgJGFkZERpZ2l0cyk7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSBDYWxjdWxhdG9yOjpnZXQoKS0+c3FydCgkdmFsdWUpOwoKICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoJHZhbHVlLCAkc2NhbGUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGNvcHkgb2YgdGhpcyBCaWdEZWNpbWFsIHdpdGggdGhlIGRlY2ltYWwgcG9pbnQgbW92ZWQgJG4gcGxhY2VzIHRvIHRoZSBsZWZ0LgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJG4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhQb2ludE1vdmVkTGVmdChpbnQgJG4pIDogQmlnRGVjaW1hbAogICAgewogICAgICAgIGlmICgkbiA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG4gPCAwKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+d2l0aFBvaW50TW92ZWRSaWdodCgtJG4pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBCaWdEZWNpbWFsKCR0aGlzLT52YWx1ZSwgJHRoaXMtPnNjYWxlICsgJG4pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGNvcHkgb2YgdGhpcyBCaWdEZWNpbWFsIHdpdGggdGhlIGRlY2ltYWwgcG9pbnQgbW92ZWQgJG4gcGxhY2VzIHRvIHRoZSByaWdodC4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRuCiAgICAgKgogICAgICogQHJldHVybiBCaWdEZWNpbWFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUG9pbnRNb3ZlZFJpZ2h0KGludCAkbikgOiBCaWdEZWNpbWFsCiAgICB7CiAgICAgICAgaWYgKCRuID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIGlmICgkbiA8IDApIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT53aXRoUG9pbnRNb3ZlZExlZnQoLSRuKTsKICAgICAgICB9CgogICAgICAgICR2YWx1ZSA9ICR0aGlzLT52YWx1ZTsKICAgICAgICAkc2NhbGUgPSAkdGhpcy0+c2NhbGUgLSAkbjsKCiAgICAgICAgaWYgKCRzY2FsZSA8IDApIHsKICAgICAgICAgICAgaWYgKCR2YWx1ZSAhPT0gJzAnKSB7CiAgICAgICAgICAgICAgICAkdmFsdWUgLj0gXHN0cl9yZXBlYXQoJzAnLCAtJHNjYWxlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkc2NhbGUgPSAwOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBCaWdEZWNpbWFsKCR2YWx1ZSwgJHNjYWxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBjb3B5IG9mIHRoaXMgQmlnRGVjaW1hbCB3aXRoIGFueSB0cmFpbGluZyB6ZXJvcyByZW1vdmVkIGZyb20gdGhlIGZyYWN0aW9uYWwgcGFydC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHN0cmlwVHJhaWxpbmdaZXJvcygpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgIGlmICgkdGhpcy0+c2NhbGUgPT09IDApIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJHRyaW1tZWRWYWx1ZSA9IFxydHJpbSgkdGhpcy0+dmFsdWUsICcwJyk7CgogICAgICAgIGlmICgkdHJpbW1lZFZhbHVlID09PSAnJykgewogICAgICAgICAgICByZXR1cm4gQmlnRGVjaW1hbDo6emVybygpOwogICAgICAgIH0KCiAgICAgICAgJHRyaW1tYWJsZVplcm9zID0gXHN0cmxlbigkdGhpcy0+dmFsdWUpIC0gXHN0cmxlbigkdHJpbW1lZFZhbHVlKTsKCiAgICAgICAgaWYgKCR0cmltbWFibGVaZXJvcyA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRyaW1tYWJsZVplcm9zID4gJHRoaXMtPnNjYWxlKSB7CiAgICAgICAgICAgICR0cmltbWFibGVaZXJvcyA9ICR0aGlzLT5zY2FsZTsKICAgICAgICB9CgogICAgICAgICR2YWx1ZSA9IFxzdWJzdHIoJHRoaXMtPnZhbHVlLCAwLCAtJHRyaW1tYWJsZVplcm9zKTsKICAgICAgICAkc2NhbGUgPSAkdGhpcy0+c2NhbGUgLSAkdHJpbW1hYmxlWmVyb3M7CgogICAgICAgIHJldHVybiBuZXcgQmlnRGVjaW1hbCgkdmFsdWUsICRzY2FsZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGlzIG51bWJlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFicygpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aXNOZWdhdGl2ZSgpID8gJHRoaXMtPm5lZ2F0ZWQoKSA6ICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbmVnYXRlZCB2YWx1ZSBvZiB0aGlzIG51bWJlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG5lZ2F0ZWQoKSA6IEJpZ0RlY2ltYWwKICAgIHsKICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoQ2FsY3VsYXRvcjo6Z2V0KCktPm5lZygkdGhpcy0+dmFsdWUpLCAkdGhpcy0+c2NhbGUpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGFyZVRvKCR0aGF0KSA6IGludAogICAgewogICAgICAgICR0aGF0ID0gQmlnTnVtYmVyOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdCBpbnN0YW5jZW9mIEJpZ0ludGVnZXIpIHsKICAgICAgICAgICAgJHRoYXQgPSAkdGhhdC0+dG9CaWdEZWNpbWFsKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoYXQgaW5zdGFuY2VvZiBCaWdEZWNpbWFsKSB7CiAgICAgICAgICAgIFskYSwgJGJdID0gJHRoaXMtPnNjYWxlVmFsdWVzKCR0aGlzLCAkdGhhdCk7CgogICAgICAgICAgICByZXR1cm4gQ2FsY3VsYXRvcjo6Z2V0KCktPmNtcCgkYSwgJGIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIC0gJHRoYXQtPmNvbXBhcmVUbygkdGhpcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduKCkgOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gKCR0aGlzLT52YWx1ZSA9PT0gJzAnKSA/IDAgOiAoKCR0aGlzLT52YWx1ZVswXSA9PT0gJy0nKSA/IC0xIDogMSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFVuc2NhbGVkVmFsdWUoKSA6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gQmlnSW50ZWdlcjo6Y3JlYXRlKCR0aGlzLT52YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2NhbGUoKSA6IGludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2NhbGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgaW50ZWdyYWwgcGFydCBvZiB0aGlzIGRlY2ltYWwgbnVtYmVyLgogICAgICoKICAgICAqIEV4YW1wbGU6IGAtMTIzLjQ1NmAgPT4gYC0xMjNgLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnRlZ3JhbFBhcnQoKSA6IHN0cmluZwogICAgewogICAgICAgIGlmICgkdGhpcy0+c2NhbGUgPT09IDApIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgICAgICB9CgogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5nZXRVbnNjYWxlZFZhbHVlV2l0aExlYWRpbmdaZXJvcygpOwoKICAgICAgICByZXR1cm4gXHN1YnN0cigkdmFsdWUsIDAsIC0kdGhpcy0+c2NhbGUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCBvZiB0aGlzIGRlY2ltYWwgbnVtYmVyLgogICAgICoKICAgICAqIElmIHRoZSBzY2FsZSBpcyB6ZXJvLCBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQuCiAgICAgKgogICAgICogRXhhbXBsZXM6IGAtMTIzLjQ1NmAgPT4gJzQ1NicsIGAxMjNgID0+ICcnLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGcmFjdGlvbmFsUGFydCgpIDogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5zY2FsZSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Z2V0VW5zY2FsZWRWYWx1ZVdpdGhMZWFkaW5nWmVyb3MoKTsKCiAgICAgICAgcmV0dXJuIFxzdWJzdHIoJHZhbHVlLCAtJHRoaXMtPnNjYWxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGlzIGRlY2ltYWwgbnVtYmVyIGhhcyBhIG5vbi16ZXJvIGZyYWN0aW9uYWwgcGFydC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc05vblplcm9GcmFjdGlvbmFsUGFydCgpIDogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0RnJhY3Rpb25hbFBhcnQoKSAhPT0gXHN0cl9yZXBlYXQoJzAnLCAkdGhpcy0+c2NhbGUpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9CaWdJbnRlZ2VyKCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJHplcm9TY2FsZURlY2ltYWwgPSAkdGhpcy0+c2NhbGUgPT09IDAgPyAkdGhpcyA6ICR0aGlzLT5kaXZpZGVkQnkoMSwgMCk7CgogICAgICAgIHJldHVybiBCaWdJbnRlZ2VyOjpjcmVhdGUoJHplcm9TY2FsZURlY2ltYWwtPnZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQmlnRGVjaW1hbCgpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQmlnUmF0aW9uYWwoKSA6IEJpZ1JhdGlvbmFsCiAgICB7CiAgICAgICAgJG51bWVyYXRvciA9IEJpZ0ludGVnZXI6OmNyZWF0ZSgkdGhpcy0+dmFsdWUpOwogICAgICAgICRkZW5vbWluYXRvciA9IEJpZ0ludGVnZXI6OmNyZWF0ZSgnMScgLiBcc3RyX3JlcGVhdCgnMCcsICR0aGlzLT5zY2FsZSkpOwoKICAgICAgICByZXR1cm4gQmlnUmF0aW9uYWw6OmNyZWF0ZSgkbnVtZXJhdG9yLCAkZGVub21pbmF0b3IsIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvU2NhbGUoaW50ICRzY2FsZSwgaW50ICRyb3VuZGluZ01vZGUgPSBSb3VuZGluZ01vZGU6OlVOTkVDRVNTQVJZKSA6IEJpZ0RlY2ltYWwKICAgIHsKICAgICAgICBpZiAoJHNjYWxlID09PSAkdGhpcy0+c2NhbGUpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5kaXZpZGVkQnkoQmlnRGVjaW1hbDo6b25lKCksICRzY2FsZSwgJHJvdW5kaW5nTW9kZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0ludCgpIDogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50b0JpZ0ludGVnZXIoKS0+dG9JbnQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvRmxvYXQoKSA6IGZsb2F0CiAgICB7CiAgICAgICAgcmV0dXJuIChmbG9hdCkgKHN0cmluZykgJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnNjYWxlID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Z2V0VW5zY2FsZWRWYWx1ZVdpdGhMZWFkaW5nWmVyb3MoKTsKCiAgICAgICAgcmV0dXJuIFxzdWJzdHIoJHZhbHVlLCAwLCAtJHRoaXMtPnNjYWxlKSAuICcuJyAuIFxzdWJzdHIoJHZhbHVlLCAtJHRoaXMtPnNjYWxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIGlzIHJlcXVpcmVkIGZvciBzZXJpYWxpemluZyB0aGUgb2JqZWN0IGFuZCBTSE9VTEQgTk9UIGJlIGFjY2Vzc2VkIGRpcmVjdGx5LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl7dmFsdWU6IHN0cmluZywgc2NhbGU6IGludH0KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fc2VyaWFsaXplKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIFsndmFsdWUnID0+ICR0aGlzLT52YWx1ZSwgJ3NjYWxlJyA9PiAkdGhpcy0+c2NhbGVdOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2QgaXMgb25seSBoZXJlIHRvIGFsbG93IHVuc2VyaWFsaXppbmcgdGhlIG9iamVjdCBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGRpcmVjdGx5LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICogQHBzYWxtLXN1cHByZXNzIFJlZHVuZGFudFByb3BlcnR5SW5pdGlhbGl6YXRpb25DaGVjawogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXt2YWx1ZTogc3RyaW5nLCBzY2FsZTogaW50fSAkZGF0YQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEB0aHJvd3MgXExvZ2ljRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3Vuc2VyaWFsaXplKGFycmF5ICRkYXRhKTogdm9pZAogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+dmFsdWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ19fdW5zZXJpYWxpemUoKSBpcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgaXQgbXVzdCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LicpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnZhbHVlID0gJGRhdGFbJ3ZhbHVlJ107CiAgICAgICAgJHRoaXMtPnNjYWxlID0gJGRhdGFbJ3NjYWxlJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCBieSBpbnRlcmZhY2UgU2VyaWFsaXphYmxlIGFuZCBTSE9VTEQgTk9UIGJlIGFjY2Vzc2VkIGRpcmVjdGx5LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXJpYWxpemUoKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWUgLiAnOicgLiAkdGhpcy0+c2NhbGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBpcyBvbmx5IGhlcmUgdG8gaW1wbGVtZW50IGludGVyZmFjZSBTZXJpYWxpemFibGUgYW5kIGNhbm5vdCBiZSBhY2Nlc3NlZCBkaXJlY3RseS4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqIEBwc2FsbS1zdXBwcmVzcyBSZWR1bmRhbnRQcm9wZXJ0eUluaXRpYWxpemF0aW9uQ2hlY2sKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEB0aHJvd3MgXExvZ2ljRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bnNlcmlhbGl6ZSgkdmFsdWUpIDogdm9pZAogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+dmFsdWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ3Vuc2VyaWFsaXplKCkgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24sIGl0IG11c3Qgbm90IGJlIGNhbGxlZCBkaXJlY3RseS4nKTsKICAgICAgICB9CgogICAgICAgIFskdmFsdWUsICRzY2FsZV0gPSBcZXhwbG9kZSgnOicsICR2YWx1ZSk7CgogICAgICAgICR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKICAgICAgICAkdGhpcy0+c2NhbGUgPSAoaW50KSAkc2NhbGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBQdXRzIHRoZSBpbnRlcm5hbCB2YWx1ZXMgb2YgdGhlIGdpdmVuIGRlY2ltYWwgbnVtYmVycyBvbiB0aGUgc2FtZSBzY2FsZS4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnRGVjaW1hbCAkeCBUaGUgZmlyc3QgZGVjaW1hbCBudW1iZXIuCiAgICAgKiBAcGFyYW0gQmlnRGVjaW1hbCAkeSBUaGUgc2Vjb25kIGRlY2ltYWwgbnVtYmVyLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl7c3RyaW5nLCBzdHJpbmd9IFRoZSBzY2FsZWQgaW50ZWdlciB2YWx1ZXMgb2YgJHggYW5kICR5LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNjYWxlVmFsdWVzKEJpZ0RlY2ltYWwgJHgsIEJpZ0RlY2ltYWwgJHkpIDogYXJyYXkKICAgIHsKICAgICAgICAkYSA9ICR4LT52YWx1ZTsKICAgICAgICAkYiA9ICR5LT52YWx1ZTsKCiAgICAgICAgaWYgKCRiICE9PSAnMCcgJiYgJHgtPnNjYWxlID4gJHktPnNjYWxlKSB7CiAgICAgICAgICAgICRiIC49IFxzdHJfcmVwZWF0KCcwJywgJHgtPnNjYWxlIC0gJHktPnNjYWxlKTsKICAgICAgICB9IGVsc2VpZiAoJGEgIT09ICcwJyAmJiAkeC0+c2NhbGUgPCAkeS0+c2NhbGUpIHsKICAgICAgICAgICAgJGEgLj0gXHN0cl9yZXBlYXQoJzAnLCAkeS0+c2NhbGUgLSAkeC0+c2NhbGUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskYSwgJGJdOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkc2NhbGUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHZhbHVlV2l0aE1pblNjYWxlKGludCAkc2NhbGUpIDogc3RyaW5nCiAgICB7CiAgICAgICAgJHZhbHVlID0gJHRoaXMtPnZhbHVlOwoKICAgICAgICBpZiAoJHRoaXMtPnZhbHVlICE9PSAnMCcgJiYgJHNjYWxlID4gJHRoaXMtPnNjYWxlKSB7CiAgICAgICAgICAgICR2YWx1ZSAuPSBcc3RyX3JlcGVhdCgnMCcsICRzY2FsZSAtICR0aGlzLT5zY2FsZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogQWRkcyBsZWFkaW5nIHplcm9zIGlmIG5lY2Vzc2FyeSB0byB0aGUgdW5zY2FsZWQgdmFsdWUgdG8gcmVwcmVzZW50IHRoZSBmdWxsIGRlY2ltYWwgbnVtYmVyLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0VW5zY2FsZWRWYWx1ZVdpdGhMZWFkaW5nWmVyb3MoKSA6IHN0cmluZwogICAgewogICAgICAgICR2YWx1ZSA9ICR0aGlzLT52YWx1ZTsKICAgICAgICAkdGFyZ2V0TGVuZ3RoID0gJHRoaXMtPnNjYWxlICsgMTsKICAgICAgICAkbmVnYXRpdmUgPSAoJHZhbHVlWzBdID09PSAnLScpOwogICAgICAgICRsZW5ndGggPSBcc3RybGVuKCR2YWx1ZSk7CgogICAgICAgIGlmICgkbmVnYXRpdmUpIHsKICAgICAgICAgICAgJGxlbmd0aC0tOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRsZW5ndGggPj0gJHRhcmdldExlbmd0aCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRuZWdhdGl2ZSkgewogICAgICAgICAgICAkdmFsdWUgPSBcc3Vic3RyKCR2YWx1ZSwgMSk7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSBcc3RyX3BhZCgkdmFsdWUsICR0YXJnZXRMZW5ndGgsICcwJywgU1RSX1BBRF9MRUZUKTsKCiAgICAgICAgaWYgKCRuZWdhdGl2ZSkgewogICAgICAgICAgICAkdmFsdWUgPSAnLScgLiAkdmFsdWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/BigInteger.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGg7Cgp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cRGl2aXNpb25CeVplcm9FeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXEV4Y2VwdGlvblxJbnRlZ2VyT3ZlcmZsb3dFeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXEV4Y2VwdGlvblxNYXRoRXhjZXB0aW9uOwp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cTmVnYXRpdmVOdW1iZXJFeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXEV4Y2VwdGlvblxOdW1iZXJGb3JtYXRFeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXEludGVybmFsXENhbGN1bGF0b3I7CgovKioKICogQW4gYXJiaXRyYXJ5LXNpemUgaW50ZWdlci4KICoKICogQWxsIG1ldGhvZHMgYWNjZXB0aW5nIGEgbnVtYmVyIGFzIGEgcGFyYW1ldGVyIGFjY2VwdCBlaXRoZXIgYSBCaWdJbnRlZ2VyIGluc3RhbmNlLAogKiBhbiBpbnRlZ2VyLCBvciBhIHN0cmluZyByZXByZXNlbnRpbmcgYW4gYXJiaXRyYXJ5IHNpemUgaW50ZWdlci4KICoKICogQHBzYWxtLWltbXV0YWJsZQogKi8KZmluYWwgY2xhc3MgQmlnSW50ZWdlciBleHRlbmRzIEJpZ051bWJlcgp7CiAgICAvKioKICAgICAqIFRoZSB2YWx1ZSwgYXMgYSBzdHJpbmcgb2YgZGlnaXRzIHdpdGggb3B0aW9uYWwgbGVhZGluZyBtaW51cyBzaWduLgogICAgICoKICAgICAqIE5vIGxlYWRpbmcgemVyb3MgbXVzdCBiZSBwcmVzZW50LgogICAgICogTm8gbGVhZGluZyBtaW51cyBzaWduIG11c3QgYmUgcHJlc2VudCBpZiB0aGUgbnVtYmVyIGlzIHplcm8uCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkdmFsdWU7CgogICAgLyoqCiAgICAgKiBQcm90ZWN0ZWQgY29uc3RydWN0b3IuIFVzZSBhIGZhY3RvcnkgbWV0aG9kIHRvIG9idGFpbiBhbiBpbnN0YW5jZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZSBBIHN0cmluZyBvZiBkaWdpdHMsIHdpdGggb3B0aW9uYWwgbGVhZGluZyBtaW51cyBzaWduLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICR2YWx1ZSkKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgQmlnSW50ZWdlciBvZiB0aGUgZ2l2ZW4gdmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICoKICAgICAqIEB0aHJvd3MgTWF0aEV4Y2VwdGlvbiBJZiB0aGUgdmFsdWUgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIEJpZ0ludGVnZXIuCiAgICAgKgogICAgICogQHBzYWxtLXB1cmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvZigkdmFsdWUpIDogQmlnTnVtYmVyCiAgICB7CiAgICAgICAgcmV0dXJuIHBhcmVudDo6b2YoJHZhbHVlKS0+dG9CaWdJbnRlZ2VyKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbnVtYmVyIGZyb20gYSBzdHJpbmcgaW4gYSBnaXZlbiBiYXNlLgogICAgICoKICAgICAqIFRoZSBzdHJpbmcgY2FuIG9wdGlvbmFsbHkgYmUgcHJlZml4ZWQgd2l0aCB0aGUgYCtgIG9yIGAtYCBzaWduLgogICAgICoKICAgICAqIEJhc2VzIGdyZWF0ZXIgdGhhbiAzNiBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIG1ldGhvZCwgYXMgdGhlcmUgaXMgbm8gY2xlYXIgY29uc2Vuc3VzIG9uIHdoaWNoIG9mIHRoZSBsb3dlcmNhc2UKICAgICAqIG9yIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIHNob3VsZCBjb21lIGZpcnN0LiBJbnN0ZWFkLCB0aGlzIG1ldGhvZCBhY2NlcHRzIGFueSBiYXNlIHVwIHRvIDM2LCBhbmQgZG9lcyBub3QKICAgICAqIGRpZmZlcmVudGlhdGUgbG93ZXJjYXNlIGFuZCB1cHBlcmNhc2UgY2hhcmFjdGVycywgd2hpY2ggYXJlIGNvbnNpZGVyZWQgZXF1YWwuCiAgICAgKgogICAgICogRm9yIGJhc2VzIGdyZWF0ZXIgdGhhbiAzNiwgYW5kL29yIGN1c3RvbSBhbHBoYWJldHMsIHVzZSB0aGUgZnJvbUFyYml0cmFyeUJhc2UoKSBtZXRob2QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbnVtYmVyIFRoZSBudW1iZXIgdG8gY29udmVydCwgaW4gdGhlIGdpdmVuIGJhc2UuCiAgICAgKiBAcGFyYW0gaW50ICAgICRiYXNlICAgVGhlIGJhc2Ugb2YgdGhlIG51bWJlciwgYmV0d2VlbiAyIGFuZCAzNi4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqCiAgICAgKiBAdGhyb3dzIE51bWJlckZvcm1hdEV4Y2VwdGlvbiAgICAgSWYgdGhlIG51bWJlciBpcyBlbXB0eSwgb3IgY29udGFpbnMgaW52YWxpZCBjaGFycyBmb3IgdGhlIGdpdmVuIGJhc2UuCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgdGhlIGJhc2UgaXMgb3V0IG9mIHJhbmdlLgogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJhc2Uoc3RyaW5nICRudW1iZXIsIGludCAkYmFzZSkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgaWYgKCRudW1iZXIgPT09ICcnKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBOdW1iZXJGb3JtYXRFeGNlcHRpb24oJ1RoZSBudW1iZXIgY2Fubm90IGJlIGVtcHR5LicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRiYXNlIDwgMiB8fCAkYmFzZSA+IDM2KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKFxzcHJpbnRmKCdCYXNlICVkIGlzIG5vdCBpbiByYW5nZSAyIHRvIDM2LicsICRiYXNlKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG51bWJlclswXSA9PT0gJy0nKSB7CiAgICAgICAgICAgICRzaWduID0gJy0nOwogICAgICAgICAgICAkbnVtYmVyID0gXHN1YnN0cigkbnVtYmVyLCAxKTsKICAgICAgICB9IGVsc2VpZiAoJG51bWJlclswXSA9PT0gJysnKSB7CiAgICAgICAgICAgICRzaWduID0gJyc7CiAgICAgICAgICAgICRudW1iZXIgPSBcc3Vic3RyKCRudW1iZXIsIDEpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzaWduID0gJyc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG51bWJlciA9PT0gJycpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IE51bWJlckZvcm1hdEV4Y2VwdGlvbignVGhlIG51bWJlciBjYW5ub3QgYmUgZW1wdHkuJyk7CiAgICAgICAgfQoKICAgICAgICAkbnVtYmVyID0gXGx0cmltKCRudW1iZXIsICcwJyk7CgogICAgICAgIGlmICgkbnVtYmVyID09PSAnJykgewogICAgICAgICAgICAvLyBUaGUgcmVzdWx0IHdpbGwgYmUgdGhlIHNhbWUgaW4gYW55IGJhc2UsIGF2b2lkIGZ1cnRoZXIgY2FsY3VsYXRpb24uCiAgICAgICAgICAgIHJldHVybiBCaWdJbnRlZ2VyOjp6ZXJvKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG51bWJlciA9PT0gJzEnKSB7CiAgICAgICAgICAgIC8vIFRoZSByZXN1bHQgd2lsbCBiZSB0aGUgc2FtZSBpbiBhbnkgYmFzZSwgYXZvaWQgZnVydGhlciBjYWxjdWxhdGlvbi4KICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKCRzaWduIC4gJzEnKTsKICAgICAgICB9CgogICAgICAgICRwYXR0ZXJuID0gJy9bXicgLiBcc3Vic3RyKENhbGN1bGF0b3I6OkFMUEhBQkVULCAwLCAkYmFzZSkgLiAnXS8nOwoKICAgICAgICBpZiAoXHByZWdfbWF0Y2goJHBhdHRlcm4sIFxzdHJ0b2xvd2VyKCRudW1iZXIpLCAkbWF0Y2hlcykgPT09IDEpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IE51bWJlckZvcm1hdEV4Y2VwdGlvbihcc3ByaW50ZignIiVzIiBpcyBub3QgYSB2YWxpZCBjaGFyYWN0ZXIgaW4gYmFzZSAlZC4nLCAkbWF0Y2hlc1swXSwgJGJhc2UpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYmFzZSA9PT0gMTApIHsKICAgICAgICAgICAgLy8gVGhlIG51bWJlciBpcyB1c2FibGUgYXMgaXMsIGF2b2lkIGZ1cnRoZXIgY2FsY3VsYXRpb24uCiAgICAgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigkc2lnbiAuICRudW1iZXIpOwogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9IENhbGN1bGF0b3I6OmdldCgpLT5mcm9tQmFzZSgkbnVtYmVyLCAkYmFzZSk7CgogICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigkc2lnbiAuICRyZXN1bHQpOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYW4gaW50ZWdlciBpbiBhbiBhcmJpdHJhcnkgYmFzZSwgdXNpbmcgYSBjdXN0b20gYWxwaGFiZXQuCiAgICAgKgogICAgICogQmVjYXVzZSB0aGlzIG1ldGhvZCBhY2NlcHRzIGFuIGFscGhhYmV0IHdpdGggYW55IGNoYXJhY3RlciwgaW5jbHVkaW5nIGRhc2gsIGl0IGRvZXMgbm90IGhhbmRsZSBuZWdhdGl2ZSBudW1iZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG51bWJlciAgIFRoZSBudW1iZXIgdG8gcGFyc2UuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhbHBoYWJldCBUaGUgYWxwaGFiZXQsIGZvciBleGFtcGxlICcwMScgZm9yIGJhc2UgMiwgb3IgJzAxMjM0NTY3JyBmb3IgYmFzZSA4LgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICoKICAgICAqIEB0aHJvd3MgTnVtYmVyRm9ybWF0RXhjZXB0aW9uICAgICBJZiB0aGUgZ2l2ZW4gbnVtYmVyIGlzIGVtcHR5IG9yIGNvbnRhaW5zIGludmFsaWQgY2hhcnMgZm9yIHRoZSBnaXZlbiBhbHBoYWJldC4KICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgYWxwaGFiZXQgZG9lcyBub3QgY29udGFpbiBhdCBsZWFzdCAyIGNoYXJzLgogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUFyYml0cmFyeUJhc2Uoc3RyaW5nICRudW1iZXIsIHN0cmluZyAkYWxwaGFiZXQpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIGlmICgkbnVtYmVyID09PSAnJykgewogICAgICAgICAgICB0aHJvdyBuZXcgTnVtYmVyRm9ybWF0RXhjZXB0aW9uKCdUaGUgbnVtYmVyIGNhbm5vdCBiZSBlbXB0eS4nKTsKICAgICAgICB9CgogICAgICAgICRiYXNlID0gXHN0cmxlbigkYWxwaGFiZXQpOwoKICAgICAgICBpZiAoJGJhc2UgPCAyKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgYWxwaGFiZXQgbXVzdCBjb250YWluIGF0IGxlYXN0IDIgY2hhcnMuJyk7CiAgICAgICAgfQoKICAgICAgICAkcGF0dGVybiA9ICcvW14nIC4gXHByZWdfcXVvdGUoJGFscGhhYmV0LCAnLycpIC4gJ10vJzsKCiAgICAgICAgaWYgKFxwcmVnX21hdGNoKCRwYXR0ZXJuLCAkbnVtYmVyLCAkbWF0Y2hlcykgPT09IDEpIHsKICAgICAgICAgICAgdGhyb3cgTnVtYmVyRm9ybWF0RXhjZXB0aW9uOjpjaGFyTm90SW5BbHBoYWJldCgkbWF0Y2hlc1swXSk7CiAgICAgICAgfQoKICAgICAgICAkbnVtYmVyID0gQ2FsY3VsYXRvcjo6Z2V0KCktPmZyb21BcmJpdHJhcnlCYXNlKCRudW1iZXIsICRhbHBoYWJldCwgJGJhc2UpOwoKICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoJG51bWJlcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBUcmFuc2xhdGVzIGEgc3RyaW5nIG9mIGJ5dGVzIGNvbnRhaW5pbmcgdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBhIEJpZ0ludGVnZXIgaW50byBhIEJpZ0ludGVnZXIuCiAgICAgKgogICAgICogVGhlIGlucHV0IHN0cmluZyBpcyBhc3N1bWVkIHRvIGJlIGluIGJpZy1lbmRpYW4gYnl0ZS1vcmRlcjogdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYnl0ZSBpcyBpbiB0aGUgemVyb3RoIGVsZW1lbnQuCiAgICAgKgogICAgICogSWYgYCRzaWduZWRgIGlzIHRydWUsIHRoZSBpbnB1dCBpcyBhc3N1bWVkIHRvIGJlIGluIHR3bydzLWNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24sIGFuZCB0aGUgbGVhZGluZyBiaXQgaXMKICAgICAqIGludGVycHJldGVkIGFzIGEgc2lnbiBiaXQuIElmIGAkc2lnbmVkYCBpcyBmYWxzZSwgdGhlIGlucHV0IGlzIGludGVycHJldGVkIGFzIGFuIHVuc2lnbmVkIG51bWJlciwgYW5kIHRoZQogICAgICogcmVzdWx0aW5nIEJpZ0ludGVnZXIgd2lsbCBhbHdheXMgYmUgcG9zaXRpdmUgb3IgemVyby4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byByZXRyaWV2ZSBhIG51bWJlciBleHBvcnRlZCBieSBgdG9CeXRlcygpYCwgYXMgbG9uZyBhcyB0aGUgYCRzaWduZWRgIGZsYWdzIG1hdGNoLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlICBUaGUgYnl0ZSBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYm9vbCAgICRzaWduZWQgV2hldGhlciB0byBpbnRlcnByZXQgYXMgYSBzaWduZWQgbnVtYmVyIGluIHR3bydzLWNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24gd2l0aCBhIGxlYWRpbmcKICAgICAqICAgICAgICAgICAgICAgICAgICAgICBzaWduIGJpdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqCiAgICAgKiBAdGhyb3dzIE51bWJlckZvcm1hdEV4Y2VwdGlvbiBJZiB0aGUgc3RyaW5nIGlzIGVtcHR5LgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CeXRlcyhzdHJpbmcgJHZhbHVlLCBib29sICRzaWduZWQgPSB0cnVlKSA6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICBpZiAoJHZhbHVlID09PSAnJykgewogICAgICAgICAgICB0aHJvdyBuZXcgTnVtYmVyRm9ybWF0RXhjZXB0aW9uKCdUaGUgYnl0ZSBzdHJpbmcgbXVzdCBub3QgYmUgZW1wdHkuJyk7CiAgICAgICAgfQoKICAgICAgICAkdHdvc0NvbXBsZW1lbnQgPSBmYWxzZTsKCiAgICAgICAgaWYgKCRzaWduZWQpIHsKICAgICAgICAgICAgJHggPSBcb3JkKCR2YWx1ZVswXSk7CgogICAgICAgICAgICBpZiAoKCR0d29zQ29tcGxlbWVudCA9ICgkeCA+PSAweDgwKSkpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IH4kdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRudW1iZXIgPSBzZWxmOjpmcm9tQmFzZShcYmluMmhleCgkdmFsdWUpLCAxNik7CgogICAgICAgIGlmICgkdHdvc0NvbXBsZW1lbnQpIHsKICAgICAgICAgICAgcmV0dXJuICRudW1iZXItPnBsdXMoMSktPm5lZ2F0ZWQoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbnVtYmVyOwogICAgfQoKICAgIC8qKgogICAgICogR2VuZXJhdGVzIGEgcHNldWRvLXJhbmRvbSBudW1iZXIgaW4gdGhlIHJhbmdlIDAgdG8gMl5udW1CaXRzIC0gMS4KICAgICAqCiAgICAgKiBVc2luZyB0aGUgZGVmYXVsdCByYW5kb20gYnl0ZXMgZ2VuZXJhdG9yLCB0aGlzIG1ldGhvZCBpcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuCiAgICAgKgogICAgICogQHBzYWxtLXBhcmFtIGNhbGxhYmxlKGludCk6IHN0cmluZyAkcmFuZG9tQnl0ZXNHZW5lcmF0b3IKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAkbnVtQml0cyAgICAgICAgICAgICAgVGhlIG51bWJlciBvZiBiaXRzLgogICAgICogQHBhcmFtIGNhbGxhYmxlfG51bGwgJHJhbmRvbUJ5dGVzR2VuZXJhdG9yIEEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGEgbnVtYmVyIG9mIGJ5dGVzIGFzIGFuIGludGVnZXIsIGFuZCByZXR1cm5zIGEKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgb2YgcmFuZG9tIGJ5dGVzIG9mIHRoZSBnaXZlbiBsZW5ndGguIERlZmF1bHRzIHRvIHRoZQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGByYW5kb21fYnl0ZXMoKWAgZnVuY3Rpb24uCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmICRudW1CaXRzIGlzIG5lZ2F0aXZlLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJhbmRvbUJpdHMoaW50ICRudW1CaXRzLCA/Y2FsbGFibGUgJHJhbmRvbUJ5dGVzR2VuZXJhdG9yID0gbnVsbCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgaWYgKCRudW1CaXRzIDwgMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVGhlIG51bWJlciBvZiBiaXRzIGNhbm5vdCBiZSBuZWdhdGl2ZS4nKTsKICAgICAgICB9CgogICAgICAgIGlmICgkbnVtQml0cyA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gQmlnSW50ZWdlcjo6emVybygpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRyYW5kb21CeXRlc0dlbmVyYXRvciA9PT0gbnVsbCkgewogICAgICAgICAgICAkcmFuZG9tQnl0ZXNHZW5lcmF0b3IgPSAncmFuZG9tX2J5dGVzJzsKICAgICAgICB9CgogICAgICAgICRieXRlTGVuZ3RoID0gXGludGRpdigkbnVtQml0cyAtIDEsIDgpICsgMTsKCiAgICAgICAgJGV4dHJhQml0cyA9ICgkYnl0ZUxlbmd0aCAqIDggLSAkbnVtQml0cyk7CiAgICAgICAgJGJpdG1hc2sgICA9IFxjaHIoMHhGRiA+PiAkZXh0cmFCaXRzKTsKCiAgICAgICAgJHJhbmRvbUJ5dGVzICAgID0gJHJhbmRvbUJ5dGVzR2VuZXJhdG9yKCRieXRlTGVuZ3RoKTsKICAgICAgICAkcmFuZG9tQnl0ZXNbMF0gPSAkcmFuZG9tQnl0ZXNbMF0gJiAkYml0bWFzazsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmZyb21CeXRlcygkcmFuZG9tQnl0ZXMsIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdlbmVyYXRlcyBhIHBzZXVkby1yYW5kb20gbnVtYmVyIGJldHdlZW4gYCRtaW5gIGFuZCBgJG1heGAuCiAgICAgKgogICAgICogVXNpbmcgdGhlIGRlZmF1bHQgcmFuZG9tIGJ5dGVzIGdlbmVyYXRvciwgdGhpcyBtZXRob2QgaXMgc3VpdGFibGUgZm9yIGNyeXB0b2dyYXBoaWMgdXNlLgogICAgICoKICAgICAqIEBwc2FsbS1wYXJhbSAoY2FsbGFibGUoaW50KTogc3RyaW5nKXxudWxsICRyYW5kb21CeXRlc0dlbmVyYXRvcgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkbWluICAgICAgICAgICAgICAgICAgVGhlIGxvd2VyIGJvdW5kLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkbWF4ICAgICAgICAgICAgICAgICAgVGhlIHVwcGVyIGJvdW5kLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqIEBwYXJhbSBjYWxsYWJsZXxudWxsICAgICAgICAgICAgICAkcmFuZG9tQnl0ZXNHZW5lcmF0b3IgQSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYSBudW1iZXIgb2YgYnl0ZXMgYXMgYW4gaW50ZWdlciwKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJldHVybnMgYSBzdHJpbmcgb2YgcmFuZG9tIGJ5dGVzIG9mIHRoZSBnaXZlbiBsZW5ndGguCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIHRoZSBgcmFuZG9tX2J5dGVzKClgIGZ1bmN0aW9uLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICoKICAgICAqIEB0aHJvd3MgTWF0aEV4Y2VwdGlvbiBJZiBvbmUgb2YgdGhlIHBhcmFtZXRlcnMgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIEJpZ0ludGVnZXIsCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgb3IgYCRtaW5gIGlzIGdyZWF0ZXIgdGhhbiBgJG1heGAuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmFuZG9tUmFuZ2UoJG1pbiwgJG1heCwgP2NhbGxhYmxlICRyYW5kb21CeXRlc0dlbmVyYXRvciA9IG51bGwpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgICRtaW4gPSBCaWdJbnRlZ2VyOjpvZigkbWluKTsKICAgICAgICAkbWF4ID0gQmlnSW50ZWdlcjo6b2YoJG1heCk7CgogICAgICAgIGlmICgkbWluLT5pc0dyZWF0ZXJUaGFuKCRtYXgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBNYXRoRXhjZXB0aW9uKCckbWluIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gJG1heC4nKTsKICAgICAgICB9CgogICAgICAgIGlmICgkbWluLT5pc0VxdWFsVG8oJG1heCkpIHsKICAgICAgICAgICAgcmV0dXJuICRtaW47CiAgICAgICAgfQoKICAgICAgICAkZGlmZiAgICAgID0gJG1heC0+bWludXMoJG1pbik7CiAgICAgICAgJGJpdExlbmd0aCA9ICRkaWZmLT5nZXRCaXRMZW5ndGgoKTsKCiAgICAgICAgLy8gdHJ5IHVudGlsIHRoZSBudW1iZXIgaXMgaW4gcmFuZ2UgKDUwJSB0byAxMDAlIGNoYW5jZSBvZiBzdWNjZXNzKQogICAgICAgIGRvIHsKICAgICAgICAgICAgJHJhbmRvbU51bWJlciA9IHNlbGY6OnJhbmRvbUJpdHMoJGJpdExlbmd0aCwgJHJhbmRvbUJ5dGVzR2VuZXJhdG9yKTsKICAgICAgICB9IHdoaWxlICgkcmFuZG9tTnVtYmVyLT5pc0dyZWF0ZXJUaGFuKCRkaWZmKSk7CgogICAgICAgIHJldHVybiAkcmFuZG9tTnVtYmVyLT5wbHVzKCRtaW4pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEJpZ0ludGVnZXIgcmVwcmVzZW50aW5nIHplcm8uCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKgogICAgICogQHBzYWxtLXB1cmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB6ZXJvKCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgLyoqCiAgICAgICAgICogQHBzYWxtLXN1cHByZXNzIEltcHVyZVN0YXRpY1ZhcmlhYmxlCiAgICAgICAgICogQHZhciBCaWdJbnRlZ2VyfG51bGwgJHplcm8KICAgICAgICAgKi8KICAgICAgICBzdGF0aWMgJHplcm87CgogICAgICAgIGlmICgkemVybyA9PT0gbnVsbCkgewogICAgICAgICAgICAkemVybyA9IG5ldyBCaWdJbnRlZ2VyKCcwJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHplcm87CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgQmlnSW50ZWdlciByZXByZXNlbnRpbmcgb25lLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb25lKCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgLyoqCiAgICAgICAgICogQHBzYWxtLXN1cHByZXNzIEltcHVyZVN0YXRpY1ZhcmlhYmxlCiAgICAgICAgICogQHZhciBCaWdJbnRlZ2VyfG51bGwgJG9uZQogICAgICAgICAqLwogICAgICAgIHN0YXRpYyAkb25lOwoKICAgICAgICBpZiAoJG9uZSA9PT0gbnVsbCkgewogICAgICAgICAgICAkb25lID0gbmV3IEJpZ0ludGVnZXIoJzEnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkb25lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEJpZ0ludGVnZXIgcmVwcmVzZW50aW5nIHRlbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRlbigpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIC8qKgogICAgICAgICAqIEBwc2FsbS1zdXBwcmVzcyBJbXB1cmVTdGF0aWNWYXJpYWJsZQogICAgICAgICAqIEB2YXIgQmlnSW50ZWdlcnxudWxsICR0ZW4KICAgICAgICAgKi8KICAgICAgICBzdGF0aWMgJHRlbjsKCiAgICAgICAgaWYgKCR0ZW4gPT09IG51bGwpIHsKICAgICAgICAgICAgJHRlbiA9IG5ldyBCaWdJbnRlZ2VyKCcxMCcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0ZW47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzdW0gb2YgdGhpcyBudW1iZXIgYW5kIHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0IFRoZSBudW1iZXIgdG8gYWRkLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIgVGhlIHJlc3VsdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIE1hdGhFeGNlcHRpb24gSWYgdGhlIG51bWJlciBpcyBub3QgdmFsaWQsIG9yIGlzIG5vdCBjb252ZXJ0aWJsZSB0byBhIEJpZ0ludGVnZXIuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwbHVzKCR0aGF0KSA6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0ludGVnZXI6Om9mKCR0aGF0KTsKCiAgICAgICAgaWYgKCR0aGF0LT52YWx1ZSA9PT0gJzAnKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+dmFsdWUgPT09ICcwJykgewogICAgICAgICAgICByZXR1cm4gJHRoYXQ7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSBDYWxjdWxhdG9yOjpnZXQoKS0+YWRkKCR0aGlzLT52YWx1ZSwgJHRoYXQtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBkaWZmZXJlbmNlIG9mIHRoaXMgbnVtYmVyIGFuZCB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgbnVtYmVyIHRvIHN1YnRyYWN0LiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIgVGhlIHJlc3VsdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIE1hdGhFeGNlcHRpb24gSWYgdGhlIG51bWJlciBpcyBub3QgdmFsaWQsIG9yIGlzIG5vdCBjb252ZXJ0aWJsZSB0byBhIEJpZ0ludGVnZXIuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtaW51cygkdGhhdCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdJbnRlZ2VyOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdC0+dmFsdWUgPT09ICcwJykgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSBDYWxjdWxhdG9yOjpnZXQoKS0+c3ViKCR0aGlzLT52YWx1ZSwgJHRoYXQtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIHRoaXMgbnVtYmVyIGFuZCB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgbXVsdGlwbGllci4gTXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhIEJpZ0ludGVnZXIuCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyIFRoZSByZXN1bHQuCiAgICAgKgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uIElmIHRoZSBtdWx0aXBsaWVyIGlzIG5vdCBhIHZhbGlkIG51bWJlciwgb3IgaXMgbm90IGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG11bHRpcGxpZWRCeSgkdGhhdCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdJbnRlZ2VyOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdC0+dmFsdWUgPT09ICcxJykgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnZhbHVlID09PSAnMScpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGF0OwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gQ2FsY3VsYXRvcjo6Z2V0KCktPm11bCgkdGhpcy0+dmFsdWUsICR0aGF0LT52YWx1ZSk7CgogICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBkaXZpc2lvbiBvZiB0aGlzIG51bWJlciBieSB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCAgICAgICAgIFRoZSBkaXZpc29yLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICAkcm91bmRpbmdNb2RlIEFuIG9wdGlvbmFsIHJvdW5kaW5nIG1vZGUuCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyIFRoZSByZXN1bHQuCiAgICAgKgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uIElmIHRoZSBkaXZpc29yIGlzIG5vdCBhIHZhbGlkIG51bWJlciwgaXMgbm90IGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlciwgaXMgemVybywKICAgICAqICAgICAgICAgICAgICAgICAgICAgICBvciBSb3VuZGluZ01vZGU6OlVOTkVDRVNTQVJZIGlzIHVzZWQgYW5kIHRoZSByZW1haW5kZXIgaXMgbm90IHplcm8uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXZpZGVkQnkoJHRoYXQsIGludCAkcm91bmRpbmdNb2RlID0gUm91bmRpbmdNb2RlOjpVTk5FQ0VTU0FSWSkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdJbnRlZ2VyOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdC0+dmFsdWUgPT09ICcxJykgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoYXQtPnZhbHVlID09PSAnMCcpIHsKICAgICAgICAgICAgdGhyb3cgRGl2aXNpb25CeVplcm9FeGNlcHRpb246OmRpdmlzaW9uQnlaZXJvKCk7CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gQ2FsY3VsYXRvcjo6Z2V0KCktPmRpdlJvdW5kKCR0aGlzLT52YWx1ZSwgJHRoYXQtPnZhbHVlLCAkcm91bmRpbmdNb2RlKTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKCRyZXN1bHQpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGlzIG51bWJlciBleHBvbmVudGlhdGVkIHRvIHRoZSBnaXZlbiB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRleHBvbmVudCBUaGUgZXhwb25lbnQuCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyIFRoZSByZXN1bHQuCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBleHBvbmVudCBpcyBub3QgaW4gdGhlIHJhbmdlIDAgdG8gMSwwMDAsMDAwLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcG93ZXIoaW50ICRleHBvbmVudCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgaWYgKCRleHBvbmVudCA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gQmlnSW50ZWdlcjo6b25lKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGV4cG9uZW50ID09PSAxKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIGlmICgkZXhwb25lbnQgPCAwIHx8ICRleHBvbmVudCA+IENhbGN1bGF0b3I6Ok1BWF9QT1dFUikgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZigKICAgICAgICAgICAgICAgICdUaGUgZXhwb25lbnQgJWQgaXMgbm90IGluIHRoZSByYW5nZSAwIHRvICVkLicsCiAgICAgICAgICAgICAgICAkZXhwb25lbnQsCiAgICAgICAgICAgICAgICBDYWxjdWxhdG9yOjpNQVhfUE9XRVIKICAgICAgICAgICAgKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoQ2FsY3VsYXRvcjo6Z2V0KCktPnBvdygkdGhpcy0+dmFsdWUsICRleHBvbmVudCkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcXVvdGllbnQgb2YgdGhlIGRpdmlzaW9uIG9mIHRoaXMgbnVtYmVyIGJ5IHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0IFRoZSBkaXZpc29yLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqCiAgICAgKiBAdGhyb3dzIERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uIElmIHRoZSBkaXZpc29yIGlzIHplcm8uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBxdW90aWVudCgkdGhhdCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdJbnRlZ2VyOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdC0+dmFsdWUgPT09ICcxJykgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoYXQtPnZhbHVlID09PSAnMCcpIHsKICAgICAgICAgICAgdGhyb3cgRGl2aXNpb25CeVplcm9FeGNlcHRpb246OmRpdmlzaW9uQnlaZXJvKCk7CiAgICAgICAgfQoKICAgICAgICAkcXVvdGllbnQgPSBDYWxjdWxhdG9yOjpnZXQoKS0+ZGl2USgkdGhpcy0+dmFsdWUsICR0aGF0LT52YWx1ZSk7CgogICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigkcXVvdGllbnQpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVtYWluZGVyIG9mIHRoZSBkaXZpc2lvbiBvZiB0aGlzIG51bWJlciBieSB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIFRoZSByZW1haW5kZXIsIHdoZW4gbm9uLXplcm8sIGhhcyB0aGUgc2FtZSBzaWduIGFzIHRoZSBkaXZpZGVuZC4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJHRoYXQgVGhlIGRpdmlzb3IuIE11c3QgYmUgY29udmVydGlibGUgdG8gYSBCaWdJbnRlZ2VyLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICoKICAgICAqIEB0aHJvd3MgRGl2aXNpb25CeVplcm9FeGNlcHRpb24gSWYgdGhlIGRpdmlzb3IgaXMgemVyby4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbWFpbmRlcigkdGhhdCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdJbnRlZ2VyOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdC0+dmFsdWUgPT09ICcxJykgewogICAgICAgICAgICByZXR1cm4gQmlnSW50ZWdlcjo6emVybygpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGF0LT52YWx1ZSA9PT0gJzAnKSB7CiAgICAgICAgICAgIHRocm93IERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uOjpkaXZpc2lvbkJ5WmVybygpOwogICAgICAgIH0KCiAgICAgICAgJHJlbWFpbmRlciA9IENhbGN1bGF0b3I6OmdldCgpLT5kaXZSKCR0aGlzLT52YWx1ZSwgJHRoYXQtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKCRyZW1haW5kZXIpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcXVvdGllbnQgYW5kIHJlbWFpbmRlciBvZiB0aGUgZGl2aXNpb24gb2YgdGhpcyBudW1iZXIgYnkgdGhlIGdpdmVuIG9uZS4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJHRoYXQgVGhlIGRpdmlzb3IuIE11c3QgYmUgY29udmVydGlibGUgdG8gYSBCaWdJbnRlZ2VyLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcltdIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHF1b3RpZW50IGFuZCB0aGUgcmVtYWluZGVyLgogICAgICoKICAgICAqIEB0aHJvd3MgRGl2aXNpb25CeVplcm9FeGNlcHRpb24gSWYgdGhlIGRpdmlzb3IgaXMgemVyby4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHF1b3RpZW50QW5kUmVtYWluZGVyKCR0aGF0KSA6IGFycmF5CiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdJbnRlZ2VyOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdC0+dmFsdWUgPT09ICcwJykgewogICAgICAgICAgICB0aHJvdyBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbjo6ZGl2aXNpb25CeVplcm8oKTsKICAgICAgICB9CgogICAgICAgIFskcXVvdGllbnQsICRyZW1haW5kZXJdID0gQ2FsY3VsYXRvcjo6Z2V0KCktPmRpdlFSKCR0aGlzLT52YWx1ZSwgJHRoYXQtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgbmV3IEJpZ0ludGVnZXIoJHF1b3RpZW50KSwKICAgICAgICAgICAgbmV3IEJpZ0ludGVnZXIoJHJlbWFpbmRlcikKICAgICAgICBdOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbW9kdWxvIG9mIHRoaXMgbnVtYmVyIGFuZCB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIFRoZSBtb2R1bG8gb3BlcmF0aW9uIHlpZWxkcyB0aGUgc2FtZSByZXN1bHQgYXMgdGhlIHJlbWFpbmRlciBvcGVyYXRpb24gd2hlbiBib3RoIG9wZXJhbmRzIGFyZSBvZiB0aGUgc2FtZSBzaWduLAogICAgICogYW5kIG1heSBkaWZmZXIgd2hlbiBzaWducyBhcmUgZGlmZmVyZW50LgogICAgICoKICAgICAqIFRoZSByZXN1bHQgb2YgdGhlIG1vZHVsbyBvcGVyYXRpb24sIHdoZW4gbm9uLXplcm8sIGhhcyB0aGUgc2FtZSBzaWduIGFzIHRoZSBkaXZpc29yLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgZGl2aXNvci4gTXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhIEJpZ0ludGVnZXIuCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKgogICAgICogQHRocm93cyBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbiBJZiB0aGUgZGl2aXNvciBpcyB6ZXJvLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbW9kKCR0aGF0KSA6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0ludGVnZXI6Om9mKCR0aGF0KTsKCiAgICAgICAgaWYgKCR0aGF0LT52YWx1ZSA9PT0gJzAnKSB7CiAgICAgICAgICAgIHRocm93IERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uOjptb2R1bHVzTXVzdE5vdEJlWmVybygpOwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gQ2FsY3VsYXRvcjo6Z2V0KCktPm1vZCgkdGhpcy0+dmFsdWUsICR0aGF0LT52YWx1ZSk7CgogICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbW9kdWxhciBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlIG9mIHRoaXMgQmlnSW50ZWdlciBtb2R1bG8gJG0uCiAgICAgKgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJG0KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqCiAgICAgKiBAdGhyb3dzIERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uIElmICRtIGlzIHplcm8uCiAgICAgKiBAdGhyb3dzIE5lZ2F0aXZlTnVtYmVyRXhjZXB0aW9uIElmICRtIGlzIG5lZ2F0aXZlLgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uICAgICAgICAgICBJZiB0aGlzIEJpZ0ludGVnZXIgaGFzIG5vIG11bHRpcGxpY2F0aXZlIGludmVyc2UgbW9kIG0gKHRoYXQgaXMsIHRoaXMgQmlnSW50ZWdlcgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBub3QgcmVsYXRpdmVseSBwcmltZSB0byBtKS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1vZEludmVyc2UoQmlnSW50ZWdlciAkbSkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgaWYgKCRtLT52YWx1ZSA9PT0gJzAnKSB7CiAgICAgICAgICAgIHRocm93IERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uOjptb2R1bHVzTXVzdE5vdEJlWmVybygpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRtLT5pc05lZ2F0aXZlKCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IE5lZ2F0aXZlTnVtYmVyRXhjZXB0aW9uKCdNb2R1bHVzIG11c3Qgbm90IGJlIG5lZ2F0aXZlLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRtLT52YWx1ZSA9PT0gJzEnKSB7CiAgICAgICAgICAgIHJldHVybiBCaWdJbnRlZ2VyOjp6ZXJvKCk7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSBDYWxjdWxhdG9yOjpnZXQoKS0+bW9kSW52ZXJzZSgkdGhpcy0+dmFsdWUsICRtLT52YWx1ZSk7CgogICAgICAgIGlmICgkdmFsdWUgPT09IG51bGwpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IE1hdGhFeGNlcHRpb24oJ1VuYWJsZSB0byBjb21wdXRlIHRoZSBtb2RJbnZlcnNlIGZvciB0aGUgZ2l2ZW4gbW9kdWx1cy4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGlzIG51bWJlciByYWlzZWQgaW50byBwb3dlciB3aXRoIG1vZHVsby4KICAgICAqCiAgICAgKiBUaGlzIG9wZXJhdGlvbiBvbmx5IHdvcmtzIG9uIHBvc2l0aXZlIG51bWJlcnMuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICRleHAgVGhlIGV4cG9uZW50LiBNdXN0IGJlIHBvc2l0aXZlIG9yIHplcm8uCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJG1vZCBUaGUgbW9kdWx1cy4gTXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqCiAgICAgKiBAdGhyb3dzIE5lZ2F0aXZlTnVtYmVyRXhjZXB0aW9uIElmIGFueSBvZiB0aGUgb3BlcmFuZHMgaXMgbmVnYXRpdmUuCiAgICAgKiBAdGhyb3dzIERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uIElmIHRoZSBtb2R1bHVzIGlzIHplcm8uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb2RQb3coJGV4cCwgJG1vZCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJGV4cCA9IEJpZ0ludGVnZXI6Om9mKCRleHApOwogICAgICAgICRtb2QgPSBCaWdJbnRlZ2VyOjpvZigkbW9kKTsKCiAgICAgICAgaWYgKCR0aGlzLT5pc05lZ2F0aXZlKCkgfHwgJGV4cC0+aXNOZWdhdGl2ZSgpIHx8ICRtb2QtPmlzTmVnYXRpdmUoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTmVnYXRpdmVOdW1iZXJFeGNlcHRpb24oJ1RoZSBvcGVyYW5kcyBjYW5ub3QgYmUgbmVnYXRpdmUuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG1vZC0+aXNaZXJvKCkpIHsKICAgICAgICAgICAgdGhyb3cgRGl2aXNpb25CeVplcm9FeGNlcHRpb246Om1vZHVsdXNNdXN0Tm90QmVaZXJvKCk7CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gQ2FsY3VsYXRvcjo6Z2V0KCktPm1vZFBvdygkdGhpcy0+dmFsdWUsICRleHAtPnZhbHVlLCAkbW9kLT52YWx1ZSk7CgogICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigkcmVzdWx0KTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yIG9mIHRoaXMgbnVtYmVyIGFuZCB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIFRoZSBHQ0QgaXMgYWx3YXlzIHBvc2l0aXZlLCB1bmxlc3MgYm90aCBvcGVyYW5kcyBhcmUgemVybywgaW4gd2hpY2ggY2FzZSBpdCBpcyB6ZXJvLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgb3BlcmFuZC4gTXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhbiBpbnRlZ2VyIG51bWJlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdjZCgkdGhhdCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdJbnRlZ2VyOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdC0+dmFsdWUgPT09ICcwJyAmJiAkdGhpcy0+dmFsdWVbMF0gIT09ICctJykgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnZhbHVlID09PSAnMCcgJiYgJHRoYXQtPnZhbHVlWzBdICE9PSAnLScpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGF0OwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gQ2FsY3VsYXRvcjo6Z2V0KCktPmdjZCgkdGhpcy0+dmFsdWUsICR0aGF0LT52YWx1ZSk7CgogICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaW50ZWdlciBzcXVhcmUgcm9vdCBudW1iZXIgb2YgdGhpcyBudW1iZXIsIHJvdW5kZWQgZG93bi4KICAgICAqCiAgICAgKiBUaGUgcmVzdWx0IGlzIHRoZSBsYXJnZXN0IHggc3VjaCB0aGF0IHjCsiDiiaQgbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqCiAgICAgKiBAdGhyb3dzIE5lZ2F0aXZlTnVtYmVyRXhjZXB0aW9uIElmIHRoaXMgbnVtYmVyIGlzIG5lZ2F0aXZlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3FydCgpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIGlmICgkdGhpcy0+dmFsdWVbMF0gPT09ICctJykgewogICAgICAgICAgICB0aHJvdyBuZXcgTmVnYXRpdmVOdW1iZXJFeGNlcHRpb24oJ0Nhbm5vdCBjYWxjdWxhdGUgdGhlIHNxdWFyZSByb290IG9mIGEgbmVnYXRpdmUgbnVtYmVyLicpOwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gQ2FsY3VsYXRvcjo6Z2V0KCktPnNxcnQoJHRoaXMtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGlzIG51bWJlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFicygpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aXNOZWdhdGl2ZSgpID8gJHRoaXMtPm5lZ2F0ZWQoKSA6ICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaW52ZXJzZSBvZiB0aGlzIG51bWJlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG5lZ2F0ZWQoKSA6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoQ2FsY3VsYXRvcjo6Z2V0KCktPm5lZygkdGhpcy0+dmFsdWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGludGVnZXIgYml0d2lzZS1hbmQgY29tYmluZWQgd2l0aCBhbm90aGVyIGludGVnZXIuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBhIG5lZ2F0aXZlIEJpZ0ludGVnZXIgaWYgYW5kIG9ubHkgaWYgYm90aCBvcGVyYW5kcyBhcmUgbmVnYXRpdmUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0IFRoZSBvcGVyYW5kLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGFuIGludGVnZXIgbnVtYmVyLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYW5kKCR0aGF0KSA6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0ludGVnZXI6Om9mKCR0aGF0KTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKENhbGN1bGF0b3I6OmdldCgpLT5hbmQoJHRoaXMtPnZhbHVlLCAkdGhhdC0+dmFsdWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGludGVnZXIgYml0d2lzZS1vciBjb21iaW5lZCB3aXRoIGFub3RoZXIgaW50ZWdlci4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmVnYXRpdmUgQmlnSW50ZWdlciBpZiBhbmQgb25seSBpZiBlaXRoZXIgb2YgdGhlIG9wZXJhbmRzIGlzIG5lZ2F0aXZlLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgb3BlcmFuZC4gTXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhbiBpbnRlZ2VyIG51bWJlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG9yKCR0aGF0KSA6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0ludGVnZXI6Om9mKCR0aGF0KTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKENhbGN1bGF0b3I6OmdldCgpLT5vcigkdGhpcy0+dmFsdWUsICR0aGF0LT52YWx1ZSkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaW50ZWdlciBiaXR3aXNlLXhvciBjb21iaW5lZCB3aXRoIGFub3RoZXIgaW50ZWdlci4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmVnYXRpdmUgQmlnSW50ZWdlciBpZiBhbmQgb25seSBpZiBleGFjdGx5IG9uZSBvZiB0aGUgb3BlcmFuZHMgaXMgbmVnYXRpdmUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0IFRoZSBvcGVyYW5kLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGFuIGludGVnZXIgbnVtYmVyLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24geG9yKCR0aGF0KSA6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0ludGVnZXI6Om9mKCR0aGF0KTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKENhbGN1bGF0b3I6OmdldCgpLT54b3IoJHRoaXMtPnZhbHVlLCAkdGhhdC0+dmFsdWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGJpdHdpc2Utbm90IG9mIHRoaXMgQmlnSW50ZWdlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG5vdCgpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bmVnYXRlZCgpLT5taW51cygxKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGludGVnZXIgbGVmdCBzaGlmdGVkIGJ5IGEgZ2l2ZW4gbnVtYmVyIG9mIGJpdHMuCiAgICAgKgogICAgICogQHBhcmFtIGludCAkZGlzdGFuY2UgVGhlIGRpc3RhbmNlIHRvIHNoaWZ0LgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2hpZnRlZExlZnQoaW50ICRkaXN0YW5jZSkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgaWYgKCRkaXN0YW5jZSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGRpc3RhbmNlIDwgMCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNoaWZ0ZWRSaWdodCgtICRkaXN0YW5jZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPm11bHRpcGxpZWRCeShCaWdJbnRlZ2VyOjpvZigyKS0+cG93ZXIoJGRpc3RhbmNlKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBpbnRlZ2VyIHJpZ2h0IHNoaWZ0ZWQgYnkgYSBnaXZlbiBudW1iZXIgb2YgYml0cy4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRkaXN0YW5jZSBUaGUgZGlzdGFuY2UgdG8gc2hpZnQuCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzaGlmdGVkUmlnaHQoaW50ICRkaXN0YW5jZSkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgaWYgKCRkaXN0YW5jZSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGRpc3RhbmNlIDwgMCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNoaWZ0ZWRMZWZ0KC0gJGRpc3RhbmNlKTsKICAgICAgICB9CgogICAgICAgICRvcGVyYW5kID0gQmlnSW50ZWdlcjo6b2YoMiktPnBvd2VyKCRkaXN0YW5jZSk7CgogICAgICAgIGlmICgkdGhpcy0+aXNQb3NpdGl2ZU9yWmVybygpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cXVvdGllbnQoJG9wZXJhbmQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5kaXZpZGVkQnkoJG9wZXJhbmQsIFJvdW5kaW5nTW9kZTo6VVApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJpdHMgaW4gdGhlIG1pbmltYWwgdHdvJ3MtY29tcGxlbWVudCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEJpZ0ludGVnZXIsIGV4Y2x1ZGluZyBhIHNpZ24gYml0LgogICAgICoKICAgICAqIEZvciBwb3NpdGl2ZSBCaWdJbnRlZ2VycywgdGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgb3JkaW5hcnkgYmluYXJ5IHJlcHJlc2VudGF0aW9uLgogICAgICogQ29tcHV0ZXMgKGNlaWwobG9nMih0aGlzIDwgMCA/IC10aGlzIDogdGhpcysxKSkpLgogICAgICoKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRCaXRMZW5ndGgoKSA6IGludAogICAgewogICAgICAgIGlmICgkdGhpcy0+dmFsdWUgPT09ICcwJykgewogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+aXNOZWdhdGl2ZSgpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+YWJzKCktPm1pbnVzKDEpLT5nZXRCaXRMZW5ndGgoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcc3RybGVuKCR0aGlzLT50b0Jhc2UoMikpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIHJpZ2h0bW9zdCAobG93ZXN0LW9yZGVyKSBvbmUgYml0IGluIHRoaXMgQmlnSW50ZWdlci4KICAgICAqCiAgICAgKiBSZXR1cm5zIC0xIGlmIHRoaXMgQmlnSW50ZWdlciBjb250YWlucyBubyBvbmUgYml0cy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TG93ZXN0U2V0Qml0KCkgOiBpbnQKICAgIHsKICAgICAgICAkbiA9ICR0aGlzOwogICAgICAgICRiaXRMZW5ndGggPSAkdGhpcy0+Z2V0Qml0TGVuZ3RoKCk7CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8PSAkYml0TGVuZ3RoOyAkaSsrKSB7CiAgICAgICAgICAgIGlmICgkbi0+aXNPZGQoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbiA9ICRuLT5zaGlmdGVkUmlnaHQoMSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBudW1iZXIgaXMgZXZlbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzRXZlbigpIDogYm9vbAogICAgewogICAgICAgIHJldHVybiBcaW5fYXJyYXkoJHRoaXMtPnZhbHVlWy0xXSwgWycwJywgJzInLCAnNCcsICc2JywgJzgnXSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBudW1iZXIgaXMgb2RkLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNPZGQoKSA6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gXGluX2FycmF5KCR0aGlzLT52YWx1ZVstMV0sIFsnMScsICczJywgJzUnLCAnNycsICc5J10sIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZSBkZXNpZ25hdGVkIGJpdCBpcyBzZXQuCiAgICAgKgogICAgICogQ29tcHV0ZXMgKCh0aGlzICYgKDE8PG4pKSAhPSAwKS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRuIFRoZSBiaXQgdG8gdGVzdCwgMC1iYXNlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgdGhlIGJpdCB0byB0ZXN0IGlzIG5lZ2F0aXZlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEJpdChpbnQgJG4pIDogYm9vbAogICAgewogICAgICAgIGlmICgkbiA8IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBiaXQgdG8gdGVzdCBjYW5ub3QgYmUgbmVnYXRpdmUuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnNoaWZ0ZWRSaWdodCgkbiktPmlzT2RkKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wYXJlVG8oJHRoYXQpIDogaW50CiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdOdW1iZXI6Om9mKCR0aGF0KTsKCiAgICAgICAgaWYgKCR0aGF0IGluc3RhbmNlb2YgQmlnSW50ZWdlcikgewogICAgICAgICAgICByZXR1cm4gQ2FsY3VsYXRvcjo6Z2V0KCktPmNtcCgkdGhpcy0+dmFsdWUsICR0aGF0LT52YWx1ZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gLSAkdGhhdC0+Y29tcGFyZVRvKCR0aGlzKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpZ24oKSA6IGludAogICAgewogICAgICAgIHJldHVybiAoJHRoaXMtPnZhbHVlID09PSAnMCcpID8gMCA6ICgoJHRoaXMtPnZhbHVlWzBdID09PSAnLScpID8gLTEgOiAxKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQmlnSW50ZWdlcigpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQmlnRGVjaW1hbCgpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgIHJldHVybiBCaWdEZWNpbWFsOjpjcmVhdGUoJHRoaXMtPnZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQmlnUmF0aW9uYWwoKSA6IEJpZ1JhdGlvbmFsCiAgICB7CiAgICAgICAgcmV0dXJuIEJpZ1JhdGlvbmFsOjpjcmVhdGUoJHRoaXMsIEJpZ0ludGVnZXI6Om9uZSgpLCBmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b1NjYWxlKGludCAkc2NhbGUsIGludCAkcm91bmRpbmdNb2RlID0gUm91bmRpbmdNb2RlOjpVTk5FQ0VTU0FSWSkgOiBCaWdEZWNpbWFsCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50b0JpZ0RlY2ltYWwoKS0+dG9TY2FsZSgkc2NhbGUsICRyb3VuZGluZ01vZGUpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9JbnQoKSA6IGludAogICAgewogICAgICAgICRpbnRWYWx1ZSA9IChpbnQpICR0aGlzLT52YWx1ZTsKCiAgICAgICAgaWYgKCR0aGlzLT52YWx1ZSAhPT0gKHN0cmluZykgJGludFZhbHVlKSB7CiAgICAgICAgICAgIHRocm93IEludGVnZXJPdmVyZmxvd0V4Y2VwdGlvbjo6dG9JbnRPdmVyZmxvdygkdGhpcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGludFZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9GbG9hdCgpIDogZmxvYXQKICAgIHsKICAgICAgICByZXR1cm4gKGZsb2F0KSAkdGhpcy0+dmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbnVtYmVyIGluIHRoZSBnaXZlbiBiYXNlLgogICAgICoKICAgICAqIFRoZSBvdXRwdXQgd2lsbCBhbHdheXMgYmUgbG93ZXJjYXNlIGZvciBiYXNlcyBncmVhdGVyIHRoYW4gMTAuCiAgICAgKgogICAgICogQHBhcmFtIGludCAkYmFzZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBiYXNlIGlzIG91dCBvZiByYW5nZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQmFzZShpbnQgJGJhc2UpIDogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRiYXNlID09PSAxMCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRiYXNlIDwgMiB8fCAkYmFzZSA+IDM2KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKFxzcHJpbnRmKCdCYXNlICVkIGlzIG91dCBvZiByYW5nZSBbMiwgMzZdJywgJGJhc2UpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBDYWxjdWxhdG9yOjpnZXQoKS0+dG9CYXNlKCR0aGlzLT52YWx1ZSwgJGJhc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG51bWJlciBpbiBhbiBhcmJpdHJhcnkgYmFzZSB3aXRoIGEgY3VzdG9tIGFscGhhYmV0LgogICAgICoKICAgICAqIEJlY2F1c2UgdGhpcyBtZXRob2QgYWNjZXB0cyBhbiBhbHBoYWJldCB3aXRoIGFueSBjaGFyYWN0ZXIsIGluY2x1ZGluZyBkYXNoLCBpdCBkb2VzIG5vdCBoYW5kbGUgbmVnYXRpdmUgbnVtYmVyczsKICAgICAqIGEgTmVnYXRpdmVOdW1iZXJFeGNlcHRpb24gd2lsbCBiZSB0aHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIGNhbGwgdGhpcyBtZXRob2Qgb24gYSBuZWdhdGl2ZSBudW1iZXIuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYWxwaGFiZXQgVGhlIGFscGhhYmV0LCBmb3IgZXhhbXBsZSAnMDEnIGZvciBiYXNlIDIsIG9yICcwMTIzNDU2NycgZm9yIGJhc2UgOC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEB0aHJvd3MgTmVnYXRpdmVOdW1iZXJFeGNlcHRpb24gICBJZiB0aGlzIG51bWJlciBpcyBuZWdhdGl2ZS4KICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgZ2l2ZW4gYWxwaGFiZXQgZG9lcyBub3QgY29udGFpbiBhdCBsZWFzdCAyIGNoYXJzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9BcmJpdHJhcnlCYXNlKHN0cmluZyAkYWxwaGFiZXQpIDogc3RyaW5nCiAgICB7CiAgICAgICAgJGJhc2UgPSBcc3RybGVuKCRhbHBoYWJldCk7CgogICAgICAgIGlmICgkYmFzZSA8IDIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBhbHBoYWJldCBtdXN0IGNvbnRhaW4gYXQgbGVhc3QgMiBjaGFycy4nKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+dmFsdWVbMF0gPT09ICctJykgewogICAgICAgICAgICB0aHJvdyBuZXcgTmVnYXRpdmVOdW1iZXJFeGNlcHRpb24oX19GVU5DVElPTl9fIC4gJygpIGRvZXMgbm90IHN1cHBvcnQgbmVnYXRpdmUgbnVtYmVycy4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBDYWxjdWxhdG9yOjpnZXQoKS0+dG9BcmJpdHJhcnlCYXNlKCR0aGlzLT52YWx1ZSwgJGFscGhhYmV0LCAkYmFzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIG9mIGJ5dGVzIGNvbnRhaW5pbmcgdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEJpZ0ludGVnZXIuCiAgICAgKgogICAgICogVGhlIHN0cmluZyBpcyBpbiBiaWctZW5kaWFuIGJ5dGUtb3JkZXI6IHRoZSBtb3N0IHNpZ25pZmljYW50IGJ5dGUgaXMgaW4gdGhlIHplcm90aCBlbGVtZW50LgogICAgICoKICAgICAqIElmIGAkc2lnbmVkYCBpcyB0cnVlLCB0aGUgb3V0cHV0IHdpbGwgYmUgaW4gdHdvJ3MtY29tcGxlbWVudCByZXByZXNlbnRhdGlvbiwgYW5kIGEgc2lnbiBiaXQgd2lsbCBiZSBwcmVwZW5kZWQgdG8KICAgICAqIHRoZSBvdXRwdXQuIElmIGAkc2lnbmVkYCBpcyBmYWxzZSwgbm8gc2lnbiBiaXQgd2lsbCBiZSBwcmVwZW5kZWQsIGFuZCB0aGlzIG1ldGhvZCB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUKICAgICAqIG51bWJlciBpcyBuZWdhdGl2ZS4KICAgICAqCiAgICAgKiBUaGUgc3RyaW5nIHdpbGwgY29udGFpbiB0aGUgbWluaW11bSBudW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQgdG8gcmVwcmVzZW50IHRoaXMgQmlnSW50ZWdlciwgaW5jbHVkaW5nIGEgc2lnbiBiaXQKICAgICAqIGlmIGAkc2lnbmVkYCBpcyB0cnVlLgogICAgICoKICAgICAqIFRoaXMgcmVwcmVzZW50YXRpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBgZnJvbUJ5dGVzKClgIGZhY3RvcnkgbWV0aG9kLCBhcyBsb25nIGFzIHRoZSBgJHNpZ25lZGAgZmxhZ3MgbWF0Y2guCiAgICAgKgogICAgICogQHBhcmFtIGJvb2wgJHNpZ25lZCBXaGV0aGVyIHRvIG91dHB1dCBhIHNpZ25lZCBudW1iZXIgaW4gdHdvJ3MtY29tcGxlbWVudCByZXByZXNlbnRhdGlvbiB3aXRoIGEgbGVhZGluZyBzaWduIGJpdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEB0aHJvd3MgTmVnYXRpdmVOdW1iZXJFeGNlcHRpb24gSWYgJHNpZ25lZCBpcyBmYWxzZSwgYW5kIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0J5dGVzKGJvb2wgJHNpZ25lZCA9IHRydWUpIDogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCEgJHNpZ25lZCAmJiAkdGhpcy0+aXNOZWdhdGl2ZSgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBOZWdhdGl2ZU51bWJlckV4Y2VwdGlvbignQ2Fubm90IGNvbnZlcnQgYSBuZWdhdGl2ZSBudW1iZXIgdG8gYSBieXRlIHN0cmluZyB3aGVuICRzaWduZWQgaXMgZmFsc2UuJyk7CiAgICAgICAgfQoKICAgICAgICAkaGV4ID0gJHRoaXMtPmFicygpLT50b0Jhc2UoMTYpOwoKICAgICAgICBpZiAoXHN0cmxlbigkaGV4KSAlIDIgIT09IDApIHsKICAgICAgICAgICAgJGhleCA9ICcwJyAuICRoZXg7CiAgICAgICAgfQoKICAgICAgICAkYmFzZUhleExlbmd0aCA9IFxzdHJsZW4oJGhleCk7CgogICAgICAgIGlmICgkc2lnbmVkKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+aXNOZWdhdGl2ZSgpKSB7CiAgICAgICAgICAgICAgICAkYmluID0gXGhleDJiaW4oJGhleCk7CiAgICAgICAgICAgICAgICBhc3NlcnQoJGJpbiAhPT0gZmFsc2UpOwoKICAgICAgICAgICAgICAgICRoZXggPSBcYmluMmhleCh+JGJpbik7CiAgICAgICAgICAgICAgICAkaGV4ID0gc2VsZjo6ZnJvbUJhc2UoJGhleCwgMTYpLT5wbHVzKDEpLT50b0Jhc2UoMTYpOwoKICAgICAgICAgICAgICAgICRoZXhMZW5ndGggPSBcc3RybGVuKCRoZXgpOwoKICAgICAgICAgICAgICAgIGlmICgkaGV4TGVuZ3RoIDwgJGJhc2VIZXhMZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAkaGV4ID0gXHN0cl9yZXBlYXQoJzAnLCAkYmFzZUhleExlbmd0aCAtICRoZXhMZW5ndGgpIC4gJGhleDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJGhleFswXSA8ICc4JykgewogICAgICAgICAgICAgICAgICAgICRoZXggPSAnRkYnIC4gJGhleDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICgkaGV4WzBdID49ICc4JykgewogICAgICAgICAgICAgICAgICAgICRoZXggPSAnMDAnIC4gJGhleDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFxoZXgyYmluKCRoZXgpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIGlzIHJlcXVpcmVkIGZvciBzZXJpYWxpemluZyB0aGUgb2JqZWN0IGFuZCBTSE9VTEQgTk9UIGJlIGFjY2Vzc2VkIGRpcmVjdGx5LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl7dmFsdWU6IHN0cmluZ30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fc2VyaWFsaXplKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIFsndmFsdWUnID0+ICR0aGlzLT52YWx1ZV07CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBpcyBvbmx5IGhlcmUgdG8gYWxsb3cgdW5zZXJpYWxpemluZyB0aGUgb2JqZWN0IGFuZCBjYW5ub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHkuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKiBAcHNhbG0tc3VwcHJlc3MgUmVkdW5kYW50UHJvcGVydHlJbml0aWFsaXphdGlvbkNoZWNrCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5e3ZhbHVlOiBzdHJpbmd9ICRkYXRhCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKgogICAgICogQHRocm93cyBcTG9naWNFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fdW5zZXJpYWxpemUoYXJyYXkgJGRhdGEpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT52YWx1ZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignX191bnNlcmlhbGl6ZSgpIGlzIGFuIGludGVybmFsIGZ1bmN0aW9uLCBpdCBtdXN0IG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkuJyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkZGF0YVsndmFsdWUnXTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIGlzIHJlcXVpcmVkIGJ5IGludGVyZmFjZSBTZXJpYWxpemFibGUgYW5kIFNIT1VMRCBOT1QgYmUgYWNjZXNzZWQgZGlyZWN0bHkuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlcmlhbGl6ZSgpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIGlzIG9ubHkgaGVyZSB0byBpbXBsZW1lbnQgaW50ZXJmYWNlIFNlcmlhbGl6YWJsZSBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGRpcmVjdGx5LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICogQHBzYWxtLXN1cHByZXNzIFJlZHVuZGFudFByb3BlcnR5SW5pdGlhbGl6YXRpb25DaGVjawogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKgogICAgICogQHRocm93cyBcTG9naWNFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuc2VyaWFsaXplKCR2YWx1ZSkgOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT52YWx1ZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigndW5zZXJpYWxpemUoKSBpcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgaXQgbXVzdCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LicpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/BigNumber.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGg7Cgp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cRGl2aXNpb25CeVplcm9FeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXEV4Y2VwdGlvblxNYXRoRXhjZXB0aW9uOwp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cTnVtYmVyRm9ybWF0RXhjZXB0aW9uOwp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cUm91bmRpbmdOZWNlc3NhcnlFeGNlcHRpb247CgovKioKICogQ29tbW9uIGludGVyZmFjZSBmb3IgYXJiaXRyYXJ5LXByZWNpc2lvbiByYXRpb25hbCBudW1iZXJzLgogKgogKiBAcHNhbG0taW1tdXRhYmxlCiAqLwphYnN0cmFjdCBjbGFzcyBCaWdOdW1iZXIgaW1wbGVtZW50cyBcU2VyaWFsaXphYmxlLCBcSnNvblNlcmlhbGl6YWJsZQp7CiAgICAvKioKICAgICAqIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byBwYXJzZSBpbnRlZ2VyLCBkZWNpbWFsIGFuZCByYXRpb25hbCBudW1iZXJzLgogICAgICovCiAgICBwcml2YXRlIGNvbnN0IFBBUlNFX1JFR0VYUCA9CiAgICAgICAgJy9eJyAuCiAgICAgICAgICAgICcoPzxzaWduPltcLVwrXSk/JyAuCiAgICAgICAgICAgICcoPzonIC4KICAgICAgICAgICAgICAgICcoPzonIC4KICAgICAgICAgICAgICAgICAgICAnKD88aW50ZWdyYWw+WzAtOV0rKT8nIC4KICAgICAgICAgICAgICAgICAgICAnKD88cG9pbnQ+XC4pPycgLgogICAgICAgICAgICAgICAgICAgICcoPzxmcmFjdGlvbmFsPlswLTldKyk/JyAuCiAgICAgICAgICAgICAgICAgICAgJyg/OltlRV0oPzxleHBvbmVudD5bXC1cK10/WzAtOV0rKSk/JyAuCiAgICAgICAgICAgICAgICAnKXwoPzonIC4KICAgICAgICAgICAgICAgICAgICAnKD88bnVtZXJhdG9yPlswLTldKyknIC4KICAgICAgICAgICAgICAgICAgICAnXC8/JyAuCiAgICAgICAgICAgICAgICAgICAgJyg/PGRlbm9taW5hdG9yPlswLTldKyknIC4KICAgICAgICAgICAgICAgICcpJyAuCiAgICAgICAgICAgICcpJyAuCiAgICAgICAgJyQvJzsKCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBCaWdOdW1iZXIgb2YgdGhlIGdpdmVuIHZhbHVlLgogICAgICoKICAgICAqIFRoZSBjb25jcmV0ZSByZXR1cm4gdHlwZSBpcyBkZXBlbmRlbnQgb24gdGhlIGdpdmVuIHZhbHVlLCB3aXRoIHRoZSBmb2xsb3dpbmcgcnVsZXM6CiAgICAgKgogICAgICogLSBCaWdOdW1iZXIgaW5zdGFuY2VzIGFyZSByZXR1cm5lZCBhcyBpcwogICAgICogLSBpbnRlZ2VyIG51bWJlcnMgYXJlIHJldHVybmVkIGFzIEJpZ0ludGVnZXIKICAgICAqIC0gZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgc3RyaW5nIHRoZW4gcGFyc2VkIGFzIHN1Y2gKICAgICAqIC0gc3RyaW5ncyBjb250YWluaW5nIGEgYC9gIGNoYXJhY3RlciBhcmUgcmV0dXJuZWQgYXMgQmlnUmF0aW9uYWwKICAgICAqIC0gc3RyaW5ncyBjb250YWluaW5nIGEgYC5gIGNoYXJhY3RlciBvciB1c2luZyBhbiBleHBvbmVudGlhbCBub3RhdGlvbiBhcmUgcmV0dXJuZWQgYXMgQmlnRGVjaW1hbAogICAgICogLSBzdHJpbmdzIGNvbnRhaW5pbmcgb25seSBkaWdpdHMgd2l0aCBhbiBvcHRpb25hbCBsZWFkaW5nIGArYCBvciBgLWAgc2lnbiBhcmUgcmV0dXJuZWQgYXMgQmlnSW50ZWdlcgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ051bWJlcgogICAgICoKICAgICAqIEB0aHJvd3MgTnVtYmVyRm9ybWF0RXhjZXB0aW9uICAgSWYgdGhlIGZvcm1hdCBvZiB0aGUgbnVtYmVyIGlzIG5vdCB2YWxpZC4KICAgICAqIEB0aHJvd3MgRGl2aXNpb25CeVplcm9FeGNlcHRpb24gSWYgdGhlIHZhbHVlIHJlcHJlc2VudHMgYSByYXRpb25hbCBudW1iZXIgd2l0aCBhIGRlbm9taW5hdG9yIG9mIHplcm8uCiAgICAgKgogICAgICogQHBzYWxtLXB1cmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvZigkdmFsdWUpIDogQmlnTnVtYmVyCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIEJpZ051bWJlcikgewogICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxpc19pbnQoJHZhbHVlKSkgewogICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoKHN0cmluZykgJHZhbHVlKTsKICAgICAgICB9CgogICAgICAgIC8qKiBAcHNhbG0tc3VwcHJlc3MgUmVkdW5kYW50Q2FzdEdpdmVuRG9jYmxvY2tUeXBlIFdlIGNhbm5vdCB0cnVzdCB0aGUgdW50eXBlZCAkdmFsdWUgaGVyZSEgKi8KICAgICAgICAkdmFsdWUgPSBcaXNfZmxvYXQoJHZhbHVlKSA/IHNlbGY6OmZsb2F0VG9TdHJpbmcoJHZhbHVlKSA6IChzdHJpbmcpICR2YWx1ZTsKCiAgICAgICAgJHRocm93ID0gc3RhdGljIGZ1bmN0aW9uKCkgdXNlICgkdmFsdWUpIDogdm9pZCB7CiAgICAgICAgICAgIHRocm93IG5ldyBOdW1iZXJGb3JtYXRFeGNlcHRpb24oXHNwcmludGYoCiAgICAgICAgICAgICAgICAnVGhlIGdpdmVuIHZhbHVlICIlcyIgZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsaWQgbnVtYmVyLicsCiAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAgICAgICAgKSk7CiAgICAgICAgfTsKCiAgICAgICAgaWYgKFxwcmVnX21hdGNoKHNlbGY6OlBBUlNFX1JFR0VYUCwgJHZhbHVlLCAkbWF0Y2hlcykgIT09IDEpIHsKICAgICAgICAgICAgJHRocm93KCk7CiAgICAgICAgfQoKICAgICAgICAkZ2V0TWF0Y2ggPSBzdGF0aWMgZnVuY3Rpb24oc3RyaW5nICR2YWx1ZSkgdXNlICgkbWF0Y2hlcykgOiA/c3RyaW5nIHsKICAgICAgICAgICAgcmV0dXJuIGlzc2V0KCRtYXRjaGVzWyR2YWx1ZV0pICYmICRtYXRjaGVzWyR2YWx1ZV0gIT09ICcnID8gJG1hdGNoZXNbJHZhbHVlXSA6IG51bGw7CiAgICAgICAgfTsKCiAgICAgICAgJHNpZ24gICAgICAgID0gJGdldE1hdGNoKCdzaWduJyk7CiAgICAgICAgJG51bWVyYXRvciAgID0gJGdldE1hdGNoKCdudW1lcmF0b3InKTsKICAgICAgICAkZGVub21pbmF0b3IgPSAkZ2V0TWF0Y2goJ2Rlbm9taW5hdG9yJyk7CgogICAgICAgIGlmICgkbnVtZXJhdG9yICE9PSBudWxsKSB7CiAgICAgICAgICAgIGFzc2VydCgkZGVub21pbmF0b3IgIT09IG51bGwpOwoKICAgICAgICAgICAgaWYgKCRzaWduICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkbnVtZXJhdG9yID0gJHNpZ24gLiAkbnVtZXJhdG9yOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbnVtZXJhdG9yICAgPSBzZWxmOjpjbGVhblVwKCRudW1lcmF0b3IpOwogICAgICAgICAgICAkZGVub21pbmF0b3IgPSBzZWxmOjpjbGVhblVwKCRkZW5vbWluYXRvcik7CgogICAgICAgICAgICBpZiAoJGRlbm9taW5hdG9yID09PSAnMCcpIHsKICAgICAgICAgICAgICAgIHRocm93IERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uOjpkZW5vbWluYXRvck11c3ROb3RCZVplcm8oKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdSYXRpb25hbCgKICAgICAgICAgICAgICAgIG5ldyBCaWdJbnRlZ2VyKCRudW1lcmF0b3IpLAogICAgICAgICAgICAgICAgbmV3IEJpZ0ludGVnZXIoJGRlbm9taW5hdG9yKSwKICAgICAgICAgICAgICAgIGZhbHNlCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkcG9pbnQgICAgICA9ICRnZXRNYXRjaCgncG9pbnQnKTsKICAgICAgICAkaW50ZWdyYWwgICA9ICRnZXRNYXRjaCgnaW50ZWdyYWwnKTsKICAgICAgICAkZnJhY3Rpb25hbCA9ICRnZXRNYXRjaCgnZnJhY3Rpb25hbCcpOwogICAgICAgICRleHBvbmVudCAgID0gJGdldE1hdGNoKCdleHBvbmVudCcpOwoKICAgICAgICBpZiAoJGludGVncmFsID09PSBudWxsICYmICRmcmFjdGlvbmFsID09PSBudWxsKSB7CiAgICAgICAgICAgICR0aHJvdygpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRpbnRlZ3JhbCA9PT0gbnVsbCkgewogICAgICAgICAgICAkaW50ZWdyYWwgPSAnMCc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHBvaW50ICE9PSBudWxsIHx8ICRleHBvbmVudCAhPT0gbnVsbCkgewogICAgICAgICAgICAkZnJhY3Rpb25hbCA9ICgkZnJhY3Rpb25hbCA/PyAnJyk7CiAgICAgICAgICAgICRleHBvbmVudCA9ICgkZXhwb25lbnQgIT09IG51bGwpID8gKGludCkgJGV4cG9uZW50IDogMDsKCiAgICAgICAgICAgIGlmICgkZXhwb25lbnQgPT09IFBIUF9JTlRfTUlOIHx8ICRleHBvbmVudCA9PT0gUEhQX0lOVF9NQVgpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBOdW1iZXJGb3JtYXRFeGNlcHRpb24oJ0V4cG9uZW50IHRvbyBsYXJnZS4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHVuc2NhbGVkVmFsdWUgPSBzZWxmOjpjbGVhblVwKCgkc2lnbiA/PyAnJykuICRpbnRlZ3JhbCAuICRmcmFjdGlvbmFsKTsKCiAgICAgICAgICAgICRzY2FsZSA9IFxzdHJsZW4oJGZyYWN0aW9uYWwpIC0gJGV4cG9uZW50OwoKICAgICAgICAgICAgaWYgKCRzY2FsZSA8IDApIHsKICAgICAgICAgICAgICAgIGlmICgkdW5zY2FsZWRWYWx1ZSAhPT0gJzAnKSB7CiAgICAgICAgICAgICAgICAgICAgJHVuc2NhbGVkVmFsdWUgLj0gXHN0cl9yZXBlYXQoJzAnLCAtICRzY2FsZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkc2NhbGUgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoJHVuc2NhbGVkVmFsdWUsICRzY2FsZSk7CiAgICAgICAgfQoKICAgICAgICAkaW50ZWdyYWwgPSBzZWxmOjpjbGVhblVwKCgkc2lnbiA/PyAnJykgLiAkaW50ZWdyYWwpOwoKICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoJGludGVncmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNhZmVseSBjb252ZXJ0cyBmbG9hdCB0byBzdHJpbmcsIGF2b2lkaW5nIGxvY2FsZS1kZXBlbmRlbnQgaXNzdWVzLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcHVsbC8yMAogICAgICoKICAgICAqIEBwYXJhbSBmbG9hdCAkZmxvYXQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKiBAcHNhbG0tc3VwcHJlc3MgSW1wdXJlRnVuY3Rpb25DYWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGZsb2F0VG9TdHJpbmcoZmxvYXQgJGZsb2F0KSA6IHN0cmluZwogICAgewogICAgICAgICRjdXJyZW50TG9jYWxlID0gXHNldGxvY2FsZShMQ19OVU1FUklDLCAnMCcpOwogICAgICAgIFxzZXRsb2NhbGUoTENfTlVNRVJJQywgJ0MnKTsKCiAgICAgICAgJHJlc3VsdCA9IChzdHJpbmcpICRmbG9hdDsKCiAgICAgICAgXHNldGxvY2FsZShMQ19OVU1FUklDLCAkY3VycmVudExvY2FsZSk7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogUHJveHkgbWV0aG9kIHRvIGFjY2VzcyBwcm90ZWN0ZWQgY29uc3RydWN0b3JzIGZyb20gc2libGluZyBjbGFzc2VzLgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAuLi4kYXJncyBUaGUgYXJndW1lbnRzIHRvIHRoZSBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKiBAcHNhbG0tc3VwcHJlc3MgVG9vTWFueUFyZ3VtZW50cwogICAgICogQHBzYWxtLXN1cHByZXNzIFVuc2FmZUluc3RhbnRpYXRpb24KICAgICAqLwogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGUoLi4uICRhcmdzKSA6IEJpZ051bWJlcgogICAgewogICAgICAgIHJldHVybiBuZXcgc3RhdGljKC4uLiAkYXJncyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBtaW5pbXVtIG9mIHRoZSBnaXZlbiB2YWx1ZXMuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nIC4uLiR2YWx1ZXMgVGhlIG51bWJlcnMgdG8gY29tcGFyZS4gQWxsIHRoZSBudW1iZXJzIG5lZWQgdG8gYmUgY29udmVydGlibGUKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcyB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgb24uCiAgICAgKgogICAgICogQHJldHVybiBzdGF0aWMgVGhlIG1pbmltdW0gdmFsdWUuCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIG5vIHZhbHVlcyBhcmUgZ2l2ZW4uCiAgICAgKiBAdGhyb3dzIE1hdGhFeGNlcHRpb24gICAgICAgICAgICAgSWYgYW4gYXJndW1lbnQgaXMgbm90IHZhbGlkLgogICAgICoKICAgICAqIEBwc2FsbS1zdXBwcmVzcyBMZXNzU3BlY2lmaWNSZXR1cm5TdGF0ZW1lbnQKICAgICAqIEBwc2FsbS1zdXBwcmVzcyBNb3JlU3BlY2lmaWNSZXR1cm5UeXBlCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1pbiguLi4kdmFsdWVzKSA6IEJpZ051bWJlcgogICAgewogICAgICAgICRtaW4gPSBudWxsOwoKICAgICAgICBmb3JlYWNoICgkdmFsdWVzIGFzICR2YWx1ZSkgewogICAgICAgICAgICAkdmFsdWUgPSBzdGF0aWM6Om9mKCR2YWx1ZSk7CgogICAgICAgICAgICBpZiAoJG1pbiA9PT0gbnVsbCB8fCAkdmFsdWUtPmlzTGVzc1RoYW4oJG1pbikpIHsKICAgICAgICAgICAgICAgICRtaW4gPSAkdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkbWluID09PSBudWxsKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKF9fTUVUSE9EX18gLiAnKCkgZXhwZWN0cyBhdCBsZWFzdCBvbmUgdmFsdWUuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG1pbjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG1heGltdW0gb2YgdGhlIGdpdmVuIHZhbHVlcy4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgLi4uJHZhbHVlcyBUaGUgbnVtYmVycyB0byBjb21wYXJlLiBBbGwgdGhlIG51bWJlcnMgbmVlZCB0byBiZSBjb252ZXJ0aWJsZQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0YXRpYyBUaGUgbWF4aW11bSB2YWx1ZS4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgbm8gdmFsdWVzIGFyZSBnaXZlbi4KICAgICAqIEB0aHJvd3MgTWF0aEV4Y2VwdGlvbiAgICAgICAgICAgICBJZiBhbiBhcmd1bWVudCBpcyBub3QgdmFsaWQuCiAgICAgKgogICAgICogQHBzYWxtLXN1cHByZXNzIExlc3NTcGVjaWZpY1JldHVyblN0YXRlbWVudAogICAgICogQHBzYWxtLXN1cHByZXNzIE1vcmVTcGVjaWZpY1JldHVyblR5cGUKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWF4KC4uLiR2YWx1ZXMpIDogQmlnTnVtYmVyCiAgICB7CiAgICAgICAgJG1heCA9IG51bGw7CgogICAgICAgIGZvcmVhY2ggKCR2YWx1ZXMgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IHN0YXRpYzo6b2YoJHZhbHVlKTsKCiAgICAgICAgICAgIGlmICgkbWF4ID09PSBudWxsIHx8ICR2YWx1ZS0+aXNHcmVhdGVyVGhhbigkbWF4KSkgewogICAgICAgICAgICAgICAgJG1heCA9ICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRtYXggPT09IG51bGwpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oX19NRVRIT0RfXyAuICcoKSBleHBlY3RzIGF0IGxlYXN0IG9uZSB2YWx1ZS4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbWF4OwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc3VtIG9mIHRoZSBnaXZlbiB2YWx1ZXMuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nIC4uLiR2YWx1ZXMgVGhlIG51bWJlcnMgdG8gYWRkLiBBbGwgdGhlIG51bWJlcnMgbmVlZCB0byBiZSBjb252ZXJ0aWJsZQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0YXRpYyBUaGUgc3VtLgogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiBubyB2YWx1ZXMgYXJlIGdpdmVuLgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uICAgICAgICAgICAgIElmIGFuIGFyZ3VtZW50IGlzIG5vdCB2YWxpZC4KICAgICAqCiAgICAgKiBAcHNhbG0tc3VwcHJlc3MgTGVzc1NwZWNpZmljUmV0dXJuU3RhdGVtZW50CiAgICAgKiBAcHNhbG0tc3VwcHJlc3MgTW9yZVNwZWNpZmljUmV0dXJuVHlwZQogICAgICogQHBzYWxtLXB1cmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdW0oLi4uJHZhbHVlcykgOiBCaWdOdW1iZXIKICAgIHsKICAgICAgICAvKiogQHZhciBCaWdOdW1iZXJ8bnVsbCAkc3VtICovCiAgICAgICAgJHN1bSA9IG51bGw7CgogICAgICAgIGZvcmVhY2ggKCR2YWx1ZXMgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IHN0YXRpYzo6b2YoJHZhbHVlKTsKCiAgICAgICAgICAgICRzdW0gPSAkc3VtID09PSBudWxsID8gJHZhbHVlIDogc2VsZjo6YWRkKCRzdW0sICR2YWx1ZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHN1bSA9PT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihfX01FVEhPRF9fIC4gJygpIGV4cGVjdHMgYXQgbGVhc3Qgb25lIHZhbHVlLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzdW07CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGRzIHR3byBCaWdOdW1iZXIgaW5zdGFuY2VzIGluIHRoZSBjb3JyZWN0IG9yZGVyIHRvIGF2b2lkIGEgUm91bmRpbmdOZWNlc3NhcnlFeGNlcHRpb24uCiAgICAgKgogICAgICogQHRvZG8gVGhpcyBjb3VsZCBiZSBiZXR0ZXIgcmVzb2x2ZWQgYnkgY3JlYXRpbmcgYW4gYWJzdHJhY3QgcHJvdGVjdGVkIG1ldGhvZCBpbiBCaWdOdW1iZXIsIGFuZCBsZWF2aW5nIHRvCiAgICAgKiAgICAgICBjb25jcmV0ZSBjbGFzc2VzIHRoZSByZXNwb25zaWJpbGl0eSB0byBwZXJmb3JtIHRoZSBhZGRpdGlvbiB0aGVtc2VsdmVzIG9yIGRlbGVnYXRlIGl0IHRvIHRoZSBnaXZlbiBudW1iZXIsCiAgICAgKiAgICAgICBkZXBlbmRpbmcgb24gdGhlaXIgYWJpbGl0eSB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24uIFRoaXMgd2lsbCBhbHNvIHJlcXVpcmUgYSB2ZXJzaW9uIGJ1bXAgYmVjYXVzZSB3ZSdyZQogICAgICogICAgICAgcG90ZW50aWFsbHkgYnJlYWtpbmcgY3VzdG9tIEJpZ051bWJlciBpbXBsZW1lbnRhdGlvbnMgKGlmIGFueS4uLikKICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyICRhCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyICRiCiAgICAgKgogICAgICogQHJldHVybiBCaWdOdW1iZXIKICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBhZGQoQmlnTnVtYmVyICRhLCBCaWdOdW1iZXIgJGIpIDogQmlnTnVtYmVyCiAgICB7CiAgICAgICAgaWYgKCRhIGluc3RhbmNlb2YgQmlnUmF0aW9uYWwpIHsKICAgICAgICAgICAgcmV0dXJuICRhLT5wbHVzKCRiKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYiBpbnN0YW5jZW9mIEJpZ1JhdGlvbmFsKSB7CiAgICAgICAgICAgIHJldHVybiAkYi0+cGx1cygkYSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGEgaW5zdGFuY2VvZiBCaWdEZWNpbWFsKSB7CiAgICAgICAgICAgIHJldHVybiAkYS0+cGx1cygkYik7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGIgaW5zdGFuY2VvZiBCaWdEZWNpbWFsKSB7CiAgICAgICAgICAgIHJldHVybiAkYi0+cGx1cygkYSk7CiAgICAgICAgfQoKICAgICAgICAvKiogQHZhciBCaWdJbnRlZ2VyICRhICovCgogICAgICAgIHJldHVybiAkYS0+cGx1cygkYik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZW1vdmVzIG9wdGlvbmFsIGxlYWRpbmcgemVyb3MgYW5kICsgc2lnbiBmcm9tIHRoZSBnaXZlbiBudW1iZXIuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbnVtYmVyIFRoZSBudW1iZXIsIHZhbGlkYXRlZCBhcyBhIG5vbi1lbXB0eSBzdHJpbmcgb2YgZGlnaXRzIHdpdGggb3B0aW9uYWwgbGVhZGluZyBzaWduLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKgogICAgICogQHBzYWxtLXB1cmUKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY2xlYW5VcChzdHJpbmcgJG51bWJlcikgOiBzdHJpbmcKICAgIHsKICAgICAgICAkZmlyc3RDaGFyID0gJG51bWJlclswXTsKCiAgICAgICAgaWYgKCRmaXJzdENoYXIgPT09ICcrJyB8fCAkZmlyc3RDaGFyID09PSAnLScpIHsKICAgICAgICAgICAgJG51bWJlciA9IFxzdWJzdHIoJG51bWJlciwgMSk7CiAgICAgICAgfQoKICAgICAgICAkbnVtYmVyID0gXGx0cmltKCRudW1iZXIsICcwJyk7CgogICAgICAgIGlmICgkbnVtYmVyID09PSAnJykgewogICAgICAgICAgICByZXR1cm4gJzAnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRmaXJzdENoYXIgPT09ICctJykgewogICAgICAgICAgICByZXR1cm4gJy0nIC4gJG51bWJlcjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbnVtYmVyOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2tzIGlmIHRoaXMgbnVtYmVyIGlzIGVxdWFsIHRvIHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0VxdWFsVG8oJHRoYXQpIDogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29tcGFyZVRvKCR0aGF0KSA9PT0gMDsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrcyBpZiB0aGlzIG51bWJlciBpcyBzdHJpY3RseSBsb3dlciB0aGFuIHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0xlc3NUaGFuKCR0aGF0KSA6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXBhcmVUbygkdGhhdCkgPCAwOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2tzIGlmIHRoaXMgbnVtYmVyIGlzIGxvd2VyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGdpdmVuIG9uZS4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJHRoYXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzTGVzc1RoYW5PckVxdWFsVG8oJHRoYXQpIDogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29tcGFyZVRvKCR0aGF0KSA8PSAwOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2tzIGlmIHRoaXMgbnVtYmVyIGlzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNHcmVhdGVyVGhhbigkdGhhdCkgOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb21wYXJlVG8oJHRoYXQpID4gMDsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrcyBpZiB0aGlzIG51bWJlciBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGdpdmVuIG9uZS4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJHRoYXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzR3JlYXRlclRoYW5PckVxdWFsVG8oJHRoYXQpIDogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29tcGFyZVRvKCR0aGF0KSA+PSAwOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2tzIGlmIHRoaXMgbnVtYmVyIGVxdWFscyB6ZXJvLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNaZXJvKCkgOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRTaWduKCkgPT09IDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVja3MgaWYgdGhpcyBudW1iZXIgaXMgc3RyaWN0bHkgbmVnYXRpdmUuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc05lZ2F0aXZlKCkgOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRTaWduKCkgPCAwOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2tzIGlmIHRoaXMgbnVtYmVyIGlzIG5lZ2F0aXZlIG9yIHplcm8uCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc05lZ2F0aXZlT3JaZXJvKCkgOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRTaWduKCkgPD0gMDsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrcyBpZiB0aGlzIG51bWJlciBpcyBzdHJpY3RseSBwb3NpdGl2ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUG9zaXRpdmUoKSA6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFNpZ24oKSA+IDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVja3MgaWYgdGhpcyBudW1iZXIgaXMgcG9zaXRpdmUgb3IgemVyby4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUG9zaXRpdmVPclplcm8oKSA6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFNpZ24oKSA+PSAwOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc2lnbiBvZiB0aGlzIG51bWJlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludCAtMSBpZiB0aGUgbnVtYmVyIGlzIG5lZ2F0aXZlLCAwIGlmIHplcm8sIDEgaWYgcG9zaXRpdmUuCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduKCkgOiBpbnQ7CgogICAgLyoqCiAgICAgKiBDb21wYXJlcyB0aGlzIG51bWJlciB0byB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdAogICAgICoKICAgICAqIEByZXR1cm4gaW50IFstMSwwLDFdIElmIGAkdGhpc2AgaXMgbG93ZXIgdGhhbiwgZXF1YWwgdG8sIG9yIGdyZWF0ZXIgdGhhbiBgJHRoYXRgLgogICAgICoKICAgICAqIEB0aHJvd3MgTWF0aEV4Y2VwdGlvbiBJZiB0aGUgbnVtYmVyIGlzIG5vdCB2YWxpZC4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGNvbXBhcmVUbygkdGhhdCkgOiBpbnQ7CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyB0aGlzIG51bWJlciB0byBhIEJpZ0ludGVnZXIuCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyIFRoZSBjb252ZXJ0ZWQgbnVtYmVyLgogICAgICoKICAgICAqIEB0aHJvd3MgUm91bmRpbmdOZWNlc3NhcnlFeGNlcHRpb24gSWYgdGhpcyBudW1iZXIgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIEJpZ0ludGVnZXIgd2l0aG91dCByb3VuZGluZy4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHRvQmlnSW50ZWdlcigpIDogQmlnSW50ZWdlcjsKCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoaXMgbnVtYmVyIHRvIGEgQmlnRGVjaW1hbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwgVGhlIGNvbnZlcnRlZCBudW1iZXIuCiAgICAgKgogICAgICogQHRocm93cyBSb3VuZGluZ05lY2Vzc2FyeUV4Y2VwdGlvbiBJZiB0aGlzIG51bWJlciBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgQmlnRGVjaW1hbCB3aXRob3V0IHJvdW5kaW5nLgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gdG9CaWdEZWNpbWFsKCkgOiBCaWdEZWNpbWFsOwoKICAgIC8qKgogICAgICogQ29udmVydHMgdGhpcyBudW1iZXIgdG8gYSBCaWdSYXRpb25hbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ1JhdGlvbmFsIFRoZSBjb252ZXJ0ZWQgbnVtYmVyLgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gdG9CaWdSYXRpb25hbCgpIDogQmlnUmF0aW9uYWw7CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyB0aGlzIG51bWJlciB0byBhIEJpZ0RlY2ltYWwgd2l0aCB0aGUgZ2l2ZW4gc2NhbGUsIHVzaW5nIHJvdW5kaW5nIGlmIG5lY2Vzc2FyeS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRzY2FsZSAgICAgICAgVGhlIHNjYWxlIG9mIHRoZSByZXN1bHRpbmcgYEJpZ0RlY2ltYWxgLgogICAgICogQHBhcmFtIGludCAkcm91bmRpbmdNb2RlIEEgYFJvdW5kaW5nTW9kZWAgY29uc3RhbnQuCiAgICAgKgogICAgICogQHJldHVybiBCaWdEZWNpbWFsCiAgICAgKgogICAgICogQHRocm93cyBSb3VuZGluZ05lY2Vzc2FyeUV4Y2VwdGlvbiBJZiB0aGlzIG51bWJlciBjYW5ub3QgYmUgY29udmVydGVkIHRvIHRoZSBnaXZlbiBzY2FsZSB3aXRob3V0IHJvdW5kaW5nLgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9ubHkgYXBwbGllcyB3aGVuIFJvdW5kaW5nTW9kZTo6VU5ORUNFU1NBUlkgaXMgdXNlZC4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHRvU2NhbGUoaW50ICRzY2FsZSwgaW50ICRyb3VuZGluZ01vZGUgPSBSb3VuZGluZ01vZGU6OlVOTkVDRVNTQVJZKSA6IEJpZ0RlY2ltYWw7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBleGFjdCB2YWx1ZSBvZiB0aGlzIG51bWJlciBhcyBhIG5hdGl2ZSBpbnRlZ2VyLgogICAgICoKICAgICAqIElmIHRoaXMgbnVtYmVyIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBuYXRpdmUgaW50ZWdlciB3aXRob3V0IGxvc2luZyBwcmVjaXNpb24sIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uCiAgICAgKiBOb3RlIHRoYXQgdGhlIGFjY2VwdGFibGUgcmFuZ2UgZm9yIGFuIGludGVnZXIgZGVwZW5kcyBvbiB0aGUgcGxhdGZvcm0gYW5kIGRpZmZlcnMgZm9yIDMyLWJpdCBhbmQgNjQtYml0LgogICAgICoKICAgICAqIEByZXR1cm4gaW50IFRoZSBjb252ZXJ0ZWQgdmFsdWUuCiAgICAgKgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uIElmIHRoaXMgbnVtYmVyIGNhbm5vdCBiZSBleGFjdGx5IGNvbnZlcnRlZCB0byBhIG5hdGl2ZSBpbnRlZ2VyLgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gdG9JbnQoKSA6IGludDsKCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gYXBwcm94aW1hdGlvbiBvZiB0aGlzIG51bWJlciBhcyBhIGZsb2F0aW5nLXBvaW50IHZhbHVlLgogICAgICoKICAgICAqIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBjYW4gZGlzY2FyZCBpbmZvcm1hdGlvbiBhcyB0aGUgcHJlY2lzaW9uIG9mIGEgZmxvYXRpbmctcG9pbnQgdmFsdWUKICAgICAqIGlzIGluaGVyZW50bHkgbGltaXRlZC4KICAgICAqCiAgICAgKiBJZiB0aGUgbnVtYmVyIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGFyZ2VzdCByZXByZXNlbnRhYmxlIGZsb2F0aW5nIHBvaW50IG51bWJlciwgcG9zaXRpdmUgaW5maW5pdHkgaXMgcmV0dXJuZWQuCiAgICAgKiBJZiB0aGUgbnVtYmVyIGlzIGxlc3MgdGhhbiB0aGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBmbG9hdGluZyBwb2ludCBudW1iZXIsIG5lZ2F0aXZlIGluZmluaXR5IGlzIHJldHVybmVkLgogICAgICoKICAgICAqIEByZXR1cm4gZmxvYXQgVGhlIGNvbnZlcnRlZCB2YWx1ZS4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHRvRmxvYXQoKSA6IGZsb2F0OwoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG51bWJlci4KICAgICAqCiAgICAgKiBUaGUgb3V0cHV0IG9mIHRoaXMgbWV0aG9kIGNhbiBiZSBwYXJzZWQgYnkgdGhlIGBvZigpYCBmYWN0b3J5IG1ldGhvZDsKICAgICAqIHRoaXMgd2lsbCB5aWVsZCBhbiBvYmplY3QgZXF1YWwgdG8gdGhpcyBvbmUsIHdpdGhvdXQgYW55IGluZm9ybWF0aW9uIGxvc3MuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKSA6IHN0cmluZzsKCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGpzb25TZXJpYWxpemUoKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X190b1N0cmluZygpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/BigRational.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGg7Cgp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cRGl2aXNpb25CeVplcm9FeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXEV4Y2VwdGlvblxNYXRoRXhjZXB0aW9uOwp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cTnVtYmVyRm9ybWF0RXhjZXB0aW9uOwp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cUm91bmRpbmdOZWNlc3NhcnlFeGNlcHRpb247CgovKioKICogQW4gYXJiaXRyYXJpbHkgbGFyZ2UgcmF0aW9uYWwgbnVtYmVyLgogKgogKiBUaGlzIGNsYXNzIGlzIGltbXV0YWJsZS4KICoKICogQHBzYWxtLWltbXV0YWJsZQogKi8KZmluYWwgY2xhc3MgQmlnUmF0aW9uYWwgZXh0ZW5kcyBCaWdOdW1iZXIKewogICAgLyoqCiAgICAgKiBUaGUgbnVtZXJhdG9yLgogICAgICoKICAgICAqIEB2YXIgQmlnSW50ZWdlcgogICAgICovCiAgICBwcml2YXRlICRudW1lcmF0b3I7CgogICAgLyoqCiAgICAgKiBUaGUgZGVub21pbmF0b3IuIEFsd2F5cyBzdHJpY3RseSBwb3NpdGl2ZS4KICAgICAqCiAgICAgKiBAdmFyIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkZGVub21pbmF0b3I7CgogICAgLyoqCiAgICAgKiBQcm90ZWN0ZWQgY29uc3RydWN0b3IuIFVzZSBhIGZhY3RvcnkgbWV0aG9kIHRvIG9idGFpbiBhbiBpbnN0YW5jZS4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlciAkbnVtZXJhdG9yICAgICAgICBUaGUgbnVtZXJhdG9yLgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJGRlbm9taW5hdG9yICAgICAgVGhlIGRlbm9taW5hdG9yLgogICAgICogQHBhcmFtIGJvb2wgICAgICAgJGNoZWNrRGVub21pbmF0b3IgV2hldGhlciB0byBjaGVjayB0aGUgZGVub21pbmF0b3IgZm9yIG5lZ2F0aXZlIGFuZCB6ZXJvLgogICAgICoKICAgICAqIEB0aHJvd3MgRGl2aXNpb25CeVplcm9FeGNlcHRpb24gSWYgdGhlIGRlbm9taW5hdG9yIGlzIHplcm8uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfX2NvbnN0cnVjdChCaWdJbnRlZ2VyICRudW1lcmF0b3IsIEJpZ0ludGVnZXIgJGRlbm9taW5hdG9yLCBib29sICRjaGVja0Rlbm9taW5hdG9yKQogICAgewogICAgICAgIGlmICgkY2hlY2tEZW5vbWluYXRvcikgewogICAgICAgICAgICBpZiAoJGRlbm9taW5hdG9yLT5pc1plcm8oKSkgewogICAgICAgICAgICAgICAgdGhyb3cgRGl2aXNpb25CeVplcm9FeGNlcHRpb246OmRlbm9taW5hdG9yTXVzdE5vdEJlWmVybygpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGRlbm9taW5hdG9yLT5pc05lZ2F0aXZlKCkpIHsKICAgICAgICAgICAgICAgICRudW1lcmF0b3IgICA9ICRudW1lcmF0b3ItPm5lZ2F0ZWQoKTsKICAgICAgICAgICAgICAgICRkZW5vbWluYXRvciA9ICRkZW5vbWluYXRvci0+bmVnYXRlZCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+bnVtZXJhdG9yICAgPSAkbnVtZXJhdG9yOwogICAgICAgICR0aGlzLT5kZW5vbWluYXRvciA9ICRkZW5vbWluYXRvcjsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBCaWdSYXRpb25hbCBvZiB0aGUgZ2l2ZW4gdmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gQmlnUmF0aW9uYWwKICAgICAqCiAgICAgKiBAdGhyb3dzIE1hdGhFeGNlcHRpb24gSWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBCaWdSYXRpb25hbC4KICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9mKCR2YWx1ZSkgOiBCaWdOdW1iZXIKICAgIHsKICAgICAgICByZXR1cm4gcGFyZW50OjpvZigkdmFsdWUpLT50b0JpZ1JhdGlvbmFsKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgQmlnUmF0aW9uYWwgb3V0IG9mIGEgbnVtZXJhdG9yIGFuZCBhIGRlbm9taW5hdG9yLgogICAgICoKICAgICAqIElmIHRoZSBkZW5vbWluYXRvciBpcyBuZWdhdGl2ZSwgdGhlIHNpZ25zIG9mIGJvdGggdGhlIG51bWVyYXRvciBhbmQgdGhlIGRlbm9taW5hdG9yCiAgICAgKiB3aWxsIGJlIGludmVydGVkIHRvIGVuc3VyZSB0aGF0IHRoZSBkZW5vbWluYXRvciBpcyBhbHdheXMgcG9zaXRpdmUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICRudW1lcmF0b3IgICBUaGUgbnVtZXJhdG9yLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkZGVub21pbmF0b3IgVGhlIGRlbm9taW5hdG9yLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ1JhdGlvbmFsCiAgICAgKgogICAgICogQHRocm93cyBOdW1iZXJGb3JtYXRFeGNlcHRpb24gICAgICBJZiBhbiBhcmd1bWVudCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCBudW1iZXIuCiAgICAgKiBAdGhyb3dzIFJvdW5kaW5nTmVjZXNzYXJ5RXhjZXB0aW9uIElmIGFuIGFyZ3VtZW50IHJlcHJlc2VudHMgYSBub24taW50ZWdlciBudW1iZXIuCiAgICAgKiBAdGhyb3dzIERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uICAgIElmIHRoZSBkZW5vbWluYXRvciBpcyB6ZXJvLgogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbmQoJG51bWVyYXRvciwgJGRlbm9taW5hdG9yKSA6IEJpZ1JhdGlvbmFsCiAgICB7CiAgICAgICAgJG51bWVyYXRvciAgID0gQmlnSW50ZWdlcjo6b2YoJG51bWVyYXRvcik7CiAgICAgICAgJGRlbm9taW5hdG9yID0gQmlnSW50ZWdlcjo6b2YoJGRlbm9taW5hdG9yKTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdSYXRpb25hbCgkbnVtZXJhdG9yLCAkZGVub21pbmF0b3IsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEJpZ1JhdGlvbmFsIHJlcHJlc2VudGluZyB6ZXJvLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnUmF0aW9uYWwKICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHplcm8oKSA6IEJpZ1JhdGlvbmFsCiAgICB7CiAgICAgICAgLyoqCiAgICAgICAgICogQHBzYWxtLXN1cHByZXNzIEltcHVyZVN0YXRpY1ZhcmlhYmxlCiAgICAgICAgICogQHZhciBCaWdSYXRpb25hbHxudWxsICR6ZXJvCiAgICAgICAgICovCiAgICAgICAgc3RhdGljICR6ZXJvOwoKICAgICAgICBpZiAoJHplcm8gPT09IG51bGwpIHsKICAgICAgICAgICAgJHplcm8gPSBuZXcgQmlnUmF0aW9uYWwoQmlnSW50ZWdlcjo6emVybygpLCBCaWdJbnRlZ2VyOjpvbmUoKSwgZmFsc2UpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR6ZXJvOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEJpZ1JhdGlvbmFsIHJlcHJlc2VudGluZyBvbmUuCiAgICAgKgogICAgICogQHJldHVybiBCaWdSYXRpb25hbAogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb25lKCkgOiBCaWdSYXRpb25hbAogICAgewogICAgICAgIC8qKgogICAgICAgICAqIEBwc2FsbS1zdXBwcmVzcyBJbXB1cmVTdGF0aWNWYXJpYWJsZQogICAgICAgICAqIEB2YXIgQmlnUmF0aW9uYWx8bnVsbCAkb25lCiAgICAgICAgICovCiAgICAgICAgc3RhdGljICRvbmU7CgogICAgICAgIGlmICgkb25lID09PSBudWxsKSB7CiAgICAgICAgICAgICRvbmUgPSBuZXcgQmlnUmF0aW9uYWwoQmlnSW50ZWdlcjo6b25lKCksIEJpZ0ludGVnZXI6Om9uZSgpLCBmYWxzZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG9uZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBCaWdSYXRpb25hbCByZXByZXNlbnRpbmcgdGVuLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnUmF0aW9uYWwKICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRlbigpIDogQmlnUmF0aW9uYWwKICAgIHsKICAgICAgICAvKioKICAgICAgICAgKiBAcHNhbG0tc3VwcHJlc3MgSW1wdXJlU3RhdGljVmFyaWFibGUKICAgICAgICAgKiBAdmFyIEJpZ1JhdGlvbmFsfG51bGwgJHRlbgogICAgICAgICAqLwogICAgICAgIHN0YXRpYyAkdGVuOwoKICAgICAgICBpZiAoJHRlbiA9PT0gbnVsbCkgewogICAgICAgICAgICAkdGVuID0gbmV3IEJpZ1JhdGlvbmFsKEJpZ0ludGVnZXI6OnRlbigpLCBCaWdJbnRlZ2VyOjpvbmUoKSwgZmFsc2UpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0ZW47CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE51bWVyYXRvcigpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bnVtZXJhdG9yOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXREZW5vbWluYXRvcigpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGVub21pbmF0b3I7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBxdW90aWVudCBvZiB0aGUgZGl2aXNpb24gb2YgdGhlIG51bWVyYXRvciBieSB0aGUgZGVub21pbmF0b3IuCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBxdW90aWVudCgpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bnVtZXJhdG9yLT5xdW90aWVudCgkdGhpcy0+ZGVub21pbmF0b3IpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVtYWluZGVyIG9mIHRoZSBkaXZpc2lvbiBvZiB0aGUgbnVtZXJhdG9yIGJ5IHRoZSBkZW5vbWluYXRvci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbWFpbmRlcigpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bnVtZXJhdG9yLT5yZW1haW5kZXIoJHRoaXMtPmRlbm9taW5hdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHF1b3RpZW50IGFuZCByZW1haW5kZXIgb2YgdGhlIGRpdmlzaW9uIG9mIHRoZSBudW1lcmF0b3IgYnkgdGhlIGRlbm9taW5hdG9yLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcltdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBxdW90aWVudEFuZFJlbWFpbmRlcigpIDogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm51bWVyYXRvci0+cXVvdGllbnRBbmRSZW1haW5kZXIoJHRoaXMtPmRlbm9taW5hdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHN1bSBvZiB0aGlzIG51bWJlciBhbmQgdGhlIGdpdmVuIG9uZS4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJHRoYXQgVGhlIG51bWJlciB0byBhZGQuCiAgICAgKgogICAgICogQHJldHVybiBCaWdSYXRpb25hbCBUaGUgcmVzdWx0LgogICAgICoKICAgICAqIEB0aHJvd3MgTWF0aEV4Y2VwdGlvbiBJZiB0aGUgbnVtYmVyIGlzIG5vdCB2YWxpZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBsdXMoJHRoYXQpIDogQmlnUmF0aW9uYWwKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ1JhdGlvbmFsOjpvZigkdGhhdCk7CgogICAgICAgICRudW1lcmF0b3IgICA9ICR0aGlzLT5udW1lcmF0b3ItPm11bHRpcGxpZWRCeSgkdGhhdC0+ZGVub21pbmF0b3IpOwogICAgICAgICRudW1lcmF0b3IgICA9ICRudW1lcmF0b3ItPnBsdXMoJHRoYXQtPm51bWVyYXRvci0+bXVsdGlwbGllZEJ5KCR0aGlzLT5kZW5vbWluYXRvcikpOwogICAgICAgICRkZW5vbWluYXRvciA9ICR0aGlzLT5kZW5vbWluYXRvci0+bXVsdGlwbGllZEJ5KCR0aGF0LT5kZW5vbWluYXRvcik7CgogICAgICAgIHJldHVybiBuZXcgQmlnUmF0aW9uYWwoJG51bWVyYXRvciwgJGRlbm9taW5hdG9yLCBmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBkaWZmZXJlbmNlIG9mIHRoaXMgbnVtYmVyIGFuZCB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgbnVtYmVyIHRvIHN1YnRyYWN0LgogICAgICoKICAgICAqIEByZXR1cm4gQmlnUmF0aW9uYWwgVGhlIHJlc3VsdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIE1hdGhFeGNlcHRpb24gSWYgdGhlIG51bWJlciBpcyBub3QgdmFsaWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtaW51cygkdGhhdCkgOiBCaWdSYXRpb25hbAogICAgewogICAgICAgICR0aGF0ID0gQmlnUmF0aW9uYWw6Om9mKCR0aGF0KTsKCiAgICAgICAgJG51bWVyYXRvciAgID0gJHRoaXMtPm51bWVyYXRvci0+bXVsdGlwbGllZEJ5KCR0aGF0LT5kZW5vbWluYXRvcik7CiAgICAgICAgJG51bWVyYXRvciAgID0gJG51bWVyYXRvci0+bWludXMoJHRoYXQtPm51bWVyYXRvci0+bXVsdGlwbGllZEJ5KCR0aGlzLT5kZW5vbWluYXRvcikpOwogICAgICAgICRkZW5vbWluYXRvciA9ICR0aGlzLT5kZW5vbWluYXRvci0+bXVsdGlwbGllZEJ5KCR0aGF0LT5kZW5vbWluYXRvcik7CgogICAgICAgIHJldHVybiBuZXcgQmlnUmF0aW9uYWwoJG51bWVyYXRvciwgJGRlbm9taW5hdG9yLCBmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIHRoaXMgbnVtYmVyIGFuZCB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgbXVsdGlwbGllci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ1JhdGlvbmFsIFRoZSByZXN1bHQuCiAgICAgKgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uIElmIHRoZSBtdWx0aXBsaWVyIGlzIG5vdCBhIHZhbGlkIG51bWJlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG11bHRpcGxpZWRCeSgkdGhhdCkgOiBCaWdSYXRpb25hbAogICAgewogICAgICAgICR0aGF0ID0gQmlnUmF0aW9uYWw6Om9mKCR0aGF0KTsKCiAgICAgICAgJG51bWVyYXRvciAgID0gJHRoaXMtPm51bWVyYXRvci0+bXVsdGlwbGllZEJ5KCR0aGF0LT5udW1lcmF0b3IpOwogICAgICAgICRkZW5vbWluYXRvciA9ICR0aGlzLT5kZW5vbWluYXRvci0+bXVsdGlwbGllZEJ5KCR0aGF0LT5kZW5vbWluYXRvcik7CgogICAgICAgIHJldHVybiBuZXcgQmlnUmF0aW9uYWwoJG51bWVyYXRvciwgJGRlbm9taW5hdG9yLCBmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGRpdmlzaW9uIG9mIHRoaXMgbnVtYmVyIGJ5IHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0IFRoZSBkaXZpc29yLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnUmF0aW9uYWwgVGhlIHJlc3VsdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIE1hdGhFeGNlcHRpb24gSWYgdGhlIGRpdmlzb3IgaXMgbm90IGEgdmFsaWQgbnVtYmVyLCBvciBpcyB6ZXJvLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2aWRlZEJ5KCR0aGF0KSA6IEJpZ1JhdGlvbmFsCiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdSYXRpb25hbDo6b2YoJHRoYXQpOwoKICAgICAgICAkbnVtZXJhdG9yICAgPSAkdGhpcy0+bnVtZXJhdG9yLT5tdWx0aXBsaWVkQnkoJHRoYXQtPmRlbm9taW5hdG9yKTsKICAgICAgICAkZGVub21pbmF0b3IgPSAkdGhpcy0+ZGVub21pbmF0b3ItPm11bHRpcGxpZWRCeSgkdGhhdC0+bnVtZXJhdG9yKTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdSYXRpb25hbCgkbnVtZXJhdG9yLCAkZGVub21pbmF0b3IsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGlzIG51bWJlciBleHBvbmVudGlhdGVkIHRvIHRoZSBnaXZlbiB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRleHBvbmVudCBUaGUgZXhwb25lbnQuCiAgICAgKgogICAgICogQHJldHVybiBCaWdSYXRpb25hbCBUaGUgcmVzdWx0LgogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgZXhwb25lbnQgaXMgbm90IGluIHRoZSByYW5nZSAwIHRvIDEsMDAwLDAwMC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBvd2VyKGludCAkZXhwb25lbnQpIDogQmlnUmF0aW9uYWwKICAgIHsKICAgICAgICBpZiAoJGV4cG9uZW50ID09PSAwKSB7CiAgICAgICAgICAgICRvbmUgPSBCaWdJbnRlZ2VyOjpvbmUoKTsKCiAgICAgICAgICAgIHJldHVybiBuZXcgQmlnUmF0aW9uYWwoJG9uZSwgJG9uZSwgZmFsc2UpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRleHBvbmVudCA9PT0gMSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEJpZ1JhdGlvbmFsKAogICAgICAgICAgICAkdGhpcy0+bnVtZXJhdG9yLT5wb3dlcigkZXhwb25lbnQpLAogICAgICAgICAgICAkdGhpcy0+ZGVub21pbmF0b3ItPnBvd2VyKCRleHBvbmVudCksCiAgICAgICAgICAgIGZhbHNlCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJlY2lwcm9jYWwgb2YgdGhpcyBCaWdSYXRpb25hbC4KICAgICAqCiAgICAgKiBUaGUgcmVjaXByb2NhbCBoYXMgdGhlIG51bWVyYXRvciBhbmQgZGVub21pbmF0b3Igc3dhcHBlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ1JhdGlvbmFsCiAgICAgKgogICAgICogQHRocm93cyBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbiBJZiB0aGUgbnVtZXJhdG9yIGlzIHplcm8uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZWNpcHJvY2FsKCkgOiBCaWdSYXRpb25hbAogICAgewogICAgICAgIHJldHVybiBuZXcgQmlnUmF0aW9uYWwoJHRoaXMtPmRlbm9taW5hdG9yLCAkdGhpcy0+bnVtZXJhdG9yLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoaXMgQmlnUmF0aW9uYWwuCiAgICAgKgogICAgICogQHJldHVybiBCaWdSYXRpb25hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWJzKCkgOiBCaWdSYXRpb25hbAogICAgewogICAgICAgIHJldHVybiBuZXcgQmlnUmF0aW9uYWwoJHRoaXMtPm51bWVyYXRvci0+YWJzKCksICR0aGlzLT5kZW5vbWluYXRvciwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbmVnYXRlZCB2YWx1ZSBvZiB0aGlzIEJpZ1JhdGlvbmFsLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnUmF0aW9uYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG5lZ2F0ZWQoKSA6IEJpZ1JhdGlvbmFsCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBCaWdSYXRpb25hbCgkdGhpcy0+bnVtZXJhdG9yLT5uZWdhdGVkKCksICR0aGlzLT5kZW5vbWluYXRvciwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc2ltcGxpZmllZCB2YWx1ZSBvZiB0aGlzIEJpZ1JhdGlvbmFsLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnUmF0aW9uYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNpbXBsaWZpZWQoKSA6IEJpZ1JhdGlvbmFsCiAgICB7CiAgICAgICAgJGdjZCA9ICR0aGlzLT5udW1lcmF0b3ItPmdjZCgkdGhpcy0+ZGVub21pbmF0b3IpOwoKICAgICAgICAkbnVtZXJhdG9yID0gJHRoaXMtPm51bWVyYXRvci0+cXVvdGllbnQoJGdjZCk7CiAgICAgICAgJGRlbm9taW5hdG9yID0gJHRoaXMtPmRlbm9taW5hdG9yLT5xdW90aWVudCgkZ2NkKTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdSYXRpb25hbCgkbnVtZXJhdG9yLCAkZGVub21pbmF0b3IsIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBhcmVUbygkdGhhdCkgOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm1pbnVzKCR0aGF0KS0+Z2V0U2lnbigpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2lnbigpIDogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5udW1lcmF0b3ItPmdldFNpZ24oKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQmlnSW50ZWdlcigpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgICRzaW1wbGlmaWVkID0gJHRoaXMtPnNpbXBsaWZpZWQoKTsKCiAgICAgICAgaWYgKCEgJHNpbXBsaWZpZWQtPmRlbm9taW5hdG9yLT5pc0VxdWFsVG8oMSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJvdW5kaW5nTmVjZXNzYXJ5RXhjZXB0aW9uKCdUaGlzIHJhdGlvbmFsIG51bWJlciBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYXMgYW4gaW50ZWdlciB2YWx1ZSB3aXRob3V0IHJvdW5kaW5nLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzaW1wbGlmaWVkLT5udW1lcmF0b3I7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0JpZ0RlY2ltYWwoKSA6IEJpZ0RlY2ltYWwKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm51bWVyYXRvci0+dG9CaWdEZWNpbWFsKCktPmV4YWN0bHlEaXZpZGVkQnkoJHRoaXMtPmRlbm9taW5hdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQmlnUmF0aW9uYWwoKSA6IEJpZ1JhdGlvbmFsCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9TY2FsZShpbnQgJHNjYWxlLCBpbnQgJHJvdW5kaW5nTW9kZSA9IFJvdW5kaW5nTW9kZTo6VU5ORUNFU1NBUlkpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bnVtZXJhdG9yLT50b0JpZ0RlY2ltYWwoKS0+ZGl2aWRlZEJ5KCR0aGlzLT5kZW5vbWluYXRvciwgJHNjYWxlLCAkcm91bmRpbmdNb2RlKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvSW50KCkgOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRvQmlnSW50ZWdlcigpLT50b0ludCgpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9GbG9hdCgpIDogZmxvYXQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm51bWVyYXRvci0+dG9GbG9hdCgpIC8gJHRoaXMtPmRlbm9taW5hdG9yLT50b0Zsb2F0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgOiBzdHJpbmcKICAgIHsKICAgICAgICAkbnVtZXJhdG9yICAgPSAoc3RyaW5nKSAkdGhpcy0+bnVtZXJhdG9yOwogICAgICAgICRkZW5vbWluYXRvciA9IChzdHJpbmcpICR0aGlzLT5kZW5vbWluYXRvcjsKCiAgICAgICAgaWYgKCRkZW5vbWluYXRvciA9PT0gJzEnKSB7CiAgICAgICAgICAgIHJldHVybiAkbnVtZXJhdG9yOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5udW1lcmF0b3IgLiAnLycgLiAkdGhpcy0+ZGVub21pbmF0b3I7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCBmb3Igc2VyaWFsaXppbmcgdGhlIG9iamVjdCBhbmQgU0hPVUxEIE5PVCBiZSBhY2Nlc3NlZCBkaXJlY3RseS4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5e251bWVyYXRvcjogQmlnSW50ZWdlciwgZGVub21pbmF0b3I6IEJpZ0ludGVnZXJ9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3NlcmlhbGl6ZSgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBbJ251bWVyYXRvcicgPT4gJHRoaXMtPm51bWVyYXRvciwgJ2Rlbm9taW5hdG9yJyA9PiAkdGhpcy0+ZGVub21pbmF0b3JdOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2QgaXMgb25seSBoZXJlIHRvIGFsbG93IHVuc2VyaWFsaXppbmcgdGhlIG9iamVjdCBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGRpcmVjdGx5LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICogQHBzYWxtLXN1cHByZXNzIFJlZHVuZGFudFByb3BlcnR5SW5pdGlhbGl6YXRpb25DaGVjawogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXtudW1lcmF0b3I6IEJpZ0ludGVnZXIsIGRlbm9taW5hdG9yOiBCaWdJbnRlZ2VyfSAkZGF0YQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEB0aHJvd3MgXExvZ2ljRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3Vuc2VyaWFsaXplKGFycmF5ICRkYXRhKTogdm9pZAogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+bnVtZXJhdG9yKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdfX3Vuc2VyaWFsaXplKCkgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24sIGl0IG11c3Qgbm90IGJlIGNhbGxlZCBkaXJlY3RseS4nKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5udW1lcmF0b3IgPSAkZGF0YVsnbnVtZXJhdG9yJ107CiAgICAgICAgJHRoaXMtPmRlbm9taW5hdG9yID0gJGRhdGFbJ2Rlbm9taW5hdG9yJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCBieSBpbnRlcmZhY2UgU2VyaWFsaXphYmxlIGFuZCBTSE9VTEQgTk9UIGJlIGFjY2Vzc2VkIGRpcmVjdGx5LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXJpYWxpemUoKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bnVtZXJhdG9yIC4gJy8nIC4gJHRoaXMtPmRlbm9taW5hdG9yOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2QgaXMgb25seSBoZXJlIHRvIGltcGxlbWVudCBpbnRlcmZhY2UgU2VyaWFsaXphYmxlIGFuZCBjYW5ub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHkuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKiBAcHNhbG0tc3VwcHJlc3MgUmVkdW5kYW50UHJvcGVydHlJbml0aWFsaXphdGlvbkNoZWNrCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFxMb2dpY0V4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5zZXJpYWxpemUoJHZhbHVlKSA6IHZvaWQKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPm51bWVyYXRvcikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigndW5zZXJpYWxpemUoKSBpcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgaXQgbXVzdCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LicpOwogICAgICAgIH0KCiAgICAgICAgWyRudW1lcmF0b3IsICRkZW5vbWluYXRvcl0gPSBcZXhwbG9kZSgnLycsICR2YWx1ZSk7CgogICAgICAgICR0aGlzLT5udW1lcmF0b3IgICA9IEJpZ0ludGVnZXI6Om9mKCRudW1lcmF0b3IpOwogICAgICAgICR0aGlzLT5kZW5vbWluYXRvciA9IEJpZ0ludGVnZXI6Om9mKCRkZW5vbWluYXRvcik7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Exception/DivisionByZeroException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcRXhjZXB0aW9uOwoKLyoqCiAqIEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBhIGRpdmlzaW9uIGJ5IHplcm8gb2NjdXJzLgogKi8KY2xhc3MgRGl2aXNpb25CeVplcm9FeGNlcHRpb24gZXh0ZW5kcyBNYXRoRXhjZXB0aW9uCnsKICAgIC8qKgogICAgICogQHJldHVybiBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbgogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGl2aXNpb25CeVplcm8oKSA6IERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCdEaXZpc2lvbiBieSB6ZXJvLicpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbgogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbW9kdWx1c011c3ROb3RCZVplcm8oKSA6IERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCdUaGUgbW9kdWx1cyBtdXN0IG5vdCBiZSB6ZXJvLicpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbgogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVub21pbmF0b3JNdXN0Tm90QmVaZXJvKCkgOiBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZignVGhlIGRlbm9taW5hdG9yIG9mIGEgcmF0aW9uYWwgbnVtYmVyIGNhbm5vdCBiZSB6ZXJvLicpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Exception/IntegerOverflowException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcRXhjZXB0aW9uOwoKdXNlIEJyaWNrXE1hdGhcQmlnSW50ZWdlcjsKCi8qKgogKiBFeGNlcHRpb24gdGhyb3duIHdoZW4gYW4gaW50ZWdlciBvdmVyZmxvdyBvY2N1cnMuCiAqLwpjbGFzcyBJbnRlZ2VyT3ZlcmZsb3dFeGNlcHRpb24gZXh0ZW5kcyBNYXRoRXhjZXB0aW9uCnsKICAgIC8qKgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBJbnRlZ2VyT3ZlcmZsb3dFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvSW50T3ZlcmZsb3coQmlnSW50ZWdlciAkdmFsdWUpIDogSW50ZWdlck92ZXJmbG93RXhjZXB0aW9uCiAgICB7CiAgICAgICAgJG1lc3NhZ2UgPSAnJXMgaXMgb3V0IG9mIHJhbmdlICVkIHRvICVkIGFuZCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYXMgYW4gaW50ZWdlci4nOwoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoXHNwcmludGYoJG1lc3NhZ2UsIChzdHJpbmcpICR2YWx1ZSwgUEhQX0lOVF9NSU4sIFBIUF9JTlRfTUFYKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Exception/MathException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcRXhjZXB0aW9uOwoKLyoqCiAqIEJhc2UgY2xhc3MgZm9yIGFsbCBtYXRoIGV4Y2VwdGlvbnMuCiAqCiAqIFRoaXMgY2xhc3MgaXMgYWJzdHJhY3QgdG8gZW5zdXJlIHRoYXQgb25seSBmaW5lLWdyYWluZWQgZXhjZXB0aW9ucyBhcmUgdGhyb3duIHRocm91Z2hvdXQgdGhlIGNvZGUuCiAqLwpjbGFzcyBNYXRoRXhjZXB0aW9uIGV4dGVuZHMgXFJ1bnRpbWVFeGNlcHRpb24Kewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Exception/NegativeNumberException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcRXhjZXB0aW9uOwoKLyoqCiAqIEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIHBlcmZvcm0gYW4gdW5zdXBwb3J0ZWQgb3BlcmF0aW9uLCBzdWNoIGFzIGEgc3F1YXJlIHJvb3QsIG9uIGEgbmVnYXRpdmUgbnVtYmVyLgogKi8KY2xhc3MgTmVnYXRpdmVOdW1iZXJFeGNlcHRpb24gZXh0ZW5kcyBNYXRoRXhjZXB0aW9uCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Exception/NumberFormatException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcRXhjZXB0aW9uOwoKLyoqCiAqIEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIGNyZWF0ZSBhIG51bWJlciBmcm9tIGEgc3RyaW5nIHdpdGggYW4gaW52YWxpZCBmb3JtYXQuCiAqLwpjbGFzcyBOdW1iZXJGb3JtYXRFeGNlcHRpb24gZXh0ZW5kcyBNYXRoRXhjZXB0aW9uCnsKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkY2hhciBUaGUgZmFpbGluZyBjaGFyYWN0ZXIuCiAgICAgKgogICAgICogQHJldHVybiBOdW1iZXJGb3JtYXRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNoYXJOb3RJbkFscGhhYmV0KHN0cmluZyAkY2hhcikgOiBzZWxmCiAgICB7CiAgICAgICAgJG9yZCA9IFxvcmQoJGNoYXIpOwoKICAgICAgICBpZiAoJG9yZCA8IDMyIHx8ICRvcmQgPiAxMjYpIHsKICAgICAgICAgICAgJGNoYXIgPSBcc3RydG91cHBlcihcZGVjaGV4KCRvcmQpKTsKCiAgICAgICAgICAgIGlmICgkb3JkIDwgMTApIHsKICAgICAgICAgICAgICAgICRjaGFyID0gJzAnIC4gJGNoYXI7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY2hhciA9ICciJyAuICRjaGFyIC4gJyInOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKHNwcmludGYoJ0NoYXIgJXMgaXMgbm90IGEgdmFsaWQgY2hhcmFjdGVyIGluIHRoZSBnaXZlbiBhbHBoYWJldC4nLCAkY2hhcikpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Exception/RoundingNecessaryException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcRXhjZXB0aW9uOwoKLyoqCiAqIEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBhIG51bWJlciBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYXQgdGhlIHJlcXVlc3RlZCBzY2FsZSB3aXRob3V0IHJvdW5kaW5nLgogKi8KY2xhc3MgUm91bmRpbmdOZWNlc3NhcnlFeGNlcHRpb24gZXh0ZW5kcyBNYXRoRXhjZXB0aW9uCnsKICAgIC8qKgogICAgICogQHJldHVybiBSb3VuZGluZ05lY2Vzc2FyeUV4Y2VwdGlvbgogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcm91bmRpbmdOZWNlc3NhcnkoKSA6IFJvdW5kaW5nTmVjZXNzYXJ5RXhjZXB0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCdSb3VuZGluZyBpcyBuZWNlc3NhcnkgdG8gcmVwcmVzZW50IHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBhdCB0aGlzIHNjYWxlLicpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Internal/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Internal/Calculator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcSW50ZXJuYWw7Cgp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cUm91bmRpbmdOZWNlc3NhcnlFeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXFJvdW5kaW5nTW9kZTsKCi8qKgogKiBQZXJmb3JtcyBiYXNpYyBvcGVyYXRpb25zIG9uIGFyYml0cmFyeSBzaXplIGludGVnZXJzLgogKgogKiBVbmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCwgYWxsIHBhcmFtZXRlcnMgbXVzdCBiZSB2YWxpZGF0ZWQgYXMgbm9uLWVtcHR5IHN0cmluZ3Mgb2YgZGlnaXRzLAogKiB3aXRob3V0IGxlYWRpbmcgemVybywgYW5kIHdpdGggYW4gb3B0aW9uYWwgbGVhZGluZyBtaW51cyBzaWduIGlmIHRoZSBudW1iZXIgaXMgbm90IHplcm8uCiAqCiAqIEFueSBvdGhlciBwYXJhbWV0ZXIgZm9ybWF0IHdpbGwgbGVhZCB0byB1bmRlZmluZWQgYmVoYXZpb3VyLgogKiBBbGwgbWV0aG9kcyBtdXN0IHJldHVybiBzdHJpbmdzIHJlc3BlY3RpbmcgdGhpcyBmb3JtYXQsIHVubGVzcyBzcGVjaWZpZWQgb3RoZXJ3aXNlLgogKgogKiBAaW50ZXJuYWwKICoKICogQHBzYWxtLWltbXV0YWJsZQogKi8KYWJzdHJhY3QgY2xhc3MgQ2FsY3VsYXRvcgp7CiAgICAvKioKICAgICAqIFRoZSBtYXhpbXVtIGV4cG9uZW50IHZhbHVlIGFsbG93ZWQgZm9yIHRoZSBwb3coKSBtZXRob2QuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBNQVhfUE9XRVIgPSAxMDAwMDAwOwoKICAgIC8qKgogICAgICogVGhlIGFscGhhYmV0IGZvciBjb252ZXJ0aW5nIGZyb20gYW5kIHRvIGJhc2UgMiB0byAzNiwgbG93ZXJjYXNlLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgQUxQSEFCRVQgPSAnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JzsKCiAgICAvKioKICAgICAqIFRoZSBDYWxjdWxhdG9yIGluc3RhbmNlIGluIHVzZS4KICAgICAqCiAgICAgKiBAdmFyIENhbGN1bGF0b3J8bnVsbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkaW5zdGFuY2U7CgogICAgLyoqCiAgICAgKiBTZXRzIHRoZSBDYWxjdWxhdG9yIGluc3RhbmNlIHRvIHVzZS4KICAgICAqCiAgICAgKiBBbiBpbnN0YW5jZSBpcyB0eXBpY2FsbHkgc2V0IG9ubHkgaW4gdW5pdCB0ZXN0czogdGhlIGF1dG9kZXRlY3QgaXMgdXN1YWxseSB0aGUgYmVzdCBvcHRpb24uCiAgICAgKgogICAgICogQHBhcmFtIENhbGN1bGF0b3J8bnVsbCAkY2FsY3VsYXRvciBUaGUgY2FsY3VsYXRvciBpbnN0YW5jZSwgb3IgTlVMTCB0byByZXZlcnQgdG8gYXV0b2RldGVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgZmluYWwgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZXQoP0NhbGN1bGF0b3IgJGNhbGN1bGF0b3IpIDogdm9pZAogICAgewogICAgICAgIHNlbGY6OiRpbnN0YW5jZSA9ICRjYWxjdWxhdG9yOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgQ2FsY3VsYXRvciBpbnN0YW5jZSB0byB1c2UuCiAgICAgKgogICAgICogSWYgbm9uZSBoYXMgYmVlbiBleHBsaWNpdGx5IHNldCwgdGhlIGZhc3Rlc3QgYXZhaWxhYmxlIGltcGxlbWVudGF0aW9uIHdpbGwgYmUgcmV0dXJuZWQuCiAgICAgKgogICAgICogQHJldHVybiBDYWxjdWxhdG9yCiAgICAgKgogICAgICogQHBzYWxtLXB1cmUKICAgICAqIEBwc2FsbS1zdXBwcmVzcyBJbXB1cmVTdGF0aWNQcm9wZXJ0eQogICAgICovCiAgICBmaW5hbCBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldCgpIDogQ2FsY3VsYXRvcgogICAgewogICAgICAgIGlmIChzZWxmOjokaW5zdGFuY2UgPT09IG51bGwpIHsKICAgICAgICAgICAgLyoqIEBwc2FsbS1zdXBwcmVzcyBJbXB1cmVNZXRob2RDYWxsICovCiAgICAgICAgICAgIHNlbGY6OiRpbnN0YW5jZSA9IHNlbGY6OmRldGVjdCgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OiRpbnN0YW5jZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGZhc3Rlc3QgYXZhaWxhYmxlIENhbGN1bGF0b3IgaW1wbGVtZW50YXRpb24uCiAgICAgKgogICAgICogQGNvZGVDb3ZlcmFnZUlnbm9yZQogICAgICoKICAgICAqIEByZXR1cm4gQ2FsY3VsYXRvcgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBkZXRlY3QoKSA6IENhbGN1bGF0b3IKICAgIHsKICAgICAgICBpZiAoXGV4dGVuc2lvbl9sb2FkZWQoJ2dtcCcpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgQ2FsY3VsYXRvclxHbXBDYWxjdWxhdG9yKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGV4dGVuc2lvbl9sb2FkZWQoJ2JjbWF0aCcpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgQ2FsY3VsYXRvclxCY01hdGhDYWxjdWxhdG9yKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IENhbGN1bGF0b3JcTmF0aXZlQ2FsY3VsYXRvcigpOwogICAgfQoKICAgIC8qKgogICAgICogRXh0cmFjdHMgdGhlIHNpZ24gJiBkaWdpdHMgb2YgdGhlIG9wZXJhbmRzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEgVGhlIGZpcnN0IG9wZXJhbmQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiIFRoZSBzZWNvbmQgb3BlcmFuZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5e2Jvb2wsIGJvb2wsIHN0cmluZywgc3RyaW5nfSBXaGV0aGVyICRhIGFuZCAkYiBhcmUgbmVnYXRpdmUsIGZvbGxvd2VkIGJ5IHRoZWlyIGRpZ2l0cy4KICAgICAqLwogICAgZmluYWwgcHJvdGVjdGVkIGZ1bmN0aW9uIGluaXQoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAkYU5lZyA9ICgkYVswXSA9PT0gJy0nKSwKICAgICAgICAgICAgJGJOZWcgPSAoJGJbMF0gPT09ICctJyksCgogICAgICAgICAgICAkYU5lZyA/IFxzdWJzdHIoJGEsIDEpIDogJGEsCiAgICAgICAgICAgICRiTmVnID8gXHN1YnN0cigkYiwgMSkgOiAkYiwKICAgICAgICBdOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgYSBudW1iZXIuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbiBUaGUgbnVtYmVyLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBhYnNvbHV0ZSB2YWx1ZS4KICAgICAqLwogICAgZmluYWwgcHVibGljIGZ1bmN0aW9uIGFicyhzdHJpbmcgJG4pIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICgkblswXSA9PT0gJy0nKSA/IFxzdWJzdHIoJG4sIDEpIDogJG47CiAgICB9CgogICAgLyoqCiAgICAgKiBOZWdhdGVzIGEgbnVtYmVyLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG4gVGhlIG51bWJlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgbmVnYXRlZCB2YWx1ZS4KICAgICAqLwogICAgZmluYWwgcHVibGljIGZ1bmN0aW9uIG5lZyhzdHJpbmcgJG4pIDogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRuID09PSAnMCcpIHsKICAgICAgICAgICAgcmV0dXJuICcwJzsKICAgICAgICB9CgogICAgICAgIGlmICgkblswXSA9PT0gJy0nKSB7CiAgICAgICAgICAgIHJldHVybiBcc3Vic3RyKCRuLCAxKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAnLScgLiAkbjsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBhcmVzIHR3byBudW1iZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEgVGhlIGZpcnN0IG51bWJlci4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgVGhlIHNlY29uZCBudW1iZXIuCiAgICAgKgogICAgICogQHJldHVybiBpbnQgWy0xLCAwLCAxXSBJZiB0aGUgZmlyc3QgbnVtYmVyIGlzIGxlc3MgdGhhbiwgZXF1YWwgdG8sIG9yIGdyZWF0ZXIgdGhhbiB0aGUgc2Vjb25kIG51bWJlci4KICAgICAqLwogICAgZmluYWwgcHVibGljIGZ1bmN0aW9uIGNtcChzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBpbnQKICAgIHsKICAgICAgICBbJGFOZWcsICRiTmVnLCAkYURpZywgJGJEaWddID0gJHRoaXMtPmluaXQoJGEsICRiKTsKCiAgICAgICAgaWYgKCRhTmVnICYmICEgJGJOZWcpIHsKICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRiTmVnICYmICEgJGFOZWcpIHsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQoKICAgICAgICAkYUxlbiA9IFxzdHJsZW4oJGFEaWcpOwogICAgICAgICRiTGVuID0gXHN0cmxlbigkYkRpZyk7CgogICAgICAgIGlmICgkYUxlbiA8ICRiTGVuKSB7CiAgICAgICAgICAgICRyZXN1bHQgPSAtMTsKICAgICAgICB9IGVsc2VpZiAoJGFMZW4gPiAkYkxlbikgewogICAgICAgICAgICAkcmVzdWx0ID0gMTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcmVzdWx0ID0gJGFEaWcgPD0+ICRiRGlnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRhTmVnID8gLSRyZXN1bHQgOiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQWRkcyB0d28gbnVtYmVycy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhIFRoZSBhdWdlbmQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiIFRoZSBhZGRlbmQuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIHN1bS4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGFkZChzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdHMgdHdvIG51bWJlcnMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYSBUaGUgbWludWVuZC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgVGhlIHN1YnRyYWhlbmQuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIGRpZmZlcmVuY2UuCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBzdWIoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nOwoKICAgIC8qKgogICAgICogTXVsdGlwbGllcyB0d28gbnVtYmVycy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhIFRoZSBtdWx0aXBsaWNhbmQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiIFRoZSBtdWx0aXBsaWVyLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBwcm9kdWN0LgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gbXVsKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHF1b3RpZW50IG9mIHRoZSBkaXZpc2lvbiBvZiB0d28gbnVtYmVycy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhIFRoZSBkaXZpZGVuZC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgVGhlIGRpdmlzb3IsIG11c3Qgbm90IGJlIHplcm8uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIHF1b3RpZW50LgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZGl2UShzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByZW1haW5kZXIgb2YgdGhlIGRpdmlzaW9uIG9mIHR3byBudW1iZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEgVGhlIGRpdmlkZW5kLgogICAgICogQHBhcmFtIHN0cmluZyAkYiBUaGUgZGl2aXNvciwgbXVzdCBub3QgYmUgemVyby4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgcmVtYWluZGVyLgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZGl2UihzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBxdW90aWVudCBhbmQgcmVtYWluZGVyIG9mIHRoZSBkaXZpc2lvbiBvZiB0d28gbnVtYmVycy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhIFRoZSBkaXZpZGVuZC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgVGhlIGRpdmlzb3IsIG11c3Qgbm90IGJlIHplcm8uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXSBBbiBhcnJheSBjb250YWluaW5nIHRoZSBxdW90aWVudCBhbmQgcmVtYWluZGVyLgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZGl2UVIoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogYXJyYXk7CgogICAgLyoqCiAgICAgKiBFeHBvbmVudGlhdGVzIGEgbnVtYmVyLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEgVGhlIGJhc2UgbnVtYmVyLgogICAgICogQHBhcmFtIGludCAgICAkZSBUaGUgZXhwb25lbnQsIHZhbGlkYXRlZCBhcyBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgTUFYX1BPV0VSLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBwb3dlci4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHBvdyhzdHJpbmcgJGEsIGludCAkZSkgOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiIFRoZSBtb2R1bHVzOyBtdXN0IG5vdCBiZSB6ZXJvLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb2Qoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kaXZSKCR0aGlzLT5hZGQoJHRoaXMtPmRpdlIoJGEsICRiKSwgJGIpLCAkYik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBtb2R1bGFyIG11bHRpcGxpY2F0aXZlIGludmVyc2Ugb2YgJHggbW9kdWxvICRtLgogICAgICoKICAgICAqIElmICR4IGhhcyBubyBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlIG1vZCBtLCB0aGlzIG1ldGhvZCBtdXN0IHJldHVybiBudWxsLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBpZiB0aGUgdW5kZXJseWluZyBsaWJyYXJ5IGhhcyBidWlsdC1pbiBzdXBwb3J0LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHgKICAgICAqIEBwYXJhbSBzdHJpbmcgJG0gVGhlIG1vZHVsdXM7IG11c3Qgbm90IGJlIG5lZ2F0aXZlIG9yIHplcm8uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbW9kSW52ZXJzZShzdHJpbmcgJHgsIHN0cmluZyAkbSkgOiA/c3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRtID09PSAnMScpIHsKICAgICAgICAgICAgcmV0dXJuICcwJzsKICAgICAgICB9CgogICAgICAgICRtb2RWYWwgPSAkeDsKCiAgICAgICAgaWYgKCR4WzBdID09PSAnLScgfHwgKCR0aGlzLT5jbXAoJHRoaXMtPmFicygkeCksICRtKSA+PSAwKSkgewogICAgICAgICAgICAkbW9kVmFsID0gJHRoaXMtPm1vZCgkeCwgJG0pOwogICAgICAgIH0KCiAgICAgICAgJHggPSAnMCc7CiAgICAgICAgJHkgPSAnMCc7CiAgICAgICAgJGcgPSAkdGhpcy0+Z2NkRXh0ZW5kZWQoJG1vZFZhbCwgJG0sICR4LCAkeSk7CgogICAgICAgIGlmICgkZyAhPT0gJzEnKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5tb2QoJHRoaXMtPmFkZCgkdGhpcy0+bW9kKCR4LCAkbSksICRtKSwgJG0pOwogICAgfQoKICAgIC8qKgogICAgICogUmFpc2VzIGEgbnVtYmVyIGludG8gcG93ZXIgd2l0aCBtb2R1bG8uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYmFzZSBUaGUgYmFzZSBudW1iZXI7IG11c3QgYmUgcG9zaXRpdmUgb3IgemVyby4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGV4cCAgVGhlIGV4cG9uZW50OyBtdXN0IGJlIHBvc2l0aXZlIG9yIHplcm8uCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtb2QgIFRoZSBtb2R1bHVzOyBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBwb3dlci4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIG1vZFBvdyhzdHJpbmcgJGJhc2UsIHN0cmluZyAkZXhwLCBzdHJpbmcgJG1vZCkgOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBvZiB0aGUgdHdvIG51bWJlcnMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIGlmIHRoZSB1bmRlcmx5aW5nIGxpYnJhcnkKICAgICAqIGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciBHQ0QgY2FsY3VsYXRpb25zLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEgVGhlIGZpcnN0IG51bWJlci4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgVGhlIHNlY29uZCBudW1iZXIuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIEdDRCwgYWx3YXlzIHBvc2l0aXZlLCBvciB6ZXJvIGlmIGJvdGggYXJndW1lbnRzIGFyZSB6ZXJvLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2NkKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIGlmICgkYSA9PT0gJzAnKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+YWJzKCRiKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYiA9PT0gJzAnKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+YWJzKCRhKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+Z2NkKCRiLCAkdGhpcy0+ZGl2UigkYSwgJGIpKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdjZEV4dGVuZGVkKHN0cmluZyAkYSwgc3RyaW5nICRiLCBzdHJpbmcgJiR4LCBzdHJpbmcgJiR5KSA6IHN0cmluZwogICAgewogICAgICAgIGlmICgkYSA9PT0gJzAnKSB7CiAgICAgICAgICAgICR4ID0gJzAnOwogICAgICAgICAgICAkeSA9ICcxJzsKCiAgICAgICAgICAgIHJldHVybiAkYjsKICAgICAgICB9CgogICAgICAgICR4MSA9ICcwJzsKICAgICAgICAkeTEgPSAnMCc7CgogICAgICAgICRnY2QgPSAkdGhpcy0+Z2NkRXh0ZW5kZWQoJHRoaXMtPm1vZCgkYiwgJGEpLCAkYSwgJHgxLCAkeTEpOwoKICAgICAgICAkeCA9ICR0aGlzLT5zdWIoJHkxLCAkdGhpcy0+bXVsKCR0aGlzLT5kaXZRKCRiLCAkYSksICR4MSkpOwogICAgICAgICR5ID0gJHgxOwoKICAgICAgICByZXR1cm4gJGdjZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHNxdWFyZSByb290IG9mIHRoZSBnaXZlbiBudW1iZXIsIHJvdW5kZWQgZG93bi4KICAgICAqCiAgICAgKiBUaGUgcmVzdWx0IGlzIHRoZSBsYXJnZXN0IHggc3VjaCB0aGF0IHjCsiDiiaQgbi4KICAgICAqIFRoZSBpbnB1dCBNVVNUIE5PVCBiZSBuZWdhdGl2ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuIFRoZSBudW1iZXIuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIHNxdWFyZSByb290LgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gc3FydChzdHJpbmcgJG4pIDogc3RyaW5nOwoKICAgIC8qKgogICAgICogQ29udmVydHMgYSBudW1iZXIgZnJvbSBhbiBhcmJpdHJhcnkgYmFzZS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgY29uY3JldGUgaW1wbGVtZW50YXRpb24gaWYgdGhlIHVuZGVybHlpbmcgbGlicmFyeQogICAgICogaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIGJhc2UgY29udmVyc2lvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRudW1iZXIgVGhlIG51bWJlciwgcG9zaXRpdmUgb3IgemVybywgbm9uLWVtcHR5LCBjYXNlLWluc2Vuc2l0aXZlbHkgdmFsaWRhdGVkIGZvciB0aGUgZ2l2ZW4gYmFzZS4KICAgICAqIEBwYXJhbSBpbnQgICAgJGJhc2UgICBUaGUgYmFzZSBvZiB0aGUgbnVtYmVyLCB2YWxpZGF0ZWQgZnJvbSAyIHRvIDM2LgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBjb252ZXJ0ZWQgbnVtYmVyLCBmb2xsb3dpbmcgdGhlIENhbGN1bGF0b3IgY29udmVudGlvbnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmcm9tQmFzZShzdHJpbmcgJG51bWJlciwgaW50ICRiYXNlKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZnJvbUFyYml0cmFyeUJhc2UoXHN0cnRvbG93ZXIoJG51bWJlciksIHNlbGY6OkFMUEhBQkVULCAkYmFzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhIG51bWJlciB0byBhbiBhcmJpdHJhcnkgYmFzZS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgY29uY3JldGUgaW1wbGVtZW50YXRpb24gaWYgdGhlIHVuZGVybHlpbmcgbGlicmFyeQogICAgICogaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIGJhc2UgY29udmVyc2lvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRudW1iZXIgVGhlIG51bWJlciB0byBjb252ZXJ0LCBmb2xsb3dpbmcgdGhlIENhbGN1bGF0b3IgY29udmVudGlvbnMuCiAgICAgKiBAcGFyYW0gaW50ICAgICRiYXNlICAgVGhlIGJhc2UgdG8gY29udmVydCB0bywgdmFsaWRhdGVkIGZyb20gMiB0byAzNi4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgY29udmVydGVkIG51bWJlciwgbG93ZXJjYXNlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9CYXNlKHN0cmluZyAkbnVtYmVyLCBpbnQgJGJhc2UpIDogc3RyaW5nCiAgICB7CiAgICAgICAgJG5lZ2F0aXZlID0gKCRudW1iZXJbMF0gPT09ICctJyk7CgogICAgICAgIGlmICgkbmVnYXRpdmUpIHsKICAgICAgICAgICAgJG51bWJlciA9IFxzdWJzdHIoJG51bWJlciwgMSk7CiAgICAgICAgfQoKICAgICAgICAkbnVtYmVyID0gJHRoaXMtPnRvQXJiaXRyYXJ5QmFzZSgkbnVtYmVyLCBzZWxmOjpBTFBIQUJFVCwgJGJhc2UpOwoKICAgICAgICBpZiAoJG5lZ2F0aXZlKSB7CiAgICAgICAgICAgIHJldHVybiAnLScgLiAkbnVtYmVyOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRudW1iZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhIG5vbi1uZWdhdGl2ZSBudW1iZXIgaW4gYW4gYXJiaXRyYXJ5IGJhc2UgdXNpbmcgYSBjdXN0b20gYWxwaGFiZXQsIHRvIGJhc2UgMTAuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbnVtYmVyICAgVGhlIG51bWJlciB0byBjb252ZXJ0LCB2YWxpZGF0ZWQgYXMgYSBub24tZW1wdHkgc3RyaW5nLAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmluZyBvbmx5IGNoYXJzIGluIHRoZSBnaXZlbiBhbHBoYWJldC9iYXNlLgogICAgICogQHBhcmFtIHN0cmluZyAkYWxwaGFiZXQgVGhlIGFscGhhYmV0IHRoYXQgY29udGFpbnMgZXZlcnkgZGlnaXQsIHZhbGlkYXRlZCBhcyAyIGNoYXJzIG1pbmltdW0uCiAgICAgKiBAcGFyYW0gaW50ICAgICRiYXNlICAgICBUaGUgYmFzZSBvZiB0aGUgbnVtYmVyLCB2YWxpZGF0ZWQgZnJvbSAyIHRvIGFscGhhYmV0IGxlbmd0aC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgbnVtYmVyIGluIGJhc2UgMTAsIGZvbGxvd2luZyB0aGUgQ2FsY3VsYXRvciBjb252ZW50aW9ucy4KICAgICAqLwogICAgZmluYWwgcHVibGljIGZ1bmN0aW9uIGZyb21BcmJpdHJhcnlCYXNlKHN0cmluZyAkbnVtYmVyLCBzdHJpbmcgJGFscGhhYmV0LCBpbnQgJGJhc2UpIDogc3RyaW5nCiAgICB7CiAgICAgICAgLy8gcmVtb3ZlIGxlYWRpbmcgInplcm9zIgogICAgICAgICRudW1iZXIgPSBcbHRyaW0oJG51bWJlciwgJGFscGhhYmV0WzBdKTsKCiAgICAgICAgaWYgKCRudW1iZXIgPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiAnMCc7CiAgICAgICAgfQoKICAgICAgICAvLyBvcHRpbWl6ZSBmb3IgIm9uZSIKICAgICAgICBpZiAoJG51bWJlciA9PT0gJGFscGhhYmV0WzFdKSB7CiAgICAgICAgICAgIHJldHVybiAnMSc7CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gJzAnOwogICAgICAgICRwb3dlciA9ICcxJzsKCiAgICAgICAgJGJhc2UgPSAoc3RyaW5nKSAkYmFzZTsKCiAgICAgICAgZm9yICgkaSA9IFxzdHJsZW4oJG51bWJlcikgLSAxOyAkaSA+PSAwOyAkaS0tKSB7CiAgICAgICAgICAgICRpbmRleCA9IFxzdHJwb3MoJGFscGhhYmV0LCAkbnVtYmVyWyRpXSk7CgogICAgICAgICAgICBpZiAoJGluZGV4ICE9PSAwKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPmFkZCgkcmVzdWx0LCAoJGluZGV4ID09PSAxKQogICAgICAgICAgICAgICAgICAgID8gJHBvd2VyCiAgICAgICAgICAgICAgICAgICAgOiAkdGhpcy0+bXVsKCRwb3dlciwgKHN0cmluZykgJGluZGV4KQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRpICE9PSAwKSB7CiAgICAgICAgICAgICAgICAkcG93ZXIgPSAkdGhpcy0+bXVsKCRwb3dlciwgJGJhc2UpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIGEgbm9uLW5lZ2F0aXZlIG51bWJlciB0byBhbiBhcmJpdHJhcnkgYmFzZSB1c2luZyBhIGN1c3RvbSBhbHBoYWJldC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRudW1iZXIgICBUaGUgbnVtYmVyIHRvIGNvbnZlcnQsIHBvc2l0aXZlIG9yIHplcm8sIGZvbGxvd2luZyB0aGUgQ2FsY3VsYXRvciBjb252ZW50aW9ucy4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGFscGhhYmV0IFRoZSBhbHBoYWJldCB0aGF0IGNvbnRhaW5zIGV2ZXJ5IGRpZ2l0LCB2YWxpZGF0ZWQgYXMgMiBjaGFycyBtaW5pbXVtLgogICAgICogQHBhcmFtIGludCAgICAkYmFzZSAgICAgVGhlIGJhc2UgdG8gY29udmVydCB0bywgdmFsaWRhdGVkIGZyb20gMiB0byBhbHBoYWJldCBsZW5ndGguCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIGNvbnZlcnRlZCBudW1iZXIgaW4gdGhlIGdpdmVuIGFscGhhYmV0LgogICAgICovCiAgICBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gdG9BcmJpdHJhcnlCYXNlKHN0cmluZyAkbnVtYmVyLCBzdHJpbmcgJGFscGhhYmV0LCBpbnQgJGJhc2UpIDogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRudW1iZXIgPT09ICcwJykgewogICAgICAgICAgICByZXR1cm4gJGFscGhhYmV0WzBdOwogICAgICAgIH0KCiAgICAgICAgJGJhc2UgPSAoc3RyaW5nKSAkYmFzZTsKICAgICAgICAkcmVzdWx0ID0gJyc7CgogICAgICAgIHdoaWxlICgkbnVtYmVyICE9PSAnMCcpIHsKICAgICAgICAgICAgWyRudW1iZXIsICRyZW1haW5kZXJdID0gJHRoaXMtPmRpdlFSKCRudW1iZXIsICRiYXNlKTsKICAgICAgICAgICAgJHJlbWFpbmRlciA9IChpbnQpICRyZW1haW5kZXI7CgogICAgICAgICAgICAkcmVzdWx0IC49ICRhbHBoYWJldFskcmVtYWluZGVyXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcc3RycmV2KCRyZXN1bHQpOwogICAgfQoKICAgIC8qKgogICAgICogUGVyZm9ybXMgYSByb3VuZGVkIGRpdmlzaW9uLgogICAgICoKICAgICAqIFJvdW5kaW5nIGlzIHBlcmZvcm1lZCB3aGVuIHRoZSByZW1haW5kZXIgb2YgdGhlIGRpdmlzaW9uIGlzIG5vdCB6ZXJvLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEgICAgICAgICAgICBUaGUgZGl2aWRlbmQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiICAgICAgICAgICAgVGhlIGRpdmlzb3IsIG11c3Qgbm90IGJlIHplcm8uCiAgICAgKiBAcGFyYW0gaW50ICAgICRyb3VuZGluZ01vZGUgVGhlIHJvdW5kaW5nIG1vZGUuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gIElmIHRoZSByb3VuZGluZyBtb2RlIGlzIGludmFsaWQuCiAgICAgKiBAdGhyb3dzIFJvdW5kaW5nTmVjZXNzYXJ5RXhjZXB0aW9uIElmIFJvdW5kaW5nTW9kZTo6VU5ORUNFU1NBUlkgaXMgcHJvdmlkZWQgYnV0IHJvdW5kaW5nIGlzIG5lY2Vzc2FyeS4KICAgICAqLwogICAgZmluYWwgcHVibGljIGZ1bmN0aW9uIGRpdlJvdW5kKHN0cmluZyAkYSwgc3RyaW5nICRiLCBpbnQgJHJvdW5kaW5nTW9kZSkgOiBzdHJpbmcKICAgIHsKICAgICAgICBbJHF1b3RpZW50LCAkcmVtYWluZGVyXSA9ICR0aGlzLT5kaXZRUigkYSwgJGIpOwoKICAgICAgICAkaGFzRGlzY2FyZGVkRnJhY3Rpb24gPSAoJHJlbWFpbmRlciAhPT0gJzAnKTsKICAgICAgICAkaXNQb3NpdGl2ZU9yWmVybyA9ICgkYVswXSA9PT0gJy0nKSA9PT0gKCRiWzBdID09PSAnLScpOwoKICAgICAgICAkZGlzY2FyZGVkRnJhY3Rpb25TaWduID0gZnVuY3Rpb24oKSB1c2UgKCRyZW1haW5kZXIsICRiKSA6IGludCB7CiAgICAgICAgICAgICRyID0gJHRoaXMtPmFicygkdGhpcy0+bXVsKCRyZW1haW5kZXIsICcyJykpOwogICAgICAgICAgICAkYiA9ICR0aGlzLT5hYnMoJGIpOwoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jbXAoJHIsICRiKTsKICAgICAgICB9OwoKICAgICAgICAkaW5jcmVtZW50ID0gZmFsc2U7CgogICAgICAgIHN3aXRjaCAoJHJvdW5kaW5nTW9kZSkgewogICAgICAgICAgICBjYXNlIFJvdW5kaW5nTW9kZTo6VU5ORUNFU1NBUlk6CiAgICAgICAgICAgICAgICBpZiAoJGhhc0Rpc2NhcmRlZEZyYWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUm91bmRpbmdOZWNlc3NhcnlFeGNlcHRpb246OnJvdW5kaW5nTmVjZXNzYXJ5KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgUm91bmRpbmdNb2RlOjpVUDoKICAgICAgICAgICAgICAgICRpbmNyZW1lbnQgPSAkaGFzRGlzY2FyZGVkRnJhY3Rpb247CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgUm91bmRpbmdNb2RlOjpET1dOOgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Q0VJTElORzoKICAgICAgICAgICAgICAgICRpbmNyZW1lbnQgPSAkaGFzRGlzY2FyZGVkRnJhY3Rpb24gJiYgJGlzUG9zaXRpdmVPclplcm87CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgUm91bmRpbmdNb2RlOjpGTE9PUjoKICAgICAgICAgICAgICAgICRpbmNyZW1lbnQgPSAkaGFzRGlzY2FyZGVkRnJhY3Rpb24gJiYgISAkaXNQb3NpdGl2ZU9yWmVybzsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhBTEZfVVA6CiAgICAgICAgICAgICAgICAkaW5jcmVtZW50ID0gJGRpc2NhcmRlZEZyYWN0aW9uU2lnbigpID49IDA7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIQUxGX0RPV046CiAgICAgICAgICAgICAgICAkaW5jcmVtZW50ID0gJGRpc2NhcmRlZEZyYWN0aW9uU2lnbigpID4gMDsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhBTEZfQ0VJTElORzoKICAgICAgICAgICAgICAgICRpbmNyZW1lbnQgPSAkaXNQb3NpdGl2ZU9yWmVybyA/ICRkaXNjYXJkZWRGcmFjdGlvblNpZ24oKSA+PSAwIDogJGRpc2NhcmRlZEZyYWN0aW9uU2lnbigpID4gMDsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhBTEZfRkxPT1I6CiAgICAgICAgICAgICAgICAkaW5jcmVtZW50ID0gJGlzUG9zaXRpdmVPclplcm8gPyAkZGlzY2FyZGVkRnJhY3Rpb25TaWduKCkgPiAwIDogJGRpc2NhcmRlZEZyYWN0aW9uU2lnbigpID49IDA7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIQUxGX0VWRU46CiAgICAgICAgICAgICAgICAkbGFzdERpZ2l0ID0gKGludCkgJHF1b3RpZW50Wy0xXTsKICAgICAgICAgICAgICAgICRsYXN0RGlnaXRJc0V2ZW4gPSAoJGxhc3REaWdpdCAlIDIgPT09IDApOwogICAgICAgICAgICAgICAgJGluY3JlbWVudCA9ICRsYXN0RGlnaXRJc0V2ZW4gPyAkZGlzY2FyZGVkRnJhY3Rpb25TaWduKCkgPiAwIDogJGRpc2NhcmRlZEZyYWN0aW9uU2lnbigpID49IDA7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCByb3VuZGluZyBtb2RlLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRpbmNyZW1lbnQpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5hZGQoJHF1b3RpZW50LCAkaXNQb3NpdGl2ZU9yWmVybyA/ICcxJyA6ICctMScpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRxdW90aWVudDsKICAgIH0KCiAgICAvKioKICAgICAqIENhbGN1bGF0ZXMgYml0d2lzZSBBTkQgb2YgdHdvIG51bWJlcnMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIGlmIHRoZSB1bmRlcmx5aW5nIGxpYnJhcnkKICAgICAqIGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciBiaXR3aXNlIG9wZXJhdGlvbnMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYQogICAgICogQHBhcmFtIHN0cmluZyAkYgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhbmQoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5iaXR3aXNlKCdhbmQnLCAkYSwgJGIpOwogICAgfQoKICAgIC8qKgogICAgICogQ2FsY3VsYXRlcyBiaXR3aXNlIE9SIG9mIHR3byBudW1iZXJzLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBpZiB0aGUgdW5kZXJseWluZyBsaWJyYXJ5CiAgICAgKiBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgYml0d2lzZSBvcGVyYXRpb25zLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEKICAgICAqIEBwYXJhbSBzdHJpbmcgJGIKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gb3Ioc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5iaXR3aXNlKCdvcicsICRhLCAkYik7CiAgICB9CgogICAgLyoqCiAgICAgKiBDYWxjdWxhdGVzIGJpdHdpc2UgWE9SIG9mIHR3byBudW1iZXJzLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBpZiB0aGUgdW5kZXJseWluZyBsaWJyYXJ5CiAgICAgKiBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgYml0d2lzZSBvcGVyYXRpb25zLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEKICAgICAqIEBwYXJhbSBzdHJpbmcgJGIKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24geG9yKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Yml0d2lzZSgneG9yJywgJGEsICRiKTsKICAgIH0KCiAgICAvKioKICAgICAqIFBlcmZvcm1zIGEgYml0d2lzZSBvcGVyYXRpb24gb24gYSBkZWNpbWFsIG51bWJlci4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRvcGVyYXRvciBUaGUgb3BlcmF0b3IgdG8gdXNlLCBtdXN0IGJlICJhbmQiLCAib3IiIG9yICJ4b3IiLgogICAgICogQHBhcmFtIHN0cmluZyAkYSAgICAgICAgVGhlIGxlZnQgb3BlcmFuZC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgICAgICAgIFRoZSByaWdodCBvcGVyYW5kLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYml0d2lzZShzdHJpbmcgJG9wZXJhdG9yLCBzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmcKICAgIHsKICAgICAgICBbJGFOZWcsICRiTmVnLCAkYURpZywgJGJEaWddID0gJHRoaXMtPmluaXQoJGEsICRiKTsKCiAgICAgICAgJGFCaW4gPSAkdGhpcy0+dG9CaW5hcnkoJGFEaWcpOwogICAgICAgICRiQmluID0gJHRoaXMtPnRvQmluYXJ5KCRiRGlnKTsKCiAgICAgICAgJGFMZW4gPSBcc3RybGVuKCRhQmluKTsKICAgICAgICAkYkxlbiA9IFxzdHJsZW4oJGJCaW4pOwoKICAgICAgICBpZiAoJGFMZW4gPiAkYkxlbikgewogICAgICAgICAgICAkYkJpbiA9IFxzdHJfcmVwZWF0KCJceDAwIiwgJGFMZW4gLSAkYkxlbikgLiAkYkJpbjsKICAgICAgICB9IGVsc2VpZiAoJGJMZW4gPiAkYUxlbikgewogICAgICAgICAgICAkYUJpbiA9IFxzdHJfcmVwZWF0KCJceDAwIiwgJGJMZW4gLSAkYUxlbikgLiAkYUJpbjsKICAgICAgICB9CgogICAgICAgIGlmICgkYU5lZykgewogICAgICAgICAgICAkYUJpbiA9ICR0aGlzLT50d29zQ29tcGxlbWVudCgkYUJpbik7CiAgICAgICAgfQogICAgICAgIGlmICgkYk5lZykgewogICAgICAgICAgICAkYkJpbiA9ICR0aGlzLT50d29zQ29tcGxlbWVudCgkYkJpbik7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCRvcGVyYXRvcikgewogICAgICAgICAgICBjYXNlICdhbmQnOgogICAgICAgICAgICAgICAgJHZhbHVlID0gJGFCaW4gJiAkYkJpbjsKICAgICAgICAgICAgICAgICRuZWdhdGl2ZSA9ICgkYU5lZyBhbmQgJGJOZWcpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdvcic6CiAgICAgICAgICAgICAgICAkdmFsdWUgPSAkYUJpbiB8ICRiQmluOwogICAgICAgICAgICAgICAgJG5lZ2F0aXZlID0gKCRhTmVnIG9yICRiTmVnKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAneG9yJzoKICAgICAgICAgICAgICAgICR2YWx1ZSA9ICRhQmluIF4gJGJCaW47CiAgICAgICAgICAgICAgICAkbmVnYXRpdmUgPSAoJGFOZWcgeG9yICRiTmVnKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgLy8gQGNvZGVDb3ZlcmFnZUlnbm9yZVN0YXJ0CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBiaXR3aXNlIG9wZXJhdG9yLicpOwogICAgICAgICAgICAvLyBAY29kZUNvdmVyYWdlSWdub3JlRW5kCiAgICAgICAgfQoKICAgICAgICBpZiAoJG5lZ2F0aXZlKSB7CiAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT50d29zQ29tcGxlbWVudCgkdmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT50b0RlY2ltYWwoJHZhbHVlKTsKCiAgICAgICAgcmV0dXJuICRuZWdhdGl2ZSA/ICR0aGlzLT5uZWcoJHJlc3VsdCkgOiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkbnVtYmVyIEEgcG9zaXRpdmUsIGJpbmFyeSBudW1iZXIuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0d29zQ29tcGxlbWVudChzdHJpbmcgJG51bWJlcikgOiBzdHJpbmcKICAgIHsKICAgICAgICAkeG9yID0gXHN0cl9yZXBlYXQoIlx4ZmYiLCBcc3RybGVuKCRudW1iZXIpKTsKCiAgICAgICAgJG51bWJlciBePSAkeG9yOwoKICAgICAgICBmb3IgKCRpID0gXHN0cmxlbigkbnVtYmVyKSAtIDE7ICRpID49IDA7ICRpLS0pIHsKICAgICAgICAgICAgJGJ5dGUgPSBcb3JkKCRudW1iZXJbJGldKTsKCiAgICAgICAgICAgIGlmICgrKyRieXRlICE9PSAyNTYpIHsKICAgICAgICAgICAgICAgICRudW1iZXJbJGldID0gXGNocigkYnl0ZSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG51bWJlclskaV0gPSAiXHgwMCI7CgogICAgICAgICAgICBpZiAoJGkgPT09IDApIHsKICAgICAgICAgICAgICAgICRudW1iZXIgPSAiXHgwMSIgLiAkbnVtYmVyOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG51bWJlcjsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIGEgZGVjaW1hbCBudW1iZXIgdG8gYSBiaW5hcnkgc3RyaW5nLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG51bWJlciBUaGUgbnVtYmVyIHRvIGNvbnZlcnQsIHBvc2l0aXZlIG9yIHplcm8sIG9ubHkgZGlnaXRzLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdG9CaW5hcnkoc3RyaW5nICRudW1iZXIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgJHJlc3VsdCA9ICcnOwoKICAgICAgICB3aGlsZSAoJG51bWJlciAhPT0gJzAnKSB7CiAgICAgICAgICAgIFskbnVtYmVyLCAkcmVtYWluZGVyXSA9ICR0aGlzLT5kaXZRUigkbnVtYmVyLCAnMjU2Jyk7CiAgICAgICAgICAgICRyZXN1bHQgLj0gXGNocigoaW50KSAkcmVtYWluZGVyKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcc3RycmV2KCRyZXN1bHQpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcG9zaXRpdmUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBhIGJpbmFyeSBudW1iZXIuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYnl0ZXMgVGhlIGJ5dGVzIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdG9EZWNpbWFsKHN0cmluZyAkYnl0ZXMpIDogc3RyaW5nCiAgICB7CiAgICAgICAgJHJlc3VsdCA9ICcwJzsKICAgICAgICAkcG93ZXIgPSAnMSc7CgogICAgICAgIGZvciAoJGkgPSBcc3RybGVuKCRieXRlcykgLSAxOyAkaSA+PSAwOyAkaS0tKSB7CiAgICAgICAgICAgICRpbmRleCA9IFxvcmQoJGJ5dGVzWyRpXSk7CgogICAgICAgICAgICBpZiAoJGluZGV4ICE9PSAwKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPmFkZCgkcmVzdWx0LCAoJGluZGV4ID09PSAxKQogICAgICAgICAgICAgICAgICAgID8gJHBvd2VyCiAgICAgICAgICAgICAgICAgICAgOiAkdGhpcy0+bXVsKCRwb3dlciwgKHN0cmluZykgJGluZGV4KQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRpICE9PSAwKSB7CiAgICAgICAgICAgICAgICAkcG93ZXIgPSAkdGhpcy0+bXVsKCRwb3dlciwgJzI1NicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Internal/Calculator/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcSW50ZXJuYWxcQ2FsY3VsYXRvcjsKCnVzZSBCcmlja1xNYXRoXEludGVybmFsXENhbGN1bGF0b3I7CgovKioKICogQ2FsY3VsYXRvciBpbXBsZW1lbnRhdGlvbiBidWlsdCBhcm91bmQgdGhlIGJjbWF0aCBsaWJyYXJ5LgogKgogKiBAaW50ZXJuYWwKICoKICogQHBzYWxtLWltbXV0YWJsZQogKi8KY2xhc3MgQmNNYXRoQ2FsY3VsYXRvciBleHRlbmRzIENhbGN1bGF0b3IKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFxiY2FkZCgkYSwgJGIsIDApOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3ViKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBcYmNzdWIoJGEsICRiLCAwKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG11bChzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gXGJjbXVsKCRhLCAkYiwgMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKgogICAgICogQHBzYWxtLXN1cHByZXNzIEludmFsaWROdWxsYWJsZVJldHVyblR5cGUKICAgICAqIEBwc2FsbS1zdXBwcmVzcyBOdWxsYWJsZVJldHVyblN0YXRlbWVudAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2UShzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gXGJjZGl2KCRhLCAkYiwgMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKgogICAgICogQHBzYWxtLXN1cHByZXNzIEludmFsaWROdWxsYWJsZVJldHVyblR5cGUKICAgICAqIEBwc2FsbS1zdXBwcmVzcyBOdWxsYWJsZVJldHVyblN0YXRlbWVudAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2UihzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAodmVyc2lvbl9jb21wYXJlKFBIUF9WRVJTSU9OLCAnNy4yJykgPj0gMCkgewogICAgICAgICAgICByZXR1cm4gXGJjbW9kKCRhLCAkYiwgMCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXGJjbW9kKCRhLCAkYik7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXZRUihzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBhcnJheQogICAgewogICAgICAgICRxID0gXGJjZGl2KCRhLCAkYiwgMCk7CgogICAgICAgIGlmICh2ZXJzaW9uX2NvbXBhcmUoUEhQX1ZFUlNJT04sICc3LjInKSA+PSAwKSB7CiAgICAgICAgICAgICRyID0gXGJjbW9kKCRhLCAkYiwgMCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHIgPSBcYmNtb2QoJGEsICRiKTsKICAgICAgICB9CgogICAgICAgIGFzc2VydCgkcSAhPT0gbnVsbCk7CiAgICAgICAgYXNzZXJ0KCRyICE9PSBudWxsKTsKCiAgICAgICAgcmV0dXJuIFskcSwgJHJdOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcG93KHN0cmluZyAkYSwgaW50ICRlKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBcYmNwb3coJGEsIChzdHJpbmcpICRlLCAwKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqCiAgICAgKiBAcHNhbG0tc3VwcHJlc3MgSW52YWxpZE51bGxhYmxlUmV0dXJuVHlwZQogICAgICogQHBzYWxtLXN1cHByZXNzIE51bGxhYmxlUmV0dXJuU3RhdGVtZW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb2RQb3coc3RyaW5nICRiYXNlLCBzdHJpbmcgJGV4cCwgc3RyaW5nICRtb2QpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFxiY3Bvd21vZCgkYmFzZSwgJGV4cCwgJG1vZCwgMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKgogICAgICogQHBzYWxtLXN1cHByZXNzIE51bGxhYmxlUmV0dXJuU3RhdGVtZW50CiAgICAgKiBAcHNhbG0tc3VwcHJlc3MgSW52YWxpZE51bGxhYmxlUmV0dXJuVHlwZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3FydChzdHJpbmcgJG4pIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFxiY3NxcnQoJG4sIDApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Internal/Calculator/GmpCalculator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcSW50ZXJuYWxcQ2FsY3VsYXRvcjsKCnVzZSBCcmlja1xNYXRoXEludGVybmFsXENhbGN1bGF0b3I7CgovKioKICogQ2FsY3VsYXRvciBpbXBsZW1lbnRhdGlvbiBidWlsdCBhcm91bmQgdGhlIEdNUCBsaWJyYXJ5LgogKgogKiBAaW50ZXJuYWwKICoKICogQHBzYWxtLWltbXV0YWJsZQogKi8KY2xhc3MgR21wQ2FsY3VsYXRvciBleHRlbmRzIENhbGN1bGF0b3IKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFxnbXBfc3RydmFsKFxnbXBfYWRkKCRhLCAkYikpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3ViKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBcZ21wX3N0cnZhbChcZ21wX3N1YigkYSwgJGIpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG11bChzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gXGdtcF9zdHJ2YWwoXGdtcF9tdWwoJGEsICRiKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXZRKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBcZ21wX3N0cnZhbChcZ21wX2Rpdl9xKCRhLCAkYikpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2UihzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gXGdtcF9zdHJ2YWwoXGdtcF9kaXZfcigkYSwgJGIpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRpdlFSKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IGFycmF5CiAgICB7CiAgICAgICAgWyRxLCAkcl0gPSBcZ21wX2Rpdl9xcigkYSwgJGIpOwoKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICBcZ21wX3N0cnZhbCgkcSksCiAgICAgICAgICAgIFxnbXBfc3RydmFsKCRyKQogICAgICAgIF07CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwb3coc3RyaW5nICRhLCBpbnQgJGUpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFxnbXBfc3RydmFsKFxnbXBfcG93KCRhLCAkZSkpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbW9kSW52ZXJzZShzdHJpbmcgJHgsIHN0cmluZyAkbSkgOiA/c3RyaW5nCiAgICB7CiAgICAgICAgJHJlc3VsdCA9IFxnbXBfaW52ZXJ0KCR4LCAkbSk7CgogICAgICAgIGlmICgkcmVzdWx0ID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcZ21wX3N0cnZhbCgkcmVzdWx0KTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1vZFBvdyhzdHJpbmcgJGJhc2UsIHN0cmluZyAkZXhwLCBzdHJpbmcgJG1vZCkgOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gXGdtcF9zdHJ2YWwoXGdtcF9wb3dtKCRiYXNlLCAkZXhwLCAkbW9kKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnY2Qoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFxnbXBfc3RydmFsKFxnbXBfZ2NkKCRhLCAkYikpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZnJvbUJhc2Uoc3RyaW5nICRudW1iZXIsIGludCAkYmFzZSkgOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gXGdtcF9zdHJ2YWwoXGdtcF9pbml0KCRudW1iZXIsICRiYXNlKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0Jhc2Uoc3RyaW5nICRudW1iZXIsIGludCAkYmFzZSkgOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gXGdtcF9zdHJ2YWwoJG51bWJlciwgJGJhc2UpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYW5kKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBcZ21wX3N0cnZhbChcZ21wX2FuZCgkYSwgJGIpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG9yKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBcZ21wX3N0cnZhbChcZ21wX29yKCRhLCAkYikpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24geG9yKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBcZ21wX3N0cnZhbChcZ21wX3hvcigkYSwgJGIpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNxcnQoc3RyaW5nICRuKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBcZ21wX3N0cnZhbChcZ21wX3NxcnQoJG4pKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Internal/Calculator/NativeCalculator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcSW50ZXJuYWxcQ2FsY3VsYXRvcjsKCnVzZSBCcmlja1xNYXRoXEludGVybmFsXENhbGN1bGF0b3I7CgovKioKICogQ2FsY3VsYXRvciBpbXBsZW1lbnRhdGlvbiB1c2luZyBvbmx5IG5hdGl2ZSBQSFAgY29kZS4KICoKICogQGludGVybmFsCiAqCiAqIEBwc2FsbS1pbW11dGFibGUKICovCmNsYXNzIE5hdGl2ZUNhbGN1bGF0b3IgZXh0ZW5kcyBDYWxjdWxhdG9yCnsKICAgIC8qKgogICAgICogVGhlIG1heCBudW1iZXIgb2YgZGlnaXRzIHRoZSBwbGF0Zm9ybSBjYW4gbmF0aXZlbHkgYWRkLCBzdWJ0cmFjdCwgbXVsdGlwbHkgb3IgZGl2aWRlIHdpdGhvdXQgb3ZlcmZsb3cuCiAgICAgKiBGb3IgbXVsdGlwbGljYXRpb24sIHRoaXMgcmVwcmVzZW50cyB0aGUgbWF4IHN1bSBvZiB0aGUgbGVuZ3RocyBvZiBib3RoIG9wZXJhbmRzLgogICAgICoKICAgICAqIEZvciBhZGRpdGlvbiwgaXQgaXMgYXNzdW1lZCB0aGF0IGFuIGV4dHJhIGRpZ2l0IGNhbiBob2xkIGEgY2FycnkgKDEpIHdpdGhvdXQgb3ZlcmZsb3dpbmcuCiAgICAgKiBFeGFtcGxlOiAzMi1iaXQ6IG1heCBudW1iZXIgMSw5OTksOTk5LDk5OSAoOSBkaWdpdHMgKyBjYXJyeSkKICAgICAqICAgICAgICAgIDY0LWJpdDogbWF4IG51bWJlciAxLDk5OSw5OTksOTk5LDk5OSw5OTksOTk5ICgxOCBkaWdpdHMgKyBjYXJyeSkKICAgICAqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcml2YXRlICRtYXhEaWdpdHM7CgogICAgLyoqCiAgICAgKiBDbGFzcyBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAY29kZUNvdmVyYWdlSWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgc3dpdGNoIChQSFBfSU5UX1NJWkUpIHsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgJHRoaXMtPm1heERpZ2l0cyA9IDk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICR0aGlzLT5tYXhEaWdpdHMgPSAxODsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVGhlIHBsYXRmb3JtIGlzIG5vdCAzMi1iaXQgb3IgNjQtYml0IGFzIGV4cGVjdGVkLicpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZChzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmcKICAgIHsKICAgICAgICAvKioKICAgICAgICAgKiBAcHNhbG0tdmFyIG51bWVyaWMtc3RyaW5nICRhCiAgICAgICAgICogQHBzYWxtLXZhciBudW1lcmljLXN0cmluZyAkYgogICAgICAgICAqLwogICAgICAgICRyZXN1bHQgPSAkYSArICRiOwoKICAgICAgICBpZiAoaXNfaW50KCRyZXN1bHQpKSB7CiAgICAgICAgICAgIHJldHVybiAoc3RyaW5nKSAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRhID09PSAnMCcpIHsKICAgICAgICAgICAgcmV0dXJuICRiOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRiID09PSAnMCcpIHsKICAgICAgICAgICAgcmV0dXJuICRhOwogICAgICAgIH0KCiAgICAgICAgWyRhTmVnLCAkYk5lZywgJGFEaWcsICRiRGlnXSA9ICR0aGlzLT5pbml0KCRhLCAkYik7CgogICAgICAgICRyZXN1bHQgPSAkYU5lZyA9PT0gJGJOZWcgPyAkdGhpcy0+ZG9BZGQoJGFEaWcsICRiRGlnKSA6ICR0aGlzLT5kb1N1YigkYURpZywgJGJEaWcpOwoKICAgICAgICBpZiAoJGFOZWcpIHsKICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5uZWcoJHJlc3VsdCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHN1YihzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFkZCgkYSwgJHRoaXMtPm5lZygkYikpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbXVsKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIC8qKgogICAgICAgICAqIEBwc2FsbS12YXIgbnVtZXJpYy1zdHJpbmcgJGEKICAgICAgICAgKiBAcHNhbG0tdmFyIG51bWVyaWMtc3RyaW5nICRiCiAgICAgICAgICovCiAgICAgICAgJHJlc3VsdCA9ICRhICogJGI7CgogICAgICAgIGlmIChpc19pbnQoJHJlc3VsdCkpIHsKICAgICAgICAgICAgcmV0dXJuIChzdHJpbmcpICRyZXN1bHQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGEgPT09ICcwJyB8fCAkYiA9PT0gJzAnKSB7CiAgICAgICAgICAgIHJldHVybiAnMCc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGEgPT09ICcxJykgewogICAgICAgICAgICByZXR1cm4gJGI7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGIgPT09ICcxJykgewogICAgICAgICAgICByZXR1cm4gJGE7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGEgPT09ICctMScpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5uZWcoJGIpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRiID09PSAnLTEnKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bmVnKCRhKTsKICAgICAgICB9CgogICAgICAgIFskYU5lZywgJGJOZWcsICRhRGlnLCAkYkRpZ10gPSAkdGhpcy0+aW5pdCgkYSwgJGIpOwoKICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPmRvTXVsKCRhRGlnLCAkYkRpZyk7CgogICAgICAgIGlmICgkYU5lZyAhPT0gJGJOZWcpIHsKICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5uZWcoJHJlc3VsdCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRpdlEoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kaXZRUigkYSwgJGIpWzBdOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2UihzdHJpbmcgJGEsIHN0cmluZyAkYik6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGl2UVIoJGEsICRiKVsxXTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRpdlFSKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCRhID09PSAnMCcpIHsKICAgICAgICAgICAgcmV0dXJuIFsnMCcsICcwJ107CiAgICAgICAgfQoKICAgICAgICBpZiAoJGEgPT09ICRiKSB7CiAgICAgICAgICAgIHJldHVybiBbJzEnLCAnMCddOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRiID09PSAnMScpIHsKICAgICAgICAgICAgcmV0dXJuIFskYSwgJzAnXTsKICAgICAgICB9CgogICAgICAgIGlmICgkYiA9PT0gJy0xJykgewogICAgICAgICAgICByZXR1cm4gWyR0aGlzLT5uZWcoJGEpLCAnMCddOwogICAgICAgIH0KCiAgICAgICAgLyoqIEBwc2FsbS12YXIgbnVtZXJpYy1zdHJpbmcgJGEgKi8KICAgICAgICAkbmEgPSAkYSAqIDE7IC8vIGNhc3QgdG8gbnVtYmVyCgogICAgICAgIGlmIChpc19pbnQoJG5hKSkgewogICAgICAgICAgICAvKiogQHBzYWxtLXZhciBudW1lcmljLXN0cmluZyAkYiAqLwogICAgICAgICAgICAkbmIgPSAkYiAqIDE7CgogICAgICAgICAgICBpZiAoaXNfaW50KCRuYikpIHsKICAgICAgICAgICAgICAgIC8vIHRoZSBvbmx5IGRpdmlzaW9uIHRoYXQgbWF5IG92ZXJmbG93IGlzIFBIUF9JTlRfTUlOIC8gLTEsCiAgICAgICAgICAgICAgICAvLyB3aGljaCBjYW5ub3QgaGFwcGVuIGhlcmUgYXMgd2UndmUgYWxyZWFkeSBoYW5kbGVkIGEgZGl2aXNvciBvZiAtMSBhYm92ZS4KICAgICAgICAgICAgICAgICRyID0gJG5hICUgJG5iOwogICAgICAgICAgICAgICAgJHEgPSAoJG5hIC0gJHIpIC8gJG5iOwoKICAgICAgICAgICAgICAgIGFzc2VydChpc19pbnQoJHEpKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgICAgIChzdHJpbmcpICRxLAogICAgICAgICAgICAgICAgICAgIChzdHJpbmcpICRyCiAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBbJGFOZWcsICRiTmVnLCAkYURpZywgJGJEaWddID0gJHRoaXMtPmluaXQoJGEsICRiKTsKCiAgICAgICAgWyRxLCAkcl0gPSAkdGhpcy0+ZG9EaXYoJGFEaWcsICRiRGlnKTsKCiAgICAgICAgaWYgKCRhTmVnICE9PSAkYk5lZykgewogICAgICAgICAgICAkcSA9ICR0aGlzLT5uZWcoJHEpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRhTmVnKSB7CiAgICAgICAgICAgICRyID0gJHRoaXMtPm5lZygkcik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWyRxLCAkcl07CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwb3coc3RyaW5nICRhLCBpbnQgJGUpIDogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRlID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAnMSc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGUgPT09IDEpIHsKICAgICAgICAgICAgcmV0dXJuICRhOwogICAgICAgIH0KCiAgICAgICAgJG9kZCA9ICRlICUgMjsKICAgICAgICAkZSAtPSAkb2RkOwoKICAgICAgICAkYWEgPSAkdGhpcy0+bXVsKCRhLCAkYSk7CgogICAgICAgIC8qKiBAcHNhbG0tc3VwcHJlc3MgUG9zc2libHlJbnZhbGlkQXJndW1lbnQgV2UncmUgc3VyZSB0aGF0ICRlIC8gMiBpcyBhbiBpbnQgbm93ICovCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wb3coJGFhLCAkZSAvIDIpOwoKICAgICAgICBpZiAoJG9kZCA9PT0gMSkgewogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPm11bCgkcmVzdWx0LCAkYSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIEFsZ29yaXRobSBmcm9tOiBodHRwczovL3d3dy5nZWVrc2ZvcmdlZWtzLm9yZy9tb2R1bGFyLWV4cG9uZW50aWF0aW9uLXBvd2VyLWluLW1vZHVsYXItYXJpdGhtZXRpYy8KICAgICAqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb2RQb3coc3RyaW5nICRiYXNlLCBzdHJpbmcgJGV4cCwgc3RyaW5nICRtb2QpIDogc3RyaW5nCiAgICB7CiAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiB0aGUgYWxnb3JpdGhtIGJlbG93IGZhaWxzIHdpdGggMCBwb3dlciAwIG1vZCAxIChyZXR1cm5zIDEgaW5zdGVhZCBvZiAwKQogICAgICAgIGlmICgkYmFzZSA9PT0gJzAnICYmICRleHAgPT09ICcwJyAmJiAkbW9kID09PSAnMScpIHsKICAgICAgICAgICAgcmV0dXJuICcwJzsKICAgICAgICB9CgogICAgICAgIC8vIHNwZWNpYWwgY2FzZTogdGhlIGFsZ29yaXRobSBiZWxvdyBmYWlscyB3aXRoIHBvd2VyIDAgbW9kIDEgKHJldHVybnMgMSBpbnN0ZWFkIG9mIDApCiAgICAgICAgaWYgKCRleHAgPT09ICcwJyAmJiAkbW9kID09PSAnMScpIHsKICAgICAgICAgICAgcmV0dXJuICcwJzsKICAgICAgICB9CgogICAgICAgICR4ID0gJGJhc2U7CgogICAgICAgICRyZXMgPSAnMSc7CgogICAgICAgIC8vIG51bWJlcnMgYXJlIHBvc2l0aXZlLCBzbyB3ZSBjYW4gdXNlIHJlbWFpbmRlciBpbnN0ZWFkIG9mIG1vZHVsbwogICAgICAgICR4ID0gJHRoaXMtPmRpdlIoJHgsICRtb2QpOwoKICAgICAgICB3aGlsZSAoJGV4cCAhPT0gJzAnKSB7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgkZXhwWy0xXSwgWycxJywgJzMnLCAnNScsICc3JywgJzknXSkpIHsgLy8gb2RkCiAgICAgICAgICAgICAgICAkcmVzID0gJHRoaXMtPmRpdlIoJHRoaXMtPm11bCgkcmVzLCAkeCksICRtb2QpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZXhwID0gJHRoaXMtPmRpdlEoJGV4cCwgJzInKTsKICAgICAgICAgICAgJHggPSAkdGhpcy0+ZGl2UigkdGhpcy0+bXVsKCR4LCAkeCksICRtb2QpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGFwdGVkIGZyb20gaHR0cHM6Ly9jcC1hbGdvcml0aG1zLmNvbS9udW1fbWV0aG9kcy9yb290c19uZXd0b24uaHRtbAogICAgICoKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNxcnQoc3RyaW5nICRuKSA6IHN0cmluZwogICAgewogICAgICAgIGlmICgkbiA9PT0gJzAnKSB7CiAgICAgICAgICAgIHJldHVybiAnMCc7CiAgICAgICAgfQoKICAgICAgICAvLyBpbml0aWFsIGFwcHJveGltYXRpb24KICAgICAgICAkeCA9IFxzdHJfcmVwZWF0KCc5JywgXGludGRpdihcc3RybGVuKCRuKSwgMikgPzogMSk7CgogICAgICAgICRkZWNyZWFzZWQgPSBmYWxzZTsKCiAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAkbnggPSAkdGhpcy0+ZGl2USgkdGhpcy0+YWRkKCR4LCAkdGhpcy0+ZGl2USgkbiwgJHgpKSwgJzInKTsKCiAgICAgICAgICAgIGlmICgkeCA9PT0gJG54IHx8ICR0aGlzLT5jbXAoJG54LCAkeCkgPiAwICYmICRkZWNyZWFzZWQpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZGVjcmVhc2VkID0gJHRoaXMtPmNtcCgkbngsICR4KSA8IDA7CiAgICAgICAgICAgICR4ID0gJG54OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR4OwogICAgfQoKICAgIC8qKgogICAgICogUGVyZm9ybXMgdGhlIGFkZGl0aW9uIG9mIHR3byBub24tc2lnbmVkIGxhcmdlIGludGVnZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEgVGhlIGZpcnN0IG9wZXJhbmQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiIFRoZSBzZWNvbmQgb3BlcmFuZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRvQWRkKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIFskYSwgJGIsICRsZW5ndGhdID0gJHRoaXMtPnBhZCgkYSwgJGIpOwoKICAgICAgICAkY2FycnkgPSAwOwogICAgICAgICRyZXN1bHQgPSAnJzsKCiAgICAgICAgZm9yICgkaSA9ICRsZW5ndGggLSAkdGhpcy0+bWF4RGlnaXRzOzsgJGkgLT0gJHRoaXMtPm1heERpZ2l0cykgewogICAgICAgICAgICAkYmxvY2tMZW5ndGggPSAkdGhpcy0+bWF4RGlnaXRzOwoKICAgICAgICAgICAgaWYgKCRpIDwgMCkgewogICAgICAgICAgICAgICAgJGJsb2NrTGVuZ3RoICs9ICRpOwogICAgICAgICAgICAgICAgLyoqIEBwc2FsbS1zdXBwcmVzcyBMb29wSW52YWxpZGF0aW9uICovCiAgICAgICAgICAgICAgICAkaSA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qKiBAcHNhbG0tdmFyIG51bWVyaWMtc3RyaW5nICRibG9ja0EgKi8KICAgICAgICAgICAgJGJsb2NrQSA9IFxzdWJzdHIoJGEsICRpLCAkYmxvY2tMZW5ndGgpOwoKICAgICAgICAgICAgLyoqIEBwc2FsbS12YXIgbnVtZXJpYy1zdHJpbmcgJGJsb2NrQiAqLwogICAgICAgICAgICAkYmxvY2tCID0gXHN1YnN0cigkYiwgJGksICRibG9ja0xlbmd0aCk7CgogICAgICAgICAgICAkc3VtID0gKHN0cmluZykgKCRibG9ja0EgKyAkYmxvY2tCICsgJGNhcnJ5KTsKICAgICAgICAgICAgJHN1bUxlbmd0aCA9IFxzdHJsZW4oJHN1bSk7CgogICAgICAgICAgICBpZiAoJHN1bUxlbmd0aCA+ICRibG9ja0xlbmd0aCkgewogICAgICAgICAgICAgICAgJHN1bSA9IFxzdWJzdHIoJHN1bSwgMSk7CiAgICAgICAgICAgICAgICAkY2FycnkgPSAxOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCRzdW1MZW5ndGggPCAkYmxvY2tMZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAkc3VtID0gXHN0cl9yZXBlYXQoJzAnLCAkYmxvY2tMZW5ndGggLSAkc3VtTGVuZ3RoKSAuICRzdW07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkY2FycnkgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcmVzdWx0ID0gJHN1bSAuICRyZXN1bHQ7CgogICAgICAgICAgICBpZiAoJGkgPT09IDApIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNhcnJ5ID09PSAxKSB7CiAgICAgICAgICAgICRyZXN1bHQgPSAnMScgLiAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBQZXJmb3JtcyB0aGUgc3VidHJhY3Rpb24gb2YgdHdvIG5vbi1zaWduZWQgbGFyZ2UgaW50ZWdlcnMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYSBUaGUgZmlyc3Qgb3BlcmFuZC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgVGhlIHNlY29uZCBvcGVyYW5kLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZG9TdWIoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRhID09PSAkYikgewogICAgICAgICAgICByZXR1cm4gJzAnOwogICAgICAgIH0KCiAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2UgYWx3YXlzIHN1YnRyYWN0IHRvIGEgcG9zaXRpdmUgcmVzdWx0OiBiaWdnZXN0IG1pbnVzIHNtYWxsZXN0LgogICAgICAgICRjbXAgPSAkdGhpcy0+ZG9DbXAoJGEsICRiKTsKCiAgICAgICAgJGludmVydCA9ICgkY21wID09PSAtMSk7CgogICAgICAgIGlmICgkaW52ZXJ0KSB7CiAgICAgICAgICAgICRjID0gJGE7CiAgICAgICAgICAgICRhID0gJGI7CiAgICAgICAgICAgICRiID0gJGM7CiAgICAgICAgfQoKICAgICAgICBbJGEsICRiLCAkbGVuZ3RoXSA9ICR0aGlzLT5wYWQoJGEsICRiKTsKCiAgICAgICAgJGNhcnJ5ID0gMDsKICAgICAgICAkcmVzdWx0ID0gJyc7CgogICAgICAgICRjb21wbGVtZW50ID0gMTAgKiogJHRoaXMtPm1heERpZ2l0czsKCiAgICAgICAgZm9yICgkaSA9ICRsZW5ndGggLSAkdGhpcy0+bWF4RGlnaXRzOzsgJGkgLT0gJHRoaXMtPm1heERpZ2l0cykgewogICAgICAgICAgICAkYmxvY2tMZW5ndGggPSAkdGhpcy0+bWF4RGlnaXRzOwoKICAgICAgICAgICAgaWYgKCRpIDwgMCkgewogICAgICAgICAgICAgICAgJGJsb2NrTGVuZ3RoICs9ICRpOwogICAgICAgICAgICAgICAgLyoqIEBwc2FsbS1zdXBwcmVzcyBMb29wSW52YWxpZGF0aW9uICovCiAgICAgICAgICAgICAgICAkaSA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qKiBAcHNhbG0tdmFyIG51bWVyaWMtc3RyaW5nICRibG9ja0EgKi8KICAgICAgICAgICAgJGJsb2NrQSA9IFxzdWJzdHIoJGEsICRpLCAkYmxvY2tMZW5ndGgpOwoKICAgICAgICAgICAgLyoqIEBwc2FsbS12YXIgbnVtZXJpYy1zdHJpbmcgJGJsb2NrQiAqLwogICAgICAgICAgICAkYmxvY2tCID0gXHN1YnN0cigkYiwgJGksICRibG9ja0xlbmd0aCk7CgogICAgICAgICAgICAkc3VtID0gJGJsb2NrQSAtICRibG9ja0IgLSAkY2Fycnk7CgogICAgICAgICAgICBpZiAoJHN1bSA8IDApIHsKICAgICAgICAgICAgICAgICRzdW0gKz0gJGNvbXBsZW1lbnQ7CiAgICAgICAgICAgICAgICAkY2FycnkgPSAxOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGNhcnJ5ID0gMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHN1bSA9IChzdHJpbmcpICRzdW07CiAgICAgICAgICAgICRzdW1MZW5ndGggPSBcc3RybGVuKCRzdW0pOwoKICAgICAgICAgICAgaWYgKCRzdW1MZW5ndGggPCAkYmxvY2tMZW5ndGgpIHsKICAgICAgICAgICAgICAgICRzdW0gPSBcc3RyX3JlcGVhdCgnMCcsICRibG9ja0xlbmd0aCAtICRzdW1MZW5ndGgpIC4gJHN1bTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJlc3VsdCA9ICRzdW0gLiAkcmVzdWx0OwoKICAgICAgICAgICAgaWYgKCRpID09PSAwKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQ2FycnkgY2Fubm90IGJlIDEgd2hlbiB0aGUgbG9vcCBlbmRzLCBhcyBhID4gYgogICAgICAgIGFzc2VydCgkY2FycnkgPT09IDApOwoKICAgICAgICAkcmVzdWx0ID0gXGx0cmltKCRyZXN1bHQsICcwJyk7CgogICAgICAgIGlmICgkaW52ZXJ0KSB7CiAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+bmVnKCRyZXN1bHQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBQZXJmb3JtcyB0aGUgbXVsdGlwbGljYXRpb24gb2YgdHdvIG5vbi1zaWduZWQgbGFyZ2UgaW50ZWdlcnMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYSBUaGUgZmlyc3Qgb3BlcmFuZC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgVGhlIHNlY29uZCBvcGVyYW5kLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZG9NdWwoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgJHggPSBcc3RybGVuKCRhKTsKICAgICAgICAkeSA9IFxzdHJsZW4oJGIpOwoKICAgICAgICAkbWF4RGlnaXRzID0gXGludGRpdigkdGhpcy0+bWF4RGlnaXRzLCAyKTsKICAgICAgICAkY29tcGxlbWVudCA9IDEwICoqICRtYXhEaWdpdHM7CgogICAgICAgICRyZXN1bHQgPSAnMCc7CgogICAgICAgIGZvciAoJGkgPSAkeCAtICRtYXhEaWdpdHM7OyAkaSAtPSAkbWF4RGlnaXRzKSB7CiAgICAgICAgICAgICRibG9ja0FMZW5ndGggPSAkbWF4RGlnaXRzOwoKICAgICAgICAgICAgaWYgKCRpIDwgMCkgewogICAgICAgICAgICAgICAgJGJsb2NrQUxlbmd0aCArPSAkaTsKICAgICAgICAgICAgICAgIC8qKiBAcHNhbG0tc3VwcHJlc3MgTG9vcEludmFsaWRhdGlvbiAqLwogICAgICAgICAgICAgICAgJGkgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYmxvY2tBID0gKGludCkgXHN1YnN0cigkYSwgJGksICRibG9ja0FMZW5ndGgpOwoKICAgICAgICAgICAgJGxpbmUgPSAnJzsKICAgICAgICAgICAgJGNhcnJ5ID0gMDsKCiAgICAgICAgICAgIGZvciAoJGogPSAkeSAtICRtYXhEaWdpdHM7OyAkaiAtPSAkbWF4RGlnaXRzKSB7CiAgICAgICAgICAgICAgICAkYmxvY2tCTGVuZ3RoID0gJG1heERpZ2l0czsKCiAgICAgICAgICAgICAgICBpZiAoJGogPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgJGJsb2NrQkxlbmd0aCArPSAkajsKICAgICAgICAgICAgICAgICAgICAvKiogQHBzYWxtLXN1cHByZXNzIExvb3BJbnZhbGlkYXRpb24gKi8KICAgICAgICAgICAgICAgICAgICAkaiA9IDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGJsb2NrQiA9IChpbnQpIFxzdWJzdHIoJGIsICRqLCAkYmxvY2tCTGVuZ3RoKTsKCiAgICAgICAgICAgICAgICAkbXVsID0gJGJsb2NrQSAqICRibG9ja0IgKyAkY2Fycnk7CiAgICAgICAgICAgICAgICAkdmFsdWUgPSAkbXVsICUgJGNvbXBsZW1lbnQ7CiAgICAgICAgICAgICAgICAkY2FycnkgPSAoJG11bCAtICR2YWx1ZSkgLyAkY29tcGxlbWVudDsKCiAgICAgICAgICAgICAgICAkdmFsdWUgPSAoc3RyaW5nKSAkdmFsdWU7CiAgICAgICAgICAgICAgICAkdmFsdWUgPSBcc3RyX3BhZCgkdmFsdWUsICRtYXhEaWdpdHMsICcwJywgU1RSX1BBRF9MRUZUKTsKCiAgICAgICAgICAgICAgICAkbGluZSA9ICR2YWx1ZSAuICRsaW5lOwoKICAgICAgICAgICAgICAgIGlmICgkaiA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGNhcnJ5ICE9PSAwKSB7CiAgICAgICAgICAgICAgICAkbGluZSA9ICRjYXJyeSAuICRsaW5lOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbGluZSA9IFxsdHJpbSgkbGluZSwgJzAnKTsKCiAgICAgICAgICAgIGlmICgkbGluZSAhPT0gJycpIHsKICAgICAgICAgICAgICAgICRsaW5lIC49IFxzdHJfcmVwZWF0KCcwJywgJHggLSAkYmxvY2tBTGVuZ3RoIC0gJGkpOwogICAgICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5hZGQoJHJlc3VsdCwgJGxpbmUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGkgPT09IDApIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIFBlcmZvcm1zIHRoZSBkaXZpc2lvbiBvZiB0d28gbm9uLXNpZ25lZCBsYXJnZSBpbnRlZ2Vycy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhIFRoZSBmaXJzdCBvcGVyYW5kLgogICAgICogQHBhcmFtIHN0cmluZyAkYiBUaGUgc2Vjb25kIG9wZXJhbmQuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXSBUaGUgcXVvdGllbnQgYW5kIHJlbWFpbmRlci4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBkb0RpdihzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBhcnJheQogICAgewogICAgICAgICRjbXAgPSAkdGhpcy0+ZG9DbXAoJGEsICRiKTsKCiAgICAgICAgaWYgKCRjbXAgPT09IC0xKSB7CiAgICAgICAgICAgIHJldHVybiBbJzAnLCAkYV07CiAgICAgICAgfQoKICAgICAgICAkeCA9IFxzdHJsZW4oJGEpOwogICAgICAgICR5ID0gXHN0cmxlbigkYik7CgogICAgICAgIC8vIHdlIG5vdyBrbm93IHRoYXQgYSA+PSBiICYmIHggPj0geQoKICAgICAgICAkcSA9ICcwJzsgLy8gcXVvdGllbnQKICAgICAgICAkciA9ICRhOyAvLyByZW1haW5kZXIKICAgICAgICAkeiA9ICR5OyAvLyBmb2N1cyBsZW5ndGgsIGFsd2F5cyAkeSBvciAkeSsxCgogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgJGZvY3VzID0gXHN1YnN0cigkYSwgMCwgJHopOwoKICAgICAgICAgICAgJGNtcCA9ICR0aGlzLT5kb0NtcCgkZm9jdXMsICRiKTsKCiAgICAgICAgICAgIGlmICgkY21wID09PSAtMSkgewogICAgICAgICAgICAgICAgaWYgKCR6ID09PSAkeCkgeyAvLyByZW1haW5kZXIgPCBkaXZpZGVuZAogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR6Kys7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR6ZXJvcyA9IFxzdHJfcmVwZWF0KCcwJywgJHggLSAkeik7CgogICAgICAgICAgICAkcSA9ICR0aGlzLT5hZGQoJHEsICcxJyAuICR6ZXJvcyk7CiAgICAgICAgICAgICRhID0gJHRoaXMtPnN1YigkYSwgJGIgLiAkemVyb3MpOwoKICAgICAgICAgICAgJHIgPSAkYTsKCiAgICAgICAgICAgIGlmICgkciA9PT0gJzAnKSB7IC8vIHJlbWFpbmRlciA9PSAwCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHggPSBcc3RybGVuKCRhKTsKCiAgICAgICAgICAgIGlmICgkeCA8ICR5KSB7IC8vIHJlbWFpbmRlciA8IGRpdmlkZW5kCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHogPSAkeTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbJHEsICRyXTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBhcmVzIHR3byBub24tc2lnbmVkIGxhcmdlIG51bWJlcnMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYSBUaGUgZmlyc3Qgb3BlcmFuZC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgVGhlIHNlY29uZCBvcGVyYW5kLgogICAgICoKICAgICAqIEByZXR1cm4gaW50IFstMSwgMCwgMV0KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBkb0NtcChzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBpbnQKICAgIHsKICAgICAgICAkeCA9IFxzdHJsZW4oJGEpOwogICAgICAgICR5ID0gXHN0cmxlbigkYik7CgogICAgICAgICRjbXAgPSAkeCA8PT4gJHk7CgogICAgICAgIGlmICgkY21wICE9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAkY21wOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFxzdHJjbXAoJGEsICRiKSA8PT4gMDsgLy8gZW5mb3JjZSBbLTEsIDAsIDFdCiAgICB9CgogICAgLyoqCiAgICAgKiBQYWRzIHRoZSBsZWZ0IG9mIG9uZSBvZiB0aGUgZ2l2ZW4gbnVtYmVycyB3aXRoIHplcm9zIGlmIG5lY2Vzc2FyeSB0byBtYWtlIGJvdGggbnVtYmVycyB0aGUgc2FtZSBsZW5ndGguCiAgICAgKgogICAgICogVGhlIG51bWJlcnMgbXVzdCBvbmx5IGNvbnNpc3Qgb2YgZGlnaXRzLCB3aXRob3V0IGxlYWRpbmcgbWludXMgc2lnbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhIFRoZSBmaXJzdCBvcGVyYW5kLgogICAgICogQHBhcmFtIHN0cmluZyAkYiBUaGUgc2Vjb25kIG9wZXJhbmQuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXtzdHJpbmcsIHN0cmluZywgaW50fQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHBhZChzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBhcnJheQogICAgewogICAgICAgICR4ID0gXHN0cmxlbigkYSk7CiAgICAgICAgJHkgPSBcc3RybGVuKCRiKTsKCiAgICAgICAgaWYgKCR4ID4gJHkpIHsKICAgICAgICAgICAgJGIgPSBcc3RyX3JlcGVhdCgnMCcsICR4IC0gJHkpIC4gJGI7CgogICAgICAgICAgICByZXR1cm4gWyRhLCAkYiwgJHhdOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR4IDwgJHkpIHsKICAgICAgICAgICAgJGEgPSBcc3RyX3JlcGVhdCgnMCcsICR5IC0gJHgpIC4gJGE7CgogICAgICAgICAgICByZXR1cm4gWyRhLCAkYiwgJHldOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskYSwgJGIsICR4XTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/RoundingMode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGg7CgovKioKICogU3BlY2lmaWVzIGEgcm91bmRpbmcgYmVoYXZpb3IgZm9yIG51bWVyaWNhbCBvcGVyYXRpb25zIGNhcGFibGUgb2YgZGlzY2FyZGluZyBwcmVjaXNpb24uCiAqCiAqIEVhY2ggcm91bmRpbmcgbW9kZSBpbmRpY2F0ZXMgaG93IHRoZSBsZWFzdCBzaWduaWZpY2FudCByZXR1cm5lZCBkaWdpdCBvZiBhIHJvdW5kZWQgcmVzdWx0CiAqIGlzIHRvIGJlIGNhbGN1bGF0ZWQuIElmIGZld2VyIGRpZ2l0cyBhcmUgcmV0dXJuZWQgdGhhbiB0aGUgZGlnaXRzIG5lZWRlZCB0byByZXByZXNlbnQgdGhlCiAqIGV4YWN0IG51bWVyaWNhbCByZXN1bHQsIHRoZSBkaXNjYXJkZWQgZGlnaXRzIHdpbGwgYmUgcmVmZXJyZWQgdG8gYXMgdGhlIGRpc2NhcmRlZCBmcmFjdGlvbgogKiByZWdhcmRsZXNzIHRoZSBkaWdpdHMnIGNvbnRyaWJ1dGlvbiB0byB0aGUgdmFsdWUgb2YgdGhlIG51bWJlci4gSW4gb3RoZXIgd29yZHMsIGNvbnNpZGVyZWQKICogYXMgYSBudW1lcmljYWwgdmFsdWUsIHRoZSBkaXNjYXJkZWQgZnJhY3Rpb24gY291bGQgaGF2ZSBhbiBhYnNvbHV0ZSB2YWx1ZSBncmVhdGVyIHRoYW4gb25lLgogKi8KZmluYWwgY2xhc3MgUm91bmRpbmdNb2RlCnsKICAgIC8qKgogICAgICogUHJpdmF0ZSBjb25zdHJ1Y3Rvci4gVGhpcyBjbGFzcyBpcyBub3QgaW5zdGFudGlhYmxlLgogICAgICoKICAgICAqIEBjb2RlQ292ZXJhZ2VJZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnRzIHRoYXQgdGhlIHJlcXVlc3RlZCBvcGVyYXRpb24gaGFzIGFuIGV4YWN0IHJlc3VsdCwgaGVuY2Ugbm8gcm91bmRpbmcgaXMgbmVjZXNzYXJ5LgogICAgICoKICAgICAqIElmIHRoaXMgcm91bmRpbmcgbW9kZSBpcyBzcGVjaWZpZWQgb24gYW4gb3BlcmF0aW9uIHRoYXQgeWllbGRzIGEgcmVzdWx0IHRoYXQKICAgICAqIGNhbm5vdCBiZSByZXByZXNlbnRlZCBhdCB0aGUgcmVxdWVzdGVkIHNjYWxlLCBhIFJvdW5kaW5nTmVjZXNzYXJ5RXhjZXB0aW9uIGlzIHRocm93bi4KICAgICAqLwogICAgcHVibGljIGNvbnN0IFVOTkVDRVNTQVJZID0gMDsKCiAgICAvKioKICAgICAqIFJvdW5kcyBhd2F5IGZyb20gemVyby4KICAgICAqCiAgICAgKiBBbHdheXMgaW5jcmVtZW50cyB0aGUgZGlnaXQgcHJpb3IgdG8gYSBub256ZXJvIGRpc2NhcmRlZCBmcmFjdGlvbi4KICAgICAqIE5vdGUgdGhhdCB0aGlzIHJvdW5kaW5nIG1vZGUgbmV2ZXIgZGVjcmVhc2VzIHRoZSBtYWduaXR1ZGUgb2YgdGhlIGNhbGN1bGF0ZWQgdmFsdWUuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBVUCA9IDE7CgogICAgLyoqCiAgICAgKiBSb3VuZHMgdG93YXJkcyB6ZXJvLgogICAgICoKICAgICAqIE5ldmVyIGluY3JlbWVudHMgdGhlIGRpZ2l0IHByaW9yIHRvIGEgZGlzY2FyZGVkIGZyYWN0aW9uIChpLmUuLCB0cnVuY2F0ZXMpLgogICAgICogTm90ZSB0aGF0IHRoaXMgcm91bmRpbmcgbW9kZSBuZXZlciBpbmNyZWFzZXMgdGhlIG1hZ25pdHVkZSBvZiB0aGUgY2FsY3VsYXRlZCB2YWx1ZS4KICAgICAqLwogICAgcHVibGljIGNvbnN0IERPV04gPSAyOwoKICAgIC8qKgogICAgICogUm91bmRzIHRvd2FyZHMgcG9zaXRpdmUgaW5maW5pdHkuCiAgICAgKgogICAgICogSWYgdGhlIHJlc3VsdCBpcyBwb3NpdGl2ZSwgYmVoYXZlcyBhcyBmb3IgVVA7IGlmIG5lZ2F0aXZlLCBiZWhhdmVzIGFzIGZvciBET1dOLgogICAgICogTm90ZSB0aGF0IHRoaXMgcm91bmRpbmcgbW9kZSBuZXZlciBkZWNyZWFzZXMgdGhlIGNhbGN1bGF0ZWQgdmFsdWUuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBDRUlMSU5HID0gMzsKCiAgICAvKioKICAgICAqIFJvdW5kcyB0b3dhcmRzIG5lZ2F0aXZlIGluZmluaXR5LgogICAgICoKICAgICAqIElmIHRoZSByZXN1bHQgaXMgcG9zaXRpdmUsIGJlaGF2ZSBhcyBmb3IgRE9XTjsgaWYgbmVnYXRpdmUsIGJlaGF2ZSBhcyBmb3IgVVAuCiAgICAgKiBOb3RlIHRoYXQgdGhpcyByb3VuZGluZyBtb2RlIG5ldmVyIGluY3JlYXNlcyB0aGUgY2FsY3VsYXRlZCB2YWx1ZS4KICAgICAqLwogICAgcHVibGljIGNvbnN0IEZMT09SID0gNDsKCiAgICAvKioKICAgICAqIFJvdW5kcyB0b3dhcmRzICJuZWFyZXN0IG5laWdoYm9yIiB1bmxlc3MgYm90aCBuZWlnaGJvcnMgYXJlIGVxdWlkaXN0YW50LCBpbiB3aGljaCBjYXNlIHJvdW5kIHVwLgogICAgICoKICAgICAqIEJlaGF2ZXMgYXMgZm9yIFVQIGlmIHRoZSBkaXNjYXJkZWQgZnJhY3Rpb24gaXMgPj0gMC41OyBvdGhlcndpc2UsIGJlaGF2ZXMgYXMgZm9yIERPV04uCiAgICAgKiBOb3RlIHRoYXQgdGhpcyBpcyB0aGUgcm91bmRpbmcgbW9kZSBjb21tb25seSB0YXVnaHQgYXQgc2Nob29sLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgSEFMRl9VUCA9IDU7CgogICAgLyoqCiAgICAgKiBSb3VuZHMgdG93YXJkcyAibmVhcmVzdCBuZWlnaGJvciIgdW5sZXNzIGJvdGggbmVpZ2hib3JzIGFyZSBlcXVpZGlzdGFudCwgaW4gd2hpY2ggY2FzZSByb3VuZCBkb3duLgogICAgICoKICAgICAqIEJlaGF2ZXMgYXMgZm9yIFVQIGlmIHRoZSBkaXNjYXJkZWQgZnJhY3Rpb24gaXMgPiAwLjU7IG90aGVyd2lzZSwgYmVoYXZlcyBhcyBmb3IgRE9XTi4KICAgICAqLwogICAgcHVibGljIGNvbnN0IEhBTEZfRE9XTiA9IDY7CgogICAgLyoqCiAgICAgKiBSb3VuZHMgdG93YXJkcyAibmVhcmVzdCBuZWlnaGJvciIgdW5sZXNzIGJvdGggbmVpZ2hib3JzIGFyZSBlcXVpZGlzdGFudCwgaW4gd2hpY2ggY2FzZSByb3VuZCB0b3dhcmRzIHBvc2l0aXZlIGluZmluaXR5LgogICAgICoKICAgICAqIElmIHRoZSByZXN1bHQgaXMgcG9zaXRpdmUsIGJlaGF2ZXMgYXMgZm9yIEhBTEZfVVA7IGlmIG5lZ2F0aXZlLCBiZWhhdmVzIGFzIGZvciBIQUxGX0RPV04uCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBIQUxGX0NFSUxJTkcgPSA3OwoKICAgIC8qKgogICAgICogUm91bmRzIHRvd2FyZHMgIm5lYXJlc3QgbmVpZ2hib3IiIHVubGVzcyBib3RoIG5laWdoYm9ycyBhcmUgZXF1aWRpc3RhbnQsIGluIHdoaWNoIGNhc2Ugcm91bmQgdG93YXJkcyBuZWdhdGl2ZSBpbmZpbml0eS4KICAgICAqCiAgICAgKiBJZiB0aGUgcmVzdWx0IGlzIHBvc2l0aXZlLCBiZWhhdmVzIGFzIGZvciBIQUxGX0RPV047IGlmIG5lZ2F0aXZlLCBiZWhhdmVzIGFzIGZvciBIQUxGX1VQLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgSEFMRl9GTE9PUiA9IDg7CgogICAgLyoqCiAgICAgKiBSb3VuZHMgdG93YXJkcyB0aGUgIm5lYXJlc3QgbmVpZ2hib3IiIHVubGVzcyBib3RoIG5laWdoYm9ycyBhcmUgZXF1aWRpc3RhbnQsIGluIHdoaWNoIGNhc2Ugcm91bmRzIHRvd2FyZHMgdGhlIGV2ZW4gbmVpZ2hib3IuCiAgICAgKgogICAgICogQmVoYXZlcyBhcyBmb3IgSEFMRl9VUCBpZiB0aGUgZGlnaXQgdG8gdGhlIGxlZnQgb2YgdGhlIGRpc2NhcmRlZCBmcmFjdGlvbiBpcyBvZGQ7CiAgICAgKiBiZWhhdmVzIGFzIGZvciBIQUxGX0RPV04gaWYgaXQncyBldmVuLgogICAgICoKICAgICAqIE5vdGUgdGhhdCB0aGlzIGlzIHRoZSByb3VuZGluZyBtb2RlIHRoYXQgc3RhdGlzdGljYWxseSBtaW5pbWl6ZXMKICAgICAqIGN1bXVsYXRpdmUgZXJyb3Igd2hlbiBhcHBsaWVkIHJlcGVhdGVkbHkgb3ZlciBhIHNlcXVlbmNlIG9mIGNhbGN1bGF0aW9ucy4KICAgICAqIEl0IGlzIHNvbWV0aW1lcyBrbm93biBhcyAiQmFua2VyJ3Mgcm91bmRpbmciLCBhbmQgaXMgY2hpZWZseSB1c2VkIGluIHRoZSBVU0EuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBIQUxGX0VWRU4gPSA5Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_classmap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX2NsYXNzbWFwLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgokdmVuZG9yRGlyID0gZGlybmFtZShfX0RJUl9fKTsKJGJhc2VEaXIgPSBkaXJuYW1lKCR2ZW5kb3JEaXIpOwoKcmV0dXJuIGFycmF5KAogICAgJ0F0dHJpYnV0ZScgPT4gJHZlbmRvckRpciAuICcvc3ltZm9ueS9wb2x5ZmlsbC1waHA4MC9SZXNvdXJjZXMvc3R1YnMvQXR0cmlidXRlLnBocCcsCiAgICAnQ29tcG9zZXJcXEluc3RhbGxlZFZlcnNpb25zJyA9PiAkdmVuZG9yRGlyIC4gJy9jb21wb3Nlci9JbnN0YWxsZWRWZXJzaW9ucy5waHAnLAogICAgJ1BocFRva2VuJyA9PiAkdmVuZG9yRGlyIC4gJy9zeW1mb255L3BvbHlmaWxsLXBocDgwL1Jlc291cmNlcy9zdHVicy9QaHBUb2tlbi5waHAnLAogICAgJ1N0cmluZ2FibGUnID0+ICR2ZW5kb3JEaXIgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwODAvUmVzb3VyY2VzL3N0dWJzL1N0cmluZ2FibGUucGhwJywKICAgICdVbmhhbmRsZWRNYXRjaEVycm9yJyA9PiAkdmVuZG9yRGlyIC4gJy9zeW1mb255L3BvbHlmaWxsLXBocDgwL1Jlc291cmNlcy9zdHVicy9VbmhhbmRsZWRNYXRjaEVycm9yLnBocCcsCiAgICAnVmFsdWVFcnJvcicgPT4gJHZlbmRvckRpciAuICcvc3ltZm9ueS9wb2x5ZmlsbC1waHA4MC9SZXNvdXJjZXMvc3R1YnMvVmFsdWVFcnJvci5waHAnLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_files.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX2ZpbGVzLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgokdmVuZG9yRGlyID0gZGlybmFtZShfX0RJUl9fKTsKJGJhc2VEaXIgPSBkaXJuYW1lKCR2ZW5kb3JEaXIpOwoKcmV0dXJuIGFycmF5KAogICAgJzZlM2ZhZTI5NjMxZWYyODA2NjBiM2NkYWQwNmYyNWE4JyA9PiAkdmVuZG9yRGlyIC4gJy9zeW1mb255L2RlcHJlY2F0aW9uLWNvbnRyYWN0cy9mdW5jdGlvbi5waHAnLAogICAgJ2E0YTExOWE1NmU1MGZiYjI5MzI4MWQ5YTQ4MDA3ZTBlJyA9PiAkdmVuZG9yRGlyIC4gJy9zeW1mb255L3BvbHlmaWxsLXBocDgwL2Jvb3RzdHJhcC5waHAnLAogICAgJzdiMTFjNGRjNDJiM2IzMDIzMDczY2IxNGU1MTk2ODNjJyA9PiAkdmVuZG9yRGlyIC4gJy9yYWxvdXBoaWUvZ2V0YWxsaGVhZGVycy9zcmMvZ2V0YWxsaGVhZGVycy5waHAnLAogICAgJzM3YTNkYzUxMTFmZThmNzA3YWI0YzEzMmVmMWRiYzYyJyA9PiAkdmVuZG9yRGlyIC4gJy9ndXp6bGVodHRwL2d1enpsZS9zcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwJywKKTsK]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_namespaces.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX25hbWVzcGFjZXMucGhwIEBnZW5lcmF0ZWQgYnkgQ29tcG9zZXIKCiR2ZW5kb3JEaXIgPSBkaXJuYW1lKF9fRElSX18pOwokYmFzZURpciA9IGRpcm5hbWUoJHZlbmRvckRpcik7CgpyZXR1cm4gYXJyYXkoCik7Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_psr4.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX3BzcjQucGhwIEBnZW5lcmF0ZWQgYnkgQ29tcG9zZXIKCiR2ZW5kb3JEaXIgPSBkaXJuYW1lKF9fRElSX18pOwokYmFzZURpciA9IGRpcm5hbWUoJHZlbmRvckRpcik7CgpyZXR1cm4gYXJyYXkoCiAgICAnU3ltZm9ueVxcUG9seWZpbGxcXFBocDgwXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwODAnKSwKICAgICdQc3JcXEh0dHBcXE1lc3NhZ2VcXCcgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvcHNyL2h0dHAtZmFjdG9yeS9zcmMnLCAkdmVuZG9yRGlyIC4gJy9wc3IvaHR0cC1tZXNzYWdlL3NyYycpLAogICAgJ1BzclxcSHR0cFxcQ2xpZW50XFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL3Bzci9odHRwLWNsaWVudC9zcmMnKSwKICAgICdNaW5pc2hsaW5rXFxXZWJQdXNoXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL21pbmlzaGxpbmsvd2ViLXB1c2gvc3JjJyksCiAgICAnSm9zZVxcQ29tcG9uZW50XFxTaWduYXR1cmVcXEFsZ29yaXRobVxcJyA9PiBhcnJheSgkdmVuZG9yRGlyIC4gJy93ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZWNkc2EnKSwKICAgICdKb3NlXFxDb21wb25lbnRcXFNpZ25hdHVyZVxcJyA9PiBhcnJheSgkdmVuZG9yRGlyIC4gJy93ZWItdG9rZW4vand0LXNpZ25hdHVyZScpLAogICAgJ0pvc2VcXENvbXBvbmVudFxcS2V5TWFuYWdlbWVudFxcJyA9PiBhcnJheSgkdmVuZG9yRGlyIC4gJy93ZWItdG9rZW4vand0LWtleS1tZ210JyksCiAgICAnSm9zZVxcQ29tcG9uZW50XFxDb3JlXFxVdGlsXFxFY2NcXCcgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvd2ViLXRva2VuL2p3dC11dGlsLWVjYycpLAogICAgJ0pvc2VcXENvbXBvbmVudFxcQ29yZVxcJyA9PiBhcnJheSgkdmVuZG9yRGlyIC4gJy93ZWItdG9rZW4vand0LWNvcmUnKSwKICAgICdHdXp6bGVIdHRwXFxQc3I3XFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL2d1enpsZWh0dHAvcHNyNy9zcmMnKSwKICAgICdHdXp6bGVIdHRwXFxQcm9taXNlXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL2d1enpsZWh0dHAvcHJvbWlzZXMvc3JjJyksCiAgICAnR3V6emxlSHR0cFxcJyA9PiBhcnJheSgkdmVuZG9yRGlyIC4gJy9ndXp6bGVodHRwL2d1enpsZS9zcmMnKSwKICAgICdGR1xcJyA9PiBhcnJheSgkdmVuZG9yRGlyIC4gJy9mZ3Jvc3NlL3BocGFzbjEvbGliJyksCiAgICAnQnJpY2tcXE1hdGhcXCcgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvYnJpY2svbWF0aC9zcmMnKSwKICAgICdCYXNlNjRVcmxcXCcgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvc3BvbWt5LWxhYnMvYmFzZTY0dXJsL3NyYycpLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_real.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX3JlYWwucGhwIEBnZW5lcmF0ZWQgYnkgQ29tcG9zZXIKCmNsYXNzIENvbXBvc2VyQXV0b2xvYWRlckluaXQ5ZjQxZWI0ZDRiNTJiODMzYzUzOGYzNjdhMThhNDMwYQp7CiAgICBwcml2YXRlIHN0YXRpYyAkbG9hZGVyOwoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZENsYXNzTG9hZGVyKCRjbGFzcykKICAgIHsKICAgICAgICBpZiAoJ0NvbXBvc2VyXEF1dG9sb2FkXENsYXNzTG9hZGVyJyA9PT0gJGNsYXNzKSB7CiAgICAgICAgICAgIHJlcXVpcmUgX19ESVJfXyAuICcvQ2xhc3NMb2FkZXIucGhwJzsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxDb21wb3NlclxBdXRvbG9hZFxDbGFzc0xvYWRlcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldExvYWRlcigpCiAgICB7CiAgICAgICAgaWYgKG51bGwgIT09IHNlbGY6OiRsb2FkZXIpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OiRsb2FkZXI7CiAgICAgICAgfQoKICAgICAgICByZXF1aXJlIF9fRElSX18gLiAnL3BsYXRmb3JtX2NoZWNrLnBocCc7CgogICAgICAgIHNwbF9hdXRvbG9hZF9yZWdpc3RlcihhcnJheSgnQ29tcG9zZXJBdXRvbG9hZGVySW5pdDlmNDFlYjRkNGI1MmI4MzNjNTM4ZjM2N2ExOGE0MzBhJywgJ2xvYWRDbGFzc0xvYWRlcicpLCB0cnVlLCB0cnVlKTsKICAgICAgICBzZWxmOjokbG9hZGVyID0gJGxvYWRlciA9IG5ldyBcQ29tcG9zZXJcQXV0b2xvYWRcQ2xhc3NMb2FkZXIoXGRpcm5hbWUoX19ESVJfXykpOwogICAgICAgIHNwbF9hdXRvbG9hZF91bnJlZ2lzdGVyKGFycmF5KCdDb21wb3NlckF1dG9sb2FkZXJJbml0OWY0MWViNGQ0YjUyYjgzM2M1MzhmMzY3YTE4YTQzMGEnLCAnbG9hZENsYXNzTG9hZGVyJykpOwoKICAgICAgICByZXF1aXJlIF9fRElSX18gLiAnL2F1dG9sb2FkX3N0YXRpYy5waHAnOwogICAgICAgIGNhbGxfdXNlcl9mdW5jKFxDb21wb3NlclxBdXRvbG9hZFxDb21wb3NlclN0YXRpY0luaXQ5ZjQxZWI0ZDRiNTJiODMzYzUzOGYzNjdhMThhNDMwYTo6Z2V0SW5pdGlhbGl6ZXIoJGxvYWRlcikpOwoKICAgICAgICAkbG9hZGVyLT5yZWdpc3Rlcih0cnVlKTsKCiAgICAgICAgJGZpbGVzVG9Mb2FkID0gXENvbXBvc2VyXEF1dG9sb2FkXENvbXBvc2VyU3RhdGljSW5pdDlmNDFlYjRkNGI1MmI4MzNjNTM4ZjM2N2ExOGE0MzBhOjokZmlsZXM7CiAgICAgICAgJHJlcXVpcmVGaWxlID0gXENsb3N1cmU6OmJpbmQoc3RhdGljIGZ1bmN0aW9uICgkZmlsZUlkZW50aWZpZXIsICRmaWxlKSB7CiAgICAgICAgICAgIGlmIChlbXB0eSgkR0xPQkFMU1snX19jb21wb3Nlcl9hdXRvbG9hZF9maWxlcyddWyRmaWxlSWRlbnRpZmllcl0pKSB7CiAgICAgICAgICAgICAgICAkR0xPQkFMU1snX19jb21wb3Nlcl9hdXRvbG9hZF9maWxlcyddWyRmaWxlSWRlbnRpZmllcl0gPSB0cnVlOwoKICAgICAgICAgICAgICAgIHJlcXVpcmUgJGZpbGU7CiAgICAgICAgICAgIH0KICAgICAgICB9LCBudWxsLCBudWxsKTsKICAgICAgICBmb3JlYWNoICgkZmlsZXNUb0xvYWQgYXMgJGZpbGVJZGVudGlmaWVyID0+ICRmaWxlKSB7CiAgICAgICAgICAgICRyZXF1aXJlRmlsZSgkZmlsZUlkZW50aWZpZXIsICRmaWxlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbG9hZGVyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_static.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX3N0YXRpYy5waHAgQGdlbmVyYXRlZCBieSBDb21wb3NlcgoKbmFtZXNwYWNlIENvbXBvc2VyXEF1dG9sb2FkOwoKY2xhc3MgQ29tcG9zZXJTdGF0aWNJbml0OWY0MWViNGQ0YjUyYjgzM2M1MzhmMzY3YTE4YTQzMGEKewogICAgcHVibGljIHN0YXRpYyAkZmlsZXMgPSBhcnJheSAoCiAgICAgICAgJzZlM2ZhZTI5NjMxZWYyODA2NjBiM2NkYWQwNmYyNWE4JyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3N5bWZvbnkvZGVwcmVjYXRpb24tY29udHJhY3RzL2Z1bmN0aW9uLnBocCcsCiAgICAgICAgJ2E0YTExOWE1NmU1MGZiYjI5MzI4MWQ5YTQ4MDA3ZTBlJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwODAvYm9vdHN0cmFwLnBocCcsCiAgICAgICAgJzdiMTFjNGRjNDJiM2IzMDIzMDczY2IxNGU1MTk2ODNjJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzL3NyYy9nZXRhbGxoZWFkZXJzLnBocCcsCiAgICAgICAgJzM3YTNkYzUxMTFmZThmNzA3YWI0YzEzMmVmMWRiYzYyJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2d1enpsZWh0dHAvZ3V6emxlL3NyYy9mdW5jdGlvbnNfaW5jbHVkZS5waHAnLAogICAgKTsKCiAgICBwdWJsaWMgc3RhdGljICRwcmVmaXhMZW5ndGhzUHNyNCA9IGFycmF5ICgKICAgICAgICAnUycgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdTeW1mb255XFxQb2x5ZmlsbFxcUGhwODBcXCcgPT4gMjMsCiAgICAgICAgKSwKICAgICAgICAnUCcgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdQc3JcXEh0dHBcXE1lc3NhZ2VcXCcgPT4gMTcsCiAgICAgICAgICAgICdQc3JcXEh0dHBcXENsaWVudFxcJyA9PiAxNiwKICAgICAgICApLAogICAgICAgICdNJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgJ01pbmlzaGxpbmtcXFdlYlB1c2hcXCcgPT4gMTksCiAgICAgICAgKSwKICAgICAgICAnSicgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdKb3NlXFxDb21wb25lbnRcXFNpZ25hdHVyZVxcQWxnb3JpdGhtXFwnID0+IDM1LAogICAgICAgICAgICAnSm9zZVxcQ29tcG9uZW50XFxTaWduYXR1cmVcXCcgPT4gMjUsCiAgICAgICAgICAgICdKb3NlXFxDb21wb25lbnRcXEtleU1hbmFnZW1lbnRcXCcgPT4gMjksCiAgICAgICAgICAgICdKb3NlXFxDb21wb25lbnRcXENvcmVcXFV0aWxcXEVjY1xcJyA9PiAyOSwKICAgICAgICAgICAgJ0pvc2VcXENvbXBvbmVudFxcQ29yZVxcJyA9PiAyMCwKICAgICAgICApLAogICAgICAgICdHJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgJ0d1enpsZUh0dHBcXFBzcjdcXCcgPT4gMTYsCiAgICAgICAgICAgICdHdXp6bGVIdHRwXFxQcm9taXNlXFwnID0+IDE5LAogICAgICAgICAgICAnR3V6emxlSHR0cFxcJyA9PiAxMSwKICAgICAgICApLAogICAgICAgICdGJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgJ0ZHXFwnID0+IDMsCiAgICAgICAgKSwKICAgICAgICAnQicgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdCcmlja1xcTWF0aFxcJyA9PiAxMSwKICAgICAgICAgICAgJ0Jhc2U2NFVybFxcJyA9PiAxMCwKICAgICAgICApLAogICAgKTsKCiAgICBwdWJsaWMgc3RhdGljICRwcmVmaXhEaXJzUHNyNCA9IGFycmF5ICgKICAgICAgICAnU3ltZm9ueVxcUG9seWZpbGxcXFBocDgwXFwnID0+CiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvc3ltZm9ueS9wb2x5ZmlsbC1waHA4MCcsCiAgICAgICAgKSwKICAgICAgICAnUHNyXFxIdHRwXFxNZXNzYWdlXFwnID0+CiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvcHNyL2h0dHAtZmFjdG9yeS9zcmMnLAogICAgICAgICAgICAxID0+IF9fRElSX18gLiAnLy4uJyAuICcvcHNyL2h0dHAtbWVzc2FnZS9zcmMnLAogICAgICAgICksCiAgICAgICAgJ1BzclxcSHR0cFxcQ2xpZW50XFwnID0+CiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvcHNyL2h0dHAtY2xpZW50L3NyYycsCiAgICAgICAgKSwKICAgICAgICAnTWluaXNobGlua1xcV2ViUHVzaFxcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL21pbmlzaGxpbmsvd2ViLXB1c2gvc3JjJywKICAgICAgICApLAogICAgICAgICdKb3NlXFxDb21wb25lbnRcXFNpZ25hdHVyZVxcQWxnb3JpdGhtXFwnID0+CiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvd2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVjZHNhJywKICAgICAgICApLAogICAgICAgICdKb3NlXFxDb21wb25lbnRcXFNpZ25hdHVyZVxcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3dlYi10b2tlbi9qd3Qtc2lnbmF0dXJlJywKICAgICAgICApLAogICAgICAgICdKb3NlXFxDb21wb25lbnRcXEtleU1hbmFnZW1lbnRcXCcgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy93ZWItdG9rZW4vand0LWtleS1tZ210JywKICAgICAgICApLAogICAgICAgICdKb3NlXFxDb21wb25lbnRcXENvcmVcXFV0aWxcXEVjY1xcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3dlYi10b2tlbi9qd3QtdXRpbC1lY2MnLAogICAgICAgICksCiAgICAgICAgJ0pvc2VcXENvbXBvbmVudFxcQ29yZVxcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3dlYi10b2tlbi9qd3QtY29yZScsCiAgICAgICAgKSwKICAgICAgICAnR3V6emxlSHR0cFxcUHNyN1xcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2d1enpsZWh0dHAvcHNyNy9zcmMnLAogICAgICAgICksCiAgICAgICAgJ0d1enpsZUh0dHBcXFByb21pc2VcXCcgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9ndXp6bGVodHRwL3Byb21pc2VzL3NyYycsCiAgICAgICAgKSwKICAgICAgICAnR3V6emxlSHR0cFxcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2d1enpsZWh0dHAvZ3V6emxlL3NyYycsCiAgICAgICAgKSwKICAgICAgICAnRkdcXCcgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9mZ3Jvc3NlL3BocGFzbjEvbGliJywKICAgICAgICApLAogICAgICAgICdCcmlja1xcTWF0aFxcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2JyaWNrL21hdGgvc3JjJywKICAgICAgICApLAogICAgICAgICdCYXNlNjRVcmxcXCcgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9zcG9ta3ktbGFicy9iYXNlNjR1cmwvc3JjJywKICAgICAgICApLAogICAgKTsKCiAgICBwdWJsaWMgc3RhdGljICRjbGFzc01hcCA9IGFycmF5ICgKICAgICAgICAnQXR0cmlidXRlJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwODAvUmVzb3VyY2VzL3N0dWJzL0F0dHJpYnV0ZS5waHAnLAogICAgICAgICdDb21wb3NlclxcSW5zdGFsbGVkVmVyc2lvbnMnID0+IF9fRElSX18gLiAnLy4uJyAuICcvY29tcG9zZXIvSW5zdGFsbGVkVmVyc2lvbnMucGhwJywKICAgICAgICAnUGhwVG9rZW4nID0+IF9fRElSX18gLiAnLy4uJyAuICcvc3ltZm9ueS9wb2x5ZmlsbC1waHA4MC9SZXNvdXJjZXMvc3R1YnMvUGhwVG9rZW4ucGhwJywKICAgICAgICAnU3RyaW5nYWJsZScgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9zeW1mb255L3BvbHlmaWxsLXBocDgwL1Jlc291cmNlcy9zdHVicy9TdHJpbmdhYmxlLnBocCcsCiAgICAgICAgJ1VuaGFuZGxlZE1hdGNoRXJyb3InID0+IF9fRElSX18gLiAnLy4uJyAuICcvc3ltZm9ueS9wb2x5ZmlsbC1waHA4MC9SZXNvdXJjZXMvc3R1YnMvVW5oYW5kbGVkTWF0Y2hFcnJvci5waHAnLAogICAgICAgICdWYWx1ZUVycm9yJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwODAvUmVzb3VyY2VzL3N0dWJzL1ZhbHVlRXJyb3IucGhwJywKICAgICk7CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRJbml0aWFsaXplcihDbGFzc0xvYWRlciAkbG9hZGVyKQogICAgewogICAgICAgIHJldHVybiBcQ2xvc3VyZTo6YmluZChmdW5jdGlvbiAoKSB1c2UgKCRsb2FkZXIpIHsKICAgICAgICAgICAgJGxvYWRlci0+cHJlZml4TGVuZ3Roc1BzcjQgPSBDb21wb3NlclN0YXRpY0luaXQ5ZjQxZWI0ZDRiNTJiODMzYzUzOGYzNjdhMThhNDMwYTo6JHByZWZpeExlbmd0aHNQc3I0OwogICAgICAgICAgICAkbG9hZGVyLT5wcmVmaXhEaXJzUHNyNCA9IENvbXBvc2VyU3RhdGljSW5pdDlmNDFlYjRkNGI1MmI4MzNjNTM4ZjM2N2ExOGE0MzBhOjokcHJlZml4RGlyc1BzcjQ7CiAgICAgICAgICAgICRsb2FkZXItPmNsYXNzTWFwID0gQ29tcG9zZXJTdGF0aWNJbml0OWY0MWViNGQ0YjUyYjgzM2M1MzhmMzY3YTE4YTQzMGE6OiRjbGFzc01hcDsKCiAgICAgICAgfSwgbnVsbCwgQ2xhc3NMb2FkZXI6OmNsYXNzKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/ClassLoader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIENvbXBvc2VyLgogKgogKiAoYykgTmlscyBBZGVybWFubiA8bmFkZXJtYW5AbmFkZXJtYW4uZGU+CiAqICAgICBKb3JkaSBCb2dnaWFubyA8ai5ib2dnaWFub0BzZWxkLmJlPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgQ29tcG9zZXJcQXV0b2xvYWQ7CgovKioKICogQ2xhc3NMb2FkZXIgaW1wbGVtZW50cyBhIFBTUi0wLCBQU1ItNCBhbmQgY2xhc3NtYXAgY2xhc3MgbG9hZGVyLgogKgogKiAgICAgJGxvYWRlciA9IG5ldyBcQ29tcG9zZXJcQXV0b2xvYWRcQ2xhc3NMb2FkZXIoKTsKICoKICogICAgIC8vIHJlZ2lzdGVyIGNsYXNzZXMgd2l0aCBuYW1lc3BhY2VzCiAqICAgICAkbG9hZGVyLT5hZGQoJ1N5bWZvbnlcQ29tcG9uZW50JywgX19ESVJfXy4nL2NvbXBvbmVudCcpOwogKiAgICAgJGxvYWRlci0+YWRkKCdTeW1mb255JywgICAgICAgICAgIF9fRElSX18uJy9mcmFtZXdvcmsnKTsKICoKICogICAgIC8vIGFjdGl2YXRlIHRoZSBhdXRvbG9hZGVyCiAqICAgICAkbG9hZGVyLT5yZWdpc3RlcigpOwogKgogKiAgICAgLy8gdG8gZW5hYmxlIHNlYXJjaGluZyB0aGUgaW5jbHVkZSBwYXRoIChlZy4gZm9yIFBFQVIgcGFja2FnZXMpCiAqICAgICAkbG9hZGVyLT5zZXRVc2VJbmNsdWRlUGF0aCh0cnVlKTsKICoKICogSW4gdGhpcyBleGFtcGxlLCBpZiB5b3UgdHJ5IHRvIHVzZSBhIGNsYXNzIGluIHRoZSBTeW1mb255XENvbXBvbmVudAogKiBuYW1lc3BhY2Ugb3Igb25lIG9mIGl0cyBjaGlsZHJlbiAoU3ltZm9ueVxDb21wb25lbnRcQ29uc29sZSBmb3IgaW5zdGFuY2UpLAogKiB0aGUgYXV0b2xvYWRlciB3aWxsIGZpcnN0IGxvb2sgZm9yIHRoZSBjbGFzcyB1bmRlciB0aGUgY29tcG9uZW50LwogKiBkaXJlY3RvcnksIGFuZCBpdCB3aWxsIHRoZW4gZmFsbGJhY2sgdG8gdGhlIGZyYW1ld29yay8gZGlyZWN0b3J5IGlmIG5vdAogKiBmb3VuZCBiZWZvcmUgZ2l2aW5nIHVwLgogKgogKiBUaGlzIGNsYXNzIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlIFN5bWZvbnkgVW5pdmVyc2FsQ2xhc3NMb2FkZXIuCiAqCiAqIEBhdXRob3IgRmFiaWVuIFBvdGVuY2llciA8ZmFiaWVuQHN5bWZvbnkuY29tPgogKiBAYXV0aG9yIEpvcmRpIEJvZ2dpYW5vIDxqLmJvZ2dpYW5vQHNlbGQuYmU+CiAqIEBzZWUgICAgaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci0wLwogKiBAc2VlICAgIGh0dHBzOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItNC8KICovCmNsYXNzIENsYXNzTG9hZGVyCnsKICAgIC8qKiBAdmFyIFxDbG9zdXJlKHN0cmluZyk6dm9pZCAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJGluY2x1ZGVGaWxlOwoKICAgIC8qKiBAdmFyIHN0cmluZ3xudWxsICovCiAgICBwcml2YXRlICR2ZW5kb3JEaXI7CgogICAgLy8gUFNSLTQKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIGFycmF5PHN0cmluZywgaW50Pj4KICAgICAqLwogICAgcHJpdmF0ZSAkcHJlZml4TGVuZ3Roc1BzcjQgPSBhcnJheSgpOwogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgbGlzdDxzdHJpbmc+PgogICAgICovCiAgICBwcml2YXRlICRwcmVmaXhEaXJzUHNyNCA9IGFycmF5KCk7CiAgICAvKioKICAgICAqIEB2YXIgbGlzdDxzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgJGZhbGxiYWNrRGlyc1BzcjQgPSBhcnJheSgpOwoKICAgIC8vIFBTUi0wCiAgICAvKioKICAgICAqIExpc3Qgb2YgUFNSLTAgcHJlZml4ZXMKICAgICAqCiAgICAgKiBTdHJ1Y3R1cmVkIGFzIGFycmF5KCdGIChmaXJzdCBsZXR0ZXIpJyA9PiBhcnJheSgnRm9vXEJhciAoZnVsbCBwcmVmaXgpJyA9PiBhcnJheSgncGF0aCcsICdwYXRoMicpKSkKICAgICAqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgYXJyYXk8c3RyaW5nLCBsaXN0PHN0cmluZz4+PgogICAgICovCiAgICBwcml2YXRlICRwcmVmaXhlc1BzcjAgPSBhcnJheSgpOwogICAgLyoqCiAgICAgKiBAdmFyIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwcml2YXRlICRmYWxsYmFja0RpcnNQc3IwID0gYXJyYXkoKTsKCiAgICAvKiogQHZhciBib29sICovCiAgICBwcml2YXRlICR1c2VJbmNsdWRlUGF0aCA9IGZhbHNlOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIHN0cmluZz4KICAgICAqLwogICAgcHJpdmF0ZSAkY2xhc3NNYXAgPSBhcnJheSgpOwoKICAgIC8qKiBAdmFyIGJvb2wgKi8KICAgIHByaXZhdGUgJGNsYXNzTWFwQXV0aG9yaXRhdGl2ZSA9IGZhbHNlOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIGJvb2w+CiAgICAgKi8KICAgIHByaXZhdGUgJG1pc3NpbmdDbGFzc2VzID0gYXJyYXkoKTsKCiAgICAvKiogQHZhciBzdHJpbmd8bnVsbCAqLwogICAgcHJpdmF0ZSAkYXBjdVByZWZpeDsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8c3RyaW5nLCBzZWxmPgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkcmVnaXN0ZXJlZExvYWRlcnMgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICR2ZW5kb3JEaXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR2ZW5kb3JEaXIgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT52ZW5kb3JEaXIgPSAkdmVuZG9yRGlyOwogICAgICAgIHNlbGY6OmluaXRpYWxpemVJbmNsdWRlQ2xvc3VyZSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsIGxpc3Q8c3RyaW5nPj4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFByZWZpeGVzKCkKICAgIHsKICAgICAgICBpZiAoIWVtcHR5KCR0aGlzLT5wcmVmaXhlc1BzcjApKSB7CiAgICAgICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuY19hcnJheSgnYXJyYXlfbWVyZ2UnLCBhcnJheV92YWx1ZXMoJHRoaXMtPnByZWZpeGVzUHNyMCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFycmF5KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PHN0cmluZywgbGlzdDxzdHJpbmc+PgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJlZml4ZXNQc3I0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByZWZpeERpcnNQc3I0OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBsaXN0PHN0cmluZz4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEZhbGxiYWNrRGlycygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5mYWxsYmFja0RpcnNQc3IwOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBsaXN0PHN0cmluZz4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEZhbGxiYWNrRGlyc1BzcjQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyNDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXk8c3RyaW5nLCBzdHJpbmc+IEFycmF5IG9mIGNsYXNzbmFtZSA9PiBwYXRoCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDbGFzc01hcCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jbGFzc01hcDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIHN0cmluZz4gJGNsYXNzTWFwIENsYXNzIHRvIGZpbGVuYW1lIG1hcAogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQ2xhc3NNYXAoYXJyYXkgJGNsYXNzTWFwKQogICAgewogICAgICAgIGlmICgkdGhpcy0+Y2xhc3NNYXApIHsKICAgICAgICAgICAgJHRoaXMtPmNsYXNzTWFwID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmNsYXNzTWFwLCAkY2xhc3NNYXApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5jbGFzc01hcCA9ICRjbGFzc01hcDsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWdpc3RlcnMgYSBzZXQgb2YgUFNSLTAgZGlyZWN0b3JpZXMgZm9yIGEgZ2l2ZW4gcHJlZml4LCBlaXRoZXIKICAgICAqIGFwcGVuZGluZyBvciBwcmVwZW5kaW5nIHRvIHRoZSBvbmVzIHByZXZpb3VzbHkgc2V0IGZvciB0aGlzIHByZWZpeC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAkcHJlZml4ICBUaGUgcHJlZml4CiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+fHN0cmluZyAkcGF0aHMgICBUaGUgUFNSLTAgcm9vdCBkaXJlY3RvcmllcwogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAgICAgICAgJHByZXBlbmQgV2hldGhlciB0byBwcmVwZW5kIHRoZSBkaXJlY3RvcmllcwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKCRwcmVmaXgsICRwYXRocywgJHByZXBlbmQgPSBmYWxzZSkKICAgIHsKICAgICAgICAkcGF0aHMgPSAoYXJyYXkpICRwYXRoczsKICAgICAgICBpZiAoISRwcmVmaXgpIHsKICAgICAgICAgICAgaWYgKCRwcmVwZW5kKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyMCA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgICAgICRwYXRocywKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyMAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3IwID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjAsCiAgICAgICAgICAgICAgICAgICAgJHBhdGhzCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkZmlyc3QgPSAkcHJlZml4WzBdOwogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnByZWZpeGVzUHNyMFskZmlyc3RdWyRwcmVmaXhdKSkgewogICAgICAgICAgICAkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF1bJHByZWZpeF0gPSAkcGF0aHM7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICgkcHJlcGVuZCkgewogICAgICAgICAgICAkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF1bJHByZWZpeF0gPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgICAgICRwYXRocywKICAgICAgICAgICAgICAgICR0aGlzLT5wcmVmaXhlc1BzcjBbJGZpcnN0XVskcHJlZml4XQogICAgICAgICAgICApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5wcmVmaXhlc1BzcjBbJGZpcnN0XVskcHJlZml4XSA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgJHRoaXMtPnByZWZpeGVzUHNyMFskZmlyc3RdWyRwcmVmaXhdLAogICAgICAgICAgICAgICAgJHBhdGhzCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVnaXN0ZXJzIGEgc2V0IG9mIFBTUi00IGRpcmVjdG9yaWVzIGZvciBhIGdpdmVuIG5hbWVzcGFjZSwgZWl0aGVyCiAgICAgKiBhcHBlbmRpbmcgb3IgcHJlcGVuZGluZyB0byB0aGUgb25lcyBwcmV2aW91c2x5IHNldCBmb3IgdGhpcyBuYW1lc3BhY2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgJHByZWZpeCAgVGhlIHByZWZpeC9uYW1lc3BhY2UsIHdpdGggdHJhaWxpbmcgJ1xcJwogICAgICogQHBhcmFtIGxpc3Q8c3RyaW5nPnxzdHJpbmcgJHBhdGhzICAgVGhlIFBTUi00IGJhc2UgZGlyZWN0b3JpZXMKICAgICAqIEBwYXJhbSBib29sICAgICAgICAgICAgICAgICRwcmVwZW5kIFdoZXRoZXIgdG8gcHJlcGVuZCB0aGUgZGlyZWN0b3JpZXMKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFBzcjQoJHByZWZpeCwgJHBhdGhzLCAkcHJlcGVuZCA9IGZhbHNlKQogICAgewogICAgICAgICRwYXRocyA9IChhcnJheSkgJHBhdGhzOwogICAgICAgIGlmICghJHByZWZpeCkgewogICAgICAgICAgICAvLyBSZWdpc3RlciBkaXJlY3RvcmllcyBmb3IgdGhlIHJvb3QgbmFtZXNwYWNlLgogICAgICAgICAgICBpZiAoJHByZXBlbmQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3I0ID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAgICAgJHBhdGhzLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3I0CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjQgPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyNCwKICAgICAgICAgICAgICAgICAgICAkcGF0aHMKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoIWlzc2V0KCR0aGlzLT5wcmVmaXhEaXJzUHNyNFskcHJlZml4XSkpIHsKICAgICAgICAgICAgLy8gUmVnaXN0ZXIgZGlyZWN0b3JpZXMgZm9yIGEgbmV3IG5hbWVzcGFjZS4KICAgICAgICAgICAgJGxlbmd0aCA9IHN0cmxlbigkcHJlZml4KTsKICAgICAgICAgICAgaWYgKCdcXCcgIT09ICRwcmVmaXhbJGxlbmd0aCAtIDFdKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiQSBub24tZW1wdHkgUFNSLTQgcHJlZml4IG11c3QgZW5kIHdpdGggYSBuYW1lc3BhY2Ugc2VwYXJhdG9yLiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5wcmVmaXhMZW5ndGhzUHNyNFskcHJlZml4WzBdXVskcHJlZml4XSA9ICRsZW5ndGg7CiAgICAgICAgICAgICR0aGlzLT5wcmVmaXhEaXJzUHNyNFskcHJlZml4XSA9ICRwYXRoczsKICAgICAgICB9IGVsc2VpZiAoJHByZXBlbmQpIHsKICAgICAgICAgICAgLy8gUHJlcGVuZCBkaXJlY3RvcmllcyBmb3IgYW4gYWxyZWFkeSByZWdpc3RlcmVkIG5hbWVzcGFjZS4KICAgICAgICAgICAgJHRoaXMtPnByZWZpeERpcnNQc3I0WyRwcmVmaXhdID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAkcGF0aHMsCiAgICAgICAgICAgICAgICAkdGhpcy0+cHJlZml4RGlyc1BzcjRbJHByZWZpeF0KICAgICAgICAgICAgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBBcHBlbmQgZGlyZWN0b3JpZXMgZm9yIGFuIGFscmVhZHkgcmVnaXN0ZXJlZCBuYW1lc3BhY2UuCiAgICAgICAgICAgICR0aGlzLT5wcmVmaXhEaXJzUHNyNFskcHJlZml4XSA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgJHRoaXMtPnByZWZpeERpcnNQc3I0WyRwcmVmaXhdLAogICAgICAgICAgICAgICAgJHBhdGhzCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVnaXN0ZXJzIGEgc2V0IG9mIFBTUi0wIGRpcmVjdG9yaWVzIGZvciBhIGdpdmVuIHByZWZpeCwKICAgICAqIHJlcGxhY2luZyBhbnkgb3RoZXJzIHByZXZpb3VzbHkgc2V0IGZvciB0aGlzIHByZWZpeC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAkcHJlZml4IFRoZSBwcmVmaXgKICAgICAqIEBwYXJhbSBsaXN0PHN0cmluZz58c3RyaW5nICRwYXRocyAgVGhlIFBTUi0wIGJhc2UgZGlyZWN0b3JpZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldCgkcHJlZml4LCAkcGF0aHMpCiAgICB7CiAgICAgICAgaWYgKCEkcHJlZml4KSB7CiAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3IwID0gKGFycmF5KSAkcGF0aHM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnByZWZpeGVzUHNyMFskcHJlZml4WzBdXVskcHJlZml4XSA9IChhcnJheSkgJHBhdGhzOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJlZ2lzdGVycyBhIHNldCBvZiBQU1ItNCBkaXJlY3RvcmllcyBmb3IgYSBnaXZlbiBuYW1lc3BhY2UsCiAgICAgKiByZXBsYWNpbmcgYW55IG90aGVycyBwcmV2aW91c2x5IHNldCBmb3IgdGhpcyBuYW1lc3BhY2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgJHByZWZpeCBUaGUgcHJlZml4L25hbWVzcGFjZSwgd2l0aCB0cmFpbGluZyAnXFwnCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+fHN0cmluZyAkcGF0aHMgIFRoZSBQU1ItNCBiYXNlIGRpcmVjdG9yaWVzCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRQc3I0KCRwcmVmaXgsICRwYXRocykKICAgIHsKICAgICAgICBpZiAoISRwcmVmaXgpIHsKICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjQgPSAoYXJyYXkpICRwYXRoczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbGVuZ3RoID0gc3RybGVuKCRwcmVmaXgpOwogICAgICAgICAgICBpZiAoJ1xcJyAhPT0gJHByZWZpeFskbGVuZ3RoIC0gMV0pIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJBIG5vbi1lbXB0eSBQU1ItNCBwcmVmaXggbXVzdCBlbmQgd2l0aCBhIG5hbWVzcGFjZSBzZXBhcmF0b3IuIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPnByZWZpeExlbmd0aHNQc3I0WyRwcmVmaXhbMF1dWyRwcmVmaXhdID0gJGxlbmd0aDsKICAgICAgICAgICAgJHRoaXMtPnByZWZpeERpcnNQc3I0WyRwcmVmaXhdID0gKGFycmF5KSAkcGF0aHM7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVHVybnMgb24gc2VhcmNoaW5nIHRoZSBpbmNsdWRlIHBhdGggZm9yIGNsYXNzIGZpbGVzLgogICAgICoKICAgICAqIEBwYXJhbSBib29sICR1c2VJbmNsdWRlUGF0aAogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VXNlSW5jbHVkZVBhdGgoJHVzZUluY2x1ZGVQYXRoKQogICAgewogICAgICAgICR0aGlzLT51c2VJbmNsdWRlUGF0aCA9ICR1c2VJbmNsdWRlUGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIENhbiBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSBhdXRvbG9hZGVyIHVzZXMgdGhlIGluY2x1ZGUgcGF0aCB0byBjaGVjawogICAgICogZm9yIGNsYXNzZXMuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVc2VJbmNsdWRlUGF0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51c2VJbmNsdWRlUGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIFR1cm5zIG9mZiBzZWFyY2hpbmcgdGhlIHByZWZpeCBhbmQgZmFsbGJhY2sgZGlyZWN0b3JpZXMgZm9yIGNsYXNzZXMKICAgICAqIHRoYXQgaGF2ZSBub3QgYmVlbiByZWdpc3RlcmVkIHdpdGggdGhlIGNsYXNzIG1hcC4KICAgICAqCiAgICAgKiBAcGFyYW0gYm9vbCAkY2xhc3NNYXBBdXRob3JpdGF0aXZlCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRDbGFzc01hcEF1dGhvcml0YXRpdmUoJGNsYXNzTWFwQXV0aG9yaXRhdGl2ZSkKICAgIHsKICAgICAgICAkdGhpcy0+Y2xhc3NNYXBBdXRob3JpdGF0aXZlID0gJGNsYXNzTWFwQXV0aG9yaXRhdGl2ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFNob3VsZCBjbGFzcyBsb29rdXAgZmFpbCBpZiBub3QgZm91bmQgaW4gdGhlIGN1cnJlbnQgY2xhc3MgbWFwPwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNDbGFzc01hcEF1dGhvcml0YXRpdmUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y2xhc3NNYXBBdXRob3JpdGF0aXZlOwogICAgfQoKICAgIC8qKgogICAgICogQVBDdSBwcmVmaXggdG8gdXNlIHRvIGNhY2hlIGZvdW5kL25vdC1mb3VuZCBjbGFzc2VzLCBpZiB0aGUgZXh0ZW5zaW9uIGlzIGVuYWJsZWQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRhcGN1UHJlZml4CiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRBcGN1UHJlZml4KCRhcGN1UHJlZml4KQogICAgewogICAgICAgICR0aGlzLT5hcGN1UHJlZml4ID0gZnVuY3Rpb25fZXhpc3RzKCdhcGN1X2ZldGNoJykgJiYgZmlsdGVyX3ZhcihpbmlfZ2V0KCdhcGMuZW5hYmxlZCcpLCBGSUxURVJfVkFMSURBVEVfQk9PTEVBTikgPyAkYXBjdVByZWZpeCA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgQVBDdSBwcmVmaXggaW4gdXNlLCBvciBudWxsIGlmIEFQQ3UgY2FjaGluZyBpcyBub3QgZW5hYmxlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBcGN1UHJlZml4KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFwY3VQcmVmaXg7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWdpc3RlcnMgdGhpcyBpbnN0YW5jZSBhcyBhbiBhdXRvbG9hZGVyLgogICAgICoKICAgICAqIEBwYXJhbSBib29sICRwcmVwZW5kIFdoZXRoZXIgdG8gcHJlcGVuZCB0aGUgYXV0b2xvYWRlciBvciBub3QKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlZ2lzdGVyKCRwcmVwZW5kID0gZmFsc2UpCiAgICB7CiAgICAgICAgc3BsX2F1dG9sb2FkX3JlZ2lzdGVyKGFycmF5KCR0aGlzLCAnbG9hZENsYXNzJyksIHRydWUsICRwcmVwZW5kKTsKCiAgICAgICAgaWYgKG51bGwgPT09ICR0aGlzLT52ZW5kb3JEaXIpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRwcmVwZW5kKSB7CiAgICAgICAgICAgIHNlbGY6OiRyZWdpc3RlcmVkTG9hZGVycyA9IGFycmF5KCR0aGlzLT52ZW5kb3JEaXIgPT4gJHRoaXMpICsgc2VsZjo6JHJlZ2lzdGVyZWRMb2FkZXJzOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHVuc2V0KHNlbGY6OiRyZWdpc3RlcmVkTG9hZGVyc1skdGhpcy0+dmVuZG9yRGlyXSk7CiAgICAgICAgICAgIHNlbGY6OiRyZWdpc3RlcmVkTG9hZGVyc1skdGhpcy0+dmVuZG9yRGlyXSA9ICR0aGlzOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFVucmVnaXN0ZXJzIHRoaXMgaW5zdGFuY2UgYXMgYW4gYXV0b2xvYWRlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVucmVnaXN0ZXIoKQogICAgewogICAgICAgIHNwbF9hdXRvbG9hZF91bnJlZ2lzdGVyKGFycmF5KCR0aGlzLCAnbG9hZENsYXNzJykpOwoKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPnZlbmRvckRpcikgewogICAgICAgICAgICB1bnNldChzZWxmOjokcmVnaXN0ZXJlZExvYWRlcnNbJHRoaXMtPnZlbmRvckRpcl0pOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIExvYWRzIHRoZSBnaXZlbiBjbGFzcyBvciBpbnRlcmZhY2UuCiAgICAgKgogICAgICogQHBhcmFtICBzdHJpbmcgICAgJGNsYXNzIFRoZSBuYW1lIG9mIHRoZSBjbGFzcwogICAgICogQHJldHVybiB0cnVlfG51bGwgVHJ1ZSBpZiBsb2FkZWQsIG51bGwgb3RoZXJ3aXNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQ2xhc3MoJGNsYXNzKQogICAgewogICAgICAgIGlmICgkZmlsZSA9ICR0aGlzLT5maW5kRmlsZSgkY2xhc3MpKSB7CiAgICAgICAgICAgICRpbmNsdWRlRmlsZSA9IHNlbGY6OiRpbmNsdWRlRmlsZTsKICAgICAgICAgICAgJGluY2x1ZGVGaWxlKCRmaWxlKTsKCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBGaW5kcyB0aGUgcGF0aCB0byB0aGUgZmlsZSB3aGVyZSB0aGUgY2xhc3MgaXMgZGVmaW5lZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBUaGUgbmFtZSBvZiB0aGUgY2xhc3MKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xmYWxzZSBUaGUgcGF0aCBpZiBmb3VuZCwgZmFsc2Ugb3RoZXJ3aXNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmaW5kRmlsZSgkY2xhc3MpCiAgICB7CiAgICAgICAgLy8gY2xhc3MgbWFwIGxvb2t1cAogICAgICAgIGlmIChpc3NldCgkdGhpcy0+Y2xhc3NNYXBbJGNsYXNzXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jbGFzc01hcFskY2xhc3NdOwogICAgICAgIH0KICAgICAgICBpZiAoJHRoaXMtPmNsYXNzTWFwQXV0aG9yaXRhdGl2ZSB8fCBpc3NldCgkdGhpcy0+bWlzc2luZ0NsYXNzZXNbJGNsYXNzXSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmFwY3VQcmVmaXgpIHsKICAgICAgICAgICAgJGZpbGUgPSBhcGN1X2ZldGNoKCR0aGlzLT5hcGN1UHJlZml4LiRjbGFzcywgJGhpdCk7CiAgICAgICAgICAgIGlmICgkaGl0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGZpbGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRmaWxlID0gJHRoaXMtPmZpbmRGaWxlV2l0aEV4dGVuc2lvbigkY2xhc3MsICcucGhwJyk7CgogICAgICAgIC8vIFNlYXJjaCBmb3IgSGFjayBmaWxlcyBpZiB3ZSBhcmUgcnVubmluZyBvbiBISFZNCiAgICAgICAgaWYgKGZhbHNlID09PSAkZmlsZSAmJiBkZWZpbmVkKCdISFZNX1ZFUlNJT04nKSkgewogICAgICAgICAgICAkZmlsZSA9ICR0aGlzLT5maW5kRmlsZVdpdGhFeHRlbnNpb24oJGNsYXNzLCAnLmhoJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmFwY3VQcmVmaXgpIHsKICAgICAgICAgICAgYXBjdV9hZGQoJHRoaXMtPmFwY3VQcmVmaXguJGNsYXNzLCAkZmlsZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZmFsc2UgPT09ICRmaWxlKSB7CiAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoYXQgdGhpcyBjbGFzcyBkb2VzIG5vdCBleGlzdC4KICAgICAgICAgICAgJHRoaXMtPm1pc3NpbmdDbGFzc2VzWyRjbGFzc10gPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRmaWxlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgY3VycmVudGx5IHJlZ2lzdGVyZWQgbG9hZGVycyBrZXllZCBieSB0aGVpciBjb3JyZXNwb25kaW5nIHZlbmRvciBkaXJlY3Rvcmllcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5PHN0cmluZywgc2VsZj4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSZWdpc3RlcmVkTG9hZGVycygpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OiRyZWdpc3RlcmVkTG9hZGVyczsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICAgICRjbGFzcwogICAgICogQHBhcmFtICBzdHJpbmcgICAgICAgJGV4dAogICAgICogQHJldHVybiBzdHJpbmd8ZmFsc2UKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaW5kRmlsZVdpdGhFeHRlbnNpb24oJGNsYXNzLCAkZXh0KQogICAgewogICAgICAgIC8vIFBTUi00IGxvb2t1cAogICAgICAgICRsb2dpY2FsUGF0aFBzcjQgPSBzdHJ0cigkY2xhc3MsICdcXCcsIERJUkVDVE9SWV9TRVBBUkFUT1IpIC4gJGV4dDsKCiAgICAgICAgJGZpcnN0ID0gJGNsYXNzWzBdOwogICAgICAgIGlmIChpc3NldCgkdGhpcy0+cHJlZml4TGVuZ3Roc1BzcjRbJGZpcnN0XSkpIHsKICAgICAgICAgICAgJHN1YlBhdGggPSAkY2xhc3M7CiAgICAgICAgICAgIHdoaWxlIChmYWxzZSAhPT0gJGxhc3RQb3MgPSBzdHJycG9zKCRzdWJQYXRoLCAnXFwnKSkgewogICAgICAgICAgICAgICAgJHN1YlBhdGggPSBzdWJzdHIoJHN1YlBhdGgsIDAsICRsYXN0UG9zKTsKICAgICAgICAgICAgICAgICRzZWFyY2ggPSAkc3ViUGF0aCAuICdcXCc7CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnByZWZpeERpcnNQc3I0WyRzZWFyY2hdKSkgewogICAgICAgICAgICAgICAgICAgICRwYXRoRW5kID0gRElSRUNUT1JZX1NFUEFSQVRPUiAuIHN1YnN0cigkbG9naWNhbFBhdGhQc3I0LCAkbGFzdFBvcyArIDEpOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5wcmVmaXhEaXJzUHNyNFskc2VhcmNoXSBhcyAkZGlyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkZmlsZSA9ICRkaXIgLiAkcGF0aEVuZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkZmlsZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gUFNSLTQgZmFsbGJhY2sgZGlycwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5mYWxsYmFja0RpcnNQc3I0IGFzICRkaXIpIHsKICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlID0gJGRpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkbG9naWNhbFBhdGhQc3I0KSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRmaWxlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBQU1ItMCBsb29rdXAKICAgICAgICBpZiAoZmFsc2UgIT09ICRwb3MgPSBzdHJycG9zKCRjbGFzcywgJ1xcJykpIHsKICAgICAgICAgICAgLy8gbmFtZXNwYWNlZCBjbGFzcyBuYW1lCiAgICAgICAgICAgICRsb2dpY2FsUGF0aFBzcjAgPSBzdWJzdHIoJGxvZ2ljYWxQYXRoUHNyNCwgMCwgJHBvcyArIDEpCiAgICAgICAgICAgICAgICAuIHN0cnRyKHN1YnN0cigkbG9naWNhbFBhdGhQc3I0LCAkcG9zICsgMSksICdfJywgRElSRUNUT1JZX1NFUEFSQVRPUik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gUEVBUi1saWtlIGNsYXNzIG5hbWUKICAgICAgICAgICAgJGxvZ2ljYWxQYXRoUHNyMCA9IHN0cnRyKCRjbGFzcywgJ18nLCBESVJFQ1RPUllfU0VQQVJBVE9SKSAuICRleHQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnByZWZpeGVzUHNyMFskZmlyc3RdKSkgewogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF0gYXMgJHByZWZpeCA9PiAkZGlycykgewogICAgICAgICAgICAgICAgaWYgKDAgPT09IHN0cnBvcygkY2xhc3MsICRwcmVmaXgpKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRpcnMgYXMgJGRpcikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUgPSAkZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRsb2dpY2FsUGF0aFBzcjApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGZpbGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFBTUi0wIGZhbGxiYWNrIGRpcnMKICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyMCBhcyAkZGlyKSB7CiAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkZmlsZSA9ICRkaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGxvZ2ljYWxQYXRoUHNyMCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkZmlsZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gUFNSLTAgaW5jbHVkZSBwYXRocy4KICAgICAgICBpZiAoJHRoaXMtPnVzZUluY2x1ZGVQYXRoICYmICRmaWxlID0gc3RyZWFtX3Jlc29sdmVfaW5jbHVkZV9wYXRoKCRsb2dpY2FsUGF0aFBzcjApKSB7CiAgICAgICAgICAgIHJldHVybiAkZmlsZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBpbml0aWFsaXplSW5jbHVkZUNsb3N1cmUoKQogICAgewogICAgICAgIGlmIChzZWxmOjokaW5jbHVkZUZpbGUgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogU2NvcGUgaXNvbGF0ZWQgaW5jbHVkZS4KICAgICAgICAgKgogICAgICAgICAqIFByZXZlbnRzIGFjY2VzcyB0byAkdGhpcy9zZWxmIGZyb20gaW5jbHVkZWQgZmlsZXMuCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0gIHN0cmluZyAkZmlsZQogICAgICAgICAqIEByZXR1cm4gdm9pZAogICAgICAgICAqLwogICAgICAgIHNlbGY6OiRpbmNsdWRlRmlsZSA9IFxDbG9zdXJlOjpiaW5kKHN0YXRpYyBmdW5jdGlvbigkZmlsZSkgewogICAgICAgICAgICBpbmNsdWRlICRmaWxlOwogICAgICAgIH0sIG51bGwsIG51bGwpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/installed.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgInBhY2thZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiYnJpY2svbWF0aCIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuOS4zIiwKICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIwLjkuMy4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImNhNTdkMThmMDI4Zjg0Zjc3N2IyMTY4Y2QxOTExYjBkZWUyMzQzYWUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9icmljay9tYXRoL3ppcGJhbGwvY2E1N2QxOGYwMjhmODRmNzc3YjIxNjhjZDE5MTFiMGRlZTIzNDNhZSIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImNhNTdkMThmMDI4Zjg0Zjc3N2IyMTY4Y2QxOTExYjBkZWUyMzQzYWUiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgImV4dC1qc29uIjogIioiLAogICAgICAgICAgICAgICAgInBocCI6ICJeNy4xIHx8IF44LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHAtY292ZXJhbGxzL3BocC1jb3ZlcmFsbHMiOiAiXjIuMiIsCiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl43LjUuMTUgfHwgXjguNSB8fCBeOS4wIiwKICAgICAgICAgICAgICAgICJ2aW1lby9wc2FsbSI6ICI0LjkuMiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMS0wOC0xNVQyMDo1MDoxOCswMDowMCIsCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJCcmlja1xcTWF0aFxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQXJiaXRyYXJ5LXByZWNpc2lvbiBhcml0aG1ldGljIGxpYnJhcnkiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiQXJiaXRyYXJ5LXByZWNpc2lvbiIsCiAgICAgICAgICAgICAgICAiQmlnSW50ZWdlciIsCiAgICAgICAgICAgICAgICAiQmlnUmF0aW9uYWwiLAogICAgICAgICAgICAgICAgImFyaXRobWV0aWMiLAogICAgICAgICAgICAgICAgImJpZ2RlY2ltYWwiLAogICAgICAgICAgICAgICAgImJpZ251bSIsCiAgICAgICAgICAgICAgICAiYnJpY2siLAogICAgICAgICAgICAgICAgIm1hdGgiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC90cmVlLzAuOS4zIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9CZW5Nb3JlbCIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vdGlkZWxpZnQuY29tL2Z1bmRpbmcvZ2l0aHViL3BhY2thZ2lzdC9icmljay9tYXRoIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ0aWRlbGlmdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi9icmljay9tYXRoIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJmZ3Jvc3NlL3BocGFzbjEiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Mi41LjAiLAogICAgICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjIuNS4wLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0MjA2MGVkNDUzNDQ3ODlmYjlmMjFmOWYxODY0ZmM0N2I5ZTM1MDdiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvZmdyb3NzZS9QSFBBU04xL3ppcGJhbGwvNDIwNjBlZDQ1MzQ0Nzg5ZmI5ZjIxZjlmMTg2NGZjNDdiOWUzNTA3YiIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjQyMDYwZWQ0NTM0NDc4OWZiOWYyMWY5ZjE4NjRmYzQ3YjllMzUwN2IiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICJeNy4xIHx8IF44LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHAtY292ZXJhbGxzL3BocC1jb3ZlcmFsbHMiOiAifjIuMCIsCiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl43LjAgfHwgXjguMCB8fCBeOS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJleHQtYmNtYXRoIjogIkJDbWF0aCBpcyB0aGUgZmFsbGJhY2sgZXh0ZW5zaW9uIGZvciBiaWcgaW50ZWdlciBjYWxjdWxhdGlvbnMiLAogICAgICAgICAgICAgICAgImV4dC1jdXJsIjogIkZvciBsb2FkaW5nIE9JRCBpbmZvcm1hdGlvbiBmcm9tIHRoZSB3ZWIgaWYgdGhleSBoYXZlIG5vdCBiZWUgZGVmaW5lZCBzdGF0aWNhbGx5IiwKICAgICAgICAgICAgICAgICJleHQtZ21wIjogIkdNUCBpcyB0aGUgcHJlZmVycmVkIGV4dGVuc2lvbiBmb3IgYmlnIGludGVnZXIgY2FsY3VsYXRpb25zIiwKICAgICAgICAgICAgICAgICJwaHBzZWNsaWIvYmNtYXRoX2NvbXBhdCI6ICJCQ21hdGggcG9seWZpbGwgZm9yIHNlcnZlcnMgd2hlcmUgbmVpdGhlciBHTVAgbm9yIEJDbWF0aCBpcyBhdmFpbGFibGUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjItMTItMTlUMTE6MDg6MjYrMDA6MDAiLAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIyLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIkZHXFwiOiAibGliLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZyaWVkcmljaCBHcm/Dn2UiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJmcmllZHJpY2guZ3Jvc3NlQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GR3Jvc3NlIiwKICAgICAgICAgICAgICAgICAgICAicm9sZSI6ICJBdXRob3IiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vRkdyb3NzZS9QSFBBU04xL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgUEhQIEZyYW1ld29yayB0aGF0IGFsbG93cyB5b3UgdG8gZW5jb2RlIGFuZCBkZWNvZGUgYXJiaXRyYXJ5IEFTTi4xIHN0cnVjdHVyZXMgdXNpbmcgdGhlIElUVS1UIFguNjkwIEVuY29kaW5nIFJ1bGVzLiIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vRkdyb3NzZS9QSFBBU04xIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgIkRFUiIsCiAgICAgICAgICAgICAgICAiYXNuLjEiLAogICAgICAgICAgICAgICAgImFzbjEiLAogICAgICAgICAgICAgICAgImJlciIsCiAgICAgICAgICAgICAgICAiYmluYXJ5IiwKICAgICAgICAgICAgICAgICJkZWNvZGluZyIsCiAgICAgICAgICAgICAgICAiZW5jb2RpbmciLAogICAgICAgICAgICAgICAgInguNTA5IiwKICAgICAgICAgICAgICAgICJ4LjY5MCIsCiAgICAgICAgICAgICAgICAieDUwOSIsCiAgICAgICAgICAgICAgICAieDY5MCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAiaXNzdWVzIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvaXNzdWVzIiwKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS90cmVlL3YyLjUuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImFiYW5kb25lZCI6IHRydWUsCiAgICAgICAgICAgICJpbnN0YWxsLXBhdGgiOiAiLi4vZmdyb3NzZS9waHBhc24xIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJndXp6bGVodHRwL2d1enpsZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjcuMTIuMCIsCiAgICAgICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiNy4xMi4wLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZWFhODE1OTgwMzFjZjU3YTllMzYyNThjODU0NmRlZmZmYzk5NGNiYSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2d1enpsZS9ndXp6bGUvemlwYmFsbC9lYWE4MTU5ODAzMWNmNTdhOWUzNjI1OGM4NTQ2ZGVmZmZjOTk0Y2JhIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZWFhODE1OTgwMzFjZjU3YTllMzYyNThjODU0NmRlZmZmYzk5NGNiYSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWpzb24iOiAiKiIsCiAgICAgICAgICAgICAgICAiZ3V6emxlaHR0cC9wcm9taXNlcyI6ICJeMi41IiwKICAgICAgICAgICAgICAgICJndXp6bGVodHRwL3BzcjciOiAiXjIuMTIiLAogICAgICAgICAgICAgICAgInBocCI6ICJeNy4yLjUgfHwgXjguMCIsCiAgICAgICAgICAgICAgICAicHNyL2h0dHAtY2xpZW50IjogIl4xLjAiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvZGVwcmVjYXRpb24tY29udHJhY3RzIjogIl4yLjUgfHwgXjMuMCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS9wb2x5ZmlsbC1waHA4MCI6ICJeMS4yNCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInByb3ZpZGUiOiB7CiAgICAgICAgICAgICAgICAicHNyL2h0dHAtY2xpZW50LWltcGxlbWVudGF0aW9uIjogIjEuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgImJhbWFybmkvY29tcG9zZXItYmluLXBsdWdpbiI6ICJeMS44LjIiLAogICAgICAgICAgICAgICAgImV4dC1jdXJsIjogIioiLAogICAgICAgICAgICAgICAgImd1enpsZS9jbGllbnQtaW50ZWdyYXRpb24tdGVzdHMiOiAiMy4wLjIiLAogICAgICAgICAgICAgICAgImd1enpsZWh0dHAvdGVzdC1zZXJ2ZXIiOiAiXjAuNSIsCiAgICAgICAgICAgICAgICAicGhwLWh0dHAvbWVzc2FnZS1mYWN0b3J5IjogIl4xLjEiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeOC41LjUyIHx8IF45LjYuMzQiLAogICAgICAgICAgICAgICAgInBzci9sb2ciOiAiXjEuMSB8fCBeMi4wIHx8IF4zLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgImV4dC1jdXJsIjogIlJlcXVpcmVkIGZvciBDVVJMIGhhbmRsZXIgc3VwcG9ydCIsCiAgICAgICAgICAgICAgICAiZXh0LWludGwiOiAiUmVxdWlyZWQgZm9yIEludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lIChJRE4pIHN1cHBvcnQiLAogICAgICAgICAgICAgICAgInBzci9sb2ciOiAiUmVxdWlyZWQgZm9yIHVzaW5nIHRoZSBMb2cgbWlkZGxld2FyZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyNi0wNi0xNlQyMjoxMTo0OCswMDowMCIsCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYmFtYXJuaS1iaW4iOiB7CiAgICAgICAgICAgICAgICAgICAgImJpbi1saW5rcyI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgImZvcndhcmQtY29tbWFuZCI6IGZhbHNlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgInNyYy9mdW5jdGlvbnNfaW5jbHVkZS5waHAiCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJHdXp6bGVIdHRwXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkdyYWhhbSBDYW1wYmVsbCIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImhlbGxvQGdqY2FtcGJlbGwuY28udWsiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vR3JhaGFtQ2FtcGJlbGwiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm10ZG93bGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJKZXJlbXkgTGluZGJsb20iLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJqZXJlbWVhbWlhQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9qZXJlbWVhbWlhIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHZW9yZ2UgTXBvbm9zIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZ21wb25vc0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZ21wb25vcyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiVG9iaWFzIE55aG9sbSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInRvYmlhcy5ueWhvbG1AZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL055aG9sbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTcOhcmsgU8OhZ2ktS2F6w6FyIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAibWFyay5zYWdpa2F6YXJAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NhZ2lrYXphcm1hcmsiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlRvYmlhcyBTY2h1bHR6ZSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIndlYm1hc3RlckB0dWJvLXdvcmxkLmRlIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1RvYmlvbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkd1enpsZSBpcyBhIFBIUCBIVFRQIGNsaWVudCBsaWJyYXJ5IiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImNsaWVudCIsCiAgICAgICAgICAgICAgICAiY3VybCIsCiAgICAgICAgICAgICAgICAiZnJhbWV3b3JrIiwKICAgICAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgICAgICJodHRwIGNsaWVudCIsCiAgICAgICAgICAgICAgICAicHNyLTE4IiwKICAgICAgICAgICAgICAgICJwc3ItNyIsCiAgICAgICAgICAgICAgICAicmVzdCIsCiAgICAgICAgICAgICAgICAid2ViIHNlcnZpY2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS90cmVlLzcuMTIuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZ1bmRpbmciOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vR3JhaGFtQ2FtcGJlbGwiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTnlob2xtIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXRodWIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly90aWRlbGlmdC5jb20vZnVuZGluZy9naXRodWIvcGFja2FnaXN0L2d1enpsZWh0dHAvZ3V6emxlIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ0aWRlbGlmdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi9ndXp6bGVodHRwL2d1enpsZSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9wcm9taXNlcyIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNS4wIiwKICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIyLjUuMC4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHJvbWlzZXMuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNDM2MGU5ODJmODdmNWYyNThiZjg3MmQwOTQ2NDc3OTFkYjJmNGM4ZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2d1enpsZS9wcm9taXNlcy96aXBiYWxsLzQzNjBlOTgyZjg3ZjVmMjU4YmY4NzJkMDk0NjQ3NzkxZGIyZjRjOGUiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0MzYwZTk4MmY4N2Y1ZjI1OGJmODcyZDA5NDY0Nzc5MWRiMmY0YzhlIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjcuMi41IHx8IF44LjAiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvZGVwcmVjYXRpb24tY29udHJhY3RzIjogIl4yLjUgfHwgXjMuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgImJhbWFybmkvY29tcG9zZXItYmluLXBsdWdpbiI6ICJeMS44LjIiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeOC41LjUyIHx8IF45LjYuMzQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjYtMDYtMDJUMTI6MjM6NDMrMDA6MDAiLAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJhbWFybmktYmluIjogewogICAgICAgICAgICAgICAgICAgICJiaW4tbGlua3MiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICJmb3J3YXJkLWNvbW1hbmQiOiBmYWxzZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJHdXp6bGVIdHRwXFxQcm9taXNlXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkdyYWhhbSBDYW1wYmVsbCIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImhlbGxvQGdqY2FtcGJlbGwuY28udWsiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vR3JhaGFtQ2FtcGJlbGwiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm10ZG93bGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJUb2JpYXMgTnlob2xtIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAidG9iaWFzLm55aG9sbUBnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vTnlob2xtIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJUb2JpYXMgU2NodWx0emUiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ3ZWJtYXN0ZXJAdHViby13b3JsZC5kZSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ub2Jpb24iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJHdXp6bGUgcHJvbWlzZXMgbGlicmFyeSIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJwcm9taXNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wcm9taXNlcy9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3Byb21pc2VzL3RyZWUvMi41LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmdW5kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0dyYWhhbUNhbXBiZWxsIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXRodWIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL055aG9sbSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vdGlkZWxpZnQuY29tL2Z1bmRpbmcvZ2l0aHViL3BhY2thZ2lzdC9ndXp6bGVodHRwL3Byb21pc2VzIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ0aWRlbGlmdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi9ndXp6bGVodHRwL3Byb21pc2VzIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJndXp6bGVodHRwL3BzcjciLAogICAgICAgICAgICAidmVyc2lvbiI6ICIyLjEyLjAiLAogICAgICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjIuMTIuMC4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHNyNy5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5YjM4MDEyZTdiNTRmNTk0NzA3ZTZkYjUyYzY4NGRjMGE3NGIzYTQzIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvZ3V6emxlL3BzcjcvemlwYmFsbC85YjM4MDEyZTdiNTRmNTk0NzA3ZTZkYjUyYzY4NGRjMGE3NGIzYTQzIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiOWIzODAxMmU3YjU0ZjU5NDcwN2U2ZGI1MmM2ODRkYzBhNzRiM2E0MyIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIl43LjIuNSB8fCBeOC4wIiwKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1mYWN0b3J5IjogIl4xLjAiLAogICAgICAgICAgICAgICAgInBzci9odHRwLW1lc3NhZ2UiOiAiXjEuMSB8fCBeMi4wIiwKICAgICAgICAgICAgICAgICJyYWxvdXBoaWUvZ2V0YWxsaGVhZGVycyI6ICJeMy4wIiwKICAgICAgICAgICAgICAgICJzeW1mb255L2RlcHJlY2F0aW9uLWNvbnRyYWN0cyI6ICJeMi41IHx8IF4zLjAiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvcG9seWZpbGwtcGhwODAiOiAiXjEuMjQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJwcm92aWRlIjogewogICAgICAgICAgICAgICAgInBzci9odHRwLWZhY3RvcnktaW1wbGVtZW50YXRpb24iOiAiMS4wIiwKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1tZXNzYWdlLWltcGxlbWVudGF0aW9uIjogIjEuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgImJhbWFybmkvY29tcG9zZXItYmluLXBsdWdpbiI6ICJeMS44LjIiLAogICAgICAgICAgICAgICAgImh0dHAtaW50ZXJvcC9odHRwLWZhY3RvcnktdGVzdHMiOiAiMS4xLjAiLAogICAgICAgICAgICAgICAgImpzaHR0cC9taW1lLWRiIjogIjEuNTQuMC4xIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjguNS41MiB8fCBeOS42LjM0IgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJsYW1pbmFzL2xhbWluYXMtaHR0cGhhbmRsZXJydW5uZXIiOiAiRW1pdCBQU1ItNyByZXNwb25zZXMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjYtMDYtMTZUMjE6NTA6MTErMDA6MDAiLAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJhbWFybmktYmluIjogewogICAgICAgICAgICAgICAgICAgICJiaW4tbGlua3MiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICJmb3J3YXJkLWNvbW1hbmQiOiBmYWxzZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJHdXp6bGVIdHRwXFxQc3I3XFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkdyYWhhbSBDYW1wYmVsbCIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImhlbGxvQGdqY2FtcGJlbGwuY28udWsiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vR3JhaGFtQ2FtcGJlbGwiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm10ZG93bGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHZW9yZ2UgTXBvbm9zIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZ21wb25vc0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZ21wb25vcyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiVG9iaWFzIE55aG9sbSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInRvYmlhcy5ueWhvbG1AZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL055aG9sbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTcOhcmsgU8OhZ2ktS2F6w6FyIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAibWFyay5zYWdpa2F6YXJAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NhZ2lrYXphcm1hcmsiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlRvYmlhcyBTY2h1bHR6ZSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIndlYm1hc3RlckB0dWJvLXdvcmxkLmRlIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1RvYmlvbiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTcOhcmsgU8OhZ2ktS2F6w6FyIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAibWFyay5zYWdpa2F6YXJAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zYWdpa2F6YXJtYXJrLmh1IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUFNSLTcgbWVzc2FnZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGFsc28gcHJvdmlkZXMgY29tbW9uIHV0aWxpdHkgbWV0aG9kcyIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgICAgICJtZXNzYWdlIiwKICAgICAgICAgICAgICAgICJwc3ItNyIsCiAgICAgICAgICAgICAgICAicmVxdWVzdCIsCiAgICAgICAgICAgICAgICAicmVzcG9uc2UiLAogICAgICAgICAgICAgICAgInN0cmVhbSIsCiAgICAgICAgICAgICAgICAidXJpIiwKICAgICAgICAgICAgICAgICJ1cmwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3BzcjcvaXNzdWVzIiwKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3L3RyZWUvMi4xMi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HcmFoYW1DYW1wYmVsbCIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9OeWhvbG0iLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3RpZGVsaWZ0LmNvbS9mdW5kaW5nL2dpdGh1Yi9wYWNrYWdpc3QvZ3V6emxlaHR0cC9wc3I3IiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ0aWRlbGlmdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi9ndXp6bGVodHRwL3BzcjciCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIm1pbmlzaGxpbmsvd2ViLXB1c2giLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Ni4wLjciLAogICAgICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjYuMC43LjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wdXNoLWxpYnMvd2ViLXB1c2gtcGhwLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjIzYTc4Yjg1ODViZGNlY2FhMzIzZjFkZDFhY2RjNTQ4ZTI4ODkyZmUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocC96aXBiYWxsLzIzYTc4Yjg1ODViZGNlY2FhMzIzZjFkZDFhY2RjNTQ4ZTI4ODkyZmUiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIyM2E3OGI4NTg1YmRjZWNhYTMyM2YxZGQxYWNkYzU0OGUyODg5MmZlIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJleHQtY3VybCI6ICIqIiwKICAgICAgICAgICAgICAgICJleHQtanNvbiI6ICIqIiwKICAgICAgICAgICAgICAgICJleHQtbWJzdHJpbmciOiAiKiIsCiAgICAgICAgICAgICAgICAiZXh0LW9wZW5zc2wiOiAiKiIsCiAgICAgICAgICAgICAgICAiZ3V6emxlaHR0cC9ndXp6bGUiOiAiXjcuMC4xfF42LjIiLAogICAgICAgICAgICAgICAgInBocCI6ICI+PTcuMiIsCiAgICAgICAgICAgICAgICAid2ViLXRva2VuL2p3dC1rZXktbWdtdCI6ICJeMi4wIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LXNpZ25hdHVyZSI6ICJeMi4wIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZWNkc2EiOiAiXjIuMCIsCiAgICAgICAgICAgICAgICAid2ViLXRva2VuL2p3dC11dGlsLWVjYyI6ICJeMi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAiZnJpZW5kc29mcGhwL3BocC1jcy1maXhlciI6ICJeMi4xNCIsCiAgICAgICAgICAgICAgICAicGhwc3Rhbi9waHBzdGFuIjogIl4wLjExfF4wLjEyIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjguMHxeOS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGltZSI6ICIyMDIxLTExLTIyVDE3OjM2OjAxKzAwOjAwIiwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIk1pbmlzaGxpbmtcXFdlYlB1c2hcXCI6ICJzcmMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJMb3VpcyBMYWdyYW5nZSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImxhZ3JhbmdlLmxvdWlzQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NaW5pc2hsaW5rIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiV2ViIFB1c2ggbGlicmFyeSBmb3IgUEhQIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocCIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJQdXNoIEFQSSIsCiAgICAgICAgICAgICAgICAiV2ViUHVzaCIsCiAgICAgICAgICAgICAgICAibm90aWZpY2F0aW9ucyIsCiAgICAgICAgICAgICAgICAicHVzaCIsCiAgICAgICAgICAgICAgICAid2ViIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wdXNoLWxpYnMvd2ViLXB1c2gtcGhwL2lzc3VlcyIsCiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocC90cmVlL3Y2LjAuNyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi9taW5pc2hsaW5rL3dlYi1wdXNoIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJwc3IvaHR0cC1jbGllbnQiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCiAgICAgICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMS4wLjMuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLWNsaWVudC5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJiYjU5MDZlZGMxYzMyNGM5YTA1YWEwODczZDQwMTE3OTQxZTVmYTkwIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcGhwLWZpZy9odHRwLWNsaWVudC96aXBiYWxsL2JiNTkwNmVkYzFjMzI0YzlhMDVhYTA4NzNkNDAxMTc5NDFlNWZhOTAiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJiYjU5MDZlZGMxYzMyNGM5YTA1YWEwODczZDQwMTE3OTQxZTVmYTkwIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjcuMCB8fCBeOC4wIiwKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1tZXNzYWdlIjogIl4xLjAgfHwgXjIuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMy0wOS0yM1QxNDoxNzo1MCswMDowMCIsCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMC54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiUHNyXFxIdHRwXFxDbGllbnRcXCI6ICJzcmMvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiUEhQLUZJRyIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vd3d3LnBocC1maWcub3JnLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbW1vbiBpbnRlcmZhY2UgZm9yIEhUVFAgY2xpZW50cyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLWNsaWVudCIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgICAgICJodHRwLWNsaWVudCIsCiAgICAgICAgICAgICAgICAicHNyIiwKICAgICAgICAgICAgICAgICJwc3ItMTgiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLWNsaWVudCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi9wc3IvaHR0cC1jbGllbnQiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInBzci9odHRwLWZhY3RvcnkiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCiAgICAgICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMS4xLjAuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLWZhY3RvcnkuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMmI0NzY1ZmRkZmUzYjUwOGFjNjJmODI5ZTg1MmIxNTAxZDNmNmU4YSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3BocC1maWcvaHR0cC1mYWN0b3J5L3ppcGJhbGwvMmI0NzY1ZmRkZmUzYjUwOGFjNjJmODI5ZTg1MmIxNTAxZDNmNmU4YSIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjJiNDc2NWZkZGZlM2I1MDhhYzYyZjgyOWU4NTJiMTUwMWQzZjZlOGEiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTcuMSIsCiAgICAgICAgICAgICAgICAicHNyL2h0dHAtbWVzc2FnZSI6ICJeMS4wIHx8IF4yLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjQtMDQtMTVUMTI6MDY6MTQrMDA6MDAiLAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIlBzclxcSHR0cFxcTWVzc2FnZVxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJQSFAtRklHIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUFNSLTE3OiBDb21tb24gaW50ZXJmYWNlcyBmb3IgUFNSLTcgSFRUUCBtZXNzYWdlIGZhY3RvcmllcyIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJmYWN0b3J5IiwKICAgICAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgICAgICJtZXNzYWdlIiwKICAgICAgICAgICAgICAgICJwc3IiLAogICAgICAgICAgICAgICAgInBzci0xNyIsCiAgICAgICAgICAgICAgICAicHNyLTciLAogICAgICAgICAgICAgICAgInJlcXVlc3QiLAogICAgICAgICAgICAgICAgInJlc3BvbnNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1mYWN0b3J5IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3Bzci9odHRwLWZhY3RvcnkiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInBzci9odHRwLW1lc3NhZ2UiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAiLAogICAgICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjIuMC4wLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1tZXNzYWdlLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjQwMmQzNWJjYjkyYzcwYzAyNmQxYTZhOTg4M2YwNmIyZWFkMjNkNzEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9waHAtZmlnL2h0dHAtbWVzc2FnZS96aXBiYWxsLzQwMmQzNWJjYjkyYzcwYzAyNmQxYTZhOTg4M2YwNmIyZWFkMjNkNzEiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0MDJkMzViY2I5MmM3MGMwMjZkMWE2YTk4ODNmMDZiMmVhZDIzZDcxIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjcuMiB8fCBeOC4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGltZSI6ICIyMDIzLTA0LTA0VDA5OjU0OjUxKzAwOjAwIiwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMi4wLngtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJQc3JcXEh0dHBcXE1lc3NhZ2VcXCI6ICJzcmMvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiUEhQLUZJRyIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vd3d3LnBocC1maWcub3JnLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbW1vbiBpbnRlcmZhY2UgZm9yIEhUVFAgbWVzc2FnZXMiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1tZXNzYWdlIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImh0dHAiLAogICAgICAgICAgICAgICAgImh0dHAtbWVzc2FnZSIsCiAgICAgICAgICAgICAgICAicHNyIiwKICAgICAgICAgICAgICAgICJwc3ItNyIsCiAgICAgICAgICAgICAgICAicmVxdWVzdCIsCiAgICAgICAgICAgICAgICAicmVzcG9uc2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLW1lc3NhZ2UvdHJlZS8yLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJpbnN0YWxsLXBhdGgiOiAiLi4vcHNyL2h0dHAtbWVzc2FnZSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicmFsb3VwaGllL2dldGFsbGhlYWRlcnMiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMyIsCiAgICAgICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMy4wLjMuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcmFsb3VwaGllL2dldGFsbGhlYWRlcnMuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMTIwYjYwNWRmZWI5OTY4MDhjMzFiNjQ3NzI5MGE3MTRkMzU2ZTgyMiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzL3ppcGJhbGwvMTIwYjYwNWRmZWI5OTY4MDhjMzFiNjQ3NzI5MGE3MTRkMzU2ZTgyMiIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjEyMGI2MDVkZmViOTk2ODA4YzMxYjY0NzcyOTBhNzE0ZDM1NmU4MjIiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuNiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocC1jb3ZlcmFsbHMvcGhwLWNvdmVyYWxscyI6ICJeMi4xIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjUgfHwgXjYuNSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxOS0wMy0wOFQwODo1NTozNyswMDowMCIsCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvZ2V0YWxsaGVhZGVycy5waHAiCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJSYWxwaCBLaGF0dGFyIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAicmFscGgua2hhdHRhckBnbWFpbC5jb20iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHBvbHlmaWxsIGZvciBnZXRhbGxoZWFkZXJzLiIsCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vcmFsb3VwaGllL2dldGFsbGhlYWRlcnMvaXNzdWVzIiwKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzL3RyZWUvZGV2ZWxvcCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi9yYWxvdXBoaWUvZ2V0YWxsaGVhZGVycyIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvYmFzZTY0dXJsIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuMC40IiwKICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIyLjAuNC4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9iYXNlNjR1cmwuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNzc1MmNlOTMxZWMyODVkYTRlZDFmNGM1YWEyN2U0NWUwOTdiZTYxZCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL1Nwb21reS1MYWJzL2Jhc2U2NHVybC96aXBiYWxsLzc3NTJjZTkzMWVjMjg1ZGE0ZWQxZjRjNWFhMjdlNDVlMDk3YmU2MWQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI3NzUyY2U5MzFlYzI4NWRhNGVkMWY0YzVhYTI3ZTQ1ZTA5N2JlNjFkIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj03LjEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHBzdGFuL2V4dGVuc2lvbi1pbnN0YWxsZXIiOiAiXjEuMCIsCiAgICAgICAgICAgICAgICAicGhwc3Rhbi9waHBzdGFuIjogIl4wLjExfF4wLjEyIiwKICAgICAgICAgICAgICAgICJwaHBzdGFuL3BocHN0YW4tYmViZXJsZWktYXNzZXJ0IjogIl4wLjExfF4wLjEyIiwKICAgICAgICAgICAgICAgICJwaHBzdGFuL3BocHN0YW4tZGVwcmVjYXRpb24tcnVsZXMiOiAiXjAuMTF8XjAuMTIiLAogICAgICAgICAgICAgICAgInBocHN0YW4vcGhwc3Rhbi1waHB1bml0IjogIl4wLjExfF4wLjEyIiwKICAgICAgICAgICAgICAgICJwaHBzdGFuL3BocHN0YW4tc3RyaWN0LXJ1bGVzIjogIl4wLjExfF4wLjEyIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGltZSI6ICIyMDIwLTExLTAzVDA5OjEwOjI1KzAwOjAwIiwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIkJhc2U2NFVybFxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2Jhc2U2NHVybC9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJCYXNlIDY0IFVSTCBTYWZlIEVuY29kaW5nL0RlY29kaW5nIFBIUCBMaWJyYXJ5IiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9iYXNlNjR1cmwiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiYmFzZTY0IiwKICAgICAgICAgICAgICAgICJyZmM0NjQ4IiwKICAgICAgICAgICAgICAgICJzYWZlIiwKICAgICAgICAgICAgICAgICJ1cmwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsL2lzc3VlcyIsCiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9iYXNlNjR1cmwvdHJlZS92Mi4wLjQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmdW5kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnBhdHJlb24uY29tL0Zsb3JlbnRNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAicGF0cmVvbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi9zcG9ta3ktbGFicy9iYXNlNjR1cmwiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInN5bWZvbnkvZGVwcmVjYXRpb24tY29udHJhY3RzIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuNS40IiwKICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIyLjUuNC4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L2RlcHJlY2F0aW9uLWNvbnRyYWN0cy5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI2MDUzODlmMmE3ZTU2MjVmMjczYjUzOTYwZGM0NmFlYWY5YzYyOTE4IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc3ltZm9ueS9kZXByZWNhdGlvbi1jb250cmFjdHMvemlwYmFsbC82MDUzODlmMmE3ZTU2MjVmMjczYjUzOTYwZGM0NmFlYWY5YzYyOTE4IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNjA1Mzg5ZjJhN2U1NjI1ZjI3M2I1Mzk2MGRjNDZhZWFmOWM2MjkxOCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49Ny4xIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGltZSI6ICIyMDI0LTA5LTI1VDE0OjExOjEzKzAwOjAwIiwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJ0aGFua3MiOiB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9jb250cmFjdHMiLAogICAgICAgICAgICAgICAgICAgICJuYW1lIjogInN5bWZvbnkvY29udHJhY3RzIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYWluIjogIjIuNS1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uLnBocCIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk5pY29sYXMgR3Jla2FzIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAicEB0Y2h3b3JrLmNvbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgZ2VuZXJpYyBmdW5jdGlvbiBhbmQgY29udmVudGlvbiB0byB0cmlnZ2VyIGRlcHJlY2F0aW9uIG5vdGljZXMiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9kZXByZWNhdGlvbi1jb250cmFjdHMvdHJlZS92Mi41LjQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmdW5kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9zcG9uc29yIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZhYnBvdCIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vdGlkZWxpZnQuY29tL2Z1bmRpbmcvZ2l0aHViL3BhY2thZ2lzdC9zeW1mb255L3N5bWZvbnkiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInRpZGVsaWZ0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3N5bWZvbnkvZGVwcmVjYXRpb24tY29udHJhY3RzIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzeW1mb255L3BvbHlmaWxsLXBocDgwIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjEuMzcuMCIsCiAgICAgICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMS4zNy4wLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvcG9seWZpbGwtcGhwODAuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZGZiNTU3MjZjM2E3NmVhM2I2NDU5ZmNmZGExZWMyZDgwYTY4MjQxMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3N5bWZvbnkvcG9seWZpbGwtcGhwODAvemlwYmFsbC9kZmI1NTcyNmMzYTc2ZWEzYjY0NTlmY2ZkYTFlYzJkODBhNjgyNDExIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZGZiNTU3MjZjM2E3NmVhM2I2NDU5ZmNmZGExZWMyZDgwYTY4MjQxMSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49Ny4yIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGltZSI6ICIyMDI2LTA0LTEwVDE2OjE5OjIyKzAwOjAwIiwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJ0aGFua3MiOiB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9wb2x5ZmlsbCIsCiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAic3ltZm9ueS9wb2x5ZmlsbCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICAgICAgICAiYm9vdHN0cmFwLnBocCIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIlN5bWZvbnlcXFBvbHlmaWxsXFxQaHA4MFxcIjogIiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAiY2xhc3NtYXAiOiBbCiAgICAgICAgICAgICAgICAgICAgIlJlc291cmNlcy9zdHVicyIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIklvbiBCYXphbiIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImlvbi5iYXphbkBnbWFpbC5jb20iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk5pY29sYXMgR3Jla2FzIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAicEB0Y2h3b3JrLmNvbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN5bWZvbnkgcG9seWZpbGwgYmFja3BvcnRpbmcgc29tZSBQSFAgOC4wKyBmZWF0dXJlcyB0byBsb3dlciBQSFAgdmVyc2lvbnMiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJjb21wYXRpYmlsaXR5IiwKICAgICAgICAgICAgICAgICJwb2x5ZmlsbCIsCiAgICAgICAgICAgICAgICAicG9ydGFibGUiLAogICAgICAgICAgICAgICAgInNoaW0iCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9wb2x5ZmlsbC1waHA4MC90cmVlL3YxLjM3LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmdW5kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9zcG9uc29yIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZhYnBvdCIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9uaWNvbGFzLWdyZWthcyIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vdGlkZWxpZnQuY29tL2Z1bmRpbmcvZ2l0aHViL3BhY2thZ2lzdC9zeW1mb255L3N5bWZvbnkiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInRpZGVsaWZ0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3N5bWZvbnkvcG9seWZpbGwtcGhwODAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIndlYi10b2tlbi9qd3QtY29yZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInYyLjIuMTEiLAogICAgICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjIuMi4xMS4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWNvcmUuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNTNiZWI2ZjZjMWVlYzRmYTkzYzFjM2U1ZDllNTcwMWU3MWZhMTY3OCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3dlYi10b2tlbi9qd3QtY29yZS96aXBiYWxsLzUzYmViNmY2YzFlZWM0ZmE5M2MxYzNlNWQ5ZTU3MDFlNzFmYTE2NzgiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI1M2JlYjZmNmMxZWVjNGZhOTNjMWMzZTVkOWU1NzAxZTcxZmExNjc4IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJicmljay9tYXRoIjogIl4wLjguMTd8XjAuOSIsCiAgICAgICAgICAgICAgICAiZXh0LWpzb24iOiAiKiIsCiAgICAgICAgICAgICAgICAiZXh0LW1ic3RyaW5nIjogIioiLAogICAgICAgICAgICAgICAgImZncm9zc2UvcGhwYXNuMSI6ICJeMi4wIiwKICAgICAgICAgICAgICAgICJwaHAiOiAiPj03LjIiLAogICAgICAgICAgICAgICAgInNwb21reS1sYWJzL2Jhc2U2NHVybCI6ICJeMS4wfF4yLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJjb25mbGljdCI6IHsKICAgICAgICAgICAgICAgICJzcG9ta3ktbGFicy9qb3NlIjogIioiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjEtMDMtMTdUMTQ6NTU6NTIrMDA6MDAiLAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiSm9zZVxcQ29tcG9uZW50XFxDb3JlXFwiOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1mcmFtZXdvcmsvY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29yZSBjb21wb25lbnQgb2YgdGhlIEpXVCBGcmFtZXdvcmsuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiSk9TRSIsCiAgICAgICAgICAgICAgICAiSldFIiwKICAgICAgICAgICAgICAgICJKV0siLAogICAgICAgICAgICAgICAgIkpXS1NldCIsCiAgICAgICAgICAgICAgICAiSldTIiwKICAgICAgICAgICAgICAgICJKb3QiLAogICAgICAgICAgICAgICAgIlJGQzc1MTUiLAogICAgICAgICAgICAgICAgIlJGQzc1MTYiLAogICAgICAgICAgICAgICAgIlJGQzc1MTciLAogICAgICAgICAgICAgICAgIlJGQzc1MTgiLAogICAgICAgICAgICAgICAgIlJGQzc1MTkiLAogICAgICAgICAgICAgICAgIlJGQzc1MjAiLAogICAgICAgICAgICAgICAgImJ1bmRsZSIsCiAgICAgICAgICAgICAgICAiandhIiwKICAgICAgICAgICAgICAgICJqd3QiLAogICAgICAgICAgICAgICAgInN5bWZvbnkiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1jb3JlL3RyZWUvdjIuMi4xMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZ1bmRpbmciOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy5wYXRyZW9uLmNvbS9GbG9yZW50TW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInBhdHJlb24iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhYmFuZG9uZWQiOiAid2ViLXRva2VuL2p3dC1saWJyYXJ5IiwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi93ZWItdG9rZW4vand0LWNvcmUiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIndlYi10b2tlbi9qd3Qta2V5LW1nbXQiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Mi4yLjExIiwKICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIyLjIuMTEuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1rZXktbWdtdC5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIwYjExNjM3OTUxNTcwMGQyMzdiNGU1ZGU4Njg3OTA3OGNjYjA5ZDhhIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXRva2VuL2p3dC1rZXktbWdtdC96aXBiYWxsLzBiMTE2Mzc5NTE1NzAwZDIzN2I0ZTVkZTg2ODc5MDc4Y2NiMDlkOGEiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIwYjExNjM3OTUxNTcwMGQyMzdiNGU1ZGU4Njg3OTA3OGNjYjA5ZDhhIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJleHQtb3BlbnNzbCI6ICIqIiwKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1jbGllbnQiOiAiXjEuMCIsCiAgICAgICAgICAgICAgICAicHNyL2h0dHAtZmFjdG9yeSI6ICJeMS4wIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LWNvcmUiOiAiXjIuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAiZXh0LXNvZGl1bSI6ICJTb2RpdW0gaXMgcmVxdWlyZWQgZm9yIE9LUCBrZXkgY3JlYXRpb24sIEVkRFNBIHNpZ25hdHVyZSBhbGdvcml0aG0gYW5kIEVDREgtRVMga2V5IGVuY3J5cHRpb24gd2l0aCBPS1Aga2V5cyIsCiAgICAgICAgICAgICAgICAicGhwLWh0dHAvaHR0cGx1ZyI6ICJUbyBlbmFibGUgSktVL1g1VSBzdXBwb3J0LiIsCiAgICAgICAgICAgICAgICAicGhwLWh0dHAvbWVzc2FnZS1mYWN0b3J5IjogIlRvIGVuYWJsZSBKS1UvWDVVIHN1cHBvcnQuIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LXV0aWwtZWNjIjogIlRvIHVzZSBFQyBrZXkgYW5hbHl6ZXJzLiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMS0wMy0xN1QxNDo1NTo1MiswMDowMCIsCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJKb3NlXFxDb21wb25lbnRcXEtleU1hbmFnZW1lbnRcXCI6ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQWxsIGNvbnRyaWJ1dG9ycyIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWtleS1tZ210L2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIktleSBNYW5hZ2VtZW50IGNvbXBvbmVudCBvZiB0aGUgSldUIEZyYW1ld29yay4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbiIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJKT1NFIiwKICAgICAgICAgICAgICAgICJKV0UiLAogICAgICAgICAgICAgICAgIkpXSyIsCiAgICAgICAgICAgICAgICAiSldLU2V0IiwKICAgICAgICAgICAgICAgICJKV1MiLAogICAgICAgICAgICAgICAgIkpvdCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNSIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNiIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNyIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOSIsCiAgICAgICAgICAgICAgICAiUkZDNzUyMCIsCiAgICAgICAgICAgICAgICAiYnVuZGxlIiwKICAgICAgICAgICAgICAgICJqd2EiLAogICAgICAgICAgICAgICAgImp3dCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWtleS1tZ210L3RyZWUvdjIuMi4xMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZ1bmRpbmciOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy5wYXRyZW9uLmNvbS9GbG9yZW50TW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInBhdHJlb24iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhYmFuZG9uZWQiOiAid2ViLXRva2VuL2p3dC1saWJyYXJ5IiwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi93ZWItdG9rZW4vand0LWtleS1tZ210IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJ3ZWItdG9rZW4vand0LXNpZ25hdHVyZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInYyLjIuMTEiLAogICAgICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjIuMi4xMS4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LXNpZ25hdHVyZS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIwMTViNTlhYWYzYjZlOGZiOWY1YmQxMzM4ODQ1Yjc0NjRjN2Q4MTAzIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXRva2VuL2p3dC1zaWduYXR1cmUvemlwYmFsbC8wMTViNTlhYWYzYjZlOGZiOWY1YmQxMzM4ODQ1Yjc0NjRjN2Q4MTAzIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMDE1YjU5YWFmM2I2ZThmYjlmNWJkMTMzODg0NWI3NDY0YzdkODEwMyIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAid2ViLXRva2VuL2p3dC1jb3JlIjogIl4yLjEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1lY2RzYSI6ICJFQ0RTQSBCYXNlZCBTaWduYXR1cmUgQWxnb3JpdGhtcyIsCiAgICAgICAgICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVkZHNhIjogIkVkRFNBIEJhc2VkIFNpZ25hdHVyZSBBbGdvcml0aG1zIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZXhwZXJpbWVudGFsIjogIkV4cGVyaW1lbnRhbCBTaWduYXR1cmUgQWxnb3JpdGhtcyIsCiAgICAgICAgICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWhtYWMiOiAiSE1BQyBCYXNlZCBTaWduYXR1cmUgQWxnb3JpdGhtcyIsCiAgICAgICAgICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLW5vbmUiOiAiTm9uZSBTaWduYXR1cmUgQWxnb3JpdGhtIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tcnNhIjogIlJTQSBCYXNlZCBTaWduYXR1cmUgQWxnb3JpdGhtcyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMS0wMy0wMVQxOTo1NToyOCswMDowMCIsCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJKb3NlXFxDb21wb25lbnRcXFNpZ25hdHVyZVxcIjogIiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5IgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBbGwgY29udHJpYnV0b3JzIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3Qtc2lnbmF0dXJlL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNpZ25hdHVyZSBjb21wb25lbnQgb2YgdGhlIEpXVCBGcmFtZXdvcmsuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiSk9TRSIsCiAgICAgICAgICAgICAgICAiSldFIiwKICAgICAgICAgICAgICAgICJKV0siLAogICAgICAgICAgICAgICAgIkpXS1NldCIsCiAgICAgICAgICAgICAgICAiSldTIiwKICAgICAgICAgICAgICAgICJKb3QiLAogICAgICAgICAgICAgICAgIlJGQzc1MTUiLAogICAgICAgICAgICAgICAgIlJGQzc1MTYiLAogICAgICAgICAgICAgICAgIlJGQzc1MTciLAogICAgICAgICAgICAgICAgIlJGQzc1MTgiLAogICAgICAgICAgICAgICAgIlJGQzc1MTkiLAogICAgICAgICAgICAgICAgIlJGQzc1MjAiLAogICAgICAgICAgICAgICAgImJ1bmRsZSIsCiAgICAgICAgICAgICAgICAiandhIiwKICAgICAgICAgICAgICAgICJqd3QiLAogICAgICAgICAgICAgICAgInN5bWZvbnkiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1zaWduYXR1cmUvdHJlZS92Mi4yLjExIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnBhdHJlb24uY29tL0Zsb3JlbnRNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAicGF0cmVvbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImFiYW5kb25lZCI6ICJ3ZWItdG9rZW4vand0LWxpYnJhcnkiLAogICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3dlYi10b2tlbi9qd3Qtc2lnbmF0dXJlIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJ3ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZWNkc2EiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Mi4yLjExIiwKICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIyLjIuMTEuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVjZHNhLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjQ0Y2JiYjQzNzRjNTFmMWNmNDhiODJhZTc2MWVmYmYyNGUxYTg1OTEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy93ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZWNkc2EvemlwYmFsbC80NGNiYmI0Mzc0YzUxZjFjZjQ4YjgyYWU3NjFlZmJmMjRlMWE4NTkxIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNDRjYmJiNDM3NGM1MWYxY2Y0OGI4MmFlNzYxZWZiZjI0ZTFhODU5MSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZXh0LW9wZW5zc2wiOiAiKiIsCiAgICAgICAgICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUiOiAiXjIuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMS0wMS0yMVQxOToxODowMyswMDowMCIsCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJKb3NlXFxDb21wb25lbnRcXFNpZ25hdHVyZVxcQWxnb3JpdGhtXFwiOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1mcmFtZXdvcmsvY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRUNEU0EgQmFzZWQgU2lnbmF0dXJlIEFsZ29yaXRobXMgdGhlIEpXVCBGcmFtZXdvcmsuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiSk9TRSIsCiAgICAgICAgICAgICAgICAiSldFIiwKICAgICAgICAgICAgICAgICJKV0siLAogICAgICAgICAgICAgICAgIkpXS1NldCIsCiAgICAgICAgICAgICAgICAiSldTIiwKICAgICAgICAgICAgICAgICJKb3QiLAogICAgICAgICAgICAgICAgIlJGQzc1MTUiLAogICAgICAgICAgICAgICAgIlJGQzc1MTYiLAogICAgICAgICAgICAgICAgIlJGQzc1MTciLAogICAgICAgICAgICAgICAgIlJGQzc1MTgiLAogICAgICAgICAgICAgICAgIlJGQzc1MTkiLAogICAgICAgICAgICAgICAgIlJGQzc1MjAiLAogICAgICAgICAgICAgICAgImJ1bmRsZSIsCiAgICAgICAgICAgICAgICAiandhIiwKICAgICAgICAgICAgICAgICJqd3QiLAogICAgICAgICAgICAgICAgInN5bWZvbnkiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVjZHNhL3RyZWUvdjIuMi4xMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZ1bmRpbmciOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy5wYXRyZW9uLmNvbS9GbG9yZW50TW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInBhdHJlb24iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhYmFuZG9uZWQiOiAid2ViLXRva2VuL2p3dC1saWJyYXJ5IiwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi93ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZWNkc2EiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIndlYi10b2tlbi9qd3QtdXRpbC1lY2MiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Mi4yLjExIiwKICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIyLjIuMTEuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC11dGlsLWVjYy5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5MTVmM2ZkZTg2ZjUyMzZjMjA1NjIwZDYxMTc3YjllZjQzODYzZGViIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXRva2VuL2p3dC11dGlsLWVjYy96aXBiYWxsLzkxNWYzZmRlODZmNTIzNmMyMDU2MjBkNjExNzdiOWVmNDM4NjNkZWIiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5MTVmM2ZkZTg2ZjUyMzZjMjA1NjIwZDYxMTc3YjllZjQzODYzZGViIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJicmljay9tYXRoIjogIl4wLjguMTd8XjAuOSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWJjbWF0aCI6ICJHTVAgb3IgQkNNYXRoIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBpbXByb3ZlIHRoZSBsaWJyYXJ5IHBlcmZvcm1hbmNlIiwKICAgICAgICAgICAgICAgICJleHQtZ21wIjogIkdNUCBvciBCQ01hdGggaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRvIGltcHJvdmUgdGhlIGxpYnJhcnkgcGVyZm9ybWFuY2UiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjEtMDMtMjRUMTM6MzU6MTcrMDA6MDAiLAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiSm9zZVxcQ29tcG9uZW50XFxDb3JlXFxVdGlsXFxFY2NcXCI6ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQWxsIGNvbnRyaWJ1dG9ycyIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWZyYW1ld29yay9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFQ0MgVG9vbHMgZm9yIHRoZSBKV1QgRnJhbWV3b3JrLiIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgIkpPU0UiLAogICAgICAgICAgICAgICAgIkpXRSIsCiAgICAgICAgICAgICAgICAiSldLIiwKICAgICAgICAgICAgICAgICJKV0tTZXQiLAogICAgICAgICAgICAgICAgIkpXUyIsCiAgICAgICAgICAgICAgICAiSm90IiwKICAgICAgICAgICAgICAgICJSRkM3NTE1IiwKICAgICAgICAgICAgICAgICJSRkM3NTE2IiwKICAgICAgICAgICAgICAgICJSRkM3NTE3IiwKICAgICAgICAgICAgICAgICJSRkM3NTE4IiwKICAgICAgICAgICAgICAgICJSRkM3NTE5IiwKICAgICAgICAgICAgICAgICJSRkM3NTIwIiwKICAgICAgICAgICAgICAgICJidW5kbGUiLAogICAgICAgICAgICAgICAgImp3YSIsCiAgICAgICAgICAgICAgICAiand0IiwKICAgICAgICAgICAgICAgICJzeW1mb255IgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3QtdXRpbC1lY2MvdHJlZS92Mi4yLjExIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnBhdHJlb24uY29tL0Zsb3JlbnRNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAicGF0cmVvbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImFiYW5kb25lZCI6ICJ3ZWItdG9rZW4vand0LWxpYnJhcnkiLAogICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3dlYi10b2tlbi9qd3QtdXRpbC1lY2MiCiAgICAgICAgfQogICAgXSwKICAgICJkZXYiOiBmYWxzZSwKICAgICJkZXYtcGFja2FnZS1uYW1lcyI6IFtdCn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/installed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAgcmV0dXJuIGFycmF5KAogICAgJ3Jvb3QnID0+IGFycmF5KAogICAgICAgICduYW1lJyA9PiAnX19yb290X18nLAogICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJ2Rldi1tYWluJywKICAgICAgICAndmVyc2lvbicgPT4gJ2Rldi1tYWluJywKICAgICAgICAncmVmZXJlbmNlJyA9PiAnMjZmZWM0OTA1MTExYzZkNjI1MTBhMTBhNzk3YjYxMzA2NGFiYmRiNCcsCiAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi8uLi8nLAogICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICdkZXYnID0+IGZhbHNlLAogICAgKSwKICAgICd2ZXJzaW9ucycgPT4gYXJyYXkoCiAgICAgICAgJ19fcm9vdF9fJyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ByZXR0eV92ZXJzaW9uJyA9PiAnZGV2LW1haW4nLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJ2Rldi1tYWluJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJzI2ZmVjNDkwNTExMWM2ZDYyNTEwYTEwYTc5N2I2MTMwNjRhYmJkYjQnLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi8uLi8nLAogICAgICAgICAgICAnYWxpYXNlcycgPT4gYXJyYXkoKSwKICAgICAgICAgICAgJ2Rldl9yZXF1aXJlbWVudCcgPT4gZmFsc2UsCiAgICAgICAgKSwKICAgICAgICAnYnJpY2svbWF0aCcgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJzAuOS4zJywKICAgICAgICAgICAgJ3ZlcnNpb24nID0+ICcwLjkuMy4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJ2NhNTdkMThmMDI4Zjg0Zjc3N2IyMTY4Y2QxOTExYjBkZWUyMzQzYWUnLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi9icmljay9tYXRoJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ2Zncm9zc2UvcGhwYXNuMScgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJ3YyLjUuMCcsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnMi41LjAuMCcsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICc0MjA2MGVkNDUzNDQ3ODlmYjlmMjFmOWYxODY0ZmM0N2I5ZTM1MDdiJywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vZmdyb3NzZS9waHBhc24xJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ2d1enpsZWh0dHAvZ3V6emxlJyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ByZXR0eV92ZXJzaW9uJyA9PiAnNy4xMi4wJywKICAgICAgICAgICAgJ3ZlcnNpb24nID0+ICc3LjEyLjAuMCcsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICdlYWE4MTU5ODAzMWNmNTdhOWUzNjI1OGM4NTQ2ZGVmZmZjOTk0Y2JhJywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vZ3V6emxlaHR0cC9ndXp6bGUnLAogICAgICAgICAgICAnYWxpYXNlcycgPT4gYXJyYXkoKSwKICAgICAgICAgICAgJ2Rldl9yZXF1aXJlbWVudCcgPT4gZmFsc2UsCiAgICAgICAgKSwKICAgICAgICAnZ3V6emxlaHR0cC9wcm9taXNlcycgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJzIuNS4wJywKICAgICAgICAgICAgJ3ZlcnNpb24nID0+ICcyLjUuMC4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJzQzNjBlOTgyZjg3ZjVmMjU4YmY4NzJkMDk0NjQ3NzkxZGIyZjRjOGUnLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi9ndXp6bGVodHRwL3Byb21pc2VzJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJzIuMTIuMCcsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnMi4xMi4wLjAnLAogICAgICAgICAgICAncmVmZXJlbmNlJyA9PiAnOWIzODAxMmU3YjU0ZjU5NDcwN2U2ZGI1MmM2ODRkYzBhNzRiM2E0MycsCiAgICAgICAgICAgICd0eXBlJyA9PiAnbGlicmFyeScsCiAgICAgICAgICAgICdpbnN0YWxsX3BhdGgnID0+IF9fRElSX18gLiAnLy4uL2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICApLAogICAgICAgICdtaW5pc2hsaW5rL3dlYi1wdXNoJyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ByZXR0eV92ZXJzaW9uJyA9PiAndjYuMC43JywKICAgICAgICAgICAgJ3ZlcnNpb24nID0+ICc2LjAuNy4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJzIzYTc4Yjg1ODViZGNlY2FhMzIzZjFkZDFhY2RjNTQ4ZTI4ODkyZmUnLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi9taW5pc2hsaW5rL3dlYi1wdXNoJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ3Bzci9odHRwLWNsaWVudCcgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJzEuMC4zJywKICAgICAgICAgICAgJ3ZlcnNpb24nID0+ICcxLjAuMy4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJ2JiNTkwNmVkYzFjMzI0YzlhMDVhYTA4NzNkNDAxMTc5NDFlNWZhOTAnLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi9wc3IvaHR0cC1jbGllbnQnLAogICAgICAgICAgICAnYWxpYXNlcycgPT4gYXJyYXkoKSwKICAgICAgICAgICAgJ2Rldl9yZXF1aXJlbWVudCcgPT4gZmFsc2UsCiAgICAgICAgKSwKICAgICAgICAncHNyL2h0dHAtY2xpZW50LWltcGxlbWVudGF0aW9uJyA9PiBhcnJheSgKICAgICAgICAgICAgJ2Rldl9yZXF1aXJlbWVudCcgPT4gZmFsc2UsCiAgICAgICAgICAgICdwcm92aWRlZCcgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAwID0+ICcxLjAnLAogICAgICAgICAgICApLAogICAgICAgICksCiAgICAgICAgJ3Bzci9odHRwLWZhY3RvcnknID0+IGFycmF5KAogICAgICAgICAgICAncHJldHR5X3ZlcnNpb24nID0+ICcxLjEuMCcsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnMS4xLjAuMCcsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICcyYjQ3NjVmZGRmZTNiNTA4YWM2MmY4MjllODUyYjE1MDFkM2Y2ZThhJywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vcHNyL2h0dHAtZmFjdG9yeScsCiAgICAgICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICApLAogICAgICAgICdwc3IvaHR0cC1mYWN0b3J5LWltcGxlbWVudGF0aW9uJyA9PiBhcnJheSgKICAgICAgICAgICAgJ2Rldl9yZXF1aXJlbWVudCcgPT4gZmFsc2UsCiAgICAgICAgICAgICdwcm92aWRlZCcgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAwID0+ICcxLjAnLAogICAgICAgICAgICApLAogICAgICAgICksCiAgICAgICAgJ3Bzci9odHRwLW1lc3NhZ2UnID0+IGFycmF5KAogICAgICAgICAgICAncHJldHR5X3ZlcnNpb24nID0+ICcyLjAnLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJzIuMC4wLjAnLAogICAgICAgICAgICAncmVmZXJlbmNlJyA9PiAnNDAyZDM1YmNiOTJjNzBjMDI2ZDFhNmE5ODgzZjA2YjJlYWQyM2Q3MScsCiAgICAgICAgICAgICd0eXBlJyA9PiAnbGlicmFyeScsCiAgICAgICAgICAgICdpbnN0YWxsX3BhdGgnID0+IF9fRElSX18gLiAnLy4uL3Bzci9odHRwLW1lc3NhZ2UnLAogICAgICAgICAgICAnYWxpYXNlcycgPT4gYXJyYXkoKSwKICAgICAgICAgICAgJ2Rldl9yZXF1aXJlbWVudCcgPT4gZmFsc2UsCiAgICAgICAgKSwKICAgICAgICAncHNyL2h0dHAtbWVzc2FnZS1pbXBsZW1lbnRhdGlvbicgPT4gYXJyYXkoCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICAgICAncHJvdmlkZWQnID0+IGFycmF5KAogICAgICAgICAgICAgICAgMCA9PiAnMS4wJywKICAgICAgICAgICAgKSwKICAgICAgICApLAogICAgICAgICdyYWxvdXBoaWUvZ2V0YWxsaGVhZGVycycgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJzMuMC4zJywKICAgICAgICAgICAgJ3ZlcnNpb24nID0+ICczLjAuMy4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJzEyMGI2MDVkZmViOTk2ODA4YzMxYjY0NzcyOTBhNzE0ZDM1NmU4MjInLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi9yYWxvdXBoaWUvZ2V0YWxsaGVhZGVycycsCiAgICAgICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICApLAogICAgICAgICdzcG9ta3ktbGFicy9iYXNlNjR1cmwnID0+IGFycmF5KAogICAgICAgICAgICAncHJldHR5X3ZlcnNpb24nID0+ICd2Mi4wLjQnLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJzIuMC40LjAnLAogICAgICAgICAgICAncmVmZXJlbmNlJyA9PiAnNzc1MmNlOTMxZWMyODVkYTRlZDFmNGM1YWEyN2U0NWUwOTdiZTYxZCcsCiAgICAgICAgICAgICd0eXBlJyA9PiAnbGlicmFyeScsCiAgICAgICAgICAgICdpbnN0YWxsX3BhdGgnID0+IF9fRElSX18gLiAnLy4uL3Nwb21reS1sYWJzL2Jhc2U2NHVybCcsCiAgICAgICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICApLAogICAgICAgICdzeW1mb255L2RlcHJlY2F0aW9uLWNvbnRyYWN0cycgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJ3YyLjUuNCcsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnMi41LjQuMCcsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICc2MDUzODlmMmE3ZTU2MjVmMjczYjUzOTYwZGM0NmFlYWY5YzYyOTE4JywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vc3ltZm9ueS9kZXByZWNhdGlvbi1jb250cmFjdHMnLAogICAgICAgICAgICAnYWxpYXNlcycgPT4gYXJyYXkoKSwKICAgICAgICAgICAgJ2Rldl9yZXF1aXJlbWVudCcgPT4gZmFsc2UsCiAgICAgICAgKSwKICAgICAgICAnc3ltZm9ueS9wb2x5ZmlsbC1waHA4MCcgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJ3YxLjM3LjAnLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJzEuMzcuMC4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJ2RmYjU1NzI2YzNhNzZlYTNiNjQ1OWZjZmRhMWVjMmQ4MGE2ODI0MTEnLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi9zeW1mb255L3BvbHlmaWxsLXBocDgwJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ3dlYi10b2tlbi9qd3QtY29yZScgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJ3YyLjIuMTEnLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJzIuMi4xMS4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJzUzYmViNmY2YzFlZWM0ZmE5M2MxYzNlNWQ5ZTU3MDFlNzFmYTE2NzgnLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi93ZWItdG9rZW4vand0LWNvcmUnLAogICAgICAgICAgICAnYWxpYXNlcycgPT4gYXJyYXkoKSwKICAgICAgICAgICAgJ2Rldl9yZXF1aXJlbWVudCcgPT4gZmFsc2UsCiAgICAgICAgKSwKICAgICAgICAnd2ViLXRva2VuL2p3dC1rZXktbWdtdCcgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJ3YyLjIuMTEnLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJzIuMi4xMS4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJzBiMTE2Mzc5NTE1NzAwZDIzN2I0ZTVkZTg2ODc5MDc4Y2NiMDlkOGEnLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi93ZWItdG9rZW4vand0LWtleS1tZ210JywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ3dlYi10b2tlbi9qd3Qtc2lnbmF0dXJlJyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ByZXR0eV92ZXJzaW9uJyA9PiAndjIuMi4xMScsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnMi4yLjExLjAnLAogICAgICAgICAgICAncmVmZXJlbmNlJyA9PiAnMDE1YjU5YWFmM2I2ZThmYjlmNWJkMTMzODg0NWI3NDY0YzdkODEwMycsCiAgICAgICAgICAgICd0eXBlJyA9PiAnbGlicmFyeScsCiAgICAgICAgICAgICdpbnN0YWxsX3BhdGgnID0+IF9fRElSX18gLiAnLy4uL3dlYi10b2tlbi9qd3Qtc2lnbmF0dXJlJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ3dlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1lY2RzYScgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJ3YyLjIuMTEnLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJzIuMi4xMS4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJzQ0Y2JiYjQzNzRjNTFmMWNmNDhiODJhZTc2MWVmYmYyNGUxYTg1OTEnLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi93ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZWNkc2EnLAogICAgICAgICAgICAnYWxpYXNlcycgPT4gYXJyYXkoKSwKICAgICAgICAgICAgJ2Rldl9yZXF1aXJlbWVudCcgPT4gZmFsc2UsCiAgICAgICAgKSwKICAgICAgICAnd2ViLXRva2VuL2p3dC11dGlsLWVjYycgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJ3YyLjIuMTEnLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJzIuMi4xMS4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJzkxNWYzZmRlODZmNTIzNmMyMDU2MjBkNjExNzdiOWVmNDM4NjNkZWInLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi93ZWItdG9rZW4vand0LXV0aWwtZWNjJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICApLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/InstalledVersions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIENvbXBvc2VyLgogKgogKiAoYykgTmlscyBBZGVybWFubiA8bmFkZXJtYW5AbmFkZXJtYW4uZGU+CiAqICAgICBKb3JkaSBCb2dnaWFubyA8ai5ib2dnaWFub0BzZWxkLmJlPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgQ29tcG9zZXI7Cgp1c2UgQ29tcG9zZXJcQXV0b2xvYWRcQ2xhc3NMb2FkZXI7CnVzZSBDb21wb3NlclxTZW12ZXJcVmVyc2lvblBhcnNlcjsKCi8qKgogKiBUaGlzIGNsYXNzIGlzIGNvcGllZCBpbiBldmVyeSBDb21wb3NlciBpbnN0YWxsZWQgcHJvamVjdCBhbmQgYXZhaWxhYmxlIHRvIGFsbAogKgogKiBTZWUgYWxzbyBodHRwczovL2dldGNvbXBvc2VyLm9yZy9kb2MvMDctcnVudGltZS5tZCNpbnN0YWxsZWQtdmVyc2lvbnMKICoKICogVG8gcmVxdWlyZSBpdHMgcHJlc2VuY2UsIHlvdSBjYW4gcmVxdWlyZSBgY29tcG9zZXItcnVudGltZS1hcGkgXjIuMGAKICoKICogQGZpbmFsCiAqLwpjbGFzcyBJbnN0YWxsZWRWZXJzaW9ucwp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfG51bGwgaWYgc2V0IChieSByZWZsZWN0aW9uIGJ5IENvbXBvc2VyKSwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIHRoZSBwYXRoIHdoZXJlIHRoaXMgY2xhc3MgaXMgYmVpbmcgY29waWVkIHRvCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJHNlbGZEaXIgPSBudWxsOwoKICAgIC8qKgogICAgICogQHZhciBtaXhlZFtdfG51bGwKICAgICAqIEBwc2FsbS12YXIgYXJyYXl7cm9vdDogYXJyYXl7bmFtZTogc3RyaW5nLCBwcmV0dHlfdmVyc2lvbjogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nfG51bGwsIHR5cGU6IHN0cmluZywgaW5zdGFsbF9wYXRoOiBzdHJpbmcsIGFsaWFzZXM6IHN0cmluZ1tdLCBkZXY6IGJvb2x9LCB2ZXJzaW9uczogYXJyYXk8c3RyaW5nLCBhcnJheXtwcmV0dHlfdmVyc2lvbj86IHN0cmluZywgdmVyc2lvbj86IHN0cmluZywgcmVmZXJlbmNlPzogc3RyaW5nfG51bGwsIHR5cGU/OiBzdHJpbmcsIGluc3RhbGxfcGF0aD86IHN0cmluZywgYWxpYXNlcz86IHN0cmluZ1tdLCBkZXZfcmVxdWlyZW1lbnQ6IGJvb2wsIHJlcGxhY2VkPzogc3RyaW5nW10sIHByb3ZpZGVkPzogc3RyaW5nW119Pn18YXJyYXl7fXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljICRpbnN0YWxsZWQ7CgogICAgLyoqCiAgICAgKiBAdmFyIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJGluc3RhbGxlZElzTG9jYWxEaXI7CgogICAgLyoqCiAgICAgKiBAdmFyIGJvb2x8bnVsbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkY2FuR2V0VmVuZG9yczsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXlbXQogICAgICogQHBzYWxtLXZhciBhcnJheTxzdHJpbmcsIGFycmF5e3Jvb3Q6IGFycmF5e25hbWU6IHN0cmluZywgcHJldHR5X3ZlcnNpb246IHN0cmluZywgdmVyc2lvbjogc3RyaW5nLCByZWZlcmVuY2U6IHN0cmluZ3xudWxsLCB0eXBlOiBzdHJpbmcsIGluc3RhbGxfcGF0aDogc3RyaW5nLCBhbGlhc2VzOiBzdHJpbmdbXSwgZGV2OiBib29sfSwgdmVyc2lvbnM6IGFycmF5PHN0cmluZywgYXJyYXl7cHJldHR5X3ZlcnNpb24/OiBzdHJpbmcsIHZlcnNpb24/OiBzdHJpbmcsIHJlZmVyZW5jZT86IHN0cmluZ3xudWxsLCB0eXBlPzogc3RyaW5nLCBpbnN0YWxsX3BhdGg/OiBzdHJpbmcsIGFsaWFzZXM/OiBzdHJpbmdbXSwgZGV2X3JlcXVpcmVtZW50OiBib29sLCByZXBsYWNlZD86IHN0cmluZ1tdLCBwcm92aWRlZD86IHN0cmluZ1tdfT59PgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkaW5zdGFsbGVkQnlWZW5kb3IgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxpc3Qgb2YgYWxsIHBhY2thZ2UgbmFtZXMgd2hpY2ggYXJlIHByZXNlbnQsIGVpdGhlciBieSBiZWluZyBpbnN0YWxsZWQsIHJlcGxhY2VkIG9yIHByb3ZpZGVkCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICogQHBzYWxtLXJldHVybiBsaXN0PHN0cmluZz4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRJbnN0YWxsZWRQYWNrYWdlcygpCiAgICB7CiAgICAgICAgJHBhY2thZ2VzID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoIChzZWxmOjpnZXRJbnN0YWxsZWQoKSBhcyAkaW5zdGFsbGVkKSB7CiAgICAgICAgICAgICRwYWNrYWdlc1tdID0gYXJyYXlfa2V5cygkaW5zdGFsbGVkWyd2ZXJzaW9ucyddKTsKICAgICAgICB9CgogICAgICAgIGlmICgxID09PSBcY291bnQoJHBhY2thZ2VzKSkgewogICAgICAgICAgICByZXR1cm4gJHBhY2thZ2VzWzBdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFycmF5X2tleXMoYXJyYXlfZmxpcChcY2FsbF91c2VyX2Z1bmNfYXJyYXkoJ2FycmF5X21lcmdlJywgJHBhY2thZ2VzKSkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxpc3Qgb2YgYWxsIHBhY2thZ2UgbmFtZXMgd2l0aCBhIHNwZWNpZmljIHR5cGUgZS5nLiAnbGlicmFyeScKICAgICAqCiAgICAgKiBAcGFyYW0gIHN0cmluZyAgICR0eXBlCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKiBAcHNhbG0tcmV0dXJuIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEluc3RhbGxlZFBhY2thZ2VzQnlUeXBlKCR0eXBlKQogICAgewogICAgICAgICRwYWNrYWdlc0J5VHlwZSA9IGFycmF5KCk7CgogICAgICAgIGZvcmVhY2ggKHNlbGY6OmdldEluc3RhbGxlZCgpIGFzICRpbnN0YWxsZWQpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGluc3RhbGxlZFsndmVyc2lvbnMnXSBhcyAkbmFtZSA9PiAkcGFja2FnZSkgewogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRwYWNrYWdlWyd0eXBlJ10pICYmICRwYWNrYWdlWyd0eXBlJ10gPT09ICR0eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgJHBhY2thZ2VzQnlUeXBlW10gPSAkbmFtZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRwYWNrYWdlc0J5VHlwZTsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBwYWNrYWdlIGlzIGluc3RhbGxlZAogICAgICoKICAgICAqIFRoaXMgYWxzbyByZXR1cm5zIHRydWUgaWYgdGhlIHBhY2thZ2UgbmFtZSBpcyBwcm92aWRlZCBvciByZXBsYWNlZCBieSBhbm90aGVyIHBhY2thZ2UKICAgICAqCiAgICAgKiBAcGFyYW0gIHN0cmluZyAkcGFja2FnZU5hbWUKICAgICAqIEBwYXJhbSAgYm9vbCAgICRpbmNsdWRlRGV2UmVxdWlyZW1lbnRzCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0luc3RhbGxlZCgkcGFja2FnZU5hbWUsICRpbmNsdWRlRGV2UmVxdWlyZW1lbnRzID0gdHJ1ZSkKICAgIHsKICAgICAgICBmb3JlYWNoIChzZWxmOjpnZXRJbnN0YWxsZWQoKSBhcyAkaW5zdGFsbGVkKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGluY2x1ZGVEZXZSZXF1aXJlbWVudHMgfHwgIWlzc2V0KCRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXVsnZGV2X3JlcXVpcmVtZW50J10pIHx8ICRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXVsnZGV2X3JlcXVpcmVtZW50J10gPT09IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gcGFja2FnZSBzYXRpc2ZpZXMgYSB2ZXJzaW9uIGNvbnN0cmFpbnQKICAgICAqCiAgICAgKiBlLmcuIElmIHlvdSB3YW50IHRvIGtub3cgd2hldGhlciB2ZXJzaW9uIDIuMysgb2YgcGFja2FnZSBmb28vYmFyIGlzIGluc3RhbGxlZCwgeW91IHdvdWxkIGNhbGw6CiAgICAgKgogICAgICogICBDb21wb3NlclxJbnN0YWxsZWRWZXJzaW9uczo6c2F0aXNmaWVzKG5ldyBWZXJzaW9uUGFyc2VyLCAnZm9vL2JhcicsICdeMi4zJykKICAgICAqCiAgICAgKiBAcGFyYW0gIFZlcnNpb25QYXJzZXIgJHBhcnNlciAgICAgIEluc3RhbGwgY29tcG9zZXIvc2VtdmVyIHRvIGhhdmUgYWNjZXNzIHRvIHRoaXMgY2xhc3MgYW5kIGZ1bmN0aW9uYWxpdHkKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICAgICAkcGFja2FnZU5hbWUKICAgICAqIEBwYXJhbSAgc3RyaW5nfG51bGwgICAkY29uc3RyYWludCAgQSB2ZXJzaW9uIGNvbnN0cmFpbnQgdG8gY2hlY2sgZm9yLCBpZiB5b3UgcGFzcyBvbmUgeW91IGhhdmUgdG8gbWFrZSBzdXJlIGNvbXBvc2VyL3NlbXZlciBpcyByZXF1aXJlZCBieSB5b3VyIHBhY2thZ2UKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNhdGlzZmllcyhWZXJzaW9uUGFyc2VyICRwYXJzZXIsICRwYWNrYWdlTmFtZSwgJGNvbnN0cmFpbnQpCiAgICB7CiAgICAgICAgJGNvbnN0cmFpbnQgPSAkcGFyc2VyLT5wYXJzZUNvbnN0cmFpbnRzKChzdHJpbmcpICRjb25zdHJhaW50KTsKICAgICAgICAkcHJvdmlkZWQgPSAkcGFyc2VyLT5wYXJzZUNvbnN0cmFpbnRzKHNlbGY6OmdldFZlcnNpb25SYW5nZXMoJHBhY2thZ2VOYW1lKSk7CgogICAgICAgIHJldHVybiAkcHJvdmlkZWQtPm1hdGNoZXMoJGNvbnN0cmFpbnQpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHZlcnNpb24gY29uc3RyYWludCByZXByZXNlbnRpbmcgYWxsIHRoZSByYW5nZShzKSB3aGljaCBhcmUgaW5zdGFsbGVkIGZvciBhIGdpdmVuIHBhY2thZ2UKICAgICAqCiAgICAgKiBJdCBpcyBlYXNpZXIgdG8gdXNlIHRoaXMgdmlhIGlzSW5zdGFsbGVkKCkgd2l0aCB0aGUgJGNvbnN0cmFpbnQgYXJndW1lbnQgaWYgeW91IG5lZWQgdG8gY2hlY2sKICAgICAqIHdoZXRoZXIgYSBnaXZlbiB2ZXJzaW9uIG9mIGEgcGFja2FnZSBpcyBpbnN0YWxsZWQsIGFuZCBub3QganVzdCB3aGV0aGVyIGl0IGV4aXN0cwogICAgICoKICAgICAqIEBwYXJhbSAgc3RyaW5nICRwYWNrYWdlTmFtZQogICAgICogQHJldHVybiBzdHJpbmcgVmVyc2lvbiBjb25zdHJhaW50IHVzYWJsZSB3aXRoIGNvbXBvc2VyL3NlbXZlcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFZlcnNpb25SYW5nZXMoJHBhY2thZ2VOYW1lKQogICAgewogICAgICAgIGZvcmVhY2ggKHNlbGY6OmdldEluc3RhbGxlZCgpIGFzICRpbnN0YWxsZWQpIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJhbmdlcyA9IGFycmF5KCk7CiAgICAgICAgICAgIGlmIChpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3ByZXR0eV92ZXJzaW9uJ10pKSB7CiAgICAgICAgICAgICAgICAkcmFuZ2VzW10gPSAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3ByZXR0eV92ZXJzaW9uJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2FsaWFzZXMnLCAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICAkcmFuZ2VzID0gYXJyYXlfbWVyZ2UoJHJhbmdlcywgJGluc3RhbGxlZFsndmVyc2lvbnMnXVskcGFja2FnZU5hbWVdWydhbGlhc2VzJ10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdyZXBsYWNlZCcsICRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXSkpIHsKICAgICAgICAgICAgICAgICRyYW5nZXMgPSBhcnJheV9tZXJnZSgkcmFuZ2VzLCAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3JlcGxhY2VkJ10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdwcm92aWRlZCcsICRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXSkpIHsKICAgICAgICAgICAgICAgICRyYW5nZXMgPSBhcnJheV9tZXJnZSgkcmFuZ2VzLCAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3Byb3ZpZGVkJ10pOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gaW1wbG9kZSgnIHx8ICcsICRyYW5nZXMpOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxPdXRPZkJvdW5kc0V4Y2VwdGlvbignUGFja2FnZSAiJyAuICRwYWNrYWdlTmFtZSAuICciIGlzIG5vdCBpbnN0YWxsZWQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICAgJHBhY2thZ2VOYW1lCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsIElmIHRoZSBwYWNrYWdlIGlzIGJlaW5nIHJlcGxhY2VkIG9yIHByb3ZpZGVkIGJ1dCBpcyBub3QgcmVhbGx5IGluc3RhbGxlZCwgbnVsbCB3aWxsIGJlIHJldHVybmVkIGFzIHZlcnNpb24sIHVzZSBzYXRpc2ZpZXMgb3IgZ2V0VmVyc2lvblJhbmdlcyBpZiB5b3UgbmVlZCB0byBrbm93IGlmIGEgZ2l2ZW4gdmVyc2lvbiBpcyBwcmVzZW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0VmVyc2lvbigkcGFja2FnZU5hbWUpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoc2VsZjo6Z2V0SW5zdGFsbGVkKCkgYXMgJGluc3RhbGxlZCkgewogICAgICAgICAgICBpZiAoIWlzc2V0KCRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWlzc2V0KCRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXVsndmVyc2lvbiddKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3ZlcnNpb24nXTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcT3V0T2ZCb3VuZHNFeGNlcHRpb24oJ1BhY2thZ2UgIicgLiAkcGFja2FnZU5hbWUgLiAnIiBpcyBub3QgaW5zdGFsbGVkJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gIHN0cmluZyAgICAgICRwYWNrYWdlTmFtZQogICAgICogQHJldHVybiBzdHJpbmd8bnVsbCBJZiB0aGUgcGFja2FnZSBpcyBiZWluZyByZXBsYWNlZCBvciBwcm92aWRlZCBidXQgaXMgbm90IHJlYWxseSBpbnN0YWxsZWQsIG51bGwgd2lsbCBiZSByZXR1cm5lZCBhcyB2ZXJzaW9uLCB1c2Ugc2F0aXNmaWVzIG9yIGdldFZlcnNpb25SYW5nZXMgaWYgeW91IG5lZWQgdG8ga25vdyBpZiBhIGdpdmVuIHZlcnNpb24gaXMgcHJlc2VudAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFByZXR0eVZlcnNpb24oJHBhY2thZ2VOYW1lKQogICAgewogICAgICAgIGZvcmVhY2ggKHNlbGY6OmdldEluc3RhbGxlZCgpIGFzICRpbnN0YWxsZWQpIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3ByZXR0eV92ZXJzaW9uJ10pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXVsncHJldHR5X3ZlcnNpb24nXTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcT3V0T2ZCb3VuZHNFeGNlcHRpb24oJ1BhY2thZ2UgIicgLiAkcGFja2FnZU5hbWUgLiAnIiBpcyBub3QgaW5zdGFsbGVkJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gIHN0cmluZyAgICAgICRwYWNrYWdlTmFtZQogICAgICogQHJldHVybiBzdHJpbmd8bnVsbCBJZiB0aGUgcGFja2FnZSBpcyBiZWluZyByZXBsYWNlZCBvciBwcm92aWRlZCBidXQgaXMgbm90IHJlYWxseSBpbnN0YWxsZWQsIG51bGwgd2lsbCBiZSByZXR1cm5lZCBhcyByZWZlcmVuY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSZWZlcmVuY2UoJHBhY2thZ2VOYW1lKQogICAgewogICAgICAgIGZvcmVhY2ggKHNlbGY6OmdldEluc3RhbGxlZCgpIGFzICRpbnN0YWxsZWQpIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3JlZmVyZW5jZSddKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3JlZmVyZW5jZSddOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxPdXRPZkJvdW5kc0V4Y2VwdGlvbignUGFja2FnZSAiJyAuICRwYWNrYWdlTmFtZSAuICciIGlzIG5vdCBpbnN0YWxsZWQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICAgJHBhY2thZ2VOYW1lCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsIElmIHRoZSBwYWNrYWdlIGlzIGJlaW5nIHJlcGxhY2VkIG9yIHByb3ZpZGVkIGJ1dCBpcyBub3QgcmVhbGx5IGluc3RhbGxlZCwgbnVsbCB3aWxsIGJlIHJldHVybmVkIGFzIGluc3RhbGwgcGF0aC4gUGFja2FnZXMgb2YgdHlwZSBtZXRhcGFja2FnZXMgYWxzbyBoYXZlIGEgbnVsbCBpbnN0YWxsIHBhdGguCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0SW5zdGFsbFBhdGgoJHBhY2thZ2VOYW1lKQogICAgewogICAgICAgIGZvcmVhY2ggKHNlbGY6OmdldEluc3RhbGxlZCgpIGFzICRpbnN0YWxsZWQpIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGlzc2V0KCRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXVsnaW5zdGFsbF9wYXRoJ10pID8gJGluc3RhbGxlZFsndmVyc2lvbnMnXVskcGFja2FnZU5hbWVdWydpbnN0YWxsX3BhdGgnXSA6IG51bGw7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXE91dE9mQm91bmRzRXhjZXB0aW9uKCdQYWNrYWdlICInIC4gJHBhY2thZ2VOYW1lIC4gJyIgaXMgbm90IGluc3RhbGxlZCcpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICogQHBzYWxtLXJldHVybiBhcnJheXtuYW1lOiBzdHJpbmcsIHByZXR0eV92ZXJzaW9uOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmd8bnVsbCwgdHlwZTogc3RyaW5nLCBpbnN0YWxsX3BhdGg6IHN0cmluZywgYWxpYXNlczogc3RyaW5nW10sIGRldjogYm9vbH0KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSb290UGFja2FnZSgpCiAgICB7CiAgICAgICAgJGluc3RhbGxlZCA9IHNlbGY6OmdldEluc3RhbGxlZCgpOwoKICAgICAgICByZXR1cm4gJGluc3RhbGxlZFswXVsncm9vdCddOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmF3IGluc3RhbGxlZC5waHAgZGF0YSBmb3IgY3VzdG9tIGltcGxlbWVudGF0aW9ucwogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFVzZSBnZXRBbGxSYXdEYXRhKCkgaW5zdGVhZCB3aGljaCByZXR1cm5zIGFsbCBkYXRhc2V0cyBmb3IgYWxsIGF1dG9sb2FkZXJzIHByZXNlbnQgaW4gdGhlIHByb2Nlc3MuIGdldFJhd0RhdGEgb25seSByZXR1cm5zIHRoZSBmaXJzdCBkYXRhc2V0IGxvYWRlZCwgd2hpY2ggbWF5IG5vdCBiZSB3aGF0IHlvdSBleHBlY3QuCiAgICAgKiBAcmV0dXJuIGFycmF5W10KICAgICAqIEBwc2FsbS1yZXR1cm4gYXJyYXl7cm9vdDogYXJyYXl7bmFtZTogc3RyaW5nLCBwcmV0dHlfdmVyc2lvbjogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nfG51bGwsIHR5cGU6IHN0cmluZywgaW5zdGFsbF9wYXRoOiBzdHJpbmcsIGFsaWFzZXM6IHN0cmluZ1tdLCBkZXY6IGJvb2x9LCB2ZXJzaW9uczogYXJyYXk8c3RyaW5nLCBhcnJheXtwcmV0dHlfdmVyc2lvbj86IHN0cmluZywgdmVyc2lvbj86IHN0cmluZywgcmVmZXJlbmNlPzogc3RyaW5nfG51bGwsIHR5cGU/OiBzdHJpbmcsIGluc3RhbGxfcGF0aD86IHN0cmluZywgYWxpYXNlcz86IHN0cmluZ1tdLCBkZXZfcmVxdWlyZW1lbnQ6IGJvb2wsIHJlcGxhY2VkPzogc3RyaW5nW10sIHByb3ZpZGVkPzogc3RyaW5nW119Pn0KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSYXdEYXRhKCkKICAgIHsKICAgICAgICBAdHJpZ2dlcl9lcnJvcignZ2V0UmF3RGF0YSBvbmx5IHJldHVybnMgdGhlIGZpcnN0IGRhdGFzZXQgbG9hZGVkLCB3aGljaCBtYXkgbm90IGJlIHdoYXQgeW91IGV4cGVjdC4gVXNlIGdldEFsbFJhd0RhdGEoKSBpbnN0ZWFkIHdoaWNoIHJldHVybnMgYWxsIGRhdGFzZXRzIGZvciBhbGwgYXV0b2xvYWRlcnMgcHJlc2VudCBpbiB0aGUgcHJvY2Vzcy4nLCBFX1VTRVJfREVQUkVDQVRFRCk7CgogICAgICAgIGlmIChudWxsID09PSBzZWxmOjokaW5zdGFsbGVkKSB7CiAgICAgICAgICAgIC8vIG9ubHkgcmVxdWlyZSB0aGUgaW5zdGFsbGVkLnBocCBmaWxlIGlmIHRoaXMgZmlsZSBpcyBsb2FkZWQgZnJvbSBpdHMgZHVtcGVkIGxvY2F0aW9uLAogICAgICAgICAgICAvLyBhbmQgbm90IGZyb20gaXRzIHNvdXJjZSBsb2NhdGlvbiBpbiB0aGUgY29tcG9zZXIvY29tcG9zZXIgcGFja2FnZSwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jb21wb3Nlci9jb21wb3Nlci9pc3N1ZXMvOTkzNwogICAgICAgICAgICBpZiAoc3Vic3RyKF9fRElSX18sIC04LCAxKSAhPT0gJ0MnKSB7CiAgICAgICAgICAgICAgICBzZWxmOjokaW5zdGFsbGVkID0gaW5jbHVkZSBfX0RJUl9fIC4gJy9pbnN0YWxsZWQucGhwJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHNlbGY6OiRpbnN0YWxsZWQgPSBhcnJheSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6JGluc3RhbGxlZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJhdyBkYXRhIG9mIGFsbCBpbnN0YWxsZWQucGhwIHdoaWNoIGFyZSBjdXJyZW50bHkgbG9hZGVkIGZvciBjdXN0b20gaW1wbGVtZW50YXRpb25zCiAgICAgKgogICAgICogQHJldHVybiBhcnJheVtdCiAgICAgKiBAcHNhbG0tcmV0dXJuIGxpc3Q8YXJyYXl7cm9vdDogYXJyYXl7bmFtZTogc3RyaW5nLCBwcmV0dHlfdmVyc2lvbjogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nfG51bGwsIHR5cGU6IHN0cmluZywgaW5zdGFsbF9wYXRoOiBzdHJpbmcsIGFsaWFzZXM6IHN0cmluZ1tdLCBkZXY6IGJvb2x9LCB2ZXJzaW9uczogYXJyYXk8c3RyaW5nLCBhcnJheXtwcmV0dHlfdmVyc2lvbj86IHN0cmluZywgdmVyc2lvbj86IHN0cmluZywgcmVmZXJlbmNlPzogc3RyaW5nfG51bGwsIHR5cGU/OiBzdHJpbmcsIGluc3RhbGxfcGF0aD86IHN0cmluZywgYWxpYXNlcz86IHN0cmluZ1tdLCBkZXZfcmVxdWlyZW1lbnQ6IGJvb2wsIHJlcGxhY2VkPzogc3RyaW5nW10sIHByb3ZpZGVkPzogc3RyaW5nW119Pn0+CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0QWxsUmF3RGF0YSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmdldEluc3RhbGxlZCgpOwogICAgfQoKICAgIC8qKgogICAgICogTGV0cyB5b3UgcmVsb2FkIHRoZSBzdGF0aWMgYXJyYXkgZnJvbSBhbm90aGVyIGZpbGUKICAgICAqCiAgICAgKiBUaGlzIGlzIG9ubHkgdXNlZnVsIGZvciBjb21wbGV4IGludGVncmF0aW9ucyBpbiB3aGljaCBhIHByb2plY3QgbmVlZHMgdG8gdXNlCiAgICAgKiB0aGlzIGNsYXNzIGJ1dCB0aGVuIGFsc28gbmVlZHMgdG8gZXhlY3V0ZSBhbm90aGVyIHByb2plY3QncyBhdXRvbG9hZGVyIGluIHByb2Nlc3MsCiAgICAgKiBhbmQgd2FudHMgdG8gZW5zdXJlIGJvdGggcHJvamVjdHMgaGF2ZSBhY2Nlc3MgdG8gdGhlaXIgdmVyc2lvbiBvZiBpbnN0YWxsZWQucGhwLgogICAgICoKICAgICAqIEEgdHlwaWNhbCBjYXNlIHdvdWxkIGJlIFBIUFVuaXQsIHdoZXJlIGl0IHdvdWxkIG5lZWQgdG8gbWFrZSBzdXJlIGl0IHJlYWRzIGFsbAogICAgICogdGhlIGRhdGEgaXQgbmVlZHMgZnJvbSB0aGlzIGNsYXNzLCB0aGVuIGNhbGwgcmVsb2FkKCkgd2l0aAogICAgICogYHJlcXVpcmUgJENXRC92ZW5kb3IvY29tcG9zZXIvaW5zdGFsbGVkLnBocGAgKG9yIHNpbWlsYXIpIGFzIGlucHV0IHRvIG1ha2Ugc3VyZQogICAgICogdGhlIHByb2plY3QgaW4gd2hpY2ggaXQgcnVucyBjYW4gdGhlbiBhbHNvIHVzZSB0aGlzIGNsYXNzIHNhZmVseSwgd2l0aG91dAogICAgICogaW50ZXJmZXJlbmNlIGJldHdlZW4gUEhQVW5pdCdzIGRlcGVuZGVuY2llcyBhbmQgdGhlIHByb2plY3QncyBkZXBlbmRlbmNpZXMuCiAgICAgKgogICAgICogQHBhcmFtICBhcnJheVtdICRkYXRhIEEgdmVuZG9yL2NvbXBvc2VyL2luc3RhbGxlZC5waHAgZGF0YSBzZXQKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBwc2FsbS1wYXJhbSBhcnJheXtyb290OiBhcnJheXtuYW1lOiBzdHJpbmcsIHByZXR0eV92ZXJzaW9uOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmd8bnVsbCwgdHlwZTogc3RyaW5nLCBpbnN0YWxsX3BhdGg6IHN0cmluZywgYWxpYXNlczogc3RyaW5nW10sIGRldjogYm9vbH0sIHZlcnNpb25zOiBhcnJheTxzdHJpbmcsIGFycmF5e3ByZXR0eV92ZXJzaW9uPzogc3RyaW5nLCB2ZXJzaW9uPzogc3RyaW5nLCByZWZlcmVuY2U/OiBzdHJpbmd8bnVsbCwgdHlwZT86IHN0cmluZywgaW5zdGFsbF9wYXRoPzogc3RyaW5nLCBhbGlhc2VzPzogc3RyaW5nW10sIGRldl9yZXF1aXJlbWVudDogYm9vbCwgcmVwbGFjZWQ/OiBzdHJpbmdbXSwgcHJvdmlkZWQ/OiBzdHJpbmdbXX0+fSAkZGF0YQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlbG9hZCgkZGF0YSkKICAgIHsKICAgICAgICBzZWxmOjokaW5zdGFsbGVkID0gJGRhdGE7CiAgICAgICAgc2VsZjo6JGluc3RhbGxlZEJ5VmVuZG9yID0gYXJyYXkoKTsKCiAgICAgICAgLy8gd2hlbiB1c2luZyByZWxvYWQsIHdlIGRpc2FibGUgdGhlIGR1cGxpY2F0ZSBwcm90ZWN0aW9uIHRvIGVuc3VyZSB0aGF0IHNlbGY6OiRpbnN0YWxsZWQgZGF0YSBpcwogICAgICAgIC8vIGFsd2F5cyByZXR1cm5lZCwgYnV0IHdlIGNhbm5vdCBrbm93IHdoZXRoZXIgaXQgY29tZXMgZnJvbSB0aGUgaW5zdGFsbGVkLnBocCBpbiBfX0RJUl9fIG9yIG5vdCwKICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvIGFzc3VtZSBpdCBkb2VzIG5vdCwgYW5kIHRoYXQgbWF5IHJlc3VsdCBpbiBkdXBsaWNhdGUgZGF0YSBiZWluZyByZXR1cm5lZCB3aGVuIGxpc3RpbmcKICAgICAgICAvLyBhbGwgaW5zdGFsbGVkIHBhY2thZ2VzIGZvciBleGFtcGxlCiAgICAgICAgc2VsZjo6JGluc3RhbGxlZElzTG9jYWxEaXIgPSBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldFNlbGZEaXIoKQogICAgewogICAgICAgIGlmIChzZWxmOjokc2VsZkRpciA9PT0gbnVsbCkgewogICAgICAgICAgICBzZWxmOjokc2VsZkRpciA9IHN0cnRyKF9fRElSX18sICdcXCcsICcvJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6JHNlbGZEaXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5W10KICAgICAqIEBwc2FsbS1yZXR1cm4gbGlzdDxhcnJheXtyb290OiBhcnJheXtuYW1lOiBzdHJpbmcsIHByZXR0eV92ZXJzaW9uOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmd8bnVsbCwgdHlwZTogc3RyaW5nLCBpbnN0YWxsX3BhdGg6IHN0cmluZywgYWxpYXNlczogc3RyaW5nW10sIGRldjogYm9vbH0sIHZlcnNpb25zOiBhcnJheTxzdHJpbmcsIGFycmF5e3ByZXR0eV92ZXJzaW9uPzogc3RyaW5nLCB2ZXJzaW9uPzogc3RyaW5nLCByZWZlcmVuY2U/OiBzdHJpbmd8bnVsbCwgdHlwZT86IHN0cmluZywgaW5zdGFsbF9wYXRoPzogc3RyaW5nLCBhbGlhc2VzPzogc3RyaW5nW10sIGRldl9yZXF1aXJlbWVudDogYm9vbCwgcmVwbGFjZWQ/OiBzdHJpbmdbXSwgcHJvdmlkZWQ/OiBzdHJpbmdbXX0+fT4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0SW5zdGFsbGVkKCkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gc2VsZjo6JGNhbkdldFZlbmRvcnMpIHsKICAgICAgICAgICAgc2VsZjo6JGNhbkdldFZlbmRvcnMgPSBtZXRob2RfZXhpc3RzKCdDb21wb3NlclxBdXRvbG9hZFxDbGFzc0xvYWRlcicsICdnZXRSZWdpc3RlcmVkTG9hZGVycycpOwogICAgICAgIH0KCiAgICAgICAgJGluc3RhbGxlZCA9IGFycmF5KCk7CiAgICAgICAgJGNvcGllZExvY2FsRGlyID0gZmFsc2U7CgogICAgICAgIGlmIChzZWxmOjokY2FuR2V0VmVuZG9ycykgewogICAgICAgICAgICAkc2VsZkRpciA9IHNlbGY6OmdldFNlbGZEaXIoKTsKICAgICAgICAgICAgZm9yZWFjaCAoQ2xhc3NMb2FkZXI6OmdldFJlZ2lzdGVyZWRMb2FkZXJzKCkgYXMgJHZlbmRvckRpciA9PiAkbG9hZGVyKSB7CiAgICAgICAgICAgICAgICAkdmVuZG9yRGlyID0gc3RydHIoJHZlbmRvckRpciwgJ1xcJywgJy8nKTsKICAgICAgICAgICAgICAgIGlmIChpc3NldChzZWxmOjokaW5zdGFsbGVkQnlWZW5kb3JbJHZlbmRvckRpcl0pKSB7CiAgICAgICAgICAgICAgICAgICAgJGluc3RhbGxlZFtdID0gc2VsZjo6JGluc3RhbGxlZEJ5VmVuZG9yWyR2ZW5kb3JEaXJdOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKGlzX2ZpbGUoJHZlbmRvckRpci4nL2NvbXBvc2VyL2luc3RhbGxlZC5waHAnKSkgewogICAgICAgICAgICAgICAgICAgIC8qKiBAdmFyIGFycmF5e3Jvb3Q6IGFycmF5e25hbWU6IHN0cmluZywgcHJldHR5X3ZlcnNpb246IHN0cmluZywgdmVyc2lvbjogc3RyaW5nLCByZWZlcmVuY2U6IHN0cmluZ3xudWxsLCB0eXBlOiBzdHJpbmcsIGluc3RhbGxfcGF0aDogc3RyaW5nLCBhbGlhc2VzOiBzdHJpbmdbXSwgZGV2OiBib29sfSwgdmVyc2lvbnM6IGFycmF5PHN0cmluZywgYXJyYXl7cHJldHR5X3ZlcnNpb24/OiBzdHJpbmcsIHZlcnNpb24/OiBzdHJpbmcsIHJlZmVyZW5jZT86IHN0cmluZ3xudWxsLCB0eXBlPzogc3RyaW5nLCBpbnN0YWxsX3BhdGg/OiBzdHJpbmcsIGFsaWFzZXM/OiBzdHJpbmdbXSwgZGV2X3JlcXVpcmVtZW50OiBib29sLCByZXBsYWNlZD86IHN0cmluZ1tdLCBwcm92aWRlZD86IHN0cmluZ1tdfT59ICRyZXF1aXJlZCAqLwogICAgICAgICAgICAgICAgICAgICRyZXF1aXJlZCA9IHJlcXVpcmUgJHZlbmRvckRpci4nL2NvbXBvc2VyL2luc3RhbGxlZC5waHAnOwogICAgICAgICAgICAgICAgICAgIHNlbGY6OiRpbnN0YWxsZWRCeVZlbmRvclskdmVuZG9yRGlyXSA9ICRyZXF1aXJlZDsKICAgICAgICAgICAgICAgICAgICAkaW5zdGFsbGVkW10gPSAkcmVxdWlyZWQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGY6OiRpbnN0YWxsZWQgPT09IG51bGwgJiYgJHZlbmRvckRpci4nL2NvbXBvc2VyJyA9PT0gJHNlbGZEaXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZjo6JGluc3RhbGxlZCA9ICRyZXF1aXJlZDsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZjo6JGluc3RhbGxlZElzTG9jYWxEaXIgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChzZWxmOjokaW5zdGFsbGVkSXNMb2NhbERpciAmJiAkdmVuZG9yRGlyLicvY29tcG9zZXInID09PSAkc2VsZkRpcikgewogICAgICAgICAgICAgICAgICAgICRjb3BpZWRMb2NhbERpciA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChudWxsID09PSBzZWxmOjokaW5zdGFsbGVkKSB7CiAgICAgICAgICAgIC8vIG9ubHkgcmVxdWlyZSB0aGUgaW5zdGFsbGVkLnBocCBmaWxlIGlmIHRoaXMgZmlsZSBpcyBsb2FkZWQgZnJvbSBpdHMgZHVtcGVkIGxvY2F0aW9uLAogICAgICAgICAgICAvLyBhbmQgbm90IGZyb20gaXRzIHNvdXJjZSBsb2NhdGlvbiBpbiB0aGUgY29tcG9zZXIvY29tcG9zZXIgcGFja2FnZSwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jb21wb3Nlci9jb21wb3Nlci9pc3N1ZXMvOTkzNwogICAgICAgICAgICBpZiAoc3Vic3RyKF9fRElSX18sIC04LCAxKSAhPT0gJ0MnKSB7CiAgICAgICAgICAgICAgICAvKiogQHZhciBhcnJheXtyb290OiBhcnJheXtuYW1lOiBzdHJpbmcsIHByZXR0eV92ZXJzaW9uOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmd8bnVsbCwgdHlwZTogc3RyaW5nLCBpbnN0YWxsX3BhdGg6IHN0cmluZywgYWxpYXNlczogc3RyaW5nW10sIGRldjogYm9vbH0sIHZlcnNpb25zOiBhcnJheTxzdHJpbmcsIGFycmF5e3ByZXR0eV92ZXJzaW9uPzogc3RyaW5nLCB2ZXJzaW9uPzogc3RyaW5nLCByZWZlcmVuY2U/OiBzdHJpbmd8bnVsbCwgdHlwZT86IHN0cmluZywgaW5zdGFsbF9wYXRoPzogc3RyaW5nLCBhbGlhc2VzPzogc3RyaW5nW10sIGRldl9yZXF1aXJlbWVudDogYm9vbCwgcmVwbGFjZWQ/OiBzdHJpbmdbXSwgcHJvdmlkZWQ/OiBzdHJpbmdbXX0+fSAkcmVxdWlyZWQgKi8KICAgICAgICAgICAgICAgICRyZXF1aXJlZCA9IHJlcXVpcmUgX19ESVJfXyAuICcvaW5zdGFsbGVkLnBocCc7CiAgICAgICAgICAgICAgICBzZWxmOjokaW5zdGFsbGVkID0gJHJlcXVpcmVkOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgc2VsZjo6JGluc3RhbGxlZCA9IGFycmF5KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChzZWxmOjokaW5zdGFsbGVkICE9PSBhcnJheSgpICYmICEkY29waWVkTG9jYWxEaXIpIHsKICAgICAgICAgICAgJGluc3RhbGxlZFtdID0gc2VsZjo6JGluc3RhbGxlZDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkaW5zdGFsbGVkOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CkNvcHlyaWdodCAoYykgTmlscyBBZGVybWFubiwgSm9yZGkgQm9nZ2lhbm8KClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwp0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQKdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgpUSEUgU09GVFdBUkUuCgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/platform_check.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIHBsYXRmb3JtX2NoZWNrLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgokaXNzdWVzID0gYXJyYXkoKTsKCmlmICghKFBIUF9WRVJTSU9OX0lEID49IDcwMjA1KSkgewogICAgJGlzc3Vlc1tdID0gJ1lvdXIgQ29tcG9zZXIgZGVwZW5kZW5jaWVzIHJlcXVpcmUgYSBQSFAgdmVyc2lvbiAiPj0gNy4yLjUiLiBZb3UgYXJlIHJ1bm5pbmcgJyAuIFBIUF9WRVJTSU9OIC4gJy4nOwp9CgppZiAoJGlzc3VlcykgewogICAgaWYgKCFoZWFkZXJzX3NlbnQoKSkgewogICAgICAgIGhlYWRlcignSFRUUC8xLjEgNTAwIEludGVybmFsIFNlcnZlciBFcnJvcicpOwogICAgfQogICAgaWYgKCFpbmlfZ2V0KCdkaXNwbGF5X2Vycm9ycycpKSB7CiAgICAgICAgaWYgKFBIUF9TQVBJID09PSAnY2xpJyB8fCBQSFBfU0FQSSA9PT0gJ3BocGRiZycpIHsKICAgICAgICAgICAgZndyaXRlKFNUREVSUiwgJ0NvbXBvc2VyIGRldGVjdGVkIGlzc3VlcyBpbiB5b3VyIHBsYXRmb3JtOicgLiBQSFBfRU9MLlBIUF9FT0wgLiBpbXBsb2RlKFBIUF9FT0wsICRpc3N1ZXMpIC4gUEhQX0VPTC5QSFBfRU9MKTsKICAgICAgICB9IGVsc2VpZiAoIWhlYWRlcnNfc2VudCgpKSB7CiAgICAgICAgICAgIGVjaG8gJ0NvbXBvc2VyIGRldGVjdGVkIGlzc3VlcyBpbiB5b3VyIHBsYXRmb3JtOicgLiBQSFBfRU9MLlBIUF9FT0wgLiBzdHJfcmVwbGFjZSgnWW91IGFyZSBydW5uaW5nICcuUEhQX1ZFUlNJT04uJy4nLCAnJywgaW1wbG9kZShQSFBfRU9MLCAkaXNzdWVzKSkgLiBQSFBfRU9MLlBIUF9FT0w7CiAgICAgICAgfQogICAgfQogICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKAogICAgICAgICdDb21wb3NlciBkZXRlY3RlZCBpc3N1ZXMgaW4geW91ciBwbGF0Zm9ybTogJyAuIGltcGxvZGUoJyAnLCAkaXNzdWVzKQogICAgKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyMjIyB2Mi41LjAgKDIwMjItMTIpCiogU3VwcG9ydCBQSFAgOC4yIFsjOTldKGh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvcHVsbC85OSkKKiBQSFAgOCBjb21wYXRpYmlsaXR5IGZpeCBmb3IgRGF0ZVRpbWU6OmdldExhc3RFcnJvcnMgWyM5OF0oaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9wdWxsLzk4KQoqIFN1cHBvcnQgbW9yZSBPSURzIFsjOTVdKGh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvcHVsbC85NSkKKiBGSU5BTCBSRUxFQVNFLiBMaWJyYXJ5IGlzIG5vdyBubyBsb25nZXIgYWN0aXZlbHkgbWFpbnRhaW5lZCBhbmQgbWFya2VkIGFzIGFyY2hpdmVkIG9uIEdpdEh1YgoKIyMjIyB2Mi40LjAgKDIwMjEtMTIpCiogRHJvcCBzdXBwb3J0IGZvciBQSFAgNy4wIFsjODldKGh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvcHVsbC84OSkKCiMjIyMgdjIuMy4xICgyMDIxLTEyKQoqIEFkZCBgI1tcUmV0dXJuVHlwZVdpbGxDaGFuZ2VdYCBhdHRyaWJ1dGVzIGZvciBQSFAgOC4xIGNvbXBhdGliaWxpdHkgWyM4N10oaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9wdWxsLzg3KQoKIyMjIyB2Mi4zLjAgKDIwMjEtMDQpCiogQWxsb3cgY3JlYXRpbmcgYW4gdW5zaWduZWQgQ1NSIGFuZCBhZGRpbmcgdGhlIHNpZ25hdHVyZSBsYXRlciBbIzgyXShodHRwczovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xL3B1bGwvODIpCgojIyMjIHYyLjIuMCAoMjAyMC0wOCkKKiBzdXBwb3J0IHBvbHlmaWxscyBmb3IgYmNtYXRoIGFuZCBnbXAsIGFuZCBhZGQgYSBjb21wb3Nlci5qc29uCiAgc3VnZ2VzdGlvbiBmb3IgdGhlIGBwaHBzZWNsaWIvYmNtYXRoX3BvbHlmaWxsYCBmb3Igc2VydmVycyB1bmFibGUKICB0byBpbnN0YWxsIFBIUCB0aGUgZ21wIG9yIGJjbWF0aCBleHRlbnNpb25zLgoKIyMjIyB2LjIuMS4xICYgJnYuMi4wLjIgKDIwMTgtMTIpCiogYWRkIHN0cmljdGVyIHZhbGlkYXRpb24gYXJvdW5kIHNvbWUgc3RydWN0dXJlcywgaGlnaGxpZ2hlZAogIGJ5IHd5Y2hlcHJvb2YgdGVzdCBzdWl0ZQoKIyMjIyB2LjIuMS4wICgyMDE4LTAzKQoqIGFkZCBzdXBwb3J0IGZvciBgYmNtYXRoYCBleHRlbnNpb24gKG1ha2luZyBgZ21wYCBvcHRpb25hbCkgWyM2OF0oaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9wdWxsLzY4KQoKIyMjIyB2LjIuMC4xICYgdi4xLjUuMyAoMjAxNy0xMikKKiBhZGQgLmdpdGF0dHJpYnV0ZXMgZmlsZSB0byBwcmV2ZW50IGV4YW1wbGVzIGFuZCB0ZXN0cyB0byBiZSBpbnN0YWxsZWQgdmlhIGNvbXBvc2VyIHdoZW4gLS1wcmVmZXItZGlzdCB3YXMgc2V0CgojIyMjIHYuMi4wLjAgKDIwMTctMDgpCiogcmVuYW1lIGBGR1xBU04xXE9iamVjdGAgdG8gYEZHXEFTTjFcQVNOT2JqZWN0YCBiZWNhdXNlIGBPYmplY3RgIGlzIGEgc3BlY2lhbCBjbGFzcyBuYW1lIGluIHRoZSBuZXh0IG1ham9yIFBIUCByZWxlYXNlCiAgLSB3aGVuIHlvdSB1cGdyYWRlIHlvdSBoYXZlIHRvIGFkYXB0IGFsbCBjb3JyZXNwb25kaW5nIGB1c2VgIGFuZCBgZXh0ZW5kc2Agc3RhdGVtZW50cyBhcyB3ZWxsIGFzIHR5cGUgaGludHMgYW5kIGFsbAogICAgdXNhZ2VzIG9mIGBPYmplY3Q6OmZyb21CaW5hcnko4oCmKWAuCiogIGdlbmVyYWxseSBkcm9wIFBIUCA1LjYgc3VwcG9ydAoKIyMjIyB2LjEuNS4yICgyMDE2LTEwLTI5KQoqIGFsbG93IGVtcHR5IG9jdGV0IHN0cmluZ3MKCiMjIyMgdi4xLjUuMSAoMjAxNS0xMC0wMikKKiBhZGQga2V5d29yZHMgdG8gY29tcG9zZXIuanNvbiAodGhpcyBpcyBhIHZlcnNpb24gb24gaXRzIG93biBzbyB0aGUga2V5d29yZHMgYXJlIGZvdW5kIG9uIGEgc3RhYmxlIHZlcnNpb24gYXQgcGFja2FnaXN0Lm9yZykKCiMjIyMgdi4xLjUuMCAoMjAxNS0xMC0zMCkKKiBmaXggYSBidWcgdGhhdCB3b3VsZCBwcmV2ZW50IHlvdSBmcm9tIGRlY29kaW5nIGNvbnRleHQgc3BlY2lmaWMgdGFncyBvbiBtdWx0aXBsZSBvYmplY3RzIFsjNTddKGh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvaXNzdWVzLzU3KQogIC0gYEV4cGxpY2l0bHlUYWdnZWRPYmplY3Q6Ol9fY29uc3RydWN0YCBkb2VzIG5vdyBhY2NlcHQgbXVsdGlwbGUgb2JqZWN0cyB0byBiZSB0YWdnZWQgd2l0aCBhIHNpbmdsZSB0YWcKICAtIGBFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0OjpnZXRDb250ZW50YCB3aWxsIG5vdyBhbHdheXMgcmV0dXJuIGFuIGFycmF5IChldmVuIGlmIG9ubHkgb25lIG9iamVjdCBpcyB0YWdnZWQpCgojIyMjIHYuMS40LjIgKDIwMTUtMDktMjkpCiogZml4IGEgYnVnIHRoYXQgd291bGQgcHJldmVudCB5b3UgZnJvbSBkZWNvZGluZyBlbXB0eSB0YWdnZWQgb2JqZWN0cyBbIzU3XShodHRwczovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xL2lzc3Vlcy81NykKCiMjIyMgdi4xLjQuMQoqIGltcHJvdmUgZXhjZXB0aW9uIG1lc3NhZ2VzIGFuZCBnZW5lcmFsIGVycm9yIGhhbmRsaW5nIFsjNTVdKGh0dHBzIDovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xL3B1bGwvNTUpCgojIyMjIHYuMS40LjAKKiAqKnJlcXVpcmUgUEhQIDUuNioqCiogc3VwcG9ydCBiaWcgaW50ZWdlcnMgKGNsb3NlcyAjMSBhbmQgIzM3KQoqIGVuZm9yY2Ugb25lIGNvZGUgc3R5bGUgdmlhIFtzdHlsZWNpLmlvXVs5XQoqIHRyYWNrIGNvZGUgY292ZXJhZ2UgdmlhIFtjb3ZlcmFsbHMuaW9dWzEwXQoqIHJlcGxhY2Ugb2Jzb2xldGUgYEZHXEFTTjFcRXhjZXB0aW9uXEdlbmVyYWxFeGNlcHRpb25gIHdpdGggYFxFeGNlcHRpb25gCiogYENvbnN0cnVjdGAgKGBTZXF1ZW5jZWAsIGBTZXRgKSBkb2VzIG5vdyBpbXBsZW1lbnQgYEFycmF5QWNjZXNzYCwgYENvdW50YWJsZWAgYW5kIGBJdGVyYXRvcmAgc28gaXRzIGVhc2llciB0byB1c2UKKiBhZGQgW2BUZW1wbGF0ZVBhcnNlcmBdWzExXQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiZmdyb3NzZS9waHBhc24xIiwKICAgICJkZXNjcmlwdGlvbiI6ICJBIFBIUCBGcmFtZXdvcmsgdGhhdCBhbGxvd3MgeW91IHRvIGVuY29kZSBhbmQgZGVjb2RlIGFyYml0cmFyeSBBU04uMSBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBJVFUtVCBYLjY5MCBFbmNvZGluZyBSdWxlcy4iLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ZHcm9zc2UvUEhQQVNOMSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJGcmllZHJpY2ggR3Jvw59lIiwKICAgICAgICAgICAgImVtYWlsIjogImZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GR3Jvc3NlIiwKICAgICAgICAgICAgInJvbGUiOiAiQXV0aG9yIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJBbGwgY29udHJpYnV0b3JzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GR3Jvc3NlL1BIUEFTTjEvY29udHJpYnV0b3JzIgogICAgICAgIH0KICAgIF0sCiAgICAia2V5d29yZHMiOiBbICJ4NjkwIiwgInguNjkwIiwgInguNTA5IiwgIng1MDkiLCAiYXNuMSIsICJhc24uMSIsICJiZXIiLCAiZGVyIiwgImJpbmFyeSIsICJlbmNvZGluZyIsICJkZWNvZGluZyIgXSwKCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIl43LjEgfHwgXjguMCIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNy4wIHx8IF44LjAgfHwgXjkuMCIsCiAgICAgICAgInBocC1jb3ZlcmFsbHMvcGhwLWNvdmVyYWxscyI6ICJ+Mi4wIgogICAgfSwKICAgICJzdWdnZXN0IjogewogICAgICAgICJleHQtZ21wIjogIkdNUCBpcyB0aGUgcHJlZmVycmVkIGV4dGVuc2lvbiBmb3IgYmlnIGludGVnZXIgY2FsY3VsYXRpb25zIiwKICAgICAgICAiZXh0LWJjbWF0aCI6ICJCQ21hdGggaXMgdGhlIGZhbGxiYWNrIGV4dGVuc2lvbiBmb3IgYmlnIGludGVnZXIgY2FsY3VsYXRpb25zIiwKICAgICAgICAicGhwc2VjbGliL2JjbWF0aF9jb21wYXQiOiAiQkNtYXRoIHBvbHlmaWxsIGZvciBzZXJ2ZXJzIHdoZXJlIG5laXRoZXIgR01QIG5vciBCQ21hdGggaXMgYXZhaWxhYmxlIiwKICAgICAgICAiZXh0LWN1cmwiOiAiRm9yIGxvYWRpbmcgT0lEIGluZm9ybWF0aW9uIGZyb20gdGhlIHdlYiBpZiB0aGV5IGhhdmUgbm90IGJlZSBkZWZpbmVkIHN0YXRpY2FsbHkiCiAgICB9LAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkZHXFwiOiAibGliLyIKICAgICAgICB9CiAgICB9LAogICAgImF1dG9sb2FkLWRldiI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJGR1xcVGVzdFxcIjogInRlc3RzLyIKICAgICAgICB9CiAgICB9LAogICAgImV4dHJhIjogewogICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjIuMC54LWRldiIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/AbstractString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBFeGNlcHRpb247CgphYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFN0cmluZyBleHRlbmRzIEFTTk9iamVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIC8qKiBAdmFyIHN0cmluZyAqLwogICAgcHJvdGVjdGVkICR2YWx1ZTsKICAgIHByaXZhdGUgJGNoZWNrU3RyaW5nRm9ySWxsZWdhbENoYXJzID0gdHJ1ZTsKICAgIHByaXZhdGUgJGFsbG93ZWRDaGFyYWN0ZXJzID0gW107CgogICAgLyoqCiAgICAgKiBUaGUgYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgQVNOLjEgY2xhc3NlcyB3aGljaCByZXByZXNlbnQgc29tZSBzdHJpbmcgb2YgY2hhcmFjdGVyLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHN0cmluZykKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkc3RyaW5nOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhbGxvd0NoYXJhY3RlcigkY2hhcmFjdGVyKQogICAgewogICAgICAgICR0aGlzLT5hbGxvd2VkQ2hhcmFjdGVyc1tdID0gJGNoYXJhY3RlcjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYWxsb3dDaGFyYWN0ZXJzKC4uLiRjaGFyYWN0ZXJzKQogICAgewogICAgICAgIGZvcmVhY2ggKCRjaGFyYWN0ZXJzIGFzICRjaGFyYWN0ZXIpIHsKICAgICAgICAgICAgJHRoaXMtPmFsbG93ZWRDaGFyYWN0ZXJzW10gPSAkY2hhcmFjdGVyOwogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYWxsb3dOdW1iZXJzKCkKICAgIHsKICAgICAgICBmb3JlYWNoIChyYW5nZSgnMCcsICc5JykgYXMgJGNoYXIpIHsKICAgICAgICAgICAgJHRoaXMtPmFsbG93ZWRDaGFyYWN0ZXJzW10gPSAoc3RyaW5nKSAkY2hhcjsKICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGFsbG93QWxsTGV0dGVycygpCiAgICB7CiAgICAgICAgJHRoaXMtPmFsbG93U21hbGxMZXR0ZXJzKCk7CiAgICAgICAgJHRoaXMtPmFsbG93Q2FwaXRhbExldHRlcnMoKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYWxsb3dTbWFsbExldHRlcnMoKQogICAgewogICAgICAgIGZvcmVhY2ggKHJhbmdlKCdhJywgJ3onKSBhcyAkY2hhcikgewogICAgICAgICAgICAkdGhpcy0+YWxsb3dlZENoYXJhY3RlcnNbXSA9ICRjaGFyOwogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYWxsb3dDYXBpdGFsTGV0dGVycygpCiAgICB7CiAgICAgICAgZm9yZWFjaCAocmFuZ2UoJ0EnLCAnWicpIGFzICRjaGFyKSB7CiAgICAgICAgICAgICR0aGlzLT5hbGxvd2VkQ2hhcmFjdGVyc1tdID0gJGNoYXI7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhbGxvd1NwYWNlcygpCiAgICB7CiAgICAgICAgJHRoaXMtPmFsbG93ZWRDaGFyYWN0ZXJzW10gPSAnICc7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGFsbG93QWxsKCkKICAgIHsKICAgICAgICAkdGhpcy0+Y2hlY2tTdHJpbmdGb3JJbGxlZ2FsQ2hhcnMgPSBmYWxzZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIHN0cmxlbigkdGhpcy0+dmFsdWUpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNvZGVkVmFsdWUoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+Y2hlY2tTdHJpbmdGb3JJbGxlZ2FsQ2hhcnMpIHsKICAgICAgICAgICAgJHRoaXMtPmNoZWNrU3RyaW5nKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjaGVja1N0cmluZygpCiAgICB7CiAgICAgICAgJHN0cmluZ0xlbmd0aCA9ICR0aGlzLT5nZXRDb250ZW50TGVuZ3RoKCk7CiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJHN0cmluZ0xlbmd0aDsgJGkrKykgewogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHRoaXMtPnZhbHVlWyRpXSwgJHRoaXMtPmFsbG93ZWRDaGFyYWN0ZXJzKSA9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJHR5cGVOYW1lID0gSWRlbnRpZmllcjo6Z2V0TmFtZSgkdGhpcy0+Z2V0VHlwZSgpKTsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIkNvdWxkIG5vdCBjcmVhdGUgYSB7JHR5cGVOYW1lfSBmcm9tIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgJ3skdGhpcy0+dmFsdWV9Jy4iKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHN0YXRpYygnJyk7CgogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCAkcGFyc2VkT2JqZWN0LT5nZXRUeXBlKCksICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAkc3RyaW5nID0gc3Vic3RyKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgsICRjb250ZW50TGVuZ3RoKTsKICAgICAgICAkb2Zmc2V0SW5kZXggKz0gJGNvbnRlbnRMZW5ndGg7CgogICAgICAgICRwYXJzZWRPYmplY3QtPnZhbHVlID0gJHN0cmluZzsKICAgICAgICAkcGFyc2VkT2JqZWN0LT5zZXRDb250ZW50TGVuZ3RoKCRjb250ZW50TGVuZ3RoKTsKICAgICAgICByZXR1cm4gJHBhcnNlZE9iamVjdDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzVmFsaWQoJHN0cmluZykKICAgIHsKICAgICAgICAkdGVzdE9iamVjdCA9IG5ldyBzdGF0aWMoJHN0cmluZyk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHRlc3RPYmplY3QtPmNoZWNrU3RyaW5nKCk7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGV4Y2VwdGlvbikgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/AbstractTime.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBEYXRlSW50ZXJ2YWw7CnVzZSBEYXRlVGltZTsKdXNlIERhdGVUaW1lWm9uZTsKdXNlIEV4Y2VwdGlvbjsKCmFic3RyYWN0IGNsYXNzIEFic3RyYWN0VGltZSBleHRlbmRzIEFTTk9iamVjdAp7CiAgICAvKiogQHZhciBEYXRlVGltZSAqLwogICAgcHJvdGVjdGVkICR2YWx1ZTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGRhdGVUaW1lID0gbnVsbCwgJGRhdGVUaW1lWm9uZSA9ICdVVEMnKQogICAgewogICAgICAgIGlmICgkZGF0ZVRpbWUgPT0gbnVsbCB8fCBpc19zdHJpbmcoJGRhdGVUaW1lKSkgewogICAgICAgICAgICAkdGltZVpvbmUgPSBuZXcgRGF0ZVRpbWVab25lKCRkYXRlVGltZVpvbmUpOwogICAgICAgICAgICAkZGF0ZVRpbWVPYmplY3QgPSBuZXcgRGF0ZVRpbWUoJGRhdGVUaW1lLCAkdGltZVpvbmUpOwogICAgICAgICAgICBpZiAoJGRhdGVUaW1lT2JqZWN0ID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkZXJyb3JNZXNzYWdlID0gJHRoaXMtPmdldExhc3REYXRlVGltZUVycm9ycygpOwogICAgICAgICAgICAgICAgJGNsYXNzTmFtZSA9IElkZW50aWZpZXI6OmdldE5hbWUoJHRoaXMtPmdldFR5cGUoKSk7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKHNwcmludGYoIkNvdWxkIG5vdCBjcmVhdGUgJXMgZnJvbSBkYXRlIHRpbWUgc3RyaW5nICclcyc6ICVzIiwgJGNsYXNzTmFtZSwgJGRhdGVUaW1lLCAkZXJyb3JNZXNzYWdlKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGRhdGVUaW1lID0gJGRhdGVUaW1lT2JqZWN0OwogICAgICAgIH0gZWxzZWlmICghJGRhdGVUaW1lIGluc3RhbmNlb2YgRGF0ZVRpbWUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignSW52YWxpZCBmaXJzdCBhcmd1bWVudCBmb3Igc29tZSBpbnN0YW5jZSBvZiBBYnN0cmFjdFRpbWUgY29uc3RydWN0b3InKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT52YWx1ZSA9ICRkYXRlVGltZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TGFzdERhdGVUaW1lRXJyb3JzKCkKICAgIHsKICAgICAgICAkbWVzc2FnZXMgPSAnJzsKICAgICAgICAkbGFzdEVycm9ycyA9IERhdGVUaW1lOjpnZXRMYXN0RXJyb3JzKCkgPzogWydlcnJvcnMnID0+IFtdXTsKICAgICAgICBmb3JlYWNoICgkbGFzdEVycm9yc1snZXJyb3JzJ10gYXMgJGVycm9yTWVzc2FnZSkgewogICAgICAgICAgICAkbWVzc2FnZXMgLj0gInskZXJyb3JNZXNzYWdlfSwgIjsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzdWJzdHIoJG1lc3NhZ2VzLCAwLCAtMik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWUtPmZvcm1hdCgiWS1tLWRcdEg6aTpzIik7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBleHRyYWN0VGltZVpvbmVEYXRhKCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCwgRGF0ZVRpbWUgJGRhdGVUaW1lKQogICAgewogICAgICAgICRzaWduID0gJGJpbmFyeURhdGFbJG9mZnNldEluZGV4KytdOwogICAgICAgICR0aW1lT2Zmc2V0SG91cnMgICA9IGludHZhbChzdWJzdHIoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCwgMikpOwogICAgICAgICR0aW1lT2Zmc2V0TWludXRlcyA9IGludHZhbChzdWJzdHIoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCArIDIsIDIpKTsKICAgICAgICAkb2Zmc2V0SW5kZXggKz0gNDsKCiAgICAgICAgJGludGVydmFsID0gbmV3IERhdGVJbnRlcnZhbCgiUFR7JHRpbWVPZmZzZXRIb3Vyc31IeyR0aW1lT2Zmc2V0TWludXRlc31NIik7CiAgICAgICAgaWYgKCRzaWduID09ICcrJykgewogICAgICAgICAgICAkZGF0ZVRpbWUtPnN1YigkaW50ZXJ2YWwpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRkYXRlVGltZS0+YWRkKCRpbnRlcnZhbCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGRhdGVUaW1lOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/ASNObject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxCaXRTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxCb29sZWFuOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcRW51bWVyYXRlZDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEdlbmVyYWxpemVkVGltZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxOdWxsT2JqZWN0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2JqZWN0SWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFJlbGF0aXZlT2JqZWN0SWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9jdGV0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXQ7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxVVENUaW1lOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSUE1U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcUHJpbnRhYmxlU3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcTnVtZXJpY1N0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFVURjhTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxVbml2ZXJzYWxTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxDaGFyYWN0ZXJTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxHZW5lcmFsU3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcVmlzaWJsZVN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEdyYXBoaWNTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxCTVBTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxUNjFTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3REZXNjcmlwdG9yOwp1c2UgRkdcVXRpbGl0eVxCaWdJbnRlZ2VyOwp1c2UgTG9naWNFeGNlcHRpb247CgovKioKICogQ2xhc3MgQVNOT2JqZWN0IGlzIHRoZSBiYXNlIGNsYXNzIGZvciBhbGwgY29uY3JldGUgQVNOLjEgb2JqZWN0cy4KICovCmFic3RyYWN0IGNsYXNzIEFTTk9iamVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIHByaXZhdGUgJGNvbnRlbnRMZW5ndGg7CiAgICBwcml2YXRlICRuck9mTGVuZ3RoT2N0ZXRzOwoKICAgIC8qKgogICAgICogTXVzdCByZXR1cm4gdGhlIG51bWJlciBvZiBvY3RldHMgb2YgdGhlIGNvbnRlbnQgcGFydC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpOwoKICAgIC8qKgogICAgICogRW5jb2RlIHRoZSBvYmplY3QgdXNpbmcgREVSIGVuY29kaW5nLgogICAgICoKICAgICAqIEBzZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9YLjY5MCNERVJfZW5jb2RpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdHMgdmFsdWUKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpOwoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBjb250ZW50IG9mIHRoaXMgb2JqZWN0IGluIGEgbm9uIGVuY29kZWQgZm9ybS4KICAgICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gcHJpbnQgdGhlIHZhbHVlIGluIGh1bWFuIHJlYWRhYmxlIGZvcm0uCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpOwoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBvYmplY3QgdHlwZSBvY3RldC4KICAgICAqIFRoaXMgc2hvdWxkIHVzZSB0aGUgY2xhc3MgY29uc3RhbnRzIG9mIElkZW50aWZpZXIuCiAgICAgKgogICAgICogQHNlZSBJZGVudGlmaWVyCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgYWxsIGlkZW50aWZpZXIgb2N0ZXRzLiBJZiBhbiBpbmhlcml0aW5nIGNsYXNzIG1vZGVscyBhIHRhZyB3aXRoCiAgICAgKiB0aGUgbG9uZyBmb3JtIGlkZW50aWZpZXIgZm9ybWF0LCBpdCBNVVNUIHJlaW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvCiAgICAgKiByZXR1cm4gYWxsIG9jdGV0cyBvZiB0aGUgaWRlbnRpZmllci4KICAgICAqCiAgICAgKiBAdGhyb3dzIExvZ2ljRXhjZXB0aW9uIElmIHRoZSBpZGVudGlmaWVyIGZvcm1hdCBpcyBsb25nIGZvcm0KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBJZGVudGlmaWVyIGFzIGEgc2V0IG9mIG9jdGV0cwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SWRlbnRpZmllcigpCiAgICB7CiAgICAgICAgJGZpcnN0T2N0ZXQgPSAkdGhpcy0+Z2V0VHlwZSgpOwoKICAgICAgICBpZiAoSWRlbnRpZmllcjo6aXNMb25nRm9ybSgkZmlyc3RPY3RldCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IExvZ2ljRXhjZXB0aW9uKHNwcmludGYoJ0lkZW50aWZpZXIgb2YgJXMgdXNlcyB0aGUgbG9uZyBmb3JtIGFuZCBtdXN0IHRoZXJlZm9yIG92ZXJyaWRlICJBU05PYmplY3Q6OmdldElkZW50aWZpZXIoKSIuJywgZ2V0X2NsYXNzKCR0aGlzKSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGNocigkZmlyc3RPY3RldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbmNvZGUgdGhpcyBvYmplY3QgdXNpbmcgREVSIGVuY29kaW5nLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIHRoZSBmdWxsIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29tcGxldGUgb2JqZWN0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRCaW5hcnkoKQogICAgewogICAgICAgICRyZXN1bHQgID0gJHRoaXMtPmdldElkZW50aWZpZXIoKTsKICAgICAgICAkcmVzdWx0IC49ICR0aGlzLT5jcmVhdGVMZW5ndGhQYXJ0KCk7CiAgICAgICAgJHJlc3VsdCAuPSAkdGhpcy0+Z2V0RW5jb2RlZFZhbHVlKCk7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY3JlYXRlTGVuZ3RoUGFydCgpCiAgICB7CiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSAkdGhpcy0+Z2V0Q29udGVudExlbmd0aCgpOwogICAgICAgICRuck9mTGVuZ3RoT2N0ZXRzID0gJHRoaXMtPmdldE51bWJlck9mTGVuZ3RoT2N0ZXRzKCRjb250ZW50TGVuZ3RoKTsKCiAgICAgICAgaWYgKCRuck9mTGVuZ3RoT2N0ZXRzID09IDEpIHsKICAgICAgICAgICAgcmV0dXJuIGNocigkY29udGVudExlbmd0aCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gdGhlIGZpcnN0IGxlbmd0aCBvY3RldCBkZXRlcm1pbmVzIHRoZSBudW1iZXIgc3Vic2VxdWVudCBsZW5ndGggb2N0ZXRzCiAgICAgICAgICAgICRsZW5ndGhPY3RldHMgPSBjaHIoMHg4MCB8ICgkbnJPZkxlbmd0aE9jdGV0cyAtIDEpKTsKICAgICAgICAgICAgZm9yICgkc2hpZnRMZW5ndGggPSA4ICogKCRuck9mTGVuZ3RoT2N0ZXRzIC0gMik7ICRzaGlmdExlbmd0aCA+PSAwOyAkc2hpZnRMZW5ndGggLT0gOCkgewogICAgICAgICAgICAgICAgJGxlbmd0aE9jdGV0cyAuPSBjaHIoJGNvbnRlbnRMZW5ndGggPj4gJHNoaWZ0TGVuZ3RoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRsZW5ndGhPY3RldHM7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXROdW1iZXJPZkxlbmd0aE9jdGV0cygkY29udGVudExlbmd0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+bnJPZkxlbmd0aE9jdGV0cykpIHsKICAgICAgICAgICAgaWYgKCRjb250ZW50TGVuZ3RoID09IG51bGwpIHsKICAgICAgICAgICAgICAgICRjb250ZW50TGVuZ3RoID0gJHRoaXMtPmdldENvbnRlbnRMZW5ndGgoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPm5yT2ZMZW5ndGhPY3RldHMgPSAxOwogICAgICAgICAgICBpZiAoJGNvbnRlbnRMZW5ndGggPiAxMjcpIHsKICAgICAgICAgICAgICAgIGRvIHsgLy8gbG9uZyBmb3JtCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm5yT2ZMZW5ndGhPY3RldHMrKzsKICAgICAgICAgICAgICAgICAgICAkY29udGVudExlbmd0aCA9ICRjb250ZW50TGVuZ3RoID4+IDg7CiAgICAgICAgICAgICAgICB9IHdoaWxlICgkY29udGVudExlbmd0aCA+IDApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPm5yT2ZMZW5ndGhPY3RldHM7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldENvbnRlbnRMZW5ndGgoKQogICAgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmNvbnRlbnRMZW5ndGgpKSB7CiAgICAgICAgICAgICR0aGlzLT5jb250ZW50TGVuZ3RoID0gJHRoaXMtPmNhbGN1bGF0ZUNvbnRlbnRMZW5ndGgoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+Y29udGVudExlbmd0aDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0Q29udGVudExlbmd0aCgkbmV3Q29udGVudExlbmd0aCkKICAgIHsKICAgICAgICAkdGhpcy0+Y29udGVudExlbmd0aCA9ICRuZXdDb250ZW50TGVuZ3RoOwogICAgICAgICR0aGlzLT5nZXROdW1iZXJPZkxlbmd0aE9jdGV0cygkbmV3Q29udGVudExlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIHdob2xlIG9iamVjdCAoaW5jbHVkaW5nIHRoZSBpZGVudGlmaWVyIGFuZCBsZW5ndGggb2N0ZXRzKS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE9iamVjdExlbmd0aCgpCiAgICB7CiAgICAgICAgJG5yT2ZJZGVudGlmaWVyT2N0ZXRzID0gc3RybGVuKCR0aGlzLT5nZXRJZGVudGlmaWVyKCkpOwogICAgICAgICRjb250ZW50TGVuZ3RoID0gJHRoaXMtPmdldENvbnRlbnRMZW5ndGgoKTsKICAgICAgICAkbnJPZkxlbmd0aE9jdGV0cyA9ICR0aGlzLT5nZXROdW1iZXJPZkxlbmd0aE9jdGV0cygkY29udGVudExlbmd0aCk7CgogICAgICAgIHJldHVybiAkbnJPZklkZW50aWZpZXJPY3RldHMgKyAkbnJPZkxlbmd0aE9jdGV0cyArICRjb250ZW50TGVuZ3RoOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENvbnRlbnQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIEFTTi4xIFR5cGUgb2YgdGhpcyBvYmplY3QuCiAgICAgKgogICAgICogQHNlZSBJZGVudGlmaWVyOjpnZXROYW1lKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGVOYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6Z2V0TmFtZSgkdGhpcy0+Z2V0VHlwZSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJpbmFyeURhdGEKICAgICAqIEBwYXJhbSBpbnQgJG9mZnNldEluZGV4CiAgICAgKgogICAgICogQHRocm93cyBQYXJzZXJFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIFxGR1xBU04xXEFTTk9iamVjdAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICBpZiAoc3RybGVuKCRiaW5hcnlEYXRhKSA8PSAkb2Zmc2V0SW5kZXgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbignQ2FuIG5vdCBwYXJzZSBiaW5hcnkgZnJvbSBkYXRhOiBPZmZzZXQgaW5kZXggbGFyZ2VyIHRoYW4gaW5wdXQgc2l6ZScsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICAkaWRlbnRpZmllck9jdGV0ID0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0pOwogICAgICAgIGlmIChJZGVudGlmaWVyOjppc0NvbnRleHRTcGVjaWZpY0NsYXNzKCRpZGVudGlmaWVyT2N0ZXQpICYmIElkZW50aWZpZXI6OmlzQ29uc3RydWN0ZWQoJGlkZW50aWZpZXJPY3RldCkpIHsKICAgICAgICAgICAgcmV0dXJuIEV4cGxpY2l0bHlUYWdnZWRPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCRpZGVudGlmaWVyT2N0ZXQpIHsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpCSVRTVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gQml0U3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OkJPT0xFQU46CiAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbjo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpFTlVNRVJBVEVEOgogICAgICAgICAgICAgICAgcmV0dXJuIEVudW1lcmF0ZWQ6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6SU5URUdFUjoKICAgICAgICAgICAgICAgIHJldHVybiBJbnRlZ2VyOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6Ok5VTEw6CiAgICAgICAgICAgICAgICByZXR1cm4gTnVsbE9iamVjdDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpPQkpFQ1RfSURFTlRJRklFUjoKICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RJZGVudGlmaWVyOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OlJFTEFUSVZFX09JRDoKICAgICAgICAgICAgICAgIHJldHVybiBSZWxhdGl2ZU9iamVjdElkZW50aWZpZXI6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6T0NURVRTVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gT2N0ZXRTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6U0VRVUVOQ0U6CiAgICAgICAgICAgICAgICByZXR1cm4gU2VxdWVuY2U6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6U0VUOgogICAgICAgICAgICAgICAgcmV0dXJuIFNldDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpVVENfVElNRToKICAgICAgICAgICAgICAgIHJldHVybiBVVENUaW1lOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OkdFTkVSQUxJWkVEX1RJTUU6CiAgICAgICAgICAgICAgICByZXR1cm4gR2VuZXJhbGl6ZWRUaW1lOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OklBNV9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gSUE1U3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OlBSSU5UQUJMRV9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gUHJpbnRhYmxlU3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6Ok5VTUVSSUNfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIE51bWVyaWNTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6VVRGOF9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gVVRGOFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpVTklWRVJTQUxfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIFVuaXZlcnNhbFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpDSEFSQUNURVJfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIENoYXJhY3RlclN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpHRU5FUkFMX1NUUklORzoKICAgICAgICAgICAgICAgIHJldHVybiBHZW5lcmFsU3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OlZJU0lCTEVfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6R1JBUEhJQ19TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gR3JhcGhpY1N0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpCTVBfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIEJNUFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpUNjFfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIFQ2MVN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpPQkpFQ1RfREVTQ1JJUFRPUjoKICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3REZXNjcmlwdG9yOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgaWRlbnRpZmllciBtYXkgYmUgPjEgYnl0ZS4KICAgICAgICAgICAgICAgIGlmIChJZGVudGlmaWVyOjppc0NvbnN0cnVjdGVkKCRpZGVudGlmaWVyT2N0ZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVbmtub3duQ29uc3RydWN0ZWRPYmplY3QoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRpZGVudGlmaWVyID0gc2VsZjo6cGFyc2VCaW5hcnlJZGVudGlmaWVyKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICAgICAgICAgICRsZW5ndGhPZlVua25vd25PYmplY3QgPSBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgJG9mZnNldEluZGV4ICs9ICRsZW5ndGhPZlVua25vd25PYmplY3Q7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVW5rbm93bk9iamVjdCgkaWRlbnRpZmllciwgJGxlbmd0aE9mVW5rbm93bk9iamVjdCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gcGFyc2VJZGVudGlmaWVyKCRpZGVudGlmaWVyT2N0ZXQsICRleHBlY3RlZElkZW50aWZpZXIsICRvZmZzZXRGb3JFeGNlcHRpb25IYW5kbGluZykKICAgIHsKICAgICAgICBpZiAoaXNfc3RyaW5nKCRpZGVudGlmaWVyT2N0ZXQpIHx8IGlzX251bWVyaWMoJGlkZW50aWZpZXJPY3RldCkgPT0gZmFsc2UpIHsKICAgICAgICAgICAgJGlkZW50aWZpZXJPY3RldCA9IG9yZCgkaWRlbnRpZmllck9jdGV0KTsKICAgICAgICB9CgogICAgICAgIGlmICgkaWRlbnRpZmllck9jdGV0ICE9ICRleHBlY3RlZElkZW50aWZpZXIpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSAnQ2FuIG5vdCBjcmVhdGUgYW4gJy5JZGVudGlmaWVyOjpnZXROYW1lKCRleHBlY3RlZElkZW50aWZpZXIpLicgZnJvbSBhbiAnLklkZW50aWZpZXI6OmdldE5hbWUoJGlkZW50aWZpZXJPY3RldCk7CiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJG1lc3NhZ2UsICRvZmZzZXRGb3JFeGNlcHRpb25IYW5kbGluZyk7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gcGFyc2VCaW5hcnlJZGVudGlmaWVyKCRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4KQogICAgewogICAgICAgIGlmIChzdHJsZW4oJGJpbmFyeURhdGEpIDw9ICRvZmZzZXRJbmRleCkgewogICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdDYW4gbm90IHBhcnNlIGlkZW50aWZpZXIgZnJvbSBkYXRhOiBPZmZzZXQgaW5kZXggbGFyZ2VyIHRoYW4gaW5wdXQgc2l6ZScsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICAkaWRlbnRpZmllciA9ICRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXTsKCiAgICAgICAgaWYgKElkZW50aWZpZXI6OmlzTG9uZ0Zvcm0ob3JkKCRpZGVudGlmaWVyKSkgPT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuICRpZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgaWYgKHN0cmxlbigkYmluYXJ5RGF0YSkgPD0gJG9mZnNldEluZGV4KSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdDYW4gbm90IHBhcnNlIGlkZW50aWZpZXIgKGxvbmcgZm9ybSkgZnJvbSBkYXRhOiBPZmZzZXQgaW5kZXggbGFyZ2VyIHRoYW4gaW5wdXQgc2l6ZScsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG5leHRPY3RldCA9ICRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXTsKICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJG5leHRPY3RldDsKCiAgICAgICAgICAgIGlmICgob3JkKCRuZXh0T2N0ZXQpICYgMHg4MCkgPT09IDApIHsKICAgICAgICAgICAgICAgIC8vIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBpcyAwIHRvIHdlIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpZGVudGlmaWVyCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRpZGVudGlmaWVyOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gcGFyc2VDb250ZW50TGVuZ3RoKCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCwgJG1pbmltdW1MZW5ndGggPSAwKQogICAgewogICAgICAgIGlmIChzdHJsZW4oJGJpbmFyeURhdGEpIDw9ICRvZmZzZXRJbmRleCkgewogICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdDYW4gbm90IHBhcnNlIGNvbnRlbnQgbGVuZ3RoIGZyb20gZGF0YTogT2Zmc2V0IGluZGV4IGxhcmdlciB0aGFuIGlucHV0IHNpemUnLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgIH0KCiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSBvcmQoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4KytdKTsKICAgICAgICBpZiAoKCRjb250ZW50TGVuZ3RoICYgMHg4MCkgIT0gMCkgewogICAgICAgICAgICAvLyBiaXQgOCBpcyBzZXQgLT4gdGhpcyBpcyB0aGUgbG9uZyBmb3JtCiAgICAgICAgICAgICRuck9mTGVuZ3RoT2N0ZXRzID0gJGNvbnRlbnRMZW5ndGggJiAweDdGOwogICAgICAgICAgICAkY29udGVudExlbmd0aCA9IEJpZ0ludGVnZXI6OmNyZWF0ZSgweDAwKTsKICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJG5yT2ZMZW5ndGhPY3RldHM7ICRpKyspIHsKICAgICAgICAgICAgICAgIGlmIChzdHJsZW4oJGJpbmFyeURhdGEpIDw9ICRvZmZzZXRJbmRleCkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ0NhbiBub3QgcGFyc2UgY29udGVudCBsZW5ndGggKGxvbmcgZm9ybSkgZnJvbSBkYXRhOiBPZmZzZXQgaW5kZXggbGFyZ2VyIHRoYW4gaW5wdXQgc2l6ZScsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkY29udGVudExlbmd0aCA9ICRjb250ZW50TGVuZ3RoLT5zaGlmdExlZnQoOCktPmFkZChvcmQoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4KytdKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkY29udGVudExlbmd0aC0+Y29tcGFyZShQSFBfSU5UX01BWCkgPiAwKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCJDYW4gbm90IHBhcnNlIGNvbnRlbnQgbGVuZ3RoIGZyb20gZGF0YTogbGVuZ3RoID4gbWF4aW11bSBpbnRlZ2VyIiwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGNvbnRlbnRMZW5ndGggPSAkY29udGVudExlbmd0aC0+dG9JbnRlZ2VyKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNvbnRlbnRMZW5ndGggPCAkbWluaW11bUxlbmd0aCkgewogICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdBICcuZ2V0X2NhbGxlZF9jbGFzcygpLiIgc2hvdWxkIGhhdmUgYSBjb250ZW50IGxlbmd0aCBvZiBhdCBsZWFzdCB7JG1pbmltdW1MZW5ndGh9LiBFeHRyYWN0ZWQgbGVuZ3RoIHdhcyB7JGNvbnRlbnRMZW5ndGh9IiwgJG9mZnNldEluZGV4KTsKICAgICAgICB9CgogICAgICAgICRsZW5EYXRhUmVtYWluaW5nID0gc3RybGVuKCRiaW5hcnlEYXRhKSAtICRvZmZzZXRJbmRleDsKCiAgICAgICAgaWYgKCRsZW5EYXRhUmVtYWluaW5nIDwgJGNvbnRlbnRMZW5ndGgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbigiQ29udGVudCBsZW5ndGggeyRjb250ZW50TGVuZ3RofSBleGNlZWRzIHJlbWFpbmluZyBkYXRhIGxlbmd0aCB7JGxlbkRhdGFSZW1haW5pbmd9IiwgJG9mZnNldEluZGV4KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY29udGVudExlbmd0aDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Base128.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBGR1xBU04xOwoKdXNlIEZHXFV0aWxpdHlcQmlnSW50ZWdlcjsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKCi8qKgogKiBBIGJhc2UtMTI4IGRlY29kZXIuCiAqLwpjbGFzcyBCYXNlMTI4CnsKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY29kZSgkdmFsdWUpCiAgICB7CiAgICAgICAgJHZhbHVlID0gQmlnSW50ZWdlcjo6Y3JlYXRlKCR2YWx1ZSk7CiAgICAgICAgJG9jdGV0cyA9IGNocigkdmFsdWUtPm1vZHVsdXMoMHg4MCktPnRvSW50ZWdlcigpKTsKCiAgICAgICAgJHZhbHVlID0gJHZhbHVlLT5zaGlmdFJpZ2h0KDcpOwogICAgICAgIHdoaWxlICgkdmFsdWUtPmNvbXBhcmUoMCkgPiAwKSB7CiAgICAgICAgICAgICRvY3RldHMgLj0gY2hyKDB4ODAgfCAkdmFsdWUtPm1vZHVsdXMoMHg4MCktPnRvSW50ZWdlcigpKTsKICAgICAgICAgICAgJHZhbHVlID0gJHZhbHVlLT5zaGlmdFJpZ2h0KDcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHN0cnJldigkb2N0ZXRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJG9jdGV0cwogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBnaXZlbiBvY3RldHMgcmVwcmVzZW50IGEgbWFsZm9ybWVkIGJhc2UtMTI4IHZhbHVlIG9yIHRoZSBkZWNvZGVkIHZhbHVlIHdvdWxkIGV4Y2VlZCB0aGUgdGhlIG1heGltdW0gaW50ZWdlciBsZW5ndGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlY29kZSgkb2N0ZXRzKQogICAgewogICAgICAgICRiaXRzUGVyT2N0ZXQgPSA3OwogICAgICAgICR2YWx1ZSA9IEJpZ0ludGVnZXI6OmNyZWF0ZSgwKTsKICAgICAgICAkaSA9IDA7CgogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgIGlmICghaXNzZXQoJG9jdGV0c1skaV0pKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ01hbGZvcm1lZCBiYXNlLTEyOCBlbmNvZGVkIHZhbHVlICgweCVzKS4nLCBzdHJ0b3VwcGVyKGJpbjJoZXgoJG9jdGV0cykpID86ICcwJykpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkb2N0ZXQgPSBvcmQoJG9jdGV0c1skaSsrXSk7CgogICAgICAgICAgICAkbDEgPSAkdmFsdWUtPnNoaWZ0TGVmdCgkYml0c1Blck9jdGV0KTsKICAgICAgICAgICAgJHIxID0gJG9jdGV0ICYgMHg3ZjsKICAgICAgICAgICAgJHZhbHVlID0gJGwxLT5hZGQoJHIxKTsKCiAgICAgICAgICAgIGlmICgwID09PSAoJG9jdGV0ICYgMHg4MCkpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKHN0cmluZykkdmFsdWU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Composite/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Composite/AttributeTypeAndValue.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxDb21wb3NpdGU7Cgp1c2UgRkdcQVNOMVxBU05PYmplY3Q7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdElkZW50aWZpZXI7CgpjbGFzcyBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUgZXh0ZW5kcyBTZXF1ZW5jZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBPYmplY3RJZGVudGlmaWVyfHN0cmluZyAkb2JqSWRlbnRpZmllcgogICAgICogQHBhcmFtIFxGR1xBU04xXEFTTk9iamVjdCAkdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRvYmpJZGVudGlmaWVyLCBBU05PYmplY3QgJHZhbHVlKQogICAgewogICAgICAgIGlmICgkb2JqSWRlbnRpZmllciBpbnN0YW5jZW9mIE9iamVjdElkZW50aWZpZXIgPT0gZmFsc2UpIHsKICAgICAgICAgICAgJG9iaklkZW50aWZpZXIgPSBuZXcgT2JqZWN0SWRlbnRpZmllcigkb2JqSWRlbnRpZmllcik7CiAgICAgICAgfQogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJG9iaklkZW50aWZpZXIsICR2YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y2hpbGRyZW5bMF0uJzogJy4kdGhpcy0+Y2hpbGRyZW5bMV07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Composite/RDNString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxDb21wb3NpdGU7Cgp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcUHJpbnRhYmxlU3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSUE1U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcVVRGOFN0cmluZzsKCmNsYXNzIFJETlN0cmluZyBleHRlbmRzIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nfFxGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyICRvYmplY3RJZGVudGlmaWVyU3RyaW5nCiAgICAgKiBAcGFyYW0gc3RyaW5nfFxGR1xBU04xXEFTTk9iamVjdCAkdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRvYmplY3RJZGVudGlmaWVyU3RyaW5nLCAkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKFByaW50YWJsZVN0cmluZzo6aXNWYWxpZCgkdmFsdWUpKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IG5ldyBQcmludGFibGVTdHJpbmcoJHZhbHVlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoSUE1U3RyaW5nOjppc1ZhbGlkKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IG5ldyBJQTVTdHJpbmcoJHZhbHVlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IG5ldyBVVEY4U3RyaW5nKCR2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJG9iamVjdElkZW50aWZpZXJTdHJpbmcsICR2YWx1ZSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Composite/RelativeDistinguishedName.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxDb21wb3NpdGU7Cgp1c2UgRkdcQVNOMVxFeGNlcHRpb25cTm90SW1wbGVtZW50ZWRFeGNlcHRpb247CnVzZSBGR1xBU04xXEFTTk9iamVjdDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFNldDsKCmNsYXNzIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUgZXh0ZW5kcyBTZXQKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nfFxGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyICRvYmpJZGVudGlmaWVyU3RyaW5nCiAgICAgKiBAcGFyYW0gXEZHXEFTTjFcQVNOT2JqZWN0ICR2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG9iaklkZW50aWZpZXJTdHJpbmcsIEFTTk9iamVjdCAkdmFsdWUpCiAgICB7CiAgICAgICAgLy8gVE9ETzogVGhpcyBkb2VzIG9ubHkgc3VwcG9ydCBvbmUgZWxlbWVudCBpbiB0aGUgUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSBTZXQgYnV0IGl0IGl0IGlzIGRlZmluZWQgYXMgZm9sbG93czoKICAgICAgICAvLyBSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lIDo6PSBTRVQgU0laRSAoMS4uTUFYKSBPRiBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KG5ldyBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUoJG9iaklkZW50aWZpZXJTdHJpbmcsICR2YWx1ZSkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50KCkKICAgIHsKICAgICAgICAvKiogQHZhciBcRkdcQVNOMVxBU05PYmplY3QgJGZpcnN0T2JqZWN0ICovCiAgICAgICAgJGZpcnN0T2JqZWN0ID0gJHRoaXMtPmNoaWxkcmVuWzBdOwogICAgICAgIHJldHVybiAkZmlyc3RPYmplY3QtPl9fdG9TdHJpbmcoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEF0IHRoZSBjdXJyZW50IHZlcnNpb24gdGhpcyBjb2RlIGNhbiBub3Qgd29yayBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgQ29uc3RydWN0IHJlcXVpcmVzCiAgICAgKiB0aGUgY2xhc3MgdG8gc3VwcG9ydCBhIGNvbnN0cnVjdG9yIHdpdGhvdXQgYXJndW1lbnRzLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHRoaXMgZnVuY3Rpb24gaXMgbm90IHlldCBpbXBsZW1lbnRlZCEgRmVlbCBmcmVlIHRvIHN1Ym1pdCBhIHB1bGwgcmVxdWVzdCBvbiBnaXRodWIKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJpbmFyeURhdGEKICAgICAqIEBwYXJhbSBpbnQgJG9mZnNldEluZGV4CiAgICAgKiBAdGhyb3dzIE5vdEltcGxlbWVudGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbigpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Construct.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBBcnJheUFjY2VzczsKdXNlIEFycmF5SXRlcmF0b3I7CnVzZSBDb3VudGFibGU7CnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CnVzZSBJdGVyYXRvcjsKCmFic3RyYWN0IGNsYXNzIENvbnN0cnVjdCBleHRlbmRzIEFTTk9iamVjdCBpbXBsZW1lbnRzIENvdW50YWJsZSwgQXJyYXlBY2Nlc3MsIEl0ZXJhdG9yLCBQYXJzYWJsZQp7CiAgICAvKiogQHZhciBcRkdcQVNOMVxBU05PYmplY3RbXSAqLwogICAgcHJvdGVjdGVkICRjaGlsZHJlbjsKICAgIHByaXZhdGUgJGl0ZXJhdG9yUG9zaXRpb247CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEZHXEFTTjFcQVNOT2JqZWN0W10gJGNoaWxkcmVuIHRoZSB2YXJpYWRpYyB0eXBlIGhpbnQgaXMgY29tbWVudGVkIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svaGh2bS9pc3N1ZXMvNDg1OAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoLyogSEhfRklYTUVbNDg1OF06IHZhcmlhZGljICsgc3RyaWN0ICovIC4uLiRjaGlsZHJlbikKICAgIHsKICAgICAgICAkdGhpcy0+Y2hpbGRyZW4gPSAkY2hpbGRyZW47CiAgICAgICAgJHRoaXMtPml0ZXJhdG9yUG9zaXRpb24gPSAwOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNoaWxkcmVuOwogICAgfQoKICAgICNbXFJldHVyblR5cGVXaWxsQ2hhbmdlXQogICAgcHVibGljIGZ1bmN0aW9uIHJld2luZCgpCiAgICB7CiAgICAgICAgJHRoaXMtPml0ZXJhdG9yUG9zaXRpb24gPSAwOwogICAgfQoKICAgICNbXFJldHVyblR5cGVXaWxsQ2hhbmdlXQogICAgcHVibGljIGZ1bmN0aW9uIGN1cnJlbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y2hpbGRyZW5bJHRoaXMtPml0ZXJhdG9yUG9zaXRpb25dOwogICAgfQoKICAgICNbXFJldHVyblR5cGVXaWxsQ2hhbmdlXQogICAgcHVibGljIGZ1bmN0aW9uIGtleSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5pdGVyYXRvclBvc2l0aW9uOwogICAgfQoKICAgICNbXFJldHVyblR5cGVXaWxsQ2hhbmdlXQogICAgcHVibGljIGZ1bmN0aW9uIG5leHQoKQogICAgewogICAgICAgICR0aGlzLT5pdGVyYXRvclBvc2l0aW9uKys7CiAgICB9CgogICAgI1tcUmV0dXJuVHlwZVdpbGxDaGFuZ2VdCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWQoKQogICAgewogICAgICAgIHJldHVybiBpc3NldCgkdGhpcy0+Y2hpbGRyZW5bJHRoaXMtPml0ZXJhdG9yUG9zaXRpb25dKTsKICAgIH0KCiAgICAjW1xSZXR1cm5UeXBlV2lsbENoYW5nZV0KICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRFeGlzdHMoJG9mZnNldCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygkb2Zmc2V0LCAkdGhpcy0+Y2hpbGRyZW4pOwogICAgfQoKICAgICNbXFJldHVyblR5cGVXaWxsQ2hhbmdlXQogICAgcHVibGljIGZ1bmN0aW9uIG9mZnNldEdldCgkb2Zmc2V0KQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y2hpbGRyZW5bJG9mZnNldF07CiAgICB9CgogICAgI1tcUmV0dXJuVHlwZVdpbGxDaGFuZ2VdCiAgICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0U2V0KCRvZmZzZXQsICR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoJG9mZnNldCA9PT0gbnVsbCkgewogICAgICAgICAgICAkb2Zmc2V0ID0gY291bnQoJHRoaXMtPmNoaWxkcmVuKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jaGlsZHJlblskb2Zmc2V0XSA9ICR2YWx1ZTsKICAgIH0KCiAgICAjW1xSZXR1cm5UeXBlV2lsbENoYW5nZV0KICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRVbnNldCgkb2Zmc2V0KQogICAgewogICAgICAgIHVuc2V0KCR0aGlzLT5jaGlsZHJlblskb2Zmc2V0XSk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNhbGN1bGF0ZUNvbnRlbnRMZW5ndGgoKQogICAgewogICAgICAgICRsZW5ndGggPSAwOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5jaGlsZHJlbiBhcyAkY29tcG9uZW50KSB7CiAgICAgICAgICAgICRsZW5ndGggKz0gJGNvbXBvbmVudC0+Z2V0T2JqZWN0TGVuZ3RoKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGxlbmd0aDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RW5jb2RlZFZhbHVlKCkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmNoaWxkcmVuIGFzICRjb21wb25lbnQpIHsKICAgICAgICAgICAgJHJlc3VsdCAuPSAkY29tcG9uZW50LT5nZXRCaW5hcnkoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRDaGlsZChBU05PYmplY3QgJGNoaWxkKQogICAgewogICAgICAgICR0aGlzLT5jaGlsZHJlbltdID0gJGNoaWxkOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRDaGlsZHJlbihhcnJheSAkY2hpbGRyZW4pCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJGNoaWxkcmVuIGFzICRjaGlsZCkgewogICAgICAgICAgICAkdGhpcy0+YWRkQ2hpbGQoJGNoaWxkKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgICRuck9mQ2hpbGRyZW4gPSAkdGhpcy0+Z2V0TnVtYmVyT2ZDaGlsZHJlbigpOwogICAgICAgICRjaGlsZFN0cmluZyA9ICRuck9mQ2hpbGRyZW4gPT0gMSA/ICdjaGlsZCcgOiAnY2hpbGRyZW4nOwoKICAgICAgICByZXR1cm4gIlt7JG5yT2ZDaGlsZHJlbn0geyRjaGlsZFN0cmluZ31dIjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TnVtYmVyT2ZDaGlsZHJlbigpCiAgICB7CiAgICAgICAgcmV0dXJuIGNvdW50KCR0aGlzLT5jaGlsZHJlbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxGR1xBU04xXEFTTk9iamVjdFtdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDaGlsZHJlbigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jaGlsZHJlbjsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gXEZHXEFTTjFcQVNOT2JqZWN0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGaXJzdENoaWxkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNoaWxkcmVuWzBdOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkYmluYXJ5RGF0YQogICAgICogQHBhcmFtIGludCAkb2Zmc2V0SW5kZXgKICAgICAqCiAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIENvbnN0cnVjdHxzdGF0aWMKICAgICAqLwogICAgI1tcUmV0dXJuVHlwZVdpbGxDaGFuZ2VdCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHN0YXRpYygpOwogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCAkcGFyc2VkT2JqZWN0LT5nZXRUeXBlKCksICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAkc3RhcnRJbmRleCA9ICRvZmZzZXRJbmRleDsKCiAgICAgICAgJGNoaWxkcmVuID0gW107CiAgICAgICAgJG9jdGV0c1RvUmVhZCA9ICRjb250ZW50TGVuZ3RoOwogICAgICAgIHdoaWxlICgkb2N0ZXRzVG9SZWFkID4gMCkgewogICAgICAgICAgICAkbmV3Q2hpbGQgPSBBU05PYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICRvY3RldHNUb1JlYWQgLT0gJG5ld0NoaWxkLT5nZXRPYmplY3RMZW5ndGgoKTsKICAgICAgICAgICAgJGNoaWxkcmVuW10gPSAkbmV3Q2hpbGQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG9jdGV0c1RvUmVhZCAhPT0gMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCJTZXF1ZW5jZSBsZW5ndGggaW5jb3JyZWN0IiwgJHN0YXJ0SW5kZXgpOwogICAgICAgIH0KCiAgICAgICAgJHBhcnNlZE9iamVjdC0+YWRkQ2hpbGRyZW4oJGNoaWxkcmVuKTsKICAgICAgICAkcGFyc2VkT2JqZWN0LT5zZXRDb250ZW50TGVuZ3RoKCRjb250ZW50TGVuZ3RoKTsKCiAgICAgICAgcmV0dXJuICRwYXJzZWRPYmplY3Q7CiAgICB9CgogICAgI1tcUmV0dXJuVHlwZVdpbGxDaGFuZ2VdCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnQoJG1vZGUgPSBDT1VOVF9OT1JNQUwpCiAgICB7CiAgICAgICAgcmV0dXJuIGNvdW50KCR0aGlzLT5jaGlsZHJlbiwgJG1vZGUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJdGVyYXRvcigpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBBcnJheUl0ZXJhdG9yKCR0aGlzLT5jaGlsZHJlbik7CiAgICB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Exception/NotImplementedException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxFeGNlcHRpb247CgpjbGFzcyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24Kewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Exception/ParserException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxFeGNlcHRpb247CgpjbGFzcyBQYXJzZXJFeGNlcHRpb24gZXh0ZW5kcyBcRXhjZXB0aW9uCnsKICAgIHByaXZhdGUgJGVycm9yTWVzc2FnZTsKICAgIHByaXZhdGUgJG9mZnNldDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGVycm9yTWVzc2FnZSwgJG9mZnNldCkKICAgIHsKICAgICAgICAkdGhpcy0+ZXJyb3JNZXNzYWdlID0gJGVycm9yTWVzc2FnZTsKICAgICAgICAkdGhpcy0+b2Zmc2V0ID0gJG9mZnNldDsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCJBU04uMSBQYXJzZXIgRXhjZXB0aW9uIGF0IG9mZnNldCB7JHRoaXMtPm9mZnNldH06IHskdGhpcy0+ZXJyb3JNZXNzYWdlfSIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPZmZzZXQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+b2Zmc2V0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/ExplicitlyTaggedObject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CgovKioKICogQ2xhc3MgRXhwbGljaXRseVRhZ2dlZE9iamVjdCBkZWNvcmF0ZSBhbiBpbm5lciBvYmplY3Qgd2l0aCBhbiBhZGRpdGlvbmFsIHRhZyB0aGF0IGdpdmVzIGluZm9ybWF0aW9uIGFib3V0CiAqIGl0cyBjb250ZXh0IHNwZWNpZmljIG1lYW5pbmcuCiAqCiAqIEV4cGxhbmF0aW9uIHRha2VuIGZyb20gQSBMYXltYW4ncyBHdWlkZSB0byBhIFN1YnNldCBvZiBBU04uMSwgQkVSLCBhbmQgREVSOgogKiA+Pj4gQW4gUlNBIExhYm9yYXRvcmllcyBUZWNobmljYWwgTm90ZQogKiA+Pj4gQnVydG9uIFMuIEthbGlza2kgSnIuCiAqID4+PiBSZXZpc2VkIE5vdmVtYmVyIDEsIDE5OTMKICoKICogWy4uLl0KICogRXhwbGljaXRseSB0YWdnZWQgdHlwZXMgYXJlIGRlcml2ZWQgZnJvbSBvdGhlciB0eXBlcyBieSBhZGRpbmcgYW4gb3V0ZXIgdGFnIHRvIHRoZSB1bmRlcmx5aW5nIHR5cGUuCiAqIEluIGVmZmVjdCwgZXhwbGljaXRseSB0YWdnZWQgdHlwZXMgYXJlIHN0cnVjdHVyZWQgdHlwZXMgY29uc2lzdGluZyBvZiBvbmUgY29tcG9uZW50LCB0aGUgdW5kZXJseWluZyB0eXBlLgogKiBFeHBsaWNpdCB0YWdnaW5nIGlzIGRlbm90ZWQgYnkgdGhlIEFTTi4xIGtleXdvcmRzIFtjbGFzcyBudW1iZXJdIEVYUExJQ0lUIChzZWUgU2VjdGlvbiA1LjIpLgogKiBbLi4uXQogKgogKiBAc2VlIGh0dHA6Ly9sdWNhLm50b3Aub3JnL1RlYWNoaW5nL0FwcHVudGkvYXNuMS5odG1sCiAqLwpjbGFzcyBFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0IGV4dGVuZHMgQVNOT2JqZWN0CnsKICAgIC8qKiBAdmFyIFxGR1xBU04xXEFTTk9iamVjdFtdICovCiAgICBwcml2YXRlICRkZWNvcmF0ZWRPYmplY3RzOwogICAgcHJpdmF0ZSAkdGFnOwoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkdGFnCiAgICAgKiBAcGFyYW0gXEZHXEFTTjFcQVNOT2JqZWN0ICRvYmplY3RzLC4uLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHRhZywgLyogSEhfRklYTUVbNDg1OF06IHZhcmlhZGljICsgc3RyaWN0ICovIC4uLiRvYmplY3RzKQogICAgewogICAgICAgICR0aGlzLT50YWcgPSAkdGFnOwogICAgICAgICR0aGlzLT5kZWNvcmF0ZWRPYmplY3RzID0gJG9iamVjdHM7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNhbGN1bGF0ZUNvbnRlbnRMZW5ndGgoKQogICAgewogICAgICAgICRsZW5ndGggPSAwOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5kZWNvcmF0ZWRPYmplY3RzIGFzICRvYmplY3QpIHsKICAgICAgICAgICAgJGxlbmd0aCArPSAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbGVuZ3RoOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNvZGVkVmFsdWUoKQogICAgewogICAgICAgICRlbmNvZGVkID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmRlY29yYXRlZE9iamVjdHMgYXMgJG9iamVjdCkgewogICAgICAgICAgICAkZW5jb2RlZCAuPSAkb2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZW5jb2RlZDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kZWNvcmF0ZWRPYmplY3RzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICBzd2l0Y2ggKCRsZW5ndGggPSBjb3VudCgkdGhpcy0+ZGVjb3JhdGVkT2JqZWN0cykpIHsKICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgIHJldHVybiAiQ29udGV4dCBzcGVjaWZpYyBlbXB0eSBvYmplY3Qgd2l0aCB0YWcgW3skdGhpcy0+dGFnfV0iOwogICAgICAgIGNhc2UgMToKICAgICAgICAgICAgJGRlY29yYXRlZFR5cGUgPSBJZGVudGlmaWVyOjpnZXRTaG9ydE5hbWUoJHRoaXMtPmRlY29yYXRlZE9iamVjdHNbMF0tPmdldFR5cGUoKSk7CiAgICAgICAgICAgIHJldHVybiAiQ29udGV4dCBzcGVjaWZpYyAkZGVjb3JhdGVkVHlwZSB3aXRoIHRhZyBbeyR0aGlzLT50YWd9XSI7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuICIkbGVuZ3RoIGNvbnRleHQgc3BlY2lmaWMgb2JqZWN0cyB3aXRoIHRhZyBbeyR0aGlzLT50YWd9XSI7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gb3JkKCR0aGlzLT5nZXRJZGVudGlmaWVyKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmNyZWF0ZShJZGVudGlmaWVyOjpDTEFTU19DT05URVhUX1NQRUNJRklDLCB0cnVlLCAkdGhpcy0+dGFnKTsKCiAgICAgICAgcmV0dXJuIGlzX2ludCgkaWRlbnRpZmllcikgPyBjaHIoJGlkZW50aWZpZXIpIDogJGlkZW50aWZpZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFRhZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50YWc7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tQmluYXJ5KCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCA9IDApCiAgICB7CiAgICAgICAgJGlkZW50aWZpZXIgPSBzZWxmOjpwYXJzZUJpbmFyeUlkZW50aWZpZXIoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgJGZpcnN0SWRlbnRpZmllck9jdGV0ID0gb3JkKCRpZGVudGlmaWVyKTsKICAgICAgICBhc3NlcnQoSWRlbnRpZmllcjo6aXNDb250ZXh0U3BlY2lmaWNDbGFzcygkZmlyc3RJZGVudGlmaWVyT2N0ZXQpLCAnaWRlbnRpZmllciBvY3RldCBzaG91bGQgaW5kaWNhdGUgY29udGV4dCBzcGVjaWZpYyBjbGFzcycpOwogICAgICAgIGFzc2VydChJZGVudGlmaWVyOjppc0NvbnN0cnVjdGVkKCRmaXJzdElkZW50aWZpZXJPY3RldCksICdpZGVudGlmaWVyIG9jdGV0IHNob3VsZCBpbmRpY2F0ZSBjb25zdHJ1Y3RlZCBvYmplY3QnKTsKICAgICAgICAkdGFnID0gSWRlbnRpZmllcjo6Z2V0VGFnTnVtYmVyKCRpZGVudGlmaWVyKTsKCiAgICAgICAgJHRvdGFsQ29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAkcmVtYWluaW5nQ29udGVudExlbmd0aCA9ICR0b3RhbENvbnRlbnRMZW5ndGg7CgogICAgICAgICRvZmZzZXRJbmRleE9mRGVjb3JhdGVkT2JqZWN0ID0gJG9mZnNldEluZGV4OwogICAgICAgICRkZWNvcmF0ZWRPYmplY3RzID0gW107CgogICAgICAgIHdoaWxlICgkcmVtYWluaW5nQ29udGVudExlbmd0aCA+IDApIHsKICAgICAgICAgICAgJG5leHRPYmplY3QgPSBBU05PYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICRyZW1haW5pbmdDb250ZW50TGVuZ3RoIC09ICRuZXh0T2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKTsKICAgICAgICAgICAgJGRlY29yYXRlZE9iamVjdHNbXSA9ICRuZXh0T2JqZWN0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRyZW1haW5pbmdDb250ZW50TGVuZ3RoICE9IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbigiQ29udGV4dC1TcGVjaWZpYyBleHBsaWNpdGx5IHRhZ2dlZCBvYmplY3QgWyR0YWddIHN0YXJ0aW5nIGF0IG9mZnNldCAkb2Zmc2V0SW5kZXhPZkRlY29yYXRlZE9iamVjdCBzcGVjaWZpZXMgYSBsZW5ndGggb2YgJHRvdGFsQ29udGVudExlbmd0aCBvY3RldHMgYnV0ICRyZW1haW5pbmdDb250ZW50TGVuZ3RoIHJlbWFpbiBhZnRlciBwYXJzaW5nIHRoZSBjb250ZW50IiwgJG9mZnNldEluZGV4T2ZEZWNvcmF0ZWRPYmplY3QpOwogICAgICAgIH0KCiAgICAgICAgJHBhcnNlZE9iamVjdCA9IG5ldyBzZWxmKCR0YWcsIC4uLiRkZWNvcmF0ZWRPYmplY3RzKTsKICAgICAgICAkcGFyc2VkT2JqZWN0LT5zZXRDb250ZW50TGVuZ3RoKCR0b3RhbENvbnRlbnRMZW5ndGgpOwogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Identifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBFeGNlcHRpb247CgovKioKICogVGhlIElkZW50aWZpZXIgZW5jb2RlcyB0aGUgQVNOLjEgdGFnIChjbGFzcyBhbmQgbnVtYmVyKSBvZiB0aGUgdHlwZSBvZiBhIGRhdGEgdmFsdWUuCiAqCiAqIEV2ZXJ5IGlkZW50aWZpZXIgd2hvc2UgbnVtYmVyIGlzIGluIHRoZSByYW5nZSAwIHRvIDMwIGhhcyB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKICoKICogQml0czogICAgOCAgNyAgICA2ICAgIDUgIDQgIDMgIDIgIDEKICogICAgICAgfCBDbGFzcyB8IFAvQyB8ICAgVGFnIG51bWJlciAgfAogKiAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAqCiAqIEJpdHMgOCBhbmQgNyBkZWZpbmUgdGhlIGNsYXNzIG9mIHRoaXMgdHlwZSAoIFVuaXZlcnNhbCwgQXBwbGljYXRpb24sIENvbnRleHQtc3BlY2lmaWMgb3IgUHJpdmF0ZSkuCiAqIEJpdCA2IGVuY29kZWQgd2hldGhlciB0aGlzIHR5cGUgaXMgcHJpbWl0aXZlIG9yIGNvbnN0cnVjdGVkCiAqIFRoZSByZW1haW5pbmcgYml0cyA1IC0gMSBlbmNvZGUgdGhlIHRhZyBudW1iZXIKICovCmNsYXNzIElkZW50aWZpZXIKewogICAgY29uc3QgQ0xBU1NfVU5JVkVSU0FMICAgICAgICA9IDB4MDA7CiAgICBjb25zdCBDTEFTU19BUFBMSUNBVElPTiAgICAgID0gMHgwMTsKICAgIGNvbnN0IENMQVNTX0NPTlRFWFRfU1BFQ0lGSUMgPSAweDAyOwogICAgY29uc3QgQ0xBU1NfUFJJVkFURSAgICAgICAgICA9IDB4MDM7CgogICAgY29uc3QgRU9DICAgICAgICAgICAgICAgPSAweDAwOyAvLyB1bnN1cHBvcnRlZCBmb3Igbm93CiAgICBjb25zdCBCT09MRUFOICAgICAgICAgICA9IDB4MDE7CiAgICBjb25zdCBJTlRFR0VSICAgICAgICAgICA9IDB4MDI7CiAgICBjb25zdCBCSVRTVFJJTkcgICAgICAgICA9IDB4MDM7CiAgICBjb25zdCBPQ1RFVFNUUklORyAgICAgICA9IDB4MDQ7CiAgICBjb25zdCBOVUxMICAgICAgICAgICAgICA9IDB4MDU7CiAgICBjb25zdCBPQkpFQ1RfSURFTlRJRklFUiA9IDB4MDY7CiAgICBjb25zdCBPQkpFQ1RfREVTQ1JJUFRPUiA9IDB4MDc7CiAgICBjb25zdCBFWFRFUk5BTCAgICAgICAgICA9IDB4MDg7IC8vIHVuc3VwcG9ydGVkIGZvciBub3cKICAgIGNvbnN0IFJFQUwgICAgICAgICAgICAgID0gMHgwOTsgLy8gdW5zdXBwb3J0ZWQgZm9yIG5vdwogICAgY29uc3QgRU5VTUVSQVRFRCAgICAgICAgPSAweDBBOwogICAgY29uc3QgRU1CRURERURfUERWICAgICAgPSAweDBCOyAvLyB1bnN1cHBvcnRlZCBmb3Igbm93CiAgICBjb25zdCBVVEY4X1NUUklORyAgICAgICA9IDB4MEM7CiAgICBjb25zdCBSRUxBVElWRV9PSUQgICAgICA9IDB4MEQ7CiAgICAvLyB2YWx1ZSAweDBFIGFuZCAweDBGIGFyZSByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZQoKICAgIGNvbnN0IFNFUVVFTkNFICAgICAgICAgID0gMHgzMDsKICAgIGNvbnN0IFNFVCAgICAgICAgICAgICAgID0gMHgzMTsKICAgIGNvbnN0IE5VTUVSSUNfU1RSSU5HICAgID0gMHgxMjsKICAgIGNvbnN0IFBSSU5UQUJMRV9TVFJJTkcgID0gMHgxMzsKICAgIGNvbnN0IFQ2MV9TVFJJTkcgICAgICAgID0gMHgxNDsgLy8gc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIFRlbGV0ZXh0U3RyaW5nCiAgICBjb25zdCBWSURFT1RFWFRfU1RSSU5HICA9IDB4MTU7CiAgICBjb25zdCBJQTVfU1RSSU5HICAgICAgICA9IDB4MTY7CiAgICBjb25zdCBVVENfVElNRSAgICAgICAgICA9IDB4MTc7CiAgICBjb25zdCBHRU5FUkFMSVpFRF9USU1FICA9IDB4MTg7CiAgICBjb25zdCBHUkFQSElDX1NUUklORyAgICA9IDB4MTk7CiAgICBjb25zdCBWSVNJQkxFX1NUUklORyAgICA9IDB4MUE7CiAgICBjb25zdCBHRU5FUkFMX1NUUklORyAgICA9IDB4MUI7CiAgICBjb25zdCBVTklWRVJTQUxfU1RSSU5HICA9IDB4MUM7CiAgICBjb25zdCBDSEFSQUNURVJfU1RSSU5HICA9IDB4MUQ7IC8vIFVucmVzdHJpY3RlZCBjaGFyYWN0ZXIgdHlwZQogICAgY29uc3QgQk1QX1NUUklORyAgICAgICAgPSAweDFFOwoKICAgIGNvbnN0IExPTkdfRk9STSAgICAgICAgID0gMHgxRjsKICAgIGNvbnN0IElTX0NPTlNUUlVDVEVEICAgID0gMHgyMDsKCiAgICAvKioKICAgICAqIENyZWF0ZXMgYW4gaWRlbnRpZmllci4gU2hvcnQgZm9ybSBpZGVudGlmaWVycyBhcmUgcmV0dXJuZWQgYXMgaW50ZWdlcnMKICAgICAqIGZvciBCQywgbG9uZyBmb3JtIGlkZW50aWZpZXJzIHdpbGwgYmUgcmV0dXJuZWQgYXMgYSBzdHJpbmcgb2Ygb2N0ZXRzLgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGNsYXNzCiAgICAgKiBAcGFyYW0gYm9vbCAkaXNDb25zdHJ1Y3RlZAogICAgICogQHBhcmFtIGludCAkdGFnTnVtYmVyCiAgICAgKgogICAgICogQHRocm93cyBFeGNlcHRpb24gaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgaW52YWxpZAogICAgICoKICAgICAqIEByZXR1cm4gaW50fHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZSgkY2xhc3MsICRpc0NvbnN0cnVjdGVkLCAkdGFnTnVtYmVyKQogICAgewogICAgICAgIGlmICghaXNfbnVtZXJpYygkY2xhc3MpIHx8ICRjbGFzcyA8IHNlbGY6OkNMQVNTX1VOSVZFUlNBTCB8fCAkY2xhc3MgPiBzZWxmOjpDTEFTU19QUklWQVRFKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oc3ByaW50ZignSW52YWxpZCBjbGFzcyAlZCBnaXZlbicsICRjbGFzcykpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc19ib29sKCRpc0NvbnN0cnVjdGVkKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJcJGlzQ29uc3RydWN0ZWQgbXVzdCBiZSBhIGJvb2xlYW4gdmFsdWUgKCRpc0NvbnN0cnVjdGVkIGdpdmVuKSIpOwogICAgICAgIH0KCiAgICAgICAgJHRhZ051bWJlciA9IHNlbGY6Om1ha2VOdW1lcmljKCR0YWdOdW1iZXIpOwogICAgICAgIGlmICgkdGFnTnVtYmVyIDwgMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKHNwcmludGYoJ0ludmFsaWQgJHRhZ051bWJlciAlZCBnaXZlbi4gWW91IGNhbiBvbmx5IHVzZSBwb3NpdGl2ZSBpbnRlZ2Vycy4nLCAkdGFnTnVtYmVyKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRhZ051bWJlciA8IHNlbGY6OkxPTkdfRk9STSkgewogICAgICAgICAgICByZXR1cm4gKCRjbGFzcyA8PCA2KSB8ICgkaXNDb25zdHJ1Y3RlZCA8PCA1KSB8ICR0YWdOdW1iZXI7CiAgICAgICAgfQoKICAgICAgICAkZmlyc3RPY3RldCA9ICgkY2xhc3MgPDwgNikgfCAoJGlzQ29uc3RydWN0ZWQgPDwgNSkgfCBzZWxmOjpMT05HX0ZPUk07CgogICAgICAgIC8vIFRhZyBudW1iZXJzIGZvcm1hdHRlZCBpbiBsb25nIGZvcm0gYXJlIGJhc2UtMTI4IGVuY29kZWQuIFNlZSBYLjYwOSM4LjEuMi40CiAgICAgICAgcmV0dXJuIGNocigkZmlyc3RPY3RldCkuQmFzZTEyODo6ZW5jb2RlKCR0YWdOdW1iZXIpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNDb25zdHJ1Y3RlZCgkaWRlbnRpZmllck9jdGV0KQogICAgewogICAgICAgIHJldHVybiAoJGlkZW50aWZpZXJPY3RldCAmIHNlbGY6OklTX0NPTlNUUlVDVEVEKSA9PT0gc2VsZjo6SVNfQ09OU1RSVUNURUQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0xvbmdGb3JtKCRpZGVudGlmaWVyT2N0ZXQpCiAgICB7CiAgICAgICAgcmV0dXJuICgkaWRlbnRpZmllck9jdGV0ICYgc2VsZjo6TE9OR19GT1JNKSA9PT0gc2VsZjo6TE9OR19GT1JNOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBtYXBwZWQgQVNOLjEgdHlwZSB3aXRoIGEgcHJlY2VkaW5nICJBU04uMSAiLgogICAgICoKICAgICAqIEV4YW1wbGU6IEFTTi4xIE9jdGV0IFN0cmluZwogICAgICoKICAgICAqIEBzZWUgSWRlbnRpZmllcjo6Z2V0U2hvcnROYW1lKCkKICAgICAqCiAgICAgKiBAcGFyYW0gaW50fHN0cmluZyAkaWRlbnRpZmllcgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0TmFtZSgkaWRlbnRpZmllcikKICAgIHsKICAgICAgICAkaWRlbnRpZmllck9jdGV0ID0gc2VsZjo6bWFrZU51bWVyaWMoJGlkZW50aWZpZXIpOwoKICAgICAgICAkdHlwZU5hbWUgPSBzdGF0aWM6OmdldFNob3J0TmFtZSgkaWRlbnRpZmllcik7CgogICAgICAgIGlmICgoJGlkZW50aWZpZXJPY3RldCAmIHNlbGY6OkxPTkdfRk9STSkgPCBzZWxmOjpMT05HX0ZPUk0pIHsKICAgICAgICAgICAgJHR5cGVOYW1lID0gIkFTTi4xIHskdHlwZU5hbWV9IjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdHlwZU5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHNob3J0IHZlcnNpb24gb2YgdGhlIHR5cGUgbmFtZS4KICAgICAqCiAgICAgKiBJZiB0aGUgZ2l2ZW4gaWRlbnRpZmllciBvY3RldCBjYW4gYmUgbWFwcGVkIHRvIGEga25vd24gdW5pdmVyc2FsIHR5cGUgdGhpcyB3aWxsCiAgICAgKiByZXR1cm4gaXRzIG5hbWUuIEVsc2UgSWRlbnRpZmllcjo6Z2V0Q2xhc3NEZXNjcmlwdGlvbigpIGlzIHVzZWQgdG8gcmV0cmlldmUKICAgICAqIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpZGVudGlmaWVyLgogICAgICoKICAgICAqIEBzZWUgSWRlbnRpZmllcjo6Z2V0TmFtZSgpCiAgICAgKiBAc2VlIElkZW50aWZpZXI6OmdldENsYXNzRGVzY3JpcHRpb24oKQogICAgICoKICAgICAqIEBwYXJhbSBpbnR8c3RyaW5nICRpZGVudGlmaWVyCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRTaG9ydE5hbWUoJGlkZW50aWZpZXIpCiAgICB7CiAgICAgICAgJGlkZW50aWZpZXJPY3RldCA9IHNlbGY6Om1ha2VOdW1lcmljKCRpZGVudGlmaWVyKTsKCiAgICAgICAgc3dpdGNoICgkaWRlbnRpZmllck9jdGV0KSB7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6RU9DOgogICAgICAgICAgICAgICAgcmV0dXJuICdFbmQtb2YtY29udGVudHMgb2N0ZXQnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkJPT0xFQU46CiAgICAgICAgICAgICAgICByZXR1cm4gJ0Jvb2xlYW4nOwogICAgICAgICAgICBjYXNlIHNlbGY6OklOVEVHRVI6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0ludGVnZXInOwogICAgICAgICAgICBjYXNlIHNlbGY6OkJJVFNUUklORzoKICAgICAgICAgICAgICAgIHJldHVybiAnQml0IFN0cmluZyc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6T0NURVRTVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ09jdGV0IFN0cmluZyc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6TlVMTDoKICAgICAgICAgICAgICAgIHJldHVybiAnTlVMTCc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6T0JKRUNUX0lERU5USUZJRVI6CiAgICAgICAgICAgICAgICByZXR1cm4gJ09iamVjdCBJZGVudGlmaWVyJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpPQkpFQ1RfREVTQ1JJUFRPUjoKICAgICAgICAgICAgICAgIHJldHVybiAnT2JqZWN0IERlc2NyaXB0b3InOwogICAgICAgICAgICBjYXNlIHNlbGY6OkVYVEVSTkFMOgogICAgICAgICAgICAgICAgcmV0dXJuICdFeHRlcm5hbCBUeXBlJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpSRUFMOgogICAgICAgICAgICAgICAgcmV0dXJuICdSZWFsJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpFTlVNRVJBVEVEOgogICAgICAgICAgICAgICAgcmV0dXJuICdFbnVtZXJhdGVkJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpFTUJFRERFRF9QRFY6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0VtYmVkZGVkIFBEVic7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6VVRGOF9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1VURjggU3RyaW5nJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpSRUxBVElWRV9PSUQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1JlbGF0aXZlIE9JRCc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6U0VRVUVOQ0U6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1NlcXVlbmNlJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpTRVQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1NldCc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6TlVNRVJJQ19TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ051bWVyaWMgU3RyaW5nJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpQUklOVEFCTEVfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuICdQcmludGFibGUgU3RyaW5nJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpUNjFfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuICdUNjEgU3RyaW5nJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpWSURFT1RFWFRfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuICdWaWRlb3RleHQgU3RyaW5nJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpJQTVfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuICdJQTUgU3RyaW5nJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpVVENfVElNRToKICAgICAgICAgICAgICAgIHJldHVybiAnVVRDIFRpbWUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkdFTkVSQUxJWkVEX1RJTUU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0dlbmVyYWxpemVkIFRpbWUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkdSQVBISUNfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuICdHcmFwaGljIFN0cmluZyc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6VklTSUJMRV9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1Zpc2libGUgU3RyaW5nJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpHRU5FUkFMX1NUUklORzoKICAgICAgICAgICAgICAgIHJldHVybiAnR2VuZXJhbCBTdHJpbmcnOwogICAgICAgICAgICBjYXNlIHNlbGY6OlVOSVZFUlNBTF9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1VuaXZlcnNhbCBTdHJpbmcnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNIQVJBQ1RFUl9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0NoYXJhY3RlciBTdHJpbmcnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkJNUF9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0JNUCBTdHJpbmcnOwoKICAgICAgICAgICAgY2FzZSAweDBFOgogICAgICAgICAgICAgICAgcmV0dXJuICdSRVNFUlZFRCAoMHgwRSknOwogICAgICAgICAgICBjYXNlIDB4MEY6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1JFU0VSVkVEICgweDBGKSc7CgogICAgICAgICAgICBjYXNlIHNlbGY6OkxPTkdfRk9STToKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICRjbGFzc0Rlc2NyaXB0aW9uID0gc2VsZjo6Z2V0Q2xhc3NEZXNjcmlwdGlvbigkaWRlbnRpZmllcik7CgogICAgICAgICAgICAgICAgaWYgKGlzX2ludCgkaWRlbnRpZmllcikpIHsKICAgICAgICAgICAgICAgICAgICAkaWRlbnRpZmllciA9IGNocigkaWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICIkY2xhc3NEZXNjcmlwdGlvbiAoMHgiLnN0cnRvdXBwZXIoYmluMmhleCgkaWRlbnRpZmllcikpLicpJzsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUgaW5mb3JtYXRpb24gZW5jb2RlZCBpbiBhIGdpdmVuIGlkZW50aWZpZXIgb2N0ZXQuCiAgICAgKgogICAgICogVGhlIGZpcnN0IHRocmVlIChtb3N0IHNpZ25pZmljYW50KSBieXRlcyBhcmUgZXZhbHVhdGVkIHRvIGRldGVybWluZSBpZiB0aGlzIGlzIGEKICAgICAqIGNvbnN0cnVjdGVkIG9yIHByaW1pdGl2ZSB0eXBlIGFuZCBpZiBpdCBpcyBlaXRoZXIgdW5pdmVyc2FsLCBhcHBsaWNhdGlvbiwgY29udGV4dC1zcGVjaWZpYyBvcgogICAgICogcHJpdmF0ZS4KICAgICAqCiAgICAgKiBFeGFtcGxlOgogICAgICogICAgIENvbnN0cnVjdGVkIGNvbnRleHQtc3BlY2lmaWMKICAgICAqICAgICBQcmltaXRpdmUgdW5pdmVyc2FsCiAgICAgKgogICAgICogQHBhcmFtIGludHxzdHJpbmcgJGlkZW50aWZpZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldENsYXNzRGVzY3JpcHRpb24oJGlkZW50aWZpZXIpCiAgICB7CiAgICAgICAgJGlkZW50aWZpZXJPY3RldCA9IHNlbGY6Om1ha2VOdW1lcmljKCRpZGVudGlmaWVyKTsKCiAgICAgICAgaWYgKHNlbGY6OmlzQ29uc3RydWN0ZWQoJGlkZW50aWZpZXJPY3RldCkpIHsKICAgICAgICAgICAgJGNsYXNzRGVzY3JpcHRpb24gPSAnQ29uc3RydWN0ZWQgJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY2xhc3NEZXNjcmlwdGlvbiA9ICdQcmltaXRpdmUgJzsKICAgICAgICB9CiAgICAgICAgJGNsYXNzQml0cyA9ICRpZGVudGlmaWVyT2N0ZXQgPj4gNjsKICAgICAgICBzd2l0Y2ggKCRjbGFzc0JpdHMpIHsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDTEFTU19VTklWRVJTQUw6CiAgICAgICAgICAgICAgICAkY2xhc3NEZXNjcmlwdGlvbiAuPSAndW5pdmVyc2FsJzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNMQVNTX0FQUExJQ0FUSU9OOgogICAgICAgICAgICAgICAgJGNsYXNzRGVzY3JpcHRpb24gLj0gJ2FwcGxpY2F0aW9uJzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNMQVNTX0NPTlRFWFRfU1BFQ0lGSUM6CiAgICAgICAgICAgICAgICAkdGFnTnVtYmVyID0gc2VsZjo6Z2V0VGFnTnVtYmVyKCRpZGVudGlmaWVyKTsKICAgICAgICAgICAgICAgICRjbGFzc0Rlc2NyaXB0aW9uID0gIlskdGFnTnVtYmVyXSBDb250ZXh0LXNwZWNpZmljIjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNMQVNTX1BSSVZBVEU6CiAgICAgICAgICAgICAgICAkY2xhc3NEZXNjcmlwdGlvbiAuPSAncHJpdmF0ZSc7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gIklOVkFMSUQgSURFTlRJRklFUiBPQ1RFVDogeyRpZGVudGlmaWVyT2N0ZXR9IjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY2xhc3NEZXNjcmlwdGlvbjsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnR8c3RyaW5nICRpZGVudGlmaWVyCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRUYWdOdW1iZXIoJGlkZW50aWZpZXIpCiAgICB7CiAgICAgICAgJGZpcnN0T2N0ZXQgPSBzZWxmOjptYWtlTnVtZXJpYygkaWRlbnRpZmllcik7CiAgICAgICAgJHRhZ051bWJlciA9ICRmaXJzdE9jdGV0ICYgc2VsZjo6TE9OR19GT1JNOwoKICAgICAgICBpZiAoJHRhZ051bWJlciA8IHNlbGY6OkxPTkdfRk9STSkgewogICAgICAgICAgICByZXR1cm4gJHRhZ051bWJlcjsKICAgICAgICB9CgogICAgICAgIGlmIChpc19udW1lcmljKCRpZGVudGlmaWVyKSkgewogICAgICAgICAgICAkaWRlbnRpZmllciA9IGNocigkaWRlbnRpZmllcik7CiAgICAgICAgfQogICAgICAgIHJldHVybiBCYXNlMTI4OjpkZWNvZGUoc3Vic3RyKCRpZGVudGlmaWVyLCAxKSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc1VuaXZlcnNhbENsYXNzKCRpZGVudGlmaWVyKQogICAgewogICAgICAgICRpZGVudGlmaWVyID0gc2VsZjo6bWFrZU51bWVyaWMoJGlkZW50aWZpZXIpOwoKICAgICAgICByZXR1cm4gJGlkZW50aWZpZXIgPj4gNiA9PSBzZWxmOjpDTEFTU19VTklWRVJTQUw7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0FwcGxpY2F0aW9uQ2xhc3MoJGlkZW50aWZpZXIpCiAgICB7CiAgICAgICAgJGlkZW50aWZpZXIgPSBzZWxmOjptYWtlTnVtZXJpYygkaWRlbnRpZmllcik7CgogICAgICAgIHJldHVybiAkaWRlbnRpZmllciA+PiA2ID09IHNlbGY6OkNMQVNTX0FQUExJQ0FUSU9OOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNDb250ZXh0U3BlY2lmaWNDbGFzcygkaWRlbnRpZmllcikKICAgIHsKICAgICAgICAkaWRlbnRpZmllciA9IHNlbGY6Om1ha2VOdW1lcmljKCRpZGVudGlmaWVyKTsKCiAgICAgICAgcmV0dXJuICRpZGVudGlmaWVyID4+IDYgPT0gc2VsZjo6Q0xBU1NfQ09OVEVYVF9TUEVDSUZJQzsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzUHJpdmF0ZUNsYXNzKCRpZGVudGlmaWVyKQogICAgewogICAgICAgICRpZGVudGlmaWVyID0gc2VsZjo6bWFrZU51bWVyaWMoJGlkZW50aWZpZXIpOwoKICAgICAgICByZXR1cm4gJGlkZW50aWZpZXIgPj4gNiA9PSBzZWxmOjpDTEFTU19QUklWQVRFOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG1ha2VOdW1lcmljKCRpZGVudGlmaWVyT2N0ZXQpCiAgICB7CiAgICAgICAgaWYgKCFpc19udW1lcmljKCRpZGVudGlmaWVyT2N0ZXQpKSB7CiAgICAgICAgICAgIHJldHVybiBvcmQoJGlkZW50aWZpZXJPY3RldCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICRpZGVudGlmaWVyT2N0ZXQ7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/OID.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCmNsYXNzIE9JRAp7CiAgICBjb25zdCBSU0FfRU5DUllQVElPTiAgICAgICAgICAgICAgICAgICAgPSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEnOwogICAgY29uc3QgTUQ1X1dJVEhfUlNBX0VOQ1JZUFRJT04gICAgICAgICAgID0gJzEuMi44NDAuMTEzNTQ5LjEuMS40JzsKICAgIGNvbnN0IFNIQTFfV0lUSF9SU0FfU0lHTkFUVVJFICAgICAgICAgICA9ICcxLjIuODQwLjExMzU0OS4xLjEuNSc7CiAgICBjb25zdCBTSEEyNTZfV0lUSF9SU0FfU0lHTkFUVVJFICAgICAgICAgPSAnMS4yLjg0MC4xMTM1NDkuMS4xLjExJzsKICAgIGNvbnN0IFBLQ1M5X0VNQUlMICAgICAgICAgICAgICAgICAgICAgICA9ICcxLjIuODQwLjExMzU0OS4xLjkuMSc7CiAgICBjb25zdCBQS0NTOV9VTlNUUlVDVFVSRURfTkFNRSAgICAgICAgICAgPSAnMS4yLjg0MC4xMTM1NDkuMS45LjInOwogICAgY29uc3QgUEtDUzlfQ09OVEVOVF9UWVBFICAgICAgICAgICAgICAgID0gJzEuMi44NDAuMTEzNTQ5LjEuOS4zJzsKICAgIGNvbnN0IFBLQ1M5X01FU1NBR0VfRElHRVNUICAgICAgICAgICAgICA9ICcxLjIuODQwLjExMzU0OS4xLjkuNCc7CiAgICBjb25zdCBQS0NTOV9TSUdOSU5HX1RJTUUgICAgICAgICAgICAgICAgPSAnMS4yLjg0MC4xMTM1NDkuMS45LjUnOwogICAgY29uc3QgUEtDUzlfRVhURU5TSU9OX1JFUVVFU1QgICAgICAgICAgID0gJzEuMi44NDAuMTEzNTQ5LjEuOS4xNCc7CgogICAgLy8gY2VydGlmaWNhdGUgZXh0ZW5zaW9uIGlkZW50aWZpZXIKICAgIGNvbnN0IENFUlRfRVhUX1NVQkpFQ1RfRElSRUNUT1JZX0FUVFIgICA9ICcyLjUuMjkuOSc7CiAgICBjb25zdCBDRVJUX0VYVF9TVUJKRUNUX0tFWV9JREVOVElGSUVSICAgPSAnMi41LjI5LjE0JzsKICAgIGNvbnN0IENFUlRfRVhUX0tFWV9VU0FHRSAgICAgICAgICAgICAgICA9ICcyLjUuMjkuMTUnOwogICAgY29uc3QgQ0VSVF9FWFRfUFJJVkFURV9LRVlfVVNBR0VfUEVSSU9EID0gJzIuNS4yOS4xNic7CiAgICBjb25zdCBDRVJUX0VYVF9TVUJKRUNUX0FMVF9OQU1FICAgICAgICAgPSAnMi41LjI5LjE3JzsKICAgIGNvbnN0IENFUlRfRVhUX0lTU1VFUl9BTFRfTkFNRSAgICAgICAgICA9ICcyLjUuMjkuMTgnOwogICAgY29uc3QgQ0VSVF9FWFRfQkFTSUNfQ09OU1RSQUlOVFMgICAgICAgID0gJzIuNS4yOS4xOSc7CiAgICBjb25zdCBDRVJUX0VYVF9DUkxfTlVNQkVSICAgICAgICAgICAgICAgPSAnMi41LjI5LjIwJzsKICAgIGNvbnN0IENFUlRfRVhUX1JFQVNPTl9DT0RFICAgICAgICAgICAgICA9ICcyLjUuMjkuMjEnOwogICAgY29uc3QgQ0VSVF9FWFRfSU5WQUxJRElUWV9EQVRFICAgICAgICAgID0gJzIuNS4yOS4yNCc7CiAgICBjb25zdCBDRVJUX0VYVF9ERUxUQV9DUkxfSU5ESUNBVE9SICAgICAgPSAnMi41LjI5LjI3JzsKICAgIGNvbnN0IENFUlRfRVhUX0lTU1VJTkdfRElTVF9QT0lOVCAgICAgICA9ICcyLjUuMjkuMjgnOwogICAgY29uc3QgQ0VSVF9FWFRfQ0VSVF9JU1NVRVIgICAgICAgICAgICAgID0gJzIuNS4yOS4yOSc7CiAgICBjb25zdCBDRVJUX0VYVF9OQU1FX0NPTlNUUkFJTlRTICAgICAgICAgPSAnMi41LjI5LjMwJzsKICAgIGNvbnN0IENFUlRfRVhUX0NSTF9ESVNUUklCVVRJT05fUE9JTlRTICA9ICcyLjUuMjkuMzEnOwogICAgY29uc3QgQ0VSVF9FWFRfQ0VSVF9QT0xJQ0lFUyAgICAgICAgICAgID0gJzIuNS4yOS4zMic7CiAgICBjb25zdCBDRVJUX0VYVF9BVVRIT1JJVFlfS0VZX0lERU5USUZJRVIgPSAnMi41LjI5LjM1JzsKICAgIGNvbnN0IENFUlRfRVhUX0VYVEVOREVEX0tFWV9VU0FHRSAgICAgICA9ICcyLjUuMjkuMzcnOwoKICAgIC8vIHN0YW5kYXJkIGNlcnRpZmljYXRlIGZpbGVzCiAgICBjb25zdCBDT01NT05fTkFNRSAgICAgICAgICAgICAgICAgICAgICAgPSAnMi41LjQuMyc7CiAgICBjb25zdCBTVVJOQU1FICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnMi41LjQuNCc7CiAgICBjb25zdCBTRVJJQUxfTlVNQkVSICAgICAgICAgICAgICAgICAgICAgPSAnMi41LjQuNSc7CiAgICBjb25zdCBDT1VOVFJZX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSAnMi41LjQuNic7CiAgICBjb25zdCBMT0NBTElUWV9OQU1FICAgICAgICAgICAgICAgICAgICAgPSAnMi41LjQuNyc7CiAgICBjb25zdCBTVEFURV9PUl9QUk9WSU5DRV9OQU1FICAgICAgICAgICAgPSAnMi41LjQuOCc7CiAgICBjb25zdCBTVFJFRVRfQUREUkVTUyAgICAgICAgICAgICAgICAgICAgPSAnMi41LjQuOSc7CiAgICBjb25zdCBPUkdBTklaQVRJT05fTkFNRSAgICAgICAgICAgICAgICAgPSAnMi41LjQuMTAnOwogICAgY29uc3QgT1VfTkFNRSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJzIuNS40LjExJzsKICAgIGNvbnN0IFRJVExFICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICcyLjUuNC4xMic7CiAgICBjb25zdCBERVNDUklQVElPTiAgICAgICAgICAgICAgICAgICAgICAgPSAnMi41LjQuMTMnOwogICAgY29uc3QgUE9TVEFMX0FERFJFU1MgICAgICAgICAgICAgICAgICAgID0gJzIuNS40LjE2JzsKICAgIGNvbnN0IFBPU1RBTF9DT0RFICAgICAgICAgICAgICAgICAgICAgICA9ICcyLjUuNC4xNyc7CiAgICBjb25zdCBBVVRIT1JJVFlfUkVWT0NBVElPTl9MSVNUICAgICAgICAgPSAnMi41LjQuMzgnOwoKICAgIGNvbnN0IEFVVEhPUklUWV9JTkZPUk1BVElPTl9BQ0NFU1MgICAgICA9ICcxLjMuNi4xLjUuNS43LjEuMSc7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBnaXZlbiBvYmplY3QgaWRlbnRpZmllci4KICAgICAqCiAgICAgKiBTb21lIE9JRHMgYXJlIHNhdmVkIGFzIGNsYXNzIGNvbnN0YW50cyBpbiB0aGlzIGNsYXNzLgogICAgICogSWYgdGhlIHdhbnRlZCBvaWRTdHJpbmcgaXMgbm90IGFtb25nIHRoZW0sIHRoaXMgbWV0aG9kIHdpbGwKICAgICAqIHF1ZXJ5IGh0dHA6Ly9vaWQtaW5mby5jb20gZm9yIHRoZSByaWdodCBuYW1lLgogICAgICogVGhpcyBiZWhhdmlvciBjYW4gYmUgc3VwcHJlc3NlZCBieSBzZXR0aW5nIHRoZSBzZWNvbmQgbWV0aG9kIHBhcmFtZXRlciB0byBmYWxzZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRvaWRTdHJpbmcKICAgICAqIEBwYXJhbSBib29sICRsb2FkRnJvbVdlYgogICAgICoKICAgICAqIEBzZWUgc2VsZjo6bG9hZEZyb21XZWIoJG9pZFN0cmluZykKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldE5hbWUoJG9pZFN0cmluZywgJGxvYWRGcm9tV2ViID0gdHJ1ZSkKICAgIHsKICAgICAgICAkb2lkcyA9IFsKICAgICAgICAgICAgJzEuMicgPT4gJ0lTTyBNZW1iZXIgQm9keScsCiAgICAgICAgICAgICcxLjMnID0+ICdvcmcnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuOC4xLjEnID0+ICdobWFjLW1kNScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS44LjEuMicgPT4gJ2htYWMtc2hhMScsCiAgICAgICAgICAgICcxLjMuMTMyJyA9PiAnY2VydGljb20tYXJjJywKICAgICAgICAgICAgJzIuMjMnID0+ICdJbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbnMnLAogICAgICAgICAgICAnMi4yMy40MycgPT4gJ3dhcCcsCiAgICAgICAgICAgICcyLjIzLjQzLjEnID0+ICd3YXAtd3NnJywKICAgICAgICAgICAgJzIuNS4xLjUnID0+ICdTZWxlY3RlZCBBdHRyaWJ1dGUgVHlwZXMnLAogICAgICAgICAgICAnMi41LjEuNS41NScgPT4gJ2NsZWFyYW5jZScsCiAgICAgICAgICAgICcxLjIuODQwJyA9PiAnSVNPIFVTIE1lbWJlciBCb2R5JywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDAnID0+ICdYOS41NycsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQwLjQnID0+ICdYOS41NyBDTSA/JywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDAuNC4xJyA9PiAnZHNhRW5jcnlwdGlvbicsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQwLjQuMycgPT4gJ2RzYVdpdGhTSEExJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUnID0+ICdBTlNJIFg5LjYyJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMScgPT4gJ1g5LTYyX2lkLWZpZWxkVHlwZScsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjEuMScgPT4gJ1g5LTYyX3ByaW1lLWZpZWxkJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMS4yJyA9PiAnWDktNjJfY2hhcmFjdGVyaXN0aWMtdHdvLWZpZWxkJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMS4yLjMnID0+ICdYOS02Ml9pZC1jaGFyYWN0ZXJpc3RpYy10d28tYmFzaXMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS4xLjIuMy4xJyA9PiAnWDktNjJfb25CYXNpcycsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjEuMi4zLjInID0+ICdYOS02Ml90cEJhc2lzJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMS4yLjMuMycgPT4gJ1g5LTYyX3BwQmFzaXMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS4yJyA9PiAnWDktNjJfaWQtcHVibGljS2V5VHlwZScsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjIuMScgPT4gJ1g5LTYyX2lkLWVjUHVibGljS2V5JywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMycgPT4gJ1g5LTYyX2VsbGlwdGljQ3VydmUnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS4zLjAnID0+ICdYOS02Ml9jLVR3b0N1cnZlJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjEnID0+ICdYOS02Ml9jMnBuYjE2M3YxJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjInID0+ICdYOS02Ml9jMnBuYjE2M3YyJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjMnID0+ICdYOS02Ml9jMnBuYjE2M3YzJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjQnID0+ICdYOS02Ml9jMnBuYjE3NnYxJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjUnID0+ICdYOS02Ml9jMnRuYjE5MXYxJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjYnID0+ICdYOS02Ml9jMnRuYjE5MXYyJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjcnID0+ICdYOS02Ml9jMnRuYjE5MXYzJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjgnID0+ICdYOS02Ml9jMm9uYjE5MXY0JywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjknID0+ICdYOS02Ml9jMm9uYjE5MXY1JywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjEwJyA9PiAnWDktNjJfYzJwbmIyMDh3MScsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjMuMC4xMScgPT4gJ1g5LTYyX2MydG5iMjM5djEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS4zLjAuMTInID0+ICdYOS02Ml9jMnRuYjIzOXYyJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjEzJyA9PiAnWDktNjJfYzJ0bmIyMzl2MycsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjMuMC4xNCcgPT4gJ1g5LTYyX2Myb25iMjM5djQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS4zLjAuMTUnID0+ICdYOS02Ml9jMm9uYjIzOXY1JywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjE2JyA9PiAnWDktNjJfYzJwbmIyNzJ3MScsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjMuMC4xNycgPT4gJ1g5LTYyX2MycG5iMzA0dzEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS4zLjAuMTgnID0+ICdYOS02Ml9jMnRuYjM1OXYxJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjE5JyA9PiAnWDktNjJfYzJwbmIzNjh3MScsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjMuMC4yMCcgPT4gJ1g5LTYyX2MydG5iNDMxcjEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS4zLjEnID0+ICdYOS02Ml9wcmltZUN1cnZlJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4xLjEnID0+ICdYOS02Ml9wcmltZTE5MnYxJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4xLjInID0+ICdYOS02Ml9wcmltZTE5MnYyJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4xLjMnID0+ICdYOS02Ml9wcmltZTE5MnYzJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4xLjQnID0+ICdYOS02Ml9wcmltZTIzOXYxJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4xLjUnID0+ICdYOS02Ml9wcmltZTIzOXYyJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4xLjYnID0+ICdYOS02Ml9wcmltZTIzOXYzJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4xLjcnID0+ICdYOS02Ml9wcmltZTI1NnYxJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuNCcgPT4gJ1g5LTYyX2lkLWVjU2lnVHlwZScsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjQuMScgPT4gJ2VjZHNhLXdpdGgtU0hBMScsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjQuMicgPT4gJ2VjZHNhLXdpdGgtUmVjb21tZW5kZWQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS40LjMnID0+ICdlY2RzYS13aXRoLVNwZWNpZmllZCcsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjQuMy4xJyA9PiAnZWNkc2Etd2l0aC1TSEEyMjQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS40LjMuMicgPT4gJ2VjZHNhLXdpdGgtU0hBMjU2JywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuNC4zLjMnID0+ICdlY2RzYS13aXRoLVNIQTM4NCcsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjQuMy40JyA9PiAnZWNkc2Etd2l0aC1TSEE1MTInLAogICAgICAgICAgICAnMS4zLjEzMi4wJyA9PiAnc2VjZ19lbGxpcHRpY0N1cnZlJywKICAgICAgICAgICAgJzIuMjMuNDMuMS40JyA9PiAnd2FwLXdzZy1pZG0tZWNpZCcsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC4xJyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzMScsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC4zJyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzMycsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC40JyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzNCcsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC41JyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzNScsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC42JyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzNicsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC43JyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzNycsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC44JyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzOCcsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC45JyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzOScsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC4xMCcgPT4gJ3dhcC13c2ctaWRtLWVjaWQtd3RsczEwJywKICAgICAgICAgICAgJzIuMjMuNDMuMS40LjExJyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzMTEnLAogICAgICAgICAgICAnMi4yMy40My4xLjQuMTInID0+ICd3YXAtd3NnLWlkbS1lY2lkLXd0bHMxMicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzUzMy43LjY2LjEwJyA9PiAnY2FzdDUtY2JjJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTMzLjcuNjYuMTInID0+ICdwYmVXaXRoTUQ1QW5kQ2FzdDVDQkMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1MzMuNy42Ni4xMycgPT4gJ3Bhc3N3b3JkIGJhc2VkIE1BQycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzUzMy43LjY2LjMwJyA9PiAnRGlmZmllLUhlbGxtYW4gYmFzZWQgTUFDJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5JyA9PiAnUlNBIERhdGEgU2VjdXJpdHksIEluYy4nLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMScgPT4gJ1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuIFBLQ1MnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xJyA9PiAncGtjczEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xLjEnID0+ICdyc2FFbmNyeXB0aW9uJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMS4yJyA9PiAnbWQyV2l0aFJTQUVuY3J5cHRpb24nLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xLjMnID0+ICdtZDRXaXRoUlNBRW5jcnlwdGlvbicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjEuNCcgPT4gJ21kNVdpdGhSU0FFbmNyeXB0aW9uJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMS41JyA9PiAnc2hhMVdpdGhSU0FFbmNyeXB0aW9uJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMS43JyA9PiAncnNhZXNPYWVwJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMS44JyA9PiAnbWdmMScsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjEuOScgPT4gJ3BTcGVjaWZpZWQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xLjEwJyA9PiAncnNhc3NhUHNzJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMS4xMScgPT4gJ3NoYTI1NldpdGhSU0FFbmNyeXB0aW9uJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMS4xMicgPT4gJ3NoYTM4NFdpdGhSU0FFbmNyeXB0aW9uJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMS4xMycgPT4gJ3NoYTUxMldpdGhSU0FFbmNyeXB0aW9uJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMS4xNCcgPT4gJ3NoYTIyNFdpdGhSU0FFbmNyeXB0aW9uJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMycgPT4gJ3BrY3MzJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMy4xJyA9PiAnZGhLZXlBZ3JlZW1lbnQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS41JyA9PiAncGtjczUnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS41LjEnID0+ICdwYmVXaXRoTUQyQW5kREVTLUNCQycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjUuMycgPT4gJ3BiZVdpdGhNRDVBbmRERVMtQ0JDJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuNS40JyA9PiAncGJlV2l0aE1EMkFuZFJDMi1DQkMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS41LjYnID0+ICdwYmVXaXRoTUQ1QW5kUkMyLUNCQycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjUuMTAnID0+ICdwYmVXaXRoU0hBMUFuZERFUy1DQkMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS41LjExJyA9PiAncGJlV2l0aFNIQTFBbmRSQzItQ0JDJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuNS4xMicgPT4gJ1BCS0RGMicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjUuMTMnID0+ICdQQkVTMicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjUuMTQnID0+ICdQQk1BQzEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS43JyA9PiAncGtjczcnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS43LjEnID0+ICdwa2NzNy1kYXRhJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuNy4yJyA9PiAncGtjczctc2lnbmVkRGF0YScsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjcuMycgPT4gJ3BrY3M3LWVudmVsb3BlZERhdGEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS43LjQnID0+ICdwa2NzNy1zaWduZWRBbmRFbnZlbG9wZWREYXRhJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuNy41JyA9PiAncGtjczctZGlnZXN0RGF0YScsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjcuNicgPT4gJ3BrY3M3LWVuY3J5cHRlZERhdGEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45JyA9PiAncGtjczknLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjEnID0+ICdlbWFpbEFkZHJlc3MnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjInID0+ICd1bnN0cnVjdHVyZWROYW1lJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4zJyA9PiAnY29udGVudFR5cGUnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjQnID0+ICdtZXNzYWdlRGlnZXN0JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS41JyA9PiAnc2lnbmluZ1RpbWUnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjYnID0+ICdjb3VudGVyc2lnbmF0dXJlJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS43JyA9PiAnY2hhbGxlbmdlUGFzc3dvcmQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjgnID0+ICd1bnN0cnVjdHVyZWRBZGRyZXNzJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS45JyA9PiAnZXh0ZW5kZWRDZXJ0aWZpY2F0ZUF0dHJpYnV0ZXMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE0JyA9PiAnRXh0ZW5zaW9uIFJlcXVlc3QnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE1JyA9PiAnUy9NSU1FIENhcGFiaWxpdGllcycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYnID0+ICdTL01JTUUnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjAnID0+ICdpZC1zbWltZS1tb2QnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjEnID0+ICdpZC1zbWltZS1jdCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMicgPT4gJ2lkLXNtaW1lLWFhJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4zJyA9PiAnaWQtc21pbWUtYWxnJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi40JyA9PiAnaWQtc21pbWUtY2QnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjUnID0+ICdpZC1zbWltZS1zcHEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjYnID0+ICdpZC1zbWltZS1jdGknLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjAuMScgPT4gJ2lkLXNtaW1lLW1vZC1jbXMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjAuMicgPT4gJ2lkLXNtaW1lLW1vZC1lc3MnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjAuMycgPT4gJ2lkLXNtaW1lLW1vZC1vaWQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjAuNCcgPT4gJ2lkLXNtaW1lLW1vZC1tc2ctdjMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjAuNScgPT4gJ2lkLXNtaW1lLW1vZC1ldHMtZVNpZ25hdHVyZS04OCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMC42JyA9PiAnaWQtc21pbWUtbW9kLWV0cy1lU2lnbmF0dXJlLTk3JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4wLjcnID0+ICdpZC1zbWltZS1tb2QtZXRzLWVTaWdQb2xpY3ktODgnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjAuOCcgPT4gJ2lkLXNtaW1lLW1vZC1ldHMtZVNpZ1BvbGljeS05NycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMS4xJyA9PiAnaWQtc21pbWUtY3QtcmVjZWlwdCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMS4yJyA9PiAnaWQtc21pbWUtY3QtYXV0aERhdGEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjEuMycgPT4gJ2lkLXNtaW1lLWN0LXB1Ymxpc2hDZXJ0JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4xLjQnID0+ICdpZC1zbWltZS1jdC1UU1RJbmZvJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4xLjUnID0+ICdpZC1zbWltZS1jdC1URFRJbmZvJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4xLjYnID0+ICdpZC1zbWltZS1jdC1jb250ZW50SW5mbycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMS43JyA9PiAnaWQtc21pbWUtY3QtRFZDU1JlcXVlc3REYXRhJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4xLjgnID0+ICdpZC1zbWltZS1jdC1EVkNTUmVzcG9uc2VEYXRhJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4xLjknID0+ICdpZC1zbWltZS1jdC1jb21wcmVzc2VkRGF0YScsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMS4yNycgPT4gJ2lkLWN0LWFzY2lpVGV4dFdpdGhDUkxGJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjEnID0+ICdpZC1zbWltZS1hYS1yZWNlaXB0UmVxdWVzdCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi4yJyA9PiAnaWQtc21pbWUtYWEtc2VjdXJpdHlMYWJlbCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi4zJyA9PiAnaWQtc21pbWUtYWEtbWxFeHBhbmRIaXN0b3J5JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjQnID0+ICdpZC1zbWltZS1hYS1jb250ZW50SGludCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi41JyA9PiAnaWQtc21pbWUtYWEtbXNnU2lnRGlnZXN0JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjYnID0+ICdpZC1zbWltZS1hYS1lbmNhcENvbnRlbnRUeXBlJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjcnID0+ICdpZC1zbWltZS1hYS1jb250ZW50SWRlbnRpZmllcicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi44JyA9PiAnaWQtc21pbWUtYWEtbWFjVmFsdWUnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuOScgPT4gJ2lkLXNtaW1lLWFhLWVxdWl2YWxlbnRMYWJlbHMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMTAnID0+ICdpZC1zbWltZS1hYS1jb250ZW50UmVmZXJlbmNlJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjExJyA9PiAnaWQtc21pbWUtYWEtZW5jcnlwS2V5UHJlZicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi4xMicgPT4gJ2lkLXNtaW1lLWFhLXNpZ25pbmdDZXJ0aWZpY2F0ZScsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi4xMycgPT4gJ2lkLXNtaW1lLWFhLXNtaW1lRW5jcnlwdENlcnRzJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjE0JyA9PiAnaWQtc21pbWUtYWEtdGltZVN0YW1wVG9rZW4nLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMTUnID0+ICdpZC1zbWltZS1hYS1ldHMtc2lnUG9saWN5SWQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMTYnID0+ICdpZC1zbWltZS1hYS1ldHMtY29tbWl0bWVudFR5cGUnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMTcnID0+ICdpZC1zbWltZS1hYS1ldHMtc2lnbmVyTG9jYXRpb24nLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMTgnID0+ICdpZC1zbWltZS1hYS1ldHMtc2lnbmVyQXR0cicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi4xOScgPT4gJ2lkLXNtaW1lLWFhLWV0cy1vdGhlclNpZ0NlcnQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMjAnID0+ICdpZC1zbWltZS1hYS1ldHMtY29udGVudFRpbWVzdGFtcCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi4yMScgPT4gJ2lkLXNtaW1lLWFhLWV0cy1DZXJ0aWZpY2F0ZVJlZnMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMjInID0+ICdpZC1zbWltZS1hYS1ldHMtUmV2b2NhdGlvblJlZnMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMjMnID0+ICdpZC1zbWltZS1hYS1ldHMtY2VydFZhbHVlcycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi4yNCcgPT4gJ2lkLXNtaW1lLWFhLWV0cy1yZXZvY2F0aW9uVmFsdWVzJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjI1JyA9PiAnaWQtc21pbWUtYWEtZXRzLWVzY1RpbWVTdGFtcCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi4yNicgPT4gJ2lkLXNtaW1lLWFhLWV0cy1jZXJ0Q1JMVGltZXN0YW1wJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjI3JyA9PiAnaWQtc21pbWUtYWEtZXRzLWFyY2hpdmVUaW1lU3RhbXAnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMjgnID0+ICdpZC1zbWltZS1hYS1zaWduYXR1cmVUeXBlJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjI5JyA9PiAnaWQtc21pbWUtYWEtZHZjcy1kdmMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjMuMScgPT4gJ2lkLXNtaW1lLWFsZy1FU0RId2l0aDNERVMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjMuMicgPT4gJ2lkLXNtaW1lLWFsZy1FU0RId2l0aFJDMicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMy4zJyA9PiAnaWQtc21pbWUtYWxnLTNERVN3cmFwJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4zLjQnID0+ICdpZC1zbWltZS1hbGctUkMyd3JhcCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMy41JyA9PiAnaWQtc21pbWUtYWxnLUVTREgnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjMuNicgPT4gJ2lkLXNtaW1lLWFsZy1DTVMzREVTd3JhcCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMy43JyA9PiAnaWQtc21pbWUtYWxnLUNNU1JDMndyYXAnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjMuOScgPT4gJ2lkLWFsZy1QV1JJLUtFSycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuNC4xJyA9PiAnaWQtc21pbWUtY2QtbGRhcCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuNS4xJyA9PiAnaWQtc21pbWUtc3BxLWV0cy1zcXQtdXJpJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi41LjInID0+ICdpZC1zbWltZS1zcHEtZXRzLXNxdC11bm90aWNlJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi42LjEnID0+ICdpZC1zbWltZS1jdGktZXRzLXByb29mT2ZPcmlnaW4nLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjYuMicgPT4gJ2lkLXNtaW1lLWN0aS1ldHMtcHJvb2ZPZlJlY2VpcHQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjYuMycgPT4gJ2lkLXNtaW1lLWN0aS1ldHMtcHJvb2ZPZkRlbGl2ZXJ5JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi42LjQnID0+ICdpZC1zbWltZS1jdGktZXRzLXByb29mT2ZTZW5kZXInLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjYuNScgPT4gJ2lkLXNtaW1lLWN0aS1ldHMtcHJvb2ZPZkFwcHJvdmFsJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi42LjYnID0+ICdpZC1zbWltZS1jdGktZXRzLXByb29mT2ZDcmVhdGlvbicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMjAnID0+ICdmcmllbmRseU5hbWUnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjIxJyA9PiAnbG9jYWxLZXlJRCcsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4zMTEuMTcuMScgPT4gJ01pY3Jvc29mdCBDU1AgTmFtZScsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4zMTEuMTcuMicgPT4gJ01pY3Jvc29mdCBMb2NhbCBLZXkgc2V0JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4yMicgPT4gJ2NlcnRUeXBlcycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMjIuMScgPT4gJ3g1MDlDZXJ0aWZpY2F0ZScsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMjIuMicgPT4gJ3Nkc2lDZXJ0aWZpY2F0ZScsCgogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjIzJyA9PiAnY3JsVHlwZXMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjIzLjEnID0+ICd4NTA5Q3JsJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMTInID0+ICdwa2NzMTInLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xJyA9PiAncGtjczEyLXBiZWlkcycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjEyLjEuMScgPT4gJ3BiZVdpdGhTSEExQW5kMTI4Qml0UkM0JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMTIuMS4yJyA9PiAncGJlV2l0aFNIQTFBbmQ0MEJpdFJDNCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjEyLjEuMycgPT4gJ3BiZVdpdGhTSEExQW5kMy1LZXlUcmlwbGVERVMtQ0JDJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMTIuMS40JyA9PiAncGJlV2l0aFNIQTFBbmQyLUtleVRyaXBsZURFUy1DQkMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xLjUnID0+ICdwYmVXaXRoU0hBMUFuZDEyOEJpdFJDMi1DQkMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xLjYnID0+ICdwYmVXaXRoU0hBMUFuZDQwQml0UkMyLUNCQycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjEyLjEwJyA9PiAncGtjczEyLVZlcnNpb24xJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMTIuMTAuMScgPT4gJ3BrY3MxMi1CYWdJZHMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xMC4xLjEnID0+ICdrZXlCYWcnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xMC4xLjInID0+ICdwa2NzOFNocm91ZGVkS2V5QmFnJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMTIuMTAuMS4zJyA9PiAnY2VydEJhZycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjEyLjEwLjEuNCcgPT4gJ2NybEJhZycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjEyLjEwLjEuNScgPT4gJ3NlY3JldEJhZycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjEyLjEwLjEuNicgPT4gJ3NhZmVDb250ZW50c0JhZycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4yLjInID0+ICdtZDInLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMi40JyA9PiAnbWQ0JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjIuNScgPT4gJ21kNScsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4yLjYnID0+ICdobWFjV2l0aE1ENScsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4yLjcnID0+ICdobWFjV2l0aFNIQTEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMi44JyA9PiAnaG1hY1dpdGhTSEEyMjQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMi45JyA9PiAnaG1hY1dpdGhTSEEyNTYnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMi4xMCcgPT4gJ2htYWNXaXRoU0hBMzg0JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjIuMTEnID0+ICdobWFjV2l0aFNIQTUxMicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4zLjInID0+ICdyYzItY2JjJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjMuNCcgPT4gJ3JjNCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4zLjcnID0+ICdkZXMtZWRlMy1jYmMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMy44JyA9PiAncmM1LWNiYycsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4zMTEuMi4xLjE0JyA9PiAnTWljcm9zb2Z0IEV4dGVuc2lvbiBSZXF1ZXN0JywKICAgICAgICAgICAgJzEuMy42LjEuNC4xLjMxMS4yLjEuMjEnID0+ICdNaWNyb3NvZnQgSW5kaXZpZHVhbCBDb2RlIFNpZ25pbmcnLAogICAgICAgICAgICAnMS4zLjYuMS40LjEuMzExLjIuMS4yMicgPT4gJ01pY3Jvc29mdCBDb21tZXJjaWFsIENvZGUgU2lnbmluZycsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4zMTEuMTAuMy4xJyA9PiAnTWljcm9zb2Z0IFRydXN0IExpc3QgU2lnbmluZycsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4zMTEuMTAuMy4zJyA9PiAnTWljcm9zb2Z0IFNlcnZlciBHYXRlZCBDcnlwdG8nLAogICAgICAgICAgICAnMS4zLjYuMS40LjEuMzExLjEwLjMuNCcgPT4gJ01pY3Jvc29mdCBFbmNyeXB0ZWQgRmlsZSBTeXN0ZW0nLAogICAgICAgICAgICAnMS4zLjYuMS40LjEuMzExLjIwLjIuMicgPT4gJ01pY3Jvc29mdCBTbWFydGNhcmRsb2dpbicsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4zMTEuMjAuMi4zJyA9PiAnTWljcm9zb2Z0IFVuaXZlcnNhbCBQcmluY2lwYWwgTmFtZScsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4xODguNy4xLjEuMicgPT4gJ2lkZWEtY2JjJywKICAgICAgICAgICAgJzEuMy42LjEuNC4xLjMwMjkuMS4yJyA9PiAnYmYtY2JjJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcnID0+ICdQS0lYJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMCcgPT4gJ2lkLXBraXgtbW9kJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMScgPT4gJ2lkLXBlJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMicgPT4gJ2lkLXF0JywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMycgPT4gJ2lkLWtwJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNCcgPT4gJ2lkLWl0JywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNScgPT4gJ2lkLXBraXAnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy42JyA9PiAnaWQtYWxnJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNycgPT4gJ2lkLWNtYycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjgnID0+ICdpZC1vbicsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjknID0+ICdpZC1wZGEnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xMCcgPT4gJ2lkLWFjYScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjExJyA9PiAnaWQtcWNzJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMTInID0+ICdpZC1jY3QnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4yMScgPT4gJ2lkLXBwbCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQ4JyA9PiAnaWQtYWQnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4wLjEnID0+ICdpZC1wa2l4MS1leHBsaWNpdC04OCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuMicgPT4gJ2lkLXBraXgxLWltcGxpY2l0LTg4JywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMC4zJyA9PiAnaWQtcGtpeDEtZXhwbGljaXQtOTMnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4wLjQnID0+ICdpZC1wa2l4MS1pbXBsaWNpdC05MycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuNScgPT4gJ2lkLW1vZC1jcm1mJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMC42JyA9PiAnaWQtbW9kLWNtYycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuNycgPT4gJ2lkLW1vZC1rZWEtcHJvZmlsZS04OCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuOCcgPT4gJ2lkLW1vZC1rZWEtcHJvZmlsZS05MycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuOScgPT4gJ2lkLW1vZC1jbXAnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4wLjEwJyA9PiAnaWQtbW9kLXF1YWxpZmllZC1jZXJ0LTg4JywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMC4xMScgPT4gJ2lkLW1vZC1xdWFsaWZpZWQtY2VydC05MycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuMTInID0+ICdpZC1tb2QtYXR0cmlidXRlLWNlcnQnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4wLjEzJyA9PiAnaWQtbW9kLXRpbWVzdGFtcC1wcm90b2NvbCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuMTQnID0+ICdpZC1tb2Qtb2NzcCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuMTUnID0+ICdpZC1tb2QtZHZjcycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuMTYnID0+ICdpZC1tb2QtY21wMjAwMCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjEuMScgPT4gJ0F1dGhvcml0eSBJbmZvcm1hdGlvbiBBY2Nlc3MnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xLjInID0+ICdCaW9tZXRyaWMgSW5mbycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjEuMycgPT4gJ3FjU3RhdGVtZW50cycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjEuNCcgPT4gJ2FjLWF1ZGl0RW50aXR5JywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMS41JyA9PiAnYWMtdGFyZ2V0aW5nJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMS42JyA9PiAnYWFDb250cm9scycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjEuNycgPT4gJ3NiZ3AtaXBBZGRyQmxvY2snLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xLjgnID0+ICdzYmdwLWF1dG9ub21vdXNTeXNOdW0nLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xLjknID0+ICdzYmdwLXJvdXRlcklkZW50aWZpZXInLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xLjEwJyA9PiAnYWMtcHJveHlpbmcnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xLjExJyA9PiAnU3ViamVjdCBJbmZvcm1hdGlvbiBBY2Nlc3MnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xLjE0JyA9PiAnUHJveHkgQ2VydGlmaWNhdGUgSW5mb3JtYXRpb24nLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4yLjEnID0+ICdQb2xpY3kgUXVhbGlmaWVyIENQUycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjIuMicgPT4gJ1BvbGljeSBRdWFsaWZpZXIgVXNlciBOb3RpY2UnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4yLjMnID0+ICd0ZXh0Tm90aWNlJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMy4xJyA9PiAnVExTIFdlYiBTZXJ2ZXIgQXV0aGVudGljYXRpb24nLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4zLjInID0+ICdUTFMgV2ViIENsaWVudCBBdXRoZW50aWNhdGlvbicsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjMuMycgPT4gJ0NvZGUgU2lnbmluZycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjMuNCcgPT4gJ0UtbWFpbCBQcm90ZWN0aW9uJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMy41JyA9PiAnSVBTZWMgRW5kIFN5c3RlbScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjMuNicgPT4gJ0lQU2VjIFR1bm5lbCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjMuNycgPT4gJ0lQU2VjIFVzZXInLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4zLjgnID0+ICdUaW1lIFN0YW1waW5nJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMy45JyA9PiAnT0NTUCBTaWduaW5nJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMy4xMCcgPT4gJ2R2Y3MnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40LjEnID0+ICdpZC1pdC1jYVByb3RFbmNDZXJ0JywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNC4yJyA9PiAnaWQtaXQtc2lnbktleVBhaXJUeXBlcycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQuMycgPT4gJ2lkLWl0LWVuY0tleVBhaXJUeXBlcycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQuNCcgPT4gJ2lkLWl0LXByZWZlcnJlZFN5bW1BbGcnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40LjUnID0+ICdpZC1pdC1jYUtleVVwZGF0ZUluZm8nLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40LjYnID0+ICdpZC1pdC1jdXJyZW50Q1JMJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNC43JyA9PiAnaWQtaXQtdW5zdXBwb3J0ZWRPSURzJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNC44JyA9PiAnaWQtaXQtc3Vic2NyaXB0aW9uUmVxdWVzdCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQuOScgPT4gJ2lkLWl0LXN1YnNjcmlwdGlvblJlc3BvbnNlJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNC4xMCcgPT4gJ2lkLWl0LWtleVBhaXJQYXJhbVJlcScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQuMTEnID0+ICdpZC1pdC1rZXlQYWlyUGFyYW1SZXAnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40LjEyJyA9PiAnaWQtaXQtcmV2UGFzc3BocmFzZScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQuMTMnID0+ICdpZC1pdC1pbXBsaWNpdENvbmZpcm0nLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40LjE0JyA9PiAnaWQtaXQtY29uZmlybVdhaXRUaW1lJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNC4xNScgPT4gJ2lkLWl0LW9yaWdQS0lNZXNzYWdlJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNC4xNicgPT4gJ2lkLWl0LXN1cHBMYW5nVGFncycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjUuMScgPT4gJ2lkLXJlZ0N0cmwnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy41LjInID0+ICdpZC1yZWdJbmZvJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNS4xLjEnID0+ICdpZC1yZWdDdHJsLXJlZ1Rva2VuJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNS4xLjInID0+ICdpZC1yZWdDdHJsLWF1dGhlbnRpY2F0b3InLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy41LjEuMycgPT4gJ2lkLXJlZ0N0cmwtcGtpUHVibGljYXRpb25JbmZvJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNS4xLjQnID0+ICdpZC1yZWdDdHJsLXBraUFyY2hpdmVPcHRpb25zJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNS4xLjUnID0+ICdpZC1yZWdDdHJsLW9sZENlcnRJRCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjUuMS42JyA9PiAnaWQtcmVnQ3RybC1wcm90b2NvbEVuY3JLZXknLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy41LjIuMScgPT4gJ2lkLXJlZ0luZm8tdXRmOFBhaXJzJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNS4yLjInID0+ICdpZC1yZWdJbmZvLWNlcnRSZXEnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy42LjEnID0+ICdpZC1hbGctZGVzNDAnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy42LjInID0+ICdpZC1hbGctbm9TaWduYXR1cmUnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy42LjMnID0+ICdpZC1hbGctZGgtc2lnLWhtYWMtc2hhMScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjYuNCcgPT4gJ2lkLWFsZy1kaC1wb3AnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy43LjEnID0+ICdpZC1jbWMtc3RhdHVzSW5mbycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjcuMicgPT4gJ2lkLWNtYy1pZGVudGlmaWNhdGlvbicsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjcuMycgPT4gJ2lkLWNtYy1pZGVudGl0eVByb29mJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNy40JyA9PiAnaWQtY21jLWRhdGFSZXR1cm4nLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy43LjUnID0+ICdpZC1jbWMtdHJhbnNhY3Rpb25JZCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjcuNicgPT4gJ2lkLWNtYy1zZW5kZXJOb25jZScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjcuNycgPT4gJ2lkLWNtYy1yZWNpcGllbnROb25jZScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjcuOCcgPT4gJ2lkLWNtYy1hZGRFeHRlbnNpb25zJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNy45JyA9PiAnaWQtY21jLWVuY3J5cHRlZFBPUCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjcuMTAnID0+ICdpZC1jbWMtZGVjcnlwdGVkUE9QJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNy4xMScgPT4gJ2lkLWNtYy1scmFQT1BXaXRuZXNzJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNy4xNScgPT4gJ2lkLWNtYy1nZXRDZXJ0JywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNy4xNicgPT4gJ2lkLWNtYy1nZXRDUkwnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy43LjE3JyA9PiAnaWQtY21jLXJldm9rZVJlcXVlc3QnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy43LjE4JyA9PiAnaWQtY21jLXJlZ0luZm8nLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy43LjE5JyA9PiAnaWQtY21jLXJlc3BvbnNlSW5mbycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjcuMjEnID0+ICdpZC1jbWMtcXVlcnlQZW5kaW5nJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNy4yMicgPT4gJ2lkLWNtYy1wb3BMaW5rUmFuZG9tJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNy4yMycgPT4gJ2lkLWNtYy1wb3BMaW5rV2l0bmVzcycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjcuMjQnID0+ICdpZC1jbWMtY29uZmlybUNlcnRBY2NlcHRhbmNlJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuOC4xJyA9PiAnaWQtb24tcGVyc29uYWxEYXRhJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuOC4zJyA9PiAnUGVybWFuZW50IElkZW50aWZpZXInLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy45LjEnID0+ICdpZC1wZGEtZGF0ZU9mQmlydGgnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy45LjInID0+ICdpZC1wZGEtcGxhY2VPZkJpcnRoJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuOS4zJyA9PiAnaWQtcGRhLWdlbmRlcicsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjkuNCcgPT4gJ2lkLXBkYS1jb3VudHJ5T2ZDaXRpemVuc2hpcCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjkuNScgPT4gJ2lkLXBkYS1jb3VudHJ5T2ZSZXNpZGVuY2UnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xMC4xJyA9PiAnaWQtYWNhLWF1dGhlbnRpY2F0aW9uSW5mbycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjEwLjInID0+ICdpZC1hY2EtYWNjZXNzSWRlbnRpdHknLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xMC4zJyA9PiAnaWQtYWNhLWNoYXJnaW5nSWRlbnRpdHknLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xMC40JyA9PiAnaWQtYWNhLWdyb3VwJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMTAuNScgPT4gJ2lkLWFjYS1yb2xlJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMTAuNicgPT4gJ2lkLWFjYS1lbmNBdHRycycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjExLjEnID0+ICdpZC1xY3MtcGtpeFFDU3ludGF4LXYxJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMTIuMScgPT4gJ2lkLWNjdC1jcnMnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xMi4yJyA9PiAnaWQtY2N0LVBLSURhdGEnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xMi4zJyA9PiAnaWQtY2N0LVBLSVJlc3BvbnNlJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMjEuMCcgPT4gJ0FueSBsYW5ndWFnZScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjIxLjEnID0+ICdJbmhlcml0IGFsbCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjIxLjInID0+ICdJbmRlcGVuZGVudCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQ4LjEnID0+ICdPQ1NQJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNDguMicgPT4gJ0NBIElzc3VlcnMnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40OC4zJyA9PiAnQUQgVGltZSBTdGFtcGluZycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQ4LjQnID0+ICdhZCBkdmNzJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNDguNScgPT4gJ0NBIFJlcG9zaXRvcnknLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40OC4xLjEnID0+ICdCYXNpYyBPQ1NQIFJlc3BvbnNlJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNDguMS4yJyA9PiAnT0NTUCBOb25jZScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQ4LjEuMycgPT4gJ09DU1AgQ1JMIElEJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNDguMS40JyA9PiAnQWNjZXB0YWJsZSBPQ1NQIFJlc3BvbnNlcycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQ4LjEuNScgPT4gJ09DU1AgTm8gQ2hlY2snLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40OC4xLjYnID0+ICdPQ1NQIEFyY2hpdmUgQ3V0b2ZmJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNDguMS43JyA9PiAnT0NTUCBTZXJ2aWNlIExvY2F0b3InLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40OC4xLjgnID0+ICdFeHRlbmRlZCBPQ1NQIFN0YXR1cycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQ4LjEuOScgPT4gJ2lkLXBraXgtT0NTUF92YWxpZCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQ4LjEuMTAnID0+ICdpZC1wa2l4LU9DU1BfcGF0aCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQ4LjEuMTEnID0+ICdUcnVzdCBSb290JywKICAgICAgICAgICAgJzEuMy4xNC4zLjInID0+ICdhbGdvcml0aG0nLAogICAgICAgICAgICAnMS4zLjE0LjMuMi4zJyA9PiAnbWQ1V2l0aFJTQScsCiAgICAgICAgICAgICcxLjMuMTQuMy4yLjYnID0+ICdkZXMtZWNiJywKICAgICAgICAgICAgJzEuMy4xNC4zLjIuNycgPT4gJ2Rlcy1jYmMnLAogICAgICAgICAgICAnMS4zLjE0LjMuMi44JyA9PiAnZGVzLW9mYicsCiAgICAgICAgICAgICcxLjMuMTQuMy4yLjknID0+ICdkZXMtY2ZiJywKICAgICAgICAgICAgJzEuMy4xNC4zLjIuMTEnID0+ICdyc2FTaWduYXR1cmUnLAogICAgICAgICAgICAnMS4zLjE0LjMuMi4xMicgPT4gJ2RzYUVuY3J5cHRpb24tb2xkJywKICAgICAgICAgICAgJzEuMy4xNC4zLjIuMTMnID0+ICdkc2FXaXRoU0hBJywKICAgICAgICAgICAgJzEuMy4xNC4zLjIuMTUnID0+ICdzaGFXaXRoUlNBRW5jcnlwdGlvbicsCiAgICAgICAgICAgICcxLjMuMTQuMy4yLjE3JyA9PiAnZGVzLWVkZScsCiAgICAgICAgICAgICcxLjMuMTQuMy4yLjE4JyA9PiAnc2hhJywKICAgICAgICAgICAgJzEuMy4xNC4zLjIuMjYnID0+ICdzaGExJywKICAgICAgICAgICAgJzEuMy4xNC4zLjIuMjcnID0+ICdkc2FXaXRoU0hBMS1vbGQnLAogICAgICAgICAgICAnMS4zLjE0LjMuMi4yOScgPT4gJ3NoYTFXaXRoUlNBJywKICAgICAgICAgICAgJzEuMy4zNi4zLjIuMScgPT4gJ3JpcGVtZDE2MCcsCiAgICAgICAgICAgICcxLjMuMzYuMy4zLjEuMicgPT4gJ3JpcGVtZDE2MFdpdGhSU0EnLAogICAgICAgICAgICAnMS4zLjEwMS4xLjQuMScgPT4gJ1N0cm9uZyBFeHRyYW5ldCBJRCcsCiAgICAgICAgICAgICcyLjUnID0+ICdkaXJlY3Rvcnkgc2VydmljZXMgKFguNTAwKScsCiAgICAgICAgICAgICcyLjUuNCcgPT4gJ1g1MDknLAogICAgICAgICAgICAnMi41LjQuMycgPT4gJ2NvbW1vbk5hbWUnLAogICAgICAgICAgICAnMi41LjQuNCcgPT4gJ3N1cm5hbWUnLAogICAgICAgICAgICAnMi41LjQuNScgPT4gJ3NlcmlhbE51bWJlcicsCiAgICAgICAgICAgICcyLjUuNC42JyA9PiAnY291bnRyeU5hbWUnLAogICAgICAgICAgICAnMi41LjQuNycgPT4gJ2xvY2FsaXR5TmFtZScsCiAgICAgICAgICAgICcyLjUuNC44JyA9PiAnc3RhdGVPclByb3ZpbmNlTmFtZScsCiAgICAgICAgICAgICcyLjUuNC45JyA9PiAnc3RyZWV0QWRkcmVzcycsCiAgICAgICAgICAgICcyLjUuNC4xMCcgPT4gJ29yZ2FuaXphdGlvbk5hbWUnLAogICAgICAgICAgICAnMi41LjQuMTEnID0+ICdvcmdhbml6YXRpb25hbFVuaXROYW1lJywKICAgICAgICAgICAgJzIuNS40LjEyJyA9PiAndGl0bGUnLAogICAgICAgICAgICAnMi41LjQuMTMnID0+ICdkZXNjcmlwdGlvbicsCiAgICAgICAgICAgICcyLjUuNC4xNCcgPT4gJ3NlYXJjaEd1aWRlJywKICAgICAgICAgICAgJzIuNS40LjE1JyA9PiAnYnVzaW5lc3NDYXRlZ29yeScsCiAgICAgICAgICAgICcyLjUuNC4xNicgPT4gJ3Bvc3RhbEFkZHJlc3MnLAogICAgICAgICAgICAnMi41LjQuMTcnID0+ICdwb3N0YWxDb2RlJywKICAgICAgICAgICAgJzIuNS40LjE4JyA9PiAncG9zdE9mZmljZUJveCcsCiAgICAgICAgICAgICcyLjUuNC4xOScgPT4gJ3BoeXNpY2FsRGVsaXZlcnlPZmZpY2VOYW1lJywKICAgICAgICAgICAgJzIuNS40LjIwJyA9PiAndGVsZXBob25lTnVtYmVyJywKICAgICAgICAgICAgJzIuNS40LjIxJyA9PiAndGVsZXhOdW1iZXInLAogICAgICAgICAgICAnMi41LjQuMjInID0+ICd0ZWxldGV4VGVybWluYWxJZGVudGlmaWVyJywKICAgICAgICAgICAgJzIuNS40LjIzJyA9PiAnZmFjc2ltaWxlVGVsZXBob25lTnVtYmVyJywKICAgICAgICAgICAgJzIuNS40LjI0JyA9PiAneDEyMUFkZHJlc3MnLAogICAgICAgICAgICAnMi41LjQuMjUnID0+ICdpbnRlcm5hdGlvbmFsaVNETk51bWJlcicsCiAgICAgICAgICAgICcyLjUuNC4yNicgPT4gJ3JlZ2lzdGVyZWRBZGRyZXNzJywKICAgICAgICAgICAgJzIuNS40LjI3JyA9PiAnZGVzdGluYXRpb25JbmRpY2F0b3InLAogICAgICAgICAgICAnMi41LjQuMjgnID0+ICdwcmVmZXJyZWREZWxpdmVyeU1ldGhvZCcsCiAgICAgICAgICAgICcyLjUuNC4yOScgPT4gJ3ByZXNlbnRhdGlvbkFkZHJlc3MnLAogICAgICAgICAgICAnMi41LjQuMzAnID0+ICdzdXBwb3J0ZWRBcHBsaWNhdGlvbkNvbnRleHQnLAogICAgICAgICAgICAnMi41LjQuMzEnID0+ICdtZW1iZXInLAogICAgICAgICAgICAnMi41LjQuMzInID0+ICdvd25lcicsCiAgICAgICAgICAgICcyLjUuNC4zMycgPT4gJ3JvbGVPY2N1cGFudCcsCiAgICAgICAgICAgICcyLjUuNC4zNCcgPT4gJ3NlZUFsc28nLAogICAgICAgICAgICAnMi41LjQuMzUnID0+ICd1c2VyUGFzc3dvcmQnLAogICAgICAgICAgICAnMi41LjQuMzYnID0+ICd1c2VyQ2VydGlmaWNhdGUnLAogICAgICAgICAgICAnMi41LjQuMzcnID0+ICdjQUNlcnRpZmljYXRlJywKICAgICAgICAgICAgJzIuNS40LjM4JyA9PiAnYXV0aG9yaXR5UmV2b2NhdGlvbkxpc3QnLAogICAgICAgICAgICAnMi41LjQuMzknID0+ICdjZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0JywKICAgICAgICAgICAgJzIuNS40LjQwJyA9PiAnY3Jvc3NDZXJ0aWZpY2F0ZVBhaXInLAogICAgICAgICAgICAnMi41LjQuNDEnID0+ICduYW1lJywKICAgICAgICAgICAgJzIuNS40LjQyJyA9PiAnZ2l2ZW5OYW1lJywKICAgICAgICAgICAgJzIuNS40LjQzJyA9PiAnaW5pdGlhbHMnLAogICAgICAgICAgICAnMi41LjQuNDQnID0+ICdnZW5lcmF0aW9uUXVhbGlmaWVyJywKICAgICAgICAgICAgJzIuNS40LjQ1JyA9PiAneDUwMFVuaXF1ZUlkZW50aWZpZXInLAogICAgICAgICAgICAnMi41LjQuNDYnID0+ICdkblF1YWxpZmllcicsCiAgICAgICAgICAgICcyLjUuNC40NycgPT4gJ2VuaGFuY2VkU2VhcmNoR3VpZGUnLAogICAgICAgICAgICAnMi41LjQuNDgnID0+ICdwcm90b2NvbEluZm9ybWF0aW9uJywKICAgICAgICAgICAgJzIuNS40LjQ5JyA9PiAnZGlzdGluZ3Vpc2hlZE5hbWUnLAogICAgICAgICAgICAnMi41LjQuNTAnID0+ICd1bmlxdWVNZW1iZXInLAogICAgICAgICAgICAnMi41LjQuNTEnID0+ICdob3VzZUlkZW50aWZpZXInLAogICAgICAgICAgICAnMi41LjQuNTInID0+ICdzdXBwb3J0ZWRBbGdvcml0aG1zJywKICAgICAgICAgICAgJzIuNS40LjUzJyA9PiAnZGVsdGFSZXZvY2F0aW9uTGlzdCcsCiAgICAgICAgICAgICcyLjUuNC41NCcgPT4gJ2RtZE5hbWUnLAogICAgICAgICAgICAnMi41LjQuNjUnID0+ICdwc2V1ZG9ueW0nLAogICAgICAgICAgICAnMi41LjQuNzInID0+ICdyb2xlJywKICAgICAgICAgICAgJzIuNS44JyA9PiAnZGlyZWN0b3J5IHNlcnZpY2VzIC0gYWxnb3JpdGhtcycsCiAgICAgICAgICAgICcyLjUuOC4xLjEnID0+ICdyc2EnLAogICAgICAgICAgICAnMi41LjguMy4xMDAnID0+ICdtZGMyV2l0aFJTQScsCiAgICAgICAgICAgICcyLjUuOC4zLjEwMScgPT4gJ21kYzInLAogICAgICAgICAgICAnMi41LjI5JyA9PiAnaWQtY2UnLAogICAgICAgICAgICAnMi41LjI5LjknID0+ICdYNTA5djMgU3ViamVjdCBEaXJlY3RvcnkgQXR0cmlidXRlcycsCiAgICAgICAgICAgICcyLjUuMjkuMTQnID0+ICdYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmllcicsCiAgICAgICAgICAgICcyLjUuMjkuMTUnID0+ICdYNTA5djMgS2V5IFVzYWdlJywKICAgICAgICAgICAgJzIuNS4yOS4xNicgPT4gJ1g1MDl2MyBQcml2YXRlIEtleSBVc2FnZSBQZXJpb2QnLAogICAgICAgICAgICAnMi41LjI5LjE3JyA9PiAnWDUwOXYzIFN1YmplY3QgQWx0ZXJuYXRpdmUgTmFtZScsCiAgICAgICAgICAgICcyLjUuMjkuMTgnID0+ICdYNTA5djMgSXNzdWVyIEFsdGVybmF0aXZlIE5hbWUnLAogICAgICAgICAgICAnMi41LjI5LjE5JyA9PiAnWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRzJywKICAgICAgICAgICAgJzIuNS4yOS4yMCcgPT4gJ1g1MDl2MyBDUkwgTnVtYmVyJywKICAgICAgICAgICAgJzIuNS4yOS4yMScgPT4gJ1g1MDl2MyBDUkwgUmVhc29uIENvZGUnLAogICAgICAgICAgICAnMi41LjI5LjI0JyA9PiAnSW52YWxpZGl0eSBEYXRlJywKICAgICAgICAgICAgJzIuNS4yOS4yNycgPT4gJ1g1MDl2MyBEZWx0YSBDUkwgSW5kaWNhdG9yJywKICAgICAgICAgICAgJzIuNS4yOS4yOCcgPT4gJ1g1MDl2MyBJc3N1aW5nIERpc3RyaWJ1dGlvbiBQb2ludCcsCiAgICAgICAgICAgICcyLjUuMjkuMjknID0+ICdYNTA5djMgQ2VydGlmaWNhdGUgSXNzdWVyJywKICAgICAgICAgICAgJzIuNS4yOS4zMCcgPT4gJ1g1MDl2MyBOYW1lIENvbnN0cmFpbnRzJywKICAgICAgICAgICAgJzIuNS4yOS4zMScgPT4gJ1g1MDl2MyBDUkwgRGlzdHJpYnV0aW9uIFBvaW50cycsCiAgICAgICAgICAgICcyLjUuMjkuMzInID0+ICdYNTA5djMgQ2VydGlmaWNhdGUgUG9saWNpZXMnLAogICAgICAgICAgICAnMi41LjI5LjMyLjAnID0+ICdYNTA5djMgQW55IFBvbGljeScsCiAgICAgICAgICAgICcyLjUuMjkuMzMnID0+ICdYNTA5djMgUG9saWN5IE1hcHBpbmdzJywKICAgICAgICAgICAgJzIuNS4yOS4zNScgPT4gJ1g1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXInLAogICAgICAgICAgICAnMi41LjI5LjM2JyA9PiAnWDUwOXYzIFBvbGljeSBDb25zdHJhaW50cycsCiAgICAgICAgICAgICcyLjUuMjkuMzcnID0+ICdYNTA5djMgRXh0ZW5kZWQgS2V5IFVzYWdlJywKICAgICAgICAgICAgJzIuNS4yOS40NicgPT4gJ1g1MDl2MyBGcmVzaGVzdCBDUkwnLAogICAgICAgICAgICAnMi41LjI5LjU0JyA9PiAnWDUwOXYzIEluaGliaXQgQW55IFBvbGljeScsCiAgICAgICAgICAgICcyLjUuMjkuNTUnID0+ICdYNTA5djMgQUMgVGFyZ2V0aW5nJywKICAgICAgICAgICAgJzIuNS4yOS41NicgPT4gJ1g1MDl2MyBObyBSZXZvY2F0aW9uIEF2YWlsYWJsZScsCiAgICAgICAgICAgICcyLjUuMjkuMzcuMCcgPT4gJ0FueSBFeHRlbmRlZCBLZXkgVXNhZ2UnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMTM3MzAnID0+ICdOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3JwLicsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjExMzczMC4xJyA9PiAnTmV0c2NhcGUgQ2VydGlmaWNhdGUgRXh0ZW5zaW9uJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTEzNzMwLjInID0+ICdOZXRzY2FwZSBEYXRhIFR5cGUnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMTM3MzAuMS4xJyA9PiAnTmV0c2NhcGUgQ2VydCBUeXBlJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTEzNzMwLjEuMicgPT4gJ05ldHNjYXBlIEJhc2UgVXJsJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTEzNzMwLjEuMycgPT4gJ05ldHNjYXBlIFJldm9jYXRpb24gVXJsJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTEzNzMwLjEuNCcgPT4gJ05ldHNjYXBlIENBIFJldm9jYXRpb24gVXJsJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTEzNzMwLjEuNycgPT4gJ05ldHNjYXBlIFJlbmV3YWwgVXJsJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTEzNzMwLjEuOCcgPT4gJ05ldHNjYXBlIENBIFBvbGljeSBVcmwnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMTM3MzAuMS4xMicgPT4gJ05ldHNjYXBlIFNTTCBTZXJ2ZXIgTmFtZScsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjExMzczMC4xLjEzJyA9PiAnTmV0c2NhcGUgQ29tbWVudCcsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjExMzczMC4yLjUnID0+ICdOZXRzY2FwZSBDZXJ0aWZpY2F0ZSBTZXF1ZW5jZScsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjExMzczMC40LjEnID0+ICdOZXRzY2FwZSBTZXJ2ZXIgR2F0ZWQgQ3J5cHRvJywKICAgICAgICAgICAgJzEuMy42JyA9PiAnZG9kJywKICAgICAgICAgICAgJzEuMy42LjEnID0+ICdpYW5hJywKICAgICAgICAgICAgJzEuMy42LjEuMScgPT4gJ0RpcmVjdG9yeScsCiAgICAgICAgICAgICcxLjMuNi4xLjInID0+ICdNYW5hZ2VtZW50JywKICAgICAgICAgICAgJzEuMy42LjEuMycgPT4gJ0V4cGVyaW1lbnRhbCcsCiAgICAgICAgICAgICcxLjMuNi4xLjQnID0+ICdQcml2YXRlJywKICAgICAgICAgICAgJzEuMy42LjEuNScgPT4gJ1NlY3VyaXR5JywKICAgICAgICAgICAgJzEuMy42LjEuNicgPT4gJ1NOTVB2MicsCiAgICAgICAgICAgICcxLjMuNi4xLjcnID0+ICdNYWlsJywKICAgICAgICAgICAgJzEuMy42LjEuNC4xJyA9PiAnRW50ZXJwcmlzZXMnLAogICAgICAgICAgICAnMS4zLjYuMS40LjEuMTQ2Ni4zNDQnID0+ICdkY09iamVjdCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMy44JyA9PiAnemxpYiBjb21wcmVzc2lvbicsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zJyA9PiAnY3NvcicsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQnID0+ICduaXN0QWxnb3JpdGhtcycsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMScgPT4gJ2FlcycsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMS4xJyA9PiAnYWVzLTEyOC1lY2InLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjEuMicgPT4gJ2Flcy0xMjgtY2JjJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4xLjMnID0+ICdhZXMtMTI4LW9mYicsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMS40JyA9PiAnYWVzLTEyOC1jZmInLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjEuNScgPT4gJ2lkLWFlczEyOC13cmFwJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4xLjYnID0+ICdhZXMtMTI4LWdjbScsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMS43JyA9PiAnYWVzLTEyOC1jY20nLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjEuOCcgPT4gJ2lkLWFlczEyOC13cmFwLXBhZCcsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMScgPT4gJ2Flcy0xOTItZWNiJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4xLjIyJyA9PiAnYWVzLTE5Mi1jYmMnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjEuMjMnID0+ICdhZXMtMTkyLW9mYicsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yNCcgPT4gJ2Flcy0xOTItY2ZiJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4xLjI1JyA9PiAnaWQtYWVzMTkyLXdyYXAnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjEuMjYnID0+ICdhZXMtMTkyLWdjbScsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yNycgPT4gJ2Flcy0xOTItY2NtJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4xLjI4JyA9PiAnaWQtYWVzMTkyLXdyYXAtcGFkJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4xLjQxJyA9PiAnYWVzLTI1Ni1lY2InLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjEuNDInID0+ICdhZXMtMjU2LWNiYycsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MycgPT4gJ2Flcy0yNTYtb2ZiJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4xLjQ0JyA9PiAnYWVzLTI1Ni1jZmInLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjEuNDUnID0+ICdpZC1hZXMyNTYtd3JhcCcsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMS40NicgPT4gJ2Flcy0yNTYtZ2NtJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4xLjQ3JyA9PiAnYWVzLTI1Ni1jY20nLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjEuNDgnID0+ICdpZC1hZXMyNTYtd3JhcC1wYWQnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjInID0+ICduaXN0X2hhc2hhbGdzJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4yLjEnID0+ICdzaGEyNTYnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjIuMicgPT4gJ3NoYTM4NCcsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMi4zJyA9PiAnc2hhNTEyJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4yLjQnID0+ICdzaGEyMjQnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjMnID0+ICdkc2Ffd2l0aF9zaGEyJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4zLjEnID0+ICdkc2Ffd2l0aF9TSEEyMjQnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjMuMicgPT4gJ2RzYV93aXRoX1NIQTI1NicsCiAgICAgICAgICAgICcyLjUuMjkuMjMnID0+ICdIb2xkIEluc3RydWN0aW9uIENvZGUnLAogICAgICAgICAgICAnMC45JyA9PiAnZGF0YScsCiAgICAgICAgICAgICcwLjkuMjM0MicgPT4gJ3BzcycsCiAgICAgICAgICAgICcwLjkuMjM0Mi4xOTIwMDMwMCcgPT4gJ3VjbCcsCiAgICAgICAgICAgICcwLjkuMjM0Mi4xOTIwMDMwMC4xMDAnID0+ICdwaWxvdCcsCiAgICAgICAgICAgICcwLjkuMjM0Mi4xOTIwMDMwMC4xMDAuMScgPT4gJ3BpbG90QXR0cmlidXRlVHlwZScsCiAgICAgICAgICAgICcwLjkuMjM0Mi4xOTIwMDMwMC4xMDAuMycgPT4gJ3BpbG90QXR0cmlidXRlU3ludGF4JywKICAgICAgICAgICAgJzAuOS4yMzQyLjE5MjAwMzAwLjEwMC40JyA9PiAncGlsb3RPYmplY3RDbGFzcycsCiAgICAgICAgICAgICcwLjkuMjM0Mi4xOTIwMDMwMC4xMDAuMTAnID0+ICdwaWxvdEdyb3VwcycsCiAgICAgICAgICAgICcyLjIzLjQyJyA9PiAnU2VjdXJlIEVsZWN0cm9uaWMgVHJhbnNhY3Rpb25zJywKICAgICAgICAgICAgJzIuMjMuNDIuMCcgPT4gJ2NvbnRlbnQgdHlwZXMnLAogICAgICAgICAgICAnMi4yMy40Mi4xJyA9PiAnbWVzc2FnZSBleHRlbnNpb25zJywKICAgICAgICAgICAgJzIuMjMuNDIuMycgPT4gJ3NldC1hdHRyJywKICAgICAgICAgICAgJzIuMjMuNDIuNScgPT4gJ3NldC1wb2xpY3knLAogICAgICAgICAgICAnMi4yMy40Mi43JyA9PiAnY2VydGlmaWNhdGUgZXh0ZW5zaW9ucycsCiAgICAgICAgICAgICcyLjIzLjQyLjgnID0+ICdzZXQtYnJhbmQnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjAnID0+ICdzZXRjdC1QQU5EYXRhJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4xJyA9PiAnc2V0Y3QtUEFOVG9rZW4nLAogICAgICAgICAgICAnMi4yMy40Mi4wLjInID0+ICdzZXRjdC1QQU5Pbmx5JywKICAgICAgICAgICAgJzIuMjMuNDIuMC4zJyA9PiAnc2V0Y3QtT0lEYXRhJywKICAgICAgICAgICAgJzIuMjMuNDIuMC40JyA9PiAnc2V0Y3QtUEknLAogICAgICAgICAgICAnMi4yMy40Mi4wLjUnID0+ICdzZXRjdC1QSURhdGEnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjYnID0+ICdzZXRjdC1QSURhdGFVbnNpZ25lZCcsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNycgPT4gJ3NldGN0LUhPRElucHV0JywKICAgICAgICAgICAgJzIuMjMuNDIuMC44JyA9PiAnc2V0Y3QtQXV0aFJlc0JhZ2dhZ2UnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjknID0+ICdzZXRjdC1BdXRoUmV2UmVxQmFnZ2FnZScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMTAnID0+ICdzZXRjdC1BdXRoUmV2UmVzQmFnZ2FnZScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMTEnID0+ICdzZXRjdC1DYXBUb2tlblNlcScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMTInID0+ICdzZXRjdC1QSW5pdFJlc0RhdGEnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjEzJyA9PiAnc2V0Y3QtUEktVEJTJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4xNCcgPT4gJ3NldGN0LVBSZXNEYXRhJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4xNicgPT4gJ3NldGN0LUF1dGhSZXFUQlMnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjE3JyA9PiAnc2V0Y3QtQXV0aFJlc1RCUycsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMTgnID0+ICdzZXRjdC1BdXRoUmVzVEJTWCcsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMTknID0+ICdzZXRjdC1BdXRoVG9rZW5UQlMnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjIwJyA9PiAnc2V0Y3QtQ2FwVG9rZW5EYXRhJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4yMScgPT4gJ3NldGN0LUNhcFRva2VuVEJTJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4yMicgPT4gJ3NldGN0LUFjcUNhcmRDb2RlTXNnJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4yMycgPT4gJ3NldGN0LUF1dGhSZXZSZXFUQlMnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjI0JyA9PiAnc2V0Y3QtQXV0aFJldlJlc0RhdGEnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjI1JyA9PiAnc2V0Y3QtQXV0aFJldlJlc1RCUycsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMjYnID0+ICdzZXRjdC1DYXBSZXFUQlMnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjI3JyA9PiAnc2V0Y3QtQ2FwUmVxVEJTWCcsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMjgnID0+ICdzZXRjdC1DYXBSZXNEYXRhJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4yOScgPT4gJ3NldGN0LUNhcFJldlJlcVRCUycsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMzAnID0+ICdzZXRjdC1DYXBSZXZSZXFUQlNYJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4zMScgPT4gJ3NldGN0LUNhcFJldlJlc0RhdGEnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjMyJyA9PiAnc2V0Y3QtQ3JlZFJlcVRCUycsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMzMnID0+ICdzZXRjdC1DcmVkUmVxVEJTWCcsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMzQnID0+ICdzZXRjdC1DcmVkUmVzRGF0YScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMzUnID0+ICdzZXRjdC1DcmVkUmV2UmVxVEJTJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4zNicgPT4gJ3NldGN0LUNyZWRSZXZSZXFUQlNYJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4zNycgPT4gJ3NldGN0LUNyZWRSZXZSZXNEYXRhJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4zOCcgPT4gJ3NldGN0LVBDZXJ0UmVxRGF0YScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMzknID0+ICdzZXRjdC1QQ2VydFJlc1RCUycsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNDAnID0+ICdzZXRjdC1CYXRjaEFkbWluUmVxRGF0YScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNDEnID0+ICdzZXRjdC1CYXRjaEFkbWluUmVzRGF0YScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNDInID0+ICdzZXRjdC1DYXJkQ0luaXRSZXNUQlMnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjQzJyA9PiAnc2V0Y3QtTWVBcUNJbml0UmVzVEJTJywKICAgICAgICAgICAgJzIuMjMuNDIuMC40NCcgPT4gJ3NldGN0LVJlZ0Zvcm1SZXNUQlMnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjQ1JyA9PiAnc2V0Y3QtQ2VydFJlcURhdGEnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjQ2JyA9PiAnc2V0Y3QtQ2VydFJlcVRCUycsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNDcnID0+ICdzZXRjdC1DZXJ0UmVzRGF0YScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNDgnID0+ICdzZXRjdC1DZXJ0SW5xUmVxVEJTJywKICAgICAgICAgICAgJzIuMjMuNDIuMC40OScgPT4gJ3NldGN0LUVycm9yVEJTJywKICAgICAgICAgICAgJzIuMjMuNDIuMC41MCcgPT4gJ3NldGN0LVBJRHVhbFNpZ25lZFRCRScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNTEnID0+ICdzZXRjdC1QSVVuc2lnbmVkVEJFJywKICAgICAgICAgICAgJzIuMjMuNDIuMC41MicgPT4gJ3NldGN0LUF1dGhSZXFUQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjUzJyA9PiAnc2V0Y3QtQXV0aFJlc1RCRScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNTQnID0+ICdzZXRjdC1BdXRoUmVzVEJFWCcsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNTUnID0+ICdzZXRjdC1BdXRoVG9rZW5UQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjU2JyA9PiAnc2V0Y3QtQ2FwVG9rZW5UQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjU3JyA9PiAnc2V0Y3QtQ2FwVG9rZW5UQkVYJywKICAgICAgICAgICAgJzIuMjMuNDIuMC41OCcgPT4gJ3NldGN0LUFjcUNhcmRDb2RlTXNnVEJFJywKICAgICAgICAgICAgJzIuMjMuNDIuMC41OScgPT4gJ3NldGN0LUF1dGhSZXZSZXFUQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjYwJyA9PiAnc2V0Y3QtQXV0aFJldlJlc1RCRScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNjEnID0+ICdzZXRjdC1BdXRoUmV2UmVzVEJFQicsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNjInID0+ICdzZXRjdC1DYXBSZXFUQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjYzJyA9PiAnc2V0Y3QtQ2FwUmVxVEJFWCcsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNjQnID0+ICdzZXRjdC1DYXBSZXNUQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjY1JyA9PiAnc2V0Y3QtQ2FwUmV2UmVxVEJFJywKICAgICAgICAgICAgJzIuMjMuNDIuMC42NicgPT4gJ3NldGN0LUNhcFJldlJlcVRCRVgnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjY3JyA9PiAnc2V0Y3QtQ2FwUmV2UmVzVEJFJywKICAgICAgICAgICAgJzIuMjMuNDIuMC42OCcgPT4gJ3NldGN0LUNyZWRSZXFUQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjY5JyA9PiAnc2V0Y3QtQ3JlZFJlcVRCRVgnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjcwJyA9PiAnc2V0Y3QtQ3JlZFJlc1RCRScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNzEnID0+ICdzZXRjdC1DcmVkUmV2UmVxVEJFJywKICAgICAgICAgICAgJzIuMjMuNDIuMC43MicgPT4gJ3NldGN0LUNyZWRSZXZSZXFUQkVYJywKICAgICAgICAgICAgJzIuMjMuNDIuMC43MycgPT4gJ3NldGN0LUNyZWRSZXZSZXNUQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjc0JyA9PiAnc2V0Y3QtQmF0Y2hBZG1pblJlcVRCRScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNzUnID0+ICdzZXRjdC1CYXRjaEFkbWluUmVzVEJFJywKICAgICAgICAgICAgJzIuMjMuNDIuMC43NicgPT4gJ3NldGN0LVJlZ0Zvcm1SZXFUQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjc3JyA9PiAnc2V0Y3QtQ2VydFJlcVRCRScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNzgnID0+ICdzZXRjdC1DZXJ0UmVxVEJFWCcsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNzknID0+ICdzZXRjdC1DZXJ0UmVzVEJFJywKICAgICAgICAgICAgJzIuMjMuNDIuMC44MCcgPT4gJ3NldGN0LUNSTE5vdGlmaWNhdGlvblRCUycsCiAgICAgICAgICAgICcyLjIzLjQyLjAuODEnID0+ICdzZXRjdC1DUkxOb3RpZmljYXRpb25SZXNUQlMnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjgyJyA9PiAnc2V0Y3QtQkNJRGlzdHJpYnV0aW9uVEJTJywKICAgICAgICAgICAgJzIuMjMuNDIuMS4xJyA9PiAnZ2VuZXJpYyBjcnlwdG9ncmFtJywKICAgICAgICAgICAgJzIuMjMuNDIuMS4zJyA9PiAnbWVyY2hhbnQgaW5pdGlhdGVkIGF1dGgnLAogICAgICAgICAgICAnMi4yMy40Mi4xLjQnID0+ICdzZXRleHQtcGluU2VjdXJlJywKICAgICAgICAgICAgJzIuMjMuNDIuMS41JyA9PiAnc2V0ZXh0LXBpbkFueScsCiAgICAgICAgICAgICcyLjIzLjQyLjEuNycgPT4gJ3NldGV4dC10cmFjazInLAogICAgICAgICAgICAnMi4yMy40Mi4xLjgnID0+ICdhZGRpdGlvbmFsIHZlcmlmaWNhdGlvbicsCiAgICAgICAgICAgICcyLjIzLjQyLjUuMCcgPT4gJ3NldC1wb2xpY3ktcm9vdCcsCiAgICAgICAgICAgICcyLjIzLjQyLjcuMCcgPT4gJ3NldENleHQtaGFzaGVkUm9vdCcsCiAgICAgICAgICAgICcyLjIzLjQyLjcuMScgPT4gJ3NldENleHQtY2VydFR5cGUnLAogICAgICAgICAgICAnMi4yMy40Mi43LjInID0+ICdzZXRDZXh0LW1lcmNoRGF0YScsCiAgICAgICAgICAgICcyLjIzLjQyLjcuMycgPT4gJ3NldENleHQtY0NlcnRSZXF1aXJlZCcsCiAgICAgICAgICAgICcyLjIzLjQyLjcuNCcgPT4gJ3NldENleHQtdHVubmVsaW5nJywKICAgICAgICAgICAgJzIuMjMuNDIuNy41JyA9PiAnc2V0Q2V4dC1zZXRFeHQnLAogICAgICAgICAgICAnMi4yMy40Mi43LjYnID0+ICdzZXRDZXh0LXNldFF1YWxmJywKICAgICAgICAgICAgJzIuMjMuNDIuNy43JyA9PiAnc2V0Q2V4dC1QR1dZY2FwYWJpbGl0aWVzJywKICAgICAgICAgICAgJzIuMjMuNDIuNy44JyA9PiAnc2V0Q2V4dC1Ub2tlbklkZW50aWZpZXInLAogICAgICAgICAgICAnMi4yMy40Mi43LjknID0+ICdzZXRDZXh0LVRyYWNrMkRhdGEnLAogICAgICAgICAgICAnMi4yMy40Mi43LjEwJyA9PiAnc2V0Q2V4dC1Ub2tlblR5cGUnLAogICAgICAgICAgICAnMi4yMy40Mi43LjExJyA9PiAnc2V0Q2V4dC1Jc3N1ZXJDYXBhYmlsaXRpZXMnLAogICAgICAgICAgICAnMi4yMy40Mi4zLjAnID0+ICdzZXRBdHRyLUNlcnQnLAogICAgICAgICAgICAnMi4yMy40Mi4zLjEnID0+ICdwYXltZW50IGdhdGV3YXkgY2FwYWJpbGl0aWVzJywKICAgICAgICAgICAgJzIuMjMuNDIuMy4yJyA9PiAnc2V0QXR0ci1Ub2tlblR5cGUnLAogICAgICAgICAgICAnMi4yMy40Mi4zLjMnID0+ICdpc3N1ZXIgY2FwYWJpbGl0aWVzJywKICAgICAgICAgICAgJzIuMjMuNDIuMy4wLjAnID0+ICdzZXQtcm9vdEtleVRodW1iJywKICAgICAgICAgICAgJzIuMjMuNDIuMy4wLjEnID0+ICdzZXQtYWRkUG9saWN5JywKICAgICAgICAgICAgJzIuMjMuNDIuMy4yLjEnID0+ICdzZXRBdHRyLVRva2VuLUVNVicsCiAgICAgICAgICAgICcyLjIzLjQyLjMuMi4yJyA9PiAnc2V0QXR0ci1Ub2tlbi1CMFByaW1lJywKICAgICAgICAgICAgJzIuMjMuNDIuMy4zLjMnID0+ICdzZXRBdHRyLUlzc0NhcC1DVk0nLAogICAgICAgICAgICAnMi4yMy40Mi4zLjMuNCcgPT4gJ3NldEF0dHItSXNzQ2FwLVQyJywKICAgICAgICAgICAgJzIuMjMuNDIuMy4zLjUnID0+ICdzZXRBdHRyLUlzc0NhcC1TaWcnLAogICAgICAgICAgICAnMi4yMy40Mi4zLjMuMy4xJyA9PiAnZ2VuZXJhdGUgY3J5cHRvZ3JhbScsCiAgICAgICAgICAgICcyLjIzLjQyLjMuMy40LjEnID0+ICdlbmNyeXB0ZWQgdHJhY2sgMicsCiAgICAgICAgICAgICcyLjIzLjQyLjMuMy40LjInID0+ICdjbGVhcnRleHQgdHJhY2sgMicsCiAgICAgICAgICAgICcyLjIzLjQyLjMuMy41LjEnID0+ICdJQ0Mgb3IgdG9rZW4gc2lnbmF0dXJlJywKICAgICAgICAgICAgJzIuMjMuNDIuMy4zLjUuMicgPT4gJ3NlY3VyZSBkZXZpY2Ugc2lnbmF0dXJlJywKICAgICAgICAgICAgJzIuMjMuNDIuOC4xJyA9PiAnc2V0LWJyYW5kLUlBVEEtQVRBJywKICAgICAgICAgICAgJzIuMjMuNDIuOC4zMCcgPT4gJ3NldC1icmFuZC1EaW5lcnMnLAogICAgICAgICAgICAnMi4yMy40Mi44LjM0JyA9PiAnc2V0LWJyYW5kLUFtZXJpY2FuRXhwcmVzcycsCiAgICAgICAgICAgICcyLjIzLjQyLjguMzUnID0+ICdzZXQtYnJhbmQtSkNCJywKICAgICAgICAgICAgJzIuMjMuNDIuOC40JyA9PiAnc2V0LWJyYW5kLVZpc2EnLAogICAgICAgICAgICAnMi4yMy40Mi44LjUnID0+ICdzZXQtYnJhbmQtTWFzdGVyQ2FyZCcsCiAgICAgICAgICAgICcyLjIzLjQyLjguNjAxMScgPT4gJ3NldC1icmFuZC1Ob3Z1cycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4zLjEwJyA9PiAnZGVzLWNkbWYnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xLjYnID0+ICdyc2FPQUVQRW5jcnlwdGlvblNFVCcsCiAgICAgICAgICAgICcxLjAuMTAxMTguMy4wLjU1JyA9PiAnd2hpcmxwb29sJywKICAgICAgICAgICAgJzEuMi42NDMuMi4yJyA9PiAnY3J5cHRvcHJvJywKICAgICAgICAgICAgJzEuMi42NDMuMi45JyA9PiAnY3J5cHRvY29tJywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMnID0+ICdHT1NUIFIgMzQuMTEtOTQgd2l0aCBHT1NUIFIgMzQuMTAtMjAwMScsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi40JyA9PiAnR09TVCBSIDM0LjExLTk0IHdpdGggR09TVCBSIDM0LjEwLTk0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjknID0+ICdHT1NUIFIgMzQuMTEtOTQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMTAnID0+ICdITUFDIEdPU1QgMzQuMTEtOTQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMTknID0+ICdHT1NUIFIgMzQuMTAtMjAwMScsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4yMCcgPT4gJ0dPU1QgUiAzNC4xMC05NCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4yMScgPT4gJ0dPU1QgMjgxNDctODknLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMjInID0+ICdHT1NUIDI4MTQ3LTg5IE1BQycsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4yMycgPT4gJ0dPU1QgUiAzNC4xMS05NCBQUkYnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuOTgnID0+ICdHT1NUIFIgMzQuMTAtMjAwMSBESCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi45OScgPT4gJ0dPU1QgUiAzNC4xMC05NCBESCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4xNC4xJyA9PiAnaWQtR29zdDI4MTQ3LTg5LUNyeXB0b1Byby1LZXlNZXNoaW5nJywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjE0LjAnID0+ICdpZC1Hb3N0MjgxNDctODktTm9uZS1LZXlNZXNoaW5nJywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMwLjAnID0+ICdpZC1Hb3N0UjM0MTEtOTQtVGVzdFBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMwLjEnID0+ICdpZC1Hb3N0UjM0MTEtOTQtQ3J5cHRvUHJvUGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzEuMCcgPT4gJ2lkLUdvc3QyODE0Ny04OS1UZXN0UGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzEuMScgPT4gJ2lkLUdvc3QyODE0Ny04OS1DcnlwdG9Qcm8tQS1QYXJhbVNldCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4zMS4yJyA9PiAnaWQtR29zdDI4MTQ3LTg5LUNyeXB0b1Byby1CLVBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMxLjMnID0+ICdpZC1Hb3N0MjgxNDctODktQ3J5cHRvUHJvLUMtUGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzEuNCcgPT4gJ2lkLUdvc3QyODE0Ny04OS1DcnlwdG9Qcm8tRC1QYXJhbVNldCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4zMS41JyA9PiAnaWQtR29zdDI4MTQ3LTg5LUNyeXB0b1Byby1Pc2Nhci0xLTEtUGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzEuNicgPT4gJ2lkLUdvc3QyODE0Ny04OS1DcnlwdG9Qcm8tT3NjYXItMS0wLVBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMxLjcnID0+ICdpZC1Hb3N0MjgxNDctODktQ3J5cHRvUHJvLVJJQy0xLVBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMyLjAnID0+ICdpZC1Hb3N0UjM0MTAtOTQtVGVzdFBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMyLjInID0+ICdpZC1Hb3N0UjM0MTAtOTQtQ3J5cHRvUHJvLUEtUGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzIuMycgPT4gJ2lkLUdvc3RSMzQxMC05NC1DcnlwdG9Qcm8tQi1QYXJhbVNldCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4zMi40JyA9PiAnaWQtR29zdFIzNDEwLTk0LUNyeXB0b1Byby1DLVBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMyLjUnID0+ICdpZC1Hb3N0UjM0MTAtOTQtQ3J5cHRvUHJvLUQtUGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzMuMScgPT4gJ2lkLUdvc3RSMzQxMC05NC1DcnlwdG9Qcm8tWGNoQS1QYXJhbVNldCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4zMy4yJyA9PiAnaWQtR29zdFIzNDEwLTk0LUNyeXB0b1Byby1YY2hCLVBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMzLjMnID0+ICdpZC1Hb3N0UjM0MTAtOTQtQ3J5cHRvUHJvLVhjaEMtUGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzUuMCcgPT4gJ2lkLUdvc3RSMzQxMC0yMDAxLVRlc3RQYXJhbVNldCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4zNS4xJyA9PiAnaWQtR29zdFIzNDEwLTIwMDEtQ3J5cHRvUHJvLUEtUGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzUuMicgPT4gJ2lkLUdvc3RSMzQxMC0yMDAxLUNyeXB0b1Byby1CLVBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjM1LjMnID0+ICdpZC1Hb3N0UjM0MTAtMjAwMS1DcnlwdG9Qcm8tQy1QYXJhbVNldCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4zNi4wJyA9PiAnaWQtR29zdFIzNDEwLTIwMDEtQ3J5cHRvUHJvLVhjaEEtUGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzYuMScgPT4gJ2lkLUdvc3RSMzQxMC0yMDAxLUNyeXB0b1Byby1YY2hCLVBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjIwLjEnID0+ICdpZC1Hb3N0UjM0MTAtOTQtYScsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4yMC4yJyA9PiAnaWQtR29zdFIzNDEwLTk0LWFCaXMnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMjAuMycgPT4gJ2lkLUdvc3RSMzQxMC05NC1iJywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjIwLjQnID0+ICdpZC1Hb3N0UjM0MTAtOTQtYkJpcycsCiAgICAgICAgICAgICcxLjIuNjQzLjIuOS4xLjYuMScgPT4gJ0dPU1QgMjgxNDctODkgQ3J5cHRvY29tIFBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi45LjEuNS4zJyA9PiAnR09TVCAzNC4xMC05NCBDcnlwdG9jb20nLAogICAgICAgICAgICAnMS4yLjY0My4yLjkuMS41LjQnID0+ICdHT1NUIDM0LjEwLTIwMDEgQ3J5cHRvY29tJywKICAgICAgICAgICAgJzEuMi42NDMuMi45LjEuMy4zJyA9PiAnR09TVCBSIDM0LjExLTk0IHdpdGggR09TVCBSIDM0LjEwLTk0IENyeXB0b2NvbScsCiAgICAgICAgICAgICcxLjIuNjQzLjIuOS4xLjMuNCcgPT4gJ0dPU1QgUiAzNC4xMS05NCB3aXRoIEdPU1QgUiAzNC4xMC0yMDAxIENyeXB0b2NvbScsCiAgICAgICAgICAgICcxLjIuNjQzLjIuOS4xLjguMScgPT4gJ0dPU1QgUiAzNDEwLTIwMDEgUGFyYW1ldGVyIFNldCBDcnlwdG9jb20nLAogICAgICAgICAgICAnMS4yLjM5Mi4yMDAwMTEuNjEuMS4xLjEuMicgPT4gJ2NhbWVsbGlhLTEyOC1jYmMnLAogICAgICAgICAgICAnMS4yLjM5Mi4yMDAwMTEuNjEuMS4xLjEuMycgPT4gJ2NhbWVsbGlhLTE5Mi1jYmMnLAogICAgICAgICAgICAnMS4yLjM5Mi4yMDAwMTEuNjEuMS4xLjEuNCcgPT4gJ2NhbWVsbGlhLTI1Ni1jYmMnLAogICAgICAgICAgICAnMS4yLjM5Mi4yMDAwMTEuNjEuMS4xLjMuMicgPT4gJ2lkLWNhbWVsbGlhMTI4LXdyYXAnLAogICAgICAgICAgICAnMS4yLjM5Mi4yMDAwMTEuNjEuMS4xLjMuMycgPT4gJ2lkLWNhbWVsbGlhMTkyLXdyYXAnLAogICAgICAgICAgICAnMS4yLjM5Mi4yMDAwMTEuNjEuMS4xLjMuNCcgPT4gJ2lkLWNhbWVsbGlhMjU2LXdyYXAnLAogICAgICAgICAgICAnMC4zLjQ0MDEuNScgPT4gJ250dC1kcycsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45JyA9PiAnY2FtZWxsaWEnLAogICAgICAgICAgICAnMC4zLjQ0MDEuNS4zLjEuOS4xJyA9PiAnY2FtZWxsaWEtMTI4LWVjYicsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjMnID0+ICdjYW1lbGxpYS0xMjgtb2ZiJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuNCcgPT4gJ2NhbWVsbGlhLTEyOC1jZmInLAogICAgICAgICAgICAnMC4zLjQ0MDEuNS4zLjEuOS42JyA9PiAnY2FtZWxsaWEtMTI4LWdjbScsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjcnID0+ICdjYW1lbGxpYS0xMjgtY2NtJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuOScgPT4gJ2NhbWVsbGlhLTEyOC1jdHInLAogICAgICAgICAgICAnMC4zLjQ0MDEuNS4zLjEuOS4xMCcgPT4gJ2NhbWVsbGlhLTEyOC1jbWFjJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuMjEnID0+ICdjYW1lbGxpYS0xOTItZWNiJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuMjMnID0+ICdjYW1lbGxpYS0xOTItb2ZiJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuMjQnID0+ICdjYW1lbGxpYS0xOTItY2ZiJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuMjYnID0+ICdjYW1lbGxpYS0xOTItZ2NtJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuMjcnID0+ICdjYW1lbGxpYS0xOTItY2NtJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuMjknID0+ICdjYW1lbGxpYS0xOTItY3RyJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuMzAnID0+ICdjYW1lbGxpYS0xOTItY21hYycsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjQxJyA9PiAnY2FtZWxsaWEtMjU2LWVjYicsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjQzJyA9PiAnY2FtZWxsaWEtMjU2LW9mYicsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjQ0JyA9PiAnY2FtZWxsaWEtMjU2LWNmYicsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjQ2JyA9PiAnY2FtZWxsaWEtMjU2LWdjbScsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjQ3JyA9PiAnY2FtZWxsaWEtMjU2LWNjbScsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjQ5JyA9PiAnY2FtZWxsaWEtMjU2LWN0cicsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjUwJyA9PiAnY2FtZWxsaWEtMjU2LWNtYWMnLAogICAgICAgICAgICAnMS4yLjQxMC4yMDAwMDQnID0+ICdraXNhJywKICAgICAgICAgICAgJzEuMi40MTAuMjAwMDA0LjEuMycgPT4gJ3NlZWQtZWNiJywKICAgICAgICAgICAgJzEuMi40MTAuMjAwMDA0LjEuNCcgPT4gJ3NlZWQtY2JjJywKICAgICAgICAgICAgJzEuMi40MTAuMjAwMDA0LjEuNScgPT4gJ3NlZWQtY2ZiJywKICAgICAgICAgICAgJzEuMi40MTAuMjAwMDA0LjEuNicgPT4gJ3NlZWQtb2ZiJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDYuMi4xJyA9PiAnWDkuNDIgREgnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjEnID0+ICdicmFpbnBvb2xQMTYwcjEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjInID0+ICdicmFpbnBvb2xQMTYwdDEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjMnID0+ICdicmFpbnBvb2xQMTkycjEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjQnID0+ICdicmFpbnBvb2xQMTkydDEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjUnID0+ICdicmFpbnBvb2xQMjI0cjEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjYnID0+ICdicmFpbnBvb2xQMjI0dDEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjcnID0+ICdicmFpbnBvb2xQMjU2cjEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjgnID0+ICdicmFpbnBvb2xQMjU2dDEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjknID0+ICdicmFpbnBvb2xQMzIwcjEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjEwJyA9PiAnYnJhaW5wb29sUDMyMHQxJywKICAgICAgICAgICAgJzEuMy4zNi4zLjMuMi44LjEuMS4xMScgPT4gJ2JyYWlucG9vbFAzODRyMScsCiAgICAgICAgICAgICcxLjMuMzYuMy4zLjIuOC4xLjEuMTInID0+ICdicmFpbnBvb2xQMzg0dDEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjEzJyA9PiAnYnJhaW5wb29sUDUxMnIxJywKICAgICAgICAgICAgJzEuMy4zNi4zLjMuMi44LjEuMS4xNCcgPT4gJ2JyYWlucG9vbFA1MTJ0MScsCiAgICAgICAgICAgICcxLjMuMTMzLjE2Ljg0MC42My4wJyA9PiAneDktNjMtc2NoZW1lJywKICAgICAgICAgICAgJzEuMy4xMzIuMScgPT4gJ3NlY2ctc2NoZW1lJywKICAgICAgICAgICAgJzEuMy4xMzMuMTYuODQwLjYzLjAuMicgPT4gJ2RoU2luZ2xlUGFzcy1zdGRESC1zaGExa2RmLXNjaGVtZScsCiAgICAgICAgICAgICcxLjMuMTMyLjEuMTEuMCcgPT4gJ2RoU2luZ2xlUGFzcy1zdGRESC1zaGEyMjRrZGYtc2NoZW1lJywKICAgICAgICAgICAgJzEuMy4xMzIuMS4xMS4xJyA9PiAnZGhTaW5nbGVQYXNzLXN0ZERILXNoYTI1NmtkZi1zY2hlbWUnLAogICAgICAgICAgICAnMS4zLjEzMi4xLjExLjInID0+ICdkaFNpbmdsZVBhc3Mtc3RkREgtc2hhMzg0a2RmLXNjaGVtZScsCiAgICAgICAgICAgICcxLjMuMTMyLjEuMTEuMycgPT4gJ2RoU2luZ2xlUGFzcy1zdGRESC1zaGE1MTJrZGYtc2NoZW1lJywKICAgICAgICAgICAgJzEuMy4xMzMuMTYuODQwLjYzLjAuMycgPT4gJ2RoU2luZ2xlUGFzcy1jb2ZhY3RvckRILXNoYTFrZGYtc2NoZW1lJywKICAgICAgICAgICAgJzEuMy4xMzIuMS4xNC4wJyA9PiAnZGhTaW5nbGVQYXNzLWNvZmFjdG9yREgtc2hhMjI0a2RmLXNjaGVtZScsCiAgICAgICAgICAgICcxLjMuMTMyLjEuMTQuMScgPT4gJ2RoU2luZ2xlUGFzcy1jb2ZhY3RvckRILXNoYTI1NmtkZi1zY2hlbWUnLAogICAgICAgICAgICAnMS4zLjEzMi4xLjE0LjInID0+ICdkaFNpbmdsZVBhc3MtY29mYWN0b3JESC1zaGEzODRrZGYtc2NoZW1lJywKICAgICAgICAgICAgJzEuMy4xMzIuMS4xNC4zJyA9PiAnZGhTaW5nbGVQYXNzLWNvZmFjdG9yREgtc2hhNTEya2RmLXNjaGVtZScsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4xMTEyOS4yLjQuMicgPT4gJ0NUIFByZWNlcnRpZmljYXRlIFNDVHMnLAogICAgICAgICAgICAnMS4zLjYuMS40LjEuMTExMjkuMi40LjMnID0+ICdDVCBQcmVjZXJ0aWZpY2F0ZSBQb2lzb24nLAogICAgICAgICAgICAnMS4zLjYuMS40LjEuMTExMjkuMi40LjQnID0+ICdDVCBQcmVjZXJ0aWZpY2F0ZSBTaWduZXInLAogICAgICAgICAgICAnMS4zLjYuMS40LjEuMTExMjkuMi40LjUnID0+ICdDVCBDZXJ0aWZpY2F0ZSBTQ1RzJywKICAgICAgICAgICAgJzEuMy42LjEuNC4xLjMxMS42MC4yLjEuMScgPT4gJ2p1cmlzZGljdGlvbkxvY2FsaXR5TmFtZScsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4zMTEuNjAuMi4xLjInID0+ICdqdXJpc2RpY3Rpb25TdGF0ZU9yUHJvdmluY2VOYW1lJywKICAgICAgICAgICAgJzEuMy42LjEuNC4xLjMxMS42MC4yLjEuMycgPT4gJ2p1cmlzZGljdGlvbkNvdW50cnlOYW1lJywKICAgICAgICAgICAgJzEuMy42LjEuNC4xLjExNTkxLjQuMTEnID0+ICdpZC1zY3J5cHQnLAogICAgICAgIF07CgogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRvaWRTdHJpbmcsICRvaWRzKSkgewogICAgICAgICAgICByZXR1cm4gJG9pZHNbJG9pZFN0cmluZ107CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCRvaWRTdHJpbmcpIHsKICAgICAgICAgICAgY2FzZSBzZWxmOjpSU0FfRU5DUllQVElPTjoKICAgICAgICAgICAgICAgIHJldHVybiAnUlNBIEVuY3J5cHRpb24nOwogICAgICAgICAgICBjYXNlIHNlbGY6Ok1ENV9XSVRIX1JTQV9FTkNSWVBUSU9OOgogICAgICAgICAgICAgICAgcmV0dXJuICdNRDUgd2l0aCBSU0EgRW5jcnlwdGlvbic7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6U0hBMV9XSVRIX1JTQV9TSUdOQVRVUkU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1NIQS0xIHdpdGggUlNBIFNpZ25hdHVyZSc7CgogICAgICAgICAgICBjYXNlIHNlbGY6OlBLQ1M5X0VNQUlMOgogICAgICAgICAgICAgICAgcmV0dXJuICdQS0NTICM5IEVtYWlsIEFkZHJlc3MnOwogICAgICAgICAgICBjYXNlIHNlbGY6OlBLQ1M5X1VOU1RSVUNUVVJFRF9OQU1FOgogICAgICAgICAgICAgICAgcmV0dXJuICdQS0NTICM5IFVuc3RydWN0dXJlZCBOYW1lJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpQS0NTOV9DT05URU5UX1RZUEU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1BLQ1MgIzkgQ29udGVudCBUeXBlJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpQS0NTOV9NRVNTQUdFX0RJR0VTVDoKICAgICAgICAgICAgICAgIHJldHVybiAnUEtDUyAjOSBNZXNzYWdlIERpZ2VzdCc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6UEtDUzlfU0lHTklOR19USU1FOgogICAgICAgICAgICAgICAgcmV0dXJuICdQS0NTICM5IFNpZ25pbmcgVGltZSc7CgogICAgICAgICAgICBjYXNlIHNlbGY6OkNPTU1PTl9OQU1FOgogICAgICAgICAgICAgICAgcmV0dXJuICdDb21tb24gTmFtZSc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6U1VSTkFNRToKICAgICAgICAgICAgICAgIHJldHVybiAnU3VybmFtZSc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6U0VSSUFMX05VTUJFUjoKICAgICAgICAgICAgICAgIHJldHVybiAnU2VyaWFsIE51bWJlcic7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q09VTlRSWV9OQU1FOgogICAgICAgICAgICAgICAgcmV0dXJuICdDb3VudHJ5IE5hbWUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkxPQ0FMSVRZX05BTUU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0xvY2FsaXR5IE5hbWUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OlNUQVRFX09SX1BST1ZJTkNFX05BTUU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1N0YXRlIG9yIFByb3ZpbmNlIE5hbWUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OlNUUkVFVF9BRERSRVNTOgogICAgICAgICAgICAgICAgcmV0dXJuICdTdHJlZXQgQWRkcmVzcyc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6T1JHQU5JWkFUSU9OX05BTUU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ09yZ2FuaXphdGlvbiBOYW1lJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpPVV9OQU1FOgogICAgICAgICAgICAgICAgcmV0dXJuICdPcmdhbml6YXRpb24gVW5pdCBOYW1lJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpUSVRMRToKICAgICAgICAgICAgICAgIHJldHVybiAnVGl0bGUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkRFU0NSSVBUSU9OOgogICAgICAgICAgICAgICAgcmV0dXJuICdEZXNjcmlwdGlvbic7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6UE9TVEFMX0FERFJFU1M6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1Bvc3RhbCBBZGRyZXNzJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpQT1NUQUxfQ09ERToKICAgICAgICAgICAgICAgIHJldHVybiAnUG9zdGFsIENvZGUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkFVVEhPUklUWV9SRVZPQ0FUSU9OX0xJU1Q6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0F1dGhvcml0eSBSZXZvY2F0aW9uIExpc3QnOwoKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9TVUJKRUNUX0RJUkVDVE9SWV9BVFRSOgogICAgICAgICAgICAgICAgcmV0dXJuICdTdWJqZWN0IGRpcmVjdG9yeSBhdHRyaWJ1dGVzJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9TVUJKRUNUX0tFWV9JREVOVElGSUVSOgogICAgICAgICAgICAgICAgcmV0dXJuICdTdWJqZWN0IGtleSBpZGVudGlmaWVyJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9LRVlfVVNBR0U6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0tleSB1c2FnZSBjZXJ0aWZpY2F0ZSBleHRlbnNpb24nOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNFUlRfRVhUX1BSSVZBVEVfS0VZX1VTQUdFX1BFUklPRDoKICAgICAgICAgICAgICAgIHJldHVybiAnUHJpdmF0ZSBrZXkgdXNhZ2UnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNFUlRfRVhUX1NVQkpFQ1RfQUxUX05BTUU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1N1YmplY3QgYWx0ZXJuYXRpdmUgbmFtZSAoU0FOKSc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q0VSVF9FWFRfSVNTVUVSX0FMVF9OQU1FOgogICAgICAgICAgICAgICAgcmV0dXJuICdJc3N1ZXIgYWx0ZXJuYXRpdmUgbmFtZSc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q0VSVF9FWFRfQkFTSUNfQ09OU1RSQUlOVFM6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0Jhc2ljIGNvbnN0cmFpbnRzJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9DUkxfTlVNQkVSOgogICAgICAgICAgICAgICAgcmV0dXJuICdDUkwgbnVtYmVyJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9SRUFTT05fQ09ERToKICAgICAgICAgICAgICAgIHJldHVybiAnUmVhc29uIGNvZGUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNFUlRfRVhUX0lOVkFMSURJVFlfREFURToKICAgICAgICAgICAgICAgIHJldHVybiAnSW52YWxpZGl0eSBjb2RlJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9ERUxUQV9DUkxfSU5ESUNBVE9SOgogICAgICAgICAgICAgICAgcmV0dXJuICdEZWx0YSBDUkwgaW5kaWNhdG9yJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9JU1NVSU5HX0RJU1RfUE9JTlQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0lzc3VpbmcgZGlzdHJpYnV0aW9uIHBvaW50JzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9DRVJUX0lTU1VFUjoKICAgICAgICAgICAgICAgIHJldHVybiAnQ2VydGlmaWNhdGUgaXNzdWVyJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9OQU1FX0NPTlNUUkFJTlRTOgogICAgICAgICAgICAgICAgcmV0dXJuICdOYW1lIGNvbnN0cmFpbnRzJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9DUkxfRElTVFJJQlVUSU9OX1BPSU5UUzoKICAgICAgICAgICAgICAgIHJldHVybiAnQ1JMIGRpc3RyaWJ1dGlvbiBwb2ludHMnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNFUlRfRVhUX0NFUlRfUE9MSUNJRVM6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0NlcnRpZmljYXRlIHBvbGljaWVzICc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q0VSVF9FWFRfQVVUSE9SSVRZX0tFWV9JREVOVElGSUVSOgogICAgICAgICAgICAgICAgcmV0dXJuICdBdXRob3JpdHkga2V5IGlkZW50aWZpZXInOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNFUlRfRVhUX0VYVEVOREVEX0tFWV9VU0FHRToKICAgICAgICAgICAgICAgIHJldHVybiAnRXh0ZW5kZWQga2V5IHVzYWdlJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpBVVRIT1JJVFlfSU5GT1JNQVRJT05fQUNDRVNTOgogICAgICAgICAgICAgICAgcmV0dXJuICdDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgSW5mb3JtYXRpb24gQWNjZXNzIChBSUEpJzsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBpZiAoJGxvYWRGcm9tV2ViKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmxvYWRGcm9tV2ViKCRvaWRTdHJpbmcpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJG9pZFN0cmluZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkRnJvbVdlYigkb2lkU3RyaW5nKQogICAgewogICAgICAgICRjaCA9IGN1cmxfaW5pdCgiaHR0cDovL29pZC1pbmZvLmNvbS9nZXQveyRvaWRTdHJpbmd9Iik7CgogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hFQURFUiwgMCk7CgogICAgICAgICRjb250ZW50cyA9IGN1cmxfZXhlYygkY2gpOwogICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKCiAgICAgICAgLy8gVGhpcyBwYXR0ZXJuIG5lZWRzIHRvIGJlIHVwZGF0ZWQgYXMgc29vbiBhcyB0aGUgd2Vic2l0ZSBsYXlvdXQgb2Ygb2lkLWluZm8uY29tIGNoYW5nZXMKICAgICAgICBwcmVnX21hdGNoX2FsbCgnIzx0dD4oLispXChcZCtcKTwvdHQ+I3NpJywgJGNvbnRlbnRzLCAkb2lkTmFtZSk7CgogICAgICAgIGlmIChlbXB0eSgkb2lkTmFtZVsxXSkpIHsKICAgICAgICAgICAgcmV0dXJuICJ7JG9pZFN0cmluZ30gKHVua25vd24pIjsKICAgICAgICB9CgogICAgICAgICRvaWROYW1lID0gdWNmaXJzdChzdHJ0b2xvd2VyKHByZWdfcmVwbGFjZSgnLyhbQS1aXVthLXpdKS8nLCAnICQxJywgJG9pZE5hbWVbMV1bMF0pKSk7CiAgICAgICAgJG9pZE5hbWUgPSBzdHJfcmVwbGFjZSgnLScsICcgJywgJG9pZE5hbWUpOwoKICAgICAgICByZXR1cm4gInskb2lkTmFtZX0gKHskb2lkU3RyaW5nfSkiOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Parsable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CgovKioKICogVGhlIFBhcnNhYmxlIGludGVyZmFjZSBkZXNjcmliZXMgY2xhc3NlcyB0aGF0IGNhbiBiZSBwYXJzZWQgZnJvbSB0aGVpciBiaW5hcnkgREVSIHJlcHJlc2VudGF0aW9uLgogKi8KaW50ZXJmYWNlIFBhcnNhYmxlCnsKICAgIC8qKgogICAgICogUGFyc2UgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBmcm9tIGl0cyBiaW5hcnkgREVSIGVuY29kZWQgcmVwcmVzZW50YXRpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYmluYXJ5RGF0YQogICAgICogQHBhcmFtIGludCAkb2Zmc2V0SW5kZXggdGhlIG9mZnNldCBhdCB3aGljaCBwYXJzaW5nIG9mIHRoZSAkYmluYXJ5RGF0YSBpcyBzdGFydGVkLiBUaGlzIHBhcmFtZXRlciBpbGwgYmUgbW9kaWZpZWQKICAgICAqICAgICAgICAgICAgdG8gY29udGFpbiB0aGUgb2Zmc2V0IGluZGV4IG9mIHRoZSBuZXh0IG9iamVjdCBhZnRlciB0aGlzIG9iamVjdCBoYXMgYmVlbiBwYXJzZWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFBhcnNlckV4Y2VwdGlvbiBpZiB0aGUgZ2l2ZW4gYmluYXJ5IGRhdGEgaXMgZWl0aGVyIGludmFsaWQgb3Igbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gbnVsbCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/TemplateParser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBFeGNlcHRpb247CnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKCmNsYXNzIFRlbXBsYXRlUGFyc2VyCnsKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkZGF0YQogICAgICogQHBhcmFtIGFycmF5ICR0ZW1wbGF0ZQogICAgICogQHJldHVybiBcRkdcQVNOMVxBU05PYmplY3R8U2VxdWVuY2UKICAgICAqIEB0aHJvd3MgUGFyc2VyRXhjZXB0aW9uIGlmIHRoZXJlIHdhcyBhbiBpc3N1ZSBwYXJzaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJzZUJhc2U2NCgkZGF0YSwgYXJyYXkgJHRlbXBsYXRlKQogICAgewogICAgICAgIC8vIFRPRE8gdGVzdCB3aXRoIGludmFsaWQgZGF0YQogICAgICAgIHJldHVybiAkdGhpcy0+cGFyc2VCaW5hcnkoYmFzZTY0X2RlY29kZSgkZGF0YSksICR0ZW1wbGF0ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiaW5hcnkKICAgICAqIEBwYXJhbSBhcnJheSAkdGVtcGxhdGUKICAgICAqIEByZXR1cm4gXEZHXEFTTjFcQVNOT2JqZWN0fFNlcXVlbmNlCiAgICAgKiBAdGhyb3dzIFBhcnNlckV4Y2VwdGlvbiBpZiB0aGVyZSB3YXMgYW4gaXNzdWUgcGFyc2luZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2VCaW5hcnkoJGJpbmFyeSwgYXJyYXkgJHRlbXBsYXRlKQogICAgewogICAgICAgICRwYXJzZWRPYmplY3QgPSBBU05PYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeSk7CgogICAgICAgIGZvcmVhY2ggKCR0ZW1wbGF0ZSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAkdGhpcy0+dmFsaWRhdGUoJHBhcnNlZE9iamVjdCwgJGtleSwgJHZhbHVlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gdmFsaWRhdGUoQVNOT2JqZWN0ICRvYmplY3QsICRrZXksICR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0VHlwZUlkKCRrZXksICRvYmplY3QpOwoKICAgICAgICAgICAgLyogQHZhciBDb25zdHJ1Y3QgJG9iamVjdCAqLwogICAgICAgICAgICBmb3JlYWNoICgkdmFsdWUgYXMgJGtleSA9PiAkY2hpbGQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT52YWxpZGF0ZSgkb2JqZWN0LT5jdXJyZW50KCksICRrZXksICRjaGlsZCk7CiAgICAgICAgICAgICAgICAkb2JqZWN0LT5uZXh0KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0VHlwZUlkKCR2YWx1ZSwgJG9iamVjdCk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYXNzZXJ0VHlwZUlkKCRleHBlY3RlZFR5cGVJZCwgQVNOT2JqZWN0ICRvYmplY3QpCiAgICB7CiAgICAgICAgJGFjdHVhbFR5cGUgPSAkb2JqZWN0LT5nZXRUeXBlKCk7CiAgICAgICAgaWYgKCRleHBlY3RlZFR5cGVJZCAhPSAkYWN0dWFsVHlwZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJFeHBlY3RlZCB0eXBlICgkZXhwZWN0ZWRUeXBlSWQpIGRvZXMgbm90IG1hdGNoIGFjdHVhbCB0eXBlICgkYWN0dWFsVHlwZSIpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/BitString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxQYXJzYWJsZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIEJpdFN0cmluZyBleHRlbmRzIE9jdGV0U3RyaW5nIGltcGxlbWVudHMgUGFyc2FibGUKewogICAgcHJpdmF0ZSAkbnJPZlVudXNlZEJpdHM7CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbmV3IEFTTi4xIEJpdFN0cmluZyBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xpbnQgJHZhbHVlIEVpdGhlciB0aGUgaGV4YWRlY2ltYWwgdmFsdWUgYXMgYSBzdHJpbmcgKHNwYWNlcyBhcmUgYWxsb3dlZCAtIGxlYWRpbmcgMHggaXMgb3B0aW9uYWwpIG9yIGEgbnVtZXJpYyB2YWx1ZQogICAgICogQHBhcmFtIGludCAkbnJPZlVudXNlZEJpdHMgdGhlIG51bWJlciBvZiB1bnVzZWQgYml0cyBpbiB0aGUgbGFzdCBvY3RldCBbb3B0aW9uYWxdLgogICAgICoKICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uIGlmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vIHBvc2l0aXZlIG51bWVyaWMgdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR2YWx1ZSwgJG5yT2ZVbnVzZWRCaXRzID0gMCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCR2YWx1ZSk7CgogICAgICAgIGlmICghaXNfbnVtZXJpYygkbnJPZlVudXNlZEJpdHMpIHx8ICRuck9mVW51c2VkQml0cyA8IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignQml0U3RyaW5nOiBzZWNvbmQgcGFyYW1ldGVyIG5lZWRzIHRvIGJlIGEgcG9zaXRpdmUgbnVtYmVyIChvciB6ZXJvKSEnKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5uck9mVW51c2VkQml0cyA9ICRuck9mVW51c2VkQml0czsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OkJJVFNUUklORzsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgLy8gYWRkIG9uZSB0byB0aGUgbGVuZ3RoIGZvciB0aGUgZmlyc3Qgb2N0ZXQgd2hpY2ggZW5jb2RlcyB0aGUgbnVtYmVyIG9mIHVudXNlZCBiaXRzIGluIHRoZSBsYXN0IG9jdGV0CiAgICAgICAgcmV0dXJuIHBhcmVudDo6Y2FsY3VsYXRlQ29udGVudExlbmd0aCgpICsgMTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RW5jb2RlZFZhbHVlKCkKICAgIHsKICAgICAgICAvLyB0aGUgZmlyc3Qgb2N0ZXQgZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIHVudXNlZCBiaXRzCiAgICAgICAgJG5yT2ZVbnVzZWRCaXRzT2N0ZXQgPSBjaHIoJHRoaXMtPm5yT2ZVbnVzZWRCaXRzKTsKICAgICAgICAkYWN0dWFsQ29udGVudCA9IHBhcmVudDo6Z2V0RW5jb2RlZFZhbHVlKCk7CgogICAgICAgIHJldHVybiAkbnJPZlVudXNlZEJpdHNPY3RldC4kYWN0dWFsQ29udGVudDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TnVtYmVyT2ZVbnVzZWRCaXRzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5yT2ZVbnVzZWRCaXRzOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBJZGVudGlmaWVyOjpCSVRTVFJJTkcsICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4LCAyKTsKCiAgICAgICAgJG5yT2ZVbnVzZWRCaXRzID0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0pOwogICAgICAgICR2YWx1ZSA9IHN1YnN0cigkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4ICsgMSwgJGNvbnRlbnRMZW5ndGggLSAxKTsKCiAgICAgICAgaWYgKCRuck9mVW51c2VkQml0cyA+IDcgfHwgLy8gbm8gbGVzcyB0aGFuIDEgdXNlZCwgb3RoZXJ3aXNlIG5vbi1taW5pbWFsCiAgICAgICAgICAgICgkY29udGVudExlbmd0aCAtIDEpID09IDEgJiYgJG5yT2ZVbnVzZWRCaXRzID4gMCB8fCAvLyBjb250ZW50IGxlbmd0aCBvbmx5IDEsIG5vCiAgICAgICAgICAgIChvcmQoJHZhbHVlW3N0cmxlbigkdmFsdWUpLTFdKSYoKDE8PCRuck9mVW51c2VkQml0cyktMSkpICE9IDAgLy8gdW51c2VkIGJpdHMgc2V0CiAgICAgICAgKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oIkNhbiBub3QgcGFyc2UgYml0IHN0cmluZyB3aXRoIGludmFsaWQgcGFkZGluZyIsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICAkb2Zmc2V0SW5kZXggKz0gJGNvbnRlbnRMZW5ndGg7CgogICAgICAgICRwYXJzZWRPYmplY3QgPSBuZXcgc2VsZihiaW4yaGV4KCR2YWx1ZSksICRuck9mVW51c2VkQml0cyk7CiAgICAgICAgJHBhcnNlZE9iamVjdC0+c2V0Q29udGVudExlbmd0aCgkY29udGVudExlbmd0aCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/BMPString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIEJNUFN0cmluZyBleHRlbmRzIEFic3RyYWN0U3RyaW5nCnsKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIG5ldyBBU04uMSBCTVAgU3RyaW5nLgogICAgICoKICAgICAqIEJNUFN0cmluZyBpcyBhIHN1YnR5cGUgb2YgVW5pdmVyc2FsU3RyaW5nIHRoYXQgaGFzIGl0cyBvd24KICAgICAqIHVuaXF1ZSB0YWcgYW5kIGNvbnRhaW5zIG9ubHkgdGhlIGNoYXJhY3RlcnMgaW4gdGhlCiAgICAgKiBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKHRob3NlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZpcnN0CiAgICAgKiA2NEstMiBjZWxscywgbGVzcyBjZWxscyB3aG9zZSBlbmNvZGluZyBpcyB1c2VkIHRvIGFkZHJlc3MKICAgICAqIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgQmFzaWMgTXVsdGlsaW5ndWFsIFBsYW5lKSBvZiBJU08vSUVDIDEwNjQ2LTEuCiAgICAgKgogICAgICogVE9ETyBUaGUgZW5jb2RhYmxlIGNoYXJhY3RlcnMgb2YgdGhpcyB0eXBlIGFyZSBub3QgeWV0IGNoZWNrZWQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc3RyaW5nKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZSA9ICRzdHJpbmc7CiAgICAgICAgJHRoaXMtPmFsbG93QWxsKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpCTVBfU1RSSU5HOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/Boolean.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBU05PYmplY3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwoKY2xhc3MgQm9vbGVhbiBleHRlbmRzIEFTTk9iamVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIHByaXZhdGUgJHZhbHVlOwoKICAgIC8qKgogICAgICogQHBhcmFtIGJvb2wgJHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdmFsdWUpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6Qk9PTEVBTjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT52YWx1ZSA9PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gY2hyKDB4MDApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBjaHIoMHhGRik7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50KCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnZhbHVlID09IHRydWUpIHsKICAgICAgICAgICAgcmV0dXJuICdUUlVFJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gJ0ZBTFNFJzsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tQmluYXJ5KCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCA9IDApCiAgICB7CiAgICAgICAgc2VsZjo6cGFyc2VJZGVudGlmaWVyKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0sIElkZW50aWZpZXI6OkJPT0xFQU4sICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKCiAgICAgICAgaWYgKCRjb250ZW50TGVuZ3RoICE9IDEpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbigiQW4gQVNOLjEgQm9vbGVhbiBzaG91bGQgbm90IGhhdmUgYSBsZW5ndGggb3RoZXIgdGhhbiBvbmUuIEV4dHJhY3RlZCBsZW5ndGggd2FzIHskY29udGVudExlbmd0aH0iLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSk7CiAgICAgICAgJGJvb2xlYW5WYWx1ZSA9ICR2YWx1ZSA9PSAweEZGID8gdHJ1ZSA6IGZhbHNlOwoKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHNlbGYoJGJvb2xlYW5WYWx1ZSk7CiAgICAgICAgJHBhcnNlZE9iamVjdC0+c2V0Q29udGVudExlbmd0aCgkY29udGVudExlbmd0aCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/CharacterString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIENoYXJhY3RlclN0cmluZyBleHRlbmRzIEFic3RyYWN0U3RyaW5nCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc3RyaW5nKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZSA9ICRzdHJpbmc7CiAgICAgICAgJHRoaXMtPmFsbG93QWxsKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpDSEFSQUNURVJfU1RSSU5HOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/Enumerated.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwoKY2xhc3MgRW51bWVyYXRlZCBleHRlbmRzIEludGVnZXIKewogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpFTlVNRVJBVEVEOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/GeneralizedTime.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFRpbWU7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwoKLyoqCiAqIFRoaXMgQVNOLjEgdW5pdmVyc2FsIHR5cGUgY29udGFpbnMgZGF0ZSBhbmQgdGltZSBpbmZvcm1hdGlvbiBhY2NvcmRpbmcgdG8gSVNPIDg2MDEuCiAqCiAqIFRoZSB0eXBlIGNvbnNpc3RzIG9mIHZhbHVlcyByZXByZXNlbnRpbmc6CiAqIGEpIGEgY2FsZW5kYXIgZGF0ZSwgYXMgZGVmaW5lZCBpbiBJU08gODYwMTsgYW5kCiAqIGIpIGEgdGltZSBvZiBkYXksIHRvIGFueSBvZiB0aGUgcHJlY2lzaW9ucyBkZWZpbmVkIGluIElTTyA4NjAxLCBleGNlcHQgZm9yIHRoZSBob3VycyB2YWx1ZSAyNCB3aGljaCBzaGFsbCBub3QgYmUgdXNlZDsgYW5kCiAqIGMpIHRoZSBsb2NhbCB0aW1lIGRpZmZlcmVudGlhbCBmYWN0b3IgYXMgZGVmaW5lZCBpbiBJU08gODYwMS4KICoKICogRGVjb2Rpbmcgb2YgdGhpcyB0eXBlIHdpbGwgYWNjZXB0IHRoZSBCYXNpYyBFbmNvZGluZyBSdWxlcyAoQkVSKQogKiBUaGUgZW5jb2Rpbmcgd2lsbCBjb21wbHkgd2l0aCB0aGUgRGlzdGluZ3Vpc2hlZCBFbmNvZGluZyBSdWxlcyAoREVSKS4KICovCmNsYXNzIEdlbmVyYWxpemVkVGltZSBleHRlbmRzIEFic3RyYWN0VGltZSBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIHByaXZhdGUgJG1pY3Jvc2Vjb25kczsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGRhdGVUaW1lID0gbnVsbCwgJGRhdGVUaW1lWm9uZSA9ICdVVEMnKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGRhdGVUaW1lLCAkZGF0ZVRpbWVab25lKTsKICAgICAgICAkdGhpcy0+bWljcm9zZWNvbmRzID0gJHRoaXMtPnZhbHVlLT5mb3JtYXQoJ3UnKTsKICAgICAgICBpZiAoJHRoaXMtPmNvbnRhaW5zRnJhY3Rpb25hbFNlY29uZHNFbGVtZW50KCkpIHsKICAgICAgICAgICAgLy8gREVSIHJlcXVpcmVzIHVzIHRvIHJlbW92ZSB0cmFpbGluZyB6ZXJvcwogICAgICAgICAgICAkdGhpcy0+bWljcm9zZWNvbmRzID0gcHJlZ19yZXBsYWNlKCcvKFsxLTldKykwKyQvJywgJyQxJywgJHRoaXMtPm1pY3Jvc2Vjb25kcyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6R0VORVJBTElaRURfVElNRTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgJGNvbnRlbnRTaXplID0gMTU7IC8vIFlZWVlNTURESEhtbVNTWgoKICAgICAgICBpZiAoJHRoaXMtPmNvbnRhaW5zRnJhY3Rpb25hbFNlY29uZHNFbGVtZW50KCkpIHsKICAgICAgICAgICAgJGNvbnRlbnRTaXplICs9IDEgKyBzdHJsZW4oJHRoaXMtPm1pY3Jvc2Vjb25kcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbnRlbnRTaXplOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb250YWluc0ZyYWN0aW9uYWxTZWNvbmRzRWxlbWVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuIGludHZhbCgkdGhpcy0+bWljcm9zZWNvbmRzKSA+IDA7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgJGVuY29kZWRDb250ZW50ID0gJHRoaXMtPnZhbHVlLT5mb3JtYXQoJ1ltZEhpcycpOwogICAgICAgIGlmICgkdGhpcy0+Y29udGFpbnNGcmFjdGlvbmFsU2Vjb25kc0VsZW1lbnQoKSkgewogICAgICAgICAgICAkZW5jb2RlZENvbnRlbnQgLj0gIi57JHRoaXMtPm1pY3Jvc2Vjb25kc30iOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRlbmNvZGVkQ29udGVudC4nWic7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+Y29udGFpbnNGcmFjdGlvbmFsU2Vjb25kc0VsZW1lbnQoKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlLT5mb3JtYXQoIlktbS1kXHRIOmk6cy51UCIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWUtPmZvcm1hdCgiWS1tLWRcdEg6aTpzUCIpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICBzZWxmOjpwYXJzZUlkZW50aWZpZXIoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSwgSWRlbnRpZmllcjo6R0VORVJBTElaRURfVElNRSwgJG9mZnNldEluZGV4KyspOwogICAgICAgICRsZW5ndGhPZk1pbmltdW1UaW1lU3RyaW5nID0gMTQ7IC8vIFlZWVlNTURESEhtbVNTCiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCwgJGxlbmd0aE9mTWluaW11bVRpbWVTdHJpbmcpOwogICAgICAgICRtYXhpbXVtQnl0ZXNUb1JlYWQgPSAkY29udGVudExlbmd0aDsKCiAgICAgICAgJGZvcm1hdCA9ICdZbWRHaXMnOwogICAgICAgICRjb250ZW50ID0gc3Vic3RyKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgsICRjb250ZW50TGVuZ3RoKTsKICAgICAgICAkZGF0ZVRpbWVTdHJpbmcgPSBzdWJzdHIoJGNvbnRlbnQsIDAsICRsZW5ndGhPZk1pbmltdW1UaW1lU3RyaW5nKTsKICAgICAgICAkb2Zmc2V0SW5kZXggKz0gJGxlbmd0aE9mTWluaW11bVRpbWVTdHJpbmc7CiAgICAgICAgJG1heGltdW1CeXRlc1RvUmVhZCAtPSAkbGVuZ3RoT2ZNaW5pbXVtVGltZVN0cmluZzsKCiAgICAgICAgaWYgKCRjb250ZW50TGVuZ3RoID09ICRsZW5ndGhPZk1pbmltdW1UaW1lU3RyaW5nKSB7CiAgICAgICAgICAgICRsb2NhbFRpbWVab25lID0gbmV3IFxEYXRlVGltZVpvbmUoZGF0ZV9kZWZhdWx0X3RpbWV6b25lX2dldCgpKTsKICAgICAgICAgICAgJGRhdGVUaW1lID0gXERhdGVUaW1lOjpjcmVhdGVGcm9tRm9ybWF0KCRmb3JtYXQsICRkYXRlVGltZVN0cmluZywgJGxvY2FsVGltZVpvbmUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICgkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdID09ICcuJykgewogICAgICAgICAgICAgICAgJG1heGltdW1CeXRlc1RvUmVhZC0tOyAvLyBhY2NvdW50IGZvciB0aGUgJy4nCiAgICAgICAgICAgICAgICAkbnJPZkZyYWN0aW9uYWxTZWNvbmRFbGVtZW50cyA9IDE7IC8vIGFjY291bnQgZm9yIHRoZSAnLicKCiAgICAgICAgICAgICAgICB3aGlsZSAoJG1heGltdW1CeXRlc1RvUmVhZCA+IDAKICAgICAgICAgICAgICAgICAgICAgICYmICRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCArICRuck9mRnJhY3Rpb25hbFNlY29uZEVsZW1lbnRzXSAhPSAnKycKICAgICAgICAgICAgICAgICAgICAgICYmICRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCArICRuck9mRnJhY3Rpb25hbFNlY29uZEVsZW1lbnRzXSAhPSAnLScKICAgICAgICAgICAgICAgICAgICAgICYmICRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCArICRuck9mRnJhY3Rpb25hbFNlY29uZEVsZW1lbnRzXSAhPSAnWicpIHsKICAgICAgICAgICAgICAgICAgICAkbnJPZkZyYWN0aW9uYWxTZWNvbmRFbGVtZW50cysrOwogICAgICAgICAgICAgICAgICAgICRtYXhpbXVtQnl0ZXNUb1JlYWQtLTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZGF0ZVRpbWVTdHJpbmcgLj0gc3Vic3RyKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgsICRuck9mRnJhY3Rpb25hbFNlY29uZEVsZW1lbnRzKTsKICAgICAgICAgICAgICAgICRvZmZzZXRJbmRleCArPSAkbnJPZkZyYWN0aW9uYWxTZWNvbmRFbGVtZW50czsKICAgICAgICAgICAgICAgICRmb3JtYXQgLj0gJy51JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGRhdGVUaW1lID0gXERhdGVUaW1lOjpjcmVhdGVGcm9tRm9ybWF0KCRmb3JtYXQsICRkYXRlVGltZVN0cmluZywgbmV3IFxEYXRlVGltZVpvbmUoJ1VUQycpKTsKCiAgICAgICAgICAgIGlmICgkbWF4aW11bUJ5dGVzVG9SZWFkID4gMCkgewogICAgICAgICAgICAgICAgaWYgKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0gPT0gJysnCiAgICAgICAgICAgICAgICB8fCAkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdID09ICctJykgewogICAgICAgICAgICAgICAgICAgICRkYXRlVGltZSA9IHN0YXRpYzo6ZXh0cmFjdFRpbWVab25lRGF0YSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4LCAkZGF0ZVRpbWUpOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSAhPSAnWicpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdJbnZhbGlkIElTTyA4NjAxIFRpbWUgU3RyaW5nJywgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHBhcnNlZE9iamVjdCA9IG5ldyBzZWxmKCRkYXRlVGltZSk7CiAgICAgICAgJHBhcnNlZE9iamVjdC0+c2V0Q29udGVudExlbmd0aCgkY29udGVudExlbmd0aCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/GeneralString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIEdlbmVyYWxTdHJpbmcgZXh0ZW5kcyBBYnN0cmFjdFN0cmluZwp7CiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBuZXcgQVNOLjEgR2VuZXJhbFN0cmluZy4KICAgICAqIFRPRE8gVGhlIGVuY29kYWJsZSBjaGFyYWN0ZXJzIG9mIHRoaXMgdHlwZSBhcmUgbm90IHlldCBjaGVja2VkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHN0cmluZykKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkc3RyaW5nOwogICAgICAgICR0aGlzLT5hbGxvd0FsbCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6R0VORVJBTF9TVFJJTkc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/GraphicString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIEdyYXBoaWNTdHJpbmcgZXh0ZW5kcyBBYnN0cmFjdFN0cmluZwp7CiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBuZXcgQVNOLjEgR3JhcGhpYyBTdHJpbmcuCiAgICAgKiBUT0RPIFRoZSBlbmNvZGFibGUgY2hhcmFjdGVycyBvZiB0aGlzIHR5cGUgYXJlIG5vdCB5ZXQgY2hlY2tlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzdHJpbmcpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHN0cmluZzsKICAgICAgICAkdGhpcy0+YWxsb3dBbGwoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OkdSQVBISUNfU1RSSU5HOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/IA5String.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCi8qKgogKiBUaGUgSW50ZXJuYXRpb25hbCBBbHBoYWJldCBOby41IChJQTUpIHJlZmVyZW5jZXMgdGhlIGVuY29kaW5nIG9mIHRoZSBBU0NJSSBjaGFyYWN0ZXJzLgogKgogKiBFYWNoIGNoYXJhY3RlciBpbiB0aGUgZGF0YSBpcyBlbmNvZGVkIGFzIDEgYnl0ZS4KICovCmNsYXNzIElBNVN0cmluZyBleHRlbmRzIEFic3RyYWN0U3RyaW5nCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc3RyaW5nKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJHN0cmluZyk7CiAgICAgICAgZm9yICgkaSA9IDE7ICRpIDwgMTI4OyAkaSsrKSB7CiAgICAgICAgICAgICR0aGlzLT5hbGxvd0NoYXJhY3RlcihjaHIoJGkpKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpJQTVfU1RSSU5HOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/Integer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRXhjZXB0aW9uOwp1c2UgRkdcVXRpbGl0eVxCaWdJbnRlZ2VyOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxBU05PYmplY3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwoKY2xhc3MgSW50ZWdlciBleHRlbmRzIEFTTk9iamVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIC8qKiBAdmFyIGludCAqLwogICAgcHJpdmF0ZSAkdmFsdWU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICR2YWx1ZQogICAgICoKICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uIGlmIHRoZSB2YWx1ZSBpcyBub3QgbnVtZXJpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlKQogICAgewogICAgICAgIGlmIChpc19udW1lcmljKCR2YWx1ZSkgPT0gZmFsc2UpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiSW52YWxpZCBWQUxVRSBbeyR2YWx1ZX1dIGZvciBBU04xX0lOVEVHRVIiKTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6SU5URUdFUjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIHN0cmxlbigkdGhpcy0+Z2V0RW5jb2RlZFZhbHVlKCkpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNvZGVkVmFsdWUoKQogICAgewogICAgICAgICR2YWx1ZSA9IEJpZ0ludGVnZXI6OmNyZWF0ZSgkdGhpcy0+dmFsdWUsIDEwKTsKICAgICAgICAkbmVnYXRpdmUgPSAkdmFsdWUtPmNvbXBhcmUoMCkgPCAwOwogICAgICAgIGlmICgkbmVnYXRpdmUpIHsKICAgICAgICAgICAgICR2YWx1ZSA9ICR2YWx1ZS0+YWJzb2x1dGVWYWx1ZSgpOwogICAgICAgICAgICAgJGxpbWl0ID0gMHg4MDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgJGxpbWl0ID0gMHg3ZjsKICAgICAgICB9CgogICAgICAgICRtb2QgPSAweGZmKzE7CiAgICAgICAgJHZhbHVlcyA9IFtdOwogICAgICAgIHdoaWxlKCR2YWx1ZS0+Y29tcGFyZSgkbGltaXQpID4gMCkgewogICAgICAgICAgICAkdmFsdWVzW10gPSAkdmFsdWUtPm1vZHVsdXMoJG1vZCktPnRvSW50ZWdlcigpOwogICAgICAgICAgICAkdmFsdWUgPSAkdmFsdWUtPnNoaWZ0UmlnaHQoOCk7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWVzW10gPSAkdmFsdWUtPm1vZHVsdXMoJG1vZCktPnRvSW50ZWdlcigpOwogICAgICAgICRudW1WYWx1ZXMgPSBjb3VudCgkdmFsdWVzKTsKCiAgICAgICAgaWYgKCRuZWdhdGl2ZSkgewogICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbnVtVmFsdWVzOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAkdmFsdWVzWyRpXSA9IDB4ZmYgLSAkdmFsdWVzWyRpXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbnVtVmFsdWVzOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAkdmFsdWVzWyRpXSArPSAxOwogICAgICAgICAgICAgICAgaWYgKCR2YWx1ZXNbJGldIDw9IDB4ZmYpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFzc2VydCgkaSAhPSAkbnVtVmFsdWVzIC0gMSk7CiAgICAgICAgICAgICAgICAkdmFsdWVzWyRpXSA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCR2YWx1ZXNbJG51bVZhbHVlcyAtIDFdID09IDB4N2YpIHsKICAgICAgICAgICAgICAgICR2YWx1ZXNbXSA9IDB4ZmY7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X3JldmVyc2UoJHZhbHVlcyk7CiAgICAgICAgJHIgPSBwYWNrKCJDKiIsIC4uLiR2YWx1ZXMpOwogICAgICAgIHJldHVybiAkcjsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBlbnN1cmVNaW5pbWFsRW5jb2RpbmcoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCkKICAgIHsKICAgICAgICAvLyBBbGwgdGhlIGZpcnN0IG5pbmUgYml0cyBjYW5ub3QgZXF1YWwgMCBvciAxLCB3aGljaCB3b3VsZAogICAgICAgIC8vIGJlIG5vbi1taW5pbWFsIGVuY29kaW5nIGZvciBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgaW50ZWdlcnMgcmVzcGVjdGl2ZWx5CiAgICAgICAgaWYgKChvcmQoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSkgPT0gMHgwMCAmJiAob3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsxXSkgJiAweDgwKSA9PSAwKSB8fAogICAgICAgICAgICAob3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0pID09IDB4ZmYgJiYgKG9yZCgkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXgrMV0pICYgMHg4MCkgPT0gMHg4MCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbigiSW50ZWdlciBub3QgbWluaW1hbGx5IGVuY29kZWQiLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHN0YXRpYygwKTsKICAgICAgICBzZWxmOjpwYXJzZUlkZW50aWZpZXIoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSwgJHBhcnNlZE9iamVjdC0+Z2V0VHlwZSgpLCAkb2Zmc2V0SW5kZXgrKyk7CiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCwgMSk7CgogICAgICAgIGlmICgkY29udGVudExlbmd0aCA+IDEpIHsKICAgICAgICAgICAgc2VsZjo6ZW5zdXJlTWluaW1hbEVuY29kaW5nKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgIH0KICAgICAgICAkaXNOZWdhdGl2ZSA9IChvcmQoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSkgJiAweDgwKSAhPSAweDAwOwogICAgICAgICRudW1iZXIgPSBCaWdJbnRlZ2VyOjpjcmVhdGUob3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSkgJiAweDdGKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGNvbnRlbnRMZW5ndGggLSAxOyAkaSsrKSB7CiAgICAgICAgICAgICRudW1iZXIgPSAkbnVtYmVyLT5tdWx0aXBseSgweDEwMCktPmFkZChvcmQoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4KytdKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGlzTmVnYXRpdmUpIHsKICAgICAgICAgICAgJG51bWJlciA9ICRudW1iZXItPnN1YnRyYWN0KEJpZ0ludGVnZXI6OmNyZWF0ZSgyKS0+dG9Qb3dlcig4ICogJGNvbnRlbnRMZW5ndGggLSAxKSk7CiAgICAgICAgfQoKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHN0YXRpYygoc3RyaW5nKSRudW1iZXIpOwogICAgICAgICRwYXJzZWRPYmplY3QtPnNldENvbnRlbnRMZW5ndGgoJGNvbnRlbnRMZW5ndGgpOwoKICAgICAgICByZXR1cm4gJHBhcnNlZE9iamVjdDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/NullObject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBU05PYmplY3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwoKY2xhc3MgTnVsbE9iamVjdCBleHRlbmRzIEFTTk9iamVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6TlVMTDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKQogICAgewogICAgICAgIHJldHVybiAnTlVMTCc7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tQmluYXJ5KCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCA9IDApCiAgICB7CiAgICAgICAgc2VsZjo6cGFyc2VJZGVudGlmaWVyKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0sIElkZW50aWZpZXI6Ok5VTEwsICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKCiAgICAgICAgaWYgKCRjb250ZW50TGVuZ3RoICE9IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbigiQW4gQVNOLjEgTnVsbCBzaG91bGQgbm90IGhhdmUgYSBsZW5ndGggb3RoZXIgdGhhbiB6ZXJvLiBFeHRyYWN0ZWQgbGVuZ3RoIHdhcyB7JGNvbnRlbnRMZW5ndGh9IiwgJG9mZnNldEluZGV4KTsKICAgICAgICB9CgogICAgICAgICRwYXJzZWRPYmplY3QgPSBuZXcgc2VsZigpOwogICAgICAgICRwYXJzZWRPYmplY3QtPnNldENvbnRlbnRMZW5ndGgoMCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/NumericString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIE51bWVyaWNTdHJpbmcgZXh0ZW5kcyBBYnN0cmFjdFN0cmluZwp7CiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBuZXcgQVNOLjEgTnVtZXJpY1N0cmluZy4KICAgICAqCiAgICAgKiBUaGUgZm9sbG93aW5nIGNoYXJhY3RlcnMgYXJlIHBlcm1pdHRlZDoKICAgICAqIERpZ2l0cyAgICAgICAgICAgICAgICAwLDEsIC4uLiA5CiAgICAgKiBTUEFDRSAgICAgICAgICAgICAgICAgKHNwYWNlKQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHN0cmluZykKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkc3RyaW5nOwogICAgICAgICR0aGlzLT5hbGxvd051bWJlcnMoKTsKICAgICAgICAkdGhpcy0+YWxsb3dTcGFjZXMoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6Ok5VTUVSSUNfU1RSSU5HOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/ObjectDescriptor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwoKY2xhc3MgT2JqZWN0RGVzY3JpcHRvciBleHRlbmRzIEdyYXBoaWNTdHJpbmcKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRvYmplY3REZXNjcmlwdGlvbikKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRvYmplY3REZXNjcmlwdGlvbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpPQkpFQ1RfREVTQ1JJUFRPUjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/ObjectIdentifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxCYXNlMTI4Owp1c2UgRkdcQVNOMVxPSUQ7CnVzZSBGR1xBU04xXEFTTk9iamVjdDsKdXNlIEZHXEFTTjFcUGFyc2FibGU7CnVzZSBGR1xBU04xXElkZW50aWZpZXI7CnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CgpjbGFzcyBPYmplY3RJZGVudGlmaWVyIGV4dGVuZHMgQVNOT2JqZWN0IGltcGxlbWVudHMgUGFyc2FibGUKewogICAgcHJvdGVjdGVkICRzdWJJZGVudGlmaWVyczsKICAgIHByb3RlY3RlZCAkdmFsdWU7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR2YWx1ZSkKICAgIHsKICAgICAgICAkdGhpcy0+c3ViSWRlbnRpZmllcnMgPSBleHBsb2RlKCcuJywgJHZhbHVlKTsKICAgICAgICAkbnJPZlN1YklkZW50aWZpZXJzID0gY291bnQoJHRoaXMtPnN1YklkZW50aWZpZXJzKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJG5yT2ZTdWJJZGVudGlmaWVyczsgJGkrKykgewogICAgICAgICAgICBpZiAoaXNfbnVtZXJpYygkdGhpcy0+c3ViSWRlbnRpZmllcnNbJGldKSkgewogICAgICAgICAgICAgICAgLy8gZW5mb3JjZSB0aGUgaW50ZWdlciB0eXBlCiAgICAgICAgICAgICAgICAkdGhpcy0+c3ViSWRlbnRpZmllcnNbJGldID0gaW50dmFsKCR0aGlzLT5zdWJJZGVudGlmaWVyc1skaV0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiW3skdmFsdWV9XSBpcyBubyB2YWxpZCBvYmplY3QgaWRlbnRpZmllciAoc3ViIGlkZW50aWZpZXIgIi4oJGkgKyAxKS4nIGlzIG5vdCBudW1lcmljKSEnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gTWVyZ2UgdGhlIGZpcnN0IHRvIGFyY3Mgb2YgdGhlIE9JRCByZWdpc3RyYXRpb24gdHJlZSAocGVyIEFTTiBkZWZpbml0aW9uISkKICAgICAgICBpZiAoJG5yT2ZTdWJJZGVudGlmaWVycyA+PSAyKSB7CiAgICAgICAgICAgICR0aGlzLT5zdWJJZGVudGlmaWVyc1sxXSA9ICgkdGhpcy0+c3ViSWRlbnRpZmllcnNbMF0gKiA0MCkgKyAkdGhpcy0+c3ViSWRlbnRpZmllcnNbMV07CiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5zdWJJZGVudGlmaWVyc1swXSk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpPQkpFQ1RfSURFTlRJRklFUjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgJGxlbmd0aCA9IDA7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnN1YklkZW50aWZpZXJzIGFzICRzdWJJZGVudGlmaWVyKSB7CiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICRzdWJJZGVudGlmaWVyID0gJHN1YklkZW50aWZpZXIgPj4gNzsKICAgICAgICAgICAgICAgICRsZW5ndGgrKzsKICAgICAgICAgICAgfSB3aGlsZSAoJHN1YklkZW50aWZpZXIgPiAwKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbGVuZ3RoOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNvZGVkVmFsdWUoKQogICAgewogICAgICAgICRlbmNvZGVkVmFsdWUgPSAnJzsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+c3ViSWRlbnRpZmllcnMgYXMgJHN1YklkZW50aWZpZXIpIHsKICAgICAgICAgICAgJGVuY29kZWRWYWx1ZSAuPSBCYXNlMTI4OjplbmNvZGUoJHN1YklkZW50aWZpZXIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRlbmNvZGVkVmFsdWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiBPSUQ6OmdldE5hbWUoJHRoaXMtPnZhbHVlKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICBzZWxmOjpwYXJzZUlkZW50aWZpZXIoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSwgSWRlbnRpZmllcjo6T0JKRUNUX0lERU5USUZJRVIsICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4LCAxKTsKCiAgICAgICAgJGZpcnN0T2N0ZXQgPSBvcmQoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4KytdKTsKICAgICAgICAkb2lkU3RyaW5nID0gZmxvb3IoJGZpcnN0T2N0ZXQgLyA0MCkuJy4nLigkZmlyc3RPY3RldCAlIDQwKTsKICAgICAgICAkb2lkU3RyaW5nIC49ICcuJy5zZWxmOjpwYXJzZU9pZCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4LCAkY29udGVudExlbmd0aCAtIDEpOwoKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHNlbGYoJG9pZFN0cmluZyk7CiAgICAgICAgJHBhcnNlZE9iamVjdC0+c2V0Q29udGVudExlbmd0aCgkY29udGVudExlbmd0aCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzIGFuIG9iamVjdCBpZGVudGlmaWVyIGV4Y2VwdCBmb3IgdGhlIGZpcnN0IG9jdGV0LCB3aGljaCBpcyBwYXJzZWQKICAgICAqIGRpZmZlcmVudGx5LiBUaGlzIHdheSByZWxhdGl2ZSBvYmplY3QgaWRlbnRpZmllcnMgY2FuIGFsc28gYmUgcGFyc2VkCiAgICAgKiB1c2luZyB0aGlzLgogICAgICoKICAgICAqIEBwYXJhbSAkYmluYXJ5RGF0YQogICAgICogQHBhcmFtICRvZmZzZXRJbmRleAogICAgICogQHBhcmFtICRvY3RldHNUb1JlYWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFBhcnNlckV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gcGFyc2VPaWQoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4LCAkb2N0ZXRzVG9SZWFkKQogICAgewogICAgICAgICRvaWQgPSAnJzsKCiAgICAgICAgd2hpbGUgKCRvY3RldHNUb1JlYWQgPiAwKSB7CiAgICAgICAgICAgICRvY3RldHMgPSAnJzsKCiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgIGlmICgwID09PSAkb2N0ZXRzVG9SZWFkKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbignTWFsZm9ybWVkIEFTTi4xIE9iamVjdCBJZGVudGlmaWVyJywgJG9mZnNldEluZGV4IC0gMSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJG9jdGV0c1RvUmVhZC0tOwogICAgICAgICAgICAgICAgJG9jdGV0ID0gJGJpbmFyeURhdGFbJG9mZnNldEluZGV4KytdOwogICAgICAgICAgICAgICAgJG9jdGV0cyAuPSAkb2N0ZXQ7CiAgICAgICAgICAgIH0gd2hpbGUgKG9yZCgkb2N0ZXQpICYgMHg4MCk7CgogICAgICAgICAgICAkb2lkIC49IHNwcmludGYoJyVkLicsIEJhc2UxMjg6OmRlY29kZSgkb2N0ZXRzKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBSZW1vdmUgdHJhaWxpbmcgJy4nCiAgICAgICAgcmV0dXJuIHN1YnN0cigkb2lkLCAwLCAtMSkgPzogJyc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/OctetString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxBU05PYmplY3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwoKY2xhc3MgT2N0ZXRTdHJpbmcgZXh0ZW5kcyBBU05PYmplY3QgaW1wbGVtZW50cyBQYXJzYWJsZQp7CiAgICBwcm90ZWN0ZWQgJHZhbHVlOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKGlzX3N0cmluZygkdmFsdWUpKSB7CiAgICAgICAgICAgIC8vIHJlbW92ZSBnYXBzIGJldHdlZW4gaGV4IGRpZ2l0cwogICAgICAgICAgICAkdmFsdWUgPSBwcmVnX3JlcGxhY2UoJy9cc3wweC8nLCAnJywgJHZhbHVlKTsKICAgICAgICB9IGVsc2VpZiAoaXNfbnVtZXJpYygkdmFsdWUpKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IGRlY2hleCgkdmFsdWUpOwogICAgICAgIH0gZWxzZWlmICgkdmFsdWUgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ09jdGV0U3RyaW5nOiB1bnJlY29nbml6ZWQgaW5wdXQgdHlwZSEnKTsKICAgICAgICB9CgogICAgICAgIGlmIChzdHJsZW4oJHZhbHVlKSAlIDIgIT0gMCkgewogICAgICAgICAgICAvLyB0cmFuc2Zvcm0gdmFsdWVzIGxpa2UgMUYyIHRvIDAxRjIKICAgICAgICAgICAgJHZhbHVlID0gJzAnLiR2YWx1ZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6Ok9DVEVUU1RSSU5HOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjYWxjdWxhdGVDb250ZW50TGVuZ3RoKCkKICAgIHsKICAgICAgICByZXR1cm4gc3RybGVuKCR0aGlzLT52YWx1ZSkgLyAyOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNvZGVkVmFsdWUoKQogICAgewogICAgICAgICR2YWx1ZSA9ICR0aGlzLT52YWx1ZTsKICAgICAgICAkcmVzdWx0ID0gJyc7CgogICAgICAgIC8vQWN0dWFsIGNvbnRlbnQKICAgICAgICB3aGlsZSAoc3RybGVuKCR2YWx1ZSkgPj0gMikgewogICAgICAgICAgICAvLyBnZXQgdGhlIGhleCB2YWx1ZSBieXRlIGJ5IGJ5dGUgZnJvbSB0aGUgc3RyaW5nIGFuZCBhbmQgYWRkIGl0IHRvIGJpbmFyeSByZXN1bHQKICAgICAgICAgICAgJHJlc3VsdCAuPSBjaHIoaGV4ZGVjKHN1YnN0cigkdmFsdWUsIDAsIDIpKSk7CiAgICAgICAgICAgICR2YWx1ZSA9IHN1YnN0cigkdmFsdWUsIDIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKQogICAgewogICAgICAgIHJldHVybiBzdHJ0b3VwcGVyKCR0aGlzLT52YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEJpbmFyeUNvbnRlbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0RW5jb2RlZFZhbHVlKCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tQmluYXJ5KCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCA9IDApCiAgICB7CiAgICAgICAgc2VsZjo6cGFyc2VJZGVudGlmaWVyKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0sIElkZW50aWZpZXI6Ok9DVEVUU1RSSU5HLCAkb2Zmc2V0SW5kZXgrKyk7CiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CgogICAgICAgICR2YWx1ZSA9IHN1YnN0cigkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4LCAkY29udGVudExlbmd0aCk7CiAgICAgICAgJG9mZnNldEluZGV4ICs9ICRjb250ZW50TGVuZ3RoOwoKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHNlbGYoYmluMmhleCgkdmFsdWUpKTsKICAgICAgICAkcGFyc2VkT2JqZWN0LT5zZXRDb250ZW50TGVuZ3RoKCRjb250ZW50TGVuZ3RoKTsKCiAgICAgICAgcmV0dXJuICRwYXJzZWRPYmplY3Q7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/PrintableString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIFByaW50YWJsZVN0cmluZyBleHRlbmRzIEFic3RyYWN0U3RyaW5nCnsKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIG5ldyBBU04uMSBQcmludGFibGVTdHJpbmcuCiAgICAgKgogICAgICogVGhlIElUVS1UIFguNjgwIFRhYmxlIDggcGVybWl0cyB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnM6CiAgICAgKiBMYXRpbiBjYXBpdGFsIGxldHRlcnMgQSxCLCAuLi4gWgogICAgICogTGF0aW4gc21hbGwgbGV0dGVycyAgIGEsYiwgLi4uIHoKICAgICAqIERpZ2l0cyAgICAgICAgICAgICAgICAwLDEsIC4uLiA5CiAgICAgKiBTUEFDRSAgICAgICAgICAgICAgICAgKHNwYWNlKQogICAgICogQVBPU1RST1BIRSAgICAgICAgICAgICcKICAgICAqIExFRlQgUEFSRU5USEVTSVMgICAgICAoCiAgICAgKiBSSUdIVCBQQVJFTlRIRVNJUyAgICAgKQogICAgICogUExVUyBTSUdOICAgICAgICAgICAgICsKICAgICAqIENPTU1BICAgICAgICAgICAgICAgICAsCiAgICAgKiBIWVBIRU4tTUlOVVMgICAgICAgICAgLQogICAgICogRlVMTCBTVE9QICAgICAgICAgICAgIC4KICAgICAqIFNPTElEVVMgICAgICAgICAgICAgICAvCiAgICAgKiBDT0xPTiAgICAgICAgICAgICAgICAgOgogICAgICogRVFVQUxTIFNJR04gICAgICAgICAgID0KICAgICAqIFFVRVNUSU9OIE1BUksgICAgICAgICA/CiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc3RyaW5nKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZSA9ICRzdHJpbmc7CiAgICAgICAgJHRoaXMtPmFsbG93TnVtYmVycygpOwogICAgICAgICR0aGlzLT5hbGxvd0FsbExldHRlcnMoKTsKICAgICAgICAkdGhpcy0+YWxsb3dTcGFjZXMoKTsKICAgICAgICAkdGhpcy0+YWxsb3dDaGFyYWN0ZXJzKCInIiwgJygnLCAnKScsICcrJywgJy0nLCAnLicsICcsJywgJy8nLCAnOicsICc9JywgJz8nKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OlBSSU5UQUJMRV9TVFJJTkc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/RelativeObjectIdentifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxQYXJzYWJsZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcRXhjZXB0aW9uXFBhcnNlckV4Y2VwdGlvbjsKCmNsYXNzIFJlbGF0aXZlT2JqZWN0SWRlbnRpZmllciBleHRlbmRzIE9iamVjdElkZW50aWZpZXIgaW1wbGVtZW50cyBQYXJzYWJsZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHN1YklkZW50aWZpZXJzKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZSA9ICRzdWJJZGVudGlmaWVyczsKICAgICAgICAkdGhpcy0+c3ViSWRlbnRpZmllcnMgPSBleHBsb2RlKCcuJywgJHN1YklkZW50aWZpZXJzKTsKICAgICAgICAkbnJPZlN1YklkZW50aWZpZXJzID0gY291bnQoJHRoaXMtPnN1YklkZW50aWZpZXJzKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJG5yT2ZTdWJJZGVudGlmaWVyczsgJGkrKykgewogICAgICAgICAgICBpZiAoaXNfbnVtZXJpYygkdGhpcy0+c3ViSWRlbnRpZmllcnNbJGldKSkgewogICAgICAgICAgICAgICAgLy8gZW5mb3JjZSB0aGUgaW50ZWdlciB0eXBlCiAgICAgICAgICAgICAgICAkdGhpcy0+c3ViSWRlbnRpZmllcnNbJGldID0gaW50dmFsKCR0aGlzLT5zdWJJZGVudGlmaWVyc1skaV0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiW3skc3ViSWRlbnRpZmllcnN9XSBpcyBubyB2YWxpZCBvYmplY3QgaWRlbnRpZmllciAoc3ViIGlkZW50aWZpZXIgIi4oJGkgKyAxKS4nIGlzIG5vdCBudW1lcmljKSEnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OlJFTEFUSVZFX09JRDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICBzZWxmOjpwYXJzZUlkZW50aWZpZXIoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSwgSWRlbnRpZmllcjo6UkVMQVRJVkVfT0lELCAkb2Zmc2V0SW5kZXgrKyk7CiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCwgMSk7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRvaWRTdHJpbmcgPSBzZWxmOjpwYXJzZU9pZCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4LCAkY29udGVudExlbmd0aCk7CiAgICAgICAgfSBjYXRjaCAoUGFyc2VyRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ01hbGZvcm1lZCBBU04uMSBSZWxhdGl2ZSBPYmplY3QgSWRlbnRpZmllcicsICRlLT5nZXRPZmZzZXQoKSk7CiAgICAgICAgfQoKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHNlbGYoJG9pZFN0cmluZyk7CiAgICAgICAgJHBhcnNlZE9iamVjdC0+c2V0Q29udGVudExlbmd0aCgkY29udGVudExlbmd0aCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/Sequence.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxDb25zdHJ1Y3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwoKY2xhc3MgU2VxdWVuY2UgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBQYXJzYWJsZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OlNFUVVFTkNFOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/Set.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwoKY2xhc3MgU2V0IGV4dGVuZHMgU2VxdWVuY2UKewogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpTRVQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/T61String.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIFQ2MVN0cmluZyBleHRlbmRzIEFic3RyYWN0U3RyaW5nCnsKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIG5ldyBBU04uMSBUNjEgU3RyaW5nLgogICAgICogVE9ETyBUaGUgZW5jb2RhYmxlIGNoYXJhY3RlcnMgb2YgdGhpcyB0eXBlIGFyZSBub3QgeWV0IGNoZWNrZWQuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lUVV9ULjYxCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc3RyaW5nKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZSA9ICRzdHJpbmc7CiAgICAgICAgJHRoaXMtPmFsbG93QWxsKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpUNjFfU1RSSU5HOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/UniversalString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIFVuaXZlcnNhbFN0cmluZyBleHRlbmRzIEFic3RyYWN0U3RyaW5nCnsKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIG5ldyBBU04uMSBVbml2ZXJzYWwgU3RyaW5nLgogICAgICogVE9ETyBUaGUgZW5jb2RhYmxlIGNoYXJhY3RlcnMgb2YgdGhpcyB0eXBlIGFyZSBub3QgeWV0IGNoZWNrZWQuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VuaXZlcnNhbF9DaGFyYWN0ZXJfU2V0CiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc3RyaW5nKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZSA9ICRzdHJpbmc7CiAgICAgICAgJHRoaXMtPmFsbG93QWxsKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpVTklWRVJTQUxfU1RSSU5HOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/UTCTime.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFRpbWU7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwoKLyoqCiAqIFRoaXMgQVNOLjEgdW5pdmVyc2FsIHR5cGUgY29udGFpbnMgdGhlIGNhbGVuZGFyIGRhdGUgYW5kIHRpbWUuCiAqCiAqIFRoZSBwcmVjaXNpb24gaXMgb25lIG1pbnV0ZSBvciBvbmUgc2Vjb25kIGFuZCBvcHRpb25hbGx5IGEKICogbG9jYWwgdGltZSBkaWZmZXJlbnRpYWwgZnJvbSBjb29yZGluYXRlZCB1bml2ZXJzYWwgdGltZS4KICoKICogRGVjb2Rpbmcgb2YgdGhpcyB0eXBlIHdpbGwgYWNjZXB0IHRoZSBCYXNpYyBFbmNvZGluZyBSdWxlcyAoQkVSKQogKiBUaGUgZW5jb2Rpbmcgd2lsbCBjb21wbHkgd2l0aCB0aGUgRGlzdGluZ3Vpc2hlZCBFbmNvZGluZyBSdWxlcyAoREVSKS4KICovCmNsYXNzIFVUQ1RpbWUgZXh0ZW5kcyBBYnN0cmFjdFRpbWUgaW1wbGVtZW50cyBQYXJzYWJsZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OlVUQ19USU1FOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjYWxjdWxhdGVDb250ZW50TGVuZ3RoKCkKICAgIHsKICAgICAgICByZXR1cm4gMTM7IC8vIENvbnRlbnQgaXMgYSBzdHJpbmcgbyB0aGUgZm9sbG93aW5nIGZvcm1hdDogWVlNTUREaGhtbXNzWiAoMTMgb2N0ZXRzKQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNvZGVkVmFsdWUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWUtPmZvcm1hdCgneW1kSGlzJykuJ1onOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBJZGVudGlmaWVyOjpVVENfVElNRSwgJG9mZnNldEluZGV4KyspOwogICAgICAgICRjb250ZW50TGVuZ3RoID0gc2VsZjo6cGFyc2VDb250ZW50TGVuZ3RoKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgsIDExKTsKCiAgICAgICAgJGZvcm1hdCA9ICd5bWRHaSc7CiAgICAgICAgJGRhdGVUaW1lU3RyaW5nID0gc3Vic3RyKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgsIDEwKTsKICAgICAgICAkb2Zmc2V0SW5kZXggKz0gMTA7CgogICAgICAgIC8vIGV4dHJhY3Qgb3B0aW9uYWwgc2Vjb25kcyBwYXJ0CiAgICAgICAgaWYgKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0gIT0gJ1onCiAgICAgICAgJiYgJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSAhPSAnKycKICAgICAgICAmJiAkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdICE9ICctJykgewogICAgICAgICAgICAkZGF0ZVRpbWVTdHJpbmcgLj0gc3Vic3RyKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgsIDIpOwogICAgICAgICAgICAkb2Zmc2V0SW5kZXggKz0gMjsKICAgICAgICAgICAgJGZvcm1hdCAuPSAncyc7CiAgICAgICAgfQoKICAgICAgICAkZGF0ZVRpbWUgPSBcRGF0ZVRpbWU6OmNyZWF0ZUZyb21Gb3JtYXQoJGZvcm1hdCwgJGRhdGVUaW1lU3RyaW5nLCBuZXcgXERhdGVUaW1lWm9uZSgnVVRDJykpOwoKICAgICAgICAvLyBleHRyYWN0IHRpbWUgem9uZSBzZXR0aW5ncwogICAgICAgIGlmICgkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdID09ICcrJwogICAgICAgIHx8ICRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0gPT0gJy0nKSB7CiAgICAgICAgICAgICRkYXRlVGltZSA9IHN0YXRpYzo6ZXh0cmFjdFRpbWVab25lRGF0YSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4LCAkZGF0ZVRpbWUpOwogICAgICAgIH0gZWxzZWlmICgkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXgrK10gIT0gJ1onKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ0ludmFsaWQgVVRDIFN0cmluZycsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHNlbGYoJGRhdGVUaW1lKTsKICAgICAgICAkcGFyc2VkT2JqZWN0LT5zZXRDb250ZW50TGVuZ3RoKCRjb250ZW50TGVuZ3RoKTsKCiAgICAgICAgcmV0dXJuICRwYXJzZWRPYmplY3Q7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/UTF8String.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIFVURjhTdHJpbmcgZXh0ZW5kcyBBYnN0cmFjdFN0cmluZwp7CiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBuZXcgQVNOLjEgVW5pdmVyc2FsIFN0cmluZy4KICAgICAqIFRPRE8gVGhlIGVuY29kYWJsZSBjaGFyYWN0ZXJzIG9mIHRoaXMgdHlwZSBhcmUgbm90IHlldCBjaGVja2VkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHN0cmluZykKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkc3RyaW5nOwogICAgICAgICR0aGlzLT5hbGxvd0FsbCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6VVRGOF9TVFJJTkc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/VisibleString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIFZpc2libGVTdHJpbmcgZXh0ZW5kcyBBYnN0cmFjdFN0cmluZwp7CiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBuZXcgQVNOLjEgVmlzaWJsZSBTdHJpbmcuCiAgICAgKiBUT0RPIFRoZSBlbmNvZGFibGUgY2hhcmFjdGVycyBvZiB0aGlzIHR5cGUgYXJlIG5vdCB5ZXQgY2hlY2tlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzdHJpbmcpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHN0cmluZzsKICAgICAgICAkdGhpcy0+YWxsb3dBbGwoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OlZJU0lCTEVfU1RSSU5HOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/UnknownConstructedObject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCmNsYXNzIFVua25vd25Db25zdHJ1Y3RlZE9iamVjdCBleHRlbmRzIENvbnN0cnVjdAp7CiAgICBwcml2YXRlICRpZGVudGlmaWVyOwogICAgcHJpdmF0ZSAkY29udGVudExlbmd0aDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJpbmFyeURhdGEKICAgICAqIEBwYXJhbSBpbnQgJG9mZnNldEluZGV4CiAgICAgKgogICAgICogQHRocm93cyBcRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCkKICAgIHsKICAgICAgICAkdGhpcy0+aWRlbnRpZmllciA9IHNlbGY6OnBhcnNlQmluYXJ5SWRlbnRpZmllcigkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAkdGhpcy0+Y29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKCiAgICAgICAgJGNoaWxkcmVuID0gW107CiAgICAgICAgJG9jdGV0c1RvUmVhZCA9ICR0aGlzLT5jb250ZW50TGVuZ3RoOwogICAgICAgIHdoaWxlICgkb2N0ZXRzVG9SZWFkID4gMCkgewogICAgICAgICAgICAkbmV3Q2hpbGQgPSBBU05PYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICRvY3RldHNUb1JlYWQgLT0gJG5ld0NoaWxkLT5nZXRPYmplY3RMZW5ndGgoKTsKICAgICAgICAgICAgJGNoaWxkcmVuW10gPSAkbmV3Q2hpbGQ7CiAgICAgICAgfQoKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KC4uLiRjaGlsZHJlbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBvcmQoJHRoaXMtPmlkZW50aWZpZXIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmlkZW50aWZpZXI7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNhbGN1bGF0ZUNvbnRlbnRMZW5ndGgoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29udGVudExlbmd0aDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RW5jb2RlZFZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gJyc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/UnknownObject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCmNsYXNzIFVua25vd25PYmplY3QgZXh0ZW5kcyBBU05PYmplY3QKewogICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICBwcml2YXRlICR2YWx1ZTsKCiAgICBwcml2YXRlICRpZGVudGlmaWVyOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ3xpbnQgJGlkZW50aWZpZXIgRWl0aGVyIHRoZSBmaXJzdCBpZGVudGlmaWVyIG9jdGV0IGFzIGludCBvciBhbGwgaWRlbnRpZmllciBieXRlcyBhcyBhIHN0cmluZwogICAgICogQHBhcmFtIGludCAgICAgICAgJGNvbnRlbnRMZW5ndGgKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRpZGVudGlmaWVyLCAkY29udGVudExlbmd0aCkKICAgIHsKICAgICAgICBpZiAoaXNfaW50KCRpZGVudGlmaWVyKSkgewogICAgICAgICAgICAkaWRlbnRpZmllciA9IGNocigkaWRlbnRpZmllcik7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+aWRlbnRpZmllciA9ICRpZGVudGlmaWVyOwogICAgICAgICR0aGlzLT52YWx1ZSA9ICJVbnBhcnNhYmxlIE9iamVjdCAoeyRjb250ZW50TGVuZ3RofSBieXRlcykiOwogICAgICAgICR0aGlzLT5zZXRDb250ZW50TGVuZ3RoKCRjb250ZW50TGVuZ3RoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIG9yZCgkdGhpcy0+aWRlbnRpZmllclswXSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldElkZW50aWZpZXIoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aWRlbnRpZmllcjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDb250ZW50TGVuZ3RoKCk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICcnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/Utility/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/Utility/BigInteger.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0UKICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuCiAqLwoKbmFtZXNwYWNlIEZHXFV0aWxpdHk7CgovKioKICogQ2xhc3MgQmlnSW50ZWdlcgogKiBVdGlsaXR5IGNsYXNzIHRvIHJlbW92ZSBkZXBlbmRlbmNlIG9uIGEgc2luZ2xlIGxhcmdlIG51bWJlciBsaWJyYXJ5LiBOb3QgaW50ZW5kZWQgZm9yIGV4dGVybmFsIHVzZSwgdGhpcyBjbGFzcyBvbmx5CiAqIGltcGxlbWVudHMgdGhlIGZ1bmN0aW9uYWxpdHkgbmVlZGVkIHRocm91Z2hvdXQgdGhpcyBwcm9qZWN0LgogKgogKiBJbnN0YW5jZXMgYXJlIGltbXV0YWJsZSwgYWxsIG9wZXJhdGlvbnMgcmV0dXJuIGEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHJlc3VsdC4KICoKICogQHBhY2thZ2UgRkdcVXRpbGl0eQogKiBAaW50ZXJuYWwKICovCmFic3RyYWN0IGNsYXNzIEJpZ0ludGVnZXIKewogICAgLyoqCiAgICAgKiBGb3JjZSBhIHByZWZlcmVuY2Ugb24gdGhlIHVuZGVybHlpbmcgYmlnIG51bWJlciBpbXBsZW1lbnRhdGlvbiwgdXNlZnVsIGZvciB0ZXN0aW5nLgogICAgICogQHZhciBzdHJpbmd8bnVsbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkX3ByZWZlcjsKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNldFByZWZlcigkcHJlZmVyID0gbnVsbCkKICAgIHsKICAgICAgICBzZWxmOjokX3ByZWZlciA9ICRwcmVmZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBCaWdJbnRlZ2VyIGluc3RhbmNlIGJhc2VkIG9mZiB0aGUgYmFzZSAxMCBzdHJpbmcgb3IgYW4gaW50ZWdlci4KICAgICAqIEBwYXJhbSBzdHJpbmd8aW50ICR2YWwKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlKCR2YWwpCiAgICB7CiAgICAgICAgaWYgKHNlbGY6OiRfcHJlZmVyKSB7CiAgICAgICAgICAgIHN3aXRjaCAoc2VsZjo6JF9wcmVmZXIpIHsKICAgICAgICAgICAgICAgIGNhc2UgJ2dtcCc6CiAgICAgICAgICAgICAgICAgICAgJHJldCA9IG5ldyBCaWdJbnRlZ2VyR21wKCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdiY21hdGgnOgogICAgICAgICAgICAgICAgICAgICRyZXQgPSBuZXcgQmlnSW50ZWdlckJjbWF0aCgpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFVuZXhwZWN0ZWRWYWx1ZUV4Y2VwdGlvbignVW5rbm93biBudW1iZXIgaW1wbGVtZW50YXRpb246ICcgLiBzZWxmOjokX3ByZWZlcik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIGF1dG9kZXRlY3QKICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnZ21wX2FkZCcpKSB7CiAgICAgICAgICAgICAgICAkcmV0ID0gbmV3IEJpZ0ludGVnZXJHbXAoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnYmNhZGQnKSkgewogICAgICAgICAgICAgICAgJHJldCA9IG5ldyBCaWdJbnRlZ2VyQmNtYXRoKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1JlcXVpcmVzIEdNUCBvciBiY21hdGggZXh0ZW5zaW9uLicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNfaW50KCR2YWwpKSB7CiAgICAgICAgICAgICRyZXQtPl9mcm9tSW50ZWdlcigkdmFsKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIGNvbnZlcnQgdG8gc3RyaW5nLCBpZiBub3QgYWxyZWFkeSBvbmUKICAgICAgICAgICAgJHZhbCA9IChzdHJpbmcpJHZhbDsKCiAgICAgICAgICAgIC8vIHZhbGlkYXRlIHN0cmluZwogICAgICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy9eLT9bMC05XSskLycsICR2YWwpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignRXhwZWN0cyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRyZXQtPl9mcm9tU3RyaW5nKCR2YWwpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBCaWdJbnRlZ2VyIGNvbnN0cnVjdG9yLgogICAgICogUHJldmVudCBkaXJlY3RseSBpbnN0YW50aWF0aW5nIG9iamVjdCwgdXNlIEJpZ0ludGVnZXI6OmNyZWF0ZSBpbnN0ZWFkLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewoKICAgIH0KCiAgICAvKioKICAgICAqIFN1YmNsYXNzZXMgbXVzdCBwcm92aWRlIGNsb25lIGZ1bmN0aW9uYWxpdHkuCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIF9fY2xvbmUoKTsKCiAgICAvKioKICAgICAqIEFzc2lnbiB0aGUgaW5zdGFuY2UgdmFsdWUgZnJvbSBiYXNlIDEwIHN0cmluZy4KICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cgogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gX2Zyb21TdHJpbmcoJHN0cik7CgogICAgLyoqCiAgICAgKiBBc3NpZ24gdGhlIGluc3RhbmNlIHZhbHVlIGZyb20gYW4gaW50ZWdlciB0eXBlLgogICAgICogQHBhcmFtIGludCAkaW50ZWdlcgogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gX2Zyb21JbnRlZ2VyKCRpbnRlZ2VyKTsKCiAgICAvKioKICAgICAqIE11c3QgcHJvdmlkZSBzdHJpbmcgaW1wbGVtZW50YXRpb24gdGhhdCByZXR1cm5zIGJhc2UgMTAgbnVtYmVyLgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTsKCiAgICAvKiBJTkZPUk1BVElPTkFMIEZVTkNUSU9OUyAqLwoKICAgIC8qKgogICAgICogUmV0dXJuIGludGVnZXIsIGlmIHBvc3NpYmxlLiBUaHJvd3MgYW4gZXhjZXB0aW9uIGlmIHRoZSBudW1iZXIgY2FuIG5vdCBiZSByZXByZXNlbnRlZCBhcyBhIG5hdGl2ZSBpbnRlZ2VyLgogICAgICogQHJldHVybiBpbnQKICAgICAqIEB0aHJvd3MgXE92ZXJmbG93RXhjZXB0aW9uCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiB0b0ludGVnZXIoKTsKCiAgICAvKioKICAgICAqIElzIHJlcHJlc2VudGVkIGludGVnZXIgbmVnYXRpdmU/CiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGlzTmVnYXRpdmUoKTsKCiAgICAvKioKICAgICAqIENvbXBhcmUgdGhlIGludGVnZXIgd2l0aCAkbnVtYmVyLCByZXR1cm5zIGEgbmVnYXRpdmUgaW50ZWdlciBpZiAkdGhpcyBpcyBsZXNzIHRoYW4gbnVtYmVyLCByZXR1cm5zIDAgaWYgJHRoaXMgaXMKICAgICAqIGVxdWFsIHRvIG51bWJlciBhbmQgcmV0dXJucyBhIHBvc2l0aXZlIGludGVnZXIgaWYgJHRoaXMgaXMgZ3JlYXRlciB0aGFuIG51bWJlci4KICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyfHN0cmluZ3xpbnQgJG51bWJlcgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGNvbXBhcmUoJG51bWJlcik7CgogICAgLyogTU9ESUZZICovCgogICAgLyoqCiAgICAgKiBBZGQgYW5vdGhlciBpbnRlZ2VyICRiIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlcnxzdHJpbmd8aW50ICRiCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGFkZCgkYik7CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdCAkYiBmcm9tICR0aGlzIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlcnxzdHJpbmd8aW50ICRiCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHN1YnRyYWN0KCRiKTsKCiAgICAvKioKICAgICAqIE11bHRpcGx5IHZhbHVlLgogICAgICogQHBhcmFtIEJpZ0ludGVnZXJ8c3RyaW5nfGludCAkYgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBtdWx0aXBseSgkYik7CgogICAgLyoqCiAgICAgKiBUaGUgdmFsdWUgJHRoaXMgbW9kdWx1cyAkYi4KICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyfHN0cmluZ3xpbnQgJGIKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gbW9kdWx1cygkYik7CgogICAgLyoqCiAgICAgKiBSYWlzZSAkdGhpcyB0byB0aGUgcG93ZXIgb2YgJGIgYW5kIHJldHVybnMgdGhlIHJlc3VsdC4KICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyfHN0cmluZ3xpbnQgJGIKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gdG9Qb3dlcigkYik7CgogICAgLyoqCiAgICAgKiBTaGlmdCB0aGUgdmFsdWUgdG8gdGhlIHJpZ2h0IGJ5IGEgc2V0IG51bWJlciBvZiBiaXRzIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuCiAgICAgKiBAcGFyYW0gaW50ICRiaXRzCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHNoaWZ0UmlnaHQoJGJpdHMgPSA4KTsKCiAgICAvKioKICAgICAqIFNoaWZ0IHRoZSB2YWx1ZSB0byB0aGUgbGVmdCBieSBhIHNldCBudW1iZXIgb2YgYml0cyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LgogICAgICogQHBhcmFtIGludCAkYml0cwogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBzaGlmdExlZnQoJGJpdHMgPSA4KTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGFic29sdXRlIHZhbHVlLgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBhYnNvbHV0ZVZhbHVlKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/Utility/BigIntegerBcmath.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0UKICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuCiAqLwoKbmFtZXNwYWNlIEZHXFV0aWxpdHk7CgovKioKICogQ2xhc3MgQmlnSW50ZWdlckJjbWF0aAogKiBJbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIGJpZyBudW1iZXJzIHVzaW5nIHRoZSBiY21hdGggbGlicmFyeSB0byBwZXJmb3JtIGxhcmdlIG9wZXJhdGlvbnMuCiAqIEBwYWNrYWdlIEZHXFV0aWxpdHkKICogQGludGVybmFsCiAqLwpjbGFzcyBCaWdJbnRlZ2VyQmNtYXRoIGV4dGVuZHMgQmlnSW50ZWdlcgp7CiAgICBwcm90ZWN0ZWQgJF9zdHI7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY2xvbmUoKQogICAgewogICAgICAgIC8vIG5vdGhpbmcgbmVlZGVkIHRvIGNvcHkKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX2Zyb21TdHJpbmcoJHN0cikKICAgIHsKICAgICAgICAkdGhpcy0+X3N0ciA9IChzdHJpbmcpJHN0cjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX2Zyb21JbnRlZ2VyKCRpbnRlZ2VyKQogICAgewogICAgICAgICR0aGlzLT5fc3RyID0gKHN0cmluZykkaW50ZWdlcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fc3RyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0b0ludGVnZXIoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+Y29tcGFyZShQSFBfSU5UX01BWCkgPiAwIHx8ICR0aGlzLT5jb21wYXJlKFBIUF9JTlRfTUlOKSA8IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxPdmVyZmxvd0V4Y2VwdGlvbihzcHJpbnRmKCdDYW4gbm90IHJlcHJlc2VudCAlcyBhcyBpbnRlZ2VyLicsICR0aGlzLT5fc3RyKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAoaW50KSR0aGlzLT5fc3RyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc05lZ2F0aXZlKCkKICAgIHsKICAgICAgICByZXR1cm4gYmNjb21wKCR0aGlzLT5fc3RyLCAnMCcsIDApIDwgMDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX3Vud3JhcCgkbnVtYmVyKQogICAgewogICAgICAgIGlmICgkbnVtYmVyIGluc3RhbmNlb2Ygc2VsZikgewogICAgICAgICAgICByZXR1cm4gJG51bWJlci0+X3N0cjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRudW1iZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBhcmUoJG51bWJlcikKICAgIHsKICAgICAgICByZXR1cm4gYmNjb21wKCR0aGlzLT5fc3RyLCAkdGhpcy0+X3Vud3JhcCgkbnVtYmVyKSwgMCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZCgkYikKICAgIHsKICAgICAgICAkcmV0ID0gbmV3IHNlbGYoKTsKICAgICAgICAkcmV0LT5fc3RyID0gYmNhZGQoJHRoaXMtPl9zdHIsICR0aGlzLT5fdW53cmFwKCRiKSwgMCk7CiAgICAgICAgcmV0dXJuICRyZXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHN1YnRyYWN0KCRiKQogICAgewogICAgICAgICRyZXQgPSBuZXcgc2VsZigpOwogICAgICAgICRyZXQtPl9zdHIgPSBiY3N1YigkdGhpcy0+X3N0ciwgJHRoaXMtPl91bndyYXAoJGIpLCAwKTsKICAgICAgICByZXR1cm4gJHJldDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbXVsdGlwbHkoJGIpCiAgICB7CiAgICAgICAgJHJldCA9IG5ldyBzZWxmKCk7CiAgICAgICAgJHJldC0+X3N0ciA9IGJjbXVsKCR0aGlzLT5fc3RyLCAkdGhpcy0+X3Vud3JhcCgkYiksIDApOwogICAgICAgIHJldHVybiAkcmV0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtb2R1bHVzKCRiKQogICAgewogICAgICAgICRyZXQgPSBuZXcgc2VsZigpOwogICAgICAgIGlmICgkdGhpcy0+aXNOZWdhdGl2ZSgpKSB7CiAgICAgICAgICAgIC8vIGJjbW9kIGhhbmRsZXMgbmVnYXRpdmUgbnVtYmVycyBkaWZmZXJlbnRseQogICAgICAgICAgICAkYiA9ICR0aGlzLT5fdW53cmFwKCRiKTsKICAgICAgICAgICAgJHJldC0+X3N0ciA9IGJjc3ViKCRiLCBiY21vZChiY3N1YignMCcsICR0aGlzLT5fc3RyLCAwKSwgJGIpLCAwKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRyZXQtPl9zdHIgPSBiY21vZCgkdGhpcy0+X3N0ciwgJHRoaXMtPl91bndyYXAoJGIpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRyZXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRvUG93ZXIoJGIpCiAgICB7CiAgICAgICAgJHJldCA9IG5ldyBzZWxmKCk7CiAgICAgICAgJHJldC0+X3N0ciA9IGJjcG93KCR0aGlzLT5fc3RyLCAkdGhpcy0+X3Vud3JhcCgkYiksIDApOwogICAgICAgIHJldHVybiAkcmV0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzaGlmdFJpZ2h0KCRiaXRzID0gOCkKICAgIHsKICAgICAgICAkcmV0ID0gbmV3IHNlbGYoKTsKICAgICAgICAkcmV0LT5fc3RyID0gYmNkaXYoJHRoaXMtPl9zdHIsIGJjcG93KCcyJywgJGJpdHMpKTsKICAgICAgICByZXR1cm4gJHJldDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2hpZnRMZWZ0KCRiaXRzID0gOCkgewogICAgICAgICRyZXQgPSBuZXcgc2VsZigpOwogICAgICAgICRyZXQtPl9zdHIgPSBiY211bCgkdGhpcy0+X3N0ciwgYmNwb3coJzInLCAkYml0cykpOwogICAgICAgIHJldHVybiAkcmV0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhYnNvbHV0ZVZhbHVlKCkKICAgIHsKICAgICAgICAkcmV0ID0gbmV3IHNlbGYoKTsKICAgICAgICBpZiAoLTEgPT09IGJjY29tcCgkdGhpcy0+X3N0ciwgJzAnLCAwKSkgewogICAgICAgICAgICAkcmV0LT5fc3RyID0gYmNzdWIoJzAnLCAkdGhpcy0+X3N0ciwgMCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkcmV0LT5fc3RyID0gJHRoaXMtPl9zdHI7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcmV0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/Utility/BigIntegerGmp.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0UKICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuCiAqLwoKbmFtZXNwYWNlIEZHXFV0aWxpdHk7CgovKioKICogQ2xhc3MgQmlnSW50ZWdlckdtcAogKiBJbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIGJpZyBudW1iZXJzIHVzaW5nIHRoZSBHTVAgZXh0ZW5zaW9uIHRvIHBlcmZvcm0gb3BlcmF0aW9ucy4KICogQHBhY2thZ2UgRkdcVXRpbGl0eQogKiBAaW50ZXJuYWwKICovCmNsYXNzIEJpZ0ludGVnZXJHbXAgZXh0ZW5kcyBCaWdJbnRlZ2VyCnsKICAgIC8qKgogICAgICogUmVzb3VyY2UgaGFuZGxlLgogICAgICogQHZhciBcR01QCiAgICAgKi8KICAgIHByb3RlY3RlZCAkX3JoOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2Nsb25lKCkKICAgIHsKICAgICAgICAkdGhpcy0+X3JoID0gZ21wX2FkZCgkdGhpcy0+X3JoLCAwKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX2Zyb21TdHJpbmcoJHN0cikKICAgIHsKICAgICAgICAkdGhpcy0+X3JoID0gZ21wX2luaXQoJHN0ciwgMTApOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfZnJvbUludGVnZXIoJGludGVnZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPl9yaCA9IGdtcF9pbml0KCRpbnRlZ2VyLCAxMCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiBnbXBfc3RydmFsKCR0aGlzLT5fcmgsIDEwKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9JbnRlZ2VyKCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmNvbXBhcmUoUEhQX0lOVF9NQVgpID4gMCB8fCAkdGhpcy0+Y29tcGFyZShQSFBfSU5UX01JTikgPCAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcT3ZlcmZsb3dFeGNlcHRpb24oc3ByaW50ZignQ2FuIG5vdCByZXByZXNlbnQgJXMgYXMgaW50ZWdlci4nLCAkdGhpcykpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZ21wX2ludHZhbCgkdGhpcy0+X3JoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNOZWdhdGl2ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9zaWduKCR0aGlzLT5fcmgpID09PSAtMTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX3Vud3JhcCgkbnVtYmVyKQogICAgewogICAgICAgIGlmICgkbnVtYmVyIGluc3RhbmNlb2Ygc2VsZikgewogICAgICAgICAgICByZXR1cm4gJG51bWJlci0+X3JoOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG51bWJlcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGFyZSgkbnVtYmVyKQogICAgewogICAgICAgIHJldHVybiBnbXBfY21wKCR0aGlzLT5fcmgsICR0aGlzLT5fdW53cmFwKCRudW1iZXIpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKCRiKQogICAgewogICAgICAgICRyZXQgPSBuZXcgc2VsZigpOwogICAgICAgICRyZXQtPl9yaCA9IGdtcF9hZGQoJHRoaXMtPl9yaCwgJHRoaXMtPl91bndyYXAoJGIpKTsKICAgICAgICByZXR1cm4gJHJldDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3VidHJhY3QoJGIpCiAgICB7CiAgICAgICAgJHJldCA9IG5ldyBzZWxmKCk7CiAgICAgICAgJHJldC0+X3JoID0gZ21wX3N1YigkdGhpcy0+X3JoLCAkdGhpcy0+X3Vud3JhcCgkYikpOwogICAgICAgIHJldHVybiAkcmV0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtdWx0aXBseSgkYikKICAgIHsKICAgICAgICAkcmV0ID0gbmV3IHNlbGYoKTsKICAgICAgICAkcmV0LT5fcmggPSBnbXBfbXVsKCR0aGlzLT5fcmgsICR0aGlzLT5fdW53cmFwKCRiKSk7CiAgICAgICAgcmV0dXJuICRyZXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG1vZHVsdXMoJGIpCiAgICB7CiAgICAgICAgJHJldCA9IG5ldyBzZWxmKCk7CiAgICAgICAgJHJldC0+X3JoID0gZ21wX21vZCgkdGhpcy0+X3JoLCAkdGhpcy0+X3Vud3JhcCgkYikpOwogICAgICAgIHJldHVybiAkcmV0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0b1Bvd2VyKCRiKQogICAgewogICAgICAgIGlmICgkYiBpbnN0YW5jZW9mIHNlbGYpIHsKICAgICAgICAgICAgLy8gZ21wX3BvdyBhY2NlcHRzIGp1c3QgYW4gaW50ZWdlcgogICAgICAgICAgICBpZiAoJGItPmNvbXBhcmUoUEhQX0lOVF9NQVgpID4gMCkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxVbmV4cGVjdGVkVmFsdWVFeGNlcHRpb24oJ1VuYWJsZSB0byByYWlzZSB0byBwb3dlciBncmVhdGVyIHRoYW4gUEhQX0lOVF9NQVguJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGIgPSBnbXBfaW50dmFsKCRiLT5fcmgpOwogICAgICAgIH0KICAgICAgICAkcmV0ID0gbmV3IHNlbGYoKTsKICAgICAgICAkcmV0LT5fcmggPSBnbXBfcG93KCR0aGlzLT5fcmgsICRiKTsKICAgICAgICByZXR1cm4gJHJldDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2hpZnRSaWdodCgkYml0cz04KQogICAgewogICAgICAgICRyZXQgPSBuZXcgc2VsZigpOwogICAgICAgICRyZXQtPl9yaCA9IGdtcF9kaXYoJHRoaXMtPl9yaCwgZ21wX3BvdygyLCAkYml0cykpOwogICAgICAgIHJldHVybiAkcmV0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzaGlmdExlZnQoJGJpdHM9OCkKICAgIHsKICAgICAgICAkcmV0ID0gbmV3IHNlbGYoKTsKICAgICAgICAkcmV0LT5fcmggPSBnbXBfbXVsKCR0aGlzLT5fcmgsIGdtcF9wb3coMiwgJGJpdHMpKTsKICAgICAgICByZXR1cm4gJHJldDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWJzb2x1dGVWYWx1ZSgpCiAgICB7CiAgICAgICAgJHJldCA9IG5ldyBzZWxmKCk7CiAgICAgICAgJHJldC0+X3JoID0gZ21wX2FicygkdGhpcy0+X3JoKTsKICAgICAgICByZXR1cm4gJHJldDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/AlgorithmIdentifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOTsKCnVzZSBGR1xBU04xXFVuaXZlcnNhbFxOdWxsT2JqZWN0Owp1c2UgRkdcQVNOMVxDb21wb3NpdGVcQXR0cmlidXRlVHlwZUFuZFZhbHVlOwoKY2xhc3MgQWxnb3JpdGhtSWRlbnRpZmllciBleHRlbmRzIEF0dHJpYnV0ZVR5cGVBbmRWYWx1ZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG9iamVjdElkZW50aWZpZXJTdHJpbmcpCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkb2JqZWN0SWRlbnRpZmllclN0cmluZywgbmV3IE51bGxPYmplY3QoKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/CertificateExtensions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOTsKCnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CnVzZSBGR1xBU04xXE9JRDsKdXNlIEZHXEFTTjFcQVNOT2JqZWN0Owp1c2UgRkdcQVNOMVxQYXJzYWJsZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9jdGV0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2V0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyOwp1c2UgRkdcWDUwOVxTQU5cU3ViamVjdEFsdGVybmF0aXZlTmFtZXM7CgpjbGFzcyBDZXJ0aWZpY2F0ZUV4dGVuc2lvbnMgZXh0ZW5kcyBTZXQgaW1wbGVtZW50cyBQYXJzYWJsZQp7CiAgICBwcml2YXRlICRpbm5lclNlcXVlbmNlOwogICAgcHJpdmF0ZSAkZXh0ZW5zaW9ucyA9IFtdOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPmlubmVyU2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoKTsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCR0aGlzLT5pbm5lclNlcXVlbmNlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkU3ViamVjdEFsdGVybmF0aXZlTmFtZXMoU3ViamVjdEFsdGVybmF0aXZlTmFtZXMgJHNhbnMpCiAgICB7CiAgICAgICAgJHRoaXMtPmFkZEV4dGVuc2lvbihPSUQ6OkNFUlRfRVhUX1NVQkpFQ1RfQUxUX05BTUUsICRzYW5zKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZEV4dGVuc2lvbigkb2lkU3RyaW5nLCBBU05PYmplY3QgJGV4dGVuc2lvbikKICAgIHsKICAgICAgICAkc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoKTsKICAgICAgICAkc2VxdWVuY2UtPmFkZENoaWxkKG5ldyBPYmplY3RJZGVudGlmaWVyKCRvaWRTdHJpbmcpKTsKICAgICAgICAkc2VxdWVuY2UtPmFkZENoaWxkKCRleHRlbnNpb24pOwoKICAgICAgICAkdGhpcy0+aW5uZXJTZXF1ZW5jZS0+YWRkQ2hpbGQoJHNlcXVlbmNlKTsKICAgICAgICAkdGhpcy0+ZXh0ZW5zaW9uc1tdID0gJGV4dGVuc2lvbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5leHRlbnNpb25zOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBJZGVudGlmaWVyOjpTRVQsICRvZmZzZXRJbmRleCsrKTsKICAgICAgICBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CgogICAgICAgICR0bXBPZmZzZXQgPSAkb2Zmc2V0SW5kZXg7CiAgICAgICAgJGV4dGVuc2lvbnMgPSBTZXF1ZW5jZTo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAkdG1wT2Zmc2V0ICs9IDEgKyAkZXh0ZW5zaW9ucy0+Z2V0TnVtYmVyT2ZMZW5ndGhPY3RldHMoKTsKCiAgICAgICAgJHBhcnNlZE9iamVjdCA9IG5ldyBzZWxmKCk7CiAgICAgICAgZm9yZWFjaCAoJGV4dGVuc2lvbnMgYXMgJGV4dGVuc2lvbikgewogICAgICAgICAgICBpZiAoJGV4dGVuc2lvbi0+Z2V0VHlwZSgpICE9IElkZW50aWZpZXI6OlNFUVVFTkNFKSB7CiAgICAgICAgICAgICAgICAvL0ZJWE1FIHdyb25nIG9mZnNldCBpbmRleAogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbignQ291bGQgbm90IHBhcnNlIENlcnRpZmljYXRlIEV4dGVuc2lvbnM6IEV4cGVjdGVkIEFTTi4xIFNlcXVlbmNlIGJ1dCBnb3QgJy4kZXh0ZW5zaW9uLT5nZXRUeXBlTmFtZSgpLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdG1wT2Zmc2V0ICs9IDEgKyAkZXh0ZW5zaW9uLT5nZXROdW1iZXJPZkxlbmd0aE9jdGV0cygpOwogICAgICAgICAgICAkY2hpbGRyZW4gPSAkZXh0ZW5zaW9uLT5nZXRDaGlsZHJlbigpOwogICAgICAgICAgICBpZiAoY291bnQoJGNoaWxkcmVuKSA8IDIpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ0NvdWxkIG5vdCBwYXJzZSBDZXJ0aWZpY2F0ZSBFeHRlbnNpb25zOiBOZWVkcyBhdCBsZWFzdCB0d28gY2hpbGQgZWxlbWVudHMgcGVyIGV4dGVuc2lvbiBzZXF1ZW5jZSAob2JqZWN0IGlkZW50aWZpZXIgYW5kIG9jdGV0IHN0cmluZyknLCAkdG1wT2Zmc2V0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvKiogQHZhciBcRkdcQVNOMVxBU05PYmplY3QgJG9iamVjdElkZW50aWZpZXIgKi8KICAgICAgICAgICAgJG9iamVjdElkZW50aWZpZXIgPSAkY2hpbGRyZW5bMF07CgogICAgICAgICAgICAvKiogQHZhciBPY3RldFN0cmluZyAkb2N0ZXRTdHJpbmcgKi8KICAgICAgICAgICAgJG9jdGV0U3RyaW5nID0gJGNoaWxkcmVuWzFdOwoKICAgICAgICAgICAgaWYgKCRvYmplY3RJZGVudGlmaWVyLT5nZXRUeXBlKCkgIT0gSWRlbnRpZmllcjo6T0JKRUNUX0lERU5USUZJRVIpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ0NvdWxkIG5vdCBwYXJzZSBDZXJ0aWZpY2F0ZSBFeHRlbnNpb25zOiBFeHBlY3RlZCBBU04uMSBPYmplY3QgSWRlbnRpZmllciBidXQgZ290ICcuJGV4dGVuc2lvbi0+Z2V0VHlwZU5hbWUoKSwgJHRtcE9mZnNldCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0bXBPZmZzZXQgKz0gJG9iamVjdElkZW50aWZpZXItPmdldE9iamVjdExlbmd0aCgpOwoKICAgICAgICAgICAgaWYgKCRvYmplY3RJZGVudGlmaWVyLT5nZXRDb250ZW50KCkgPT0gT0lEOjpDRVJUX0VYVF9TVUJKRUNUX0FMVF9OQU1FKSB7CiAgICAgICAgICAgICAgICAkc2FucyA9IFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkdG1wT2Zmc2V0KTsKICAgICAgICAgICAgICAgICRwYXJzZWRPYmplY3QtPmFkZFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzKCRzYW5zKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIGNhbiBub3cgb25seSBwYXJzZSBTQU5zLiBUaGVyZSBtaWdodCBiZSBtb3JlIGluIHRoZSBmdXR1cmUKICAgICAgICAgICAgICAgICR0bXBPZmZzZXQgKz0gJG9jdGV0U3RyaW5nLT5nZXRPYmplY3RMZW5ndGgoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHBhcnNlZE9iamVjdC0+Z2V0QmluYXJ5KCk7IC8vIERldGVybWluZSB0aGUgbnVtYmVyIG9mIGNvbnRlbnQgb2N0ZXRzIGFuZCBvYmplY3Qgc2l6ZXMgb25jZSAoanVzdCB0byBsZXQgdGhlIGVxdWFsaXR5IHVuaXQgdGVzdHMgcGFzcyA6LyApCiAgICAgICAgcmV0dXJuICRwYXJzZWRPYmplY3Q7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/CertificateSubject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOTsKCnVzZSBGR1xBU04xXENvbXBvc2l0ZVxSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxPSUQ7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxDb21wb3NpdGVcUkROU3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CgpjbGFzcyBDZXJ0aWZpY2F0ZVN1YmplY3QgZXh0ZW5kcyBTZXF1ZW5jZSBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIHByaXZhdGUgJGNvbW1vbk5hbWU7CiAgICBwcml2YXRlICRlbWFpbDsKICAgIHByaXZhdGUgJG9yZ2FuaXphdGlvbjsKICAgIHByaXZhdGUgJGxvY2FsaXR5OwogICAgcHJpdmF0ZSAkc3RhdGU7CiAgICBwcml2YXRlICRjb3VudHJ5OwogICAgcHJpdmF0ZSAkb3JnYW5pemF0aW9uYWxVbml0OwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkY29tbW9uTmFtZQogICAgICogQHBhcmFtIHN0cmluZyAkZW1haWwKICAgICAqIEBwYXJhbSBzdHJpbmcgJG9yZ2FuaXphdGlvbgogICAgICogQHBhcmFtIHN0cmluZyAkbG9jYWxpdHkKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0YXRlCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb3VudHJ5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRvcmdhbml6YXRpb25hbFVuaXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRjb21tb25OYW1lLCAkZW1haWwsICRvcmdhbml6YXRpb24sICRsb2NhbGl0eSwgJHN0YXRlLCAkY291bnRyeSwgJG9yZ2FuaXphdGlvbmFsVW5pdCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KAogICAgICAgICAgICBuZXcgUkROU3RyaW5nKE9JRDo6Q09VTlRSWV9OQU1FLCAkY291bnRyeSksCiAgICAgICAgICAgIG5ldyBSRE5TdHJpbmcoT0lEOjpTVEFURV9PUl9QUk9WSU5DRV9OQU1FLCAkc3RhdGUpLAogICAgICAgICAgICBuZXcgUkROU3RyaW5nKE9JRDo6TE9DQUxJVFlfTkFNRSwgJGxvY2FsaXR5KSwKICAgICAgICAgICAgbmV3IFJETlN0cmluZyhPSUQ6Ok9SR0FOSVpBVElPTl9OQU1FLCAkb3JnYW5pemF0aW9uKSwKICAgICAgICAgICAgbmV3IFJETlN0cmluZyhPSUQ6Ok9VX05BTUUsICRvcmdhbml6YXRpb25hbFVuaXQpLAogICAgICAgICAgICBuZXcgUkROU3RyaW5nKE9JRDo6Q09NTU9OX05BTUUsICRjb21tb25OYW1lKSwKICAgICAgICAgICAgbmV3IFJETlN0cmluZyhPSUQ6OlBLQ1M5X0VNQUlMLCAkZW1haWwpCiAgICAgICAgKTsKCiAgICAgICAgJHRoaXMtPmNvbW1vbk5hbWUgPSAkY29tbW9uTmFtZTsKICAgICAgICAkdGhpcy0+ZW1haWwgPSAkZW1haWw7CiAgICAgICAgJHRoaXMtPm9yZ2FuaXphdGlvbiA9ICRvcmdhbml6YXRpb247CiAgICAgICAgJHRoaXMtPmxvY2FsaXR5ID0gJGxvY2FsaXR5OwogICAgICAgICR0aGlzLT5zdGF0ZSA9ICRzdGF0ZTsKICAgICAgICAkdGhpcy0+Y291bnRyeSA9ICRjb3VudHJ5OwogICAgICAgICR0aGlzLT5vcmdhbml6YXRpb25hbFVuaXQgPSAkb3JnYW5pemF0aW9uYWxVbml0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb21tb25OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbW1vbk5hbWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEVtYWlsKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmVtYWlsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcmdhbml6YXRpb24oKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+b3JnYW5pemF0aW9uOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMb2NhbGl0eSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5sb2NhbGl0eTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3RhdGUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RhdGU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvdW50cnkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y291bnRyeTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0T3JnYW5pemF0aW9uYWxVbml0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm9yZ2FuaXphdGlvbmFsVW5pdDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICBzZWxmOjpwYXJzZUlkZW50aWZpZXIoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSwgSWRlbnRpZmllcjo6U0VRVUVOQ0UsICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKCiAgICAgICAgJG5hbWVzID0gW107CiAgICAgICAgJG9jdGV0c1RvUmVhZCA9ICRjb250ZW50TGVuZ3RoOwogICAgICAgIHdoaWxlICgkb2N0ZXRzVG9SZWFkID4gMCkgewogICAgICAgICAgICAkcmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSA9IFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWU6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICRvY3RldHNUb1JlYWQgLT0gJHJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUtPmdldE9iamVjdExlbmd0aCgpOwogICAgICAgICAgICAkbmFtZXNbXSA9ICRyZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/CSR/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/CSR/Attributes.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOVxDU1I7Cgp1c2UgRkdcQVNOMVxBU05PYmplY3Q7CnVzZSBGR1xYNTA5XENlcnRpZmljYXRlRXh0ZW5zaW9uczsKdXNlIEZHXEFTTjFcT0lEOwp1c2UgRkdcQVNOMVxQYXJzYWJsZTsKdXNlIEZHXEFTTjFcQ29uc3RydWN0Owp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2V0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyOwoKY2xhc3MgQXR0cmlidXRlcyBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gMHhBMDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQXR0cmlidXRlKCRvYmplY3RJZGVudGlmaWVyLCBTZXQgJGF0dHJpYnV0ZSkKICAgIHsKICAgICAgICBpZiAoaXNfc3RyaW5nKCRvYmplY3RJZGVudGlmaWVyKSkgewogICAgICAgICAgICAkb2JqZWN0SWRlbnRpZmllciA9IG5ldyBPYmplY3RJZGVudGlmaWVyKCRvYmplY3RJZGVudGlmaWVyKTsKICAgICAgICB9CiAgICAgICAgJGF0dHJpYnV0ZVNlcXVlbmNlID0gbmV3IFNlcXVlbmNlKCRvYmplY3RJZGVudGlmaWVyLCAkYXR0cmlidXRlKTsKICAgICAgICAkYXR0cmlidXRlU2VxdWVuY2UtPmdldE51bWJlck9mTGVuZ3RoT2N0ZXRzKCk7ICAvLyBsZW5ndGggYW5kIG51bWJlciBvZiBsZW5ndGggb2N0ZXRzIGlzIGNhbGN1bGF0ZWQKICAgICAgICAkdGhpcy0+YWRkQ2hpbGQoJGF0dHJpYnV0ZVNlcXVlbmNlKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICBzZWxmOjpwYXJzZUlkZW50aWZpZXIoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSwgMHhBMCwgJG9mZnNldEluZGV4KyspOwogICAgICAgICRjb250ZW50TGVuZ3RoID0gc2VsZjo6cGFyc2VDb250ZW50TGVuZ3RoKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICRvY3RldHNUb1JlYWQgPSAkY29udGVudExlbmd0aDsKCiAgICAgICAgJHBhcnNlZE9iamVjdCA9IG5ldyBzZWxmKCk7CiAgICAgICAgd2hpbGUgKCRvY3RldHNUb1JlYWQgPiAwKSB7CiAgICAgICAgICAgICRpbml0aWFsT2Zmc2V0ID0gJG9mZnNldEluZGV4OyAvLyB1c2VkIHRvIGNhbGN1bGF0ZSBob3cgbXVjaCBiaXRzIGhhdmUgYmVlbiByZWFkCiAgICAgICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBJZGVudGlmaWVyOjpTRVFVRU5DRSwgJG9mZnNldEluZGV4KyspOwogICAgICAgICAgICBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CgogICAgICAgICAgICAkb2JqZWN0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICRvaWRTdHJpbmcgPSAkb2JqZWN0SWRlbnRpZmllci0+Z2V0Q29udGVudCgpOwogICAgICAgICAgICBpZiAoJG9pZFN0cmluZyA9PSBPSUQ6OlBLQ1M5X0VYVEVOU0lPTl9SRVFVRVNUKSB7CiAgICAgICAgICAgICAgICAkYXR0cmlidXRlID0gQ2VydGlmaWNhdGVFeHRlbnNpb25zOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGF0dHJpYnV0ZSA9IEFTTk9iamVjdDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHBhcnNlZE9iamVjdC0+YWRkQXR0cmlidXRlKCRvYmplY3RJZGVudGlmaWVyLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgJG9jdGV0c1RvUmVhZCAtPSAoJG9mZnNldEluZGV4IC0gJGluaXRpYWxPZmZzZXQpOwogICAgICAgIH0KCiAgICAgICAgJHBhcnNlZE9iamVjdC0+c2V0Q29udGVudExlbmd0aCgkY29udGVudExlbmd0aCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/CSR/CSR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOVxDU1I7Cgp1c2UgRkdcQVNOMVxPSUQ7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxJbnRlZ2VyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcQml0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBGR1xYNTA5XENlcnRpZmljYXRlU3ViamVjdDsKdXNlIEZHXFg1MDlcQWxnb3JpdGhtSWRlbnRpZmllcjsKdXNlIEZHXFg1MDlcUHVibGljS2V5OwoKY2xhc3MgQ1NSIGV4dGVuZHMgU2VxdWVuY2UKewogICAgY29uc3QgQ1NSX1ZFUlNJT05fTlIgPSAwOwoKICAgIHByb3RlY3RlZCAkc3ViamVjdDsKICAgIHByb3RlY3RlZCAkcHVibGljS2V5OwogICAgcHJvdGVjdGVkICRzaWduYXR1cmU7CiAgICBwcm90ZWN0ZWQgJHNpZ25hdHVyZUFsZ29yaXRobTsKCiAgICBwcm90ZWN0ZWQgJHN0YXJ0U2VxdWVuY2U7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb21tb25OYW1lCiAgICAgKiBAcGFyYW0gc3RyaW5nICRlbWFpbAogICAgICogQHBhcmFtIHN0cmluZyAkb3JnYW5pemF0aW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsb2NhbGl0eQogICAgICogQHBhcmFtIHN0cmluZyAkc3RhdGUKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvdW50cnkKICAgICAqIEBwYXJhbSBzdHJpbmcgJG9yZ2FuaXphdGlvbmFsVW5pdAogICAgICogQHBhcmFtIHN0cmluZyAkcHVibGljS2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRzaWduYXR1cmUKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNpZ25hdHVyZUFsZ29yaXRobQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGNvbW1vbk5hbWUsICRlbWFpbCwgJG9yZ2FuaXphdGlvbiwgJGxvY2FsaXR5LCAkc3RhdGUsICRjb3VudHJ5LCAkb3JnYW5pemF0aW9uYWxVbml0LCAkcHVibGljS2V5LCAkc2lnbmF0dXJlID0gbnVsbCwgJHNpZ25hdHVyZUFsZ29yaXRobSA9IE9JRDo6U0hBMV9XSVRIX1JTQV9TSUdOQVRVUkUpCiAgICB7CiAgICAgICAgJHRoaXMtPnN1YmplY3QgPSBuZXcgQ2VydGlmaWNhdGVTdWJqZWN0KAogICAgICAgICAgICAkY29tbW9uTmFtZSwKICAgICAgICAgICAgJGVtYWlsLAogICAgICAgICAgICAkb3JnYW5pemF0aW9uLAogICAgICAgICAgICAkbG9jYWxpdHksCiAgICAgICAgICAgICRzdGF0ZSwKICAgICAgICAgICAgJGNvdW50cnksCiAgICAgICAgICAgICRvcmdhbml6YXRpb25hbFVuaXQKICAgICAgICApOwogICAgICAgICR0aGlzLT5wdWJsaWNLZXkgPSAkcHVibGljS2V5OwogICAgICAgICR0aGlzLT5zaWduYXR1cmUgPSAkc2lnbmF0dXJlOwogICAgICAgICR0aGlzLT5zaWduYXR1cmVBbGdvcml0aG0gPSAkc2lnbmF0dXJlQWxnb3JpdGhtOwoKICAgICAgICBpZiAoaXNzZXQoJHNpZ25hdHVyZSkpIHsKICAgICAgICAgICAgJHRoaXMtPmNyZWF0ZUNTUlNlcXVlbmNlKCk7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVDU1JTZXF1ZW5jZSgpCiAgICB7CiAgICAgICAgJHZlcnNpb25OciAgICAgICAgICAgID0gbmV3IEludGVnZXIoc2VsZjo6Q1NSX1ZFUlNJT05fTlIpOwogICAgICAgICRwdWJsaWNLZXkgICAgICAgICAgICA9IG5ldyBQdWJsaWNLZXkoJHRoaXMtPnB1YmxpY0tleSk7CiAgICAgICAgJHNpZ25hdHVyZSAgICAgICAgICAgID0gbmV3IEJpdFN0cmluZygkdGhpcy0+c2lnbmF0dXJlKTsKICAgICAgICAkc2lnbmF0dXJlQWxnb3JpdGhtICAgID0gbmV3IEFsZ29yaXRobUlkZW50aWZpZXIoJHRoaXMtPnNpZ25hdHVyZUFsZ29yaXRobSk7CgogICAgICAgICRjZXJ0UmVxdWVzdEluZm8gID0gbmV3IFNlcXVlbmNlKCR2ZXJzaW9uTnIsICR0aGlzLT5zdWJqZWN0LCAkcHVibGljS2V5KTsKCiAgICAgICAgLy8gQ2xlYXIgdGhlIHVuZGVybHlpbmcgQ29uc3RydWN0CiAgICAgICAgJHRoaXMtPnJld2luZCgpOwogICAgICAgICR0aGlzLT5jaGlsZHJlbiA9IFtdOwogICAgICAgICR0aGlzLT5hZGRDaGlsZCgkY2VydFJlcXVlc3RJbmZvKTsKICAgICAgICAkdGhpcy0+YWRkQ2hpbGQoJHNpZ25hdHVyZUFsZ29yaXRobSk7CiAgICAgICAgJHRoaXMtPmFkZENoaWxkKCRzaWduYXR1cmUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduYXR1cmVTdWJqZWN0KCkKICAgIHsKICAgICAgICAkdmVyc2lvbk5yICAgICAgICAgICAgPSBuZXcgSW50ZWdlcihzZWxmOjpDU1JfVkVSU0lPTl9OUik7CiAgICAgICAgJHB1YmxpY0tleSAgICAgICAgICAgID0gbmV3IFB1YmxpY0tleSgkdGhpcy0+cHVibGljS2V5KTsKCiAgICAgICAgJGNlcnRSZXF1ZXN0SW5mbyAgPSBuZXcgU2VxdWVuY2UoJHZlcnNpb25OciwgJHRoaXMtPnN1YmplY3QsICRwdWJsaWNLZXkpOwogICAgICAgIHJldHVybiAkY2VydFJlcXVlc3RJbmZvLT5nZXRCaW5hcnkoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U2lnbmF0dXJlKCRzaWduYXR1cmUsICRzaWduYXR1cmVBbGdvcml0aG0gPSBPSUQ6OlNIQTFfV0lUSF9SU0FfU0lHTkFUVVJFKQogICAgewogICAgICAgICR0aGlzLT5zaWduYXR1cmUgPSAkc2lnbmF0dXJlOwogICAgICAgICR0aGlzLT5zaWduYXR1cmVBbGdvcml0aG0gPSAkc2lnbmF0dXJlQWxnb3JpdGhtOwoKICAgICAgICAkdGhpcy0+Y3JlYXRlQ1NSU2VxdWVuY2UoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgJHRtcCA9IGJhc2U2NF9lbmNvZGUoJHRoaXMtPmdldEJpbmFyeSgpKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgc3RybGVuKCR0bXApOyAkaSsrKSB7CiAgICAgICAgICAgIGlmICgoJGkgKyAyKSAlIDY1ID09IDApIHsKICAgICAgICAgICAgICAgICR0bXAgPSBzdWJzdHIoJHRtcCwgMCwgJGkgKyAxKS4iXG4iLnN1YnN0cigkdG1wLCAkaSArIDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gJy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUgUkVRVUVTVC0tLS0tJy5QSFBfRU9MOwogICAgICAgICRyZXN1bHQgLj0gJHRtcC5QSFBfRU9MOwogICAgICAgICRyZXN1bHQgLj0gJy0tLS0tRU5EIENFUlRJRklDQVRFIFJFUVVFU1QtLS0tLSc7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWZXJzaW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6Q1NSX1ZFUlNJT05fTlI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE9yZ2FuaXphdGlvbk5hbWUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3ViamVjdC0+Z2V0T3JnYW5pemF0aW9uKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExvY2FsTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdWJqZWN0LT5nZXRMb2NhbGl0eSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGF0ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdWJqZWN0LT5nZXRTdGF0ZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb3VudHJ5KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN1YmplY3QtPmdldENvdW50cnkoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0T3JnYW5pemF0aW9uYWxVbml0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN1YmplY3QtPmdldE9yZ2FuaXphdGlvbmFsVW5pdCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQdWJsaWNLZXkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cHVibGljS2V5OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduYXR1cmUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2lnbmF0dXJlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduYXR1cmVBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2lnbmF0dXJlQWxnb3JpdGhtOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/PrivateKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOTsKCnVzZSBGR1xBU04xXE9JRDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE51bGxPYmplY3Q7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJpdFN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdElkZW50aWZpZXI7CgpjbGFzcyBQcml2YXRlS2V5IGV4dGVuZHMgU2VxdWVuY2UKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRoZXhLZXkKICAgICAqIEBwYXJhbSBcRkdcQVNOMVxBU05PYmplY3R8c3RyaW5nICRhbGdvcml0aG1JZGVudGlmaWVyU3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkaGV4S2V5LCAkYWxnb3JpdGhtSWRlbnRpZmllclN0cmluZyA9IE9JRDo6UlNBX0VOQ1JZUFRJT04pCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgKICAgICAgICAgICAgbmV3IFNlcXVlbmNlKAogICAgICAgICAgICAgICAgbmV3IE9iamVjdElkZW50aWZpZXIoJGFsZ29yaXRobUlkZW50aWZpZXJTdHJpbmcpLAogICAgICAgICAgICAgICAgbmV3IE51bGxPYmplY3QoKQogICAgICAgICAgICApLAogICAgICAgICAgICBuZXcgQml0U3RyaW5nKCRoZXhLZXkpCiAgICAgICAgKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/PublicKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOTsKCnVzZSBGR1xBU04xXE9JRDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE51bGxPYmplY3Q7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJpdFN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdElkZW50aWZpZXI7CgpjbGFzcyBQdWJsaWNLZXkgZXh0ZW5kcyBTZXF1ZW5jZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGhleEtleQogICAgICogQHBhcmFtIFxGR1xBU04xXEFTTk9iamVjdHxzdHJpbmcgJGFsZ29yaXRobUlkZW50aWZpZXJTdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRoZXhLZXksICRhbGdvcml0aG1JZGVudGlmaWVyU3RyaW5nID0gT0lEOjpSU0FfRU5DUllQVElPTikKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KAogICAgICAgICAgICBuZXcgU2VxdWVuY2UoCiAgICAgICAgICAgICAgICBuZXcgT2JqZWN0SWRlbnRpZmllcigkYWxnb3JpdGhtSWRlbnRpZmllclN0cmluZyksCiAgICAgICAgICAgICAgICBuZXcgTnVsbE9iamVjdCgpCiAgICAgICAgICAgICksCiAgICAgICAgICAgIG5ldyBCaXRTdHJpbmcoJGhleEtleSkKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/SAN/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/SAN/DNSName.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOVxTQU47Cgp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcR2VuZXJhbFN0cmluZzsKCmNsYXNzIEROU05hbWUgZXh0ZW5kcyBHZW5lcmFsU3RyaW5nCnsKICAgIGNvbnN0IElERU5USUZJRVIgPSAweDgyOyAvLyBub3Qgc3VyZSB5ZXQgd2h5IHRoaXMgaXMgdGhlIGlkZW50aWZpZXIgdXNlZCBpbiBTQU4gZXh0ZW5zaW9ucwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZG5zTmFtZVN0cmluZykKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRkbnNOYW1lU3RyaW5nKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OklERU5USUZJRVI7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/SAN/IPAddress.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOVxTQU47Cgp1c2UgRkdcQVNOMVxBU05PYmplY3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwoKY2xhc3MgSVBBZGRyZXNzIGV4dGVuZHMgQVNOT2JqZWN0IGltcGxlbWVudHMgUGFyc2FibGUKewogICAgY29uc3QgSURFTlRJRklFUiA9IDB4ODc7IC8vIG5vdCBzdXJlIHlldCB3aHkgdGhpcyBpcyB0aGUgaWRlbnRpZmllciB1c2VkIGluIFNBTiBleHRlbnNpb25zCgogICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICBwcml2YXRlICR2YWx1ZTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGlwQWRkcmVzc1N0cmluZykKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkaXBBZGRyZXNzU3RyaW5nOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6SURFTlRJRklFUjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIDQ7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgJGlwUGFydHMgPSBleHBsb2RlKCcuJywgJHRoaXMtPnZhbHVlKTsKICAgICAgICAkYmluYXJ5ICA9IGNocigkaXBQYXJ0c1swXSk7CiAgICAgICAgJGJpbmFyeSAuPSBjaHIoJGlwUGFydHNbMV0pOwogICAgICAgICRiaW5hcnkgLj0gY2hyKCRpcFBhcnRzWzJdKTsKICAgICAgICAkYmluYXJ5IC49IGNocigkaXBQYXJ0c1szXSk7CgogICAgICAgIHJldHVybiAkYmluYXJ5OwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBzZWxmOjpJREVOVElGSUVSLCAkb2Zmc2V0SW5kZXgrKyk7CiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgaWYgKCRjb250ZW50TGVuZ3RoICE9IDQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbigiQSBGR1xcWDUwOVxTQU5cSVBBZGRyZXNzIHNob3VsZCBoYXZlIGEgY29udGVudCBsZW5ndGggb2YgNC4gRXh0cmFjdGVkIGxlbmd0aCB3YXMgeyRjb250ZW50TGVuZ3RofSIsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICAkaXBBZGRyZXNzU3RyaW5nID0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSkuJy4nOwogICAgICAgICRpcEFkZHJlc3NTdHJpbmcgLj0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSkuJy4nOwogICAgICAgICRpcEFkZHJlc3NTdHJpbmcgLj0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSkuJy4nOwogICAgICAgICRpcEFkZHJlc3NTdHJpbmcgLj0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSk7CgogICAgICAgICRwYXJzZWRPYmplY3QgPSBuZXcgc2VsZigkaXBBZGRyZXNzU3RyaW5nKTsKICAgICAgICAkcGFyc2VkT2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKTsKCiAgICAgICAgcmV0dXJuICRwYXJzZWRPYmplY3Q7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/SAN/SubjectAlternativeNames.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOVxTQU47Cgp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxBU05PYmplY3Q7CnVzZSBGR1xBU04xXE9JRDsKdXNlIEZHXEFTTjFcUGFyc2FibGU7CnVzZSBGR1xBU04xXElkZW50aWZpZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKCi8qKgogKiBTZWUgc2VjdGlvbiA4LjMuMi4xIG9mIElUVS1UIFguNTA5LgogKi8KY2xhc3MgU3ViamVjdEFsdGVybmF0aXZlTmFtZXMgZXh0ZW5kcyBBU05PYmplY3QgaW1wbGVtZW50cyBQYXJzYWJsZQp7CiAgICBwcml2YXRlICRhbHRlcm5hdGl2ZU5hbWVzU2VxdWVuY2U7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+YWx0ZXJuYXRpdmVOYW1lc1NlcXVlbmNlID0gbmV3IFNlcXVlbmNlKCk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNhbGN1bGF0ZUNvbnRlbnRMZW5ndGgoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWx0ZXJuYXRpdmVOYW1lc1NlcXVlbmNlLT5nZXRPYmplY3RMZW5ndGgoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6Ok9DVEVUU1RSSU5HOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGREb21haW5OYW1lKEROU05hbWUgJGRvbWFpbk5hbWUpCiAgICB7CiAgICAgICAgJHRoaXMtPmFsdGVybmF0aXZlTmFtZXNTZXF1ZW5jZS0+YWRkQ2hpbGQoJGRvbWFpbk5hbWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRJUChJUEFkZHJlc3MgJGlwKQogICAgewogICAgICAgICR0aGlzLT5hbHRlcm5hdGl2ZU5hbWVzU2VxdWVuY2UtPmFkZENoaWxkKCRpcCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWx0ZXJuYXRpdmVOYW1lc1NlcXVlbmNlLT5nZXRDb250ZW50KCk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hbHRlcm5hdGl2ZU5hbWVzU2VxdWVuY2UtPmdldEJpbmFyeSgpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBJZGVudGlmaWVyOjpPQ1RFVFNUUklORywgJG9mZnNldEluZGV4KyspOwogICAgICAgICRjb250ZW50TGVuZ3RoID0gc2VsZjo6cGFyc2VDb250ZW50TGVuZ3RoKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwoKICAgICAgICBpZiAoJGNvbnRlbnRMZW5ndGggPCAyKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ0NhbiBub3QgcGFyc2UgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lczogVGhlIFNlcXVlbmNlIHdpdGhpbiB0aGUgb2N0ZXQgc3RyaW5nIGFmdGVyIHRoZSBPYmplY3QgaWRlbnRpZmllciAnLk9JRDo6Q0VSVF9FWFRfU1VCSkVDVF9BTFRfTkFNRS4iIGlzIHRvbyBzaG9ydCAoeyRjb250ZW50TGVuZ3RofSBvY3RldHMpIiwgJG9mZnNldEluZGV4KTsKICAgICAgICB9CgogICAgICAgICRvZmZzZXRPZlNlcXVlbmNlID0gJG9mZnNldEluZGV4OwogICAgICAgICRzZXF1ZW5jZSA9IFNlcXVlbmNlOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICRvZmZzZXRPZlNlcXVlbmNlICs9ICRzZXF1ZW5jZS0+Z2V0TnVtYmVyT2ZMZW5ndGhPY3RldHMoKSArIDE7CgogICAgICAgIGlmICgkc2VxdWVuY2UtPmdldE9iamVjdExlbmd0aCgpICE9ICRjb250ZW50TGVuZ3RoKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ0NhbiBub3QgcGFyc2UgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lczogVGhlIFNlcXVlbmNlIGxlbmd0aCBkb2VzIG5vdCBtYXRjaCB0aGUgbGVuZ3RoIG9mIHRoZSBzdXJyb3VuZGluZyBvY3RldCBzdHJpbmcnLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgIH0KCiAgICAgICAgJHBhcnNlZE9iamVjdCA9IG5ldyBzZWxmKCk7CiAgICAgICAgLyoqIEB2YXIgXEZHXEFTTjFcQVNOT2JqZWN0ICRvYmplY3QgKi8KICAgICAgICBmb3JlYWNoICgkc2VxdWVuY2UgYXMgJG9iamVjdCkgewogICAgICAgICAgICBpZiAoJG9iamVjdC0+Z2V0VHlwZSgpID09IEROU05hbWU6OklERU5USUZJRVIpIHsKICAgICAgICAgICAgICAgICRkb21haW5OYW1lID0gRE5TTmFtZTo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldE9mU2VxdWVuY2UpOwogICAgICAgICAgICAgICAgJHBhcnNlZE9iamVjdC0+YWRkRG9tYWluTmFtZSgkZG9tYWluTmFtZSk7CiAgICAgICAgICAgIH0gZWxzZWlmICgkb2JqZWN0LT5nZXRUeXBlKCkgPT0gSVBBZGRyZXNzOjpJREVOVElGSUVSKSB7CiAgICAgICAgICAgICAgICAkaXAgPSBJUEFkZHJlc3M6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRPZlNlcXVlbmNlKTsKICAgICAgICAgICAgICAgICRwYXJzZWRPYmplY3QtPmFkZElQKCRpcCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdDb3VsZCBub3QgcGFyc2UgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lOiBPbmx5IEROU05hbWUgYW5kIElQIFNBTnMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQnLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcGFyc2VkT2JqZWN0LT5nZXRCaW5hcnkoKTsgLy8gRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgY29udGVudCBvY3RldHMgYW5kIG9iamVjdCBzaXplcyBvbmNlIChqdXN0IHRvIGxldCB0aGUgZXF1YWxpdHkgdW5pdCB0ZXN0cyBwYXNzIDovICkKICAgICAgICByZXR1cm4gJHBhcnNlZE9iamVjdDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDEyLTIwMTUgRnJpZWRyaWNoIEdyb8OfZSA8ZnJpZWRyaWNoLmdyb3NzZUBnbWFpbC5jb20+CgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbApjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbApjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFClNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UEhQQVNOMQo9PT09PT09CgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvYWN0aW9ucy93b3JrZmxvd3MvcGhwdW5pdC55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9hY3Rpb25zL3dvcmtmbG93cy9waHB1bml0LnltbCkKWyFbUEhQIDcgcmVhZHldKGh0dHA6Ly9waHA3cmVhZHkudGltZXNwbGludGVyLmNoL2Zncm9zc2UvUEhQQVNOMS9iYWRnZS5zdmcpXShodHRwczovL3RyYXZpcy1jaS5vcmcvZmdyb3NzZS9QSFBBU04xKQpbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2Zncm9zc2UvUEhQQVNOMS9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlciZzZXJ2aWNlPWdpdGh1YildKGh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi9mZ3Jvc3NlL1BIUEFTTjE/YnJhbmNoPW1hc3RlcikKClshW0xhdGVzdCBTdGFibGUgVmVyc2lvbl0oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9mZ3Jvc3NlL3BocGFzbjEvdi9zdGFibGUucG5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2Zncm9zc2UvcGhwYXNuMSkKWyFbVG90YWwgRG93bmxvYWRzXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL2Zncm9zc2UvcGhwYXNuMS9kb3dubG9hZHMucG5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2Zncm9zc2UvcGhwYXNuMSkKWyFbTGF0ZXN0IFVuc3RhYmxlIFZlcnNpb25dKGh0dHBzOi8vcG9zZXIucHVneC5vcmcvZmdyb3NzZS9waHBhc24xL3YvdW5zdGFibGUucG5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2Zncm9zc2UvcGhwYXNuMSkKWyFbTGljZW5zZV0oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9mZ3Jvc3NlL3BocGFzbjEvbGljZW5zZS5wbmcpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvZmdyb3NzZS9waHBhc24xKQoKLS0tCgo8aDI+PHNwYW4gc3R5bGU9ImNvbG9yOnJlZCI+Tm90aWNlOiBUaGlzIGxpYnJhcnkgaXMgbm8gbG9uZ2VyIGFjdGl2ZWx5IG1haW50YWluZWQhPC9zcGFuPjwvaDI+CklmIHlvdSBhcmUgY3VycmVudGx5IHVzaW5nIFBIUEFTTjEsIHRoaXMgbWlnaHQgbm90IGJlIGFuIGltbWVkaWF0ZSBwcm9ibGVtIGZvciB5b3UsIHNpbmNlIHRoaXMgbGlicmFyeSB3YXMgYWx3YXlzIHJhdGhlciBzdGFibGUuCgpIb3dldmVyLCB5b3UgYXJlIGFkdmlzZWQgdG8gbWlncmF0ZSB0byBhbHRlcm5hdGl2ZSBwYWNrYWdlcyB0byBlbnN1cmUgdGhhdCB5b3VyIGFwcGxpY2F0aW9ucyByZW1haW4gZnVuY3Rpb25hbCBhbHNvIHdpdGggbmV3ZXIgUEhQIHZlcnNpb25zLgoKLS0tCgpBIFBIUCBGcmFtZXdvcmsgdGhhdCBhbGxvd3MgeW91IHRvIGVuY29kZSBhbmQgZGVjb2RlIGFyYml0cmFyeSBbQVNOLjFdWzNdIHN0cnVjdHVyZXMKdXNpbmcgdGhlIFtJVFUtVCBYLjY5MCBFbmNvZGluZyBSdWxlc11bNF0uClRoaXMgZW5jb2RpbmcgaXMgdmVyeSBmcmVxdWVudGx5IHVzZWQgaW4gW1guNTA5IFBLSSBlbnZpcm9ubWVudHNdWzVdIG9yIHRoZSBjb21tdW5pY2F0aW9uIGJldHdlZW4gaGV0ZXJvZ2VuZW91cyBjb21wdXRlciBzeXN0ZW1zLgoKVGhlIEFQSSBhbGxvd3MgeW91IHRvIGVuY29kZSBBU04uMSBzdHJ1Y3R1cmVzIHRvIGNyZWF0ZSBiaW5hcnkgZGF0YSBzdWNoIGFzIGNlcnRpZmljYXRlCnNpZ25pbmcgcmVxdWVzdHMgKENTUiksIFguNTA5IGNlcnRpZmljYXRlcyBvciBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGxpc3RzIChDUkwpLgpQSFBBU04xIGNhbiBhbHNvIHJlYWQgW0JFUiBlbmNvZGVkXVs2XSBiaW5hcnkgZGF0YSBpbnRvIHNlcGFyYXRlIFBIUCBvYmplY3RzIHRoYXQgY2FuIGJlIG1hbmlwdWxhdGVkIGJ5IHRoZSB1c2VyIGFuZCByZWVuY29kZWQgYWZ0ZXJ3YXJkcy4KClRoZSAqKmNoYW5nZWxvZyoqIGNhbiBub3cgYmUgZm91bmQgYXQgW0NIQU5HRUxPRy5tZF0oQ0hBTkdFTE9HLm1kKS4KCiMjIERlcGVuZGVuY2llcwoKUEhQQVNOMSByZXF1aXJlcyBhdCBsZWFzdCBgUEhQIDcuMGAgYW5kIGVpdGhlciB0aGUgYGdtcGAgb3IgYGJjbWF0aGAgZXh0ZW5zaW9uLgpTdXBwb3J0IGZvciBvbGRlciBQSFAgdmVyc2lvbnMgKGkuZS4gUEhQIDUuNikgd2FzIGRyb3BwZWQgc3RhcnRpbmcgd2l0aCBgdjIuMGAuCklmIHlvdSBtdXN0IHVzZSBhbiBvdXRkYXRlZCBQSFAgdmVyc2lvbiBjb25zaWRlciB1c2luZyBbUEhQQVNOIHYxLjVdWzEzXS4KCkZvciB0aGUgbG9hZGluZyBvZiBvYmplY3QgaWRlbnRpZmllciBuYW1lcyBkaXJlY3RseSBmcm9tIHRoZSB3ZWIgW2N1cmxdWzddIGlzIHVzZWQuCgojIyBJbnN0YWxsYXRpb24KClRoZSBwcmVmZXJyZWQgd2F5IHRvIGluc3RhbGwgdGhpcyBsaWJyYXJ5IGlzIHRvIHJlbHkgb24gW0NvbXBvc2VyXVsyXToKCmBgYGJhc2gKJCBjb21wb3NlciByZXF1aXJlIGZncm9zc2UvcGhwYXNuMQpgYGAKCiMjIFVzYWdlCgojIyMgRW5jb2RpbmcgQVNOLjEgU3RydWN0dXJlcwoKUEhQQVNOMSBvZmZlcnMgeW91IGEgY2xhc3MgZm9yIGVhY2ggb2YgdGhlIGltcGxlbWVudGVkIEFTTi4xIHVuaXZlcnNhbCB0eXBlcy4KVGhlIGNvbnN0cnVjdG9ycyBzaG91bGQgYmUgcHJldHR5IHNlbGYgZXhwbGFuYXRvcnkgc28geW91IHNob3VsZCBoYXZlIG5vIGJpZyB0cm91YmxlIGdldHRpbmcgc3RhcnRlZC4KQWxsIGRhdGEgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIFtERVIgZW5jb2RpbmddWzhdCgpgYGBwaHAKdXNlIEZHXEFTTjFcT0lEOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSW50ZWdlcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJvb2xlYW47CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxFbnVtZXJhdGVkOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSUE1U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2JqZWN0SWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFByaW50YWJsZVN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFNlcXVlbmNlOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2V0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcTnVsbE9iamVjdDsKCiRpbnRlZ2VyID0gbmV3IEludGVnZXIoMTIzNDU2KTsgICAgICAgIAokYm9vbGVhbiA9IG5ldyBCb29sZWFuKHRydWUpOwokZW51bSA9IG5ldyBFbnVtZXJhdGVkKDEpOwokaWE1U3RyaW5nID0gbmV3IElBNVN0cmluZygnSGVsbG8gd29ybGQnKTsKCiRhc25OdWxsID0gbmV3IE51bGxPYmplY3QoKTsKJG9iamVjdElkZW50aWZpZXIxID0gbmV3IE9iamVjdElkZW50aWZpZXIoJzEuMi4yNTAuMS4xNi45Jyk7CiRvYmplY3RJZGVudGlmaWVyMiA9IG5ldyBPYmplY3RJZGVudGlmaWVyKE9JRDo6UlNBX0VOQ1JZUFRJT04pOwokcHJpbnRhYmxlU3RyaW5nID0gbmV3IFByaW50YWJsZVN0cmluZygnRm9vIGJhcicpOwoKJHNlcXVlbmNlID0gbmV3IFNlcXVlbmNlKCRpbnRlZ2VyLCAkYm9vbGVhbiwgJGVudW0sICRpYTVTdHJpbmcpOwokc2V0ID0gbmV3IFNldCgkc2VxdWVuY2UsICRhc25OdWxsLCAkb2JqZWN0SWRlbnRpZmllcjEsICRvYmplY3RJZGVudGlmaWVyMiwgJHByaW50YWJsZVN0cmluZyk7CgokbXlCaW5hcnkgID0gJHNlcXVlbmNlLT5nZXRCaW5hcnkoKTsKJG15QmluYXJ5IC49ICRzZXQtPmdldEJpbmFyeSgpOwoKZWNobyBiYXNlNjRfZW5jb2RlKCRteUJpbmFyeSk7CmBgYAoKCiMjIyBEZWNvZGluZyBiaW5hcnkgZGF0YQoKRGVjb2RpbmcgQkVSIGVuY29kZWQgYmluYXJ5IGRhdGEgaXMganVzdCBhcyBlYXN5IGFzIGVuY29kaW5nIGl0OgoKYGBgcGhwCnVzZSBGR1xBU04xXEFTTk9iamVjdDsKCiRiYXNlNjRTdHJpbmcgPSAuLi4KJGJpbmFyeURhdGEgPSBiYXNlNjRfZGVjb2RlKCRiYXNlNjRTdHJpbmcpOyAgICAgICAgCiRhc25PYmplY3QgPSBBU05PYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwoKCi8vIGRvIHN0dWZmCmBgYAoKSWYgeW91IGFscmVhZHkga25vdyBleGFjdGx5IGhvdyB5b3VyIGV4cGVjdGVkIGRhdGEgc2hvdWxkIGxvb2sgbGlrZSB5b3UgY2FuIHVzZSB0aGUgYEZHXEFTTjFcVGVtcGxhdGVQYXJzZXJgOgoKYGBgcGhwCnVzZSBGR1xBU04xXFRlbXBsYXRlUGFyc2VyOwoKLy8gZmlyc3QgZGVmaW5lIHlvdXIgdGVtcGxhdGUKJHRlbXBsYXRlID0gWwogICAgSWRlbnRpZmllcjo6U0VRVUVOQ0UgPT4gWwogICAgICAgIElkZW50aWZpZXI6OlNFVCA9PiBbCiAgICAgICAgICAgIElkZW50aWZpZXI6Ok9CSkVDVF9JREVOVElGSUVSLAogICAgICAgICAgICBJZGVudGlmaWVyOjpTRVFVRU5DRSA9PiBbCiAgICAgICAgICAgICAgICBJZGVudGlmaWVyOjpJTlRFR0VSLAogICAgICAgICAgICAgICAgSWRlbnRpZmllcjo6QklUU1RSSU5HLAogICAgICAgICAgICBdCiAgICAgICAgXQogICAgXQpdOwoKLy8gaWYgeW91ciBiaW5hcnkgZGF0YSBpcyBub3QgbWF0Y2hpbmcgdGhlIHRlbXBsYXRlIHlvdSBwcm92aWRlZCB0aGlzIHdpbGwgdGhyb3cgYW4gYFxFeGNlcHRpb25gOgokcGFyc2VyID0gbmV3IFRlbXBsYXRlUGFyc2VyKCk7CiRvYmplY3QgPSAkcGFyc2VyLT5wYXJzZUJpbmFyeSgkZGF0YSwgJHRlbXBsYXRlKTsKCi8vIHRoZXJlIGlzIGFsc28gYSBjb252ZW5pZW5jZSBmdW5jdGlvbiBpZiB5b3UgcGFyc2UgYmluYXJ5IGRhdGEgZnJvbSBiYXNlNjQ6CiRvYmplY3QgPSAkcGFyc2VyLT5wYXJzZUJhc2U2NCgkZGF0YSwgJHRlbXBsYXRlKTsKYGBgCgpZb3UgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIG1ha2Ugc3VyZSB5b3VyIGRhdGEgaGFzIGV4YWN0bHkgdGhlIGZvcm1hdCB5b3UgYXJlIGV4cGVjdGluZy4KCiMjIyBOYXZpZ2F0aW5nIGRlY29kZWQgZGF0YQoKQWxsIGNvbnN0cnVjdGVkIGNsYXNzZXMgKGkuZS4gYFNlcXVlbmNlYCBhbmQgYFNldGApIGNhbiBiZSBuYXZpZ2F0ZWQgYnkgYXJyYXkgYWNjZXNzIG9yIHVzaW5nIGFuIGl0ZXJhdG9yLgpZb3UgY2FuIGZpbmQgZXhhbXBsZXMKW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvYmxvYi9mNjQ0MmNhZGRhOWQzNmYzNTE4YzczN2UzMmYyODMwMGE1ODhiNzc3L3Rlc3RzL0FTTjEvVW5pdmVyc2FsL1NlcXVlbmNlVGVzdC5waHAjTDE0OC0xNDgpLApbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9ibG9iL2Y2NDQyY2FkZGE5ZDM2ZjM1MThjNzM3ZTMyZjI4MzAwYTU4OGI3NzcvdGVzdHMvQVNOMS9Vbml2ZXJzYWwvU2VxdWVuY2VUZXN0LnBocCNMMTIxKSBhbmQgCltoZXJlXShodHRwczovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xL2Jsb2IvZjY0NDJjYWRkYTlkMzZmMzUxOGM3MzdlMzJmMjgzMDBhNTg4Yjc3Ny90ZXN0cy9BU04xL1RlbXBsYXRlUGFyc2VyVGVzdC5waHAjTDQ1KS4KCgojIyMgR2l2ZSBtZSBtb3JlIGV4YW1wbGVzIQoKVG8gc2VlIHNvbWUgZXhhbXBsZSB1c2FnZSBvZiB0aGUgQVBJIGNsYXNzZXMgb3Igc29tZSBnZW5lcmF0ZWQgb3V0cHV0IGNoZWNrIG91dCB0aGUgW2V4YW1wbGVzXShodHRwczovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xL3RyZWUvbWFzdGVyL2V4YW1wbGVzKS4KCgojIyMgSG93IGRvIEkgY29udHJpYnV0ZT8KClRoaXMgcHJvamVjdCBpcyBubyBsb25nZXIgbWFpbnRhaW5lZCBhbmQgdGh1cyBkb2VzIG5vdCBhY2NlcHQgYW55IG5ldyBjb250cmlidXRpb25zLgoKIyMjIFRoYW5rcwoKVG8gW2FsbCBjb250cmlidXRvcnNdWzFdIHNvIGZhciEKCiMjIExpY2Vuc2UKClRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgW01JVCBMaWNlbnNlXShMSUNFTlNFKS4KClsxXTogaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9ncmFwaHMvY29udHJpYnV0b3JzClsyXTogaHR0cHM6Ly9nZXRjb21wb3Nlci5vcmcvClszXTogaHR0cDovL3d3dy5pdHUuaW50L0lUVS1UL2FzbjEvCls0XTogaHR0cDovL3d3dy5pdHUuaW50L0lUVS1UL3JlY29tbWVuZGF0aW9ucy9yZWMuYXNweD9yZWM9eC42OTAKWzVdOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1guNTA5Cls2XTogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9YLjY5MCNCRVJfZW5jb2RpbmcKWzddOiBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vYm9vay5jdXJsLnBocApbOF06IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWC42OTAjREVSX2VuY29kaW5nCls5XTogaHR0cHM6Ly9zdHlsZWNpLmlvClsxMF06IGh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi9mZ3Jvc3NlL1BIUEFTTjEKWzExXTogaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9ibG9iL21hc3Rlci90ZXN0cy9BU04xL1RlbXBsYXRlUGFyc2VyVGVzdC5waHAjTDE2ClsxMl06IGh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZC9mb3J1bS9waHBhc24xClsxM106IGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9mZ3Jvc3NlL3BocGFzbjEjMS41LjIK]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDaGFuZ2UgTG9nCgpQbGVhc2UgcmVmZXIgdG8gW1VQR1JBRElOR10oVVBHUkFESU5HLm1kKSBndWlkZSBmb3IgdXBncmFkaW5nIHRvIGEgbWFqb3IgdmVyc2lvbi4KCgojIyA3LjEyLjAgLSAyMDI2LTA2LTE2CgojIyMgQWRkZWQKCi0gQWRkZWQgYFJlcXVlc3RPcHRpb25zYCBjb25zdGFudHMgZm9yIGBjdXJsYCwgYHJldHJpZXNgLCBhbmQgYHN0cmVhbV9jb250ZXh0YAoKIyMjIENoYW5nZWQKCi0gQWRqdXN0ZWQgYGd1enpsZWh0dHAvcHNyN2AgdmVyc2lvbiBjb25zdHJhaW50IHRvIGBeMi4xMmAKLSBDb25zdHJhaW4gY1VSTCB0cmFuc3BvcnQgc2hhcmluZyB0byBzYWZlIGxpYmN1cmwgRE5TIGFuZCBTU0wgc2Vzc2lvbiBzdXBwb3J0Ci0gUmVzb2x2ZSBwcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gdGhlIGNVUkwgaGFuZGxlcnM7IGxpYmN1cmwgbm8gbG9uZ2VyIHJlYWRzIHRoZSBlbnZpcm9ubWVudCBpdHNlbGYKLSBJZ25vcmUgcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdoZW4gdGhlIGBwcm94eWAgcmVxdWVzdCBvcHRpb24gbWFrZXMgYSBkZWNpc2lvbgotIERpc2FibGUgcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9uIFdpbmRvd3MgU0FQSXMgb3RoZXIgdGhhbiBDTEkgKGh0dHBveHkgaGFyZGVuaW5nKQotIFJlZGFjdCBwcm94eSBjcmVkZW50aWFscyBmcm9tIGNVUkwgaGFuZGxlciBlcnJvciBtZXNzYWdlcywgZm9sbG93aW5nIGBQc3I3XFV0aWxzOjpyZWRhY3RVc2VySW5mbygpYAotIE5vcm1hbGl6ZSBuby1wcm94eSBkb21haW4gYW5kIElQIGxpdGVyYWwgbWF0Y2hpbmcgYWNyb3NzIHRoZSBjVVJMIGFuZCBzdHJlYW0gaGFuZGxlcnMKCiMjIyBEZXByZWNhdGVkCgotIERlcHJlY2F0ZWQgdGhlIHJlcXVlc3QtbGV2ZWwgYGhhbmRsZXJgIG9wdGlvbiwgd2hpY2ggd2lsbCBiZSBpZ25vcmVkIGluIDguMAotIERlcHJlY2F0ZWQgcmF3IGNVUkwgcmVxdWVzdCBvcHRpb25zIG91dHNpZGUgdGhlIGJ1aWx0LWluIGNVUkwgaGFuZGxlcnMnIGFsbG93LWxpc3QKLSBEZXByZWNhdGVkIHRoZSBgQ1VSTE9QVF9QUk9YWVRZUEVgIGNVUkwgcmVxdWVzdCBvcHRpb247IHNldCB0aGUgcHJveHkgdHlwZSB2aWEgYSBzY2hlbWUtcHJlZml4ZWQgcHJveHkgVVJMCi0gRGVwcmVjYXRlZCBQSFAgc3RyZWFtIGNvbnRleHQgb3B0aW9ucyBvdXRzaWRlIHRoZSBidWlsdC1pbiBzdHJlYW0gaGFuZGxlciBhbGxvdy1saXN0Ci0gRGVwcmVjYXRlZCBwYXNzaW5nIGBudGxtYCBhcyBhIGJ1aWx0LWluIGBhdXRoYCB0eXBlCi0gRGVwcmVjYXRlZCBgVXRpbHM6OmRlc2NyaWJlVHlwZSgpYAotIERlcHJlY2F0ZWQgbm9uLWZpbml0ZSBmbG9hdHMgaW4gdGhlIGBxdWVyeWAgYW5kIGBmb3JtX3BhcmFtc2Agb3B0aW9uczsgOC4wIHJlamVjdHMgdGhlbQotIERlcHJlY2F0ZWQgbm9uLXN0cmluZyBzY2FsYXIgdmFsdWVzIGluIHRoZSBgYm9keWAgb3B0aW9uOyA4LjAgcmVqZWN0cyB0aGVtCgojIyMgRml4ZWQKCi0gRml4IGNVUkwgVExTIGFuZCBIVFRQLzIgY2FwYWJpbGl0eSBkZXRlY3Rpb24gdXNpbmcgbGliY3VybCBmZWF0dXJlIGNoZWNrcwotIEZpeCBwcm94eSBgbm9gIGxpc3QgbWF0Y2hlcyBiZWluZyByZS1wcm94aWVkIHRocm91Z2ggZW52aXJvbm1lbnQtY29uZmlndXJlZCBwcm94aWVzIGJ5IGxpYmN1cmwKLSBGaXggYG5vYCBsaXN0IGFuZCBgTk9fUFJPWFlgIG1hdGNoaW5nIHRvIHN1cHBvcnQgSVAgQ0lEUiByYW5nZXMsIG1hdGNoaW5nIGxpYmN1cmwKLSBGaXggdGhlIHN0cmVhbSBoYW5kbGVyIG5vdCBhcHBseWluZyBzY2hlbWUtbGVzcyBwcm94aWVzIGFuZCB0aGVpciBjcmVkZW50aWFscwoKCiMjIDcuMTEuMiAtIDIwMjYtMDYtMTIKCiMjIyBGaXhlZAoKLSBGaXhlZCBub24tZmluaXRlIGZsb2F0IHZhbHVlcyBlbWl0dGluZyBjb2VyY2lvbiB3YXJuaW5ncyBvbiBQSFAgOC41CgoKIyMgNy4xMS4xIC0gMjAyNi0wNi0wNwoKIyMjIEZpeGVkCgotIElnbm9yZSByZXF1ZXN0LWxldmVsIGB0cmFuc3BvcnRfc2hhcmluZ2AsIG1hdGNoaW5nIG90aGVyIHVua25vd24gcmVxdWVzdCBvcHRpb25zCgoKIyMgNy4xMS4wIC0gMjAyNi0wNi0wMgoKIyMjIEFkZGVkCgotIEFkZGVkIHN1cHBvcnQgZm9yIHByb3ZpZGluZyB0aGUgYHByb3h5YCByZXF1ZXN0IG9wdGlvbidzIGBub2AgdmFsdWUgYXMgYSBjb21tYS1kZWxpbWl0ZWQgc3RyaW5nCi0gQWRkZWQgdGhlIGBwcm90b2NvbHNgIHJlcXVlc3Qgb3B0aW9uIHRvIHJlc3RyaWN0IGFsbG93ZWQgVVJJIHNjaGVtZXMgZm9yIHJlcXVlc3QgdHJhbnNmZXJzCi0gQWRkZWQgYGNlcnRfdHlwZWAgYW5kIGBzc2xfa2V5X3R5cGVgIHJlcXVlc3Qgb3B0aW9ucyBmb3IgVExTIGNlcnRpZmljYXRlIGFuZCBwcml2YXRlLWtleSBmaWxlIHR5cGVzCi0gQWRkZWQgUEhQIHN0cmVhbSBoYW5kbGVyIHN1cHBvcnQgZm9yIHRoZSBgc3NsX2tleWAgcmVxdWVzdCBvcHRpb24KLSBBZGRlZCB0cmFuc3BvcnQgc2hhcmluZyB2aWEgdGhlIGB0cmFuc3BvcnRfc2hhcmluZ2AgY2xpZW50IGFuZCBjVVJMIGhhbmRsZXIgb3B0aW9ucwoKIyMjIENoYW5nZWQKCi0gQWRqdXN0ZWQgYGd1enpsZWh0dHAvcHJvbWlzZXNgIHZlcnNpb24gY29uc3RyYWludCB0byBgXjIuNWAKLSBBZGp1c3RlZCBgZ3V6emxlaHR0cC9wc3I3YCB2ZXJzaW9uIGNvbnN0cmFpbnQgdG8gYF4yLjExYAotIEFsbG93ZWQgZG9tYWlubGVzcyBgU2V0Q29va2llYCBpbnN0YW5jZXMgdG8gYmUgc3RvcmVkIHdpdGhvdXQgd2lsZGNhcmQgcmVxdWVzdCBtYXRjaGluZwotIENoYW5nZWQgbm8tcHJveHkgbWF0Y2hpbmcgdG8gcmVzcGVjdCByZXF1ZXN0IHBvcnRzIGZvciBob3N0LWFuZC1wb3J0IHJ1bGVzCi0gUHJldmVudGVkIGBDdXJsTXVsdGlIYW5kbGVyYCBkZXN0cnVjdG9ycyBmcm9tIHRocm93aW5nIGR1cmluZyBjbGVhbnVwCi0gSW1wcm92ZWQgaW52YWxpZCByZXNwb25zZSBoYW5kbGluZyBhY3Jvc3MgaGFuZGxlcnMKCiMjIyBEZXByZWNhdGVkCgotIERlcHJlY2F0ZWQgbm9uLWl0ZXJhYmxlIGBQb29sYCByZXF1ZXN0IGNvbGxlY3Rpb25zLCB3aGljaCB3aWxsIGJlIHJlamVjdGVkIGluIDguMAotIERlcHJlY2F0ZWQgbm9uLXVwcGVyY2FzZSBlYXN5IHJlcXVlc3QgbWV0aG9kczsgOC4wIHByZXNlcnZlcyBtZXRob2QgY2FzaW5nCi0gRGVwcmVjYXRlZCBub24tc3RyaW5nIGBoZWFkZXJzYCByZXF1ZXN0IG9wdGlvbiB2YWx1ZXMsIHdoaWNoIHdpbGwgYmUgcmVqZWN0ZWQgaW4gOC4wCi0gRGVwcmVjYXRlZCBlbXB0eSBgaGVhZGVyc2AgcmVxdWVzdCBvcHRpb24gdmFsdWUgYXJyYXlzLCB3aGljaCB3aWxsIGJlIHJlamVjdGVkIGluIDguMAotIERlcHJlY2F0ZWQgZW1wdHkgYW5kIG1hbGZvcm1lZCByZXF1ZXN0IHByb3RvY29sIHZlcnNpb25zLCB3aGljaCB3aWxsIGJlIHJlamVjdGVkIGluIDguMAotIERlcHJlY2F0ZWQgY29uZmxpY3RpbmcgcmF3IGNVUkwgcmVxdWVzdCBvcHRpb25zLCBpbmNsdWRpbmcgYENVUkxPUFRfU0hBUkVgLCB3aGljaCB3aWxsIGJlIHJlamVjdGVkIGluIDguMAotIERlcHJlY2F0ZWQgc2NhbGFyLWNvZXJjZWQgYGlkbl9jb252ZXJzaW9uYCByZXF1ZXN0IG9wdGlvbiB2YWx1ZXMsIHdoaWNoIHdpbGwgYmUgcmVqZWN0ZWQgaW4gOC4wCi0gRGVwcmVjYXRlZCBpbnZhbGlkIGRvY3VtZW50ZWQgcmVxdWVzdCBvcHRpb24gdmFsdWUgdHlwZXMsIHdoaWNoIHdpbGwgYmUgcmVqZWN0ZWQgaW4gOC4wCi0gRGVwcmVjYXRlZCBzZWxlY3RlZCByZXF1ZXN0IG9wdGlvbnMgaWdub3JlZCBieSBpbmNvbXBhdGlibGUgYnVpbHQtaW4gaGFuZGxlcnMsIHdoaWNoIHdpbGwgYmUgcmVqZWN0ZWQgaW4gOC4wCi0gRGVwcmVjYXRlZCBgUmVxdWVzdEV4Y2VwdGlvbjo6d3JhcEV4Y2VwdGlvbigpYCwgd2hpY2ggd2lsbCBiZSByZW1vdmVkIGluIDguMAotIERlcHJlY2F0ZWQgYFJldHJ5TWlkZGxld2FyZTo6ZXhwb25lbnRpYWxEZWxheSgpYCwgd2hpY2ggd2lsbCBiZSByZW1vdmVkIGluIDguMAoKCiMjIDcuMTAuNiAtIDIwMjYtMDYtMDEKCiMjIyBGaXhlZAoKLSBgQ3VybE11bHRpSGFuZGxlcmAgbm93IHJlamVjdHMgdGhlIHByb21pc2Ugd2hlbiBgQ3VybEZhY3Rvcnk6OmZpbmlzaCgpYCB0aHJvd3MsIHByZXNlcnZpbmcgc2libGluZyB0cmFuc2ZlcnMKLSBgU2V0Q29va2llYCBub3cgbm9ybWFsaXplcyB1bnBhcnNlYWJsZSBgRXhwaXJlc2AgdmFsdWVzIHRvIGBudWxsYCBpbnN0ZWFkIG9mIGBmYWxzZWAKLSBGaXggc3RyZWFtIGhhbmRsZXIgZGVjb2RlZCBgZ3ppcGAvYGRlZmxhdGVgIHRydW5jYXRpb24gYnkgZHJvcHBpbmcgaW52YWxpZCBgQ29udGVudC1MZW5ndGhgCgoKIyMgNy4xMC41IC0gMjAyNi0wNS0yNwoKIyMjIEZpeGVkCgotIERlZmVyIGNVUkwgbXVsdGkgY2FuY2VsbGF0aW9uIGNsZWFudXAgdW50aWwgYWZ0ZXIgcHJvZ3Jlc3MgY2FsbGJhY2tzIHJldHVybgotIENsYXNzaWZ5IGFkZGl0aW9uYWwgc3RyZWFtIGhhbmRsZXIgY29ubmVjdGlvbiBmYWlsdXJlcyBhcyBgQ29ubmVjdEV4Y2VwdGlvbmAKCgojIyA3LjEwLjQgLSAyMDI2LTA1LTIyCgojIyMgRml4ZWQKCi0gRml4IElQdjYgbGl0ZXJhbCBtYXRjaGluZyBpbiBuby1wcm94eSBydWxlcwotIEhhbmRsZSBjVVJMIG11bHRpIGNvbXBsZXRpb24gbWVzc2FnZXMgd2l0aG91dCBoYW5kbGVzIGFmdGVyIGNhbmNlbGxlZCB0cmFuc2ZlcnMKLSBGaXggbWFnaWMgY2xpZW50IHJlcXVlc3QgbWV0aG9kcyBzdWNoIGFzIGBvcHRpb25zKClgIHRvIHVwcGVyY2FzZSBpbmZlcnJlZCBIVFRQIG1ldGhvZHMKCgojIyA3LjEwLjMgLSAyMDI2LTA1LTIwCgojIyMgRml4ZWQKCi0gRmFpbCBjbGVhcmx5IHdoZW4gYW4gSFRUUCByZXNwb25zZSBoZWFkZXIgbGluZSBpcyBpbnZhbGlkCi0gUmVtb3ZlIG1pZGRsZXdhcmUgYnkgbmFtZSB3aGVuIHRoZSBuYW1lIGlzIGFsc28gYSBjYWxsYWJsZSBzdHJpbmcKLSBUcmVhdCBlbXB0eSByZXF1ZXN0IHByb3RvY29sIHZlcnNpb25zIGFzIEhUVFAvMS4xCgoKIyMgNy4xMC4yIC0gMjAyNi0wNS0yMAoKIyMjIEZpeGVkCgotIE5vcm1hbGl6ZSBIVFRQIHZlcnNpb24gcmVxdWVzdCBvcHRpb25zIGJlZm9yZSBhcHBseWluZyB0aGVtIHRvIFBTUi03IHJlcXVlc3RzCi0gVXNlIHN0cmluZyB2YWx1ZXMgZm9yIGhlYWRlcnMgZ2VuZXJhdGVkIGJ5IHJlcXVlc3QgcHJlcGFyYXRpb24gYW5kIHJlc3BvbnNlIGRlY29kaW5nCgoKIyMgNy4xMC4xIC0gMjAyNi0wNS0xOQoKIyMjIEZpeGVkCgotIEZhaWwgY2xlYXJseSB3aGVuIGNVUkwgb3B0aW9ucyBjYW5ub3QgYmUgYXBwbGllZAotIEZhaWwgY2xlYXJseSB3aGVuIHRoZSBjZXJ0aWZpY2F0ZSBvcHRpb24gaXMgbWFsZm9ybWVkCi0gRmFpbCBjbGVhcmx5IHdoZW4gSlNPTiBkZWNvZGUgZGVwdGggaXMgaW52YWxpZAotIEZhaWwgY2xlYXJseSB3aGVuIHNlc3Npb24gY29va2llIGRhdGEgaXMgbWFsZm9ybWVkCi0gRmFpbCBjbGVhcmx5IHdoZW4gdGhlIHN0cmVhbSBwcm9ncmVzcyBvcHRpb24gaXMgbm90IGNhbGxhYmxlCi0gUHJldmVudCByZXNwb25zZSBjcmVhdGlvbiBmYWlsdXJlcyBmcm9tIGV4cG9zaW5nIHN0YWxlIGNVUkwgcmVzcG9uc2VzCgoKIyMgNy4xMC4wIC0gMjAyNS0wOC0yMwoKIyMjIEFkZGVkCgotIFN1cHBvcnQgZm9yIFBIUCA4LjUKCiMjIyBDaGFuZ2VkCgotIEFkanVzdGVkIGBndXp6bGVodHRwL3Byb21pc2VzYCB2ZXJzaW9uIGNvbnN0cmFpbnQgdG8gYF4yLjNgCi0gQWRqdXN0ZWQgYGd1enpsZWh0dHAvcHNyN2AgdmVyc2lvbiBjb25zdHJhaW50IHRvIGBeMi44YAoKCiMjIDcuOS4zIC0gMjAyNS0wMy0yNwoKIyMjIENoYW5nZWQKCi0gUmVtb3ZlIGV4cGxpY2l0IGNvbnRlbnQtbGVuZ3RoIGhlYWRlciBmb3IgR0VUIHJlcXVlc3RzCi0gSW1wcm92ZSBjb21wYXRpYmlsaXR5IHdpdGggYmFkIHNlcnZlcnMgZm9yIGJvb2xlYW4gY29va2llIHZhbHVlcwoKCiMjIDcuOS4yIC0gMjAyNC0wNy0yNAoKIyMjIEZpeGVkCgotIEFkanVzdGVkIGhhbmRsZXIgc2VsZWN0aW9uIHRvIHVzZSBjVVJMIGlmIGl0cyB2ZXJzaW9uIGlzIDcuMjEuMiBvciBoaWdoZXIsIHJhdGhlciB0aGFuIDcuMzQuMAoKCiMjIDcuOS4xIC0gMjAyNC0wNy0xOQoKIyMjIEZpeGVkCgotIEZpeCBUTFMgMS4zIGNoZWNrIGZvciBIVFRQLzIgcmVxdWVzdHMKCgojIyA3LjkuMCAtIDIwMjQtMDctMTgKCiMjIyBDaGFuZ2VkCgotIEltcHJvdmUgcHJvdG9jb2wgdmVyc2lvbiBjaGVja3MgdG8gcHJvdmlkZSBmZWVkYmFjayBhcm91bmQgdW5zdXBwb3J0ZWQgcHJvdG9jb2xzCi0gT25seSBzZWxlY3QgdGhlIGNVUkwgaGFuZGxlciBieSBkZWZhdWx0IGlmIDcuMzQuMCBvciBoaWdoZXIgaXMgbGlua2VkCi0gSW1wcm92ZWQgYEN1cmxNdWx0aUhhbmRsZXJgIHRvIGF2b2lkIGJ1c3kgd2FpdCBpZiBwb3NzaWJsZQotIERyb3BwZWQgc3VwcG9ydCBmb3IgRU9MIGBndXp6bGVodHRwL3BzcjdgIHYxCi0gSW1wcm92ZWQgVVJJIHVzZXIgaW5mbyByZWRhY3Rpb24gaW4gZXJyb3JzCgojIyA3LjguMiAtIDIwMjQtMDctMTgKCiMjIyBBZGRlZAoKLSBTdXBwb3J0IGZvciBQSFAgOC40CgoKIyMgNy44LjEgLSAyMDIzLTEyLTAzCgojIyMgQ2hhbmdlZAoKLSBVcGRhdGVkIGxpbmtzIGluIGRvY3MgdG8gdGhlaXIgY2Fub25pY2FsIHZlcnNpb25zCi0gUmVwbGFjZWQgYGNhbGxfdXNlcl9mdW5jKmAgd2l0aCBuYXRpdmUgY2FsbHMKCgojIyA3LjguMCAtIDIwMjMtMDgtMjcKCiMjIyBBZGRlZAoKLSBTdXBwb3J0IGZvciBQSFAgOC4zCi0gQWRkZWQgYXV0b21hdGljIGNsb3Npbmcgb2YgaGFuZGxlcyBvbiBgQ3VybEZhY3RvcnlgIG9iamVjdCBkZXN0cnVjdGlvbgoKCiMjIDcuNy4xIC0gMjAyMy0wOC0yNwoKIyMjIENoYW5nZWQKCi0gUmVtb3ZlIHRoZSBuZWVkIGZvciBgQWxsb3dEeW5hbWljUHJvcGVydGllc2AgaW4gYEN1cmxNdWx0aUhhbmRsZXJgCgoKIyMgNy43LjAgLSAyMDIzLTA1LTIxCgojIyMgQWRkZWQKCi0gU3VwcG9ydCBgZ3V6emxlaHR0cC9wcm9taXNlc2AgdjIKCgojIyA3LjYuMSAtIDIwMjMtMDUtMTUKCiMjIyBGaXhlZAoKLSBGaXggYFNldENvb2tpZTo6ZnJvbVN0cmluZ2AgTWF4QWdlIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHNraXAgaW52YWxpZCBNYXhBZ2UgdmFsdWVzCgoKIyMgNy42LjAgLSAyMDIzLTA1LTE0CgojIyMgQWRkZWQKCi0gU3VwcG9ydCBmb3Igc2V0dGluZyB0aGUgbWluaW11bSBUTFMgdmVyc2lvbiBpbiBhIHVuaWZpZWQgd2F5Ci0gQXBwbHkgb24gcmVxdWVzdCB0aGUgdmVyc2lvbiBzZXQgaW4gb3B0aW9ucyBwYXJhbWV0ZXJzCgoKIyMgNy41LjIgLSAyMDIzLTA1LTE0CgojIyMgRml4ZWQKCi0gRml4ZWQgc2V0IGNvb2tpZSBjb25zdHJ1Y3RvciB2YWxpZGF0aW9uCi0gRml4ZWQgaGFuZGxpbmcgb2YgZmlsZXMgd2l0aCBgJzAnYCBib2R5CgojIyMgQ2hhbmdlZAoKLSBDb3JyZWN0ZWQgZG9jcyBhbmQgZGVmYXVsdCBjb25uZWN0IHRpbWVvdXQgdmFsdWUgdG8gMzAwIHNlY29uZHMKCgojIyA3LjUuMSAtIDIwMjMtMDQtMTcKCiMjIyBGaXhlZAoKLSBGaXhlZCBgTk9fUFJPWFlgIHNldHRpbmdzIHNvIHRoYXQgc2V0dGluZyB0aGUgYHByb3h5YCBvcHRpb24gdG8gYG5vYCBvdmVycmlkZXMgdGhlIGVudiB2YXJpYWJsZQoKIyMjIENoYW5nZWQKCi0gQWRqdXN0ZWQgYGd1enpsZWh0dHAvcHNyN2AgdmVyc2lvbiBjb25zdHJhaW50IHRvIGBeMS45LjEgfHwgXjIuNC41YAoKCiMjIDcuNS4wIC0gMjAyMi0wOC0yOAoKIyMjIEFkZGVkCgotIFN1cHBvcnQgUEhQIDguMgotIEFkZCByZXF1ZXN0IHRvIGRlbGF5IGNsb3N1cmUgcGFyYW1zCgoKIyMgNy40LjUgLSAyMDIyLTA2LTIwCgojIyMgRml4ZWQKCiogRml4IGNoYW5nZSBpbiBwb3J0IHNob3VsZCBiZSBjb25zaWRlcmVkIGEgY2hhbmdlIGluIG9yaWdpbgoqIEZpeCBgQ1VSTE9QVF9IVFRQQVVUSGAgb3B0aW9uIG5vdCBjbGVhcmVkIG9uIGNoYW5nZSBvZiBvcmlnaW4KCgojIyA3LjQuNCAtIDIwMjItMDYtMDkKCiMjIyBGaXhlZAoKKiBGaXggZmFpbHVyZSB0byBzdHJpcCBBdXRob3JpemF0aW9uIGhlYWRlciBvbiBIVFRQIGRvd25ncmFkZQoqIEZpeCBmYWlsdXJlIHRvIHN0cmlwIHRoZSBDb29raWUgaGVhZGVyIG9uIGNoYW5nZSBpbiBob3N0IG9yIEhUVFAgZG93bmdyYWRlCgoKIyMgNy40LjMgLSAyMDIyLTA1LTI1CgojIyMgRml4ZWQKCiogRml4IGNyb3NzLWRvbWFpbiBjb29raWUgbGVha2FnZQoKCiMjIDcuNC4yIC0gMjAyMi0wMy0yMAoKIyMjIEZpeGVkCgotIFJlbW92ZSBjdXJsIGF1dGggb24gY3Jvc3MtZG9tYWluIHJlZGlyZWN0cyB0byBhbGlnbiB3aXRoIHRoZSBBdXRob3JpemF0aW9uIEhUVFAgaGVhZGVyCi0gUmVqZWN0IG5vbi1IVFRQIHNjaGVtZXMgaW4gU3RyZWFtSGFuZGxlcgotIFNldCBhIGRlZmF1bHQgc3NsLnBlZXJfbmFtZSBjb250ZXh0IGluIFN0cmVhbUhhbmRsZXIgdG8gYWxsb3cgYGZvcmNlX2lwX3Jlc29sdmVgCgoKIyMgNy40LjEgLSAyMDIxLTEyLTA2CgojIyMgQ2hhbmdlZAoKLSBSZXBsYWNlZCBpbXBsaWNpdCBVUkkgdG8gc3RyaW5nIGNvZXJjaW9uIFsjMjk0Nl0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yOTQ2KQotIEFsbG93IGBzeW1mb255L2RlcHJlY2F0aW9uLWNvbnRyYWN0c2AgdmVyc2lvbiAzIFsjMjk2MV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yOTYxKQoKIyMjIEZpeGVkCgotIE9ubHkgY2xvc2UgY3VybCBoYW5kbGUgaWYgaXQncyBkb25lIFsjMjk1MF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yOTUwKQoKCiMjIDcuNC4wIC0gMjAyMS0xMC0xOAoKIyMjIEFkZGVkCgotIFN1cHBvcnQgUEhQIDguMSBbIzI5MjldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjkyOSksIFsjMjkzOV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yOTM5KQotIFN1cHBvcnQgYHBzci9sb2dgIHZlcnNpb24gMiBhbmQgMyBbIzI5NDNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjk0MykKCiMjIyBGaXhlZAoKLSBNYWtlIHN1cmUgd2UgYWx3YXlzIGNhbGwgYHJlc3RvcmVfZXJyb3JfaGFuZGxlcigpYCBbIzI5MTVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjkxNSkKLSBGaXggcHJvZ3Jlc3MgcGFyYW1ldGVyIHR5cGUgY29tcGF0aWJpbGl0eSBiZXR3ZWVuIHRoZSBjVVJMIGFuZCBzdHJlYW0gaGFuZGxlcnMgWyMyOTM2XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI5MzYpCi0gVGhyb3cgYEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbmAgd2hlbiBhbiBpbmNvcnJlY3QgYGhlYWRlcnNgIGFycmF5IGlzIHByb3ZpZGVkIFsjMjkxNl0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yOTE2KSwgWyMyOTQyXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI5NDIpCgojIyMgQ2hhbmdlZAoKLSBCZSBtb3JlIHN0cmljdCB3aXRoIHR5cGVzIFsjMjkxNF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yOTE0KSwgWyMyOTE3XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI5MTcpLCBbIzI5MTldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjkxOSksIFsjMjk0NV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yOTQ1KQoKCiMjIDcuMy4wIC0gMjAyMS0wMy0yMwoKIyMjIEFkZGVkCgotIFN1cHBvcnQgZm9yIERFUiBhbmQgUDEyIGNlcnRpZmljYXRlcyBbIzI0MTNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjQxMykKLSBTdXBwb3J0IHRoZSBjVVJMIChodHRwOi8vKSBzY2hlbWUgZm9yIFN0cmVhbUhhbmRsZXIgcHJveGllcyBbIzI4NTBdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjg1MCkKLSBTdXBwb3J0IGZvciBgZ3V6emxlaHR0cC9wc3I3Ol4yLjBgIFsjMjg3OF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yODc4KQoKIyMjIEZpeGVkCgotIEhhbmRsZSBleGNlcHRpb25zIG9uIGludmFsaWQgaGVhZGVyIGNvbnNpc3RlbnRseSBiZXR3ZWVuIFBIUCB2ZXJzaW9ucyBhbmQgaGFuZGxlcnMgWyMyODcyXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI4NzIpCgoKIyMgNy4yLjAgLSAyMDIwLTEwLTEwCgojIyMgQWRkZWQKCi0gU3VwcG9ydCBmb3IgUEhQIDggWyMyNzEyXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI3MTIpLCBbIzI3MTVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjcxNSksIFsjMjc4OV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNzg5KQotIFN1cHBvcnQgcGFzc2luZyBhIGJvZHkgc3VtbWFyaXplciB0byB0aGUgaHR0cCBlcnJvcnMgbWlkZGxld2FyZSBbIzI3OTVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjc5NSkKCiMjIyBGaXhlZAoKLSBIYW5kbGUgZXhjZXB0aW9ucyBkdXJpbmcgcmVzcG9uc2UgY3JlYXRpb24gWyMyNTkxXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI1OTEpCi0gRml4IENVUkxPUFRfRU5DT0RJTkcgbm90IHRvIGJlIG92ZXJ3cml0dGVuIFsjMjU5NV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNTk1KQotIE1ha2Ugc3VyZSB0aGUgUmVxdWVzdCBhbHdheXMgaGFzIGEgYm9keSBvYmplY3QgWyMyODA0XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI4MDQpCgojIyMgQ2hhbmdlZAoKLSBUaGUgYFRvb01hbnlSZWRpcmVjdHNFeGNlcHRpb25gIGhhcyBhIHJlc3BvbnNlIFsjMjY2MF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNjYwKQotIEF2b2lkICJmdW5jdGlvbnMiIGZyb20gZGVwZW5kZW5jaWVzIFsjMjcxMl0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNzEyKQoKIyMjIERlcHJlY2F0ZWQKCi0gVXNpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgR1VaWkxFX0NVUkxfU0VMRUNUX1RJTUVPVVQgWyMyNzg2XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI3ODYpCgoKIyMgNy4xLjEgLSAyMDIwLTA5LTMwCgojIyMgRml4ZWQKCi0gSW5jb3JyZWN0IEVPRiBkZXRlY3Rpb24gZm9yIHJlc3BvbnNlIGJvZHkgc3RyZWFtcyBvbiBXaW5kb3dzLgoKIyMjIENoYW5nZWQKCi0gV2UgZG9udCBjb25uZWN0IGN1cmwgYHNpbmtgIG9uIEhFQUQgcmVxdWVzdHMuCi0gUmVtb3ZlZCBzb21lIFBIUCA1IHdvcmthcm91bmRzCgoKIyMgNy4xLjAgLSAyMDIwLTA5LTIyCgojIyMgQWRkZWQKCi0gYEd1enpsZUh0dHBcTWVzc2FnZUZvcm1hdHRlckludGVyZmFjZWAKCiMjIyBGaXhlZAoKLSBGaXhlZCBpc3N1ZSB0aGF0IGNhdXNlZCBjb29raWVzIHdpdGggbm8gdmFsdWUgbm90IHRvIGJlIHN0b3JlZC4KLSBPbiByZWRpcmVjdHMsIHdlIGFsbG93IGFsbCBzYWZlIG1ldGhvZHMgbGlrZSBHRVQsIEhFQUQgYW5kIE9QVElPTlMuCi0gRml4ZWQgbG9nZ2luZyBvbiBlbXB0eSByZXNwb25zZXMuCi0gTWFrZSBzdXJlIE1lc3NhZ2VGb3JtYXR0ZXI6OmZvcm1hdCByZXR1cm5zIHN0cmluZwoKIyMjIERlcHJlY2F0ZWQKCi0gQWxsIGZ1bmN0aW9ucyBpbiBgR3V6emxlSHR0cGAgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIHN0YXRpYyBtZXRob2RzIG9uIGBVdGlsc2AgaW5zdGVhZC4KLSBgQ2xpZW50SW50ZXJmYWNlOjpnZXRDb25maWcoKWAKLSBgQ2xpZW50OjpnZXRDb25maWcoKWAKLSBgQ2xpZW50OjpfX2NhbGwoKWAKLSBgVXRpbHM6OmRlZmF1bHRDYUJ1bmRsZSgpYAotIGBDdXJsRmFjdG9yeTo6TE9XX0NVUkxfVkVSU0lPTl9OVU1CRVJgCgoKIyMgNy4wLjEgLSAyMDIwLTA2LTI3CgoqIEZpeCBtdWx0aXBseSBkZWZpbmVkIGZ1bmN0aW9ucyBmYXRhbCBlcnJvciBbIzI2OTldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjY5OSkKCgojIyA3LjAuMCAtIDIwMjAtMDYtMjcKCk5vIGNoYW5nZXMgc2luY2UgNy4wLjAtcmMxLgoKCiMjIDcuMC4wLXJjMSAtIDIwMjAtMDYtMTUKCiMjIyBDaGFuZ2VkCgoqIFVzZSBlcnJvciBsZXZlbCBmb3IgbG9nZ2luZyBlcnJvcnMgaW4gTWlkZGxld2FyZSBbIzI2MjldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjYyOSkKKiBEaXNhYmxlZCBJRE4gc3VwcG9ydCBieSBkZWZhdWx0IGFuZCByZXF1aXJlIGV4dC1pbnRsIHRvIHVzZSBpdCBbIzI2NzVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjY3NSkKCgojIyA3LjAuMC1iZXRhMiAtIDIwMjAtMDUtMjUKCiMjIyBBZGRlZAoKKiBVc2luZyBgVXRpbHNgIGNsYXNzIGluc3RlYWQgb2YgZnVuY3Rpb25zIGluIHRoZSBgR3V6emxlSHR0cGAgbmFtZXNwYWNlLiBbIzI1NDZdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjU0NikKKiBgQ2xpZW50SW50ZXJmYWNlOjpNQUpPUl9WRVJTSU9OYCBbIzI1ODNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjU4MykKCiMjIyBDaGFuZ2VkCgoqIEF2b2lkIHRoZSBgZ2V0ZW52YCBmdW5jdGlvbiB3aGVuIHVuc2FmZSBbIzI1MzFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjUzMSkKKiBBZGRlZCByZWFsIGNsaWVudCBtZXRob2RzIFsjMjUyOV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNTI5KQoqIEF2b2lkIGZ1bmN0aW9ucyBkdWUgdG8gZ2xvYmFsIGluc3RhbGwgY29uZmxpY3RzIFsjMjU0Nl0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNTQ2KQoqIFVzZSBTeW1mb255IGludGwtaWRuIHBvbHlmaWxsIFsjMjU1MF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNTUwKQoqIEFkZGluZyBtZXRob2RzIGZvciBIVFRQIHZlcmJzIGxpa2UgYENsaWVudDo6Z2V0KClgLCBgQ2xpZW50OjpoZWFkKClgLCBgQ2xpZW50OjpwYXRjaCgpYCBldGMgWyMyNTI5XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI1MjkpCiogYENvbm5lY3RFeGNlcHRpb25gIGV4dGVuZHMgYFRyYW5zZmVyRXhjZXB0aW9uYCBbIzI1NDFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjU0MSkKKiBVcGRhdGVkIHRoZSBkZWZhdWx0IFVzZXIgQWdlbnQgdG8gIkd1enpsZUh0dHAvNyIgWyMyNjU0XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI2NTQpCgojIyMgRml4ZWQKCiogVmFyaW91cyBpbnRsIGljdSBpc3N1ZXMgWyMyNjI2XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI2MjYpCgojIyMgUmVtb3ZlZAoKKiBQb29sIG9wdGlvbiBgcG9vbF9zaXplYCBbIzI1MjhdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjUyOCkKCgojIyA3LjAuMC1iZXRhMSAtIDIwMTktMTItMzAKClRoZSBkaWZmIG1pZ2h0IGxvb2sgdmVyeSBiaWcgYnV0IDk1JSBvZiBHdXp6bGUgdXNlcnMgd2lsbCBiZSBhYmxlIHRvIHVwZ3JhZGUgd2l0aG91dCBtb2RpZmljYXRpb24uClBsZWFzZSBzZWUgW3RoZSB1cGdyYWRlIGRvY3VtZW50XShVUEdSQURJTkcubWQpIHRoYXQgZGVzY3JpYmVzIGFsbCBCQyBicmVha2luZyBjaGFuZ2VzLgoKIyMjIEFkZGVkCgoqIEltcGxlbWVudCBQU1ItMTggYW5kIGRyb3BwZWQgUEhQIDUgc3VwcG9ydCBbIzI0MjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjQyMSkgWyMyNDc0XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI0NzQpCiogUEhQIDcgdHlwZXMgWyMyNDQyXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI0NDIpIFsjMjQ0OV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNDQ5KSBbIzI0NjZdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjQ2NikgWyMyNDk3XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI0OTcpIFsjMjQ5OV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNDk5KQoqIElETiBzdXBwb3J0IGZvciByZWRpcmVjdHMgWzI0MjRdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjQyNCkKCiMjIyBDaGFuZ2VkCgoqIERvbnQgYWxsb3cgcGFzc2luZyBudWxsIGFzIHRoaXJkIGFyZ3VtZW50IHRvIGBCYWRSZXNwb25zZUV4Y2VwdGlvbjo6X19jb25zdHJ1Y3QoKWAgWyMyNDI3XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI0MjcpCiogVXNlIFNBUEkgY29uc3RhbnQgaW5zdGVhZCBvZiBtZXRob2QgY2FsbCBbIzI0NTBdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjQ1MCkKKiBVc2UgbmF0aXZlIGZ1bmN0aW9uIGludm9jYXRpb24gWyMyNDQ0XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI0NDQpCiogQmV0dGVyIGRlZmF1bHRzIGZvciBQSFAgaW5zdGFsbGF0aW9ucyB3aXRoIG9sZCBJQ1UgbGliIFsyNDU0XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI0NTQpCiogQWRkZWQgdmlzaWJpbGl0eSB0byBhbGwgY29uc3RhbnRzIFsjMjQ2Ml0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNDYyKQoqIERvbnQgYWxsb3cgcGFzc2luZyBgbnVsbGAgYXMgVVJJIHRvIGBDbGllbnQ6OnJlcXVlc3QoKWAgYW5kIGBDbGllbnQ6OnJlcXVlc3RBc3luYygpYCBbIzI0NjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjQ2MSkKKiBXaWRlbiB0aGUgZXhjZXB0aW9uIGFyZ3VtZW50IHRvIHRocm93YWJsZSBbIzI0OTVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjQ5NSkKCiMjIyBGaXhlZAoKKiBMb2dnaW5nIHdoZW4gUHJvbWlzZSByZWplY3RlZCB3aXRoIGEgc3RyaW5nIFsjMjMxMV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yMzExKQoKIyMjIFJlbW92ZWQKCiogQ2xhc3MgYFNlZWtFeGNlcHRpb25gIFsjMjE2Ml0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yMTYyKQoqIGBSZXF1ZXN0RXhjZXB0aW9uOjpnZXRSZXNwb25zZUJvZHlTdW1tYXJ5KClgIFsjMjQyNV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNDI1KQoqIGBDb29raWVKYXI6OmdldENvb2tpZVZhbHVlKClgIFsjMjQzM10oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNDMzKQoqIGB1cmlfdGVtcGxhdGUoKWAgYW5kIGBVcmlUZW1wbGF0ZWAgWyMyNDQwXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI0NDApCiogUmVxdWVzdCBvcHRpb25zIGBzYXZlX3RvYCBhbmQgYGV4Y2VwdGlvbnNgIFsjMjQ2NF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNDY0KQoKCiMjIDYuNS4yIC0gMjAxOS0xMi0yMwoKKiBpZG5fdG9fYXNjaWkoKSBmaXggZm9yIG9sZCBQSFAgdmVyc2lvbnMgWyMyNDg5XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI0ODkpCgoKIyMgNi41LjEgLSAyMDE5LTEyLTIxCgoqIEJldHRlciBkZWZhdWx0cyBmb3IgUEhQIGluc3RhbGxhdGlvbnMgd2l0aCBvbGQgSUNVIGxpYiBbIzI0NTRdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjQ1NCkKKiBJRE4gc3VwcG9ydCBmb3IgcmVkaXJlY3RzIFsjMjQyNF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNDI0KQoKCiMjIDYuNS4wIC0gMjAxOS0xMi0wNwoKKiBJbXByb3ZlbWVudDogQWRkZWQgc3VwcG9ydCBmb3IgcmVzZXQgaW50ZXJuYWwgcXVldWUgaW4gTW9ja0hhbmRsZXIuIFsjMjE0M10oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yMTQzKQoqIEltcHJvdmVtZW50OiBBZGRlZCBzdXBwb3J0IHRvIHBhc3MgYXJiaXRyYXJ5IG9wdGlvbnMgdG8gYGN1cmxfbXVsdGlfaW5pdGAuIFsjMjI4N10oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yMjg3KQoqIEZpeDogR3JhY2VmdWxseSBoYW5kbGUgcGFzc2luZyBgbnVsbGAgdG8gdGhlIGBoZWFkZXJgIG9wdGlvbi4gWyMyMTMyXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzIxMzIpCiogRml4OiBgUmV0cnlNaWRkbGV3YXJlYCBkaWQgbm90IGRvIGV4cG9uZW50aWFsIGRlbGF5IGJldHdlZW4gcmV0aXJlcyBkdWUgdW5pdCBtaXNtYXRjaC4gWyMyMTMyXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzIxMzIpCiogRml4OiBQcmV2ZW50IHVuZGVmaW5lZCBvZmZzZXQgd2hlbiB1c2luZyBhcnJheSBmb3Igc3NsX2tleSBvcHRpb25zLiBbIzIzNDhdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjM0OCkKKiBEZXByZWNhdGVkIGBDbGllbnRJbnRlcmZhY2U6OlZFUlNJT05gCgoKIyMgNi40LjEgLSAyMDE5LTEwLTIzCgoqIE5vIGBndXp6bGUucGhhcmAgd2FzIGNyZWF0ZWQgaW4gNi40LjAgZHVlIGV4cGlyZWQgQVBJIHRva2VuLiBUaGlzIHJlbGVhc2Ugd2lsbCBmaXggdGhhdAoqIEFkZGVkIGBwYXJlbnQ6Ol9fY29uc3RydWN0KClgIHRvIGBGaWxlQ29va2llSmFyYCBhbmQgYFNlc3Npb25Db29raWVKYXJgCgoKIyMgNi40LjAgLSAyMDE5LTEwLTIzCgoqIEltcHJvdmVtZW50OiBJbXByb3ZlZCBlcnJvciBtZXNzYWdlcyB3aGVuIHVzaW5nIGN1cmwgPCA3LjIxLjIgWyMyMTA4XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzIxMDgpCiogRml4OiBUZXN0IGlmIHJlc3BvbnNlIGlzIHJlYWRhYmxlIGJlZm9yZSByZXR1cm5pbmcgYSBzdW1tYXJ5IGluIGBSZXF1ZXN0RXhjZXB0aW9uOjpnZXRSZXNwb25zZUJvZHlTdW1tYXJ5KClgIFsjMjA4MV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yMDgxKQoqIEZpeDogQWRkIHN1cHBvcnQgZm9yIEdVWlpMRV9DVVJMX1NFTEVDVF9USU1FT1VUIGVudmlyb25tZW50IHZhcmlhYmxlIFsjMjE2MV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yMTYxKQoqIEltcHJvdmVtZW50OiBBZGRlZCBgR3V6emxlSHR0cFxFeGNlcHRpb25cSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uYCBbIzIxNjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjE2MykKKiBJbXByb3ZlbWVudDogQWRkZWQgYEd1enpsZUh0dHBcX2N1cnJlbnRfdGltZSgpYCB0byB1c2UgYGhydGltZSgpYCBpZiB0aGF0IGZ1bmN0aW9uIGV4aXN0cy4gWyMyMjQyXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzIyNDIpCiogSW1wcm92ZW1lbnQ6IEFkZGVkIGN1cmwncyBgYXBwY29ubmVjdF90aW1lYCBpbiBgVHJhbnNmZXJTdGF0c2AgWyMyMjg0XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzIyODQpCiogSW1wcm92ZW1lbnQ6IE1ha2UgR3V6emxlRXhjZXB0aW9uIGV4dGVuZCBUaHJvd2FibGUgd2hlcmV2ZXIgaXQncyBhdmFpbGFibGUgWyMyMjczXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzIyNzMpCiogRml4OiBQcmV2ZW50IGNvbmN1cnJlbnQgd3JpdGVzIHRvIGZpbGUgd2hlbiBzYXZpbmcgYENvb2tpZUphcmAgWyMyMzM1XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzIzMzUpCiogSW1wcm92ZW1lbnQ6IFVwZGF0ZSBgTW9ja0hhbmRsZXJgIHNvIHdlIGNhbiB0ZXN0IHRyYW5zZmVyIHRpbWUgWyMyMzYyXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzIzNjIpCgoKIyMgNi4zLjMgLSAyMDE4LTA0LTIyCgoqIEZpeDogRGVmYXVsdCBoZWFkZXJzIHdoZW4gZGVjb2RlX2NvbnRlbnQgaXMgc3BlY2lmaWVkCgoKIyMgNi4zLjIgLSAyMDE4LTAzLTI2CgoqIEZpeDogUmVsZWFzZSBwcm9jZXNzCgoKIyMgNi4zLjEgLSAyMDE4LTAzLTI2CgoqIEJ1ZyBmaXg6IFBhcnNpbmcgMCBlcG9jaCBleHBpcnkgdGltZXMgaW4gY29va2llcyBbIzIwMTRdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjAxNCkKKiBJbXByb3ZlbWVudDogQmV0dGVyIENvbm5lY3RFeGNlcHRpb24gZGV0ZWN0aW9uIFsjMjAxMl0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yMDEyKQoqIEJ1ZyBmaXg6IE1hbGZvcm1lZCBkb21haW4gdGhhdCBjb250YWlucyBhICIvIiBbIzE5OTldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTk5OSkKKiBCdWcgZml4OiBVbmRlZmluZWQgb2Zmc2V0IHdoZW4gYSBjb29raWUgaGFzIG5vIGZpcnN0IGtleS12YWx1ZSBwYWlyIFsjMTk5OF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xOTk4KQoqIEltcHJvdmVtZW50OiBTdXBwb3J0IFBIUFVuaXQgNiBbIzE5NTNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTk1MykKKiBCdWcgZml4OiBTdXBwb3J0IGVtcHR5IGhlYWRlcnMgWyMxOTE1XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE5MTUpCiogQnVnIGZpeDogSWdub3JlIGNhc2UgZHVyaW5nIGhlYWRlciBtb2RpZmljYXRpb25zIFsjMTkxNl0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xOTE2KQoKKyBNaW5vciBjb2RlIGNsZWFudXBzLCBkb2N1bWVudGF0aW9uIGZpeGVzIGFuZCBjbGFyaWZpY2F0aW9ucy4KCgojIyA2LjMuMCAtIDIwMTctMDYtMjIKCiogRmVhdHVyZTogZm9yY2UgSVAgcmVzb2x1dGlvbiAoaXB2NCBvciBpcHY2KSBbIzE2MDhdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTYwOCksIFsjMTY1OV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNjU5KQoqIEltcHJvdmVtZW50OiBEb24ndCBpbmNsdWRlIHN1bW1hcnkgaW4gZXhjZXB0aW9uIG1lc3NhZ2Ugd2hlbiBib2R5IGlzIGVtcHR5IFsjMTYyMV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNjIxKQoqIEltcHJvdmVtZW50OiBIYW5kbGUgYG9uX2hlYWRlcnNgIG9wdGlvbiBpbiBNb2NrSGFuZGxlciBbIzE1ODBdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTU4MCkKKiBJbXByb3ZlbWVudDogQWRkZWQgU1VTRSBMaW51eCBDQSBwYXRoIFsjMTYwOV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzE2MDkpCiogSW1wcm92ZW1lbnQ6IFVzZSBjbGFzcyByZWZlcmVuY2UgZm9yIGdldHRpbmcgdGhlIG5hbWUgb2YgdGhlIGNsYXNzIGluc3RlYWQgb2YgdXNpbmcgaGFyZGNvZGVkIHN0cmluZ3MgWyMxNjQxXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE2NDEpCiogRmVhdHVyZTogQWRkZWQgYHJlYWRfdGltZW91dGAgb3B0aW9uIFsjMTYxMV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNjExKQoqIEJ1ZyBmaXg6IFBIUCA3LnggZml4ZXMgWyMxNjg1XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE2ODUpLCBbIzE2ODZdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTY4NiksIFsjMTgxMV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xODExKQoqIERlcHJlY2F0aW9uOiBCYWRSZXNwb25zZUV4Y2VwdGlvbiBpbnN0YW50aWF0aW9uIHdpdGhvdXQgYSByZXNwb25zZSBbIzE2NDJdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTY0MikKKiBGZWF0dXJlOiBBZGRlZCBOVExNIGF1dGggWyMxNTY5XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE1NjkpCiogRmVhdHVyZTogVHJhY2sgcmVkaXJlY3QgSFRUUCBzdGF0dXMgY29kZXMgWyMxNzExXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE3MTEpCiogSW1wcm92ZW1lbnQ6IENoZWNrIGhhbmRsZXIgdHlwZSBkdXJpbmcgY29uc3RydWN0aW9uIFsjMTc0NV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNzQ1KQoqIEltcHJvdmVtZW50OiBBbHdheXMgaW5jbHVkZSB0aGUgQ29udGVudC1MZW5ndGggaWYgdGhlcmUncyBhIGJvZHkgWyMxNzIxXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE3MjEpCiogRmVhdHVyZTogQWRkZWQgY29udmVuaWVuY2UgbWV0aG9kIHRvIGFjY2VzcyBhIGNvb2tpZSBieSBuYW1lIFsjMTMxOF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMzE4KQoqIEJ1ZyBmaXg6IEZpbGwgYENVUkxPUFRfQ0FQQVRIYCBhbmQgYENVUkxPUFRfQ0FJTkZPYCBwcm9wZXJseSBbIzE2ODRdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTY4NCkKKiBJbXByb3ZlbWVudDogIAlVc2UgYFxHdXp6bGVIdHRwXFByb21pc2VccmVqZWN0aW9uX2ZvcmAgZnVuY3Rpb24gaW5zdGVhZCBvZiBvYmplY3QgaW5pdCBbIzE4MjddKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTgyNykKCisgTWlub3IgY29kZSBjbGVhbnVwcywgZG9jdW1lbnRhdGlvbiBmaXhlcyBhbmQgY2xhcmlmaWNhdGlvbnMuCgoKIyMgNi4yLjMgLSAyMDE3LTAyLTI4CgoqIEZpeCBkZXByZWNhdGlvbnMgd2l0aCBndXp6bGUvcHNyNyB2ZXJzaW9uIDEuNAoKCiMjIDYuMi4yIC0gMjAxNi0xMC0wOAoKKiBBbGxvdyB0byBwYXNzIG51bGxhYmxlIFJlc3BvbnNlIHRvIGRlbGF5IGNhbGxhYmxlCiogT25seSBhZGQgc2NoZW1lIHdoZW4gaG9zdCBpcyBwcmVzZW50CiogRml4IGRyYWluIGNhc2Ugd2hlcmUgY29udGVudC1sZW5ndGggaXMgdGhlIGxpdGVyYWwgc3RyaW5nIHplcm8KKiBPYmZ1c2NhdGUgaW4tVVJMIGNyZWRlbnRpYWxzIGluIGV4Y2VwdGlvbnMKCgojIyA2LjIuMSAtIDIwMTYtMDctMTgKCiogQWRkcmVzcyBIVFRQX1BST1hZIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHksIENWRS0yMDE2LTUzODU6CiAgaHR0cHM6Ly9odHRwb3h5Lm9yZy8KKiBGaXhpbmcgdGltZW91dCBidWcgd2l0aCBTdHJlYW1IYW5kbGVyOgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTQ4OAoqIE9ubHkgcmVhZCB1cCB0byBgQ29udGVudC1MZW5ndGhgIGluIFBIUCBTdHJlYW1IYW5kbGVyIHRvIGF2b2lkIHRpbWVvdXRzIHdoZW4KICBhIHNlcnZlciBkb2VzIG5vdCBob25vciBgQ29ubmVjdGlvbjogY2xvc2VgLgoqIElnbm9yZSBVUkkgZnJhZ21lbnQgd2hlbiBzZW5kaW5nIHJlcXVlc3RzLgoKCiMjIDYuMi4wIC0gMjAxNi0wMy0yMQoKKiBGZWF0dXJlOiBhZGRlZCBgR3V6emxlSHR0cFxqc29uX2VuY29kZWAgYW5kIGBHdXp6bGVIdHRwXGpzb25fZGVjb2RlYC4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEzODkKKiBCdWcgZml4OiBGaXggc2xlZXAgY2FsY3VsYXRpb24gd2hlbiB3YWl0aW5nIGZvciBkZWxheWVkIHJlcXVlc3RzLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTMyNAoqIEZlYXR1cmU6IE1vcmUgZmxleGlibGUgaGlzdG9yeSBjb250YWluZXJzLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTM3MwoqIEJ1ZyBmaXg6IGRlZmVyIHNpbmsgc3RyZWFtIG9wZW5pbmcgaW4gU3RyZWFtSGFuZGxlci4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEzNzcKKiBCdWcgZml4OiBkbyBub3QgYXR0ZW1wdCB0byBlc2NhcGUgY29va2llIHZhbHVlcy4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE0MDYKKiBGZWF0dXJlOiByZXBvcnQgb3JpZ2luYWwgY29udGVudCBlbmNvZGluZyBhbmQgbGVuZ3RoIG9uIGRlY29kZWQgcmVzcG9uc2VzLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTQwOQoqIEJ1ZyBmaXg6IHJld2luZCBzZWVrYWJsZSByZXF1ZXN0IGJvZGllcyBiZWZvcmUgZGlzcGF0Y2hpbmcgdG8gY1VSTC4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE0MjIKKiBCdWcgZml4OiBwcm92aWRlIGFuIGVtcHR5IHN0cmluZyB0byBgaHR0cF9idWlsZF9xdWVyeWAgZm9yIEhIVk0gd29ya2Fyb3VuZC4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEzNjcKCgojIyA2LjEuMSAtIDIwMTUtMTEtMjIKCiogQnVnIGZpeDogUHJveHk6OndyYXBTeW5jKCkgbm93IGNvcnJlY3RseSBwcm94aWVzIHRvIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvY29tbWl0LzkxMWJjYmM4YjQzNGFkY2U2NGUyMjNhNmQxZDE0ZTlhOGY2M2U0ZTQKKiBGZWF0dXJlOiBIYW5kbGVyU3RhY2sgaXMgbm93IG1vcmUgZ2VuZXJpYy4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9jb21taXQvZjIxMDI5NDEzMzFjZGE1NDQ3NDVlZWRkOTdmYzhmZDQ2ZTFlZTMzZQoqIEJ1ZyBmaXg6IHNldHRpbmcgdmVyaWZ5IHRvIGZhbHNlIGluIHRoZSBTdHJlYW1IYW5kbGVyIG5vdyBkaXNhYmxlcyBwZWVyCiAgdmVyaWZpY2F0aW9uLiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvMTI1NgoqIEZlYXR1cmU6IE1pZGRsZXdhcmUgbm93IHVzZXMgYW4gZXhjZXB0aW9uIGZhY3RvcnksIGluY2x1ZGluZyBtb3JlIGVycm9yCiAgY29udGV4dC4gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMjgyCiogRmVhdHVyZTogYmV0dGVyIHN1cHBvcnQgZm9yIGRpc2FibGVkIGZ1bmN0aW9ucy4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEyODcKKiBCdWcgZml4OiBmaXhlZCByZWdyZXNzaW9uIHdoZXJlIE1vY2tIYW5kbGVyIHdhcyBub3QgdXNpbmcgYHNpbmtgLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTI5MgoKCiMjIDYuMS4wIC0gMjAxNS0wOS0wOAoKKiBGZWF0dXJlOiBBZGRlZCB0aGUgYG9uX3N0YXRzYCByZXF1ZXN0IG9wdGlvbiB0byBwcm92aWRlIGFjY2VzcyB0byB0cmFuc2ZlcgogIHN0YXRpc3RpY3MgZm9yIHJlcXVlc3RzLiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEyMDIKKiBGZWF0dXJlOiBBZGRlZCB0aGUgYWJpbGl0eSB0byBwZXJzaXN0IHNlc3Npb24gY29va2llcyBpbiBDb29raWVKYXJzLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTE5NQoqIEZlYXR1cmU6IFNvbWUgY29tcGF0aWJpbGl0eSB1cGRhdGVzIGZvciBHb29nbGUgQVBQIEVuZ2luZQogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTIxNgoqIEZlYXR1cmU6IEFkZGVkIHN1cHBvcnQgZm9yIE5PX1BST1hZIHRvIHByZXZlbnQgdGhlIHVzZSBvZiBhIHByb3h5IGJhc2VkIG9uCiAgYSBzaW1wbGUgc2V0IG9mIHJ1bGVzLiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzExOTcKKiBGZWF0dXJlOiBDb29raWVzIGNhbiBub3cgY29udGFpbiBzcXVhcmUgYnJhY2tldHMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMjM3CiogQnVnIGZpeDogTm93IGNvcnJlY3RseSBwYXJzaW5nIGA9YCBpbnNpZGUgb2YgcXVvdGVzIGluIENvb2tpZXMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMjMyCiogQnVnIGZpeDogQ3Vzb3RtIGNVUkwgb3B0aW9ucyBub3cgY29ycmVjdGx5IG92ZXJyaWRlIGN1cmwgb3B0aW9ucyBvZiB0aGUKICBzYW1lIG5hbWUuIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTIyMQoqIEJ1ZyBmaXg6IENvbnRlbnQtVHlwZSBoZWFkZXIgaXMgbm93IGFkZGVkIHdoZW4gdXNpbmcgYW4gZXhwbGljaXRseSBwcm92aWRlZAogIG11bHRpcGFydCBib2R5LiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEyMTgKKiBCdWcgZml4OiBOb3cgaWdub3JpbmcgU2V0LUNvb2tpZSBoZWFkZXJzIHRoYXQgaGF2ZSBubyBuYW1lLgoqIEJ1ZyBmaXg6IFJlYXNvbiBwaHJhc2UgaXMgbm8gbG9uZ2VyIGNhc3QgdG8gYW4gaW50IGluIHNvbWUgY2FzZXMgaW4gdGhlCiAgY1VSTCBoYW5kbGVyLiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzExODcKKiBCdWcgZml4OiBSZW1vdmUgdGhlIEF1dGhvcml6YXRpb24gaGVhZGVyIHdoZW4gcmVkaXJlY3RpbmcgaWYgdGhlIEhvc3QKICBoZWFkZXIgY2hhbmdlcy4gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMjA3CiogQnVnIGZpeDogQ29va2llIHBhdGggbWF0Y2hpbmcgZml4ZXMKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvMTEyOQoqIEJ1ZyBmaXg6IEZpeGluZyB0aGUgY1VSTCBgYm9keV9hc19zdHJpbmdgIHNldHRpbmcKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEyMDEKKiBCdWcgZml4OiBxdW90ZXMgYXJlIG5vIGxvbmdlciBzdHJpcHBlZCB3aGVuIHBhcnNpbmcgY29va2llcy4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvMTE3MgoqIEJ1ZyBmaXg6IGBmb3JtX3BhcmFtc2AgYW5kIGBxdWVyeWAgbm93IGFsd2F5cyB1c2VzIHRoZSBgJmAgc2VwYXJhdG9yLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTE2MwoqIEJ1ZyBmaXg6IEFkZGluZyBhIENvbnRlbnQtTGVuZ3RoIHRvIFBIUCBzdHJlYW0gd3JhcHBlciByZXF1ZXN0cyBpZiBub3Qgc2V0LgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTE4OQoKCiMjIDYuMC4yIC0gMjAxNS0wNy0wNAoKKiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBjdXJsIGhhbmRsZXJzIGluIHdoaWNoIHJlZmVyZW5jZXMgdG8gY2FsbGJhY2tzCiAgd2VyZSBub3QgYmVpbmcgcmVtb3ZlZCBieSBgY3VybF9yZXNldGAuCiogQ29va2llcyBhcmUgbm93IGV4dHJhY3RlZCBwcm9wZXJseSBiZWZvcmUgcmVkaXJlY3RzLgoqIENvb2tpZXMgbm93IGFsbG93IG1vcmUgY2hhcmFjdGVyIHJhbmdlcy4KKiBEZWNvZGVkIENvbnRlbnQtRW5jb2RpbmcgcmVzcG9uc2VzIGFyZSBub3cgbW9kaWZpZWQgdG8gY29ycmVjdGx5IHJlZmxlY3QKICB0aGVpciBzdGF0ZSBpZiB0aGUgZW5jb2Rpbmcgd2FzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCBieSBhIGhhbmRsZXIuIFRoaXMKICBtZWFucyB0aGF0IHRoZSBgQ29udGVudC1FbmNvZGluZ2AgaGVhZGVyIG1heSBiZSByZW1vdmVkIGFuIHRoZQogIGBDb250ZW50LUxlbmd0aGAgbW9kaWZpZWQgdG8gcmVmbGVjdCB0aGUgbWVzc2FnZSBzaXplIGFmdGVyIHJlbW92aW5nIHRoZQogIGVuY29kaW5nLgoqIEFkZGVkIGEgbW9yZSBleHBsaWNpdCBlcnJvciBtZXNzYWdlIHdoZW4gdHJ5aW5nIHRvIHVzZSBgZm9ybV9wYXJhbXNgIGFuZAogIGBtdWx0aXBhcnRgIGluIHRoZSBzYW1lIHJlcXVlc3QuCiogU2V2ZXJhbCBmaXhlcyBmb3IgSEhWTSBzdXBwb3J0LgoqIEZ1bmN0aW9ucyBhcmUgbm93IGNvbmRpdGlvbmFsbHkgcmVxdWlyZWQgdXNpbmcgYW4gYWRkaXRpb25hbCBsZXZlbCBvZgogIGluZGlyZWN0aW9uIHRvIGhlbHAgd2l0aCBnbG9iYWwgQ29tcG9zZXIgaW5zdGFsbGF0aW9ucy4KCgojIyA2LjAuMSAtIDIwMTUtMDUtMjcKCiogRml4ZWQgYSBidWcgd2l0aCBzZXJpYWxpemluZyB0aGUgYHF1ZXJ5YCByZXF1ZXN0IG9wdGlvbiB3aGVyZSB0aGUgYCZgCiAgc2VwYXJhdG9yIHdhcyBtaXNzaW5nLgoqIEFkZGVkIGEgYmV0dGVyIGVycm9yIG1lc3NhZ2UgZm9yIHdoZW4gYGJvZHlgIGlzIHByb3ZpZGVkIGFzIGFuIGFycmF5LiBQbGVhc2UKICB1c2UgYGZvcm1fcGFyYW1zYCBvciBgbXVsdGlwYXJ0YCBpbnN0ZWFkLgoqIFZhcmlvdXMgZG9jIGZpeGVzLgoKCiMjIDYuMC4wIC0gMjAxNS0wNS0yNgoKKiBTZWUgdGhlIFVQR1JBRElORy5tZCBkb2N1bWVudCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKiBBZGRlZCBgbXVsdGlwYXJ0YCBhbmQgYGZvcm1fcGFyYW1zYCByZXF1ZXN0IG9wdGlvbnMuCiogQWRkZWQgYHN5bmNocm9ub3VzYCByZXF1ZXN0IG9wdGlvbi4KKiBBZGRlZCB0aGUgYG9uX2hlYWRlcnNgIHJlcXVlc3Qgb3B0aW9uLgoqIEZpeGVkIGBleHBlY3RgIGhhbmRsaW5nLgoqIE5vIGxvbmdlciBhZGRpbmcgZGVmYXVsdCBtaWRkbGV3YXJlcyBpbiB0aGUgY2xpZW50IGN0b3IuIFRoZXNlIG5lZWQgdG8gYmUKICBwcmVzZW50IG9uIHRoZSBwcm92aWRlZCBoYW5kbGVyIGluIG9yZGVyIHRvIHdvcmsuCiogUmVxdWVzdHMgYXJlIG5vIGxvbmdlciBpbml0aWF0ZWQgd2hlbiBzZW5kaW5nIGFzeW5jIHJlcXVlc3RzIHdpdGggdGhlCiAgQ3VybE11bHRpSGFuZGxlci4gVGhpcyBwcmV2ZW50cyB1bmV4cGVjdGVkIHJlY3Vyc2lvbiBmcm9tIHJlcXVlc3RzIGNvbXBsZXRpbmcKICB3aGlsZSB0aWNraW5nIHRoZSBjVVJMIGxvb3AuCiogUmVtb3ZlZCB0aGUgc2VtYW50aWNzIG9mIHNldHRpbmcgYGRlZmF1bHRgIHRvIGB0cnVlYC4gVGhpcyBpcyBubyBsb25nZXIKICByZXF1aXJlZCBub3cgdGhhdCB0aGUgY1VSTCBsb29wIGlzIG5vdCB0aWNrZWQgZm9yIGFzeW5jIHJlcXVlc3RzLgoqIEFkZGVkIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGxvZ2dpbmcgbWlkZGxld2FyZS4KKiBObyBsb25nZXIgYWxsb3dpbmcgc2VsZiBzaWduZWQgY2VydGlmaWNhdGVzIHdoZW4gdXNpbmcgdGhlIFN0cmVhbUhhbmRsZXIuCiogRW5zdXJpbmcgdGhhdCBgc2lua2AgaXMgdmFsaWQgaWYgc2F2aW5nIHRvIGEgZmlsZS4KKiBSZXF1ZXN0IGV4Y2VwdGlvbnMgbm93IGluY2x1ZGUgYSAiaGFuZGxlciBjb250ZXh0IiB3aGljaCBwcm92aWRlcyBoYW5kbGVyCiAgc3BlY2lmaWMgY29udGV4dHVhbCBpbmZvcm1hdGlvbi4KKiBBZGRlZCBgR3V6emxlSHR0cFxSZXF1ZXN0T3B0aW9uc2AgdG8gYWxsb3cgcmVxdWVzdCBvcHRpb25zIHRvIGJlIGFwcGxpZWQKICB1c2luZyBjb25zdGFudHMuCiogYCRtYXhIYW5kbGVzYCBoYXMgYmVlbiByZW1vdmVkIGZyb20gQ3VybE11bHRpSGFuZGxlci4KKiBgTXVsdGlwYXJ0UG9zdEJvZHlgIGlzIG5vdyBwYXJ0IG9mIHRoZSBgZ3V6emxlaHR0cC9wc3I3YCBwYWNrYWdlLgoKCiMjIDUuMy4wIC0gMjAxNS0wNS0xOQoKKiBNb2NrIG5vdyBzdXBwb3J0cyBgc2F2ZV90b2AKKiBNYXJrZWQgYEFic3RyYWN0UmVxdWVzdEV2ZW50OjpnZXRUcmFuc2FjdGlvbigpYCBhcyBwdWJsaWMuCiogRml4ZWQgYSBidWcgaW4gd2hpY2ggbXVsdGlwbGUgaGVhZGVycyB1c2luZyBkaWZmZXJlbnQgY2FzaW5nIHdvdWxkIG92ZXJ3cml0ZQogIHByZXZpb3VzIGhlYWRlcnMgaW4gdGhlIGFzc29jaWF0aXZlIGFycmF5LgoqIEFkZGVkIGBVdGlsczo6Z2V0RGVmYXVsdEhhbmRsZXIoKWAKKiBNYXJrZWQgYEd1enpsZUh0dHBcQ2xpZW50OjpnZXREZWZhdWx0VXNlckFnZW50YCBhcyBkZXByZWNhdGVkLgoqIFVSTCBzY2hlbWUgaXMgbm93IGFsd2F5cyBsb3dlcmNhc2VkLgoKCiMjIDYuMC4wLWJldGEuMQoKKiBSZXF1aXJlcyBQSFAgPj0gNS41CiogVXBkYXRlZCB0byB1c2UgUFNSLTcKICAqIFJlcXVpcmVzIGltbXV0YWJsZSBtZXNzYWdlcywgd2hpY2ggYmFzaWNhbGx5IG1lYW5zIGFuIGV2ZW50IGJhc2VkIHN5c3RlbQogICAgb3duZWQgYnkgYSByZXF1ZXN0IGluc3RhbmNlIGlzIG5vIGxvbmdlciBwb3NzaWJsZS4KICAqIFV0aWxpemluZyB0aGUgW0d1enpsZSBQU1ItNyBwYWNrYWdlXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3BzcjcpLgogICogUmVtb3ZlZCB0aGUgZGVwZW5kZW5jeSBvbiBgZ3V6emxlaHR0cC9zdHJlYW1zYC4gVGhlc2Ugc3RyZWFtIGFic3RyYWN0aW9ucwogICAgYXJlIGF2YWlsYWJsZSBpbiB0aGUgYGd1enpsZWh0dHAvcHNyN2AgcGFja2FnZSB1bmRlciB0aGUgYEd1enpsZUh0dHBcUHNyN2AKICAgIG5hbWVzcGFjZS4KKiBBZGRlZCBtaWRkbGV3YXJlIGFuZCBoYW5kbGVyIHN5c3RlbQogICogUmVwbGFjZWQgdGhlIEd1enpsZSBldmVudCBhbmQgc3Vic2NyaWJlciBzeXN0ZW0gd2l0aCBhIG1pZGRsZXdhcmUgc3lzdGVtLgogICogTm8gbG9uZ2VyIGRlcGVuZHMgb24gUmluZ1BIUCwgYnV0IHJhdGhlciBwbGFjZXMgdGhlIEhUVFAgaGFuZGxlcnMgZGlyZWN0bHkKICAgIGluIEd1enpsZSwgb3BlcmF0aW5nIG9uIFBTUi03IG1lc3NhZ2VzLgogICogUmV0cnkgbG9naWMgaXMgbm93IGVuY2Fwc3VsYXRlZCBpbiBgR3V6emxlSHR0cFxNaWRkbGV3YXJlOjpyZXRyeWAsIHdoaWNoCiAgICBtZWFucyB0aGUgYGd1enpsZWh0dHAvcmV0cnktc3Vic2NyaWJlcmAgaXMgbm93IG9ic29sZXRlLgogICogTW9ja2luZyByZXNwb25zZXMgaXMgbm93IGhhbmRsZWQgdXNpbmcgYEd1enpsZUh0dHBcSGFuZGxlclxNb2NrSGFuZGxlcmAuCiogQXN5bmNocm9ub3VzIHJlc3BvbnNlcwogICogTm8gbG9uZ2VyIHN1cHBvcnRzIHRoZSBgZnV0dXJlYCByZXF1ZXN0IG9wdGlvbiB0byBzZW5kIGFuIGFzeW5jIHJlcXVlc3QuCiAgICBJbnN0ZWFkLCB1c2Ugb25lIG9mIHRoZSBgKkFzeW5jYCBtZXRob2RzIG9mIGEgY2xpZW50IChlLmcuLCBgcmVxdWVzdEFzeW5jYCwKICAgIGBnZXRBc3luY2AsIGV0Yy4pLgogICogVXRpbGl6aW5nIGBHdXp6bGVIdHRwXFByb21pc2VgIGluc3RlYWQgb2YgUmVhY3QncyBwcm9taXNlIGxpYnJhcnkgdG8gYXZvaWQKICAgIHJlY3Vyc2lvbiByZXF1aXJlZCBieSBjaGFpbmluZyBhbmQgZm9yd2FyZGluZyByZWFjdCBwcm9taXNlcy4gU2VlCiAgICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3Byb21pc2VzCiAgKiBBZGRlZCBgcmVxdWVzdEFzeW5jYCBhbmQgYHNlbmRBc3luY2AgdG8gc2VuZCByZXF1ZXN0IGFzeW5jaHJvbm91c2x5LgogICogQWRkZWQgbWFnaWMgbWV0aG9kcyBmb3IgYGdldEFzeW5jKClgLCBgcG9zdEFzeW5jKClgLCBldGMuIHRvIHNlbmQgcmVxdWVzdHMKICAgIGFzeW5jaHJvbm91c2x5LgoqIFJlcXVlc3Qgb3B0aW9ucwogICogUE9TVCBhbmQgZm9ybSB1cGRhdGVzCiAgICAqIEFkZGVkIHRoZSBgZm9ybV9maWVsZHNgIGFuZCBgZm9ybV9maWxlc2AgcmVxdWVzdCBvcHRpb25zLgogICAgKiBSZW1vdmVkIHRoZSBgR3V6emxlSHR0cFxQb3N0YCBuYW1lc3BhY2UuCiAgICAqIFRoZSBgYm9keWAgcmVxdWVzdCBvcHRpb24gbm8gbG9uZ2VyIGFjY2VwdHMgYW4gYXJyYXkgZm9yIFBPU1QgcmVxdWVzdHMuCiAgKiBUaGUgYGV4Y2VwdGlvbnNgIHJlcXVlc3Qgb3B0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlCiAgICBgaHR0cF9lcnJvcnNgIHJlcXVlc3Qgb3B0aW9ucy4KICAqIFRoZSBgc2F2ZV90b2AgcmVxdWVzdCBvcHRpb24gaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgc2lua2AgcmVxdWVzdAogICAgb3B0aW9uLgoqIENsaWVudHMgbm8gbG9uZ2VyIGFjY2VwdCBhbiBhcnJheSBvZiBVUkkgdGVtcGxhdGUgc3RyaW5nIGFuZCB2YXJpYWJsZXMgZm9yCiAgVVJJIHZhcmlhYmxlcy4gWW91IHdpbGwgbmVlZCB0byBleHBhbmQgVVJJIHRlbXBsYXRlcyBiZWZvcmUgcGFzc2luZyB0aGVtCiAgaW50byBhIGNsaWVudCBjb25zdHJ1Y3RvciBvciByZXF1ZXN0IG1ldGhvZC4KKiBDbGllbnQgbWV0aG9kcyBgZ2V0KClgLCBgcG9zdCgpYCwgYHB1dCgpYCwgYHBhdGNoKClgLCBgb3B0aW9ucygpYCwgZXRjLiBhcmUKICBub3cgbWFnaWMgbWV0aG9kcyB0aGF0IHdpbGwgc2VuZCBzeW5jaHJvbm91cyByZXF1ZXN0cy4KKiBSZXBsYWNlZCBgVXRpbHMucGhwYCB3aXRoIHBsYWluIGZ1bmN0aW9ucyBpbiBgZnVuY3Rpb25zLnBocGAuCiogUmVtb3ZlZCBgR3V6emxlSHR0cFxDb2xsZWN0aW9uYC4KKiBSZW1vdmVkIGBHdXp6bGVIdHRwXEJhdGNoUmVzdWx0c2AuIEJhdGNoZWQgcG9vbCByZXN1bHRzIGFyZSBub3cgcmV0dXJuZWQgYXMKICBhbiBhcnJheS4KKiBSZW1vdmVkIGBHdXp6bGVIdHRwXFF1ZXJ5YC4gUXVlcnkgc3RyaW5nIGhhbmRsaW5nIGlzIG5vdyBoYW5kbGVkIHVzaW5nIGFuCiAgYXNzb2NpYXRpdmUgYXJyYXkgcGFzc2VkIGludG8gdGhlIGBxdWVyeWAgcmVxdWVzdCBvcHRpb24uIFRoZSBxdWVyeSBzdHJpbmcKICBpcyBzZXJpYWxpemVkIHVzaW5nIFBIUCdzIGBodHRwX2J1aWxkX3F1ZXJ5YC4gSWYgeW91IG5lZWQgbW9yZSBjb250cm9sLCB5b3UKICBjYW4gcGFzcyB0aGUgcXVlcnkgc3RyaW5nIGluIGFzIGEgc3RyaW5nLgoqIGBHdXp6bGVIdHRwXFF1ZXJ5UGFyc2VyYCBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIHRoZQogIGBHdXp6bGVIdHRwXFBzcjdccGFyc2VfcXVlcnlgLgoKCiMjIDUuMi4wIC0gMjAxNS0wMS0yNwoKKiBBZGRlZCBgQXBwbGllc0hlYWRlcnNJbnRlcmZhY2VgIHRvIG1ha2UgYXBwbHlpbmcgaGVhZGVycyB0byBhIHJlcXVlc3QgYmFzZWQKICBvbiB0aGUgYm9keSBtb3JlIGdlbmVyaWMgYW5kIG5vdCBzcGVjaWZpYyB0byBgUG9zdEJvZHlJbnRlcmZhY2VgLgoqIFJlZHVjZWQgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMgbmVlZGVkIHRvIHNlbmQgcmVxdWVzdHMuCiogTmVzdGVkIGZ1dHVyZXMgYXJlIG5vdyByZXNvbHZlZCBpbiB0aGUgY2xpZW50IHJhdGhlciB0aGFuIHRoZSBSZXF1ZXN0RnNtCiogRmluaXNoaW5nIHN0YXRlIHRyYW5zaXRpb25zIGlzIG5vdyBoYW5kbGVkIGluIHRoZSBSZXF1ZXN0RnNtIHJhdGhlciB0aGFuIHRoZQogIFJpbmdCcmlkZ2UuCiogQWRkZWQgYSBndWFyZCBpbiB0aGUgUG9vbCBjbGFzcyB0byBub3QgdXNlIHJlY3Vyc2lvbiBmb3IgcmVxdWVzdCByZXRyaWVzLgoKCiMjIDUuMS4wIC0gMjAxNC0xMi0xOQoKKiBQb29sIGNsYXNzIG5vIGxvbmdlciB1c2VzIHJlY3Vyc2lvbiB3aGVuIGEgcmVxdWVzdCBpcyBpbnRlcmNlcHRlZC4KKiBUaGUgc2l6ZSBvZiBhIFBvb2wgY2FuIG5vdyBiZSBkeW5hbWljYWxseSBhZGp1c3RlZCB1c2luZyBhIGNhbGxiYWNrLgogIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzk0My4KKiBTZXR0aW5nIGEgcmVxdWVzdCBvcHRpb24gdG8gYG51bGxgIHdoZW4gY3JlYXRpbmcgYSByZXF1ZXN0IHdpdGggYSBjbGllbnQgd2lsbAogIGVuc3VyZSB0aGF0IHRoZSBvcHRpb24gaXMgbm90IHNldC4gVGhpcyBhbGxvd3MgeW91IHRvIG92ZXJ3cml0ZSBkZWZhdWx0CiAgcmVxdWVzdCBvcHRpb25zIG9uIGEgcGVyLXJlcXVlc3QgYmFzaXMuCiAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvOTM3LgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGxpbWl0IHdoaWNoIHByb3RvY29scyBhcmUgYWxsb3dlZCBmb3IgcmVkaXJlY3RzIGJ5CiAgc3BlY2lmeWluZyBhIGBwcm90b2NvbHNgIGFycmF5IGluIHRoZSBgYWxsb3dfcmVkaXJlY3RzYCByZXF1ZXN0IG9wdGlvbi4KKiBOZXN0ZWQgZnV0dXJlcyBkdWUgdG8gcmV0cmllcyBhcmUgbm93IHJlc29sdmVkIHdoZW4gd2FpdGluZyBmb3Igc3luY2hyb25vdXMKICByZXNwb25zZXMuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzk0Ny4KKiBgIjAiYCBpcyBub3cgYW4gYWxsb3dlZCBVUkkgcGF0aC4gU2VlCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC85MzUuCiogYFF1ZXJ5YCBubyBsb25nZXIgdHlwZWhpbnRzIG9uIHRoZSBgJHF1ZXJ5YCBhcmd1bWVudCBpbiB0aGUgY29uc3RydWN0b3IsCiAgYWxsb3dpbmcgZm9yIHN0cmluZ3MgYW5kIGFycmF5cy4KKiBFeGNlcHRpb25zIHRocm93biBpbiB0aGUgYGVuZGAgZXZlbnQgYXJlIG5vdyBjb3JyZWN0bHkgd3JhcHBlZCB3aXRoIEd1enpsZQogIHNwZWNpZmljIGV4Y2VwdGlvbnMgaWYgbmVjZXNzYXJ5LgoKCiMjIDUuMC4zIC0gMjAxNC0xMS0wMwoKVGhpcyBjaGFuZ2UgdXBkYXRlcyBxdWVyeSBzdHJpbmdzIHNvIHRoYXQgdGhleSBhcmUgdHJlYXRlZCBhcyB1bi1lbmNvZGVkIHZhbHVlcwpieSBkZWZhdWx0IHdoZXJlIHRoZSB2YWx1ZSByZXByZXNlbnRzIGFuIHVuLWVuY29kZWQgdmFsdWUgdG8gc2VuZCBvdmVyIHRoZQp3aXJlLiBBIFF1ZXJ5IG9iamVjdCB0aGVuIGVuY29kZXMgdGhlIHZhbHVlIGJlZm9yZSBzZW5kaW5nIG92ZXIgdGhlIHdpcmUuIFRoaXMKbWVhbnMgdGhhdCBldmVuIHZhbHVlIHF1ZXJ5IHN0cmluZyB2YWx1ZXMgKGUuZy4sICI6IikgYXJlIHVybCBlbmNvZGVkLiBUaGlzCm1ha2VzIHRoZSBRdWVyeSBjbGFzcyBtYXRjaCBQSFAncyBodHRwX2J1aWxkX3F1ZXJ5IGZ1bmN0aW9uLiBIb3dldmVyLCBpZiB5b3UKd2FudCB0byBzZW5kIHJlcXVlc3RzIG92ZXIgdGhlIHdpcmUgdXNpbmcgdmFsaWQgcXVlcnkgc3RyaW5nIGNoYXJhY3RlcnMgdGhhdCBkbwpub3QgbmVlZCB0byBiZSBlbmNvZGVkLCB0aGVuIHlvdSBjYW4gcHJvdmlkZSBhIHN0cmluZyB0byBVcmw6OnNldFF1ZXJ5KCkgYW5kCnBhc3MgdHJ1ZSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHNwZWNpZnkgdGhhdCB0aGUgcXVlcnkgc3RyaW5nIGlzIGEgcmF3CnN0cmluZyB0aGF0IHNob3VsZCBub3QgYmUgcGFyc2VkIG9yIGVuY29kZWQgKHVubGVzcyBhIGNhbGwgdG8gZ2V0UXVlcnkoKSBpcwpzdWJzZXF1ZW50bHkgbWFkZSwgZm9yY2luZyB0aGUgcXVlcnktc3RyaW5nIHRvIGJlIGNvbnZlcnRlZCBpbnRvIGEgUXVlcnkKb2JqZWN0KS4KCgojIyA1LjAuMiAtIDIwMTQtMTAtMzAKCiogQWRkZWQgYSB0cmFpbGluZyBgXHJcbmAgdG8gbXVsdGlwYXJ0L2Zvcm0tZGF0YSBwYXlsb2Fkcy4gU2VlCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC84NzEKKiBBZGRlZCBhIGBHdXp6bGVIdHRwXFBvb2w6OnNlbmQoKWAgY29udmVuaWVuY2UgbWV0aG9kIHRvIG1hdGNoIHRoZSBkb2NzLgoqIFN0YXR1cyBjb2RlcyBhcmUgbm93IHJldHVybmVkIGFzIGludGVnZXJzLiBTZWUKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvODgxCiogTm8gbG9uZ2VyIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgIGhlYWRlcgogIHdoZW4gc2VuZGluZyBQT1NUIHJlcXVlc3RzLCBhbGxvd2luZyBmb3IgY3VzdG9taXplZCBoZWFkZXJzLiBTZWUKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvODc3CiogSW1wcm92ZWQgcGF0aCBVUkwgc2VyaWFsaXphdGlvbi4KCiAgKiBObyBsb25nZXIgZG91YmxlIHBlcmNlbnQtZW5jb2RpbmcgY2hhcmFjdGVycyBpbiB0aGUgcGF0aCBvciBxdWVyeSBzdHJpbmcgaWYKICAgIHRoZXkgYXJlIGFscmVhZHkgZW5jb2RlZC4KICAqIE5vdyBwcm9wZXJseSBlbmNvZGluZyB0aGUgc3VwcGxpZWQgcGF0aCB0byBhIFVSTCBvYmplY3QsIGluc3RlYWQgb2Ygb25seQogICAgZW5jb2RpbmcgJyAnIGFuZCAnPycuCiAgKiBOb3RlOiBUaGlzIGhhcyBiZWVuIGNoYW5nZWQgaW4gNS4wLjMgdG8gbm93IGVuY29kZSBxdWVyeSBzdHJpbmcgdmFsdWVzIGJ5CiAgICBkZWZhdWx0IHVubGVzcyB0aGUgYHJhd1N0cmluZ2AgYXJndW1lbnQgaXMgcHJvdmlkZWQgd2hlbiBzZXR0aW5nIHRoZSBxdWVyeQogICAgc3RyaW5nIG9uIGEgVVJMOiBOb3cgYWxsb3dpbmcgbWFueSBtb3JlIGNoYXJhY3RlcnMgdG8gYmUgcHJlc2VudCBpbiB0aGUKICAgIHF1ZXJ5IHN0cmluZyB3aXRob3V0IGJlaW5nIHBlcmNlbnQgZW5jb2RlZC4gU2VlCiAgICBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjYXBwZW5kaXgtQQoKCiMjIDUuMC4xIC0gMjAxNC0xMC0xNgoKQnVnZml4IHJlbGVhc2UuCgoqIEZpeGVkIGFuIGlzc3VlIHdoZXJlIGNvbm5lY3Rpb24gZXJyb3JzIHN0aWxsIHJldHVybmVkIHJlc3BvbnNlIG9iamVjdCBpbgogIGVycm9yIGFuZCBlbmQgZXZlbnRzIGV2ZW50IHRob3VnaCB0aGUgcmVzcG9uc2UgaXMgdW51c2FibGUuIFRoaXMgaGFzIGJlZW4KICBjb3JyZWN0ZWQgc28gdGhhdCBhIHJlc3BvbnNlIGlzIG5vdCByZXR1cm5lZCBpbiB0aGUgYGdldFJlc3BvbnNlYCBtZXRob2Qgb2YKICB0aGVzZSBldmVudHMgaWYgdGhlIHJlc3BvbnNlIGRpZCBub3QgY29tcGxldGUuIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy84NjcKKiBGaXhlZCBhbiBpc3N1ZSB3aGVyZSB0cmFuc2ZlciBzdGF0aXN0aWNzIHdlcmUgbm90IGJlaW5nIHBvcHVsYXRlZCBpbiB0aGUKICBSaW5nQnJpZGdlLiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvODY2CgoKIyMgNS4wLjAgLSAyMDE0LTEwLTEyCgpBZGRpbmcgc3VwcG9ydCBmb3Igbm9uLWJsb2NraW5nIHJlc3BvbnNlcyBhbmQgc29tZSBtaW5vciBBUEkgY2xlYW51cC4KCiMjIyBOZXcgRmVhdHVyZXMKCiogQWRkZWQgc3VwcG9ydCBmb3Igbm9uLWJsb2NraW5nIHJlc3BvbnNlcyBiYXNlZCBvbiBgZ3V6emxlaHR0cC9ndXp6bGUtcmluZ2AuCiogQWRkZWQgYSBwdWJsaWMgQVBJIGZvciBjcmVhdGluZyBhIGRlZmF1bHQgSFRUUCBhZGFwdGVyLgoqIFVwZGF0ZWQgdGhlIHJlZGlyZWN0IHBsdWdpbiB0byBiZSBub24tYmxvY2tpbmcgc28gdGhhdCByZWRpcmVjdHMgYXJlIHNlbnQKICBjb25jdXJyZW50bHkuIE90aGVyIHBsdWdpbnMgbGlrZSB0aGlzIGNhbiBub3cgYmUgdXBkYXRlZCB0byBiZSBub24tYmxvY2tpbmcuCiogQWRkZWQgYSAicHJvZ3Jlc3MiIGV2ZW50IHNvIHRoYXQgeW91IGNhbiBnZXQgdXBsb2FkIGFuZCBkb3dubG9hZCBwcm9ncmVzcwogIGV2ZW50cy4KKiBBZGRlZCBgR3V6emxlSHR0cFxQb29sYCB3aGljaCBpbXBsZW1lbnRzIEZ1dHVyZUludGVyZmFjZSBhbmQgdHJhbnNmZXJzCiAgcmVxdWVzdHMgY29uY3VycmVudGx5IHVzaW5nIGEgY2FwcGVkIHBvb2wgc2l6ZSBhcyBlZmZpY2llbnRseSBhcyBwb3NzaWJsZS4KKiBBZGRlZCBgaGFzTGlzdGVuZXJzKClgIHRvIEVtaXR0ZXJJbnRlcmZhY2UuCiogUmVtb3ZlZCBgR3V6emxlSHR0cFxDbGllbnRJbnRlcmZhY2U6OnNlbmRBbGxgIGFuZCBtYXJrZWQKICBgR3V6emxlSHR0cFxDbGllbnQ6OnNlbmRBbGxgIGFzIGRlcHJlY2F0ZWQgKGl0J3Mgc3RpbGwgdGhlcmUsIGp1c3Qgbm90IHRoZQogIHJlY29tbWVuZGVkIHdheSkuCgojIyMgQnJlYWtpbmcgY2hhbmdlcwoKVGhlIGJyZWFraW5nIGNoYW5nZXMgaW4gdGhpcyByZWxlYXNlIGFyZSByZWxhdGl2ZWx5IG1pbm9yLiBUaGUgYmlnZ2VzdCB0aGluZyB0bwpsb29rIG91dCBmb3IgaXMgdGhhdCByZXF1ZXN0IGFuZCByZXNwb25zZSBvYmplY3RzIG5vIGxvbmdlciBpbXBsZW1lbnQgZmx1ZW50CmludGVyZmFjZXMuCgoqIFJlbW92ZWQgdGhlIGZsdWVudCBpbnRlcmZhY2VzIChpLmUuLCBgcmV0dXJuICR0aGlzYCkgZnJvbSByZXF1ZXN0cywKICByZXNwb25zZXMsIGBHdXp6bGVIdHRwXENvbGxlY3Rpb25gLCBgR3V6emxlSHR0cFxVcmxgLAogIGBHdXp6bGVIdHRwXFF1ZXJ5YCwgYEd1enpsZUh0dHBcUG9zdFxQb3N0Qm9keWAsIGFuZAogIGBHdXp6bGVIdHRwXENvb2tpZVxTZXRDb29raWVgLiBUaGlzIGJsb2cgcG9zdCBwcm92aWRlcyBhIGdvb2Qgb3V0bGluZSBvZgogIHdoeSBJIGRpZCB0aGlzOiBodHRwczovL29jcmFtaXVzLmdpdGh1Yi5pby9ibG9nL2ZsdWVudC1pbnRlcmZhY2VzLWFyZS1ldmlsLy4KICBUaGlzIGFsc28gbWFrZXMgdGhlIEd1enpsZSBtZXNzYWdlIGludGVyZmFjZXMgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50CiAgUFNSLTcgbWVzc2FnZSBwcm9wb3NhbC4KKiBSZW1vdmVkICJmdW5jdGlvbnMucGhwIiwgc28gdGhhdCBHdXp6bGUgaXMgdHJ1bHkgUFNSLTQgY29tcGxpYW50LiBFeGNlcHQKICBmb3IgdGhlIEhUVFAgcmVxdWVzdCBmdW5jdGlvbnMgZnJvbSBmdW5jdGlvbi5waHAsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbm93CiAgaW1wbGVtZW50ZWQgaW4gYEd1enpsZUh0dHBcVXRpbHNgIHVzaW5nIGNhbWVsQ2FzZS4gYEd1enpsZUh0dHBcanNvbl9kZWNvZGVgCiAgbW92ZWQgdG8gYEd1enpsZUh0dHBcVXRpbHM6Ompzb25EZWNvZGVgLiBgR3V6emxlSHR0cFxnZXRfcGF0aGAgbW92ZWQgdG8KICBgR3V6emxlSHR0cFxVdGlsczo6Z2V0UGF0aGAuIGBHdXp6bGVIdHRwXHNldF9wYXRoYCBtb3ZlZCB0bwogIGBHdXp6bGVIdHRwXFV0aWxzOjpzZXRQYXRoYC4gYEd1enpsZUh0dHBcYmF0Y2hgIHNob3VsZCBub3cgYmUKICBgR3V6emxlSHR0cFxQb29sOjpiYXRjaGAsIHdoaWNoIHJldHVybnMgYW4gYG9iamVjdFN0b3JhZ2VgLiBVc2luZyBmdW5jdGlvbnMucGhwCiAgY2F1c2VkIHByb2JsZW1zIGZvciBtYW55IHVzZXJzOiB0aGV5IGFyZW4ndCBQU1ItNCBjb21wbGlhbnQsIHJlcXVpcmUgYW4KICBleHBsaWNpdCBpbmNsdWRlLCBhbmQgbmVlZGVkIGFuIGlmLWd1YXJkIHRvIGVuc3VyZSB0aGF0IHRoZSBmdW5jdGlvbnMgYXJlIG5vdAogIGRlY2xhcmVkIG11bHRpcGxlIHRpbWVzLgoqIFJld3JvdGUgYWRhcHRlciBsYXllci4KICAgICogUmVtb3ZpbmcgYWxsIGNsYXNzZXMgZnJvbSBgR3V6emxlSHR0cFxBZGFwdGVyYCwgdGhlc2UgYXJlIG5vdwogICAgICBpbXBsZW1lbnRlZCBhcyBjYWxsYWJsZXMgdGhhdCBhcmUgc3RvcmVkIGluIGBHdXp6bGVIdHRwXFJpbmdcQ2xpZW50YC4KICAgICogUmVtb3ZlZCB0aGUgY29uY2VwdCBvZiAicGFyYWxsZWwgYWRhcHRlcnMiLiBTZW5kaW5nIHJlcXVlc3RzIHNlcmlhbGx5IG9yCiAgICAgIGNvbmN1cnJlbnRseSBpcyBub3cgaGFuZGxlZCB1c2luZyBhIHNpbmdsZSBhZGFwdGVyLgogICAgKiBNb3ZlZCBgR3V6emxlSHR0cFxBZGFwdGVyXFRyYW5zYWN0aW9uYCB0byBgR3V6emxlSHR0cFxUcmFuc2FjdGlvbmAuIFRoZQogICAgICBUcmFuc2FjdGlvbiBvYmplY3Qgbm93IGV4cG9zZXMgdGhlIHJlcXVlc3QsIHJlc3BvbnNlLCBhbmQgY2xpZW50IGFzIHB1YmxpYwogICAgICBwcm9wZXJ0aWVzLiBUaGUgZ2V0dGVycyBhbmQgc2V0dGVycyBoYXZlIGJlZW4gcmVtb3ZlZC4KKiBSZW1vdmVkIHRoZSAiaGVhZGVycyIgZXZlbnQuIFRoaXMgZXZlbnQgd2FzIG9ubHkgdXNlZnVsIGZvciBjaGFuZ2luZyB0aGUKICBib2R5IGEgcmVzcG9uc2Ugb25jZSB0aGUgaGVhZGVycyBvZiB0aGUgcmVzcG9uc2Ugd2VyZSBrbm93bi4gWW91IGNhbiBpbXBsZW1lbnQKICBhIHNpbWlsYXIgYmVoYXZpb3IgaW4gYSBudW1iZXIgb2Ygd2F5cy4gT25lIGV4YW1wbGUgbWlnaHQgYmUgdG8gdXNlIGEKICBGblN0cmVhbSB0aGF0IGhhcyBhY2Nlc3MgdG8gdGhlIHRyYW5zYWN0aW9uIGJlaW5nIHNlbnQuIEZvciBleGFtcGxlLCB3aGVuIHRoZQogIGZpcnN0IGJ5dGUgaXMgd3JpdHRlbiwgeW91IGNvdWxkIGNoZWNrIGlmIHRoZSByZXNwb25zZSBoZWFkZXJzIG1hdGNoIHlvdXIKICBleHBlY3RhdGlvbnMsIGFuZCBpZiBzbywgY2hhbmdlIHRoZSBhY3R1YWwgc3RyZWFtIGJvZHkgdGhhdCBpcyBiZWluZwogIHdyaXR0ZW4gdG8uCiogUmVtb3ZlZCB0aGUgYGFzQXJyYXlgIHBhcmFtZXRlciBmcm9tCiAgYEd1enpsZUh0dHBcTWVzc2FnZVxNZXNzYWdlSW50ZXJmYWNlOjpnZXRIZWFkZXJgLiBJZiB5b3Ugd2FudCB0byBnZXQgYSBoZWFkZXIKICB2YWx1ZSBhcyBhbiBhcnJheSwgdGhlbiB1c2UgdGhlIG5ld2x5IGFkZGVkIGBnZXRIZWFkZXJBc0FycmF5KClgIG1ldGhvZCBvZgogIGBNZXNzYWdlSW50ZXJmYWNlYC4gVGhpcyBjaGFuZ2UgbWFrZXMgdGhlIEd1enpsZSBpbnRlcmZhY2VzIGNvbXBhdGlibGUgd2l0aAogIHRoZSBQU1ItNyBpbnRlcmZhY2VzLgoqIGBHdXp6bGVIdHRwXE1lc3NhZ2VcTWVzc2FnZUZhY3RvcnlgIG5vIGxvbmdlciBhbGxvd3Mgc3ViY2xhc3NlcyB0byBhZGQKICBjdXN0b20gcmVxdWVzdCBvcHRpb25zIHVzaW5nIGRvdWJsZS1kaXNwYXRjaCAodGhpcyB3YXMgYW4gaW1wbGVtZW50YXRpb24KICBkZXRhaWwpLiBJbnN0ZWFkLCB5b3Ugc2hvdWxkIG5vdyBwcm92aWRlIGFuIGFzc29jaWF0aXZlIGFycmF5IHRvIHRoZQogIGNvbnN0cnVjdG9yIHdoaWNoIGlzIGEgbWFwcGluZyBvZiB0aGUgcmVxdWVzdCBvcHRpb24gbmFtZSBtYXBwaW5nIHRvIGEKICBmdW5jdGlvbiB0aGF0IGFwcGxpZXMgdGhlIG9wdGlvbiB2YWx1ZSB0byBhIHJlcXVlc3QuCiogUmVtb3ZlZCB0aGUgY29uY2VwdCBvZiAidGhyb3dJbW1lZGlhdGVseSIgZnJvbSBleGNlcHRpb25zIGFuZCBlcnJvciBldmVudHMuCiAgVGhpcyBjb250cm9sIG1lY2hhbmlzbSB3YXMgdXNlZCB0byBzdG9wIGEgdHJhbnNmZXIgb2YgY29uY3VycmVudCByZXF1ZXN0cwogIGZyb20gY29tcGxldGluZy4gVGhpcyBjYW4gbm93IGJlIGhhbmRsZWQgYnkgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBvciBieQogIGNhbmNlbGxpbmcgYSBwb29sIG9mIHJlcXVlc3RzIG9yIGVhY2ggb3V0c3RhbmRpbmcgZnV0dXJlIHJlcXVlc3QgaW5kaXZpZHVhbGx5LgoqIFVwZGF0ZWQgdG8gIkd1enpsZUh0dHBcU3RyZWFtcyIgMy4wLgogICAgKiBgR3V6emxlSHR0cFxTdHJlYW1cU3RyZWFtSW50ZXJmYWNlOjpnZXRDb250ZW50cygpYCBubyBsb25nZXIgYWNjZXB0cyBhCiAgICAgIGBtYXhMZW5gIHBhcmFtZXRlci4gVGhpcyB1cGRhdGUgbWFrZXMgdGhlIEd1enpsZSBzdHJlYW1zIHByb2plY3QKICAgICAgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IFBTUi03IHByb3Bvc2FsLgogICAgKiBgR3V6emxlSHR0cFxTdHJlYW1cU3RyZWFtOjpfX2NvbnN0cnVjdGAsCiAgICAgIGBHdXp6bGVIdHRwXFN0cmVhbVxTdHJlYW06OmZhY3RvcnlgLCBhbmQKICAgICAgYEd1enpsZUh0dHBcU3RyZWFtXFV0aWxzOjpjcmVhdGVgIG5vIGxvbmdlciBhY2NlcHQgYSBzaXplIGluIHRoZSBzZWNvbmQKICAgICAgYXJndW1lbnQuIFRoZXkgbm93IGFjY2VwdCBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBvcHRpb25zLCBpbmNsdWRpbmcgdGhlCiAgICAgICJzaXplIiBrZXkgYW5kICJtZXRhZGF0YSIga2V5IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHByb3ZpZGUgY3VzdG9tIG1ldGFkYXRhLgoKCiMjIDQuMi4yIC0gMjAxNC0wOS0wOAoKKiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBDdXJsQWRhcHRlciB3aGVuIHJldXNpbmcgY1VSTCBoYW5kbGVzLgoqIE5vIGxvbmdlciB1c2luZyBgcmVxdWVzdF9mdWxsdXJpYCBpbiBzdHJlYW0gYWRhcHRlciBwcm94aWVzLgoqIFJlbGF0aXZlIHJlZGlyZWN0cyBhcmUgbm93IGJhc2VkIG9uIHRoZSBsYXN0IHJlc3BvbnNlLCBub3QgdGhlIGZpcnN0IHJlc3BvbnNlLgoKIyMgNC4yLjEgLSAyMDE0LTA4LTE5CgoqIEVuc3VyaW5nIHRoYXQgdGhlIFN0cmVhbUFkYXB0ZXIgZG9lcyBub3QgYWx3YXlzIGFkZCBhIENvbnRlbnQtVHlwZSBoZWFkZXIKKiBBZGRpbmcgYXV0b21hdGVkIGdpdGh1YiByZWxlYXNlcyB3aXRoIGEgcGhhciBhbmQgemlwCgojIyA0LjIuMCAtIDIwMTQtMDgtMTcKCiogTm93IG1lcmdpbmcgaW4gZGVmYXVsdCBvcHRpb25zIHVzaW5nIGEgY2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29uLgogIENsb3NlcyBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvNzY3CiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gYXV0b21hdGljYWxseSBkZWNvZGUgYENvbnRlbnQtRW5jb2RpbmdgIHJlc3BvbnNlIGJvZGllcwogIHVzaW5nIHRoZSBgZGVjb2RlX2NvbnRlbnRgIHJlcXVlc3Qgb3B0aW9uLiBUaGlzIGlzIHNldCB0byBgdHJ1ZWAgYnkgZGVmYXVsdAogIHRvIGRlY29kZSB0aGUgcmVzcG9uc2UgYm9keSBpZiBpdCBjb21lcyBvdmVyIHRoZSB3aXJlIHdpdGggYQogIGBDb250ZW50LUVuY29kaW5nYC4gU2V0IHRoaXMgdmFsdWUgdG8gYGZhbHNlYCB0byBkaXNhYmxlIGRlY29kaW5nIHRoZQogIHJlc3BvbnNlIGNvbnRlbnQsIGFuZCBwYXNzIGEgc3RyaW5nIHRvIHByb3ZpZGUgYSByZXF1ZXN0IGBBY2NlcHQtRW5jb2RpbmdgCiAgaGVhZGVyIGFuZCB0dXJuIG9uIGF1dG9tYXRpYyByZXNwb25zZSBkZWNvZGluZy4gVGhpcyBmZWF0dXJlIG5vdyBhbGxvd3MgeW91CiAgdG8gcGFzcyBhbiBgQWNjZXB0LUVuY29kaW5nYCBoZWFkZXIgaW4gdGhlIGhlYWRlcnMgb2YgYSByZXF1ZXN0IGJ1dCBzdGlsbAogIGRpc2FibGUgYXV0b21hdGljIHJlc3BvbnNlIGRlY29kaW5nLgogIENsb3NlcyBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvNzY0CiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGltbWVkaWF0ZWx5IHdoZW4gdHJhbnNmZXJyaW5nCiAgcmVxdWVzdHMgaW4gcGFyYWxsZWwuIENsb3NlcyBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvNzYwCiogVXBkYXRpbmcgZ3V6emxlaHR0cC9zdHJlYW1zIGRlcGVuZGVuY3kgdG8gfjIuMQoqIE5vIGxvbmdlciB1dGlsaXppbmcgdGhlIG5vdyBkZXByZWNhdGVkIG5hbWVzcGFjZWQgbWV0aG9kcyBmcm9tIHRoZSBzdHJlYW0KICBwYWNrYWdlLgoKIyMgNC4xLjggLSAyMDE0LTA4LTE0CgoqIEZpeGVkIGFuIGlzc3VlIGluIHRoZSBDdXJsRmFjdG9yeSB0aGF0IGNhdXNlZCBzZXR0aW5nIHRoZSBgc3RyZWFtPWZhbHNlYAogIHJlcXVlc3Qgb3B0aW9uIHRvIHRocm93IGFuIGV4Y2VwdGlvbi4KICBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy83NjkKKiBUcmFuc2FjdGlvbkl0ZXJhdG9yIG5vdyBjYWxscyByZXdpbmQgb24gdGhlIGlubmVyIGl0ZXJhdG9yLgogIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC83NjUKKiBZb3UgY2FuIG5vdyBzZXQgdGhlIGBDb250ZW50LVR5cGVgIGhlYWRlciB0byBgbXVsdGlwYXJ0L2Zvcm0tZGF0YWAKICB3aGVuIGNyZWF0aW5nIFBPU1QgcmVxdWVzdHMgdG8gZm9yY2UgbXVsdGlwYXJ0IGJvZGllcy4KICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzc2OAoKIyMgNC4xLjcgLSAyMDE0LTA4LTA3CgoqIEZpeGVkIGFuIGVycm9yIGluIHRoZSBIaXN0b3J5UGx1Z2luIHRoYXQgY2F1c2VkIHRoZSBzYW1lIHJlcXVlc3QgYW5kIHJlc3BvbnNlCiAgdG8gYmUgbG9nZ2VkIG11bHRpcGxlIHRpbWVzIHdoZW4gYW4gSFRUUCBwcm90b2NvbCBlcnJvciBvY2N1cnMuCiogRW5zdXJpbmcgdGhhdCBjVVJMIGRvZXMgbm90IGFkZCBhIGRlZmF1bHQgQ29udGVudC1UeXBlIHdoZW4gbm8gQ29udGVudC1UeXBlCiAgaGFzIGJlZW4gc3VwcGxpZWQgYnkgdGhlIHVzZXIuIFRoaXMgcHJldmVudHMgdGhlIGFkYXB0ZXIgbGF5ZXIgZnJvbSBtb2RpZnlpbmcKICB0aGUgcmVxdWVzdCB0aGF0IGlzIHNlbnQgb3ZlciB0aGUgd2lyZSBhZnRlciBhbnkgbGlzdGVuZXJzIG1heSBoYXZlIGFscmVhZHkKICBwdXQgdGhlIHJlcXVlc3QgaW4gYSBkZXNpcmVkIHN0YXRlIChlLmcuLCBzaWduZWQgdGhlIHJlcXVlc3QpLgoqIFRocm93aW5nIGFuIGV4Y2VwdGlvbiB3aGVuIHlvdSBhdHRlbXB0IHRvIHNlbmQgcmVxdWVzdHMgdGhhdCBoYXZlIHRoZQogICJzdHJlYW0iIHNldCB0byB0cnVlIGluIHBhcmFsbGVsIHVzaW5nIHRoZSBNdWx0aUFkYXB0ZXIuCiogT25seSBjYWxsaW5nIGN1cmxfbXVsdGlfc2VsZWN0IHdoZW4gdGhlcmUgYXJlIGFjdGl2ZSBjVVJMIGhhbmRsZXMuIFRoaXMgd2FzCiAgcHJldmlvdXNseSBjaGFuZ2VkIGFuZCBjYXVzZWQgcGVyZm9ybWFuY2UgcHJvYmxlbXMgb24gc29tZSBzeXN0ZW1zIGR1ZSB0byBQSFAKICBhbHdheXMgc2VsZWN0aW5nIHVudGlsIHRoZSBtYXhpbXVtIHNlbGVjdCB0aW1lb3V0LgoqIEZpeGVkIGEgYnVnIHdoZXJlIG11bHRpcGFydC9mb3JtLWRhdGEgUE9TVCBmaWVsZHMgd2VyZSBub3QgY29ycmVjdGx5CiAgYWdncmVnYXRlZCAoZS5nLiwgdmFsdWVzIHdpdGggIiYiKS4KCiMjIDQuMS42IC0gMjAxNC0wOC0wMwoKKiBBZGRlZCBoZWxwZXIgbWV0aG9kcyB0byBtYWtlIGl0IGVhc2llciB0byByZXByZXNlbnQgbWVzc2FnZXMgYXMgc3RyaW5ncywKICBpbmNsdWRpbmcgZ2V0dGluZyB0aGUgc3RhcnQgbGluZSBhbmQgZ2V0dGluZyBoZWFkZXJzIGFzIGEgc3RyaW5nLgoKIyMgNC4xLjUgLSAyMDE0LTA4LTAyCgoqIEF1dG9tYXRpY2FsbHkgcmV0cnlpbmcgY1VSTCAiQ29ubmVjdGlvbiBkaWVkLCByZXRyeWluZyBhIGZyZXNoIGNvbm5lY3QiCiAgZXJyb3JzIHdoZW4gcG9zc2libGUuCiogY1VSTCBpbXBsZW1lbnRhdGlvbiBjbGVhbnVwCiogQWxsb3dpbmcgbXVsdGlwbGUgZXZlbnQgc3Vic2NyaWJlciBsaXN0ZW5lcnMgdG8gYmUgcmVnaXN0ZXJlZCBwZXIgZXZlbnQgYnkKICBwYXNzaW5nIGFuIGFycmF5IG9mIGFycmF5cyBvZiBsaXN0ZW5lciBjb25maWd1cmF0aW9uLgoKIyMgNC4xLjQgLSAyMDE0LTA3LTIyCgoqIEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkIG11bHRpLXBhcnQgUE9TVCByZXF1ZXN0cyB3aXRoIG1vcmUgdGhhbiBvbmUgZmllbGQgdG8KICBzZXJpYWxpemUgaW5jb3JyZWN0bHkuCiogUGF0aHMgY2FuIG5vdyBiZSBzZXQgdG8gIjAiCiogYFJlc3BvbnNlSW50ZXJmYWNlOjp4bWxgIG5vdyBhY2NlcHRzIGEgYGxpYnhtbF9vcHRpb25zYCBvcHRpb24gYW5kIGFkZGVkIGEKICBtaXNzaW5nIGRlZmF1bHQgYXJndW1lbnQgdGhhdCB3YXMgcmVxdWlyZWQgd2hlbiBwYXJzaW5nIFhNTCByZXNwb25zZSBib2RpZXMuCiogQSBgc2F2ZV90b2Agc3RyZWFtIGlzIG5vdyBjcmVhdGVkIGxhemlseSwgd2hpY2ggbWVhbnMgdGhhdCBmaWxlcyBhcmUgbm90CiAgY3JlYXRlZCBvbiBkaXNrIHVubGVzcyBhIHJlcXVlc3Qgc3VjY2VlZHMuCgojIyA0LjEuMyAtIDIwMTQtMDctMTUKCiogVmFyaW91cyBmaXhlcyB0byBtdWx0aXBhcnQvZm9ybS1kYXRhIFBPU1QgdXBsb2FkcwoqIFdyYXBwaW5nIGZ1bmN0aW9uLnBocCBpbiBhbiBpZi1zdGF0ZW1lbnQgdG8gZW5zdXJlIEd1enpsZSBjYW4gYmUgdXNlZAogIGdsb2JhbGx5IGFuZCBpbiBhIENvbXBvc2VyIGluc3RhbGwKKiBGaXhlZCBhbiBpc3N1ZSB3aXRoIGdlbmVyYXRpbmcgYW5kIG1lcmdpbmcgaW4gZXZlbnRzIHRvIGFuIGV2ZW50IGFycmF5CiogUE9TVCBoZWFkZXJzIGFyZSBvbmx5IGFwcGxpZWQgYmVmb3JlIHNlbmRpbmcgYSByZXF1ZXN0IHRvIGFsbG93IHlvdSB0byBjaGFuZ2UKICB0aGUgcXVlcnkgYWdncmVnYXRvciB1c2VkIGJlZm9yZSB1cGxvYWRpbmcKKiBBZGRlZCBtdWNoIG1vcmUgcm9idXN0IHF1ZXJ5IHN0cmluZyBwYXJzaW5nCiogRml4ZWQgdmFyaW91cyBwYXJzaW5nIGFuZCBub3JtYWxpemF0aW9uIGlzc3VlcyB3aXRoIFVSTHMKKiBGaXhpbmcgYW4gaXNzdWUgd2hlcmUgbXVsdGktdmFsdWVkIGhlYWRlcnMgd2VyZSBub3QgYmVpbmcgdXRpbGl6ZWQgY29ycmVjdGx5CiAgaW4gdGhlIFN0cmVhbUFkYXB0ZXIKCiMjIDQuMS4yIC0gMjAxNC0wNi0xOAoKKiBBZGRlZCBzdXBwb3J0IGZvciBzZW5kaW5nIHBheWxvYWRzIHdpdGggR0VUIHJlcXVlc3RzCgojIyA0LjEuMSAtIDIwMTQtMDYtMDgKCiogRml4ZWQgYW4gaXNzdWUgcmVsYXRlZCB0byB1c2luZyBjdXN0b20gbWVzc2FnZSBmYWN0b3J5IG9wdGlvbnMgaW4gc3ViY2xhc3NlcwoqIEZpeGVkIGFuIGlzc3VlIHdpdGggbmVzdGVkIGZvcm0gZmllbGRzIGluIGEgbXVsdGktcGFydCBQT1NUCiogRml4ZWQgYW4gaXNzdWUgd2l0aCB1c2luZyB0aGUgYGpzb25gIHJlcXVlc3Qgb3B0aW9uIGZvciBQT1NUIHJlcXVlc3RzCiogQWRkZWQgYFRvQXJyYXlJbnRlcmZhY2VgIHRvIGBHdXp6bGVIdHRwXENvb2tpZVxDb29raWVKYXJgCgojIyA0LjEuMCAtIDIwMTQtMDUtMjcKCiogQWRkZWQgYSBganNvbmAgcmVxdWVzdCBvcHRpb24gdG8gZWFzaWx5IHNlcmlhbGl6ZSBKU09OIHBheWxvYWRzLgoqIEFkZGVkIGEgYEd1enpsZUh0dHBcanNvbl9kZWNvZGUoKWAgd3JhcHBlciB0byBzYWZlbHkgcGFyc2UgSlNPTi4KKiBBZGRlZCBgc2V0UG9ydCgpYCBhbmQgYGdldFBvcnQoKWAgdG8gYEd1enpsZUh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlYC4KKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBwcm92aWRlIGFuIGVtaXR0ZXIgdG8gYSBjbGllbnQgaW4gdGhlIGNsaWVudCBjb25zdHJ1Y3Rvci4KKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBwZXJzaXN0IGEgY29va2llIHNlc3Npb24gdXNpbmcgJF9TRVNTSU9OLgoqIEFkZGVkIGEgdHJhaXQgdGhhdCBjYW4gYmUgdXNlZCB0byBhZGQgZXZlbnQgbGlzdGVuZXJzIHRvIGFuIGl0ZXJhdG9yLgoqIFJlbW92ZWQgcmVxdWVzdCBtZXRob2QgY29uc3RhbnRzIGZyb20gUmVxdWVzdEludGVyZmFjZS4KKiBGaXhlZCB3YXJuaW5nIHdoZW4gaW52YWxpZCByZXF1ZXN0IHN0YXJ0LWxpbmVzIGFyZSByZWNlaXZlZC4KKiBVcGRhdGVkIE1lc3NhZ2VGYWN0b3J5IHRvIHdvcmsgd2l0aCBjdXN0b20gcmVxdWVzdCBvcHRpb24gbWV0aG9kcy4KKiBVcGRhdGVkIGNhY2VydCBidW5kbGUgdG8gbGF0ZXN0IGJ1aWxkLgoKNC4wLjIgKDIwMTQtMDQtMTYpCi0tLS0tLS0tLS0tLS0tLS0tLQoKKiBQcm94eSByZXF1ZXN0cyB1c2luZyB0aGUgU3RyZWFtQWRhcHRlciBub3cgcHJvcGVybHkgdXNlIHJlcXVlc3RfZnVsbHVyaSAoIzYzMikKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBzZXQgc2NhbGFycyBhcyBQT1NUIGZpZWxkcyAoIzYyOCkKCiMjIDQuMC4xIC0gMjAxNC0wNC0wNAoKKiBUaGUgSFRUUCBzdGF0dXMgY29kZSBvZiBhIHJlc3BvbnNlIGlzIG5vdyBzZXQgYXMgdGhlIGV4Y2VwdGlvbiBjb2RlIG9mCiAgUmVxdWVzdEV4Y2VwdGlvbiBvYmplY3RzLgoqIDMwMyByZWRpcmVjdHMgd2lsbCBub3cgY29ycmVjdGx5IHN3aXRjaCBmcm9tIFBPU1QgdG8gR0VUIHJlcXVlc3RzLgoqIFRoZSBkZWZhdWx0IHBhcmFsbGVsIGFkYXB0ZXIgb2YgYSBjbGllbnQgbm93IGNvcnJlY3RseSB1c2VzIHRoZSBNdWx0aUFkYXB0ZXIuCiogSGFzRGF0YVRyYWl0IG5vdyBpbml0aWFsaXplcyB0aGUgaW50ZXJuYWwgZGF0YSBhcnJheSBhcyBhbiBlbXB0eSBhcnJheSBzbwogIHRoYXQgdGhlIHRvQXJyYXkoKSBtZXRob2QgYWx3YXlzIHJldHVybnMgYW4gYXJyYXkuCgojIyA0LjAuMCAtIDIwMTQtMDMtMjkKCiogRm9yIGluZm9ybWF0aW9uIG9uIGNoYW5nZXMgYW5kIHVwZ3JhZGluZywgc2VlOgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2Jsb2IvNC54L1VQR1JBRElORy5tZCMzeC10by00MAoqIEFkZGVkIGBHdXp6bGVIdHRwXGJhdGNoKClgIGFzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNlbmRpbmcgcmVxdWVzdHMgaW4KICBwYXJhbGxlbCB3aXRob3V0IG5lZWRpbmcgdG8gd3JpdGUgYXN5bmNocm9ub3VzIGNvZGUuCiogUmVzdHJ1Y3R1cmVkIGhvdyBldmVudHMgYXJlIGFkZGVkIHRvIGBHdXp6bGVIdHRwXENsaWVudEludGVyZmFjZTo6c2VuZEFsbCgpYC4KICBZb3UgY2FuIG5vdyBwYXNzIGEgY2FsbGFibGUgb3IgYW4gYXJyYXkgb2YgYXNzb2NpYXRpdmUgYXJyYXlzIHdoZXJlIGVhY2gKICBhc3NvY2lhdGl2ZSBhcnJheSBjb250YWlucyB0aGUgImZuIiwgInByaW9yaXR5IiwgYW5kICJvbmNlIiBrZXlzLgoKIyMgNC4wLjAucmMtMiAtIDIwMTQtMDMtMjUKCiogUmVtb3ZlZCBgZ2V0Q29uZmlnKClgIGFuZCBgc2V0Q29uZmlnKClgIGZyb20gY2xpZW50cyB0byBhdm9pZCBjb25mdXNpb24KICBhcm91bmQgd2hldGhlciB0aGluZ3MgbGlrZSBiYXNlX3VybCwgbWVzc2FnZV9mYWN0b3J5LCBldGMuIHNob3VsZCBiZSBhYmxlIHRvCiAgYmUgcmV0cmlldmVkIG9yIG1vZGlmaWVkLgoqIEFkZGVkIGBnZXREZWZhdWx0T3B0aW9uKClgIGFuZCBgc2V0RGVmYXVsdE9wdGlvbigpYCB0byBDbGllbnRJbnRlcmZhY2UKKiBmdW5jdGlvbnMucGhwIGZ1bmN0aW9ucyB3ZXJlIHJlbmFtZWQgdXNpbmcgc25ha2VfY2FzZSB0byBtYXRjaCBQSFAgaWRpb21zCiogQWRkZWQgc3VwcG9ydCBmb3IgYEhUVFBfUFJPWFlgLCBgSFRUUFNfUFJPWFlgLCBhbmQKICBgR1VaWkxFX0NVUkxfU0VMRUNUX1RJTUVPVVRgIGVudmlyb25tZW50IHZhcmlhYmxlcwoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgY3VzdG9tIGBzZW5kQWxsKClgIGV2ZW50IHByaW9yaXRpZXMKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IGN1c3RvbSBzdHJlYW0gY29udGV4dCBvcHRpb25zIHRvIHRoZSBzdHJlYW0KICBhZGFwdGVyLgoqIEFkZGVkIGEgZnVuY3Rpb25zLnBocCBmdW5jdGlvbiBmb3IgYGdldF9wYXRoKClgIGFuZCBgc2V0X3BhdGgoKWAKKiBDdXJsQWRhcHRlciBhbmQgTXVsdGlBZGFwdGVyIG5vdyB1c2UgYSBjYWxsYWJsZSB0byBnZW5lcmF0ZSBjdXJsIHJlc291cmNlcwoqIE1vY2tBZGFwdGVyIG5vdyBwcm9wZXJseSByZWFkcyBhIGJvZHkgYW5kIGVtaXRzIGEgYGhlYWRlcnNgIGV2ZW50CiogVXBkYXRlZCBVcmwgY2xhc3MgdG8gY2hlY2sgaWYgYSBzY2hlbWUgYW5kIGhvc3QgYXJlIHNldCBiZWZvcmUgYWRkaW5nICI6IgogIGFuZCAiLy8iLiBUaGlzIGFsbG93cyBlbXB0eSBVcmwgKGUuZy4sICIiKSB0byBiZSBzZXJpYWxpemVkIGFzICIiLgoqIFBhcnNpbmcgaW52YWxpZCBYTUwgbm8gbG9uZ2VyIGVtaXRzIHdhcm5pbmdzCiogQ3VybCBjbGFzc2VzIG5vdyBwcm9wZXJseSB0aHJvdyBBZGFwdGVyRXhjZXB0aW9ucwoqIFZhcmlvdXMgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucwoqIFN0cmVhbXMgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgZmFzdGVyIGBTdHJlYW1cY3JlYXRlKClgIGZ1bmN0aW9uCiogTWFya2VkIGRlcHJlY2F0aW9uX3Byb3h5KCkgYXMgaW50ZXJuYWwKKiBUZXN0IHNlcnZlciBpcyBub3cgYSBjb2xsZWN0aW9uIG9mIHN0YXRpYyBtZXRob2RzIG9uIGEgY2xhc3MKCiMjIDQuMC4wLXJjLjEgLSAyMDE0LTAzLTE1CgoqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9ibG9iLzQueC9VUEdSQURJTkcubWQjM3gtdG8tNDAKCiMjIDMuOC4xIC0gMjAxNC0wMS0yOAoKKiBCdWc6IEFsd2F5cyB1c2luZyBHRVQgcmVxdWVzdHMgd2hlbiByZWRpcmVjdGluZyBmcm9tIGEgMzAzIHJlc3BvbnNlCiogQnVnOiBDVVJMT1BUX1NTTF9WRVJJRllIT1NUIGlzIG5vdyBjb3JyZWN0bHkgc2V0IHRvIGZhbHNlIHdoZW4gc2V0dGluZyBgJGNlcnRpZmljYXRlQXV0aG9yaXR5YCB0byBmYWxzZSBpbgogIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OnNldFNzbFZlcmlmaWNhdGlvbigpYAoqIEJ1ZzogUmVkaXJlY3RQbHVnaW4gbm93IHVzZXMgc3RyaWN0IFJGQyAzOTg2IGNvbXBsaWFuY2Ugd2hlbiBjb21iaW5pbmcgYSBiYXNlIFVSTCB3aXRoIGEgcmVsYXRpdmUgVVJMCiogQnVnOiBUaGUgYm9keSBvZiBhIHJlcXVlc3QgY2FuIG5vdyBiZSBzZXQgdG8gYCIwImAKKiBTZW5kaW5nIFBIUCBzdHJlYW0gcmVxdWVzdHMgbm8gbG9uZ2VyIGZvcmNlcyBgSFRUUC8xLjBgCiogQWRkaW5nIG1vcmUgaW5mb3JtYXRpb24gdG8gRXhjZXB0aW9uQ29sbGVjdGlvbiBleGNlcHRpb25zIHNvIHRoYXQgdXNlcnMgaGF2ZSBtb3JlIGNvbnRleHQsIGluY2x1ZGluZyBhIHN0YWNrIHRyYWNlIG9mCiAgZWFjaCBzdWItZXhjZXB0aW9uCiogVXBkYXRlZCB0aGUgYCRyZWZgIGF0dHJpYnV0ZSBpbiBzZXJ2aWNlIGRlc2NyaXB0aW9ucyB0byBtZXJnZSBvdmVyIGFueSBleGlzdGluZyBwYXJhbWV0ZXJzIG9mIGEgc2NoZW1hIChyYXRoZXIgdGhhbgogIGNsb2JiZXJpbmcgZXZlcnl0aGluZykuCiogTWVyZ2luZyBVUkxzIHdpbGwgbm93IHVzZSB0aGUgcXVlcnkgc3RyaW5nIG9iamVjdCBmcm9tIHRoZSByZWxhdGl2ZSBVUkwgKHRodXMgYWxsb3dpbmcgY3VzdG9tIHF1ZXJ5IGFnZ3JlZ2F0b3JzKQoqIFF1ZXJ5IHN0cmluZ3MgYXJlIG5vdyBwYXJzZWQgaW4gYSB3YXkgdGhhdCB0aGV5IGRvIG5vIGNvbnZlcnQgZW1wdHkga2V5cyB3aXRoIG5vIHZhbHVlIHRvIGhhdmUgYSBkYW5nbGluZyBgPWAuCiAgRm9yIGV4YW1wbGUgYGZvbyZiYXI9YmF6YCBpcyBub3cgY29ycmVjdGx5IHBhcnNlZCBhbmQgcmVjb2duaXplZCBhcyBgZm9vJmJhcj1iYXpgIHJhdGhlciB0aGFuIGBmb289JmJhcj1iYXpgLgoqIE5vdyBwcm9wZXJseSBlc2NhcGluZyB0aGUgcmVndWxhciBleHByZXNzaW9uIGRlbGltaXRlciB3aGVuIG1hdGNoaW5nIENvb2tpZSBkb21haW5zLgoqIE5ldHdvcmsgYWNjZXNzIGlzIG5vdyBkaXNhYmxlZCB3aGVuIGxvYWRpbmcgWE1MIGRvY3VtZW50cwoKIyMgMy44LjAgLSAyMDEzLTEyLTA1CgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGRlZmluZSBhIFBPU1QgbmFtZSBmb3IgYSBmaWxlCiogSlNPTiByZXNwb25zZSBwYXJzaW5nIG5vdyBwcm9wZXJseSB3YWxrcyBhZGRpdGlvbmFsUHJvcGVydGllcwoqIGNVUkwgZXJyb3IgY29kZSAxOCBpcyBub3cgcmV0cmllZCBhdXRvbWF0aWNhbGx5IGluIHRoZSBCYWNrb2ZmUGx1Z2luCiogRml4ZWQgYSBjVVJMIGVycm9yIHdoZW4gVVJMcyBjb250YWluIGZyYWdtZW50cwoqIEZpeGVkIGFuIGlzc3VlIGluIHRoZSBCYWNrb2ZmUGx1Z2luIHJldHJ5IGV2ZW50IHdoZXJlIGl0IHdhcyB0cnlpbmcgdG8gYWNjZXNzIGFsbCBleGNlcHRpb25zIGFzIGlmIHRoZXkgd2VyZQogIEN1cmxFeGNlcHRpb25zCiogQ1VSTE9QVF9QUk9HUkVTUyBmdW5jdGlvbiBmaXggZm9yIFBIUCA1LjUgKDY5ZmNjMWUpCiogQWRkZWQgdGhlIGFiaWxpdHkgZm9yIEd1enpsZSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgY1VSTCB0aGF0IGRvIG5vdCBzdXBwb3J0IGBDVVJMT1BUX1RJTUVPVVRfTVNgCiogRml4ZWQgYSBidWcgdGhhdCB3YXMgZW5jb3VudGVyZWQgd2hlbiBwYXJzaW5nIGVtcHR5IGhlYWRlciBwYXJhbWV0ZXJzCiogVXJpVGVtcGxhdGUgbm93IGhhcyBhIGBzZXRSZWdleCgpYCBtZXRob2QgdG8gbWF0Y2ggdGhlIGRvY3MKKiBUaGUgYGRlYnVnYCByZXF1ZXN0IHBhcmFtZXRlciBub3cgY2hlY2tzIGlmIGl0IGlzIHRydXRoeSByYXRoZXIgdGhhbiBpZiBpdCBleGlzdHMKKiBTZXR0aW5nIHRoZSBgZGVidWdgIHJlcXVlc3QgcGFyYW1ldGVyIHRvIHRydWUgc2hvd3MgdmVyYm9zZSBjVVJMIG91dHB1dCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBMb2dQbHVnaW4KKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBjb21iaW5lIFVSTHMgdXNpbmcgc3RyaWN0IFJGQyAzOTg2IGNvbXBsaWFuY2UKKiBDb21tYW5kIG9iamVjdHMgY2FuIG5vdyByZXR1cm4gdGhlIHZhbGlkYXRpb24gZXJyb3JzIGVuY291bnRlcmVkIGJ5IHRoZSBjb21tYW5kCiogVmFyaW91cyBmaXhlcyB0byBjYWNoZSByZXZhbGlkYXRpb24gKCM0MzcgYW5kIDI5Nzk3ZTUpCiogVmFyaW91cyBmaXhlcyB0byB0aGUgQXN5bmNQbHVnaW4KKiBDbGVhbmVkIHVwIGJ1aWxkIHNjcmlwdHMKCiMjIDMuNy40IC0gMjAxMy0xMC0wMgoKKiBCdWcgZml4OiAwIGlzIG5vdyBhbiBhbGxvd2VkIHZhbHVlIGluIGEgZGVzY3JpcHRpb24gcGFyYW1ldGVyIHRoYXQgaGFzIGEgZGVmYXVsdCB2YWx1ZSAoIzQzMCkKKiBCdWcgZml4OiBTY2hlbWFGb3JtYXR0ZXIgbm93IHJldHVybnMgYW4gaW50ZWdlciB3aGVuIGZvcm1hdHRpbmcgdG8gYSBVbml4IHRpbWVzdGFtcAogIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3Mtc2RrLXBocC9pc3N1ZXMvMTQ3KQoqIEJ1ZyBmaXg6IENsZWFuZWQgdXAgYW5kIGZpeGVkIFVSTCBkb3Qgc2VnbWVudCByZW1vdmFsIHRvIHByb3Blcmx5IHJlc29sdmUgaW50ZXJuYWwgZG90cwoqIE1pbmltdW0gUEhQIHZlcnNpb24gaXMgbm93IHByb3Blcmx5IHNwZWNpZmllZCBhcyA1LjMuMyAodXAgZnJvbSA1LjMuMikgKCM0MjApCiogVXBkYXRlZCB0aGUgYnVuZGxlZCBjYWNlcnQucGVtICgjNDE5KQoqIE9hdXRoUGx1Z2luIG5vdyBzdXBwb3J0cyBhZGRpbmcgYXV0aGVudGljYXRpb24gdG8gaGVhZGVycyBvciBxdWVyeSBzdHJpbmcgKCM0MjUpCgojIyAzLjcuMyAtIDIwMTMtMDktMDgKCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gZ2V0IHRoZSBleGNlcHRpb24gYXNzb2NpYXRlZCB3aXRoIGEgcmVxdWVzdC9jb21tYW5kIHdoZW4gdXNpbmcgYE11bHRpVHJhbnNmZXJFeGNlcHRpb25gIGFuZAogIGBDb21tYW5kVHJhbnNmZXJFeGNlcHRpb25gLgoqIFNldHRpbmcgYGFkZGl0aW9uYWxQYXJhbWV0ZXJzYCBvZiBhIHJlc3BvbnNlIHRvIGZhbHNlIGlzIG5vdyBob25vcmVkIHdoZW4gcGFyc2luZyByZXNwb25zZXMgd2l0aCBhIHNlcnZpY2UgZGVzY3JpcHRpb24KKiBTY2hlbWFzIGFyZSBvbmx5IGluamVjdGVkIGludG8gcmVzcG9uc2UgbW9kZWxzIHdoZW4gZXhwbGljaXRseSBjb25maWd1cmVkLgoqIE5vIGxvbmdlciBndWVzc2luZyBDb250ZW50LVR5cGUgYmFzZWQgb24gdGhlIHBhdGggb2YgYSByZXF1ZXN0LiBDb250ZW50LVR5cGUgaXMgbm93IG9ubHkgZ3Vlc3NlZCBiYXNlZCBvbiB0aGUgcGF0aCBvZgogIGFuIEVudGl0eUJvZHkuCiogQnVnIGZpeDogQ2h1bmtlZEl0ZXJhdG9yIGNhbiBub3cgcHJvcGVybHkgY2h1bmsgYSBcVHJhdmVyc2FibGUgYXMgd2VsbCBhcyBhbiBcSXRlcmF0b3IuCiogQnVnIGZpeDogRmlsdGVySXRlcmF0b3Igbm93IHJlbGllcyBvbiBgXEl0ZXJhdG9yYCBpbnN0ZWFkIG9mIGBcVHJhdmVyc2FibGVgLgoqIEJ1ZyBmaXg6IEdyYWNlZnVsbHkgaGFuZGxpbmcgbWFsZm9ybWVkIHJlc3BvbnNlcyBpbiBSZXF1ZXN0TWVkaWF0b3I6OndyaXRlUmVzcG9uc2VCb2R5KCkKKiBCdWcgZml4OiBSZXBsYWNlZCBjYWxsIHRvIGNhbkNhY2hlIHdpdGggY2FuQ2FjaGVSZXF1ZXN0IGluIHRoZSBDYWxsYmFja0NhbkNhY2hlU3RyYXRlZ3kgb2YgdGhlIENhY2hlUGx1Z2luCiogQnVnIGZpeDogVmlzaXRpbmcgWE1MIGF0dHJpYnV0ZXMgZmlyc3QgYmVmb3JlIHZpc2l0aW5nIFhNTCBjaGlsZHJlbiB3aGVuIHNlcmlhbGl6aW5nIHJlcXVlc3RzCiogQnVnIGZpeDogUHJvcGVybHkgcGFyc2luZyBoZWFkZXJzIHRoYXQgY29udGFpbiBjb21tYXMgY29udGFpbmVkIGluIHF1b3RlcwoqIEJ1ZyBmaXg6IG1pbWV0eXBlIGd1ZXNzaW5nIGJhc2VkIG9uIGEgZmlsZW5hbWUgaXMgbm93IGNhc2UtaW5zZW5zaXRpdmUKCiMjIDMuNy4yIC0gMjAxMy0wOC0wMgoKKiBCdWcgZml4OiBQcm9wZXJseSBVUkwgZW5jb2RpbmcgcGF0aHMgd2hlbiB1c2luZyB0aGUgUEhQLW9ubHkgdmVyc2lvbiBvZiB0aGUgVXJpVGVtcGxhdGUgZXhwYW5kZXIKICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzM3MQoqIEJ1ZyBmaXg6IENvb2tpZSBkb21haW5zIGFyZSBub3cgbWF0Y2hlZCBjb3JyZWN0bHkgYWNjb3JkaW5nIHRvIFJGQyA2MjY1CiAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy8zNzcKKiBCdWcgZml4OiBHRVQgcGFyYW1ldGVycyBhcmUgbm93IHVzZWQgd2hlbiBjYWxjdWxhdGluZyBhbiBPQXV0aCBzaWduYXR1cmUKKiBCdWcgZml4OiBGaXhlZCBhbiBpc3N1ZSB3aXRoIGNhY2hlIHJldmFsaWRhdGlvbiB3aGVyZSB0aGUgSWYtTm9uZS1NYXRjaCBoZWFkZXIgd2FzIGJlaW5nIGRvdWJsZSBxdW90ZWQKKiBgR3V6emxlXENvbW1vblxBYnN0cmFjdEhhc0Rpc3BhdGNoZXI6OmRpc3BhdGNoKClgIG5vdyByZXR1cm5zIHRoZSBldmVudCB0aGF0IHdhcyBkaXNwYXRjaGVkCiogYEd1enpsZVxIdHRwXFF1ZXJ5U3RyaW5nOjpmYWN0b3J5KClgIG5vdyBndWVzc2VzIHRoZSBtb3N0IGFwcHJvcHJpYXRlIHF1ZXJ5IGFnZ3JlZ2F0b3IgdG8gdXNlZCBiYXNlZCBvbiB0aGUgaW5wdXQuCiAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy8zNzkKKiBBZGRlZCBhIHdheSB0byBhZGQgY3VzdG9tIGRvbWFpbiBvYmplY3RzIHRvIHNlcnZpY2UgZGVzY3JpcHRpb24gcGFyc2luZyB1c2luZyB0aGUgYG9wZXJhdGlvbi5wYXJzZV9jbGFzc2AgZXZlbnQuIFNlZQogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMzgwCiogY1VSTCBtdWx0aSBjbGVhbnVwIGFuZCBvcHRpbWl6YXRpb25zCgojIyAzLjcuMSAtIDIwMTMtMDctMDUKCiogQnVnIGZpeDogU2V0dGluZyBkZWZhdWx0IG9wdGlvbnMgb24gYSBjbGllbnQgbm93IHdvcmtzCiogQnVnIGZpeDogU2V0dGluZyBvcHRpb25zIG9uIEhFQUQgcmVxdWVzdHMgbm93IHdvcmtzLiBTZWUgIzM1MgoqIEJ1ZyBmaXg6IE1vdmluZyBzdHJlYW0gZmFjdG9yeSBiZWZvcmUgc2VuZCBldmVudCB0byBiZWZvcmUgYnVpbGRpbmcgdGhlIHN0cmVhbS4gU2VlICMzNTMKKiBCdWcgZml4OiBDb29raWVzIG5vIGxvbmdlciBtYXRjaCBvbiBJUCBhZGRyZXNzZXMgcGVyIFJGQyA2MjY1CiogQnVnIGZpeDogQ29ycmVjdGx5IHBhcnNpbmcgaGVhZGVyIHBhcmFtZXRlcnMgdGhhdCBhcmUgaW4gYDw+YCBhbmQgcXVvdGVzCiogQWRkZWQgYGNlcnRgIGFuZCBgc3NsX2tleWAgYXMgcmVxdWVzdCBvcHRpb25zCiogYEhvc3RgIGhlYWRlciBjYW4gbm93IGRpdmVyZ2UgZnJvbSB0aGUgaG9zdCBwYXJ0IG9mIGEgVVJMIGlmIHRoZSBoZWFkZXIgaXMgc2V0IG1hbnVhbGx5CiogYEd1enpsZVxTZXJ2aWNlXENvbW1hbmRcTG9jYXRpb25WaXNpdG9yXFJlcXVlc3RcWG1sVmlzaXRvcmAgd2FzIHJld3JpdHRlbiB0byBjaGFuZ2UgZnJvbSB1c2luZyBTaW1wbGVYTUwgdG8gWE1MV3JpdGVyCiogT0F1dGggcGFyYW1ldGVycyBhcmUgb25seSBhZGRlZCB2aWEgdGhlIHBsdWdpbiBpZiB0aGV5IGFyZW4ndCBhbHJlYWR5IHNldAoqIEV4Y2VwdGlvbnMgYXJlIG5vdyB0aHJvd24gd2hlbiBhIFVSTCBjYW5ub3QgYmUgcGFyc2VkCiogUmV0dXJuaW5nIGBmYWxzZWAgaWYgYEd1enpsZVxIdHRwXEVudGl0eUJvZHk6OmdldENvbnRlbnRNZDUoKWAgZmFpbHMKKiBOb3Qgc2V0dGluZyBhIGBDb250ZW50LU1ENWAgb24gYSBjb21tYW5kIGlmIGNhbGN1bGF0aW5nIHRoZSBDb250ZW50LU1ENSBmYWlscyB2aWEgdGhlIENvbW1hbmRDb250ZW50TWQ1UGx1Z2luCgojIyAzLjcuMCAtIDIwMTMtMDYtMTAKCiogU2VlIFVQR1JBRElORy5tZCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXBncmFkZS4KKiBSZXF1ZXN0cyBub3cgc3VwcG9ydCB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IGFuIGFycmF5IG9mICRvcHRpb25zIHdoZW4gY3JlYXRpbmcgYSByZXF1ZXN0IHRvIG1vcmUgZWFzaWx5IG1vZGlmeSBhCiAgcmVxdWVzdC4gWW91IGNhbiBwYXNzIGEgJ3JlcXVlc3Qub3B0aW9ucycgY29uZmlndXJhdGlvbiBzZXR0aW5nIHRvIGEgY2xpZW50IHRvIGFwcGx5IGRlZmF1bHQgcmVxdWVzdCBvcHRpb25zIHRvCiAgZXZlcnkgcmVxdWVzdCBjcmVhdGVkIGJ5IGEgY2xpZW50IChlLmcuIGRlZmF1bHQgcXVlcnkgc3RyaW5nIHZhcmlhYmxlcywgaGVhZGVycywgY3VybCBvcHRpb25zLCBldGMuKS4KKiBBZGRlZCBhIHN0YXRpYyBmYWNhZGUgY2xhc3MgdGhhdCBhbGxvd3MgeW91IHRvIHVzZSBHdXp6bGUgd2l0aCBzdGF0aWMgbWV0aG9kcyBhbmQgbW91bnQgdGhlIGNsYXNzIHRvIGBcR3V6emxlYC4KICBTZWUgYEd1enpsZVxIdHRwXFN0YXRpY0NsaWVudDo6bW91bnRgLgoqIEFkZGVkIGBjb21tYW5kLnJlcXVlc3Rfb3B0aW9uc2AgdG8gYEd1enpsZVxTZXJ2aWNlXENvbW1hbmRcQWJzdHJhY3RDb21tYW5kYCB0byBwYXNzIHJlcXVlc3Qgb3B0aW9ucyB0byByZXF1ZXN0cwogICAgICBjcmVhdGVkIGJ5IGEgY29tbWFuZCAoZS5nLiBjdXN0b20gaGVhZGVycywgcXVlcnkgc3RyaW5nIHZhcmlhYmxlcywgdGltZW91dCBzZXR0aW5ncywgZXRjLikuCiogU3RyZWFtIHNpemUgaW4gYEd1enpsZVxTdHJlYW1cUGhwU3RyZWFtUmVxdWVzdEZhY3RvcnlgIHdpbGwgbm93IGJlIHNldCBpZiBDb250ZW50LUxlbmd0aCBpcyByZXR1cm5lZCBpbiB0aGUKICBoZWFkZXJzIG9mIGEgcmVzcG9uc2UKKiBBZGRlZCBgR3V6emxlXENvbW1vblxDb2xsZWN0aW9uOjpzZXRQYXRoKCRwYXRoLCAkdmFsdWUpYCB0byBzZXQgYSB2YWx1ZSBpbnRvIGFuIGFycmF5IHVzaW5nIGEgbmVzdGVkIGtleQogIChlLmcuIGAkY29sbGVjdGlvbi0+c2V0UGF0aCgnZm9vL2Jhei9iYXInLCAndGVzdCcpOyBlY2hvICRjb2xsZWN0aW9uWydmb28nXVsnYmFyJ11bJ2JhciddO2ApCiogU2VydmljZUJ1aWxkZXJzIG5vdyBzdXBwb3J0IHN0b3JpbmcgYW5kIHJldHJpZXZpbmcgYXJiaXRyYXJ5IGRhdGEKKiBDYWNoZVBsdWdpbiBjYW4gbm93IHB1cmdlIGFsbCByZXNvdXJjZXMgZm9yIGEgZ2l2ZW4gVVJJCiogQ2FjaGVQbHVnaW4gY2FuIGF1dG9tYXRpY2FsbHkgcHVyZ2UgbWF0Y2hpbmcgY2FjaGVkIGl0ZW1zIHdoZW4gYSBub24taWRlbXBvdGVudCByZXF1ZXN0IGlzIHNlbnQgdG8gYSByZXNvdXJjZQoqIENhY2hlUGx1Z2luIG5vdyB1c2VzIHRoZSBWYXJ5IGhlYWRlciB0byBkZXRlcm1pbmUgaWYgYSByZXNvdXJjZSBpcyBhIGNhY2hlIGhpdAoqIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlc3BvbnNlYCBub3cgaW1wbGVtZW50cyBgXFNlcmlhbGl6YWJsZWAKKiBBZGRlZCBgR3V6emxlXENhY2hlXENhY2hlQWRhcHRlckZhY3Rvcnk6OmZyb21DYWNoZSgpYCB0byBtb3JlIGVhc2lseSBjcmVhdGUgY2FjaGUgYWRhcHRlcnMKKiBgR3V6emxlXFNlcnZpY2VcQ2xpZW50SW50ZXJmYWNlOjpleGVjdXRlKClgIG5vdyBhY2NlcHRzIGFuIGFycmF5LCBzaW5nbGUgY29tbWFuZCwgb3IgVHJhdmVyc2FibGUKKiBGaXhlZCBhIGJ1ZyBpbiBgR3V6emxlXEh0dHBcTWVzc2FnZVxIZWFkZXJcTGluazo6YWRkTGluaygpYAoqIEJldHRlciBoYW5kbGluZyBvZiBjYWxjdWxhdGluZyB0aGUgc2l6ZSBvZiBhIHN0cmVhbSBpbiBgR3V6emxlXFN0cmVhbVxTdHJlYW1gIHVzaW5nIGZzdGF0KCkgYW5kIGNhY2hpbmcgdGhlIHNpemUKKiBgR3V6emxlXENvbW1vblxFeGNlcHRpb25cRXhjZXB0aW9uQ29sbGVjdGlvbmAgbm93IGNyZWF0ZXMgYSBtb3JlIHJlYWRhYmxlIGV4Y2VwdGlvbiBtZXNzYWdlCiogRml4aW5nIEJDIGJyZWFrOiBBZGRlZCBiYWNrIHRoZSBNb25vbG9nTG9nQWRhcHRlciBpbXBsZW1lbnRhdGlvbiByYXRoZXIgdGhhbiBleHRlbmRpbmcgZnJvbSBQc3JMb2cgc28gdGhhdCBvbGRlcgogIFN5bWZvbnkgdXNlcnMgY2FuIHN0aWxsIHVzZSB0aGUgb2xkIHZlcnNpb24gb2YgTW9ub2xvZy4KKiBGaXhpbmcgQkMgYnJlYWs6IEFkZGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBiYWNrIGluIGZvciBgR3V6emxlXEh0dHBcTWVzc2FnZVxBYnN0cmFjdE1lc3NhZ2U6OmdldFRva2VuaXplZEhlYWRlcigpYC4KICBOb3cgdHJpZ2dlcmluZyBhbiBFX1VTRVJfREVQUkVDQVRFRCB3YXJuaW5nIHdoZW4gdXNlZC4gVXNlIGAkbWVzc2FnZS0+Z2V0SGVhZGVyKCktPnBhcnNlUGFyYW1zKClgLgoqIFNldmVyYWwgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzIHRvIGBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb25gCiogQWRkZWQgYW4gYCRvcHRpb25zYCBhcmd1bWVudCB0byB0aGUgZW5kIG9mIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvZiBgR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlYDoKICBjcmVhdGVSZXF1ZXN0LCBoZWFkLCBkZWxldGUsIHB1dCwgcGF0Y2gsIHBvc3QsIG9wdGlvbnMsIHByZXBhcmVSZXF1ZXN0CiogQWRkZWQgYW4gYCRvcHRpb25zYCBhcmd1bWVudCB0byB0aGUgZW5kIG9mIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3RcUmVxdWVzdEZhY3RvcnlJbnRlcmZhY2U6OmNyZWF0ZVJlcXVlc3QoKWAKKiBBZGRlZCBhbiBgYXBwbHlPcHRpb25zKClgIG1ldGhvZCB0byBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0XFJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlYAoqIENoYW5nZWQgYEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6Z2V0KCR1cmkgPSBudWxsLCAkaGVhZGVycyA9IG51bGwsICRib2R5ID0gbnVsbClgIHRvCiAgYEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6Z2V0KCR1cmkgPSBudWxsLCAkaGVhZGVycyA9IG51bGwsICRvcHRpb25zID0gYXJyYXkoKSlgLiBZb3UgY2FuIHN0aWxsIHBhc3MgaW4gYQogIHJlc291cmNlLCBzdHJpbmcsIG9yIEVudGl0eUJvZHkgaW50byB0aGUgJG9wdGlvbnMgcGFyYW1ldGVyIHRvIHNwZWNpZnkgdGhlIGRvd25sb2FkIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZS4KKiBDaGFuZ2VkIGBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb246Ol9fY29uc3RydWN0KCRkYXRhKWAgdG8gbm8gbG9uZ2VyIGFjY2VwdHMgYSBudWxsIHZhbHVlIGZvciBgJGRhdGFgIGJ1dCBhCiAgZGVmYXVsdCBgYXJyYXkoKWAKKiBBZGRlZCBgR3V6emxlXFN0cmVhbVxTdHJlYW1JbnRlcmZhY2U6OmlzUmVwZWF0YWJsZWAKKiBSZW1vdmVkIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OnNldERlZmF1bHRIZWFkZXJzKCkuIFVzZQogICRjbGllbnQtPmdldENvbmZpZygpLT5zZXRQYXRoKCdyZXF1ZXN0Lm9wdGlvbnMvaGVhZGVycy97aGVhZGVyX25hbWV9JywgJ3ZhbHVlJylgLiBvcgogICRjbGllbnQtPmdldENvbmZpZygpLT5zZXRQYXRoKCdyZXF1ZXN0Lm9wdGlvbnMvaGVhZGVycycsIGFycmF5KCdoZWFkZXJfbmFtZScgPT4gJ3ZhbHVlJykpYC4KKiBSZW1vdmVkIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OmdldERlZmF1bHRIZWFkZXJzKCkuIFVzZSAkY2xpZW50LT5nZXRDb25maWcoKS0+Z2V0UGF0aCgncmVxdWVzdC5vcHRpb25zL2hlYWRlcnMnKWAuCiogUmVtb3ZlZCBgR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlOjpleHBhbmRUZW1wbGF0ZSgpYAoqIFJlbW92ZWQgYEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6c2V0UmVxdWVzdEZhY3RvcnkoKWAKKiBSZW1vdmVkIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OmdldEN1cmxNdWx0aSgpYAoqIFJlbW92ZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTo6Y2FuQ2FjaGVgCiogUmVtb3ZlZCBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOjpzZXRJc1JlZGlyZWN0YAoqIFJlbW92ZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTo6aXNSZWRpcmVjdGAKKiBNYWRlIGBHdXp6bGVcSHR0cFxDbGllbnQ6OmV4cGFuZFRlbXBsYXRlYCBhbmQgYGdldFVyaVRlbXBsYXRlYCBwcm90ZWN0ZWQgbWV0aG9kcy4KKiBZb3UgY2FuIG5vdyBlbmFibGUgRV9VU0VSX0RFUFJFQ0FURUQgd2FybmluZ3MgdG8gc2VlIGlmIHlvdSBhcmUgdXNpbmcgYSBkZXByZWNhdGVkIG1ldGhvZCBieSBzZXR0aW5nCiAgYEd1enpsZVxDb21tb25cVmVyc2lvbjo6JGVtaXRXYXJuaW5nc2AgdG8gdHJ1ZS4KKiBNYXJrZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdDo6aXNSZXNwb25zZUJvZHlSZXBlYXRhYmxlKClgIGFzIGRlcHJlY2F0ZWQuIFVzZQogICAgICBgJHJlcXVlc3QtPmdldFJlc3BvbnNlQm9keSgpLT5pc1JlcGVhdGFibGUoKWAgaW5zdGVhZC4KKiBNYXJrZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdDo6Y2FuQ2FjaGUoKWAgYXMgZGVwcmVjYXRlZC4gVXNlCiAgYEd1enpsZVxQbHVnaW5cQ2FjaGVcRGVmYXVsdENhbkNhY2hlU3RyYXRlZ3ktPmNhbkNhY2hlUmVxdWVzdCgpYCBpbnN0ZWFkLgoqIE1hcmtlZCBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0OjpjYW5DYWNoZSgpYCBhcyBkZXByZWNhdGVkLiBVc2UKICBgR3V6emxlXFBsdWdpblxDYWNoZVxEZWZhdWx0Q2FuQ2FjaGVTdHJhdGVneS0+Y2FuQ2FjaGVSZXF1ZXN0KClgIGluc3RlYWQuCiogTWFya2VkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3Q6OnNldElzUmVkaXJlY3QoKWAgYXMgZGVwcmVjYXRlZC4gVXNlIHRoZSBIaXN0b3J5UGx1Z2luIGluc3RlYWQuCiogTWFya2VkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3Q6OmlzUmVkaXJlY3QoKWAgYXMgZGVwcmVjYXRlZC4gVXNlIHRoZSBIaXN0b3J5UGx1Z2luIGluc3RlYWQuCiogTWFya2VkIGBHdXp6bGVcQ2FjaGVcQ2FjaGVBZGFwdGVyRmFjdG9yeTo6ZmFjdG9yeSgpYCBhcyBkZXByZWNhdGVkCiogTWFya2VkICdjb21tYW5kLmhlYWRlcnMnLCAnY29tbWFuZC5yZXNwb25zZV9ib2R5JyBhbmQgJ2NvbW1hbmQub25fY29tcGxldGUnIGFzIGRlcHJlY2F0ZWQgZm9yIEFic3RyYWN0Q29tbWFuZC4KICBUaGVzZSB3aWxsIHdvcmsgdGhyb3VnaCBHdXp6bGUgNC4wCiogTWFya2VkICdyZXF1ZXN0LnBhcmFtcycgZm9yIGBHdXp6bGVcSHR0cFxDbGllbnRgIGFzIGRlcHJlY2F0ZWQuIFVzZSBbcmVxdWVzdC5vcHRpb25zXVtwYXJhbXNdLgoqIE1hcmtlZCBgR3V6emxlXFNlcnZpY2VcQ2xpZW50OjplbmFibGVNYWdpY01ldGhvZHMoKWAgYXMgZGVwcmVjYXRlZC4gTWFnaWMgbWV0aG9kcyBjYW4gbm8gbG9uZ2VyIGJlIGRpc2FibGVkIG9uIGEgR3V6emxlXFNlcnZpY2VcQ2xpZW50LgoqIE1hcmtlZCBgR3V6emxlXFNlcnZpY2VcQ2xpZW50OjpnZXREZWZhdWx0SGVhZGVycygpYCBhcyBkZXByZWNhdGVkLiBVc2UgJGNsaWVudC0+Z2V0Q29uZmlnKCktPmdldFBhdGgoJ3JlcXVlc3Qub3B0aW9ucy9oZWFkZXJzJylgLgoqIE1hcmtlZCBgR3V6emxlXFNlcnZpY2VcQ2xpZW50OjpzZXREZWZhdWx0SGVhZGVycygpYCBhcyBkZXByZWNhdGVkLiBVc2UgJGNsaWVudC0+Z2V0Q29uZmlnKCktPnNldFBhdGgoJ3JlcXVlc3Qub3B0aW9ucy9oZWFkZXJzL3toZWFkZXJfbmFtZX0nLCAndmFsdWUnKWAuCiogTWFya2VkIGBHdXp6bGVcUGFyc2VyXFVybFxVcmxQYXJzZXJgIGFzIGRlcHJlY2F0ZWQuIEp1c3QgdXNlIFBIUCdzIGBwYXJzZV91cmwoKWAgYW5kIHBlcmNlbnQgZW5jb2RlIHlvdXIgVVRGLTguCiogTWFya2VkIGBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb246OmluamVjdCgpYCBhcyBkZXByZWNhdGVkLgoqIE1hcmtlZCBgR3V6emxlXFBsdWdpblxDdXJsQXV0aFxDdXJsQXV0aFBsdWdpbmAgYXMgZGVwcmVjYXRlZC4gVXNlIGAkY2xpZW50LT5nZXRDb25maWcoKS0+c2V0UGF0aCgncmVxdWVzdC5vcHRpb25zL2F1dGgnLCBhcnJheSgndXNlcicsICdwYXNzJywgJ0Jhc2ljfERpZ2VzdCcpO2AKKiBDYWNoZUtleVByb3ZpZGVySW50ZXJmYWNlIGFuZCBEZWZhdWx0Q2FjaGVLZXlQcm92aWRlciBhcmUgbm8gbG9uZ2VyIHVzZWQuIEFsbCBvZiB0aGlzIGxvZ2ljIGlzIGhhbmRsZWQgaW4gYQogIENhY2hlU3RvcmFnZUludGVyZmFjZS4gVGhlc2UgdHdvIG9iamVjdHMgYW5kIGludGVyZmFjZSB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4KKiBBbHdheXMgc2V0dGluZyBYLWNhY2hlIGhlYWRlcnMgb24gY2FjaGVkIHJlc3BvbnNlcwoqIERlZmF1bHQgY2FjaGUgVFRMcyBhcmUgbm93IGhhbmRsZWQgYnkgdGhlIENhY2hlU3RvcmFnZUludGVyZmFjZSBvZiBhIENhY2hlUGx1Z2luCiogYENhY2hlU3RvcmFnZUludGVyZmFjZTo6Y2FjaGUoJGtleSwgUmVzcG9uc2UgJHJlc3BvbnNlLCAkdHRsID0gbnVsbClgIGhhcyBjaGFuZ2VkIHRvIGBjYWNoZShSZXF1ZXN0SW50ZXJmYWNlCiAgJHJlcXVlc3QsIFJlc3BvbnNlICRyZXNwb25zZSk7YAoqIGBDYWNoZVN0b3JhZ2VJbnRlcmZhY2U6OmZldGNoKCRrZXkpYCBoYXMgY2hhbmdlZCB0byBgZmV0Y2goUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCk7YAoqIGBDYWNoZVN0b3JhZ2VJbnRlcmZhY2U6OmRlbGV0ZSgka2V5KWAgaGFzIGNoYW5nZWQgdG8gYGRlbGV0ZShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0KTtgCiogQWRkZWQgYENhY2hlU3RvcmFnZUludGVyZmFjZTo6cHVyZ2UoJHVybClgCiogYERlZmF1bHRSZXZhbGlkYXRpb246Ol9fY29uc3RydWN0KENhY2hlS2V5UHJvdmlkZXJJbnRlcmZhY2UgJGNhY2hlS2V5LCBDYWNoZVN0b3JhZ2VJbnRlcmZhY2UgJGNhY2hlLCBDYWNoZVBsdWdpbgogICRwbHVnaW4pYCBoYXMgY2hhbmdlZCB0byBgRGVmYXVsdFJldmFsaWRhdGlvbjo6X19jb25zdHJ1Y3QoQ2FjaGVTdG9yYWdlSW50ZXJmYWNlICRjYWNoZSwKICBDYW5DYWNoZVN0cmF0ZWd5SW50ZXJmYWNlICRjYW5DYWNoZSA9IG51bGwpYAoqIEFkZGVkIGBSZXZhbGlkYXRpb25JbnRlcmZhY2U6OnNob3VsZFJldmFsaWRhdGUoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgUmVzcG9uc2UgJHJlc3BvbnNlKWAKCiMjIDMuNi4wIC0gMjAxMy0wNS0yOQoKKiBTZXJ2aWNlRGVzY3JpcHRpb24gbm93IGltcGxlbWVudHMgVG9BcnJheUludGVyZmFjZQoqIEFkZGVkIGNvbW1hbmQuaGlkZGVuX3BhcmFtcyB0byBibGFja2xpc3QgY2VydGFpbiBoZWFkZXJzIGZyb20gYmVpbmcgdHJlYXRlZCBhcyBhZGRpdGlvbmFsUGFyYW1ldGVycwoqIEd1enpsZSBjYW4gbm93IGNvcnJlY3RseSBwYXJzZSBpbmNvbXBsZXRlIFVSTHMKKiBNaXhlZCBjYXNpbmcgb2YgaGVhZGVycyBhcmUgbm93IGZvcmNlZCB0byBiZSBhIHNpbmdsZSBjb25zaXN0ZW50IGNhc2luZyBhY3Jvc3MgYWxsIHZhbHVlcyBmb3IgdGhhdCBoZWFkZXIuCiogTWVzc2FnZXMgaW50ZXJuYWxseSB1c2UgYSBIZWFkZXJDb2xsZWN0aW9uIG9iamVjdCB0byBkZWxlZ2F0ZSBoYW5kbGluZyBjYXNlLWluc2Vuc2l0aXZlIGhlYWRlciByZXNvbHV0aW9uCiogUmVtb3ZlZCB0aGUgd2hvbGUgY2hhbmdlZEhlYWRlcigpIGZ1bmN0aW9uIHN5c3RlbSBvZiBtZXNzYWdlcyBiZWNhdXNlIGFsbCBoZWFkZXIgY2hhbmdlcyBub3cgZ28gdGhyb3VnaCBhZGRIZWFkZXIoKS4KKiBTcGVjaWZpYyBoZWFkZXIgaW1wbGVtZW50YXRpb25zIGNhbiBiZSBjcmVhdGVkIGZvciBjb21wbGV4IGhlYWRlcnMuIFdoZW4gYSBtZXNzYWdlIGNyZWF0ZXMgYSBoZWFkZXIsIGl0IHVzZXMgYQogIEhlYWRlckZhY3Rvcnkgd2hpY2ggY2FuIG1hcCBzcGVjaWZpYyBoZWFkZXJzIHRvIHNwZWNpZmljIGhlYWRlciBjbGFzc2VzLiBUaGVyZSBpcyBub3cgYSBMaW5rIGhlYWRlciBhbmQKICBDYWNoZUNvbnRyb2wgaGVhZGVyIGltcGxlbWVudGF0aW9uLgoqIFJlbW92ZWQgZnJvbSBpbnRlcmZhY2U6IEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6c2V0VXJpVGVtcGxhdGUKKiBSZW1vdmVkIGZyb20gaW50ZXJmYWNlOiBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OnNldEN1cmxNdWx0aSgpCiogUmVtb3ZlZCBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3Q6OnJlY2VpdmVkUmVxdWVzdEhlYWRlcigpIGFuZCBpbXBsZW1lbnRlZCB0aGlzIGZ1bmN0aW9uYWxpdHkgaW4KICBHdXp6bGVcSHR0cFxDdXJsXFJlcXVlc3RNZWRpYXRvcgoqIFJlbW92ZWQgdGhlIG9wdGlvbmFsICRhc1N0cmluZyBwYXJhbWV0ZXIgZnJvbSBNZXNzYWdlSW50ZXJmYWNlOjpnZXRIZWFkZXIoKS4gSnVzdCBjYXN0IHRoZSBoZWFkZXIgdG8gYSBzdHJpbmcuCiogUmVtb3ZlZCB0aGUgb3B0aW9uYWwgJHRyeUNodW5rZWRUcmFuc2ZlciBvcHRpb24gZnJvbSBHdXp6bGVcSHR0cFxNZXNzYWdlXEVudGl0eUVuY2xvc2luZ1JlcXVlc3RJbnRlcmZhY2UKKiBSZW1vdmVkIHRoZSAkYXNPYmplY3RzIGFyZ3VtZW50IGZyb20gR3V6emxlXEh0dHBcTWVzc2FnZVxNZXNzYWdlSW50ZXJmYWNlOjpnZXRIZWFkZXJzKCkKKiBSZW1vdmVkIEd1enpsZVxQYXJzZXJcUGFyc2VyUmVnaXN0ZXI6OmdldCgpLiBVc2UgZ2V0UGFyc2VyKCkKKiBSZW1vdmVkIEd1enpsZVxQYXJzZXJcUGFyc2VyUmVnaXN0ZXI6OnNldCgpLiBVc2UgcmVnaXN0ZXJQYXJzZXIoKS4KKiBBbGwgcmVzcG9uc2UgaGVhZGVyIGhlbHBlciBmdW5jdGlvbnMgcmV0dXJuIGEgc3RyaW5nIHJhdGhlciB0aGFuIG1peGluZyBIZWFkZXIgb2JqZWN0cyBhbmQgc3RyaW5ncyBpbmNvbnNpc3RlbnRseQoqIFJlbW92ZWQgY1VSTCBibGFja2xpc3Qgc3VwcG9ydC4gVGhpcyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IG5vdyB0aGF0IEV4cGVjdCwgQWNjZXB0LCBldGMuIGFyZSBtYW5hZ2VkIGJ5IEd1enpsZQogIGRpcmVjdGx5IHZpYSBpbnRlcmZhY2VzCiogUmVtb3ZlZCB0aGUgaW5qZWN0aW5nIG9mIGEgcmVxdWVzdCBvYmplY3Qgb250byBhIHJlc3BvbnNlIG9iamVjdC4gVGhlIG1ldGhvZHMgdG8gZ2V0IGFuZCBzZXQgYSByZXF1ZXN0IHN0aWxsIGV4aXN0CiAgYnV0IGFyZSBhIG5vLW9wIHVudGlsIHJlbW92ZWQuCiogTW9zdCBjbGFzc2VzIHRoYXQgdXNlZCB0byByZXF1aXJlIGEgYEd1enpsZVxTZXJ2aWNlXENvbW1hbmRcQ29tbWFuZEludGVyZmFjZWAgdHlwZWhpbnQgbm93IHJlcXVlc3QgYQogIGBHdXp6bGVcU2VydmljZVxDb21tYW5kXEFycmF5Q29tbWFuZEludGVyZmFjZWAuCiogQWRkZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTo6c3RhcnRSZXNwb25zZSgpYCB0byB0aGUgUmVxdWVzdEludGVyZmFjZSB0byBoYW5kbGUgaW5qZWN0aW5nIGEgcmVzcG9uc2UKICBvbiBhIHJlcXVlc3Qgd2hpbGUgdGhlIHJlcXVlc3QgaXMgc3RpbGwgYmVpbmcgdHJhbnNmZXJyZWQKKiBUaGUgYWJpbGl0eSB0byBjYXNlLWluc2Vuc2l0aXZlbHkgc2VhcmNoIGZvciBoZWFkZXIgdmFsdWVzCiogR3V6emxlXEh0dHBcTWVzc2FnZVxIZWFkZXI6Omhhc0V4YWN0SGVhZGVyCiogR3V6emxlXEh0dHBcTWVzc2FnZVxIZWFkZXI6OnJhdy4gVXNlIGdldEFsbCgpCiogRGVwcmVjYXRlZCBjYWNoZSBjb250cm9sIHNwZWNpZmljIG1ldGhvZHMgb24gR3V6emxlXEh0dHBcTWVzc2FnZVxBYnN0cmFjdE1lc3NhZ2UuIFVzZSB0aGUgQ2FjaGVDb250cm9sIGhlYWRlciBvYmplY3QKICBpbnN0ZWFkLgoqIGBHdXp6bGVcU2VydmljZVxDb21tYW5kXENvbW1hbmRJbnRlcmZhY2VgIG5vdyBleHRlbmRzIGZyb20gVG9BcnJheUludGVyZmFjZSBhbmQgQXJyYXlBY2Nlc3MKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBjYXN0IE1vZGVsIG9iamVjdHMgdG8gYSBzdHJpbmcgdG8gdmlldyBkZWJ1ZyBpbmZvcm1hdGlvbi4KCiMjIDMuNS4wIC0gMjAxMy0wNS0xMwoKKiBCdWc6IEZpeGVkIGEgcmVncmVzc2lvbiBzbyB0aGF0IHJlcXVlc3QgcmVzcG9uc2VzIGFyZSBwYXJzZWQgb25seSBvbmNlIHBlciBvbmNvbXBsZXRlIGV2ZW50IHJhdGhlciB0aGFuIG11bHRpcGxlIHRpbWVzCiogQnVnOiBCZXR0ZXIgY2xlYW51cCBvZiBvbmUtdGltZSBldmVudHMgYWNyb3NzIHRoZSBib2FyZCAod2hlbiBhbiBldmVudCBpcyBtZWFudCB0byBmaXJlIG9uY2UsIGl0IHdpbGwgbm93IHJlbW92ZQogIGl0c2VsZiBmcm9tIHRoZSBFdmVudERpc3BhdGNoZXIpCiogQnVnOiBgR3V6emxlXExvZ1xNZXNzYWdlRm9ybWF0dGVyYCBub3cgcHJvcGVybHkgd3JpdGVzICJ0b3RhbF90aW1lIiBhbmQgImNvbm5lY3RfdGltZSIgdmFsdWVzCiogQnVnOiBDbG9uaW5nIGFuIEVudGl0eUVuY2xvc2luZ1JlcXVlc3Qgbm93IGNsb25lcyB0aGUgRW50aXR5Qm9keSB0b28KKiBCdWc6IEZpeGVkIGFuIHVuZGVmaW5lZCBpbmRleCBlcnJvciB3aGVuIHBhcnNpbmcgbmVzdGVkIEpTT04gcmVzcG9uc2VzIHdpdGggYSBzZW50QXMgcGFyYW1ldGVyIHRoYXQgcmVmZXJlbmNlIGEKICBub24tZXhpc3RlbnQga2V5CiogQnVnOiBBbGwgX19jYWxsKCkgbWV0aG9kIGFyZ3VtZW50cyBhcmUgbm93IHJlcXVpcmVkIChoZWxwcyB3aXRoIG1vY2tpbmcgZnJhbWV3b3JrcykKKiBEZXByZWNhdGluZyBSZXNwb25zZTo6Z2V0UmVxdWVzdCgpIGFuZCBub3cgdXNpbmcgYSBzaGFsbG93IGNsb25lIG9mIGEgcmVxdWVzdCBvYmplY3QgdG8gcmVtb3ZlIGEgY2lyY3VsYXIgcmVmZXJlbmNlCiAgdG8gaGVscCB3aXRoIHJlZmNvdW50IGJhc2VkIGdhcmJhZ2UgY29sbGVjdGlvbiBvZiByZXNvdXJjZXMgY3JlYXRlZCBieSBzZW5kaW5nIGEgcmVxdWVzdAoqIERlcHJlY2F0aW5nIFpGMSBjYWNoZSBhbmQgbG9nIGFkYXB0ZXJzLiBUaGVzZSB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbi4KKiBEZXByZWNhdGluZyBgUmVzcG9uc2U6OmdldFByZXZpb3VzUmVzcG9uc2UoKWAgKG1ldGhvZCBzaWduYXR1cmUgc3RpbGwgZXhpc3RzLCBidXQgaXQncyBkZXByZWNhdGVkKS4gVXNlIHRoZQogIEhpc3RvcnlQbHVnaW4gZm9yIGEgaGlzdG9yeS4KKiBBZGRlZCBhIGByZXNwb25zZUJvZHlgIGFsaWFzIGZvciB0aGUgYHJlc3BvbnNlX2JvZHlgIGxvY2F0aW9uCiogUmVmYWN0b3JlZCBpbnRlcm5hbHMgdG8gbm8gbG9uZ2VyIHJlbHkgb24gUmVzcG9uc2U6OmdldFJlcXVlc3QoKQoqIEhpc3RvcnlQbHVnaW4gY2FuIG5vdyBiZSBjYXN0IHRvIGEgc3RyaW5nCiogSGlzdG9yeVBsdWdpbiBub3cgbG9ncyB0cmFuc2FjdGlvbnMgcmF0aGVyIHRoYW4gcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyB0byBtb3JlIGFjY3VyYXRlbHkga2VlcCB0cmFjayBvZiB0aGUgcmVxdWVzdHMKICBhbmQgcmVzcG9uc2VzIHRoYXQgYXJlIHNlbnQgb3ZlciB0aGUgd2lyZQoqIEFkZGVkIGBnZXRFZmZlY3RpdmVVcmwoKWAgYW5kIGBnZXRSZWRpcmVjdENvdW50KClgIHRvIFJlc3BvbnNlIG9iamVjdHMKCiMjIDMuNC4zIC0gMjAxMy0wNC0zMAoKKiBCdWcgZml4OiBGaXhpbmcgYnVnIGludHJvZHVjZWQgaW4gMy40LjIgd2hlcmUgcmVkaXJlY3QgcmVzcG9uc2VzIGFyZSBkdXBsaWNhdGVkIG9uIHRoZSBmaW5hbCByZWRpcmVjdGVkIHJlc3BvbnNlCiogQWRkZWQgYSBjaGVjayB0byByZS1leHRyYWN0IHRoZSB0ZW1wIGNhY2VydCBidW5kbGUgZnJvbSB0aGUgcGhhciBiZWZvcmUgc2VuZGluZyBlYWNoIHJlcXVlc3QKCiMjIDMuNC4yIC0gMjAxMy0wNC0yOQoKKiBCdWcgZml4OiBTdHJlYW0gb2JqZWN0cyBub3cgd29yayBjb3JyZWN0bHkgd2l0aCAiYSIgYW5kICJhKyIgbW9kZXMKKiBCdWcgZml4OiBSZW1vdmluZyBgVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRgIGhlYWRlciB3aGVuIGEgQ29udGVudC1MZW5ndGggaXMgcHJlc2VudAoqIEJ1ZyBmaXg6IEFzeW5jUGx1Z2luIG5vIGxvbmdlciBmb3JjZXMgSEVBRCByZXF1ZXN0cwoqIEJ1ZyBmaXg6IERhdGVUaW1lIHRpbWV6b25lcyBhcmUgbm93IHByb3Blcmx5IGhhbmRsZWQgd2hlbiB1c2luZyB0aGUgc2VydmljZSBkZXNjcmlwdGlvbiBzY2hlbWEgZm9ybWF0dGVyCiogQnVnIGZpeDogQ2FjaGVQbHVnaW4gbm93IHByb3Blcmx5IGhhbmRsZXMgc3RhbGUtaWYtZXJyb3IgZGlyZWN0aXZlcyB3aGVuIGEgcmVxdWVzdCB0byB0aGUgb3JpZ2luIHNlcnZlciBmYWlscwoqIFNldHRpbmcgYSByZXNwb25zZSBvbiBhIHJlcXVlc3Qgd2lsbCB3cml0ZSB0byB0aGUgY3VzdG9tIHJlcXVlc3QgYm9keSBmcm9tIHRoZSByZXNwb25zZSBib2R5IGlmIG9uZSBpcyBzcGVjaWZpZWQKKiBMb2dQbHVnaW4gbm93IHdyaXRlcyB0byBwaHA6Ly9vdXRwdXQgd2hlbiBTVERFUlIgaXMgdW5kZWZpbmVkCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gc2V0IG11bHRpcGxlIFBPU1QgZmlsZXMgZm9yIHRoZSBzYW1lIGtleSBpbiBhIHNpbmdsZSBjYWxsCiogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIFBPU1RzIG5vdyB1c2UgdGhlIHV0Zi04IGNoYXJzZXQgYnkgZGVmYXVsdAoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHF1ZXVlIEN1cmxFeGNlcHRpb25zIHRvIHRoZSBNb2NrUGx1Z2luCiogQ2xlYW5lZCB1cCBob3cgbWFudWFsIHJlc3BvbnNlcyBhcmUgcXVldWVkIG9uIHJlcXVlc3RzIChyZW1vdmVkICJxdWV1ZWRfcmVzcG9uc2UiIGFuZCBub3cgdXNpbmcgcmVxdWVzdC5iZWZvcmVfc2VuZCkKKiBDb25maWd1cmF0aW9uIGxvYWRpbmcgbm93IGFsbG93cyByZW1vdGUgZmlsZXMKCiMjIDMuNC4xIC0gMjAxMy0wNC0xNgoKKiBMYXJnZSByZWZhY3RvcmluZyB0byBob3cgQ3VybE11bHRpIGhhbmRsZXMgd29yay4gVGhlcmUgaXMgbm93IGEgcHJveHkgdGhhdCBzaXRzIGluIGZyb250IG9mIGEgcG9vbCBvZiBDdXJsTXVsdGkKICBoYW5kbGVzLiBUaGlzIGdyZWF0bHkgc2ltcGxpZmllcyB0aGUgaW1wbGVtZW50YXRpb24sIGZpeGVzIGEgY291cGxlIGJ1Z3MsIGFuZCBwcm92aWRlcyBhIHNtYWxsIHBlcmZvcm1hbmNlIGJvb3N0LgoqIEV4Y2VwdGlvbnMgYXJlIG5vdyBwcm9wZXJseSBncm91cGVkIHdoZW4gc2VuZGluZyByZXF1ZXN0cyBpbiBwYXJhbGxlbAoqIFJlZGlyZWN0cyBhcmUgbm93IHByb3Blcmx5IGFnZ3JlZ2F0ZWQgd2hlbiBhIG11bHRpIHRyYW5zYWN0aW9uIGZhaWxzCiogUmVkaXJlY3RzIG5vdyBzZXQgdGhlIHJlc3BvbnNlIG9uIHRoZSBvcmlnaW5hbCBvYmplY3QgZXZlbiBpbiB0aGUgZXZlbnQgb2YgYSBmYWlsdXJlCiogQnVnIGZpeDogTW9kZWwgbmFtZXMgYXJlIG5vdyBwcm9wZXJseSBzZXQgZXZlbiB3aGVuIHVzaW5nICRyZWZzCiogQWRkZWQgc3VwcG9ydCBmb3IgUEhQIDUuNSdzIEN1cmxGaWxlIHRvIHByZXZlbnQgd2FybmluZ3Mgd2l0aCB0aGUgZGVwcmVjYXRlZCBAIHN5bnRheAoqIEFkZGVkIHN1cHBvcnQgZm9yIG9hdXRoX2NhbGxiYWNrIGluIE9BdXRoIHNpZ25hdHVyZXMKKiBBZGRlZCBzdXBwb3J0IGZvciBvYXV0aF92ZXJpZmllciBpbiBPQXV0aCBzaWduYXR1cmVzCiogQWRkZWQgc3VwcG9ydCB0byBhdHRlbXB0IHRvIHJldHJpZXZlIGEgY29tbWFuZCBmaXJzdCBsaXRlcmFsbHksIHRoZW4gdWNmaXJzdCwgdGhlIHdpdGggaW5mbGVjdGlvbgoKIyMgMy40LjAgLSAyMDEzLTA0LTExCgoqIEJ1ZyBmaXg6IFVSTHMgYXJlIG5vdyByZXNvbHZlZCBjb3JyZWN0bHkgYmFzZWQgb24gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yLiAjMjg5CiogQnVnIGZpeDogQWJzb2x1dGUgVVJMcyB3aXRoIGEgcGF0aCBpbiBhIHNlcnZpY2UgZGVzY3JpcHRpb24gd2lsbCBub3cgcHJvcGVybHkgb3ZlcnJpZGUgdGhlIGJhc2UgVVJMLiAjMjg5CiogQnVnIGZpeDogUGFyc2luZyBhIHF1ZXJ5IHN0cmluZyB3aXRoIGEgc2luZ2xlIFBIUCBhcnJheSB2YWx1ZSB3aWxsIG5vdyByZXN1bHQgaW4gYW4gYXJyYXkuICMyNjMKKiBCdWcgZml4OiBCZXR0ZXIgbm9ybWFsaXphdGlvbiBvZiB0aGUgVXNlci1BZ2VudCBoZWFkZXIgdG8gcHJldmVudCBkdXBsaWNhdGUgaGVhZGVycy4gIzI2NC4KKiBCdWcgZml4OiBBZGRlZCBgbnVtYmVyYCB0eXBlIHRvIHNlcnZpY2UgZGVzY3JpcHRpb25zLgoqIEJ1ZyBmaXg6IGVtcHR5IHBhcmFtZXRlcnMgYXJlIHJlbW92ZWQgZnJvbSBhbiBPQXV0aCBzaWduYXR1cmUKKiBCdWcgZml4OiBSZXZhbGlkYXRpbmcgYSBjYWNoZSBlbnRyeSBwcmVmZXJzIHRoZSBMYXN0LU1vZGlmaWVkIG92ZXIgdGhlIERhdGUgaGVhZGVyCiogQnVnIGZpeDogRml4ZWQgImFycmF5IHRvIHN0cmluZyIgZXJyb3Igd2hlbiB2YWxpZGF0aW5nIGEgdW5pb24gb2YgdHlwZXMgaW4gYSBzZXJ2aWNlIGRlc2NyaXB0aW9uCiogQnVnIGZpeDogUmVtb3ZlZCBjb2RlIHRoYXQgYXR0ZW1wdGVkIHRvIGRldGVybWluZSB0aGUgc2l6ZSBvZiBhIHN0cmVhbSB3aGVuIGRhdGEgaXMgd3JpdHRlbiB0byB0aGUgc3RyZWFtCiogQnVnIGZpeDogTm90IGluY2x1ZGluZyBhbiBgb2F1dGhfdG9rZW5gIGlmIHRoZSB2YWx1ZSBpcyBudWxsIGluIHRoZSBPYXV0aFBsdWdpbi4KKiBCdWcgZml4OiBOb3cgY29ycmVjdGx5IGFnZ3JlZ2F0aW5nIHN1Y2Nlc3NmdWwgcmVxdWVzdHMgYW5kIGZhaWxlZCByZXF1ZXN0cyBpbiBDdXJsTXVsdGkgd2hlbiBhIHJlZGlyZWN0IG9jY3Vycy4KKiBUaGUgbmV3IGRlZmF1bHQgQ1VSTE9QVF9USU1FT1VUIHNldHRpbmcgaGFzIGJlZW4gaW5jcmVhc2VkIHRvIDE1MCBzZWNvbmRzIHNvIHRoYXQgR3V6emxlIHdvcmtzIG9uIHBvb3IgY29ubmVjdGlvbnMuCiogQWRkZWQgYSBmZWF0dXJlIHRvIEVudGl0eUVuY2xvc2luZ1JlcXVlc3Q6OnNldEJvZHkoKSB0aGF0IHdpbGwgYXV0b21hdGljYWxseSBzZXQgdGhlIENvbnRlbnQtVHlwZSBvZiB0aGUgcmVxdWVzdCBpZgogIHRoZSBDb250ZW50LVR5cGUgY2FuIGJlIGRldGVybWluZWQgYmFzZWQgb24gdGhlIGVudGl0eSBib2R5IG9yIHRoZSBwYXRoIG9mIHRoZSByZXF1ZXN0LgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIG92ZXJ3cml0ZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGluIGEgY2xpZW50IHdoZW4gZ3JhYmJpbmcgYSB0aHJvd2F3YXkgY2xpZW50IGZyb20gYSBidWlsZGVyLgoqIEFkZGVkIHN1cHBvcnQgZm9yIGEgUFNSLTMgTG9nQWRhcHRlci4KKiBBZGRlZCBhIGBjb21tYW5kLmFmdGVyX3ByZXBhcmVgIGV2ZW50CiogQWRkZWQgYG9hdXRoX2NhbGxiYWNrYCBwYXJhbWV0ZXIgdG8gdGhlIE9hdXRoUGx1Z2luCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIGEgY3VzdG9tIHN0cmVhbSBjbGFzcyB3aGVuIHVzaW5nIGEgc3RyZWFtIGZhY3RvcnkKKiBBZGRlZCBhIENhY2hpbmdFbnRpdHlCb2R5IGRlY29yYXRvcgoqIEFkZGVkIHN1cHBvcnQgZm9yIGBhZGRpdGlvbmFsUGFyYW1ldGVyc2AgaW4gc2VydmljZSBkZXNjcmlwdGlvbnMgdG8gZGVmaW5lIGhvdyBjdXN0b20gcGFyYW1ldGVycyBhcmUgc2VyaWFsaXplZC4KKiBUaGUgYnVuZGxlZCBTU0wgY2VydGlmaWNhdGUgaXMgbm93IHByb3ZpZGVkIGluIHRoZSBwaGFyIGZpbGUgYW5kIGV4dHJhY3RlZCB3aGVuIHJ1bm5pbmcgR3V6emxlIGZyb20gYSBwaGFyLgoqIFlvdSBjYW4gbm93IHNlbmQgYW55IEVudGl0eUVuY2xvc2luZ1JlcXVlc3Qgd2l0aCBQT1NUIGZpZWxkcyBvciBQT1NUIGZpbGVzIGFuZCBjVVJMIHdpbGwgaGFuZGxlIGNyZWF0aW5nIGJvZGllcwoqIFBPU1QgcmVxdWVzdHMgdXNpbmcgYSBjdXN0b20gZW50aXR5IGJvZHkgYXJlIG5vdyB0cmVhdGVkIGV4YWN0bHkgbGlrZSBQVVQgcmVxdWVzdHMgYnV0IHdpdGggYSBjdXN0b20gY1VSTCBtZXRob2QuIFRoaXMKICBtZWFucyB0aGF0IHRoZSByZWRpcmVjdCBiZWhhdmlvciBvZiBQT1NUIHJlcXVlc3RzIHdpdGggY3VzdG9tIGJvZGllcyB3aWxsIG5vdCBiZSB0aGUgc2FtZSBhcyBQT1NUIHJlcXVlc3RzIHRoYXQgdXNlCiAgUE9TVCBmaWVsZHMgb3IgZmlsZXMgKHRoZSBsYXR0ZXIgaXMgb25seSB1c2VkIHdoZW4gZW11bGF0aW5nIGEgZm9ybSBQT1NUIGluIHRoZSBicm93c2VyKS4KKiBMb3RzIG9mIGNsZWFudXAgdG8gQ3VybEhhbmRsZTo6ZmFjdG9yeSBhbmQgUmVxdWVzdEZhY3Rvcnk6OmNyZWF0ZVJlcXVlc3QKCiMjIDMuMy4xIC0gMjAxMy0wMy0xMAoKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBjcmVhdGUgUEhQIHN0cmVhbWluZyByZXNwb25zZXMgZnJvbSBIVFRQIHJlcXVlc3RzCiogQnVnIGZpeDogUnVubmluZyBhbnkgZmlsdGVycyB3aGVuIHBhcnNpbmcgcmVzcG9uc2UgaGVhZGVycyB3aXRoIHNlcnZpY2UgZGVzY3JpcHRpb25zCiogQnVnIGZpeDogT2F1dGhQbHVnaW4gZml4ZXMgdG8gYWxsb3cgZm9yIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5IHNpZ25pbmcsIGFuZCBzb3J0aW5nIHBhcmFtZXRlcnMgYmVmb3JlIHNpZ25pbmcKKiBCdWcgZml4OiBSZW1vdmVkIHRoZSBhZGRpbmcgb2YgZGVmYXVsdCBlbXB0eSBhcnJheXMgYW5kIGZhbHNlIEJvb2xlYW5zIHRvIHJlc3BvbnNlcyBpbiBvcmRlciB0byBiZSBjb25zaXN0ZW50IGFjcm9zcwogIHJlc3BvbnNlIGxvY2F0aW9uIHZpc2l0b3JzLgoqIEJ1ZyBmaXg6IFJlbW92ZWQgdGhlIHBvc3NpYmlsaXR5IG9mIGNyZWF0aW5nIGNvbmZpZ3VyYXRpb24gZmlsZXMgd2l0aCBjaXJjdWxhciBkZXBlbmRlbmNpZXMKKiBSZXF1ZXN0RmFjdG9yeTo6Y3JlYXRlKCkgbm93IHVzZXMgdGhlIGtleSBvZiBhIFBPU1QgZmlsZSB3aGVuIHNldHRpbmcgdGhlIFBPU1QgZmlsZSBuYW1lCiogQWRkZWQgeG1sQWxsb3dFbXB0eSB0byBzZXJpYWxpemUgYW4gWE1MIGJvZHkgZXZlbiBpZiBubyBYTUwgc3BlY2lmaWMgcGFyYW1ldGVycyBhcmUgc2V0CgojIyAzLjMuMCAtIDIwMTMtMDMtMDMKCiogQSBsYXJnZSBudW1iZXIgb2YgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucyBoYXZlIGJlZW4gbWFkZQoqIEJ1ZyBmaXg6IEFkZGVkICd3YicgYXMgYSB2YWxpZCB3cml0ZSBtb2RlIGZvciBzdHJlYW1zCiogQnVnIGZpeDogYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVzcG9uc2U6Ompzb24oKWAgbm93IGFsbG93cyBzY2FsYXIgdmFsdWVzIHRvIGJlIHJldHVybmVkCiogQnVnIGZpeDogRml4ZWQgYnVnIGluIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlc3BvbnNlYCB3aGVyZSB3cmFwcGluZyBxdW90ZXMgd2VyZSBzdHJpcHBlZCBmcm9tIGBnZXRFdGFnKClgCiogQkM6IFJlbW92ZWQgYEd1enpsZVxIdHRwXFV0aWxzYCBjbGFzcwoqIEJDOiBTZXR0aW5nIGEgc2VydmljZSBkZXNjcmlwdGlvbiBvbiBhIGNsaWVudCB3aWxsIG5vIGxvbmdlciBtb2RpZnkgdGhlIGNsaWVudCdzIGNvbW1hbmQgZmFjdG9yaWVzLgoqIEJDOiBFbWl0dGluZyBJTyBldmVudHMgZnJvbSBhIFJlcXVlc3RNZWRpYXRvciBpcyBub3cgYSBwYXJhbWV0ZXIgdGhhdCBtdXN0IGJlIHNldCBpbiBhIHJlcXVlc3QncyBjdXJsIG9wdGlvbnMgdXNpbmcKICB0aGUgJ2VtaXRfaW8nIGtleS4gVGhpcyB3YXMgcHJldmlvdXNseSBzZXQgdW5kZXIgYSByZXF1ZXN0J3MgcGFyYW1ldGVycyB1c2luZyAnY3VybC5lbWl0X2lvJwoqIEJDOiBgR3V6emxlXFN0cmVhbVxTdHJlYW06OmdldFdyYXBwZXIoKWAgYW5kIGBHdXp6bGVcU3RyZWFtXFN0cmVhbTo6Z2V0U3RlYW1UeXBlKClgIGFyZSBubyBsb25nZXIgY29udmVydGVkIHRvCiAgbG93ZXJjYXNlCiogT3BlcmF0aW9uIHBhcmFtZXRlciBvYmplY3RzIGFyZSBub3cgbGF6eSBsb2FkZWQgaW50ZXJuYWxseQoqIEFkZGVkIEVycm9yUmVzcG9uc2VQbHVnaW4gdGhhdCBjYW4gdGhyb3cgZXJyb3JzIGZvciByZXNwb25zZXMgZGVmaW5lZCBpbiBzZXJ2aWNlIGRlc2NyaXB0aW9uIG9wZXJhdGlvbnMnIGVycm9yUmVzcG9uc2VzCiogQWRkZWQgc3VwcG9ydCBmb3IgaW5zdGFudGlhdGluZyByZXNwb25zZVR5cGU9Y2xhc3MgcmVzcG9uc2VDbGFzcyBjbGFzc2VzLiBDbGFzc2VzIG11c3QgaW1wbGVtZW50CiAgYEd1enpsZVxTZXJ2aWNlXENvbW1hbmRcUmVzcG9uc2VDbGFzc0ludGVyZmFjZWAKKiBBZGRlZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsUHJvcGVydGllcyBmb3IgdG9wLWxldmVsIHBhcmFtZXRlcnMgaW4gcmVzcG9uc2VUeXBlPW1vZGVsIHJlc3BvbnNlQ2xhc3Nlcy4gVGhlc2UKICBhZGRpdGlvbmFsIHByb3BlcnRpZXMgYWxzbyBzdXBwb3J0IGxvY2F0aW9ucyBhbmQgY2FuIGJlIHVzZWQgdG8gcGFyc2UgSlNPTiByZXNwb25zZXMgd2hlcmUgdGhlIG91dGVybW9zdCBwYXJ0IG9mIHRoZQogIEpTT04gaXMgYW4gYXJyYXkKKiBBZGRlZCBzdXBwb3J0IGZvciBuZXN0ZWQgcmVuYW1pbmcgb2YgSlNPTiBtb2RlbHMgKHJlbmFtZSBzZW50QXMgdG8gbmFtZSkKKiBDYWNoZVBsdWdpbgogICAgKiBBZGRlZCBzdXBwb3J0IGZvciBzdGFsZS1pZi1lcnJvciBzbyB0aGF0IHRoZSBDYWNoZVBsdWdpbiBjYW4gbm93IHNlcnZlIHN0YWxlIGNvbnRlbnQgZnJvbSB0aGUgY2FjaGUgb24gZXJyb3IKICAgICogRGVidWcgaGVhZGVycyBjYW4gbm93IGFkZGVkIHRvIGNhY2hlZCByZXNwb25zZSBpbiB0aGUgQ2FjaGVQbHVnaW4KCiMjIDMuMi4wIC0gMjAxMy0wMi0xNAoKKiBDdXJsTXVsdGkgaXMgbm8gbG9uZ2VyIHJldXNlZCBnbG9iYWxseS4gQSBuZXcgbXVsdGkgb2JqZWN0IGlzIGNyZWF0ZWQgcGVyLWNsaWVudC4gVGhpcyBoZWxwcyB0byBpc29sYXRlIGNsaWVudHMuCiogVVJMcyB3aXRoIG5vIHBhdGggbm8gbG9uZ2VyIGNvbnRhaW4gYSAiLyIgYnkgZGVmYXVsdAoqIEd1enpsZVxIdHRwXFF1ZXJ5U3RyaW5nIGRvZXMgbm8gbG9uZ2VyIG1hbmFnZXMgdGhlIGxlYWRpbmcgIj8iLiBUaGlzIGlzIG5vdyBoYW5kbGVkIGluIEd1enpsZVxIdHRwXFVybC4KKiBCYWRSZXNwb25zZUV4Y2VwdGlvbiBubyBsb25nZXIgaW5jbHVkZXMgdGhlIGZ1bGwgcmVxdWVzdCBhbmQgcmVzcG9uc2UgbWVzc2FnZQoqIEFkZGluZyBzZXREYXRhKCkgdG8gR3V6emxlXFNlcnZpY2VcRGVzY3JpcHRpb25cU2VydmljZURlc2NyaXB0aW9uSW50ZXJmYWNlCiogQWRkaW5nIGdldFJlc3BvbnNlQm9keSgpIHRvIEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZQoqIFZhcmlvdXMgdXBkYXRlcyB0byBjbGFzc2VzIHRvIHVzZSBTZXJ2aWNlRGVzY3JpcHRpb25JbnRlcmZhY2UgdHlwZSBoaW50cyByYXRoZXIgdGhhbiBTZXJ2aWNlRGVzY3JpcHRpb24KKiBIZWFkZXIgdmFsdWVzIGNhbiBub3cgYmUgbm9ybWFsaXplZCBpbnRvIGRpc3RpbmN0IHZhbHVlcyB3aGVuIG11bHRpcGxlIGhlYWRlcnMgYXJlIGNvbWJpbmVkIHdpdGggYSBjb21tYSBzZXBhcmF0ZWQgbGlzdAoqIHhtbEVuY29kaW5nIGNhbiBub3cgYmUgY3VzdG9taXplZCBmb3IgdGhlIFhNTCBkZWNsYXJhdGlvbiBvZiBhIFhNTCBzZXJ2aWNlIGRlc2NyaXB0aW9uIG9wZXJhdGlvbgoqIEd1enpsZVxIdHRwXFF1ZXJ5U3RyaW5nIG5vdyB1c2VzIEd1enpsZVxIdHRwXFF1ZXJ5QWdncmVnYXRvclxRdWVyeUFnZ3JlZ2F0b3JJbnRlcmZhY2Ugb2JqZWN0cyB0byBhZGQgY3VzdG9tIHZhbHVlCiAgYWdncmVnYXRpb24gYW5kIG5vIGxvbmdlciB1c2VzIGNhbGxiYWNrcwoqIFRoZSBVUkwgZW5jb2RpbmcgaW1wbGVtZW50YXRpb24gb2YgR3V6emxlXEh0dHBcUXVlcnlTdHJpbmcgY2FuIG5vdyBiZSBjdXN0b21pemVkCiogQnVnIGZpeDogRmlsdGVycyB3ZXJlIG5vdCBhbHdheXMgaW52b2tlZCBmb3IgYXJyYXkgc2VydmljZSBkZXNjcmlwdGlvbiBwYXJhbWV0ZXJzCiogQnVnIGZpeDogUmVkaXJlY3RzIG5vdyB1c2UgYSB0YXJnZXQgcmVzcG9uc2UgYm9keSByYXRoZXIgdGhhbiBhIHRlbXBvcmFyeSByZXNwb25zZSBib2R5CiogQnVnIGZpeDogVGhlIGRlZmF1bHQgZXhwb25lbnRpYWwgYmFja29mZiBCYWNrb2ZmUGx1Z2luIHdhcyBub3QgZ2l2aW5nIHdoZW4gdGhlIHJlcXVlc3QgdGhyZXNob2xkIHdhcyBleGNlZWRlZAoqIEJ1ZyBmaXg6IEd1enpsZSBub3cgdGFrZXMgdGhlIGZpcnN0IGZvdW5kIHZhbHVlIHdoZW4gZ3JhYmJpbmcgQ2FjaGUtQ29udHJvbCBkaXJlY3RpdmVzCgojIyAzLjEuMiAtIDIwMTMtMDEtMjcKCiogUmVmYWN0b3JlZCBob3cgb3BlcmF0aW9uIHJlc3BvbnNlcyBhcmUgcGFyc2VkLiBWaXNpdG9ycyBub3cgaW5jbHVkZSBhIGJlZm9yZSgpIG1ldGhvZCByZXNwb25zaWJsZSBmb3IgcGFyc2luZyB0aGUKICByZXNwb25zZSBib2R5LiBGb3IgZXhhbXBsZSwgdGhlIFhtbFZpc2l0b3Igbm93IHBhcnNlcyB0aGUgWE1MIHJlc3BvbnNlIGludG8gYW4gYXJyYXkgaW4gdGhlIGJlZm9yZSgpIG1ldGhvZC4KKiBGaXhlZCBhbiBpc3N1ZSB3aGVyZSBjVVJMIHdvdWxkIG5vdCBhdXRvbWF0aWNhbGx5IGRlY29tcHJlc3MgcmVzcG9uc2VzIHdoZW4gdGhlIEFjY2VwdC1FbmNvZGluZyBoZWFkZXIgd2FzIHNlbnQKKiBDVVJMT1BUX1NTTF9WRVJJRllIT1NUIGlzIG5ldmVyIHNldCB0byAxIGJlY2F1c2UgaXQgaXMgZGVwcmVjYXRlZCAoc2VlIDVlMGZmMmVmMjBmODM5ZTE5ZDFlZWIyOThmOTBiYTM1OTg3ODQ0NDQpCiogRml4ZWQgYSBidWcgd2hlcmUgcmVkaXJlY3QgcmVzcG9uc2VzIHdlcmUgbm90IGNoYWluZWQgY29ycmVjdGx5IHVzaW5nIGdldFByZXZpb3VzUmVzcG9uc2UoKQoqIFNldHRpbmcgZGVmYXVsdCBoZWFkZXJzIG9uIGEgY2xpZW50IGFmdGVyIHNldHRpbmcgdGhlIHVzZXItYWdlbnQgd2lsbCBub3QgZXJhc2UgdGhlIHVzZXItYWdlbnQgc2V0dGluZwoKIyMgMy4xLjEgLSAyMDEzLTAxLTIwCgoqIEFkZGluZyB3aWxkY2FyZCBzdXBwb3J0IHRvIEd1enpsZVxDb21tb25cQ29sbGVjdGlvbjo6Z2V0UGF0aCgpCiogQWRkaW5nIGFsaWFzIHN1cHBvcnQgdG8gU2VydmljZUJ1aWxkZXIgY29uZmlncwoqIEFkZGluZyBHdXp6bGVcU2VydmljZVxSZXNvdXJjZVxDb21wb3NpdGVSZXNvdXJjZUl0ZXJhdG9yRmFjdG9yeSBhbmQgY2xlYW5pbmcgdXAgZmFjdG9yeSBpbnRlcmZhY2UKCiMjIDMuMS4wIC0gMjAxMy0wMS0xMgoKKiBCQzogQ3VybEV4Y2VwdGlvbiBub3cgZXh0ZW5kcyBmcm9tIFJlcXVlc3RFeGNlcHRpb24gcmF0aGVyIHRoYW4gQmFkUmVzcG9uc2VFeGNlcHRpb24KKiBCQzogUmVuYW1lZCBHdXp6bGVcUGx1Z2luXENhY2hlXENhbkNhY2hlU3RyYXRlZ3lJbnRlcmZhY2U6OmNhbkNhY2hlKCkgdG8gY2FuQ2FjaGVSZXF1ZXN0KCkgYW5kIGFkZGVkIENhbkNhY2hlUmVzcG9uc2UoKQoqIEFkZGVkIGdldERhdGEgdG8gU2VydmljZURlc2NyaXB0aW9uSW50ZXJmYWNlCiogQWRkZWQgY29udGV4dCBhcnJheSB0byBSZXF1ZXN0SW50ZXJmYWNlOjpzZXRTdGF0ZSgpCiogQnVnOiBSZW1vdmluZyBoYXJkIGRlcGVuZGVuY3kgb24gdGhlIEJhY2tvZmZQbHVnaW4gZnJvbSBHdXp6bGVcSHR0cAoqIEJ1ZzogQWRkaW5nIHJlcXVpcmVkIGNvbnRlbnQtdHlwZSB3aGVuIEpTT04gcmVxdWVzdCB2aXNpdG9yIGFkZHMgSlNPTiB0byBhIGNvbW1hbmQKKiBCdWc6IEZpeGluZyB0aGUgc2VyaWFsaXphdGlvbiBvZiBhIHNlcnZpY2UgZGVzY3JpcHRpb24gd2l0aCBjdXN0b20gZGF0YQoqIE1hZGUgaXQgZWFzaWVyIHRvIGRlYWwgd2l0aCBleGNlcHRpb25zIHRocm93biB3aGVuIHRyYW5zZmVycmluZyBjb21tYW5kcyBvciByZXF1ZXN0cyBpbiBwYXJhbGxlbCBieSBwcm92aWRpbmcKICBhbiBhcnJheSBvZiBzdWNjZXNzZnVsIGFuZCBmYWlsZWQgcmVzcG9uc2VzCiogTW92ZWQgZ2V0UGF0aCBmcm9tIEd1enpsZVxTZXJ2aWNlXFJlc291cmNlXE1vZGVsIHRvIEd1enpsZVxDb21tb25cQ29sbGVjdGlvbgoqIEFkZGVkIEd1enpsZVxIdHRwXElvRW1pdHRpbmdFbnRpdHlCb2R5CiogTW92ZWQgY29tbWFuZCBmaWx0cmF0aW9uIGZyb20gdmFsaWRhdG9ycyB0byBsb2NhdGlvbiB2aXNpdG9ycwoqIEFkZGVkIGBleHRlbmRzYCBhdHRyaWJ1dGVzIHRvIHNlcnZpY2UgZGVzY3JpcHRpb24gcGFyYW1ldGVycwoqIEFkZGVkIGdldE1vZGVscyB0byBTZXJ2aWNlRGVzY3JpcHRpb25JbnRlcmZhY2UKCiMjIDMuMC43IC0gMjAxMi0xMi0xOQoKKiBGaXhpbmcgcGhhciBkZXRlY3Rpb24gd2hlbiBmb3JjaW5nIGEgY2FjZXJ0IHRvIHN5c3RlbSBpZiBudWxsIG9yIHRydWUKKiBBbGxvd2luZyBmaWxlbmFtZSB0byBiZSBwYXNzZWQgdG8gYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdDo6c2V0UmVzcG9uc2VCb2R5KClgCiogQ2xlYW5pbmcgdXAgYEd1enpsZVxDb21tb25cQ29sbGVjdGlvbjo6aW5qZWN0YCBtZXRob2QKKiBBZGRpbmcgYSByZXNwb25zZV9ib2R5IGxvY2F0aW9uIHRvIHNlcnZpY2UgZGVzY3JpcHRpb25zCgojIyAzLjAuNiAtIDIwMTItMTItMDkKCiogQ3VybE11bHRpIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cwoqIEFkZGluZyBzZXRFcnJvclJlc3BvbnNlcygpIHRvIE9wZXJhdGlvbgoqIGNvbXBvc2VyLmpzb24gdHdlYWtzCgojIyAzLjAuNSAtIDIwMTItMTEtMTgKCiogQnVnOiBGaXhpbmcgYW4gaW5maW5pdGUgcmVjdXJzaW9uIGJ1ZyBjYXVzZWQgZnJvbSByZXZhbGlkYXRpbmcgd2l0aCB0aGUgQ2FjaGVQbHVnaW4KKiBCdWc6IFJlc3BvbnNlIGJvZHkgY2FuIG5vdyBiZSBhIHN0cmluZyBjb250YWluaW5nICIwIgoqIEJ1ZzogVXNpbmcgR3V6emxlIGluc2lkZSBvZiBhIHBoYXIgdXNlcyBzeXN0ZW0gYnkgZGVmYXVsdCBidXQgbm93IGFsbG93cyBmb3IgYSBjdXN0b20gY2FjZXJ0CiogQnVnOiBRdWVyeVN0cmluZzo6ZnJvbVN0cmluZyBub3cgcHJvcGVybHkgcGFyc2VzIHF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXJzIHRoYXQgY29udGFpbiBlcXVhbCBzaWducwoqIEFkZGVkIHN1cHBvcnQgZm9yIFhNTCBhdHRyaWJ1dGVzIGluIHNlcnZpY2UgZGVzY3JpcHRpb24gcmVzcG9uc2VzCiogRGVmYXVsdFJlcXVlc3RTZXJpYWxpemVyIG5vdyBzdXBwb3J0cyBhcnJheSBVUkkgcGFyYW1ldGVyIHZhbHVlcyBmb3IgVVJJIHRlbXBsYXRlIGV4cGFuc2lvbgoqIEFkZGVkIGJldHRlciBtaW1ldHlwZSBndWVzc2luZyB0byByZXF1ZXN0cyBhbmQgcG9zdCBmaWxlcwoKIyMgMy4wLjQgLSAyMDEyLTExLTExCgoqIEJ1ZzogRml4ZWQgYSBidWcgd2hlbiBhZGRpbmcgbXVsdGlwbGUgY29va2llcyB0byBhIHJlcXVlc3QgdG8gdXNlIHRoZSBjb3JyZWN0IGdsdWUgdmFsdWUKKiBCdWc6IENvb2tpZXMgY2FuIG5vdyBiZSBhZGRlZCB0aGF0IGhhdmUgYSBuYW1lLCBkb21haW4sIG9yIHZhbHVlIHNldCB0byAiMCIKKiBCdWc6IFVzaW5nIHRoZSBzeXN0ZW0gY2FjZXJ0IGJ1bmRsZSB3aGVuIHVzaW5nIHRoZSBQaGFyCiogQWRkZWQganNvbiBhbmQgeG1sIG1ldGhvZHMgdG8gUmVzcG9uc2UgdG8gbWFrZSBpdCBlYXNpZXIgdG8gcGFyc2UgSlNPTiBhbmQgWE1MIHJlc3BvbnNlIGRhdGEgaW50byBkYXRhIHN0cnVjdHVyZXMKKiBFbmhhbmNlZCBjb29raWUgamFyIGRlLWR1cGxpY2F0aW9uCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gZW5hYmxlIHN0cmljdCBjb29raWUgamFycyB0aGF0IHRocm93IGV4Y2VwdGlvbnMgd2hlbiBpbnZhbGlkIGNvb2tpZXMgYXJlIGFkZGVkCiogQWRkZWQgc2V0U3RyZWFtIHRvIFN0cmVhbUludGVyZmFjZSB0byBhY3R1YWxseSBtYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBjdXN0b20gcmV3aW5kIGJlaGF2aW9yIGZvciBlbnRpdHkgYm9kaWVzCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIGFueSBzb3J0IG9mIGhhc2ggZm9yIGEgc3RyZWFtIHJhdGhlciB0aGFuIGp1c3QgYW4gTUQ1IGhhc2gKCiMjIDMuMC4zIC0gMjAxMi0xMS0wNAoKKiBJbXBsZW1lbnRpbmcgcmVkaXJlY3RzIGluIFBIUCByYXRoZXIgdGhhbiBjVVJMCiogQWRkZWQgUEVDTCBVUkkgdGVtcGxhdGUgZXh0ZW5zaW9uIGFuZCB1c2luZyBhcyBkZWZhdWx0IHBhcnNlciBpZiBhdmFpbGFibGUKKiBCdWc6IEZpeGVkIENvbnRlbnQtTGVuZ3RoIHBhcnNpbmcgb2YgUmVzcG9uc2UgZmFjdG9yeQoqIEFkZGluZyByZXdpbmQoKSBtZXRob2QgdG8gZW50aXR5IGJvZGllcyBhbmQgc3RyZWFtcy4gQWxsb3dzIGZvciBjdXN0b20gcmV3aW5kaW5nIG9mIG5vbi1yZXBlYXRhYmxlIHN0cmVhbXMuCiogQWRkaW5nIFRvQXJyYXlJbnRlcmZhY2UgdGhyb3VnaG91dCBsaWJyYXJ5CiogRml4aW5nIE9hdXRoUGx1Z2luIHRvIGNyZWF0ZSB1bmlxdWUgbm9uY2UgdmFsdWVzIHBlciByZXF1ZXN0CgojIyAzLjAuMiAtIDIwMTItMTAtMjUKCiogTWFnaWMgbWV0aG9kcyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0IG9uIGNsaWVudHMKKiBNYWdpYyBtZXRob2RzIHJldHVybiB0aGUgcmVzdWx0IG9mIGEgY29tbWFuZAoqIFNlcnZpY2UgY2xpZW50cyBubyBsb25nZXIgcmVxdWlyZSBhIGJhc2VfdXJsIG9wdGlvbiBpbiB0aGUgZmFjdG9yeQoqIEJ1ZzogRml4ZWQgYW4gaXNzdWUgd2l0aCBVUkkgdGVtcGxhdGVzIHdoZXJlIG51bGwgdGVtcGxhdGUgdmFyaWFibGVzIHdlcmUgYmVpbmcgZXhwYW5kZWQKCiMjIDMuMC4xIC0gMjAxMi0xMC0yMgoKKiBNb2RlbHMgY2FuIG5vdyBiZSB1c2VkIGxpa2UgcmVndWxhciBjb2xsZWN0aW9uIG9iamVjdHMgYnkgY2FsbGluZyBmaWx0ZXIsIG1hcCwgZXRjLgoqIE1vZGVscyBubyBsb25nZXIgcmVxdWlyZSBhIFBhcmFtZXRlciBzdHJ1Y3R1cmUgb3IgaW5pdGlhbCBkYXRhIGluIHRoZSBjb25zdHJ1Y3RvcgoqIEFkZGVkIGEgY3VzdG9tIEFwcGVuZEl0ZXJhdG9yIHRvIGdldCBhcm91bmQgYSBQSFAgYnVnIHdpdGggdGhlIGBcQXBwZW5kSXRlcmF0b3JgCgojIyAzLjAuMCAtIDIwMTItMTAtMTUKCiogUmV3cm90ZSBzZXJ2aWNlIGRlc2NyaXB0aW9uIGZvcm1hdCB0byBiZSBiYXNlZCBvbiBTd2FnZ2VyCiAgICAqIE5vdyBiYXNlZCBvbiBKU09OIHNjaGVtYQogICAgKiBBZGRlZCBuZXN0ZWQgaW5wdXQgc3RydWN0dXJlcyBhbmQgbmVzdGVkIHJlc3BvbnNlIG1vZGVscwogICAgKiBTdXBwb3J0IGZvciBKU09OIGFuZCBYTUwgaW5wdXQgYW5kIG91dHB1dCBtb2RlbHMKICAgICogUmVuYW1lZCBgY29tbWFuZHNgIHRvIGBvcGVyYXRpb25zYAogICAgKiBSZW1vdmVkIGRvdCBjbGFzcyBub3RhdGlvbgogICAgKiBSZW1vdmVkIGN1c3RvbSB0eXBlcwoqIEJyb2tlIHRoZSBwcm9qZWN0IGludG8gc21hbGxlciB0b3AtbGV2ZWwgbmFtZXNwYWNlcyB0byBiZSBtb3JlIGNvbXBvbmVudCBmcmllbmRseQoqIFJlbW92ZWQgc3VwcG9ydCBmb3IgWE1MIGNvbmZpZ3MgYW5kIGRlc2NyaXB0aW9ucy4gVXNlIGFycmF5cyBvciBKU09OIGZpbGVzLgoqIFJlbW92ZWQgdGhlIFZhbGlkYXRpb24gY29tcG9uZW50IGFuZCBJbnNwZWN0b3IKKiBNb3ZlZCBhbGwgY29va2llIGNvZGUgdG8gR3V6emxlXFBsdWdpblxDb29raWUKKiBNYWdpYyBtZXRob2RzIG9uIGEgR3V6emxlXFNlcnZpY2VcQ2xpZW50IG5vdyByZXR1cm4gdGhlIGNvbW1hbmQgdW4tZXhlY3V0ZWQuCiogQ2FsbGluZyBnZXRSZXN1bHQoKSBvciBnZXRSZXNwb25zZSgpIG9uIGEgY29tbWFuZCB3aWxsIGxhemlseSBleGVjdXRlIHRoZSBjb21tYW5kIGlmIG5lZWRlZC4KKiBOb3cgc2hpcHBpbmcgd2l0aCBjVVJMJ3MgQ0EgY2VydHMgYW5kIHVzaW5nIGl0IGJ5IGRlZmF1bHQKKiBBZGRlZCBwcmV2aW91c1Jlc3BvbnNlKCkgbWV0aG9kIHRvIHJlc3BvbnNlIG9iamVjdHMKKiBObyBsb25nZXIgc2VuZGluZyBBY2NlcHQgYW5kIEFjY2VwdC1FbmNvZGluZyBoZWFkZXJzIG9uIGV2ZXJ5IHJlcXVlc3QKKiBPbmx5IHNlbmRpbmcgYW4gRXhwZWN0IGhlYWRlciBieSBkZWZhdWx0IHdoZW4gYSBwYXlsb2FkIGlzIGdyZWF0ZXIgdGhhbiAxTUIKKiBBZGRlZC9tb3ZlZCBjbGllbnQgb3B0aW9uczoKICAgICogY3VybC5ibGFja2xpc3QgdG8gY3VybC5vcHRpb24uYmxhY2tsaXN0CiAgICAqIEFkZGVkIHNzbC5jZXJ0aWZpY2F0ZV9hdXRob3JpdHkKKiBBZGRlZCBhIEd1enpsZVxJdGVyYXRvciBjb21wb25lbnQKKiBNb3ZlZCBwbHVnaW5zIGZyb20gR3V6emxlXEh0dHBcUGx1Z2luIHRvIEd1enpsZVxQbHVnaW4KKiBBZGRlZCBhIG1vcmUgcm9idXN0IGJhY2tvZmYgcmV0cnkgc3RyYXRlZ3kgKHJlcGxhY2VkIHRoZSBFeHBvbmVudGlhbEJhY2tvZmZQbHVnaW4pCiogQWRkZWQgYSBtb3JlIHJvYnVzdCBjYWNoaW5nIHBsdWdpbgoqIEFkZGVkIHNldEJvZHkgdG8gcmVzcG9uc2Ugb2JqZWN0cwoqIFVwZGF0aW5nIExvZ1BsdWdpbiB0byB1c2UgYSBtb3JlIGZsZXhpYmxlIE1lc3NhZ2VGb3JtYXR0ZXIKKiBBZGRlZCBhIGNvbXBsZXRlbHkgcmV2YW1wZWQgYnVpbGQgcHJvY2VzcwoqIENsZWFuaW5nIHVwIENvbGxlY3Rpb24gY2xhc3MgYW5kIHJlbW92aW5nIGRlZmF1bHQgdmFsdWVzIGZyb20gdGhlIGdldCBtZXRob2QKKiBGaXhlZCBaRjIgY2FjaGUgYWRhcHRlcnMKCiMjIDIuOC44IC0gMjAxMi0xMC0xNQoKKiBCdWc6IEZpeGVkIGEgY29va2llIGlzc3VlIHRoYXQgY2F1c2VkIGRvdCBwcmVmaXhlZCBkb21haW5zIHRvIG5vdCBtYXRjaCB3aGVyZSBwb3B1bGFyIGJyb3dzZXJzIGRpZAoKIyMgMi44LjcgLSAyMDEyLTA5LTMwCgoqIEJ1ZzogRml4ZWQgY29uZmlnIGZpbGUgYWxpYXNlcyBmb3IgSlNPTiBpbmNsdWRlcwoqIEJ1ZzogRml4ZWQgY29va2llIGJ1ZyBvbiBhIHJlcXVlc3Qgb2JqZWN0IGJ5IHVzaW5nIENvb2tpZVBhcnNlciB0byBwYXJzZSBjb29raWVzIG9uIHJlcXVlc3RzCiogQnVnOiBSZW1vdmluZyB0aGUgcGF0aCB0byBhIGZpbGUgd2hlbiBzZW5kaW5nIGEgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIgb24gYSBQT1NUIHVwbG9hZAoqIEJ1ZzogSGFyZGVuaW5nIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHBhcnNpbmcgdG8gYWNjb3VudCBmb3IgbWlzc2luZyBwYXJ0cwoqIEJ1ZzogRml4ZWQgUEVBUiBwYWNrYWdpbmcKKiBCdWc6IEZpeGVkIFJlcXVlc3Q6OmdldEluZm8KKiBCdWc6IEZpeGVkIGNhc2VzIHdoZXJlIENVUkxNX0NBTExfTVVMVElfUEVSRk9STSByZXR1cm4gY29kZXMgd2VyZSBjYXVzaW5nIGN1cmwgdHJhbnNhY3Rpb25zIHRvIGZhaWwKKiBBZGRpbmcgdGhlIGFiaWxpdHkgZm9yIHRoZSBuYW1lc3BhY2UgSXRlcmF0b3IgZmFjdG9yeSB0byBsb29rIGluIG11bHRpcGxlIGRpcmVjdG9yaWVzCiogQWRkZWQgbW9yZSBnZXR0ZXJzL3NldHRlcnMvcmVtb3ZlcnMgZnJvbSBzZXJ2aWNlIGRlc2NyaXB0aW9ucwoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHJlbW92ZSBQT1NUIGZpZWxkcyBmcm9tIE9BdXRoIHNpZ25hdHVyZXMKKiBPQXV0aCBwbHVnaW4gbm93IHN1cHBvcnRzIDItbGVnZ2VkIE9BdXRoCgojIyAyLjguNiAtIDIwMTItMDktMDUKCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gbW9kaWZ5IGFuZCBidWlsZCBzZXJ2aWNlIGRlc2NyaXB0aW9ucwoqIEFkZGVkIHRoZSB1c2Ugb2YgdmlzaXRvcnMgdG8gYXBwbHkgcGFyYW1ldGVycyB0byBsb2NhdGlvbnMgaW4gc2VydmljZSBkZXNjcmlwdGlvbnMgdXNpbmcgdGhlIGR5bmFtaWMgY29tbWFuZAoqIEFkZGVkIGEgYGpzb25gIHBhcmFtZXRlciBsb2NhdGlvbgoqIE5vdyBhbGxvd2luZyBkb3Qgbm90YXRpb24gZm9yIGNsYXNzZXMgaW4gdGhlIENhY2hlQWRhcHRlckZhY3RvcnkKKiBVc2luZyB0aGUgdW5pb24gb2YgdHdvIGFycmF5cyByYXRoZXIgdGhhbiBhbiBhcnJheV9tZXJnZSB3aGVuIGV4dGVuZGluZyBzZXJ2aWNlIGJ1aWxkZXIgc2VydmljZXMgYW5kIHNlcnZpY2UgcGFyYW1zCiogRW5zdXJpbmcgdGhhdCBhIHNlcnZpY2UgaXMgYSBzdHJpbmcgYmVmb3JlIGRvaW5nIHN0cnBvcygpIGNoZWNrcyBvbiBpdCB3aGVuIHN1YnN0aXR1dGluZyBzZXJ2aWNlcyBmb3IgcmVmZXJlbmNlcwogIGluIHNlcnZpY2UgYnVpbGRlciBjb25maWcgZmlsZXMuCiogU2VydmljZXMgZGVmaW5lZCBpbiB0d28gZGlmZmVyZW50IGNvbmZpZyBmaWxlcyB0aGF0IGluY2x1ZGUgb25lIGFub3RoZXIgd2lsbCBieSBkZWZhdWx0IHJlcGxhY2UgdGhlIHByZXZpb3VzbHkKICBkZWZpbmVkIHNlcnZpY2UsIGJ1dCB5b3UgY2FuIG5vdyBjcmVhdGUgc2VydmljZXMgdGhhdCBleHRlbmQgdGhlbXNlbHZlcyBhbmQgbWVyZ2UgdGhlaXIgc2V0dGluZ3Mgb3ZlciB0aGUgcHJldmlvdXMKKiBUaGUgSnNvbkxvYWRlciBub3cgc3VwcG9ydHMgYWxpYXNpbmcgZmlsZW5hbWVzIHdpdGggZGlmZmVyZW50IGZpbGVuYW1lcy4gVGhpcyBhbGxvd3MgeW91IHRvIGFsaWFzIHNvbWV0aGluZyBsaWtlCiAgJ19kZWZhdWx0JyB3aXRoIGEgZGVmYXVsdCBKU09OIGNvbmZpZ3VyYXRpb24gZmlsZS4KCiMjIDIuOC41IC0gMjAxMi0wOC0yOQoKKiBCdWc6IFN1cHByZXNzZWQgZW1wdHkgYXJyYXlzIGZyb20gVVJJIHRlbXBsYXRlcwoqIEJ1ZzogQWRkZWQgdGhlIG1pc3NpbmcgJG9wdGlvbnMgYXJndW1lbnQgZnJvbSBTZXJ2aWNlRGVzY3JpcHRpb246OmZhY3RvcnkgdG8gZW5hYmxlIGNhY2hpbmcKKiBBZGRlZCBzdXBwb3J0IGZvciBIVFRQIHJlc3BvbnNlcyB0aGF0IGRvIG5vdCBjb250YWluIGEgcmVhc29uIHBocmFzZSBpbiB0aGUgc3RhcnQtbGluZQoqIEFic3RyYWN0Q29tbWFuZCBjb21tYW5kcyBhcmUgbm93IGludm9rYWJsZQoqIEFkZGVkIGEgd2F5IHRvIGdldCB0aGUgZGF0YSB1c2VkIHdoZW4gc2lnbmluZyBhbiBPYXV0aCByZXF1ZXN0IGJlZm9yZSBhIHJlcXVlc3QgaXMgc2VudAoKIyMgMi44LjQgLSAyMDEyLTA4LTE1CgoqIEJ1ZzogQ3VzdG9tIGRlbGF5IHRpbWUgY2FsY3VsYXRpb25zIGFyZSBubyBsb25nZXIgaWdub3JlZCBpbiB0aGUgRXhwb25lbnRpYWxCYWNrb2ZmUGx1Z2luCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gdHJhbnNmZXIgZW50aXR5IGJvZGllcyBhcyBhIHN0cmluZyByYXRoZXIgdGhhbiBzdHJlYW1lZC4gVGhpcyBnZXRzIGFyb3VuZCBjdXJsIGVycm9yIDY1LiBTZXQgYGJvZHlfYXNfc3RyaW5nYCBpbiBhIHJlcXVlc3QncyBjdXJsIG9wdGlvbnMgdG8gZW5hYmxlLgoqIEFkZGVkIGEgU3RyZWFtSW50ZXJmYWNlLCBFbnRpdHlCb2R5SW50ZXJmYWNlLCBhbmQgYWRkZWQgZnRlbGwoKSB0byBHdXp6bGVcQ29tbW9uXFN0cmVhbQoqIEFkZGVkIGFuIEFic3RyYWN0RW50aXR5Qm9keURlY29yYXRvciBhbmQgYSBSZWFkTGltaXRFbnRpdHlCb2R5IGRlY29yYXRvciB0byB0cmFuc2ZlciBvbmx5IGEgc3Vic2V0IG9mIGEgZGVjb3JhdGVkIHN0cmVhbQoqIFN0cmVhbSBhbmQgRW50aXR5Qm9keSBvYmplY3RzIHdpbGwgbm93IHJldHVybiB0aGUgZmlsZSBwb3NpdGlvbiB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24gYWZ0ZXIgYSByZWFkIHJlcXVpcmVkIG9wZXJhdGlvbiAoZS5nLiBnZXRDb250ZW50TWQ1KCkpCiogQWRkZWQgYWRkaXRpb25hbCByZXNwb25zZSBzdGF0dXMgY29kZXMKKiBSZW1vdmVkIFNTTCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBkZWZhdWx0IFVzZXItQWdlbnQgaGVhZGVyCiogREVMRVRFIHJlcXVlc3RzIGNhbiBub3cgc2VuZCBhbiBlbnRpdHkgYm9keQoqIEFkZGVkIGFuIEV2ZW50RGlzcGF0Y2hlciB0byB0aGUgRXhwb25lbnRpYWxCYWNrb2ZmUGx1Z2luIGFuZCBhZGRlZCBhbiBFeHBvbmVudGlhbEJhY2tvZmZMb2dnZXIgdG8gbG9nIGJhY2tvZmYgcmV0cmllcwoqIEFkZGVkIHRoZSBhYmlsaXR5IG9mIHRoZSBNb2NrUGx1Z2luIHRvIGNvbnN1bWUgbW9ja2VkIHJlcXVlc3QgYm9kaWVzCiogTG9nUGx1Z2luIG5vdyBleHBvc2VzIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG9iamVjdHMgaW4gdGhlIGV4dHJhcyBhcnJheQoKIyMgMi44LjMgLSAyMDEyLTA3LTMwCgoqIEJ1ZzogRml4ZWQgYSBjYXNlIHdoZXJlIGVtcHR5IFBPU1QgcmVxdWVzdHMgd2VyZSBzZW50IGFzIEdFVCByZXF1ZXN0cwoqIEJ1ZzogRml4ZWQgYSBidWcgaW4gRXhwb25lbnRpYWxCYWNrb2ZmUGx1Z2luIHRoYXQgY2F1c2VkIGZhdGFsIGVycm9ycyB3aGVuIHJldHJ5aW5nIGFuIEVudGl0eUVuY2xvc2luZ1JlcXVlc3QgdGhhdCBkb2VzIG5vdCBoYXZlIGEgYm9keQoqIEJ1ZzogU2V0dGluZyB0aGUgcmVzcG9uc2UgYm9keSBvZiBhIHJlcXVlc3QgdG8gbnVsbCBhZnRlciBjb21wbGV0aW5nIGEgcmVxdWVzdCwgbm90IHdoZW4gc2V0dGluZyB0aGUgc3RhdGUgb2YgYSByZXF1ZXN0IHRvIG5ldwoqIEFkZGVkIG11bHRpcGxlIGluaGVyaXRhbmNlIHRvIHNlcnZpY2UgZGVzY3JpcHRpb24gY29tbWFuZHMKKiBBZGRlZCBhbiBBcGlDb21tYW5kSW50ZXJmYWNlIGFuZCBhZGRlZCBgZ2V0UGFyYW1OYW1lcygpYCBhbmQgYGhhc1BhcmFtKClgCiogUmVtb3ZlZCB0aGUgZGVmYXVsdCAybWIgc2l6ZSBjdXRvZmYgZnJvbSB0aGUgTWQ1VmFsaWRhdG9yUGx1Z2luIHNvIHRoYXQgaXQgbm93IGRlZmF1bHRzIHRvIHZhbGlkYXRpbmcgZXZlcnl0aGluZwoqIENoYW5nZWQgQ3VybE11bHRpOjpwZXJmb3JtIHRvIHBhc3MgYSBzbWFsbGVyIHRpbWVvdXQgdG8gQ3VybE11bHRpOjpleGVjdXRlSGFuZGxlcwoKIyMgMi44LjIgLSAyMDEyLTA3LTI0CgoqIEJ1ZzogUXVlcnkgc3RyaW5nIHZhbHVlcyBzZXQgdG8gMCBhcmUgbm8gbG9uZ2VyIGRyb3BwZWQgZnJvbSB0aGUgcXVlcnkgc3RyaW5nCiogQnVnOiBBIENvbGxlY3Rpb24gb2JqZWN0IGlzIG5vIGxvbmdlciBjcmVhdGVkIGVhY2ggdGltZSBhIGNhbGwgaXMgbWFkZSB0byBgR3V6emxlXFNlcnZpY2VcQ29tbWFuZFxBYnN0cmFjdENvbW1hbmQ6OmdldFJlcXVlc3RIZWFkZXJzKClgCiogQnVnOiBgK2AgaXMgbm93IHRyZWF0ZWQgYXMgYW4gZW5jb2RlZCBzcGFjZSB3aGVuIHBhcnNpbmcgcXVlcnkgc3RyaW5ncwoqIFF1ZXJ5U3RyaW5nIGFuZCBDb2xsZWN0aW9uIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cwoqIEFsbG93aW5nIGRvdCBub3RhdGlvbiBmb3IgY2xhc3MgcGF0aHMgaW4gZmlsdGVycyBhdHRyaWJ1dGUgb2YgYSBzZXJ2aWNlIGRlc2NyaXB0aW9ucwoKIyMgMi44LjEgLSAyMDEyLTA3LTE2CgoqIExvb3NlbmluZyBFdmVudCBEaXNwYXRjaGVyIGRlcGVuZGVuY3kKKiBQT1NUIHJlZGlyZWN0cyBjYW4gbm93IGJlIGN1c3RvbWl6ZWQgdXNpbmcgQ1VSTE9QVF9QT1NUUkVESVIKCiMjIDIuOC4wIC0gMjAxMi0wNy0xNQoKKiBCQzogR3V6emxlXEh0dHBcUXVlcnkKICAgICogUXVlcnkgc3RyaW5ncyB3aXRoIGVtcHR5IHZhcmlhYmxlcyB3aWxsIGFsd2F5cyBzaG93IGFuIGVxdWFsIHNpZ24gdW5sZXNzIHRoZSB2YXJpYWJsZSBpcyBzZXQgdG8gUXVlcnlTdHJpbmc6OkJMQU5LIChlLmcuID9hY2w9IHZzID9hY2wpCiAgICAqIENoYW5nZWQgaXNFbmNvZGluZ1ZhbHVlcygpIGFuZCBpc0VuY29kaW5nRmllbGRzKCkgdG8gaXNVcmxFbmNvZGluZygpCiAgICAqIENoYW5nZWQgc2V0RW5jb2RlVmFsdWVzKGJvb2wpIGFuZCBzZXRFbmNvZGVGaWVsZHMoYm9vbCkgdG8gdXNlVXJsRW5jb2RpbmcoYm9vbCkKICAgICogQ2hhbmdlZCB0aGUgYWdncmVnYXRpb24gZnVuY3Rpb25zIG9mIFF1ZXJ5U3RyaW5nIHRvIGJlIHN0YXRpYyBtZXRob2RzCiAgICAqIENhbiBub3cgdXNlIGZyb21TdHJpbmcoKSB3aXRoIHF1ZXJ5c3RyaW5ncyB0aGF0IGhhdmUgYSBsZWFkaW5nID8KKiBjVVJMIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGNhbiBiZSBzcGVjaWZpZWQgaW4gc2VydmljZSBkZXNjcmlwdGlvbnMgdXNpbmcgYGN1cmwuYCBwcmVmaXhlZCBwYXJhbWV0ZXJzCiogQ29udGVudC1MZW5ndGggaXMgc2V0IHRvIDAgYmVmb3JlIGVtaXR0aW5nIHRoZSByZXF1ZXN0LmJlZm9yZV9zZW5kIGV2ZW50IHdoZW4gc2VuZGluZyBhbiBlbXB0eSByZXF1ZXN0IGJvZHkKKiBDb29raWVzIGFyZSBubyBsb25nZXIgVVJMIGRlY29kZWQgYnkgZGVmYXVsdAoqIEJ1ZzogVVJJIHRlbXBsYXRlIHZhcmlhYmxlcyBzZXQgdG8gbnVsbCBhcmUgbm8gbG9uZ2VyIGV4cGFuZGVkCgojIyAyLjcuMiAtIDIwMTItMDctMDIKCiogQkM6IE1vdmluZyB0aGluZ3MgdG8gZ2V0IHJlYWR5IGZvciBzdWJ0cmVlIHNwbGl0cy4gTW92aW5nIEluZmxlY3Rpb24gaW50byBDb21tb24uIE1vdmluZyBHdXp6bGVcSHR0cFxQYXJzZXIgdG8gR3V6emxlXFBhcnNlci4KKiBCQzogUmVtb3ZpbmcgR3V6emxlXENvbW1vblxCYXRjaFxCYXRjaDo6Y291bnQoKSBhbmQgcmVwbGFjaW5nIGl0IHdpdGggaXNFbXB0eSgpCiogQ2FjaGVQbHVnaW4gbm93IGFsbG93cyBmb3IgYSBjdXN0b20gcmVxdWVzdCBwYXJhbWV0ZXIgZnVuY3Rpb24gdG8gY2hlY2sgaWYgYSByZXF1ZXN0IGNhbiBiZSBjYWNoZWQKKiBCdWcgZml4OiBDYWNoZVBsdWdpbiBub3cgb25seSBjYWNoZXMgR0VUIGFuZCBIRUFEIHJlcXVlc3RzIGJ5IGRlZmF1bHQKKiBCdWcgZml4OiBVc2luZyBoZWFkZXIgZ2x1ZSB3aGVuIHRyYW5zZmVycmluZyBoZWFkZXJzIG92ZXIgdGhlIHdpcmUKKiBBbGxvd2luZyBkZWVwbHkgbmVzdGVkIGFycmF5cyBmb3IgY29tcG9zaXRlIHZhcmlhYmxlcyBpbiBVUkkgdGVtcGxhdGVzCiogQmF0Y2ggZGl2aXNvcnMgY2FuIG5vdyByZXR1cm4gaXRlcmF0b3JzIG9yIGFycmF5cwoKIyMgMi43LjEgLSAyMDEyLTA2LTI2CgoqIE1pbm9yIHBhdGNoIHRvIHVwZGF0ZSB2ZXJzaW9uIG51bWJlciBpbiBVQSBzdHJpbmcKKiBVcGRhdGluZyBidWlsZCBwcm9jZXNzCgojIyAyLjcuMCAtIDIwMTItMDYtMjUKCiogQkM6IEluZmxlY3Rpb24gY2xhc3NlcyBtb3ZlZCB0byBHdXp6bGVcSW5mbGVjdGlvbi4gTm8gbG9uZ2VyIHN0YXRpYyBtZXRob2RzLiBDYW4gbm93IGluamVjdCBjdXN0b20gaW5mbGVjdG9ycyBpbnRvIGNsYXNzZXMuCiogQkM6IFJlbW92ZWQgbWFnaWMgc2V0WCBtZXRob2RzIGZyb20gY29tbWFuZHMKKiBCQzogTWFnaWMgbWV0aG9kcyBtYXBwZWQgdG8gc2VydmljZSBkZXNjcmlwdGlvbiBjb21tYW5kcyBhcmUgbm93IGluZmxlY3RlZCBpbiB0aGUgY29tbWFuZCBmYWN0b3J5IHJhdGhlciB0aGFuIHRoZSBjbGllbnQgX19jYWxsKCkgbWV0aG9kCiogVmVyYm9zZSBjVVJMIG9wdGlvbnMgYXJlIG5vIGxvbmdlciBlbmFibGVkIGJ5IGRlZmF1bHQuIFNldCBjdXJsLmRlYnVnIHRvIHRydWUgb24gYSBjbGllbnQgdG8gZW5hYmxlLgoqIEJ1ZzogTm93IGFsbG93aW5nIGNvbG9ucyBpbiBhIHJlc3BvbnNlIHN0YXJ0LWxpbmUgKGUuZy4gSFRUUC8xLjEgNTAzIFNlcnZpY2UgVW5hdmFpbGFibGU6IEJhY2stZW5kIHNlcnZlciBpcyBhdCBjYXBhY2l0eSkKKiBHdXp6bGVcU2VydmljZVxSZXNvdXJjZVxSZXNvdXJjZUl0ZXJhdG9yQXBwbHlCYXRjaGVkIG5vdyBpbnRlcm5hbGx5IHVzZXMgdGhlIEd1enpsZVxDb21tb25cQmF0Y2ggbmFtZXNwYWNlCiogQWRkZWQgR3V6emxlXFNlcnZpY2VcUGx1Z2luIG5hbWVzcGFjZSBhbmQgYSBQbHVnaW5Db2xsZWN0aW9uUGx1Z2luCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gc2V0IFBPU1QgZmllbGRzIGFuZCBmaWxlcyBpbiBhIHNlcnZpY2UgZGVzY3JpcHRpb24KKiBHdXp6bGVcSHR0cFxFbnRpdHlCb2R5OjpmYWN0b3J5KCkgbm93IGFjY2VwdHMgb2JqZWN0cyB3aXRoIGEgX190b1N0cmluZygpIG1ldGhvZAoqIEFkZGluZyBhIGNvbW1hbmQuYmVmb3JlX3ByZXBhcmUgZXZlbnQgdG8gY2xpZW50cwoqIEFkZGVkIEJhdGNoQ2xvc3VyZVRyYW5zZmVyIGFuZCBCYXRjaENsb3N1cmVEaXZpc29yCiogQmF0Y2hUcmFuc2ZlckV4Y2VwdGlvbiBub3cgaW5jbHVkZXMgcmVmZXJlbmNlcyB0byB0aGUgYmF0Y2ggZGl2aXNvciBhbmQgdHJhbnNmZXIgc3RyYXRlZ2llcwoqIEZpeGVkIHNvbWUgdGVzdHMgc28gdGhhdCB0aGV5IHBhc3MgbW9yZSByZWxpYWJseQoqIEFkZGVkIEd1enpsZVxDb21tb25cTG9nXEFycmF5TG9nQWRhcHRlcgoKIyMgMi42LjYgLSAyMDEyLTA2LTEwCgoqIEJDOiBSZW1vdmluZyBHdXp6bGVcSHR0cFxQbHVnaW5cQmF0Y2hRdWV1ZVBsdWdpbgoqIEJDOiBSZW1vdmluZyBHdXp6bGVcU2VydmljZVxDb21tYW5kXENvbW1hbmRTZXQKKiBBZGRpbmcgZ2VuZXJpYyBiYXRjaGluZyBzeXN0ZW0gKHJlcGxhY2VzIHRoZSBiYXRjaCBxdWV1ZSBwbHVnaW4gYW5kIGNvbW1hbmQgc2V0KQoqIFVwZGF0aW5nIFpGIGNhY2hlIGFuZCBsb2cgYWRhcHRlcnMgYW5kIG5vdyB1c2luZyBaRidzIGNvbXBvc2VyIHJlcG9zaXRvcnkKKiBCdWc6IFNldHRpbmcgdGhlIG5hbWUgb2YgZWFjaCBBcGlQYXJhbSB3aGVuIGNyZWF0aW5nIHRocm91Z2ggYW4gQXBpQ29tbWFuZAoqIEFkZGluZyByZXN1bHRfdHlwZSwgcmVzdWx0X2RvYywgZGVwcmVjYXRlZCwgYW5kIGRvY191cmwgdG8gc2VydmljZSBkZXNjcmlwdGlvbnMKKiBCdWc6IENoYW5nZWQgdGhlIGRlZmF1bHQgY29va2llIGhlYWRlciBjYXNpbmcgYmFjayB0byAnQ29va2llJwoKIyMgMi42LjUgLSAyMDEyLTA2LTAzCgoqIEJDOiBSZW5hbWluZyBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U6OmdldFJlc291cmNlVXJpKCkgdG8gZ2V0UmVzb3VyY2UoKQoqIEJDOiBSZW1vdmluZyB1bnVzZWQgQVVUSF9CQVNJQyBhbmQgQVVUSF9ESUdFU1QgY29uc3RhbnRzIGZyb20KKiBCQzogR3V6emxlXEh0dHBcQ29va2llIGlzIG5vdyB1c2VkIHRvIG1hbmFnZSBTZXQtQ29va2llIGRhdGEsIG5vdCBDb29raWUgZGF0YQoqIEJDOiBSZW5hbWluZyBtZXRob2RzIGluIHRoZSBDb29raWVKYXJJbnRlcmZhY2UKKiBNb3ZpbmcgYWxtb3N0IGFsbCBjb29raWUgbG9naWMgb3V0IG9mIHRoZSBDb29raWVQbHVnaW4gYW5kIGludG8gdGhlIENvb2tpZSBvciBDb29raWVKYXIgaW1wbGVtZW50YXRpb25zCiogTWFraW5nIHRoZSBkZWZhdWx0IGdsdWUgZm9yIEhUVFAgaGVhZGVycyAnOycgaW5zdGVhZCBvZiAnLCcKKiBBZGRpbmcgYSByZW1vdmVWYWx1ZSB0byBHdXp6bGVcSHR0cFxNZXNzYWdlXEhlYWRlcgoqIEFkZGluZyBnZXRDb29raWVzKCkgdG8gcmVxdWVzdCBpbnRlcmZhY2UuCiogTWFraW5nIGl0IGVhc2llciB0byBhZGQgZXZlbnQgc3Vic2NyaWJlcnMgdG8gSGFzRGlzcGF0Y2hlckludGVyZmFjZSBjbGFzc2VzLiBDYW4gbm93IGRpcmVjdGx5IGNhbGwgYWRkU3Vic2NyaWJlcigpCgojIyAyLjYuNCAtIDIwMTItMDUtMzAKCiogQkM6IENsZWFuaW5nIHVwIGhvdyBQT1NUIGZpbGVzIGFyZSBzdG9yZWQgaW4gRW50aXR5RW5jbG9zaW5nUmVxdWVzdCBvYmplY3RzLiBBZGRpbmcgUG9zdEZpbGUgY2xhc3MuCiogQkM6IE1vdmluZyBBcGlDb21tYW5kIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgZnJvbSB0aGUgSW5zcGVjdG9yIGFuZCBvbiB0byB0aGUgQXBpQ29tbWFuZAoqIEJ1ZzogRml4aW5nIG1hZ2ljIG1ldGhvZCBjb21tYW5kIGNhbGxzIG9uIGNsaWVudHMKKiBCdWc6IEVtYWlsIGNvbnN0cmFpbnQgb25seSB2YWxpZGF0ZXMgc3RyaW5ncwoqIEJ1ZzogQWdncmVnYXRlIFBPU1QgZmllbGRzIHdoZW4gUE9TVCBmaWxlcyBhcmUgcHJlc2VudCBpbiBjdXJsIGhhbmRsZQoqIEJ1ZzogRml4aW5nIGRlZmF1bHQgVXNlci1BZ2VudCBoZWFkZXIKKiBCdWc6IE9ubHkgYXBwZW5kaW5nIG9yIHByZXBlbmRpbmcgcGFyYW1ldGVycyBpbiBjb21tYW5kcyBpZiB0aGV5IGFyZSBzcGVjaWZpZWQKKiBCdWc6IE5vdCByZXF1aXJpbmcgcmVzcG9uc2UgcmVhc29uIHBocmFzZXMgb3Igc3RhdHVzIGNvZGVzIHRvIG1hdGNoIGEgcHJlZGVmaW5lZCBsaXN0IG9mIGNvZGVzCiogQWxsb3dpbmcgdGhlIHVzZSBvZiBkb3Qgbm90YXRpb24gZm9yIGNsYXNzIG5hbWVzcGFjZXMgd2hlbiB1c2luZyBpbnN0YW5jZV9vZiBjb25zdHJhaW50CiogQWRkZWQgYW55X21hdGNoIHZhbGlkYXRpb24gY29uc3RyYWludAoqIEFkZGVkIGFuIEFzeW5jUGx1Z2luCiogUGFzc2luZyByZXF1ZXN0IG9iamVjdCB0byB0aGUgY2FsY3VsYXRlV2FpdCBtZXRob2Qgb2YgdGhlIEV4cG9uZW50aWFsQmFja29mZlBsdWdpbgoqIEFsbG93aW5nIHRoZSByZXN1bHQgb2YgYSBjb21tYW5kIG9iamVjdCB0byBiZSBjaGFuZ2VkCiogUGFyc2luZyBsb2NhdGlvbiBhbmQgdHlwZSBzdWIgdmFsdWVzIHdoZW4gaW5zdGFudGlhdGluZyBhIHNlcnZpY2UgZGVzY3JpcHRpb24gcmF0aGVyIHRoYW4gb3ZlciBhbmQgb3ZlciBhdCBydW50aW1lCgojIyAyLjYuMyAtIDIwMTItMDUtMjMKCiogW0JDXSBHdXp6bGVcQ29tbW9uXEZyb21Db25maWdJbnRlcmZhY2Ugbm8gbG9uZ2VyIHJlcXVpcmVzIGFueSBjb25maWcgb3B0aW9ucy4KKiBbQkNdIFJlZmFjdG9yaW5nIGhvdyBQT1NUIGZpbGVzIGFyZSBzdG9yZWQgb24gYW4gRW50aXR5RW5jbG9zaW5nUmVxdWVzdC4gVGhleSBhcmUgbm93IHNlcGFyYXRlIGZyb20gUE9TVCBmaWVsZHMuCiogWW91IGNhbiBub3cgdXNlIGFuIGFycmF5IG9mIGRhdGEgd2hlbiBjcmVhdGluZyBQVVQgcmVxdWVzdCBib2RpZXMgaW4gdGhlIHJlcXVlc3QgZmFjdG9yeS4KKiBSZW1vdmluZyB0aGUgcmVxdWlyZW1lbnQgdGhhdCBIVFRQUyByZXF1ZXN0cyBuZWVkZWQgYSBDYWNoZS1Db250cm9sOiBwdWJsaWMgZGlyZWN0aXZlIHRvIGJlIGNhY2hlYWJsZS4KKiBbSHR0cF0gQWRkaW5nIHN1cHBvcnQgZm9yIENvbnRlbnQtVHlwZSBpbiBtdWx0aXBhcnQgUE9TVCB1cGxvYWRzIHBlciB1cGxvYWQKKiBbSHR0cF0gQWRkZWQgc3VwcG9ydCBmb3IgdXBsb2FkaW5nIG11bHRpcGxlIGZpbGVzIHVzaW5nIHRoZSBzYW1lIG5hbWUgKGZvb1swXSwgZm9vWzFdKQoqIEFkZGluZyBtb3JlIFBPU1QgZGF0YSBvcGVyYXRpb25zIGZvciBlYXNpZXIgbWFuaXB1bGF0aW9uIG9mIFBPU1QgZGF0YS4KKiBZb3UgY2FuIG5vdyBzZXQgZW1wdHkgUE9TVCBmaWVsZHMuCiogVGhlIGJvZHkgb2YgYSByZXF1ZXN0IGlzIG9ubHkgc2hvd24gb24gRW50aXR5RW5jbG9zaW5nUmVxdWVzdCBvYmplY3RzIHRoYXQgZG8gbm90IHVzZSBQT1NUIGZpbGVzLgoqIFNwbGl0IHRoZSBHdXp6bGVcU2VydmljZVxJbnNwZWN0b3I6OnZhbGlkYXRlQ29uZmlnIG1ldGhvZCBpbnRvIHR3byBtZXRob2RzLiBPbmUgdG8gaW5pdGlhbGl6ZSB3aGVuIGEgY29tbWFuZCBpcyBjcmVhdGVkLCBhbmQgb25lIHRvIHZhbGlkYXRlLgoqIENTIHVwZGF0ZXMKCiMjIDIuNi4yIC0gMjAxMi0wNS0xOQoKKiBbSHR0cF0gQmV0dGVyIGhhbmRsaW5nIG9mIG5lc3RlZCBzY29wZSByZXF1ZXN0cyBpbiBDdXJsTXVsdGkuICBSZXF1ZXN0cyBhcmUgbm93IGFsd2F5cyBwcmVwYXJlcyBpbiB0aGUgc2VuZCgpIG1ldGhvZCByYXRoZXIgdGhhbiB0aGUgYWRkUmVxdWVzdCgpIG1ldGhvZC4KCiMjIDIuNi4xIC0gMjAxMi0wNS0xOQoKKiBbQkNdIFJlbW92aW5nICdwYXRoJyBzdXBwb3J0IGluIHNlcnZpY2UgZGVzY3JpcHRpb25zLiAgVXNlICd1cmknLgoqIFtCQ10gR3V6emxlXFNlcnZpY2VcSW5zcGVjdG9yOjpwYXJzZURvY0Jsb2NrIGlzIG5vdyBwcm90ZWN0ZWQuIEFkZGluZyBnZXRBcGlQYXJhbXNGb3JDbGFzcygpIHdpdGggY2FjaGUuCiogW0JDXSBSZW1vdmluZyBHdXp6bGVcQ29tbW9uXE51bGxPYmplY3QuICBVc2UgaHR0cHM6Ly9naXRodWIuY29tL210ZG93bGluZy9OdWxsT2JqZWN0IGlmIHlvdSBuZWVkIGl0LgoqIFtCQ10gUmVtb3ZpbmcgR3V6emxlXENvbW1vblxYbWxFbGVtZW50LgoqIEFsbCBjb21tYW5kcywgYm90aCBkeW5hbWljIGFuZCBjb25jcmV0ZSwgaGF2ZSBBcGlDb21tYW5kIG9iamVjdHMuCiogQWRkaW5nIGEgZml4IGZvciBDdXJsTXVsdGkgc28gdGhhdCBpZiBhbGwgb2YgdGhlIGNvbm5lY3Rpb25zIGVuY291bnRlciBzb21lIHNvcnQgb2YgY3VybCBlcnJvciwgdGhlbiB0aGUgbG9vcCBleGl0cy4KKiBBZGRpbmcgY2hlY2tzIHRvIEVudGl0eUVuY2xvc2luZ1JlcXVlc3Qgc28gdGhhdCBlbXB0eSBQT1NUIGZpbGVzIGFuZCBmaWVsZHMgYXJlIGlnbm9yZWQuCiogTWFraW5nIHRoZSBtZXRob2Qgc2lnbmF0dXJlIG9mIEd1enpsZVxTZXJ2aWNlXEJ1aWxkZXJcU2VydmljZUJ1aWxkZXI6OmZhY3RvcnkgbW9yZSBmbGV4aWJsZS4KCiMjIDIuNi4wIC0gMjAxMi0wNS0xNQoKKiBbQkNdIE1vdmluZyBHdXp6bGVcU2VydmljZVxCdWlsZGVyIHRvIEd1enpsZVxTZXJ2aWNlXEJ1aWxkZXJcU2VydmljZUJ1aWxkZXIKKiBbQkNdIEV4ZWN1dGluZyBhIENvbW1hbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBjb21tYW5kIHJhdGhlciB0aGFuIHRoZSBjb21tYW5kCiogW0JDXSBNb3ZpbmcgYWxsIEhUVFAgcGFyc2luZyBsb2dpYyB0byBHdXp6bGVcSHR0cFxQYXJzZXJzLiBBbGxvd3MgZm9yIGZhc3RlciBDIGltcGxlbWVudGF0aW9ucyBpZiBuZWVkZWQuCiogW0JDXSBDaGFuZ2luZyB0aGUgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXNwb25zZTo6c2V0UHJvdG9jb2woKSBtZXRob2QgdG8gYWNjZXB0IGEgcHJvdG9jb2wgYW5kIHZlcnNpb24gaW4gc2VwYXJhdGUgYXJncy4KKiBbQkNdIE1vdmluZyBSZXNvdXJjZUl0ZXJhdG9yKiB0byBHdXp6bGVcU2VydmljZVxSZXNvdXJjZQoqIFtCQ10gQ29tcGxldGVseSByZWZhY3RvcmVkIFJlc291cmNlSXRlcmF0b3JzIHRvIGl0ZXJhdGUgb3ZlciBhIGNsb25lZCBjb21tYW5kIG9iamVjdAoqIFtCQ10gTW92ZWQgR3V6emxlXEh0dHBcVXJpVGVtcGxhdGUgdG8gR3V6emxlXEh0dHBcUGFyc2VyXFVyaVRlbXBsYXRlXFVyaVRlbXBsYXRlCiogW0JDXSBHdXp6bGVcR3V6emxlIGlzIG5vdyBkZXByZWNhdGVkCiogTW92aW5nIEd1enpsZVxDb21tb25cR3V6emxlOjppbmplY3QgdG8gR3V6emxlXENvbW1vblxDb2xsZWN0aW9uOjppbmplY3QKKiBBZGRpbmcgR3V6emxlXFZlcnNpb24gY2xhc3MgdG8gZ2l2ZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFib3V0IEd1enpsZQoqIEFkZGluZyBHdXp6bGVcSHR0cFxVdGlscyBjbGFzcyB0byBwcm92aWRlIGdldERlZmF1bHRVc2VyQWdlbnQoKSBhbmQgZ2V0SHR0cERhdGUoKQoqIEFkZGluZyBHdXp6bGVcQ3VybFxDdXJsVmVyc2lvbiB0byBtYW5hZ2UgY2FjaGluZyBjdXJsX3ZlcnNpb24oKSBkYXRhCiogU2VydmljZURlc2NyaXB0aW9uIGFuZCBTZXJ2aWNlQnVpbGRlciBhcmUgbm93IGNhY2hlYWJsZSB1c2luZyBzaW1pbGFyIGNvbmZpZ3MKKiBDaGFuZ2luZyB0aGUgZm9ybWF0IG9mIFhNTCBhbmQgSlNPTiBzZXJ2aWNlIGJ1aWxkZXIgY29uZmlncy4gIEJhY2t3YXJkcyBjb21wYXRpYmxlLgoqIENsZWFuZWQgdXAgQ29va2llIHBhcnNpbmcKKiBUcmltbWluZyB0aGUgZGVmYXVsdCBHdXp6bGUgVXNlci1BZ2VudCBoZWFkZXIKKiBBZGRpbmcgYSBzZXRPbkNvbXBsZXRlKCkgbWV0aG9kIHRvIENvbW1hbmRzIHRoYXQgaXMgY2FsbGVkIHdoZW4gYSBjb21tYW5kIGNvbXBsZXRlcwoqIEtlZXBpbmcgdHJhY2sgb2YgcmVxdWVzdHMgdGhhdCB3ZXJlIG1vY2tlZCBpbiB0aGUgTW9ja1BsdWdpbgoqIEZpeGVkIGEgY2FjaGluZyBidWcgaW4gdGhlIENhY2hlQWRhcHRlckZhY3RvcnkKKiBJbnNwZWN0b3Igb2JqZWN0cyBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIENvbW1hbmQgb2JqZWN0CiogUmVmYWN0b3JpbmcgYSBsb3Qgb2YgY29kZSBhbmQgdGVzdHMgdG8gYmUgY2FzZSBpbnNlbnNpdGl2ZSB3aGVuIGRlYWxpbmcgd2l0aCBoZWFkZXJzCiogQWRkaW5nIEd1enpsZVxIdHRwXE1lc3NhZ2VcSGVhZGVyQ29tcGFyaXNvbiBmb3IgZWFzeSBjb21wYXJpc29uIG9mIEhUVFAgaGVhZGVycyB1c2luZyBhIERTTAoqIEFkZGluZyB0aGUgYWJpbGl0eSB0byBzZXQgZ2xvYmFsIG9wdGlvbiBvdmVycmlkZXMgdG8gc2VydmljZSBidWlsZGVyIGNvbmZpZ3MKKiBBZGRpbmcgdGhlIGFiaWxpdHkgdG8gaW5jbHVkZSBvdGhlciBzZXJ2aWNlIGJ1aWxkZXIgY29uZmlnIGZpbGVzIGZyb20gd2l0aGluIFhNTCBhbmQgSlNPTiBmaWxlcwoqIE1vdmluZyB0aGUgcGFyc2VRdWVyeSBtZXRob2Qgb3V0IG9mIFVybCBhbmQgb24gdG8gUXVlcnlTdHJpbmc6OmZyb21TdHJpbmcoKSBhcyBhIHN0YXRpYyBmYWN0b3J5IG1ldGhvZC4KCiMjIDIuNS4wIC0gMjAxMi0wNS0wOAoKKiBNYWpvciBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMKKiBbQkNdIFNpbXBsaWZ5aW5nIEd1enpsZVxDb21tb25cQ29sbGVjdGlvbi4gIFBsZWFzZSBjaGVjayB0byBzZWUgaWYgeW91IGFyZSB1c2luZyBmZWF0dXJlcyB0aGF0IGFyZSBub3cgZGVwcmVjYXRlZC4KKiBbQkNdIFVzaW5nIGEgY3VzdG9tIHZhbGlkYXRpb24gc3lzdGVtIHRoYXQgYWxsb3dzIGEgZmx5d2VpZ2h0IGltcGxlbWVudGF0aW9uIGZvciBtdWNoIGZhc3RlciB2YWxpZGF0aW9uLiBObyBsb25nZXIgdXNpbmcgU3ltZm9ueTIgVmFsaWRhdGlvbiBjb21wb25lbnQuCiogW0JDXSBObyBsb25nZXIgc3VwcG9ydGluZyAie3sgfX0iIGZvciBpbmplY3RpbmcgaW50byBjb21tYW5kIG9yIFVyaVRlbXBsYXRlcy4gIFVzZSAie30iCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gcGFzc2VkIHBhcmFtZXRlcnMgdG8gYWxsIHJlcXVlc3RzIGNyZWF0ZWQgYnkgYSBjbGllbnQKKiBBZGRlZCBjYWxsYmFjayBmdW5jdGlvbmFsaXR5IHRvIHRoZSBFeHBvbmVudGlhbEJhY2tvZmZQbHVnaW4KKiBVc2luZyBtaWNyb3RpbWUgaW4gRXhwb25lbnRpYWxCYWNrb2ZmUGx1Z2luIHRvIGFsbG93IG1vcmUgZ3JhbnVsYXIgYmFja29mZiBzdHJhdGVnaWVzLgoqIFJld2luZGluZyByZXF1ZXN0IHN0cmVhbSBib2RpZXMgd2hlbiByZXRyeWluZyByZXF1ZXN0cwoqIEV4Y2VwdGlvbiBpcyB0aHJvd24gd2hlbiBKU09OIHJlc3BvbnNlIGJvZHkgY2Fubm90IGJlIGRlY29kZWQKKiBBZGRlZCBjb25maWd1cmFibGUgbWFnaWMgbWV0aG9kIGNhbGxzIHRvIGNsaWVudHMgYW5kIGNvbW1hbmRzLiAgVGhpcyBpcyBvZmYgYnkgZGVmYXVsdC4KKiBGaXhlZCBhIGRlZmVjdCB0aGF0IGFkZGVkIGEgaGFzaCB0byBldmVyeSBwYXJzZWQgVVJMIHBhcnQKKiBGaXhlZCBkdXBsaWNhdGUgbm9uZSBnZW5lcmF0aW9uIGZvciBPYXV0aFBsdWdpbi4KKiBFbWl0dGluZyBhbiBldmVudCBlYWNoIHRpbWUgYSBjbGllbnQgaXMgZ2VuZXJhdGVkIGJ5IGEgU2VydmljZUJ1aWxkZXIKKiBVc2luZyBhbiBBcGlQYXJhbXMgb2JqZWN0IGluc3RlYWQgb2YgYSBDb2xsZWN0aW9uIGZvciBwYXJhbWV0ZXJzIG9mIGFuIEFwaUNvbW1hbmQKKiBjYWNoZS4qIHJlcXVlc3QgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVuYW1lZCB0byBwYXJhbXMuY2FjaGUuKgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHNldCBhcmJpdHJhcnkgY3VybCBvcHRpb25zIG9uIHJlcXVlc3RzIChkaXNhYmxlX3dpcmUsIHByb2dyZXNzLCBldGMuKS4gU2VlIEN1cmxIYW5kbGUuCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gZGlzYWJsZSB0eXBlIHZhbGlkYXRpb24gb2Ygc2VydmljZSBkZXNjcmlwdGlvbnMKKiBTZXJ2aWNlRGVzY3JpcHRpb25zIGFuZCBTZXJ2aWNlQnVpbGRlcnMgYXJlIG5vdyBTZXJpYWxpemFibGUK]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9ndXp6bGUiLAogICAgImRlc2NyaXB0aW9uIjogIkd1enpsZSBpcyBhIFBIUCBIVFRQIGNsaWVudCBsaWJyYXJ5IiwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAia2V5d29yZHMiOiBbCiAgICAgICAgImZyYW1ld29yayIsCiAgICAgICAgImh0dHAiLAogICAgICAgICJyZXN0IiwKICAgICAgICAid2ViIHNlcnZpY2UiLAogICAgICAgICJjdXJsIiwKICAgICAgICAiY2xpZW50IiwKICAgICAgICAiSFRUUCBjbGllbnQiLAogICAgICAgICJQU1ItNyIsCiAgICAgICAgIlBTUi0xOCIKICAgIF0sCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkdyYWhhbSBDYW1wYmVsbCIsCiAgICAgICAgICAgICJlbWFpbCI6ICJoZWxsb0BnamNhbXBiZWxsLmNvLnVrIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HcmFoYW1DYW1wYmVsbCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiTWljaGFlbCBEb3dsaW5nIiwKICAgICAgICAgICAgImVtYWlsIjogIm10ZG93bGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL210ZG93bGluZyIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiSmVyZW15IExpbmRibG9tIiwKICAgICAgICAgICAgImVtYWlsIjogImplcmVtZWFtaWFAZ21haWwuY29tIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9qZXJlbWVhbWlhIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJHZW9yZ2UgTXBvbm9zIiwKICAgICAgICAgICAgImVtYWlsIjogImdtcG9ub3NAZ21haWwuY29tIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9nbXBvbm9zIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJUb2JpYXMgTnlob2xtIiwKICAgICAgICAgICAgImVtYWlsIjogInRvYmlhcy5ueWhvbG1AZ21haWwuY29tIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9OeWhvbG0iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIk3DoXJrIFPDoWdpLUthesOhciIsCiAgICAgICAgICAgICJlbWFpbCI6ICJtYXJrLnNhZ2lrYXphckBnbWFpbC5jb20iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NhZ2lrYXphcm1hcmsiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlRvYmlhcyBTY2h1bHR6ZSIsCiAgICAgICAgICAgICJlbWFpbCI6ICJ3ZWJtYXN0ZXJAdHViby13b3JsZC5kZSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vVG9iaW9uIgogICAgICAgIH0KICAgIF0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIl43LjIuNSB8fCBeOC4wIiwKICAgICAgICAiZXh0LWpzb24iOiAiKiIsCiAgICAgICAgImd1enpsZWh0dHAvcHJvbWlzZXMiOiAiXjIuNSIsCiAgICAgICAgImd1enpsZWh0dHAvcHNyNyI6ICJeMi4xMiIsCiAgICAgICAgInBzci9odHRwLWNsaWVudCI6ICJeMS4wIiwKICAgICAgICAic3ltZm9ueS9kZXByZWNhdGlvbi1jb250cmFjdHMiOiAiXjIuNSB8fCBeMy4wIiwKICAgICAgICAic3ltZm9ueS9wb2x5ZmlsbC1waHA4MCI6ICJeMS4yNCIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgImV4dC1jdXJsIjogIioiLAogICAgICAgICJiYW1hcm5pL2NvbXBvc2VyLWJpbi1wbHVnaW4iOiAiXjEuOC4yIiwKICAgICAgICAiZ3V6emxlL2NsaWVudC1pbnRlZ3JhdGlvbi10ZXN0cyI6ICIzLjAuMiIsCiAgICAgICAgImd1enpsZWh0dHAvdGVzdC1zZXJ2ZXIiOiAiXjAuNSIsCiAgICAgICAgInBocC1odHRwL21lc3NhZ2UtZmFjdG9yeSI6ICJeMS4xIiwKICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl44LjUuNTIgfHwgXjkuNi4zNCIsCiAgICAgICAgInBzci9sb2ciOiAiXjEuMSB8fCBeMi4wIHx8IF4zLjAiCiAgICB9LAogICAgInByb3ZpZGUiOiB7CiAgICAgICAgInBzci9odHRwLWNsaWVudC1pbXBsZW1lbnRhdGlvbiI6ICIxLjAiCiAgICB9LAogICAgInN1Z2dlc3QiOiB7CiAgICAgICAgImV4dC1jdXJsIjogIlJlcXVpcmVkIGZvciBDVVJMIGhhbmRsZXIgc3VwcG9ydCIsCiAgICAgICAgImV4dC1pbnRsIjogIlJlcXVpcmVkIGZvciBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZSAoSUROKSBzdXBwb3J0IiwKICAgICAgICAicHNyL2xvZyI6ICJSZXF1aXJlZCBmb3IgdXNpbmcgdGhlIExvZyBtaWRkbGV3YXJlIgogICAgfSwKICAgICJyZXBvc2l0b3JpZXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJwYWNrYWdlIiwKICAgICAgICAgICAgInBhY2thZ2UiOiB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJndXp6bGUvY2xpZW50LWludGVncmF0aW9uLXRlc3RzIiwKICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogInYzLjAuMiIsCiAgICAgICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICAgICAiZ3V6emxlaHR0cC9wc3I3IjogIl4xLjcgfHwgXjIuMCIsCiAgICAgICAgICAgICAgICAgICAgInBocCI6ICJeNy4yLjUgfHwgXjguMCIsCiAgICAgICAgICAgICAgICAgICAgInBocC1odHRwL21lc3NhZ2UiOiAiXjEuMCB8fCBeMi4wIiwKICAgICAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl43LjUuMjAgfHwgXjguNS44IHx8IF45LjMuMTEiLAogICAgICAgICAgICAgICAgICAgICJ0aDNuM3JkL2NhcnRlc2lhbi1wcm9kdWN0IjogIl4wLjMiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIkh0dHBcXENsaWVudFxcVGVzdHNcXCI6ICJzcmMvIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAiYmluIjogWwogICAgICAgICAgICAgICAgICAgICJiaW4vaHR0cF90ZXN0X3NlcnZlciIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9jb2RlbG9hZC5naXRodWIuY29tL2d1enpsZS9jbGllbnQtaW50ZWdyYXRpb24tdGVzdHMvemlwLzJjMDI1ODQ4NDE3YzExMzUwMzFmZGY5YzcyOGVlNTNkMGE3Y2VhZWUiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBdLAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkd1enpsZUh0dHBcXCI6ICJzcmMvIgogICAgICAgIH0sCiAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAic3JjL2Z1bmN0aW9uc19pbmNsdWRlLnBocCIKICAgICAgICBdCiAgICB9LAogICAgImF1dG9sb2FkLWRldiI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJHdXp6bGVIdHRwXFxUZXN0c1xcIjogInRlc3RzLyIKICAgICAgICB9CiAgICB9LAogICAgImNvbmZpZyI6IHsKICAgICAgICAiYWxsb3ctcGx1Z2lucyI6IHsKICAgICAgICAgICAgImJhbWFybmkvY29tcG9zZXItYmluLXBsdWdpbiI6IHRydWUKICAgICAgICB9LAogICAgICAgICJwcmVmZXJyZWQtaW5zdGFsbCI6ICJkaXN0IiwKICAgICAgICAic29ydC1wYWNrYWdlcyI6IHRydWUKICAgIH0sCiAgICAiZXh0cmEiOiB7CiAgICAgICAgImJhbWFybmktYmluIjogewogICAgICAgICAgICAiYmluLWxpbmtzIjogdHJ1ZSwKICAgICAgICAgICAgImZvcndhcmQtY29tbWFuZCI6IGZhbHNlCiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTEgTWljaGFlbCBEb3dsaW5nIDxtdGRvd2xpbmdAZ21haWwuY29tPgpDb3B5cmlnaHQgKGMpIDIwMTIgSmVyZW15IExpbmRibG9tIDxqZXJlbWVhbWlhQGdtYWlsLmNvbT4KQ29weXJpZ2h0IChjKSAyMDE0IEdyYWhhbSBDYW1wYmVsbCA8aGVsbG9AZ2pjYW1wYmVsbC5jby51az4KQ29weXJpZ2h0IChjKSAyMDE1IE3DoXJrIFPDoWdpLUthesOhciA8bWFyay5zYWdpa2F6YXJAZ21haWwuY29tPgpDb3B5cmlnaHQgKGMpIDIwMTUgVG9iaWFzIFNjaHVsdHplIDx3ZWJtYXN0ZXJAdHViby13b3JsZC5kZT4KQ29weXJpZ2h0IChjKSAyMDE2IFRvYmlhcyBOeWhvbG0gPHRvYmlhcy5ueWhvbG1AZ21haWwuY29tPgpDb3B5cmlnaHQgKGMpIDIwMTYgR2VvcmdlIE1wb25vcyA8Z21wb25vc0BnbWFpbC5jb20+CgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbApjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KVEhFIFNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/package-lock.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICJuYW1lIjogImd1enpsZSIsCiAgImxvY2tmaWxlVmVyc2lvbiI6IDMsCiAgInJlcXVpcmVzIjogdHJ1ZSwKICAicGFja2FnZXMiOiB7fQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IVtHdXp6bGVdKC5naXRodWIvbG9nby5wbmc/cmF3PXRydWUpCgojIEd1enpsZSwgUEhQIEhUVFAgY2xpZW50CgpbIVtMYXRlc3QgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvcmVsZWFzZS9ndXp6bGUvZ3V6emxlLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3JlbGVhc2VzKQpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL2d1enpsZS9ndXp6bGUvY2kueW1sP2xhYmVsPWNpJTIwYnVpbGQmc3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBQ0kpClshW1RvdGFsIERvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9wYWNrYWdpc3QvZHQvZ3V6emxlaHR0cC9ndXp6bGUuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2d1enpsZWh0dHAvZ3V6emxlKQoKR3V6emxlIGlzIGEgUEhQIEhUVFAgY2xpZW50IHRoYXQgbWFrZXMgaXQgZWFzeSB0byBzZW5kIEhUVFAgcmVxdWVzdHMgYW5kCnRyaXZpYWwgdG8gaW50ZWdyYXRlIHdpdGggd2ViIHNlcnZpY2VzLgoKLSBTaW1wbGUgaW50ZXJmYWNlIGZvciBidWlsZGluZyBxdWVyeSBzdHJpbmdzLCBQT1NUIHJlcXVlc3RzLCBzdHJlYW1pbmcgbGFyZ2UKICB1cGxvYWRzLCBzdHJlYW1pbmcgbGFyZ2UgZG93bmxvYWRzLCB1c2luZyBIVFRQIGNvb2tpZXMsIHVwbG9hZGluZyBKU09OIGRhdGEsCiAgZXRjLi4uCi0gQ2FuIHNlbmQgYm90aCBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIHJlcXVlc3RzIHVzaW5nIHRoZSBzYW1lIGludGVyZmFjZS4KLSBVc2VzIFBTUi03IGludGVyZmFjZXMgZm9yIHJlcXVlc3RzLCByZXNwb25zZXMsIGFuZCBzdHJlYW1zLiBUaGlzIGFsbG93cyB5b3UKICB0byB1dGlsaXplIG90aGVyIFBTUi03IGNvbXBhdGlibGUgbGlicmFyaWVzIHdpdGggR3V6emxlLgotIFN1cHBvcnRzIFBTUi0xOCBhbGxvd2luZyBpbnRlcm9wZXJhYmlsaXR5IGJldHdlZW4gb3RoZXIgUFNSLTE4IEhUVFAgQ2xpZW50cy4KLSBBYnN0cmFjdHMgYXdheSB0aGUgdW5kZXJseWluZyBIVFRQIHRyYW5zcG9ydCwgYWxsb3dpbmcgeW91IHRvIHdyaXRlCiAgZW52aXJvbm1lbnQgYW5kIHRyYW5zcG9ydCBhZ25vc3RpYyBjb2RlOyBpLmUuLCBubyBoYXJkIGRlcGVuZGVuY3kgb24gY1VSTCwKICBQSFAgc3RyZWFtcywgc29ja2V0cywgb3Igbm9uLWJsb2NraW5nIGV2ZW50IGxvb3BzLgotIE1pZGRsZXdhcmUgc3lzdGVtIGFsbG93cyB5b3UgdG8gYXVnbWVudCBhbmQgY29tcG9zZSBjbGllbnQgYmVoYXZpb3IuCgpgYGBwaHAKJGNsaWVudCA9IG5ldyBcR3V6emxlSHR0cFxDbGllbnQoKTsKJHJlc3BvbnNlID0gJGNsaWVudC0+cmVxdWVzdCgnR0VUJywgJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvZ3V6emxlL2d1enpsZScpOwoKZWNobyAkcmVzcG9uc2UtPmdldFN0YXR1c0NvZGUoKTsgLy8gMjAwCmVjaG8gJHJlc3BvbnNlLT5nZXRIZWFkZXJMaW5lKCdjb250ZW50LXR5cGUnKTsgLy8gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmOCcKZWNobyAkcmVzcG9uc2UtPmdldEJvZHkoKTsgLy8gJ3siaWQiOiAxNDIwMDUzLCAibmFtZSI6ICJndXp6bGUiLCAuLi59JwoKLy8gU2VuZCBhbiBhc3luY2hyb25vdXMgcmVxdWVzdC4KJHJlcXVlc3QgPSBuZXcgXEd1enpsZUh0dHBcUHNyN1xSZXF1ZXN0KCdHRVQnLCAnaHR0cDovL2h0dHBiaW4ub3JnJyk7CiRwcm9taXNlID0gJGNsaWVudC0+c2VuZEFzeW5jKCRyZXF1ZXN0KS0+dGhlbihmdW5jdGlvbiAoJHJlc3BvbnNlKSB7CiAgICBlY2hvICdJIGNvbXBsZXRlZCEgJyAuICRyZXNwb25zZS0+Z2V0Qm9keSgpOwp9KTsKCiRwcm9taXNlLT53YWl0KCk7CmBgYAoKIyMgSGVscCBhbmQgZG9jcwoKV2UgdXNlIEdpdEh1YiBpc3N1ZXMgb25seSB0byBkaXNjdXNzIGJ1Z3MgYW5kIG5ldyBmZWF0dXJlcy4gRm9yIHN1cHBvcnQgcGxlYXNlIHJlZmVyIHRvOgoKLSBbRG9jdW1lbnRhdGlvbl0oZG9jcy9pbmRleC5tZCkKLSBbU3RhY2sgT3ZlcmZsb3ddKGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zL3RhZ2dlZC9ndXp6bGUpCi0gWyNndXp6bGVdKGh0dHBzOi8vYXBwLnNsYWNrLmNvbS9jbGllbnQvVDBEMlM5SkNUL0NFNlVBQUtMNCkgY2hhbm5lbCBvbiBbUEhQLUhUVFAgU2xhY2tdKGh0dHBzOi8vc2xhY2suaHR0cGx1Zy5pby8pCi0gW0dpdHRlcl0oaHR0cHM6Ly9naXR0ZXIuaW0vZ3V6emxlL2d1enpsZSkKCgojIyBJbnN0YWxsaW5nIEd1enpsZQoKVGhlIHJlY29tbWVuZGVkIHdheSB0byBpbnN0YWxsIEd1enpsZSBpcyB0aHJvdWdoCltDb21wb3Nlcl0oaHR0cHM6Ly9nZXRjb21wb3Nlci5vcmcvKS4KCmBgYGJhc2gKY29tcG9zZXIgcmVxdWlyZSBndXp6bGVodHRwL2d1enpsZQpgYGAKCgojIyBWZXJzaW9uIEd1aWRhbmNlCgp8IFZlcnNpb24gfCBTdGF0dXMgICAgICAgICAgICAgIHwgUGFja2FnaXN0ICAgICAgICAgICB8IE5hbWVzcGFjZSAgICB8IFJlcG8gICAgICAgICAgICAgICAgfCBEb2NzICAgICAgICAgICAgICAgIHwgUFNSLTcgfCBQSFAgVmVyc2lvbiAgfAp8LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tfAp8IDMueCAgICAgfCBFT0wgKDIwMTYtMTAtMzEpICAgIHwgYGd1enpsZS9ndXp6bGVgICAgICB8IGBHdXp6bGVgICAgICB8IFt2M11bZ3V6emxlLTMtcmVwb10gfCBbdjNdW2d1enpsZS0zLWRvY3NdIHwgTm8gICAgfCA+PTUuMy4zLDw3LjAgfAp8IDQueCAgICAgfCBFT0wgKDIwMTYtMTAtMzEpICAgIHwgYGd1enpsZWh0dHAvZ3V6emxlYCB8IGBHdXp6bGVIdHRwYCB8IFt2NF1bZ3V6emxlLTQtcmVwb10gfCBOL0EgICAgICAgICAgICAgICAgIHwgTm8gICAgfCA+PTUuNCw8Ny4wICAgfAp8IDUueCAgICAgfCBFT0wgKDIwMTktMTAtMzEpICAgIHwgYGd1enpsZWh0dHAvZ3V6emxlYCB8IGBHdXp6bGVIdHRwYCB8IFt2NV1bZ3V6emxlLTUtcmVwb10gfCBbdjVdW2d1enpsZS01LWRvY3NdIHwgTm8gICAgfCA+PTUuNCw8Ny40ICAgfAp8IDYueCAgICAgfCBFT0wgKDIwMjMtMTAtMzEpICAgIHwgYGd1enpsZWh0dHAvZ3V6emxlYCB8IGBHdXp6bGVIdHRwYCB8IFt2Nl1bZ3V6emxlLTYtcmVwb10gfCBbdjZdW2d1enpsZS02LWRvY3NdIHwgWWVzICAgfCA+PTUuNSw8OC4wICAgfAp8IDcueCAgICAgfCBMYXRlc3QgICAgICAgICAgICAgIHwgYGd1enpsZWh0dHAvZ3V6emxlYCB8IGBHdXp6bGVIdHRwYCB8IFt2N11bZ3V6emxlLTctcmVwb10gfCBbdjddW2d1enpsZS03LWRvY3NdIHwgWWVzICAgfCA+PTcuMi41LDw4LjYgfAoKW2d1enpsZS0zLXJlcG9dOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZTMKW2d1enpsZS00LXJlcG9dOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS90cmVlLzQueApbZ3V6emxlLTUtcmVwb106IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3RyZWUvNS4zCltndXp6bGUtNi1yZXBvXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvdHJlZS82LjUKW2d1enpsZS03LXJlcG9dOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS90cmVlLzcuMTIKW2d1enpsZS0zLWRvY3NdOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZTMvdHJlZS9tYXN0ZXIvZG9jcwpbZ3V6emxlLTUtZG9jc106IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3RyZWUvNS4zL2RvY3MKW2d1enpsZS02LWRvY3NdOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS90cmVlLzYuNS9kb2NzCltndXp6bGUtNy1kb2NzXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvYmxvYi83LjEyL2RvY3MvaW5kZXgubWQKCgojIyBTZWN1cml0eQoKSWYgeW91IGRpc2NvdmVyIGEgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhpcyBwYWNrYWdlLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbCB0byBzZWN1cml0eUB0aWRlbGlmdC5jb20uIEFsbCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgd2lsbCBiZSBwcm9tcHRseSBhZGRyZXNzZWQuIFBsZWFzZSBkbyBub3QgZGlzY2xvc2Ugc2VjdXJpdHktcmVsYXRlZCBpc3N1ZXMgcHVibGljbHkgdW50aWwgYSBmaXggaGFzIGJlZW4gYW5ub3VuY2VkLiBQbGVhc2Ugc2VlIFtTZWN1cml0eSBQb2xpY3ldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3NlY3VyaXR5L3BvbGljeSkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgojIyBMaWNlbnNlCgpHdXp6bGUgaXMgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLiBQbGVhc2Ugc2VlIFtMaWNlbnNlIEZpbGVdKExJQ0VOU0UpIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKIyMgRm9yIEVudGVycHJpc2UKCkF2YWlsYWJsZSBhcyBwYXJ0IG9mIHRoZSBUaWRlbGlmdCBTdWJzY3JpcHRpb24KClRoZSBtYWludGFpbmVycyBvZiBHdXp6bGUgYW5kIHRob3VzYW5kcyBvZiBvdGhlciBwYWNrYWdlcyBhcmUgd29ya2luZyB3aXRoIFRpZGVsaWZ0IHRvIGRlbGl2ZXIgY29tbWVyY2lhbCBzdXBwb3J0IGFuZCBtYWludGVuYW5jZSBmb3IgdGhlIG9wZW4gc291cmNlIGRlcGVuZGVuY2llcyB5b3UgdXNlIHRvIGJ1aWxkIHlvdXIgYXBwbGljYXRpb25zLiBTYXZlIHRpbWUsIHJlZHVjZSByaXNrLCBhbmQgaW1wcm92ZSBjb2RlIGhlYWx0aCwgd2hpbGUgcGF5aW5nIHRoZSBtYWludGFpbmVycyBvZiB0aGUgZXhhY3QgZGVwZW5kZW5jaWVzIHlvdSB1c2UuIFtMZWFybiBtb3JlLl0oaHR0cHM6Ly90aWRlbGlmdC5jb20vc3Vic2NyaXB0aW9uL3BrZy9wYWNrYWdpc3QtZ3V6emxlaHR0cC1ndXp6bGU/dXRtX3NvdXJjZT1wYWNrYWdpc3QtZ3V6emxlaHR0cC1ndXp6bGUmdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249ZW50ZXJwcmlzZSZ1dG1fdGVybT1yZXBvKQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/BodySummarizer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcTWVzc2FnZUludGVyZmFjZTsKCmZpbmFsIGNsYXNzIEJvZHlTdW1tYXJpemVyIGltcGxlbWVudHMgQm9keVN1bW1hcml6ZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIGludHxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJHRydW5jYXRlQXQ7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KD9pbnQgJHRydW5jYXRlQXQgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT50cnVuY2F0ZUF0ID0gJHRydW5jYXRlQXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3VtbWFyaXplZCBtZXNzYWdlIGJvZHkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzdW1tYXJpemUoTWVzc2FnZUludGVyZmFjZSAkbWVzc2FnZSk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRydW5jYXRlQXQgPT09IG51bGwKICAgICAgICAgICAgPyBQc3I3XE1lc3NhZ2U6OmJvZHlTdW1tYXJ5KCRtZXNzYWdlKQogICAgICAgICAgICA6IFBzcjdcTWVzc2FnZTo6Ym9keVN1bW1hcnkoJG1lc3NhZ2UsICR0aGlzLT50cnVuY2F0ZUF0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcTWVzc2FnZUludGVyZmFjZTsKCmludGVyZmFjZSBCb2R5U3VtbWFyaXplckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdW1tYXJpemVkIG1lc3NhZ2UgYm9keS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHN1bW1hcml6ZShNZXNzYWdlSW50ZXJmYWNlICRtZXNzYWdlKTogP3N0cmluZzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Client.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcQ29va2llXENvb2tpZUphcjsKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXEd1enpsZUV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcSGFuZGxlclxDdXJsU2hhcmVIYW5kbGVTdGF0ZTsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZSBhcyBQOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxTdHJlYW1JbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCi8qKgogKiBAZmluYWwKICovCmNsYXNzIENsaWVudCBpbXBsZW1lbnRzIENsaWVudEludGVyZmFjZSwgXFBzclxIdHRwXENsaWVudFxDbGllbnRJbnRlcmZhY2UKewogICAgdXNlIENsaWVudFRyYWl0OwoKICAgIC8qKgogICAgICogQHZhciBhcnJheSBEZWZhdWx0IHJlcXVlc3Qgb3B0aW9ucwogICAgICovCiAgICBwcml2YXRlICRjb25maWc7CgogICAgLyoqCiAgICAgKiBDbGllbnRzIGFjY2VwdCBhbiBhcnJheSBvZiBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLgogICAgICoKICAgICAqIEhlcmUncyBhbiBleGFtcGxlIG9mIGNyZWF0aW5nIGEgY2xpZW50IHVzaW5nIGEgYmFzZV91cmkgYW5kIGFuIGFycmF5IG9mCiAgICAgKiBkZWZhdWx0IHJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseSB0byBlYWNoIHJlcXVlc3Q6CiAgICAgKgogICAgICogICAgICRjbGllbnQgPSBuZXcgQ2xpZW50KFsKICAgICAqICAgICAgICAgJ2Jhc2VfdXJpJyAgICAgICAgPT4gJ2h0dHA6Ly93d3cuZm9vLmNvbS8xLjAvJywKICAgICAqICAgICAgICAgJ3RpbWVvdXQnICAgICAgICAgPT4gMCwKICAgICAqICAgICAgICAgJ2FsbG93X3JlZGlyZWN0cycgPT4gZmFsc2UsCiAgICAgKiAgICAgICAgICdwcm94eScgICAgICAgICAgID0+ICcxOTIuMTY4LjE2LjE6MTAnCiAgICAgKiAgICAgXSk7CiAgICAgKgogICAgICogQ2xpZW50IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgaW5jbHVkZSB0aGUgZm9sbG93aW5nIG9wdGlvbnM6CiAgICAgKgogICAgICogLSBoYW5kbGVyOiAoY2FsbGFibGUpIEZ1bmN0aW9uIHRoYXQgdHJhbnNmZXJzIEhUVFAgcmVxdWVzdHMgb3ZlciB0aGUKICAgICAqICAgd2lyZS4gVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGEgUHNyN1xIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZQogICAgICogICBhbmQgYXJyYXkgb2YgdHJhbnNmZXIgb3B0aW9ucywgYW5kIG11c3QgcmV0dXJuIGEKICAgICAqICAgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2UgdGhhdCBpcyBmdWxmaWxsZWQgd2l0aCBhCiAgICAgKiAgIFBzcjdcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlIG9uIHN1Y2Nlc3MuCiAgICAgKiAgIElmIG5vIGhhbmRsZXIgaXMgcHJvdmlkZWQsIGEgZGVmYXVsdCBoYW5kbGVyIHdpbGwgYmUgY3JlYXRlZAogICAgICogICB0aGF0IGVuYWJsZXMgYWxsIG9mIHRoZSByZXF1ZXN0IG9wdGlvbnMgYmVsb3cgYnkgYXR0YWNoaW5nIGFsbCBvZiB0aGUKICAgICAqICAgZGVmYXVsdCBtaWRkbGV3YXJlIHRvIHRoZSBoYW5kbGVyLgogICAgICogLSBiYXNlX3VyaTogKHN0cmluZ3xVcmlJbnRlcmZhY2UpIEJhc2UgVVJJIG9mIHRoZSBjbGllbnQgdGhhdCBpcyBtZXJnZWQKICAgICAqICAgaW50byByZWxhdGl2ZSBVUklzLiBDYW4gYmUgYSBzdHJpbmcgb3IgaW5zdGFuY2Ugb2YgVXJpSW50ZXJmYWNlLgogICAgICogLSB0cmFuc3BvcnRfc2hhcmluZzogKHN0cmluZ3xudWxsKSBUcmFuc3BvcnQgc2hhcmluZyBtb2RlIGZvciB0aGUKICAgICAqICAgZGVmYXVsdCBoYW5kbGVyLiBBY2NlcHRzIFRyYW5zcG9ydFNoYXJpbmc6Oiogb3IgbnVsbC4gRGVmYXVsdHMgdG8gbnVsbC4KICAgICAqIC0gKio6IGFueSByZXF1ZXN0IG9wdGlvbgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkY29uZmlnIENsaWVudCBjb25maWd1cmF0aW9uIHNldHRpbmdzLgogICAgICoKICAgICAqIEBzZWUgUmVxdWVzdE9wdGlvbnMgZm9yIGEgbGlzdCBvZiBhdmFpbGFibGUgcmVxdWVzdCBvcHRpb25zLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGNvbmZpZyA9IFtdKQogICAgewogICAgICAgICR0cmFuc3BvcnRTaGFyaW5nID0gXGFycmF5X2tleV9leGlzdHMoJ3RyYW5zcG9ydF9zaGFyaW5nJywgJGNvbmZpZykgPyAkY29uZmlnWyd0cmFuc3BvcnRfc2hhcmluZyddIDogbnVsbDsKICAgICAgICAkdHJhbnNwb3J0U2hhcmluZ01vZGUgPSBDdXJsU2hhcmVIYW5kbGVTdGF0ZTo6bm9ybWFsaXplTW9kZSgkdHJhbnNwb3J0U2hhcmluZywgJ3RyYW5zcG9ydF9zaGFyaW5nJyk7CiAgICAgICAgdW5zZXQoJGNvbmZpZ1sndHJhbnNwb3J0X3NoYXJpbmcnXSk7CgogICAgICAgIGlmICghaXNzZXQoJGNvbmZpZ1snaGFuZGxlciddKSkgewogICAgICAgICAgICAkY29uZmlnWydoYW5kbGVyJ10gPSAkdHJhbnNwb3J0U2hhcmluZ01vZGUgPT09IFRyYW5zcG9ydFNoYXJpbmc6Ok5PTkUKICAgICAgICAgICAgICAgID8gSGFuZGxlclN0YWNrOjpjcmVhdGUoKQogICAgICAgICAgICAgICAgOiBIYW5kbGVyU3RhY2s6OmNyZWF0ZShVdGlsczo6Y2hvb3NlSGFuZGxlcihbJ3RyYW5zcG9ydF9zaGFyaW5nJyA9PiAkdHJhbnNwb3J0U2hhcmluZ01vZGVdKSk7CiAgICAgICAgfSBlbHNlaWYgKCFcaXNfY2FsbGFibGUoJGNvbmZpZ1snaGFuZGxlciddKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdoYW5kbGVyIG11c3QgYmUgYSBjYWxsYWJsZScpOwogICAgICAgIH0gZWxzZWlmICgkdHJhbnNwb3J0U2hhcmluZ01vZGUgPT09IFRyYW5zcG9ydFNoYXJpbmc6OkhBTkRMRVJfUkVRVUlSRSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgInRyYW5zcG9ydF9zaGFyaW5nIiBjbGllbnQgb3B0aW9uIGNhbiBvbmx5IHJlcXVpcmUgc2hhcmluZyB3aGVuIEd1enpsZSBjcmVhdGVzIHRoZSBkZWZhdWx0IGhhbmRsZXIuIENvbmZpZ3VyZSB0aGUgInRyYW5zcG9ydF9zaGFyaW5nIiBvcHRpb24gb24gQ3VybEhhbmRsZXIgb3IgQ3VybE11bHRpSGFuZGxlciB3aGVuIHByb3ZpZGluZyBhIGN1c3RvbSBjVVJMIGhhbmRsZXIuJyk7CiAgICAgICAgfQoKICAgICAgICAvLyBDb252ZXJ0IHRoZSBiYXNlX3VyaSB0byBhIFVyaUludGVyZmFjZQogICAgICAgIGlmIChpc3NldCgkY29uZmlnWydiYXNlX3VyaSddKSkgewogICAgICAgICAgICAkY29uZmlnWydiYXNlX3VyaSddID0gUHNyN1xVdGlsczo6dXJpRm9yKCRjb25maWdbJ2Jhc2VfdXJpJ10pOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmNvbmZpZ3VyZURlZmF1bHRzKCRjb25maWcpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkbWV0aG9kCiAgICAgKiBAcGFyYW0gYXJyYXkgICRhcmdzCiAgICAgKgogICAgICogQHJldHVybiBQcm9taXNlSW50ZXJmYWNlfFJlc3BvbnNlSW50ZXJmYWNlCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgQ2xpZW50OjpfX2NhbGwgd2lsbCBiZSByZW1vdmVkIGluIGd1enpsZWh0dHAvZ3V6emxlOjguMC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY2FsbCgkbWV0aG9kLCAkYXJncykKICAgIHsKICAgICAgICBpZiAoXGNvdW50KCRhcmdzKSA8IDEpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignTWFnaWMgcmVxdWVzdCBtZXRob2RzIHJlcXVpcmUgYSBVUkkgYW5kIG9wdGlvbmFsIG9wdGlvbnMgYXJyYXknKTsKICAgICAgICB9CgogICAgICAgICR1cmkgPSAkYXJnc1swXTsKICAgICAgICAkb3B0cyA9ICRhcmdzWzFdID8/IFtdOwoKICAgICAgICAkaXNBc3luYyA9IFxzdWJzdHIoJG1ldGhvZCwgLTUpID09PSAnQXN5bmMnOwogICAgICAgICRtZXRob2QgPSAkaXNBc3luYyA/IFxzdWJzdHIoJG1ldGhvZCwgMCwgLTUpIDogJG1ldGhvZDsKICAgICAgICAkbWV0aG9kID0gXHN0cnRvdXBwZXIoJG1ldGhvZCk7CgogICAgICAgIHJldHVybiAkaXNBc3luYwogICAgICAgICAgICA/ICR0aGlzLT5yZXF1ZXN0QXN5bmMoJG1ldGhvZCwgJHVyaSwgJG9wdHMpCiAgICAgICAgICAgIDogJHRoaXMtPnJlcXVlc3QoJG1ldGhvZCwgJHVyaSwgJG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQXN5bmNocm9ub3VzbHkgc2VuZCBhbiBIVFRQIHJlcXVlc3QuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRvcHRpb25zIFJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseSB0byB0aGUgZ2l2ZW4KICAgICAqICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0IGFuZCB0byB0aGUgdHJhbnNmZXIuIFNlZSB7QHNlZSBSZXF1ZXN0T3B0aW9uc30uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZW5kQXN5bmMoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMgPSBbXSk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAvLyBNZXJnZSB0aGUgYmFzZSBVUkkgaW50byB0aGUgcmVxdWVzdCBVUkkgaWYgbmVlZGVkLgogICAgICAgICRvcHRpb25zID0gJHRoaXMtPnByZXBhcmVEZWZhdWx0cygkb3B0aW9ucyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+dHJhbnNmZXIoCiAgICAgICAgICAgICRyZXF1ZXN0LT53aXRoVXJpKCR0aGlzLT5idWlsZFVyaSgkcmVxdWVzdC0+Z2V0VXJpKCksICRvcHRpb25zKSwgJHJlcXVlc3QtPmhhc0hlYWRlcignSG9zdCcpKSwKICAgICAgICAgICAgJG9wdGlvbnMKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogU2VuZCBhbiBIVFRQIHJlcXVlc3QuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRvcHRpb25zIFJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseSB0byB0aGUgZ2l2ZW4KICAgICAqICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0IGFuZCB0byB0aGUgdHJhbnNmZXIuIFNlZSB7QHNlZSBSZXF1ZXN0T3B0aW9uc30uCiAgICAgKgogICAgICogQHRocm93cyBHdXp6bGVFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlbmQoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMgPSBbXSk6IFJlc3BvbnNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJG9wdGlvbnNbUmVxdWVzdE9wdGlvbnM6OlNZTkNIUk9OT1VTXSA9IHRydWU7CgogICAgICAgIHJldHVybiAkdGhpcy0+c2VuZEFzeW5jKCRyZXF1ZXN0LCAkb3B0aW9ucyktPndhaXQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBIdHRwQ2xpZW50IFBTUiAoUFNSLTE4KSBzcGVjaWZ5IHRoaXMgbWV0aG9kLgogICAgICoKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlbmRSZXF1ZXN0KFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QpOiBSZXNwb25zZUludGVyZmFjZQogICAgewogICAgICAgICRvcHRpb25zW1JlcXVlc3RPcHRpb25zOjpTWU5DSFJPTk9VU10gPSB0cnVlOwogICAgICAgICRvcHRpb25zW1JlcXVlc3RPcHRpb25zOjpBTExPV19SRURJUkVDVFNdID0gZmFsc2U7CiAgICAgICAgJG9wdGlvbnNbUmVxdWVzdE9wdGlvbnM6OkhUVFBfRVJST1JTXSA9IGZhbHNlOwoKICAgICAgICByZXR1cm4gJHRoaXMtPnNlbmRBc3luYygkcmVxdWVzdCwgJG9wdGlvbnMpLT53YWl0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHNlbmQgYW4gYXN5bmNocm9ub3VzIEhUVFAgcmVxdWVzdC4KICAgICAqCiAgICAgKiBVc2UgYW4gYWJzb2x1dGUgcGF0aCB0byBvdmVycmlkZSB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQsIG9yIGEKICAgICAqIHJlbGF0aXZlIHBhdGggdG8gYXBwZW5kIHRvIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudC4gVGhlIFVSTCBjYW4KICAgICAqIGNvbnRhaW4gdGhlIHF1ZXJ5IHN0cmluZyBhcyB3ZWxsLiBVc2UgYW4gYXJyYXkgdG8gcHJvdmlkZSBhIFVSTAogICAgICogdGVtcGxhdGUgYW5kIGFkZGl0aW9uYWwgdmFyaWFibGVzIHRvIHVzZSBpbiB0aGUgVVJMIHRlbXBsYXRlIGV4cGFuc2lvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAkbWV0aG9kICBIVFRQIG1ldGhvZAogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuIFNlZSB7QHNlZSBSZXF1ZXN0T3B0aW9uc30uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZXF1ZXN0QXN5bmMoc3RyaW5nICRtZXRob2QsICR1cmkgPSAnJywgYXJyYXkgJG9wdGlvbnMgPSBbXSk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkbm9ybWFsaXplZE1ldGhvZCA9IFxzdHJ0b3VwcGVyKCRtZXRob2QpOwogICAgICAgIGlmICgkbWV0aG9kICE9PSAkbm9ybWFsaXplZE1ldGhvZCkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL2d1enpsZScsCiAgICAgICAgICAgICAgICAnNy4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyBhIG5vbi11cHBlcmNhc2UgSFRUUCBtZXRob2QgdG8gQ2xpZW50OjpyZXF1ZXN0QXN5bmMoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL2d1enpsZSA4LjAgd2lsbCBwcmVzZXJ2ZSBIVFRQIG1ldGhvZCBjYXNpbmcuIFBhc3MgYW4gdXBwZXJjYXNlIG1ldGhvZCBleHBsaWNpdGx5IGlmIHVwcGVyY2FzZSBpcyByZXF1aXJlZC4nCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRtZXRob2QgPSAkbm9ybWFsaXplZE1ldGhvZDsKICAgICAgICB9CgogICAgICAgICRvcHRpb25zID0gJHRoaXMtPnByZXBhcmVEZWZhdWx0cygkb3B0aW9ucyk7CiAgICAgICAgLy8gUmVtb3ZlIHJlcXVlc3QgbW9kaWZ5aW5nIHBhcmFtZXRlciBiZWNhdXNlIGl0IGNhbiBiZSBkb25lIHVwLWZyb250LgogICAgICAgICRoZWFkZXJzID0gJG9wdGlvbnNbJ2hlYWRlcnMnXSA/PyBbXTsKICAgICAgICAkZHJvcHBlZEhlYWRlck5hbWVzID0gc2VsZjo6Y2FzdERlcHJlY2F0ZWRIZWFkZXJPcHRpb25WYWx1ZXMoJGhlYWRlcnMpOwogICAgICAgIGlmICgkZHJvcHBlZEhlYWRlck5hbWVzICE9PSBbXSAmJiBpc3NldCgkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ10pKSB7CiAgICAgICAgICAgICRvcHRpb25zWydfY29uZGl0aW9uYWwnXSA9IFBzcjdcVXRpbHM6OmNhc2VsZXNzUmVtb3ZlKCRkcm9wcGVkSGVhZGVyTmFtZXMsICRvcHRpb25zWydfY29uZGl0aW9uYWwnXSk7CiAgICAgICAgfQogICAgICAgICRib2R5ID0gJG9wdGlvbnNbJ2JvZHknXSA/PyBudWxsOwogICAgICAgICR2ZXJzaW9uID0gc2VsZjo6bm9ybWFsaXplUHJvdG9jb2xWZXJzaW9uKCRvcHRpb25zWyd2ZXJzaW9uJ10gPz8gJzEuMScpOwogICAgICAgIC8vIE1lcmdlIHRoZSBVUkkgaW50byB0aGUgYmFzZSBVUkkuCiAgICAgICAgJHVyaSA9ICR0aGlzLT5idWlsZFVyaShQc3I3XFV0aWxzOjp1cmlGb3IoJHVyaSksICRvcHRpb25zKTsKICAgICAgICBpZiAoXGlzX2FycmF5KCRib2R5KSkgewogICAgICAgICAgICB0aHJvdyAkdGhpcy0+aW52YWxpZEJvZHkoKTsKICAgICAgICB9CiAgICAgICAgJGJvZHkgPSBzZWxmOjpjcmVhdGVCb2R5U3RyZWFtKCRib2R5KTsKICAgICAgICAkcmVxdWVzdCA9IG5ldyBQc3I3XFJlcXVlc3QoJG1ldGhvZCwgJHVyaSwgJGhlYWRlcnMsICRib2R5LCAkdmVyc2lvbik7CiAgICAgICAgLy8gUmVtb3ZlIHRoZSBvcHRpb24gc28gdGhhdCB0aGV5IGFyZSBub3QgZG91Ymx5LWFwcGxpZWQuCiAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ2hlYWRlcnMnXSwgJG9wdGlvbnNbJ2JvZHknXSwgJG9wdGlvbnNbJ3ZlcnNpb24nXSk7CgogICAgICAgIHJldHVybiAkdGhpcy0+dHJhbnNmZXIoJHJlcXVlc3QsICRvcHRpb25zKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBIVFRQIHJlcXVlc3QuCiAgICAgKgogICAgICogVXNlIGFuIGFic29sdXRlIHBhdGggdG8gb3ZlcnJpZGUgdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LCBvciBhCiAgICAgKiByZWxhdGl2ZSBwYXRoIHRvIGFwcGVuZCB0byB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQuIFRoZSBVUkwgY2FuCiAgICAgKiBjb250YWluIHRoZSBxdWVyeSBzdHJpbmcgYXMgd2VsbC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAkbWV0aG9kICBIVFRQIG1ldGhvZC4KICAgICAqIEBwYXJhbSBzdHJpbmd8VXJpSW50ZXJmYWNlICR1cmkgICAgIFVSSSBvYmplY3Qgb3Igc3RyaW5nLgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zIHRvIGFwcGx5LiBTZWUge0BzZWUgUmVxdWVzdE9wdGlvbnN9LgogICAgICoKICAgICAqIEB0aHJvd3MgR3V6emxlRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZXF1ZXN0KHN0cmluZyAkbWV0aG9kLCAkdXJpID0gJycsIGFycmF5ICRvcHRpb25zID0gW10pOiBSZXNwb25zZUludGVyZmFjZQogICAgewogICAgICAgICRub3JtYWxpemVkTWV0aG9kID0gXHN0cnRvdXBwZXIoJG1ldGhvZCk7CiAgICAgICAgaWYgKCRtZXRob2QgIT09ICRub3JtYWxpemVkTWV0aG9kKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvZ3V6emxlJywKICAgICAgICAgICAgICAgICc3LjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nIGEgbm9uLXVwcGVyY2FzZSBIVFRQIG1ldGhvZCB0byBDbGllbnQ6OnJlcXVlc3QoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL2d1enpsZSA4LjAgd2lsbCBwcmVzZXJ2ZSBIVFRQIG1ldGhvZCBjYXNpbmcuIFBhc3MgYW4gdXBwZXJjYXNlIG1ldGhvZCBleHBsaWNpdGx5IGlmIHVwcGVyY2FzZSBpcyByZXF1aXJlZC4nCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRtZXRob2QgPSAkbm9ybWFsaXplZE1ldGhvZDsKICAgICAgICB9CgogICAgICAgICRvcHRpb25zW1JlcXVlc3RPcHRpb25zOjpTWU5DSFJPTk9VU10gPSB0cnVlOwoKICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3RBc3luYygkbWV0aG9kLCAkdXJpLCAkb3B0aW9ucyktPndhaXQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBhIGNsaWVudCBjb25maWd1cmF0aW9uIG9wdGlvbi4KICAgICAqCiAgICAgKiBUaGVzZSBvcHRpb25zIGluY2x1ZGUgZGVmYXVsdCByZXF1ZXN0IG9wdGlvbnMgb2YgdGhlIGNsaWVudCwgYSAiaGFuZGxlciIKICAgICAqIChpZiB1dGlsaXplZCBieSB0aGUgY29uY3JldGUgY2xpZW50KSwgYW5kIGEgImJhc2VfdXJpIiBpZiB1dGlsaXplZCBieQogICAgICogdGhlIGNvbmNyZXRlIGNsaWVudC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJG9wdGlvbiBUaGUgY29uZmlnIG9wdGlvbiB0byByZXRyaWV2ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb25maWcoP3N0cmluZyAkb3B0aW9uID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gJG9wdGlvbiA9PT0gbnVsbAogICAgICAgICAgICA/ICR0aGlzLT5jb25maWcKICAgICAgICAgICAgOiAoJHRoaXMtPmNvbmZpZ1skb3B0aW9uXSA/PyBudWxsKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGJ1aWxkVXJpKFVyaUludGVyZmFjZSAkdXJpLCBhcnJheSAkY29uZmlnKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRjb25maWdbJ2Jhc2VfdXJpJ10pKSB7CiAgICAgICAgICAgICR1cmkgPSBQc3I3XFVyaVJlc29sdmVyOjpyZXNvbHZlKFBzcjdcVXRpbHM6OnVyaUZvcigkY29uZmlnWydiYXNlX3VyaSddKSwgJHVyaSk7CiAgICAgICAgfQoKICAgICAgICAkaWRuT3B0aW9ucyA9IFV0aWxzOjpub3JtYWxpemVJZG5Db252ZXJzaW9uT3B0aW9uKCRjb25maWdbJ2lkbl9jb252ZXJzaW9uJ10gPz8gbnVsbCk7CiAgICAgICAgaWYgKCRpZG5PcHRpb25zICE9PSBudWxsKSB7CiAgICAgICAgICAgICR1cmkgPSBVdGlsczo6aWRuVXJpQ29udmVydCgkdXJpLCAkaWRuT3B0aW9ucyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHVyaS0+Z2V0U2NoZW1lKCkgPT09ICcnICYmICR1cmktPmdldEhvc3QoKSAhPT0gJycgPyAkdXJpLT53aXRoU2NoZW1lKCdodHRwJykgOiAkdXJpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uZmlndXJlcyB0aGUgZGVmYXVsdCBvcHRpb25zIGZvciBhIGNsaWVudC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjb25maWd1cmVEZWZhdWx0cyhhcnJheSAkY29uZmlnKTogdm9pZAogICAgewogICAgICAgICRkZWZhdWx0cyA9IFsKICAgICAgICAgICAgJ2FsbG93X3JlZGlyZWN0cycgPT4gUmVkaXJlY3RNaWRkbGV3YXJlOjokZGVmYXVsdFNldHRpbmdzLAogICAgICAgICAgICAnaHR0cF9lcnJvcnMnID0+IHRydWUsCiAgICAgICAgICAgICdkZWNvZGVfY29udGVudCcgPT4gdHJ1ZSwKICAgICAgICAgICAgJ3ZlcmlmeScgPT4gdHJ1ZSwKICAgICAgICAgICAgJ2Nvb2tpZXMnID0+IGZhbHNlLAogICAgICAgICAgICAnaWRuX2NvbnZlcnNpb24nID0+IGZhbHNlLAogICAgICAgICAgICAncHJvdG9jb2xzJyA9PiBbJ2h0dHAnLCAnaHR0cHMnXSwKICAgICAgICBdOwoKICAgICAgICAvLyBVc2UgdGhlIHN0YW5kYXJkIExpbnV4IEhUVFBfUFJPWFkgYW5kIEhUVFBTX1BST1hZIGlmIHNldC4KCiAgICAgICAgLy8gV2UgY2FuIG9ubHkgdHJ1c3QgdGhlIEhUVFBfUFJPWFkgZW52aXJvbm1lbnQgdmFyaWFibGUgaW4gYSBDTEkKICAgICAgICAvLyBwcm9jZXNzIGR1ZSB0byB0aGUgZmFjdCB0aGF0IFBIUCBoYXMgbm8gcmVsaWFibGUgbWVjaGFuaXNtIHRvCiAgICAgICAgLy8gZ2V0IGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IHN0YXJ0IHdpdGggIkhUVFBfIi4KICAgICAgICBpZiAoXFBIUF9TQVBJID09PSAnY2xpJyAmJiAoJHByb3h5ID0gVXRpbHM6OmdldGVudignSFRUUF9QUk9YWScpKSkgewogICAgICAgICAgICAkZGVmYXVsdHNbJ3Byb3h5J11bJ2h0dHAnXSA9ICRwcm94eTsKICAgICAgICB9CgogICAgICAgIGlmICgkcHJveHkgPSBVdGlsczo6Z2V0ZW52KCdIVFRQU19QUk9YWScpKSB7CiAgICAgICAgICAgICRkZWZhdWx0c1sncHJveHknXVsnaHR0cHMnXSA9ICRwcm94eTsKICAgICAgICB9CgogICAgICAgIGlmICgkbm9Qcm94eSA9IFV0aWxzOjpnZXRlbnYoJ05PX1BST1hZJykpIHsKICAgICAgICAgICAgJGNsZWFuZWROb1Byb3h5ID0gXHN0cl9yZXBsYWNlKCcgJywgJycsICRub1Byb3h5KTsKICAgICAgICAgICAgJGRlZmF1bHRzWydwcm94eSddWydubyddID0gXGV4cGxvZGUoJywnLCAkY2xlYW5lZE5vUHJveHkpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmNvbmZpZyA9ICRjb25maWcgKyAkZGVmYXVsdHM7CgogICAgICAgIGlmICghZW1wdHkoJGNvbmZpZ1snY29va2llcyddKSAmJiAkY29uZmlnWydjb29raWVzJ10gPT09IHRydWUpIHsKICAgICAgICAgICAgJHRoaXMtPmNvbmZpZ1snY29va2llcyddID0gbmV3IENvb2tpZUphcigpOwogICAgICAgIH0KCiAgICAgICAgLy8gQWRkIHRoZSBkZWZhdWx0IHVzZXItYWdlbnQgaGVhZGVyLgogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmNvbmZpZ1snaGVhZGVycyddKSkgewogICAgICAgICAgICAkdGhpcy0+Y29uZmlnWydoZWFkZXJzJ10gPSBbJ1VzZXItQWdlbnQnID0+IFV0aWxzOjpkZWZhdWx0VXNlckFnZW50KCldOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIEFkZCB0aGUgVXNlci1BZ2VudCBoZWFkZXIgaWYgb25lIHdhcyBub3QgYWxyZWFkeSBzZXQuCiAgICAgICAgICAgICRoYXNVc2VyQWdlbnQgPSBmYWxzZTsKICAgICAgICAgICAgZm9yZWFjaCAoXGFycmF5X2tleXMoJHRoaXMtPmNvbmZpZ1snaGVhZGVycyddKSBhcyAkbmFtZSkgewogICAgICAgICAgICAgICAgaWYgKFxzdHJ0b2xvd2VyKChzdHJpbmcpICRuYW1lKSA9PT0gJ3VzZXItYWdlbnQnKSB7CiAgICAgICAgICAgICAgICAgICAgJGhhc1VzZXJBZ2VudCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghJGhhc1VzZXJBZ2VudCkgewogICAgICAgICAgICAgICAgJHRoaXMtPmNvbmZpZ1snaGVhZGVycyddWydVc2VyLUFnZW50J10gPSBVdGlsczo6ZGVmYXVsdFVzZXJBZ2VudCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoXGlzX2FycmF5KCR0aGlzLT5jb25maWdbJ2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgc2VsZjo6d2FybkFib3V0SW52YWxpZEhlYWRlck9wdGlvblR5cGVzKCR0aGlzLT5jb25maWdbJ2hlYWRlcnMnXSk7CiAgICAgICAgICAgIHNlbGY6OmNhc3REZXByZWNhdGVkSGVhZGVyT3B0aW9uVmFsdWVzKCR0aGlzLT5jb25maWdbJ2hlYWRlcnMnXSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogTWVyZ2VzIGRlZmF1bHQgb3B0aW9ucyBpbnRvIHRoZSBhcnJheS4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG9wdGlvbnMgT3B0aW9ucyB0byBtb2RpZnkgYnkgcmVmZXJlbmNlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcHJlcGFyZURlZmF1bHRzKGFycmF5ICRvcHRpb25zKTogYXJyYXkKICAgIHsKICAgICAgICBzZWxmOjp3YXJuQWJvdXRSZXF1ZXN0TGV2ZWxIYW5kbGVyKCRvcHRpb25zKTsKCiAgICAgICAgJGRlZmF1bHRzID0gJHRoaXMtPmNvbmZpZzsKCiAgICAgICAgaWYgKCFlbXB0eSgkZGVmYXVsdHNbJ2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgLy8gRGVmYXVsdCBoZWFkZXJzIGFyZSBvbmx5IGFkZGVkIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50LgogICAgICAgICAgICAkZGVmYXVsdHNbJ19jb25kaXRpb25hbCddID0gJGRlZmF1bHRzWydoZWFkZXJzJ107CiAgICAgICAgICAgIHVuc2V0KCRkZWZhdWx0c1snaGVhZGVycyddKTsKICAgICAgICB9CgogICAgICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgZm9yIGhlYWRlcnMgaXMgcmVxdWlyZWQgYXMgdGhleSBhcmUgYWRkZWQgYXMKICAgICAgICAvLyBjb25kaXRpb25hbCBoZWFkZXJzIGFuZCBhcyBoZWFkZXJzIHBhc3NlZCB0byBhIHJlcXVlc3QgY3Rvci4KICAgICAgICBpZiAoXGFycmF5X2tleV9leGlzdHMoJ2hlYWRlcnMnLCAkb3B0aW9ucykpIHsKICAgICAgICAgICAgLy8gQWxsb3dzIGRlZmF1bHQgaGVhZGVycyB0byBiZSB1bnNldC4KICAgICAgICAgICAgaWYgKCRvcHRpb25zWydoZWFkZXJzJ10gPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRkZWZhdWx0c1snX2NvbmRpdGlvbmFsJ10gPSBbXTsKICAgICAgICAgICAgICAgIHVuc2V0KCRvcHRpb25zWydoZWFkZXJzJ10pOwogICAgICAgICAgICB9IGVsc2VpZiAoIVxpc19hcnJheSgkb3B0aW9uc1snaGVhZGVycyddKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignaGVhZGVycyBtdXN0IGJlIGFuIGFycmF5Jyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFNoYWxsb3cgbWVyZ2UgZGVmYXVsdHMgdW5kZXJuZWF0aCBvcHRpb25zLgogICAgICAgICRyZXN1bHQgPSAkb3B0aW9ucyArICRkZWZhdWx0czsKCiAgICAgICAgLy8gUmVtb3ZlIG51bGwgdmFsdWVzLgogICAgICAgIGZvcmVhY2ggKCRyZXN1bHQgYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgaWYgKCR2ID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkcmVzdWx0WyRrXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHNlbGY6Ondhcm5BYm91dEludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZXMoJHJlc3VsdCk7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHdhcm5BYm91dFJlcXVlc3RMZXZlbEhhbmRsZXIoYXJyYXkgJG9wdGlvbnMpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFcYXJyYXlfa2V5X2V4aXN0cygnaGFuZGxlcicsICRvcHRpb25zKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgJ2d1enpsZWh0dHAvZ3V6emxlJywKICAgICAgICAgICAgJzcuMTInLAogICAgICAgICAgICAnUGFzc2luZyB0aGUgImhhbmRsZXIiIHJlcXVlc3Qgb3B0aW9uIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvZ3V6emxlIDguMCB3aWxsIGlnbm9yZSByZXF1ZXN0LWxldmVsIGhhbmRsZXJzLiBDb25maWd1cmUgdGhlIGhhbmRsZXIgd2hlbiBjcmVhdGluZyB0aGUgQ2xpZW50LCBvciB1c2UgYSBzZXBhcmF0ZSBDbGllbnQgaW5zdGFuY2UgZm9yIHJlcXVlc3RzIHRoYXQgbmVlZCBhIGRpZmZlcmVudCBoYW5kbGVyLicKICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHdhcm5BYm91dEludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZXMoYXJyYXkgJG9wdGlvbnMpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydoYW5kbGVyJ10pICYmICFcaXNfY2FsbGFibGUoJG9wdGlvbnNbJ2hhbmRsZXInXSkpIHsKICAgICAgICAgICAgc2VsZjo6d2FybkludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZSgnaGFuZGxlcicsICdjYWxsYWJsZScsICRvcHRpb25zWydoYW5kbGVyJ10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydhbGxvd19yZWRpcmVjdHMnXSkgJiYgXGlzX2FycmF5KCRvcHRpb25zWydhbGxvd19yZWRpcmVjdHMnXSkpIHsKICAgICAgICAgICAgc2VsZjo6d2FybkFib3V0SW52YWxpZEFsbG93UmVkaXJlY3RzT3B0aW9uVHlwZXMoJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snYXV0aCddKSkgewogICAgICAgICAgICBzZWxmOjp3YXJuQWJvdXRJbnZhbGlkQXV0aE9wdGlvblR5cGVzKCRvcHRpb25zWydhdXRoJ10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydib2R5J10pICYmIFxpc19hcnJheSgkb3B0aW9uc1snYm9keSddKSkgewogICAgICAgICAgICBzZWxmOjp3YXJuSW52YWxpZFJlcXVlc3RPcHRpb25UeXBlKCdib2R5JywgJ3Jlc291cmNlfHN0cmluZ3xudWxsfGludHxmbG9hdHxib29sfFN0cmVhbUludGVyZmFjZXwoY2FsbGFibGUmb2JqZWN0KXxcSXRlcmF0b3J8XFN0cmluZ2FibGUnLCAkb3B0aW9uc1snYm9keSddKTsKICAgICAgICB9CgogICAgICAgIHNlbGY6Ondhcm5BYm91dEludmFsaWRUbHNGaWxlT3B0aW9uVHlwZXMoJG9wdGlvbnMsICdjZXJ0Jyk7CiAgICAgICAgc2VsZjo6d2FybklmUHJlc2VudEFuZE5vdFN0cmluZygkb3B0aW9ucywgJ2NlcnRfdHlwZScpOwogICAgICAgIHNlbGY6Ondhcm5JZlByZXNlbnRBbmROb3ROdW1iZXIoJG9wdGlvbnMsICdjb25uZWN0X3RpbWVvdXQnKTsKICAgICAgICBzZWxmOjp3YXJuSWZQcmVzZW50QW5kTm90SW50KCRvcHRpb25zLCAnY3J5cHRvX21ldGhvZCcpOwogICAgICAgIHNlbGY6Ondhcm5JZlByZXNlbnRBbmROb3RCb29sT3JSZXNvdXJjZSgkb3B0aW9ucywgJ2RlYnVnJyk7CiAgICAgICAgc2VsZjo6d2FybklmUHJlc2VudEFuZE5vdEJvb2xPclN0cmluZygkb3B0aW9ucywgJ2RlY29kZV9jb250ZW50Jyk7CiAgICAgICAgc2VsZjo6d2FybklmUHJlc2VudEFuZE5vdE51bWJlcigkb3B0aW9ucywgJ2RlbGF5Jyk7CiAgICAgICAgc2VsZjo6d2FybklmUHJlc2VudEFuZE5vdEJvb2xPckludCgkb3B0aW9ucywgJ2V4cGVjdCcpOwoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2Zvcm1fcGFyYW1zJ10pKSB7CiAgICAgICAgICAgIHNlbGY6Ondhcm5BYm91dEludmFsaWRGb3JtUGFyYW1UeXBlcygkb3B0aW9uc1snZm9ybV9wYXJhbXMnXSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2ZvcmNlX2lwX3Jlc29sdmUnXSkgJiYgIVxpc19zdHJpbmcoJG9wdGlvbnNbJ2ZvcmNlX2lwX3Jlc29sdmUnXSkpIHsKICAgICAgICAgICAgc2VsZjo6d2FybkludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZSgnZm9yY2VfaXBfcmVzb2x2ZScsICdzdHJpbmcnLCAkb3B0aW9uc1snZm9yY2VfaXBfcmVzb2x2ZSddKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snaGVhZGVycyddKSkgewogICAgICAgICAgICBzZWxmOjp3YXJuQWJvdXRJbnZhbGlkSGVhZGVyT3B0aW9uVHlwZXMoJG9wdGlvbnNbJ2hlYWRlcnMnXSk7CiAgICAgICAgfQoKICAgICAgICBzZWxmOjp3YXJuSWZQcmVzZW50QW5kTm90Qm9vbCgkb3B0aW9ucywgJ2h0dHBfZXJyb3JzJyk7CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snbXVsdGlwYXJ0J10pKSB7CiAgICAgICAgICAgIHNlbGY6Ondhcm5BYm91dEludmFsaWRNdWx0aXBhcnRPcHRpb25UeXBlcygkb3B0aW9uc1snbXVsdGlwYXJ0J10pOwogICAgICAgIH0KCiAgICAgICAgc2VsZjo6d2FybklmUHJlc2VudEFuZE5vdENhbGxhYmxlKCRvcHRpb25zLCAnb25faGVhZGVycycpOwogICAgICAgIHNlbGY6Ondhcm5JZlByZXNlbnRBbmROb3RDYWxsYWJsZSgkb3B0aW9ucywgJ29uX3N0YXRzJyk7CiAgICAgICAgc2VsZjo6d2FybklmUHJlc2VudEFuZE5vdENhbGxhYmxlKCRvcHRpb25zLCAncHJvZ3Jlc3MnKTsKICAgICAgICBzZWxmOjp3YXJuSWZQcmVzZW50QW5kTm90U3RyaW5nQXJyYXkoJG9wdGlvbnMsICdwcm90b2NvbHMnLCB0cnVlKTsKICAgICAgICBzZWxmOjp3YXJuQWJvdXRJbnZhbGlkUHJveHlPcHRpb25UeXBlcygkb3B0aW9ucyk7CgogICAgICAgIHNlbGY6Ondhcm5JZlByZXNlbnRBbmROb3ROdW1iZXIoJG9wdGlvbnMsICdyZWFkX3RpbWVvdXQnKTsKICAgICAgICBzZWxmOjp3YXJuSWZQcmVzZW50QW5kTm90SW50KCRvcHRpb25zLCAncmV0cmllcycpOwoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ3NpbmsnXSkgJiYgIVxpc19ib29sKCRvcHRpb25zWydzaW5rJ10pICYmICFcaXNfcmVzb3VyY2UoJG9wdGlvbnNbJ3NpbmsnXSkgJiYgIVxpc19zdHJpbmcoJG9wdGlvbnNbJ3NpbmsnXSkgJiYgISRvcHRpb25zWydzaW5rJ10gaW5zdGFuY2VvZiBTdHJlYW1JbnRlcmZhY2UpIHsKICAgICAgICAgICAgc2VsZjo6d2FybkludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZSgnc2luaycsICdyZXNvdXJjZXxzdHJpbmd8U3RyZWFtSW50ZXJmYWNlJywgJG9wdGlvbnNbJ3NpbmsnXSk7CiAgICAgICAgfQoKICAgICAgICBzZWxmOjp3YXJuQWJvdXRJbnZhbGlkVGxzRmlsZU9wdGlvblR5cGVzKCRvcHRpb25zLCAnc3NsX2tleScpOwogICAgICAgIHNlbGY6Ondhcm5JZlByZXNlbnRBbmROb3RTdHJpbmcoJG9wdGlvbnMsICdzc2xfa2V5X3R5cGUnKTsKICAgICAgICBzZWxmOjp3YXJuSWZQcmVzZW50QW5kTm90Qm9vbCgkb3B0aW9ucywgJ3N0cmVhbScpOwogICAgICAgIHNlbGY6Ondhcm5JZlByZXNlbnRBbmROb3RBcnJheSgkb3B0aW9ucywgJ3N0cmVhbV9jb250ZXh0JywgJ2FycmF5PGFycmF5LWtleSwgbWl4ZWQ+Jyk7CiAgICAgICAgc2VsZjo6d2FybklmUHJlc2VudEFuZE5vdEJvb2woJG9wdGlvbnMsICdzeW5jaHJvbm91cycpOwogICAgICAgIHNlbGY6Ondhcm5JZlByZXNlbnRBbmROb3ROdW1iZXIoJG9wdGlvbnMsICd0aW1lb3V0Jyk7CiAgICAgICAgc2VsZjo6d2FybklmUHJlc2VudEFuZE5vdEJvb2xPclN0cmluZygkb3B0aW9ucywgJ3ZlcmlmeScpOwogICAgICAgIHNlbGY6Ondhcm5JZlByZXNlbnRBbmROb3RTdHJpbmdPck51bWJlcigkb3B0aW9ucywgJ3ZlcnNpb24nKTsKICAgICAgICBzZWxmOjp3YXJuSWZQcmVzZW50QW5kTm90QXJyYXkoJG9wdGlvbnMsICdjdXJsJywgJ2FycmF5PGludHxzdHJpbmcsIG1peGVkPicpOwoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2Nvb2tpZXMnXSkgJiYgJG9wdGlvbnNbJ2Nvb2tpZXMnXSA9PT0gdHJ1ZSkgewogICAgICAgICAgICBzZWxmOjp3YXJuSW52YWxpZFJlcXVlc3RPcHRpb25UeXBlKCdjb29raWVzJywgJ2ZhbHNlfENvb2tpZUphckludGVyZmFjZScsICRvcHRpb25zWydjb29raWVzJ10pOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB3YXJuQWJvdXRJbnZhbGlkQWxsb3dSZWRpcmVjdHNPcHRpb25UeXBlcyhhcnJheSAkYWxsb3dSZWRpcmVjdHMpOiB2b2lkCiAgICB7CiAgICAgICAgc2VsZjo6d2FybklmUHJlc2VudEFuZE5vdEludCgkYWxsb3dSZWRpcmVjdHMsICdtYXgnLCAnYWxsb3dfcmVkaXJlY3RzLm1heCcpOwogICAgICAgIHNlbGY6Ondhcm5JZlByZXNlbnRBbmROb3RCb29sKCRhbGxvd1JlZGlyZWN0cywgJ3N0cmljdCcsICdhbGxvd19yZWRpcmVjdHMuc3RyaWN0Jyk7CiAgICAgICAgc2VsZjo6d2FybklmUHJlc2VudEFuZE5vdEJvb2woJGFsbG93UmVkaXJlY3RzLCAncmVmZXJlcicsICdhbGxvd19yZWRpcmVjdHMucmVmZXJlcicpOwogICAgICAgIHNlbGY6Ondhcm5JZlByZXNlbnRBbmROb3RTdHJpbmdBcnJheSgkYWxsb3dSZWRpcmVjdHMsICdwcm90b2NvbHMnLCB0cnVlLCAnYWxsb3dfcmVkaXJlY3RzLnByb3RvY29scycpOwogICAgICAgIHNlbGY6Ondhcm5JZlByZXNlbnRBbmROb3RDYWxsYWJsZSgkYWxsb3dSZWRpcmVjdHMsICdvbl9yZWRpcmVjdCcsICdhbGxvd19yZWRpcmVjdHMub25fcmVkaXJlY3QnKTsKICAgICAgICBzZWxmOjp3YXJuSWZQcmVzZW50QW5kTm90Qm9vbCgkYWxsb3dSZWRpcmVjdHMsICd0cmFja19yZWRpcmVjdHMnLCAnYWxsb3dfcmVkaXJlY3RzLnRyYWNrX3JlZGlyZWN0cycpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICRhdXRoCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHdhcm5BYm91dEludmFsaWRBdXRoT3B0aW9uVHlwZXMoJGF1dGgpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCRhdXRoID09PSBmYWxzZSB8fCBcaXNfc3RyaW5nKCRhdXRoKSB8fCAkYXV0aCA9PT0gW10pIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFcaXNfYXJyYXkoJGF1dGgpKSB7CiAgICAgICAgICAgIHNlbGY6Ondhcm5JbnZhbGlkUmVxdWVzdE9wdGlvblR5cGUoJ2F1dGgnLCAnYXJyYXl7MDogc3RyaW5nLCAxOiBzdHJpbmcsIDI/OiBzdHJpbmd8bnVsbH18c3RyaW5nfGZhbHNlfG51bGwnLCAkYXV0aCk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoIVxhcnJheV9rZXlfZXhpc3RzKDAsICRhdXRoKSB8fCAhXGlzX3N0cmluZygkYXV0aFswXSkpIHsKICAgICAgICAgICAgc2VsZjo6d2FybkludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZSgnYXV0aC4wJywgJ3N0cmluZycsICRhdXRoWzBdID8/IG51bGwpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFcYXJyYXlfa2V5X2V4aXN0cygxLCAkYXV0aCkgfHwgIVxpc19zdHJpbmcoJGF1dGhbMV0pKSB7CiAgICAgICAgICAgIHNlbGY6Ondhcm5JbnZhbGlkUmVxdWVzdE9wdGlvblR5cGUoJ2F1dGguMScsICdzdHJpbmcnLCAkYXV0aFsxXSA/PyBudWxsKTsKICAgICAgICB9CgogICAgICAgIGlmIChcYXJyYXlfa2V5X2V4aXN0cygyLCAkYXV0aCkgJiYgJGF1dGhbMl0gIT09IG51bGwgJiYgIVxpc19zdHJpbmcoJGF1dGhbMl0pKSB7CiAgICAgICAgICAgIHNlbGY6Ondhcm5JbnZhbGlkUmVxdWVzdE9wdGlvblR5cGUoJ2F1dGguMicsICdzdHJpbmd8bnVsbCcsICRhdXRoWzJdKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHdhcm5BYm91dEludmFsaWRGb3JtUGFyYW1UeXBlcygkdmFsdWUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFcaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICAgICAgICBzZWxmOjp3YXJuSW52YWxpZFJlcXVlc3RPcHRpb25UeXBlKCdmb3JtX3BhcmFtcycsICdhcnJheTxhcnJheS1rZXksIHN0cmluZ3xpbnR8ZmxvYXR8Ym9vbHxudWxsfGFycmF5PicsICR2YWx1ZSk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBzZWxmOjp3YXJuQWJvdXRJbnZhbGlkRm9ybVBhcmFtQXJyYXkoJHZhbHVlLCAnZm9ybV9wYXJhbXMnKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB3YXJuQWJvdXRJbnZhbGlkRm9ybVBhcmFtQXJyYXkoYXJyYXkgJHZhbHVlcywgc3RyaW5nICRwYXRoKTogYm9vbAogICAgewogICAgICAgIGZvcmVhY2ggKCR2YWx1ZXMgYXMgJGtleSA9PiAkaXRlbSkgewogICAgICAgICAgICAkaXRlbVBhdGggPSAkcGF0aC4nLicuKHN0cmluZykgJGtleTsKICAgICAgICAgICAgaWYgKFxpc19hcnJheSgkaXRlbSkpIHsKICAgICAgICAgICAgICAgIGlmICghc2VsZjo6d2FybkFib3V0SW52YWxpZEZvcm1QYXJhbUFycmF5KCRpdGVtLCAkaXRlbVBhdGgpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGl0ZW0gIT09IG51bGwgJiYgIVxpc19zY2FsYXIoJGl0ZW0pKSB7CiAgICAgICAgICAgICAgICBzZWxmOjp3YXJuSW52YWxpZFJlcXVlc3RPcHRpb25UeXBlKCRpdGVtUGF0aCwgJ3N0cmluZ3xpbnR8ZmxvYXR8Ym9vbHxudWxsfGFycmF5JywgJGl0ZW0pOwoKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJGhlYWRlcnMKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gd2FybkFib3V0SW52YWxpZEhlYWRlck9wdGlvblR5cGVzKCRoZWFkZXJzKTogdm9pZAogICAgewogICAgICAgIGlmICghXGlzX2FycmF5KCRoZWFkZXJzKSkgewogICAgICAgICAgICBzZWxmOjp3YXJuSW52YWxpZFJlcXVlc3RPcHRpb25UeXBlKCdoZWFkZXJzJywgJ2FycmF5PGFycmF5LWtleSwgc3RyaW5nfG5vbi1lbXB0eS1hcnJheTxhcnJheS1rZXksIHN0cmluZz4+fG51bGwnLCAkaGVhZGVycyk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkaGVhZGVycyBhcyAkbmFtZSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgJHBhdGggPSAnaGVhZGVycy4nLihzdHJpbmcpICRuYW1lOwogICAgICAgICAgICBpZiAoXGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgIGlmICgkdmFsdWUgPT09IFtdKSB7CiAgICAgICAgICAgICAgICAgICAgc2VsZjo6d2FybkludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZSgkcGF0aCwgJ3N0cmluZ3xub24tZW1wdHktYXJyYXk8YXJyYXkta2V5LCBzdHJpbmc+JywgJHZhbHVlKTsKCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHZhbHVlIGFzICRpbmRleCA9PiAkaXRlbSkgewogICAgICAgICAgICAgICAgICAgIGlmICghXGlzX3N0cmluZygkaXRlbSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZjo6d2FybkludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZSgkcGF0aC4nLicuKHN0cmluZykgJGluZGV4LCAnc3RyaW5nJywgJGl0ZW0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgMjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICghXGlzX3N0cmluZygkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICBzZWxmOjp3YXJuSW52YWxpZFJlcXVlc3RPcHRpb25UeXBlKCRwYXRoLCAnc3RyaW5nfG5vbi1lbXB0eS1hcnJheTxhcnJheS1rZXksIHN0cmluZz4nLCAkdmFsdWUpOwoKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICRtdWx0aXBhcnQKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gd2FybkFib3V0SW52YWxpZE11bHRpcGFydE9wdGlvblR5cGVzKCRtdWx0aXBhcnQpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFcaXNfYXJyYXkoJG11bHRpcGFydCkpIHsKICAgICAgICAgICAgc2VsZjo6d2FybkludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZSgnbXVsdGlwYXJ0JywgJ2FycmF5PGFycmF5LWtleSwgYXJyYXl7bmFtZTogc3RyaW5nfGludCwgY29udGVudHM6IG1peGVkLCBoZWFkZXJzPzogYXJyYXk8YXJyYXkta2V5LCBzdHJpbmc+LCBmaWxlbmFtZT86IHN0cmluZ30+JywgJG11bHRpcGFydCk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkbXVsdGlwYXJ0IGFzICRpbmRleCA9PiAkcGFydCkgewogICAgICAgICAgICAkcGF0aCA9ICdtdWx0aXBhcnQuJy4oc3RyaW5nKSAkaW5kZXg7CiAgICAgICAgICAgIGlmICghXGlzX2FycmF5KCRwYXJ0KSkgewogICAgICAgICAgICAgICAgc2VsZjo6d2FybkludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZSgkcGF0aCwgJ2FycmF5e25hbWU6IHN0cmluZ3xpbnQsIGNvbnRlbnRzOiBtaXhlZCwgaGVhZGVycz86IGFycmF5PGFycmF5LWtleSwgc3RyaW5nPiwgZmlsZW5hbWU/OiBzdHJpbmd9JywgJHBhcnQpOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFcYXJyYXlfa2V5X2V4aXN0cygnbmFtZScsICRwYXJ0KSB8fCAoIVxpc19zdHJpbmcoJHBhcnRbJ25hbWUnXSkgJiYgIVxpc19pbnQoJHBhcnRbJ25hbWUnXSkpKSB7CiAgICAgICAgICAgICAgICBzZWxmOjp3YXJuSW52YWxpZFJlcXVlc3RPcHRpb25UeXBlKCRwYXRoLicubmFtZScsICdzdHJpbmd8aW50JywgJHBhcnRbJ25hbWUnXSA/PyBudWxsKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFcYXJyYXlfa2V5X2V4aXN0cygnY29udGVudHMnLCAkcGFydCkpIHsKICAgICAgICAgICAgICAgIHNlbGY6Ondhcm5JbnZhbGlkUmVxdWVzdE9wdGlvblR5cGUoJHBhdGgsICdhcnJheXtuYW1lOiBzdHJpbmd8aW50LCBjb250ZW50czogbWl4ZWQsIGhlYWRlcnM/OiBhcnJheTxhcnJheS1rZXksIHN0cmluZz4sIGZpbGVuYW1lPzogc3RyaW5nfScsICRwYXJ0KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKFxhcnJheV9rZXlfZXhpc3RzKCdoZWFkZXJzJywgJHBhcnQpKSB7CiAgICAgICAgICAgICAgICBpZiAoIVxpc19hcnJheSgkcGFydFsnaGVhZGVycyddKSkgewogICAgICAgICAgICAgICAgICAgIHNlbGY6Ondhcm5JbnZhbGlkUmVxdWVzdE9wdGlvblR5cGUoJHBhdGguJy5oZWFkZXJzJywgJ2FycmF5PGFycmF5LWtleSwgc3RyaW5nPicsICRwYXJ0WydoZWFkZXJzJ10pOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFydFsnaGVhZGVycyddIGFzICRuYW1lID0+ICR2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVxpc19zdHJpbmcoJHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZjo6d2FybkludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZSgkcGF0aC4nLmhlYWRlcnMuJy4oc3RyaW5nKSAkbmFtZSwgJ3N0cmluZycsICR2YWx1ZSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKFxhcnJheV9rZXlfZXhpc3RzKCdmaWxlbmFtZScsICRwYXJ0KSAmJiAhXGlzX3N0cmluZygkcGFydFsnZmlsZW5hbWUnXSkpIHsKICAgICAgICAgICAgICAgIHNlbGY6Ondhcm5JbnZhbGlkUmVxdWVzdE9wdGlvblR5cGUoJHBhdGguJy5maWxlbmFtZScsICdzdHJpbmcnLCAkcGFydFsnZmlsZW5hbWUnXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gd2FybkFib3V0SW52YWxpZFByb3h5T3B0aW9uVHlwZXMoYXJyYXkgJG9wdGlvbnMpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkb3B0aW9uc1sncHJveHknXSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCRvcHRpb25zWydwcm94eSddKSAmJiAhXGlzX2FycmF5KCRvcHRpb25zWydwcm94eSddKSkgewogICAgICAgICAgICBzZWxmOjp3YXJuSW52YWxpZFJlcXVlc3RPcHRpb25UeXBlKCdwcm94eScsICdzdHJpbmd8YXJyYXl7aHR0cD86IHN0cmluZ3xudWxsLCBodHRwcz86IHN0cmluZ3xudWxsLCBubz86IHN0cmluZ3xhcnJheTxhcnJheS1rZXksIHN0cmluZz58bnVsbH0nLCAkb3B0aW9uc1sncHJveHknXSk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoIVxpc19hcnJheSgkb3B0aW9uc1sncHJveHknXSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoWydodHRwJywgJ2h0dHBzJ10gYXMgJHNjaGVtZSkgewogICAgICAgICAgICBpZiAoXGFycmF5X2tleV9leGlzdHMoJHNjaGVtZSwgJG9wdGlvbnNbJ3Byb3h5J10pICYmICRvcHRpb25zWydwcm94eSddWyRzY2hlbWVdICE9PSBudWxsICYmICFcaXNfc3RyaW5nKCRvcHRpb25zWydwcm94eSddWyRzY2hlbWVdKSkgewogICAgICAgICAgICAgICAgc2VsZjo6d2FybkludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZSgncHJveHkuJy4kc2NoZW1lLCAnc3RyaW5nfG51bGwnLCAkb3B0aW9uc1sncHJveHknXVskc2NoZW1lXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghXGFycmF5X2tleV9leGlzdHMoJ25vJywgJG9wdGlvbnNbJ3Byb3h5J10pIHx8ICRvcHRpb25zWydwcm94eSddWydubyddID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmIChcaXNfc3RyaW5nKCRvcHRpb25zWydwcm94eSddWydubyddKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoIVxpc19hcnJheSgkb3B0aW9uc1sncHJveHknXVsnbm8nXSkpIHsKICAgICAgICAgICAgc2VsZjo6d2FybkludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZSgncHJveHkubm8nLCAnc3RyaW5nfGFycmF5PGFycmF5LWtleSwgc3RyaW5nPnxudWxsJywgJG9wdGlvbnNbJ3Byb3h5J11bJ25vJ10pOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJG9wdGlvbnNbJ3Byb3h5J11bJ25vJ10gYXMgJGluZGV4ID0+ICRub1Byb3h5KSB7CiAgICAgICAgICAgIGlmICghXGlzX3N0cmluZygkbm9Qcm94eSkpIHsKICAgICAgICAgICAgICAgIHNlbGY6Ondhcm5JbnZhbGlkUmVxdWVzdE9wdGlvblR5cGUoJ3Byb3h5Lm5vLicuKHN0cmluZykgJGluZGV4LCAnc3RyaW5nJywgJG5vUHJveHkpOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB3YXJuQWJvdXRJbnZhbGlkVGxzRmlsZU9wdGlvblR5cGVzKGFycmF5ICRvcHRpb25zLCBzdHJpbmcgJG9wdGlvbik6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCRvcHRpb25zWyRvcHRpb25dKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoXGlzX3N0cmluZygkb3B0aW9uc1skb3B0aW9uXSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFcaXNfYXJyYXkoJG9wdGlvbnNbJG9wdGlvbl0pKSB7CiAgICAgICAgICAgIHNlbGY6Ondhcm5JbnZhbGlkUmVxdWVzdE9wdGlvblR5cGUoJG9wdGlvbiwgJ3N0cmluZ3xhcnJheXswOiBzdHJpbmcsIDE/OiBzdHJpbmd9JywgJG9wdGlvbnNbJG9wdGlvbl0pOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFcYXJyYXlfa2V5X2V4aXN0cygwLCAkb3B0aW9uc1skb3B0aW9uXSkgfHwgIVxpc19zdHJpbmcoJG9wdGlvbnNbJG9wdGlvbl1bMF0pKSB7CiAgICAgICAgICAgIHNlbGY6Ondhcm5JbnZhbGlkUmVxdWVzdE9wdGlvblR5cGUoJG9wdGlvbi4nLjAnLCAnc3RyaW5nJywgJG9wdGlvbnNbJG9wdGlvbl1bMF0gPz8gbnVsbCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGFycmF5X2tleV9leGlzdHMoMSwgJG9wdGlvbnNbJG9wdGlvbl0pICYmICRvcHRpb25zWyRvcHRpb25dWzFdICE9PSBudWxsICYmICFcaXNfc3RyaW5nKCRvcHRpb25zWyRvcHRpb25dWzFdKSkgewogICAgICAgICAgICBzZWxmOjp3YXJuSW52YWxpZFJlcXVlc3RPcHRpb25UeXBlKCRvcHRpb24uJy4xJywgJ3N0cmluZ3xudWxsJywgJG9wdGlvbnNbJG9wdGlvbl1bMV0pOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB3YXJuSWZQcmVzZW50QW5kTm90QXJyYXkoYXJyYXkgJG9wdGlvbnMsIHN0cmluZyAkb3B0aW9uLCBzdHJpbmcgJGV4cGVjdGVkKTogdm9pZAogICAgewogICAgICAgIGlmIChcYXJyYXlfa2V5X2V4aXN0cygkb3B0aW9uLCAkb3B0aW9ucykgJiYgIVxpc19hcnJheSgkb3B0aW9uc1skb3B0aW9uXSkpIHsKICAgICAgICAgICAgc2VsZjo6d2FybkludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZSgkb3B0aW9uLCAkZXhwZWN0ZWQsICRvcHRpb25zWyRvcHRpb25dKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gd2FybklmUHJlc2VudEFuZE5vdEJvb2woYXJyYXkgJG9wdGlvbnMsIHN0cmluZyAkb3B0aW9uLCA/c3RyaW5nICRwYXRoID0gbnVsbCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoXGFycmF5X2tleV9leGlzdHMoJG9wdGlvbiwgJG9wdGlvbnMpICYmICFcaXNfYm9vbCgkb3B0aW9uc1skb3B0aW9uXSkpIHsKICAgICAgICAgICAgc2VsZjo6d2FybkludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZSgkcGF0aCA/PyAkb3B0aW9uLCAnYm9vbCcsICRvcHRpb25zWyRvcHRpb25dKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gd2FybklmUHJlc2VudEFuZE5vdEJvb2xPckludChhcnJheSAkb3B0aW9ucywgc3RyaW5nICRvcHRpb24pOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKFxhcnJheV9rZXlfZXhpc3RzKCRvcHRpb24sICRvcHRpb25zKSAmJiAhXGlzX2Jvb2woJG9wdGlvbnNbJG9wdGlvbl0pICYmICFcaXNfaW50KCRvcHRpb25zWyRvcHRpb25dKSkgewogICAgICAgICAgICBzZWxmOjp3YXJuSW52YWxpZFJlcXVlc3RPcHRpb25UeXBlKCRvcHRpb24sICdib29sfGludCcsICRvcHRpb25zWyRvcHRpb25dKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gd2FybklmUHJlc2VudEFuZE5vdEJvb2xPclJlc291cmNlKGFycmF5ICRvcHRpb25zLCBzdHJpbmcgJG9wdGlvbik6IHZvaWQKICAgIHsKICAgICAgICBpZiAoXGFycmF5X2tleV9leGlzdHMoJG9wdGlvbiwgJG9wdGlvbnMpICYmICFcaXNfYm9vbCgkb3B0aW9uc1skb3B0aW9uXSkgJiYgIVxpc19yZXNvdXJjZSgkb3B0aW9uc1skb3B0aW9uXSkpIHsKICAgICAgICAgICAgc2VsZjo6d2FybkludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZSgkb3B0aW9uLCAnYm9vbHxyZXNvdXJjZScsICRvcHRpb25zWyRvcHRpb25dKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gd2FybklmUHJlc2VudEFuZE5vdEJvb2xPclN0cmluZyhhcnJheSAkb3B0aW9ucywgc3RyaW5nICRvcHRpb24pOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKFxhcnJheV9rZXlfZXhpc3RzKCRvcHRpb24sICRvcHRpb25zKSAmJiAhXGlzX2Jvb2woJG9wdGlvbnNbJG9wdGlvbl0pICYmICFcaXNfc3RyaW5nKCRvcHRpb25zWyRvcHRpb25dKSkgewogICAgICAgICAgICBzZWxmOjp3YXJuSW52YWxpZFJlcXVlc3RPcHRpb25UeXBlKCRvcHRpb24sICdib29sfHN0cmluZycsICRvcHRpb25zWyRvcHRpb25dKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gd2FybklmUHJlc2VudEFuZE5vdENhbGxhYmxlKGFycmF5ICRvcHRpb25zLCBzdHJpbmcgJG9wdGlvbiwgP3N0cmluZyAkcGF0aCA9IG51bGwpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKFxhcnJheV9rZXlfZXhpc3RzKCRvcHRpb24sICRvcHRpb25zKSAmJiAhXGlzX2NhbGxhYmxlKCRvcHRpb25zWyRvcHRpb25dKSkgewogICAgICAgICAgICBzZWxmOjp3YXJuSW52YWxpZFJlcXVlc3RPcHRpb25UeXBlKCRwYXRoID8/ICRvcHRpb24sICdjYWxsYWJsZScsICRvcHRpb25zWyRvcHRpb25dKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gd2FybklmUHJlc2VudEFuZE5vdEludChhcnJheSAkb3B0aW9ucywgc3RyaW5nICRvcHRpb24sID9zdHJpbmcgJHBhdGggPSBudWxsKTogdm9pZAogICAgewogICAgICAgIGlmIChcYXJyYXlfa2V5X2V4aXN0cygkb3B0aW9uLCAkb3B0aW9ucykgJiYgIVxpc19pbnQoJG9wdGlvbnNbJG9wdGlvbl0pKSB7CiAgICAgICAgICAgIHNlbGY6Ondhcm5JbnZhbGlkUmVxdWVzdE9wdGlvblR5cGUoJHBhdGggPz8gJG9wdGlvbiwgJ2ludCcsICRvcHRpb25zWyRvcHRpb25dKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gd2FybklmUHJlc2VudEFuZE5vdE51bWJlcihhcnJheSAkb3B0aW9ucywgc3RyaW5nICRvcHRpb24pOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKFxhcnJheV9rZXlfZXhpc3RzKCRvcHRpb24sICRvcHRpb25zKSAmJiAhXGlzX2ludCgkb3B0aW9uc1skb3B0aW9uXSkgJiYgIVxpc19mbG9hdCgkb3B0aW9uc1skb3B0aW9uXSkpIHsKICAgICAgICAgICAgc2VsZjo6d2FybkludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZSgkb3B0aW9uLCAnaW50fGZsb2F0JywgJG9wdGlvbnNbJG9wdGlvbl0pOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB3YXJuSWZQcmVzZW50QW5kTm90U3RyaW5nKGFycmF5ICRvcHRpb25zLCBzdHJpbmcgJG9wdGlvbik6IHZvaWQKICAgIHsKICAgICAgICBpZiAoXGFycmF5X2tleV9leGlzdHMoJG9wdGlvbiwgJG9wdGlvbnMpICYmICFcaXNfc3RyaW5nKCRvcHRpb25zWyRvcHRpb25dKSkgewogICAgICAgICAgICBzZWxmOjp3YXJuSW52YWxpZFJlcXVlc3RPcHRpb25UeXBlKCRvcHRpb24sICdzdHJpbmcnLCAkb3B0aW9uc1skb3B0aW9uXSk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHdhcm5JZlByZXNlbnRBbmROb3RTdHJpbmdBcnJheShhcnJheSAkb3B0aW9ucywgc3RyaW5nICRvcHRpb24sIGJvb2wgJG5vbkVtcHR5LCA/c3RyaW5nICRwYXRoID0gbnVsbCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIVxhcnJheV9rZXlfZXhpc3RzKCRvcHRpb24sICRvcHRpb25zKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkcGF0aCA9ICRwYXRoID8/ICRvcHRpb247CiAgICAgICAgJGV4cGVjdGVkID0gKCRub25FbXB0eSA/ICdub24tZW1wdHktJyA6ICcnKS4nYXJyYXk8YXJyYXkta2V5LCBzdHJpbmc+JzsKCiAgICAgICAgaWYgKCFcaXNfYXJyYXkoJG9wdGlvbnNbJG9wdGlvbl0pIHx8ICgkbm9uRW1wdHkgJiYgJG9wdGlvbnNbJG9wdGlvbl0gPT09IFtdKSkgewogICAgICAgICAgICBzZWxmOjp3YXJuSW52YWxpZFJlcXVlc3RPcHRpb25UeXBlKCRwYXRoLCAkZXhwZWN0ZWQsICRvcHRpb25zWyRvcHRpb25dKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRvcHRpb25zWyRvcHRpb25dIGFzICRpbmRleCA9PiAkaXRlbSkgewogICAgICAgICAgICBpZiAoIVxpc19zdHJpbmcoJGl0ZW0pKSB7CiAgICAgICAgICAgICAgICBzZWxmOjp3YXJuSW52YWxpZFJlcXVlc3RPcHRpb25UeXBlKCRwYXRoLicuJy4oc3RyaW5nKSAkaW5kZXgsICdzdHJpbmcnLCAkaXRlbSk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHdhcm5JZlByZXNlbnRBbmROb3RTdHJpbmdPck51bWJlcihhcnJheSAkb3B0aW9ucywgc3RyaW5nICRvcHRpb24pOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKAogICAgICAgICAgICBcYXJyYXlfa2V5X2V4aXN0cygkb3B0aW9uLCAkb3B0aW9ucykKICAgICAgICAgICAgJiYgIVxpc19zdHJpbmcoJG9wdGlvbnNbJG9wdGlvbl0pCiAgICAgICAgICAgICYmICFcaXNfaW50KCRvcHRpb25zWyRvcHRpb25dKQogICAgICAgICAgICAmJiAhXGlzX2Zsb2F0KCRvcHRpb25zWyRvcHRpb25dKQogICAgICAgICkgewogICAgICAgICAgICBzZWxmOjp3YXJuSW52YWxpZFJlcXVlc3RPcHRpb25UeXBlKCRvcHRpb24sICdzdHJpbmd8aW50fGZsb2F0JywgJG9wdGlvbnNbJG9wdGlvbl0pOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gd2FybkludmFsaWRSZXF1ZXN0T3B0aW9uVHlwZShzdHJpbmcgJG9wdGlvbiwgc3RyaW5nICRleHBlY3RlZCwgJHZhbHVlKTogdm9pZAogICAgewogICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAnZ3V6emxlaHR0cC9ndXp6bGUnLAogICAgICAgICAgICAnNy4xMScsCiAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIHJlcXVlc3Qgb3B0aW9uICIlcyIgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9ndXp6bGUgOC4wIHJlcXVpcmVzICVzLicsCiAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkdmFsdWUpLAogICAgICAgICAgICAkb3B0aW9uLAogICAgICAgICAgICAkZXhwZWN0ZWQKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogVHJhbnNmZXJzIHRoZSBnaXZlbiByZXF1ZXN0IGFuZCBhcHBsaWVzIHJlcXVlc3Qgb3B0aW9ucy4KICAgICAqCiAgICAgKiBUaGUgVVJJIG9mIHRoZSByZXF1ZXN0IGlzIG5vdCBtb2RpZmllZCBhbmQgdGhlIHJlcXVlc3Qgb3B0aW9ucyBhcmUgdXNlZAogICAgICogYXMtaXMgd2l0aG91dCBtZXJnaW5nIGluIGRlZmF1bHQgb3B0aW9ucy4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG9wdGlvbnMgU2VlIHtAc2VlIFJlcXVlc3RPcHRpb25zfS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmFuc2ZlcihSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucyk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkcmVxdWVzdCA9ICR0aGlzLT5hcHBseU9wdGlvbnMoJHJlcXVlc3QsICRvcHRpb25zKTsKCiAgICAgICAgJHByb3RvY29sVmVyc2lvbiA9ICRyZXF1ZXN0LT5nZXRQcm90b2NvbFZlcnNpb24oKTsKCiAgICAgICAgaWYgKCcnID09PSAkcHJvdG9jb2xWZXJzaW9uKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKCdndXp6bGVodHRwL2d1enpsZScsICc3LjExJywgJ1NlbmRpbmcgYSByZXF1ZXN0IHdpdGggYW4gZW1wdHkgcHJvdG9jb2wgdmVyc2lvbiBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL2d1enpsZSA4LjAgd2lsbCByZWplY3QgZW1wdHkgcHJvdG9jb2wgdmVyc2lvbnMuJyk7CgogICAgICAgICAgICAkcmVxdWVzdCA9IFBzcjdcVXRpbHM6Om1vZGlmeVJlcXVlc3QoJHJlcXVlc3QsIFsndmVyc2lvbicgPT4gJzEuMSddKTsKICAgICAgICB9IGVsc2VpZiAoIXNlbGY6OmlzUHJvdG9jb2xWZXJzaW9uVmFsaWQoJHByb3RvY29sVmVyc2lvbikpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oJ2d1enpsZWh0dHAvZ3V6emxlJywgJzcuMTEnLCAnU2VuZGluZyBhIHJlcXVlc3Qgd2l0aCBhIG1hbGZvcm1lZCBwcm90b2NvbCB2ZXJzaW9uIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvZ3V6emxlIDguMCB3aWxsIHJlamVjdCBtYWxmb3JtZWQgcHJvdG9jb2wgdmVyc2lvbnMuJyk7CiAgICAgICAgfQoKICAgICAgICAvKiogQHZhciBIYW5kbGVyU3RhY2sgJGhhbmRsZXIgKi8KICAgICAgICAkaGFuZGxlciA9ICRvcHRpb25zWydoYW5kbGVyJ107CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBQXENyZWF0ZTo6cHJvbWlzZUZvcigkaGFuZGxlcigkcmVxdWVzdCwgJG9wdGlvbnMpKTsKICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHJldHVybiBQXENyZWF0ZTo6cmVqZWN0aW9uRm9yKCRlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBcHBsaWVzIHRoZSBhcnJheSBvZiByZXF1ZXN0IG9wdGlvbnMgdG8gYSByZXF1ZXN0LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFwcGx5T3B0aW9ucyhSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAmJG9wdGlvbnMpOiBSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgJG1vZGlmeSA9IFsKICAgICAgICAgICAgJ3NldF9oZWFkZXJzJyA9PiBbXSwKICAgICAgICBdOwoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgaWYgKGFycmF5X2tleXMoJG9wdGlvbnNbJ2hlYWRlcnMnXSkgPT09IHJhbmdlKDAsIGNvdW50KCRvcHRpb25zWydoZWFkZXJzJ10pIC0gMSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBoZWFkZXJzIGFycmF5IG11c3QgaGF2ZSBoZWFkZXIgbmFtZSBhcyBrZXlzLicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRoZWFkZXJzID0gJG9wdGlvbnNbJ2hlYWRlcnMnXTsKICAgICAgICAgICAgJGRyb3BwZWRIZWFkZXJOYW1lcyA9IHNlbGY6OmNhc3REZXByZWNhdGVkSGVhZGVyT3B0aW9uVmFsdWVzKCRoZWFkZXJzKTsKICAgICAgICAgICAgaWYgKCRkcm9wcGVkSGVhZGVyTmFtZXMgIT09IFtdICYmIGlzc2V0KCRvcHRpb25zWydfY29uZGl0aW9uYWwnXSkpIHsKICAgICAgICAgICAgICAgICRvcHRpb25zWydfY29uZGl0aW9uYWwnXSA9IFBzcjdcVXRpbHM6OmNhc2VsZXNzUmVtb3ZlKCRkcm9wcGVkSGVhZGVyTmFtZXMsICRvcHRpb25zWydfY29uZGl0aW9uYWwnXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG1vZGlmeVsnc2V0X2hlYWRlcnMnXSA9ICRoZWFkZXJzOwogICAgICAgICAgICB1bnNldCgkb3B0aW9uc1snaGVhZGVycyddKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snZm9ybV9wYXJhbXMnXSkpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydtdWx0aXBhcnQnXSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1lvdSBjYW5ub3QgdXNlICcKICAgICAgICAgICAgICAgICAgICAuJ2Zvcm1fcGFyYW1zIGFuZCBtdWx0aXBhcnQgYXQgdGhlIHNhbWUgdGltZS4gVXNlIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgLidmb3JtX3BhcmFtcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gc2VuZCBhcHBsaWNhdGlvbi8nCiAgICAgICAgICAgICAgICAgICAgLid4LXd3dy1mb3JtLXVybGVuY29kZWQgcmVxdWVzdHMsIGFuZCB0aGUgbXVsdGlwYXJ0ICcKICAgICAgICAgICAgICAgICAgICAuJ29wdGlvbiB0byBzZW5kIG11bHRpcGFydC9mb3JtLWRhdGEgcmVxdWVzdHMuJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG9wdGlvbnNbJ2JvZHknXSA9IFxodHRwX2J1aWxkX3F1ZXJ5KHNlbGY6Om5vcm1hbGl6ZU5vbkZpbml0ZUZsb2F0cygkb3B0aW9uc1snZm9ybV9wYXJhbXMnXSwgJ2Zvcm1fcGFyYW1zJyksICcnLCAnJicpOwogICAgICAgICAgICB1bnNldCgkb3B0aW9uc1snZm9ybV9wYXJhbXMnXSk7CiAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHdlIGRvbid0IGhhdmUgdGhlIGhlYWRlciBpbiBkaWZmZXJlbnQgY2FzZSBhbmQgc2V0IHRoZSBuZXcgdmFsdWUuCiAgICAgICAgICAgICRvcHRpb25zWydfY29uZGl0aW9uYWwnXSA9IFBzcjdcVXRpbHM6OmNhc2VsZXNzUmVtb3ZlKFsnQ29udGVudC1UeXBlJ10sICRvcHRpb25zWydfY29uZGl0aW9uYWwnXSk7CiAgICAgICAgICAgICRvcHRpb25zWydfY29uZGl0aW9uYWwnXVsnQ29udGVudC1UeXBlJ10gPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJzsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snbXVsdGlwYXJ0J10pKSB7CiAgICAgICAgICAgICRvcHRpb25zWydib2R5J10gPSBuZXcgUHNyN1xNdWx0aXBhcnRTdHJlYW0oJG9wdGlvbnNbJ211bHRpcGFydCddKTsKICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ211bHRpcGFydCddKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snanNvbiddKSkgewogICAgICAgICAgICAkb3B0aW9uc1snYm9keSddID0gVXRpbHM6Ompzb25FbmNvZGUoJG9wdGlvbnNbJ2pzb24nXSk7CiAgICAgICAgICAgIHVuc2V0KCRvcHRpb25zWydqc29uJ10pOwogICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB3ZSBkb24ndCBoYXZlIHRoZSBoZWFkZXIgaW4gZGlmZmVyZW50IGNhc2UgYW5kIHNldCB0aGUgbmV3IHZhbHVlLgogICAgICAgICAgICAkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ10gPSBQc3I3XFV0aWxzOjpjYXNlbGVzc1JlbW92ZShbJ0NvbnRlbnQtVHlwZSddLCAkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ10pOwogICAgICAgICAgICAkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ11bJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb24nOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFlbXB0eSgkb3B0aW9uc1snZGVjb2RlX2NvbnRlbnQnXSkKICAgICAgICAgICAgJiYgJG9wdGlvbnNbJ2RlY29kZV9jb250ZW50J10gIT09IHRydWUKICAgICAgICApIHsKICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0aGUgaGVhZGVyIGluIGRpZmZlcmVudCBjYXNlIGFuZCBzZXQgdGhlIG5ldyB2YWx1ZS4KICAgICAgICAgICAgJG9wdGlvbnNbJ19jb25kaXRpb25hbCddID0gUHNyN1xVdGlsczo6Y2FzZWxlc3NSZW1vdmUoWydBY2NlcHQtRW5jb2RpbmcnXSwgJG9wdGlvbnNbJ19jb25kaXRpb25hbCddKTsKICAgICAgICAgICAgJG1vZGlmeVsnc2V0X2hlYWRlcnMnXVsnQWNjZXB0LUVuY29kaW5nJ10gPSAoc3RyaW5nKSAkb3B0aW9uc1snZGVjb2RlX2NvbnRlbnQnXTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snYm9keSddKSkgewogICAgICAgICAgICBpZiAoXGlzX2FycmF5KCRvcHRpb25zWydib2R5J10pKSB7CiAgICAgICAgICAgICAgICB0aHJvdyAkdGhpcy0+aW52YWxpZEJvZHkoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkbW9kaWZ5Wydib2R5J10gPSBzZWxmOjpjcmVhdGVCb2R5U3RyZWFtKCRvcHRpb25zWydib2R5J10pOwogICAgICAgICAgICB1bnNldCgkb3B0aW9uc1snYm9keSddKTsKICAgICAgICB9CgogICAgICAgIGlmICghZW1wdHkoJG9wdGlvbnNbJ2F1dGgnXSkgJiYgXGlzX2FycmF5KCRvcHRpb25zWydhdXRoJ10pKSB7CiAgICAgICAgICAgICR2YWx1ZSA9ICRvcHRpb25zWydhdXRoJ107CiAgICAgICAgICAgICR0eXBlID0gaXNzZXQoJHZhbHVlWzJdKSA/IFxzdHJ0b2xvd2VyKCR2YWx1ZVsyXSkgOiAnYmFzaWMnOwogICAgICAgICAgICBzd2l0Y2ggKCR0eXBlKSB7CiAgICAgICAgICAgICAgICBjYXNlICdiYXNpYyc6CiAgICAgICAgICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0aGUgaGVhZGVyIGluIGRpZmZlcmVudCBjYXNlIGFuZCBzZXQgdGhlIG5ldyB2YWx1ZS4KICAgICAgICAgICAgICAgICAgICAkbW9kaWZ5WydzZXRfaGVhZGVycyddID0gUHNyN1xVdGlsczo6Y2FzZWxlc3NSZW1vdmUoWydBdXRob3JpemF0aW9uJ10sICRtb2RpZnlbJ3NldF9oZWFkZXJzJ10pOwogICAgICAgICAgICAgICAgICAgICRtb2RpZnlbJ3NldF9oZWFkZXJzJ11bJ0F1dGhvcml6YXRpb24nXSA9ICdCYXNpYyAnCiAgICAgICAgICAgICAgICAgICAgICAgIC5cYmFzZTY0X2VuY29kZSgiJHZhbHVlWzBdOiR2YWx1ZVsxXSIpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnZGlnZXN0JzoKICAgICAgICAgICAgICAgICAgICAvLyBAdG9kbzogRG8gbm90IHJlbHkgb24gY3VybAogICAgICAgICAgICAgICAgICAgICRvcHRpb25zWydjdXJsJ11bXENVUkxPUFRfSFRUUEFVVEhdID0gXENVUkxBVVRIX0RJR0VTVDsKICAgICAgICAgICAgICAgICAgICAkb3B0aW9uc1snY3VybCddW1xDVVJMT1BUX1VTRVJQV0RdID0gIiR2YWx1ZVswXTokdmFsdWVbMV0iOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnbnRsbSc6CiAgICAgICAgICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICdndXp6bGVodHRwL2d1enpsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICc3LjEyJywKICAgICAgICAgICAgICAgICAgICAgICAgJ1Bhc3NpbmcgIm50bG0iIGFzIHRoZSBidWlsdC1pbiBhdXRoIHR5cGUgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9ndXp6bGUgOC4wIHdpbGwgbm8gbG9uZ2VyIGFwcGx5IE5UTE0gdGhyb3VnaCB0aGUgImF1dGgiIHJlcXVlc3Qgb3B0aW9uLiBDb25maWd1cmUgTlRMTSB3aXRoIGNVUkwgSFRUUCBhdXRoZW50aWNhdGlvbiBvcHRpb25zIGluc3RlYWQuJwogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnNbJ2N1cmwnXVtcQ1VSTE9QVF9IVFRQQVVUSF0gPSBcQ1VSTEFVVEhfTlRMTTsKICAgICAgICAgICAgICAgICAgICAkb3B0aW9uc1snY3VybCddW1xDVVJMT1BUX1VTRVJQV0RdID0gIiR2YWx1ZVswXTokdmFsdWVbMV0iOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ3F1ZXJ5J10pKSB7CiAgICAgICAgICAgICR2YWx1ZSA9ICRvcHRpb25zWydxdWVyeSddOwogICAgICAgICAgICBpZiAoXGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IFxodHRwX2J1aWxkX3F1ZXJ5KHNlbGY6Om5vcm1hbGl6ZU5vbkZpbml0ZUZsb2F0cygkdmFsdWUsICdxdWVyeScpLCAnJywgJyYnLCBcUEhQX1FVRVJZX1JGQzM5ODYpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghXGlzX3N0cmluZygkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdxdWVyeSBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG1vZGlmeVsncXVlcnknXSA9ICR2YWx1ZTsKICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ3F1ZXJ5J10pOwogICAgICAgIH0KCiAgICAgICAgLy8gRW5zdXJlIHRoYXQgc2luayBpcyBub3QgYW4gaW52YWxpZCB2YWx1ZS4KICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ3NpbmsnXSkpIHsKICAgICAgICAgICAgLy8gVE9ETzogQWRkIG1vcmUgc2luayB2YWxpZGF0aW9uPwogICAgICAgICAgICBpZiAoXGlzX2Jvb2woJG9wdGlvbnNbJ3NpbmsnXSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ3NpbmsgbXVzdCBub3QgYmUgYSBib29sZWFuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1sndmVyc2lvbiddKSkgewogICAgICAgICAgICAkbW9kaWZ5Wyd2ZXJzaW9uJ10gPSBzZWxmOjpub3JtYWxpemVQcm90b2NvbFZlcnNpb24oJG9wdGlvbnNbJ3ZlcnNpb24nXSk7CiAgICAgICAgfQoKICAgICAgICAkcmVxdWVzdCA9IFBzcjdcVXRpbHM6Om1vZGlmeVJlcXVlc3QoJHJlcXVlc3QsICRtb2RpZnkpOwogICAgICAgIGlmICgkcmVxdWVzdC0+Z2V0Qm9keSgpIGluc3RhbmNlb2YgUHNyN1xNdWx0aXBhcnRTdHJlYW0pIHsKICAgICAgICAgICAgLy8gVXNlIGEgbXVsdGlwYXJ0L2Zvcm0tZGF0YSBQT1NUIGlmIGEgQ29udGVudC1UeXBlIGlzIG5vdCBzZXQuCiAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHdlIGRvbid0IGhhdmUgdGhlIGhlYWRlciBpbiBkaWZmZXJlbnQgY2FzZSBhbmQgc2V0IHRoZSBuZXcgdmFsdWUuCiAgICAgICAgICAgICRvcHRpb25zWydfY29uZGl0aW9uYWwnXSA9IFBzcjdcVXRpbHM6OmNhc2VsZXNzUmVtb3ZlKFsnQ29udGVudC1UeXBlJ10sICRvcHRpb25zWydfY29uZGl0aW9uYWwnXSk7CiAgICAgICAgICAgICRvcHRpb25zWydfY29uZGl0aW9uYWwnXVsnQ29udGVudC1UeXBlJ10gPSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9JwogICAgICAgICAgICAgICAgLiRyZXF1ZXN0LT5nZXRCb2R5KCktPmdldEJvdW5kYXJ5KCk7CiAgICAgICAgfQoKICAgICAgICAvLyBNZXJnZSBpbiBjb25kaXRpb25hbCBoZWFkZXJzIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50LgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ10pKSB7CiAgICAgICAgICAgIC8vIEJ1aWxkIHVwIHRoZSBjaGFuZ2VzIHNvIGl0J3MgaW4gYSBzaW5nbGUgY2xvbmUgb2YgdGhlIG1lc3NhZ2UuCiAgICAgICAgICAgICRtb2RpZnkgPSBbXTsKICAgICAgICAgICAgZm9yZWFjaCAoJG9wdGlvbnNbJ19jb25kaXRpb25hbCddIGFzICRrID0+ICR2KSB7CiAgICAgICAgICAgICAgICAkbmFtZSA9IChzdHJpbmcpICRrOwogICAgICAgICAgICAgICAgaWYgKCEkcmVxdWVzdC0+aGFzSGVhZGVyKCRuYW1lKSkgewogICAgICAgICAgICAgICAgICAgICRtb2RpZnlbJ3NldF9oZWFkZXJzJ11bJG5hbWVdID0gJHY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJlcXVlc3QgPSBQc3I3XFV0aWxzOjptb2RpZnlSZXF1ZXN0KCRyZXF1ZXN0LCAkbW9kaWZ5KTsKICAgICAgICAgICAgLy8gRG9uJ3QgcGFzcyB0aGlzIGludGVybmFsIHZhbHVlIGFsb25nIHRvIG1pZGRsZXdhcmUvaGFuZGxlcnMuCiAgICAgICAgICAgIHVuc2V0KCRvcHRpb25zWydfY29uZGl0aW9uYWwnXSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlcXVlc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJGhlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjYXN0RGVwcmVjYXRlZEhlYWRlck9wdGlvblZhbHVlcyhhcnJheSAmJGhlYWRlcnMpOiBhcnJheQogICAgewogICAgICAgICRkcm9wcGVkSGVhZGVyTmFtZXMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJGhlYWRlcnMgYXMgJG5hbWUgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGlmIChcaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICAgICAgICAgICAgaWYgKCR2YWx1ZSA9PT0gW10pIHsKICAgICAgICAgICAgICAgICAgICAkZHJvcHBlZEhlYWRlck5hbWVzW10gPSAoc3RyaW5nKSAkbmFtZTsKICAgICAgICAgICAgICAgICAgICB1bnNldCgkaGVhZGVyc1skbmFtZV0pOwoKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdmFsdWUgYXMgJGluZGV4ID0+ICRpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRpdGVtID09PSBudWxsIHx8ICghXGlzX3N0cmluZygkaXRlbSkgJiYgXGlzX3NjYWxhcigkaXRlbSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcaXNfZmxvYXQoJGl0ZW0pICYmICFcaXNfZmluaXRlKCRpdGVtKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW0gPSBcaXNfbmFuKCRpdGVtKSA/ICdOQU4nIDogKCRpdGVtID4gMCA/ICdJTkYnIDogJy1JTkYnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWVbJGluZGV4XSA9IChzdHJpbmcpICRpdGVtOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkaGVhZGVyc1skbmFtZV0gPSAkdmFsdWU7CgogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdmFsdWUgPT09IG51bGwgfHwgKCFcaXNfc3RyaW5nKCR2YWx1ZSkgJiYgXGlzX3NjYWxhcigkdmFsdWUpKSkgewogICAgICAgICAgICAgICAgaWYgKFxpc19mbG9hdCgkdmFsdWUpICYmICFcaXNfZmluaXRlKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSBcaXNfbmFuKCR2YWx1ZSkgPyAnTkFOJyA6ICgkdmFsdWUgPiAwID8gJ0lORicgOiAnLUlORicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGhlYWRlcnNbJG5hbWVdID0gKHN0cmluZykgJHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGRyb3BwZWRIZWFkZXJOYW1lczsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkYm9keQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVCb2R5U3RyZWFtKCRib2R5KTogU3RyZWFtSW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKCRib2R5IGluc3RhbmNlb2YgU3RyZWFtSW50ZXJmYWNlKSB7CiAgICAgICAgICAgIHJldHVybiAkYm9keTsKICAgICAgICB9CgogICAgICAgIGlmIChcaXNfcmVzb3VyY2UoJGJvZHkpIHx8ICRib2R5ID09PSBudWxsIHx8IFxpc19zdHJpbmcoJGJvZHkpIHx8ICRib2R5IGluc3RhbmNlb2YgXEl0ZXJhdG9yKSB7CiAgICAgICAgICAgIHJldHVybiBQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoJGJvZHkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxpc19zY2FsYXIoJGJvZHkpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKCdndXp6bGVodHRwL2d1enpsZScsICc3LjEyJywgJ1Bhc3NpbmcgYSBub24tc3RyaW5nIHNjYWxhciB0byB0aGUgImJvZHkiIHJlcXVlc3Qgb3B0aW9uIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvZ3V6emxlIDguMCB3aWxsIHJlamVjdCBub24tc3RyaW5nIHNjYWxhciBib2RpZXMuJyk7CgogICAgICAgICAgICByZXR1cm4gUHNyN1xVdGlsczo6c3RyZWFtRm9yKHNlbGY6OnN0cmluZ2lmeVNjYWxhcigkYm9keSkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxpc19vYmplY3QoJGJvZHkpICYmIFxtZXRob2RfZXhpc3RzKCRib2R5LCAnX190b1N0cmluZycpKSB7CiAgICAgICAgICAgIHJldHVybiBQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoKHN0cmluZykgJGJvZHkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxpc19jYWxsYWJsZSgkYm9keSkpIHsKICAgICAgICAgICAgcmV0dXJuIFBzcjdcVXRpbHM6OnN0cmVhbUZvcigkYm9keSk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKFxzcHJpbnRmKAogICAgICAgICAgICAnUGFzc2luZyAlcyB0byByZXF1ZXN0IG9wdGlvbiAiYm9keSIgaXMgaW52YWxpZDsgZXhwZWN0ZWQgcmVzb3VyY2V8c3RyaW5nfG51bGx8aW50fGZsb2F0fGJvb2x8U3RyZWFtSW50ZXJmYWNlfGNhbGxhYmxlJm9iamVjdHxJdGVyYXRvcnxTdHJpbmdhYmxlLicsCiAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkYm9keSkKICAgICAgICApKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBib29sfGZsb2F0fGludHxzdHJpbmcgJHZhbHVlCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHN0cmluZ2lmeVNjYWxhcigkdmFsdWUpOiBzdHJpbmcKICAgIHsKICAgICAgICAvLyBOb3JtYWxpemUgbm9uLWZpbml0ZSBmbG9hdHMgdG8gZG9kZ2UgUEhQIDguNSdzIChzdHJpbmcpIE5BTgogICAgICAgIC8vIGNvZXJjaW9uIHdhcm5pbmcgd2hpbGUgdGhlIHZhbHVlIGlzIHN0aWxsIGFjY2VwdGVkLgogICAgICAgIGlmIChcaXNfZmxvYXQoJHZhbHVlKSAmJiAhXGlzX2Zpbml0ZSgkdmFsdWUpKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IFxpc19uYW4oJHZhbHVlKSA/ICdOQU4nIDogKCR2YWx1ZSA+IDAgPyAnSU5GJyA6ICctSU5GJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKHN0cmluZykgJHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydHMgbm9uLWZpbml0ZSBmbG9hdHMgaW4gdGhlIGFycmF5IHRvIHRoZSBzdHJpbmdzIFBIUCBjb2VyY2VzCiAgICAgKiB0aGVtIHRvLCBhcyBpbXBsaWNpdCBjb2VyY2lvbiBvZiBOQU4gZW1pdHMgYSB3YXJuaW5nIG9uIFBIUCA4LjUuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZU5vbkZpbml0ZUZsb2F0cyhhcnJheSAkdmFsdWVzLCBzdHJpbmcgJG9wdGlvbik6IGFycmF5CiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHZhbHVlcyBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICBpZiAoXGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICR2YWx1ZXNbJGtleV0gPSBzZWxmOjpub3JtYWxpemVOb25GaW5pdGVGbG9hdHMoJHZhbHVlLCAkb3B0aW9uKTsKICAgICAgICAgICAgfSBlbHNlaWYgKFxpc19mbG9hdCgkdmFsdWUpICYmICFcaXNfZmluaXRlKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKCdndXp6bGVodHRwL2d1enpsZScsICc3LjEyJywgJ1Bhc3NpbmcgYSBub24tZmluaXRlIGZsb2F0IGluIHRoZSAiJXMiIHJlcXVlc3Qgb3B0aW9uIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvZ3V6emxlIDguMCB3aWxsIHJlamVjdCBub24tZmluaXRlIGZsb2F0cy4nLCAkb3B0aW9uKTsKCiAgICAgICAgICAgICAgICAkdmFsdWVzWyRrZXldID0gXGlzX25hbigkdmFsdWUpID8gJ05BTicgOiAoJHZhbHVlID4gMCA/ICdJTkYnIDogJy1JTkYnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR2YWx1ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nfGludHxmbG9hdCAkdmVyc2lvbgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemVQcm90b2NvbFZlcnNpb24oJHZlcnNpb24pOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJycgPT09ICR2ZXJzaW9uKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKCdndXp6bGVodHRwL2d1enpsZScsICc3LjExJywgJ1Bhc3NpbmcgYW4gZW1wdHkgInZlcnNpb24iIHJlcXVlc3Qgb3B0aW9uIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvZ3V6emxlIDguMCB3aWxsIHJlamVjdCBlbXB0eSBwcm90b2NvbCB2ZXJzaW9ucy4nKTsKCiAgICAgICAgICAgIHJldHVybiAnMS4xJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcaXNfZmxvYXQoJHZlcnNpb24pID8gXG51bWJlcl9mb3JtYXQoJHZlcnNpb24sIDEsICcuJywgJycpIDogKHN0cmluZykgJHZlcnNpb247CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaXNQcm90b2NvbFZlcnNpb25WYWxpZChzdHJpbmcgJHZlcnNpb24pOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIDEgPT09IFxwcmVnX21hdGNoKCcvXlxkKyg/OlwuXGQrKT8kL0QnLCAkdmVyc2lvbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIHdpdGggcHJlLXNldCBtZXNzYWdlLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGludmFsaWRCb2R5KCk6IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgewogICAgICAgIHJldHVybiBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdQYXNzaW5nIGluIHRoZSAiYm9keSIgcmVxdWVzdCAnCiAgICAgICAgICAgIC4nb3B0aW9uIGFzIGFuIGFycmF5IHRvIHNlbmQgYSByZXF1ZXN0IGlzIG5vdCBzdXBwb3J0ZWQuICcKICAgICAgICAgICAgLidQbGVhc2UgdXNlIHRoZSAiZm9ybV9wYXJhbXMiIHJlcXVlc3Qgb3B0aW9uIHRvIHNlbmQgYSAnCiAgICAgICAgICAgIC4nYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIHJlcXVlc3QsIG9yIHRoZSAibXVsdGlwYXJ0IiAnCiAgICAgICAgICAgIC4ncmVxdWVzdCBvcHRpb24gdG8gc2VuZCBhIG11bHRpcGFydC9mb3JtLWRhdGEgcmVxdWVzdC4nKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/ClientInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXEd1enpsZUV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOwoKLyoqCiAqIENsaWVudCBpbnRlcmZhY2UgZm9yIHNlbmRpbmcgSFRUUCByZXF1ZXN0cy4KICovCmludGVyZmFjZSBDbGllbnRJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBUaGUgR3V6emxlIG1ham9yIHZlcnNpb24uCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBNQUpPUl9WRVJTSU9OID0gNzsKCiAgICAvKioKICAgICAqIFNlbmQgYW4gSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0IFJlcXVlc3QgdG8gc2VuZAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zIHRvIGFwcGx5IHRvIHRoZSBnaXZlbgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCBhbmQgdG8gdGhlIHRyYW5zZmVyLgogICAgICoKICAgICAqIEB0aHJvd3MgR3V6emxlRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZW5kKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zID0gW10pOiBSZXNwb25zZUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIEFzeW5jaHJvbm91c2x5IHNlbmQgYW4gSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0IFJlcXVlc3QgdG8gc2VuZAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zIHRvIGFwcGx5IHRvIHRoZSBnaXZlbgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCBhbmQgdG8gdGhlIHRyYW5zZmVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZEFzeW5jKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zID0gW10pOiBQcm9taXNlSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuZCBzZW5kIGFuIEhUVFAgcmVxdWVzdC4KICAgICAqCiAgICAgKiBVc2UgYW4gYWJzb2x1dGUgcGF0aCB0byBvdmVycmlkZSB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQsIG9yIGEKICAgICAqIHJlbGF0aXZlIHBhdGggdG8gYXBwZW5kIHRvIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudC4gVGhlIFVSTCBjYW4KICAgICAqIGNvbnRhaW4gdGhlIHF1ZXJ5IHN0cmluZyBhcyB3ZWxsLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICRtZXRob2QgIEhUVFAgbWV0aG9kLgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuCiAgICAgKgogICAgICogQHRocm93cyBHdXp6bGVFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlcXVlc3Qoc3RyaW5nICRtZXRob2QsICR1cmksIGFycmF5ICRvcHRpb25zID0gW10pOiBSZXNwb25zZUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBhc3luY2hyb25vdXMgSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuIFVzZSBhbiBhcnJheSB0byBwcm92aWRlIGEgVVJMCiAgICAgKiB0ZW1wbGF0ZSBhbmQgYWRkaXRpb25hbCB2YXJpYWJsZXMgdG8gdXNlIGluIHRoZSBVUkwgdGVtcGxhdGUgZXhwYW5zaW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICRtZXRob2QgIEhUVFAgbWV0aG9kCiAgICAgKiBAcGFyYW0gc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpICAgICBVUkkgb2JqZWN0IG9yIHN0cmluZy4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICRvcHRpb25zIFJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlcXVlc3RBc3luYyhzdHJpbmcgJG1ldGhvZCwgJHVyaSwgYXJyYXkgJG9wdGlvbnMgPSBbXSk6IFByb21pc2VJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBHZXQgYSBjbGllbnQgY29uZmlndXJhdGlvbiBvcHRpb24uCiAgICAgKgogICAgICogVGhlc2Ugb3B0aW9ucyBpbmNsdWRlIGRlZmF1bHQgcmVxdWVzdCBvcHRpb25zIG9mIHRoZSBjbGllbnQsIGEgImhhbmRsZXIiCiAgICAgKiAoaWYgdXRpbGl6ZWQgYnkgdGhlIGNvbmNyZXRlIGNsaWVudCksIGFuZCBhICJiYXNlX3VyaSIgaWYgdXRpbGl6ZWQgYnkKICAgICAqIHRoZSBjb25jcmV0ZSBjbGllbnQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRvcHRpb24gVGhlIGNvbmZpZyBvcHRpb24gdG8gcmV0cmlldmUuCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIENsaWVudEludGVyZmFjZTo6Z2V0Q29uZmlnIHdpbGwgYmUgcmVtb3ZlZCBpbiBndXp6bGVodHRwL2d1enpsZTo4LjAuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb25maWcoP3N0cmluZyAkb3B0aW9uID0gbnVsbCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/ClientTrait.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXEd1enpsZUV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOwoKLyoqCiAqIENsaWVudCBpbnRlcmZhY2UgZm9yIHNlbmRpbmcgSFRUUCByZXF1ZXN0cy4KICovCnRyYWl0IENsaWVudFRyYWl0CnsKICAgIC8qKgogICAgICogQ3JlYXRlIGFuZCBzZW5kIGFuIEhUVFAgcmVxdWVzdC4KICAgICAqCiAgICAgKiBVc2UgYW4gYWJzb2x1dGUgcGF0aCB0byBvdmVycmlkZSB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQsIG9yIGEKICAgICAqIHJlbGF0aXZlIHBhdGggdG8gYXBwZW5kIHRvIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudC4gVGhlIFVSTCBjYW4KICAgICAqIGNvbnRhaW4gdGhlIHF1ZXJ5IHN0cmluZyBhcyB3ZWxsLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICRtZXRob2QgIEhUVFAgbWV0aG9kLgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuCiAgICAgKgogICAgICogQHRocm93cyBHdXp6bGVFeGNlcHRpb24KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHJlcXVlc3Qoc3RyaW5nICRtZXRob2QsICR1cmksIGFycmF5ICRvcHRpb25zID0gW10pOiBSZXNwb25zZUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBIVFRQIEdFVCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuCiAgICAgKgogICAgICogQHRocm93cyBHdXp6bGVFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldCgkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKTogUmVzcG9uc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3QoJ0dFVCcsICR1cmksICRvcHRpb25zKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBIVFRQIEhFQUQgcmVxdWVzdC4KICAgICAqCiAgICAgKiBVc2UgYW4gYWJzb2x1dGUgcGF0aCB0byBvdmVycmlkZSB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQsIG9yIGEKICAgICAqIHJlbGF0aXZlIHBhdGggdG8gYXBwZW5kIHRvIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudC4gVGhlIFVSTCBjYW4KICAgICAqIGNvbnRhaW4gdGhlIHF1ZXJ5IHN0cmluZyBhcyB3ZWxsLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8VXJpSW50ZXJmYWNlICR1cmkgICAgIFVSSSBvYmplY3Qgb3Igc3RyaW5nLgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zIHRvIGFwcGx5LgogICAgICoKICAgICAqIEB0aHJvd3MgR3V6emxlRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoZWFkKCR1cmksIGFycmF5ICRvcHRpb25zID0gW10pOiBSZXNwb25zZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdCgnSEVBRCcsICR1cmksICRvcHRpb25zKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBIVFRQIFBVVCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuCiAgICAgKgogICAgICogQHRocm93cyBHdXp6bGVFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHB1dCgkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKTogUmVzcG9uc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3QoJ1BVVCcsICR1cmksICRvcHRpb25zKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBIVFRQIFBPU1QgcmVxdWVzdC4KICAgICAqCiAgICAgKiBVc2UgYW4gYWJzb2x1dGUgcGF0aCB0byBvdmVycmlkZSB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQsIG9yIGEKICAgICAqIHJlbGF0aXZlIHBhdGggdG8gYXBwZW5kIHRvIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudC4gVGhlIFVSTCBjYW4KICAgICAqIGNvbnRhaW4gdGhlIHF1ZXJ5IHN0cmluZyBhcyB3ZWxsLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8VXJpSW50ZXJmYWNlICR1cmkgICAgIFVSSSBvYmplY3Qgb3Igc3RyaW5nLgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zIHRvIGFwcGx5LgogICAgICoKICAgICAqIEB0aHJvd3MgR3V6emxlRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwb3N0KCR1cmksIGFycmF5ICRvcHRpb25zID0gW10pOiBSZXNwb25zZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdCgnUE9TVCcsICR1cmksICRvcHRpb25zKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBIVFRQIFBBVENIIHJlcXVlc3QuCiAgICAgKgogICAgICogVXNlIGFuIGFic29sdXRlIHBhdGggdG8gb3ZlcnJpZGUgdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LCBvciBhCiAgICAgKiByZWxhdGl2ZSBwYXRoIHRvIGFwcGVuZCB0byB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQuIFRoZSBVUkwgY2FuCiAgICAgKiBjb250YWluIHRoZSBxdWVyeSBzdHJpbmcgYXMgd2VsbC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpICAgICBVUkkgb2JqZWN0IG9yIHN0cmluZy4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICRvcHRpb25zIFJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseS4KICAgICAqCiAgICAgKiBAdGhyb3dzIEd1enpsZUV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGF0Y2goJHVyaSwgYXJyYXkgJG9wdGlvbnMgPSBbXSk6IFJlc3BvbnNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXF1ZXN0KCdQQVRDSCcsICR1cmksICRvcHRpb25zKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBIVFRQIERFTEVURSByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuCiAgICAgKgogICAgICogQHRocm93cyBHdXp6bGVFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZSgkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKTogUmVzcG9uc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3QoJ0RFTEVURScsICR1cmksICRvcHRpb25zKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBhc3luY2hyb25vdXMgSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuIFVzZSBhbiBhcnJheSB0byBwcm92aWRlIGEgVVJMCiAgICAgKiB0ZW1wbGF0ZSBhbmQgYWRkaXRpb25hbCB2YXJpYWJsZXMgdG8gdXNlIGluIHRoZSBVUkwgdGVtcGxhdGUgZXhwYW5zaW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICRtZXRob2QgIEhUVFAgbWV0aG9kCiAgICAgKiBAcGFyYW0gc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpICAgICBVUkkgb2JqZWN0IG9yIHN0cmluZy4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICRvcHRpb25zIFJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseS4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHJlcXVlc3RBc3luYyhzdHJpbmcgJG1ldGhvZCwgJHVyaSwgYXJyYXkgJG9wdGlvbnMgPSBbXSk6IFByb21pc2VJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHNlbmQgYW4gYXN5bmNocm9ub3VzIEhUVFAgR0VUIHJlcXVlc3QuCiAgICAgKgogICAgICogVXNlIGFuIGFic29sdXRlIHBhdGggdG8gb3ZlcnJpZGUgdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LCBvciBhCiAgICAgKiByZWxhdGl2ZSBwYXRoIHRvIGFwcGVuZCB0byB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQuIFRoZSBVUkwgY2FuCiAgICAgKiBjb250YWluIHRoZSBxdWVyeSBzdHJpbmcgYXMgd2VsbC4gVXNlIGFuIGFycmF5IHRvIHByb3ZpZGUgYSBVUkwKICAgICAqIHRlbXBsYXRlIGFuZCBhZGRpdGlvbmFsIHZhcmlhYmxlcyB0byB1c2UgaW4gdGhlIFVSTCB0ZW1wbGF0ZSBleHBhbnNpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBc3luYygkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdEFzeW5jKCdHRVQnLCAkdXJpLCAkb3B0aW9ucyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHNlbmQgYW4gYXN5bmNocm9ub3VzIEhUVFAgSEVBRCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuIFVzZSBhbiBhcnJheSB0byBwcm92aWRlIGEgVVJMCiAgICAgKiB0ZW1wbGF0ZSBhbmQgYWRkaXRpb25hbCB2YXJpYWJsZXMgdG8gdXNlIGluIHRoZSBVUkwgdGVtcGxhdGUgZXhwYW5zaW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8VXJpSW50ZXJmYWNlICR1cmkgICAgIFVSSSBvYmplY3Qgb3Igc3RyaW5nLgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zIHRvIGFwcGx5LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGVhZEFzeW5jKCR1cmksIGFycmF5ICRvcHRpb25zID0gW10pOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXF1ZXN0QXN5bmMoJ0hFQUQnLCAkdXJpLCAkb3B0aW9ucyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHNlbmQgYW4gYXN5bmNocm9ub3VzIEhUVFAgUFVUIHJlcXVlc3QuCiAgICAgKgogICAgICogVXNlIGFuIGFic29sdXRlIHBhdGggdG8gb3ZlcnJpZGUgdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LCBvciBhCiAgICAgKiByZWxhdGl2ZSBwYXRoIHRvIGFwcGVuZCB0byB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQuIFRoZSBVUkwgY2FuCiAgICAgKiBjb250YWluIHRoZSBxdWVyeSBzdHJpbmcgYXMgd2VsbC4gVXNlIGFuIGFycmF5IHRvIHByb3ZpZGUgYSBVUkwKICAgICAqIHRlbXBsYXRlIGFuZCBhZGRpdGlvbmFsIHZhcmlhYmxlcyB0byB1c2UgaW4gdGhlIFVSTCB0ZW1wbGF0ZSBleHBhbnNpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwdXRBc3luYygkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdEFzeW5jKCdQVVQnLCAkdXJpLCAkb3B0aW9ucyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHNlbmQgYW4gYXN5bmNocm9ub3VzIEhUVFAgUE9TVCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuIFVzZSBhbiBhcnJheSB0byBwcm92aWRlIGEgVVJMCiAgICAgKiB0ZW1wbGF0ZSBhbmQgYWRkaXRpb25hbCB2YXJpYWJsZXMgdG8gdXNlIGluIHRoZSBVUkwgdGVtcGxhdGUgZXhwYW5zaW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8VXJpSW50ZXJmYWNlICR1cmkgICAgIFVSSSBvYmplY3Qgb3Igc3RyaW5nLgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zIHRvIGFwcGx5LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcG9zdEFzeW5jKCR1cmksIGFycmF5ICRvcHRpb25zID0gW10pOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXF1ZXN0QXN5bmMoJ1BPU1QnLCAkdXJpLCAkb3B0aW9ucyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHNlbmQgYW4gYXN5bmNocm9ub3VzIEhUVFAgUEFUQ0ggcmVxdWVzdC4KICAgICAqCiAgICAgKiBVc2UgYW4gYWJzb2x1dGUgcGF0aCB0byBvdmVycmlkZSB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQsIG9yIGEKICAgICAqIHJlbGF0aXZlIHBhdGggdG8gYXBwZW5kIHRvIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudC4gVGhlIFVSTCBjYW4KICAgICAqIGNvbnRhaW4gdGhlIHF1ZXJ5IHN0cmluZyBhcyB3ZWxsLiBVc2UgYW4gYXJyYXkgdG8gcHJvdmlkZSBhIFVSTAogICAgICogdGVtcGxhdGUgYW5kIGFkZGl0aW9uYWwgdmFyaWFibGVzIHRvIHVzZSBpbiB0aGUgVVJMIHRlbXBsYXRlIGV4cGFuc2lvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpICAgICBVUkkgb2JqZWN0IG9yIHN0cmluZy4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICRvcHRpb25zIFJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBhdGNoQXN5bmMoJHVyaSwgYXJyYXkgJG9wdGlvbnMgPSBbXSk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3RBc3luYygnUEFUQ0gnLCAkdXJpLCAkb3B0aW9ucyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHNlbmQgYW4gYXN5bmNocm9ub3VzIEhUVFAgREVMRVRFIHJlcXVlc3QuCiAgICAgKgogICAgICogVXNlIGFuIGFic29sdXRlIHBhdGggdG8gb3ZlcnJpZGUgdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LCBvciBhCiAgICAgKiByZWxhdGl2ZSBwYXRoIHRvIGFwcGVuZCB0byB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQuIFRoZSBVUkwgY2FuCiAgICAgKiBjb250YWluIHRoZSBxdWVyeSBzdHJpbmcgYXMgd2VsbC4gVXNlIGFuIGFycmF5IHRvIHByb3ZpZGUgYSBVUkwKICAgICAqIHRlbXBsYXRlIGFuZCBhZGRpdGlvbmFsIHZhcmlhYmxlcyB0byB1c2UgaW4gdGhlIFVSTCB0ZW1wbGF0ZSBleHBhbnNpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWxldGVBc3luYygkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdEFzeW5jKCdERUxFVEUnLCAkdXJpLCAkb3B0aW9ucyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXENvb2tpZTsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwoKLyoqCiAqIENvb2tpZSBqYXIgdGhhdCBzdG9yZXMgY29va2llcyBhcyBhbiBhcnJheQogKi8KY2xhc3MgQ29va2llSmFyIGltcGxlbWVudHMgQ29va2llSmFySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHZhciBTZXRDb29raWVbXSBMb2FkZWQgY29va2llIGRhdGEKICAgICAqLwogICAgcHJpdmF0ZSAkY29va2llcyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBib29sCiAgICAgKi8KICAgIHByaXZhdGUgJHN0cmljdE1vZGU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYm9vbCAgJHN0cmljdE1vZGUgIFNldCB0byB0cnVlIHRvIHRocm93IGV4Y2VwdGlvbnMgd2hlbiBpbnZhbGlkCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb2tpZXMgYXJlIGFkZGVkIHRvIHRoZSBjb29raWUgamFyLgogICAgICogQHBhcmFtIGFycmF5ICRjb29raWVBcnJheSBBcnJheSBvZiBTZXRDb29raWUgb2JqZWN0cyBvciBhIGhhc2ggb2YKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlzIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCB0aGUgU2V0Q29va2llCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChib29sICRzdHJpY3RNb2RlID0gZmFsc2UsIGFycmF5ICRjb29raWVBcnJheSA9IFtdKQogICAgewogICAgICAgICR0aGlzLT5zdHJpY3RNb2RlID0gJHN0cmljdE1vZGU7CgogICAgICAgIGZvcmVhY2ggKCRjb29raWVBcnJheSBhcyAkY29va2llKSB7CiAgICAgICAgICAgIGlmICghJGNvb2tpZSBpbnN0YW5jZW9mIFNldENvb2tpZSkgewogICAgICAgICAgICAgICAgJGNvb2tpZSA9IG5ldyBTZXRDb29raWUoJGNvb2tpZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPnNldENvb2tpZSgkY29va2llKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgQ29va2llIGphciBmcm9tIGFuIGFzc29jaWF0aXZlIGFycmF5IGFuZCBkb21haW4uCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAkY29va2llcyBDb29raWVzIHRvIGNyZWF0ZSB0aGUgamFyIGZyb20KICAgICAqIEBwYXJhbSBzdHJpbmcgJGRvbWFpbiAgRG9tYWluIHRvIHNldCB0aGUgY29va2llcyB0bwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21BcnJheShhcnJheSAkY29va2llcywgc3RyaW5nICRkb21haW4pOiBzZWxmCiAgICB7CiAgICAgICAgJGNvb2tpZUphciA9IG5ldyBzZWxmKCk7CiAgICAgICAgZm9yZWFjaCAoJGNvb2tpZXMgYXMgJG5hbWUgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICRjb29raWVKYXItPnNldENvb2tpZShuZXcgU2V0Q29va2llKFsKICAgICAgICAgICAgICAgICdEb21haW4nID0+ICRkb21haW4sCiAgICAgICAgICAgICAgICAnTmFtZScgPT4gJG5hbWUsCiAgICAgICAgICAgICAgICAnVmFsdWUnID0+ICR2YWx1ZSwKICAgICAgICAgICAgICAgICdEaXNjYXJkJyA9PiB0cnVlLAogICAgICAgICAgICBdKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvb2tpZUphcjsKICAgIH0KCiAgICAvKioKICAgICAqIEV2YWx1YXRlIGlmIHRoaXMgY29va2llIHNob3VsZCBiZSBwZXJzaXN0ZWQgdG8gc3RvcmFnZQogICAgICogdGhhdCBzdXJ2aXZlcyBiZXR3ZWVuIHJlcXVlc3RzLgogICAgICoKICAgICAqIEBwYXJhbSBTZXRDb29raWUgJGNvb2tpZSAgICAgICAgICAgICAgQmVpbmcgZXZhbHVhdGVkLgogICAgICogQHBhcmFtIGJvb2wgICAgICAkYWxsb3dTZXNzaW9uQ29va2llcyBJZiB3ZSBzaG91bGQgcGVyc2lzdCBzZXNzaW9uIGNvb2tpZXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaG91bGRQZXJzaXN0KFNldENvb2tpZSAkY29va2llLCBib29sICRhbGxvd1Nlc3Npb25Db29raWVzID0gZmFsc2UpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCRjb29raWUtPmdldEV4cGlyZXMoKSB8fCAkYWxsb3dTZXNzaW9uQ29va2llcykgewogICAgICAgICAgICBpZiAoISRjb29raWUtPmdldERpc2NhcmQoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbmRzIGFuZCByZXR1cm5zIHRoZSBjb29raWUgYmFzZWQgb24gdGhlIG5hbWUKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIGNvb2tpZSBuYW1lIHRvIHNlYXJjaCBmb3IKICAgICAqCiAgICAgKiBAcmV0dXJuIFNldENvb2tpZXxudWxsIGNvb2tpZSB0aGF0IHdhcyBmb3VuZCBvciBudWxsIGlmIG5vdCBmb3VuZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29va2llQnlOYW1lKHN0cmluZyAkbmFtZSk6ID9TZXRDb29raWUKICAgIHsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+Y29va2llcyBhcyAkY29va2llKSB7CiAgICAgICAgICAgIGlmICgkY29va2llLT5nZXROYW1lKCkgIT09IG51bGwgJiYgXHN0cmNhc2VjbXAoJGNvb2tpZS0+Z2V0TmFtZSgpLCAkbmFtZSkgPT09IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkY29va2llOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9BcnJheSgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBcYXJyYXlfbWFwKHN0YXRpYyBmdW5jdGlvbiAoU2V0Q29va2llICRjb29raWUpOiBhcnJheSB7CiAgICAgICAgICAgIHJldHVybiAkY29va2llLT50b0FycmF5KCk7CiAgICAgICAgfSwgJHRoaXMtPmdldEl0ZXJhdG9yKCktPmdldEFycmF5Q29weSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xlYXIoP3N0cmluZyAkZG9tYWluID0gbnVsbCwgP3N0cmluZyAkcGF0aCA9IG51bGwsID9zdHJpbmcgJG5hbWUgPSBudWxsKTogdm9pZAogICAgewogICAgICAgIGlmICgkZG9tYWluID09PSBudWxsKSB7CiAgICAgICAgICAgICR0aGlzLT5jb29raWVzID0gW107CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlaWYgKCEkcGF0aCkgewogICAgICAgICAgICAkdGhpcy0+Y29va2llcyA9IFxhcnJheV9maWx0ZXIoCiAgICAgICAgICAgICAgICAkdGhpcy0+Y29va2llcywKICAgICAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoU2V0Q29va2llICRjb29raWUpIHVzZSAoJGRvbWFpbik6IGJvb2wgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkY29va2llLT5nZXREb21haW4oKSA9PT0gbnVsbCB8fCAhJGNvb2tpZS0+bWF0Y2hlc0RvbWFpbigkZG9tYWluKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICB9IGVsc2VpZiAoISRuYW1lKSB7CiAgICAgICAgICAgICR0aGlzLT5jb29raWVzID0gXGFycmF5X2ZpbHRlcigKICAgICAgICAgICAgICAgICR0aGlzLT5jb29raWVzLAogICAgICAgICAgICAgICAgc3RhdGljIGZ1bmN0aW9uIChTZXRDb29raWUgJGNvb2tpZSkgdXNlICgkcGF0aCwgJGRvbWFpbik6IGJvb2wgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhKCRjb29raWUtPmdldERvbWFpbigpICE9PSBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRjb29raWUtPm1hdGNoZXNQYXRoKCRwYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkY29va2llLT5tYXRjaGVzRG9tYWluKCRkb21haW4pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+Y29va2llcyA9IFxhcnJheV9maWx0ZXIoCiAgICAgICAgICAgICAgICAkdGhpcy0+Y29va2llcywKICAgICAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoU2V0Q29va2llICRjb29raWUpIHVzZSAoJHBhdGgsICRkb21haW4sICRuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoJGNvb2tpZS0+Z2V0RG9tYWluKCkgIT09IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGNvb2tpZS0+Z2V0TmFtZSgpID09ICRuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRjb29raWUtPm1hdGNoZXNQYXRoKCRwYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkY29va2llLT5tYXRjaGVzRG9tYWluKCRkb21haW4pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNsZWFyU2Vzc2lvbkNvb2tpZXMoKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5jb29raWVzID0gXGFycmF5X2ZpbHRlcigKICAgICAgICAgICAgJHRoaXMtPmNvb2tpZXMsCiAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoU2V0Q29va2llICRjb29raWUpOiBib29sIHsKICAgICAgICAgICAgICAgIHJldHVybiAhJGNvb2tpZS0+Z2V0RGlzY2FyZCgpICYmICRjb29raWUtPmdldEV4cGlyZXMoKTsKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldENvb2tpZShTZXRDb29raWUgJGNvb2tpZSk6IGJvb2wKICAgIHsKICAgICAgICAvLyBJZiB0aGUgbmFtZSBzdHJpbmcgaXMgZW1wdHkgKGJ1dCBub3QgMCksIGlnbm9yZSB0aGUgc2V0LWNvb2tpZQogICAgICAgIC8vIHN0cmluZyBlbnRpcmVseS4KICAgICAgICAkbmFtZSA9ICRjb29raWUtPmdldE5hbWUoKTsKICAgICAgICBpZiAoISRuYW1lICYmICRuYW1lICE9PSAnMCcpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLy8gT25seSBhbGxvdyBjb29raWVzIHdpdGggc2V0IGFuZCB2YWxpZCBkb21haW4sIG5hbWUsIHZhbHVlCiAgICAgICAgJHJlc3VsdCA9ICRjb29raWUtPnZhbGlkYXRlKCk7CiAgICAgICAgaWYgKCRyZXN1bHQgIT09IHRydWUpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5zdHJpY3RNb2RlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0ludmFsaWQgY29va2llOiAnLiRyZXN1bHQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5yZW1vdmVDb29raWVJZkVtcHR5KCRjb29raWUpOwoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLy8gUmVzb2x2ZSBjb25mbGljdHMgd2l0aCBwcmV2aW91c2x5IHNldCBjb29raWVzCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmNvb2tpZXMgYXMgJGkgPT4gJGMpIHsKICAgICAgICAgICAgLy8gVHdvIGNvb2tpZXMgYXJlIGlkZW50aWNhbCwgd2hlbiB0aGVpciBwYXRoLCBhbmQgZG9tYWluIGFyZQogICAgICAgICAgICAvLyBpZGVudGljYWwuCiAgICAgICAgICAgIGlmICgkYy0+Z2V0UGF0aCgpICE9ICRjb29raWUtPmdldFBhdGgoKQogICAgICAgICAgICAgICAgfHwgJGMtPmdldERvbWFpbigpICE9ICRjb29raWUtPmdldERvbWFpbigpCiAgICAgICAgICAgICAgICB8fCAkYy0+Z2V0TmFtZSgpICE9ICRjb29raWUtPmdldE5hbWUoKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBUaGUgcHJldmlvdXNseSBzZXQgY29va2llIGlzIGEgZGlzY2FyZCBjb29raWUgYW5kIHRoaXMgb25lIGlzCiAgICAgICAgICAgIC8vIG5vdCBzbyBhbGxvdyB0aGUgbmV3IGNvb2tpZSB0byBiZSBzZXQKICAgICAgICAgICAgaWYgKCEkY29va2llLT5nZXREaXNjYXJkKCkgJiYgJGMtPmdldERpc2NhcmQoKSkgewogICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmNvb2tpZXNbJGldKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB0aGUgbmV3IGNvb2tpZSdzIGV4cGlyYXRpb24gaXMgZnVydGhlciBpbnRvIHRoZSBmdXR1cmUsIHRoZW4KICAgICAgICAgICAgLy8gcmVwbGFjZSB0aGUgb2xkIGNvb2tpZQogICAgICAgICAgICBpZiAoJGNvb2tpZS0+Z2V0RXhwaXJlcygpID4gJGMtPmdldEV4cGlyZXMoKSkgewogICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmNvb2tpZXNbJGldKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWQsIHdlIGJldHRlciBjaGFuZ2UgaXQKICAgICAgICAgICAgaWYgKCRjb29raWUtPmdldFZhbHVlKCkgIT09ICRjLT5nZXRWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+Y29va2llc1skaV0pOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFRoZSBjb29raWUgZXhpc3RzLCBzbyBubyBuZWVkIHRvIGNvbnRpbnVlCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jb29raWVzW10gPSAkY29va2llOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnQoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuIFxjb3VudCgkdGhpcy0+Y29va2llcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxBcnJheUl0ZXJhdG9yPGludCwgU2V0Q29va2llPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SXRlcmF0b3IoKTogXEFycmF5SXRlcmF0b3IKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFxBcnJheUl0ZXJhdG9yKFxhcnJheV92YWx1ZXMoJHRoaXMtPmNvb2tpZXMpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXh0cmFjdENvb2tpZXMoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlKTogdm9pZAogICAgewogICAgICAgIGlmICgkY29va2llSGVhZGVyID0gJHJlc3BvbnNlLT5nZXRIZWFkZXIoJ1NldC1Db29raWUnKSkgewogICAgICAgICAgICBmb3JlYWNoICgkY29va2llSGVhZGVyIGFzICRjb29raWUpIHsKICAgICAgICAgICAgICAgICRzYyA9IFNldENvb2tpZTo6ZnJvbVN0cmluZygkY29va2llKTsKICAgICAgICAgICAgICAgIGlmICghJHNjLT5nZXREb21haW4oKSkgewogICAgICAgICAgICAgICAgICAgICRzYy0+c2V0RG9tYWluKCRyZXF1ZXN0LT5nZXRVcmkoKS0+Z2V0SG9zdCgpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgwICE9PSBcc3RycG9zKCRzYy0+Z2V0UGF0aCgpLCAnLycpKSB7CiAgICAgICAgICAgICAgICAgICAgJHNjLT5zZXRQYXRoKCR0aGlzLT5nZXRDb29raWVQYXRoRnJvbVJlcXVlc3QoJHJlcXVlc3QpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghJHNjLT5tYXRjaGVzRG9tYWluKCRyZXF1ZXN0LT5nZXRVcmkoKS0+Z2V0SG9zdCgpKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gTm90ZTogQXQgdGhpcyBwb2ludCBgJHNjLT5nZXREb21haW4oKWAgYmVpbmcgYSBwdWJsaWMgc3VmZml4IHNob3VsZAogICAgICAgICAgICAgICAgLy8gYmUgcmVqZWN0ZWQsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIHB1bGwgaW4gdGhlIGZ1bGwgUFNMIGRlcGVuZGVuY3kuCiAgICAgICAgICAgICAgICAkdGhpcy0+c2V0Q29va2llKCRzYyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21wdXRlcyBjb29raWUgcGF0aCBmb2xsb3dpbmcgUkZDIDYyNjUgc2VjdGlvbiA1LjEuNAogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2MjY1I3NlY3Rpb24tNS4xLjQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRDb29raWVQYXRoRnJvbVJlcXVlc3QoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCk6IHN0cmluZwogICAgewogICAgICAgICR1cmlQYXRoID0gJHJlcXVlc3QtPmdldFVyaSgpLT5nZXRQYXRoKCk7CiAgICAgICAgaWYgKCcnID09PSAkdXJpUGF0aCkgewogICAgICAgICAgICByZXR1cm4gJy8nOwogICAgICAgIH0KICAgICAgICBpZiAoMCAhPT0gXHN0cnBvcygkdXJpUGF0aCwgJy8nKSkgewogICAgICAgICAgICByZXR1cm4gJy8nOwogICAgICAgIH0KICAgICAgICBpZiAoJy8nID09PSAkdXJpUGF0aCkgewogICAgICAgICAgICByZXR1cm4gJy8nOwogICAgICAgIH0KICAgICAgICAkbGFzdFNsYXNoUG9zID0gXHN0cnJwb3MoJHVyaVBhdGgsICcvJyk7CiAgICAgICAgaWYgKDAgPT09ICRsYXN0U2xhc2hQb3MgfHwgZmFsc2UgPT09ICRsYXN0U2xhc2hQb3MpIHsKICAgICAgICAgICAgcmV0dXJuICcvJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcc3Vic3RyKCR1cmlQYXRoLCAwLCAkbGFzdFNsYXNoUG9zKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aENvb2tpZUhlYWRlcihSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0KTogUmVxdWVzdEludGVyZmFjZQogICAgewogICAgICAgICR2YWx1ZXMgPSBbXTsKICAgICAgICAkdXJpID0gJHJlcXVlc3QtPmdldFVyaSgpOwogICAgICAgICRzY2hlbWUgPSAkdXJpLT5nZXRTY2hlbWUoKTsKICAgICAgICAkaG9zdCA9ICR1cmktPmdldEhvc3QoKTsKICAgICAgICAkcGF0aCA9ICR1cmktPmdldFBhdGgoKSA/OiAnLyc7CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5jb29raWVzIGFzICRjb29raWUpIHsKICAgICAgICAgICAgaWYgKCRjb29raWUtPmdldERvbWFpbigpICE9PSBudWxsCiAgICAgICAgICAgICAgICAmJiAkY29va2llLT5tYXRjaGVzUGF0aCgkcGF0aCkKICAgICAgICAgICAgICAgICYmICRjb29raWUtPm1hdGNoZXNEb21haW4oJGhvc3QpCiAgICAgICAgICAgICAgICAmJiAhJGNvb2tpZS0+aXNFeHBpcmVkKCkKICAgICAgICAgICAgICAgICYmICghJGNvb2tpZS0+Z2V0U2VjdXJlKCkgfHwgJHNjaGVtZSA9PT0gJ2h0dHBzJykKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkdmFsdWVzW10gPSAkY29va2llLT5nZXROYW1lKCkuJz0nCiAgICAgICAgICAgICAgICAgICAgLiRjb29raWUtPmdldFZhbHVlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkdmFsdWVzCiAgICAgICAgICAgID8gJHJlcXVlc3QtPndpdGhIZWFkZXIoJ0Nvb2tpZScsIFxpbXBsb2RlKCc7ICcsICR2YWx1ZXMpKQogICAgICAgICAgICA6ICRyZXF1ZXN0OwogICAgfQoKICAgIC8qKgogICAgICogSWYgYSBjb29raWUgYWxyZWFkeSBleGlzdHMgYW5kIHRoZSBzZXJ2ZXIgYXNrcyB0byBzZXQgaXQgYWdhaW4gd2l0aCBhCiAgICAgKiBudWxsIHZhbHVlLCB0aGUgY29va2llIG11c3QgYmUgZGVsZXRlZC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiByZW1vdmVDb29raWVJZkVtcHR5KFNldENvb2tpZSAkY29va2llKTogdm9pZAogICAgewogICAgICAgICRjb29raWVWYWx1ZSA9ICRjb29raWUtPmdldFZhbHVlKCk7CiAgICAgICAgaWYgKCgkY29va2llVmFsdWUgPT09IG51bGwgfHwgJGNvb2tpZVZhbHVlID09PSAnJykgJiYgJGNvb2tpZS0+Z2V0RG9tYWluKCkgIT09IG51bGwpIHsKICAgICAgICAgICAgJHRoaXMtPmNsZWFyKAogICAgICAgICAgICAgICAgJGNvb2tpZS0+Z2V0RG9tYWluKCksCiAgICAgICAgICAgICAgICAkY29va2llLT5nZXRQYXRoKCksCiAgICAgICAgICAgICAgICAkY29va2llLT5nZXROYW1lKCkKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXENvb2tpZTsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwoKLyoqCiAqIFN0b3JlcyBIVFRQIGNvb2tpZXMuCiAqCiAqIEl0IGV4dHJhY3RzIGNvb2tpZXMgZnJvbSBIVFRQIHJlcXVlc3RzLCBhbmQgcmV0dXJucyB0aGVtIGluIEhUVFAgcmVzcG9uc2VzLgogKiBDb29raWVKYXJJbnRlcmZhY2UgaW5zdGFuY2VzIGF1dG9tYXRpY2FsbHkgZXhwaXJlIGNvbnRhaW5lZCBjb29raWVzIHdoZW4KICogbmVjZXNzYXJ5LiBTdWJjbGFzc2VzIGFyZSBhbHNvIHJlc3BvbnNpYmxlIGZvciBzdG9yaW5nIGFuZCByZXRyaWV2aW5nCiAqIGNvb2tpZXMgZnJvbSBhIGZpbGUsIGRhdGFiYXNlLCBldGMuCiAqCiAqIEBzZWUgaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMi9saWJyYXJ5L2Nvb2tpZWxpYi5odG1sIEluc3BpcmF0aW9uCiAqCiAqIEBleHRlbmRzIFxJdGVyYXRvckFnZ3JlZ2F0ZTxTZXRDb29raWU+CiAqLwppbnRlcmZhY2UgQ29va2llSmFySW50ZXJmYWNlIGV4dGVuZHMgXENvdW50YWJsZSwgXEl0ZXJhdG9yQWdncmVnYXRlCnsKICAgIC8qKgogICAgICogQ3JlYXRlIGEgcmVxdWVzdCB3aXRoIGFkZGVkIGNvb2tpZSBoZWFkZXJzLgogICAgICoKICAgICAqIElmIG5vIG1hdGNoaW5nIGNvb2tpZXMgYXJlIGZvdW5kIGluIHRoZSBjb29raWUgamFyLCB0aGVuIG5vIENvb2tpZQogICAgICogaGVhZGVyIGlzIGFkZGVkIHRvIHRoZSByZXF1ZXN0IGFuZCB0aGUgc2FtZSByZXF1ZXN0IGlzIHJldHVybmVkLgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0IFJlcXVlc3Qgb2JqZWN0IHRvIG1vZGlmeS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFJlcXVlc3RJbnRlcmZhY2UgcmV0dXJucyB0aGUgbW9kaWZpZWQgcmVxdWVzdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhDb29raWVIZWFkZXIoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCk6IFJlcXVlc3RJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBFeHRyYWN0IGNvb2tpZXMgZnJvbSBhbiBIVFRQIHJlc3BvbnNlIGFuZCBzdG9yZSB0aGVtIGluIHRoZSBDb29raWVKYXIuCiAgICAgKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgICRyZXF1ZXN0ICBSZXF1ZXN0IHRoYXQgd2FzIHNlbnQKICAgICAqIEBwYXJhbSBSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UgUmVzcG9uc2UgdGhhdCB3YXMgcmVjZWl2ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGV4dHJhY3RDb29raWVzKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIFJlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSk6IHZvaWQ7CgogICAgLyoqCiAgICAgKiBTZXRzIGEgY29va2llIGluIHRoZSBjb29raWUgamFyLgogICAgICoKICAgICAqIEBwYXJhbSBTZXRDb29raWUgJGNvb2tpZSBDb29raWUgdG8gc2V0LgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbCBSZXR1cm5zIHRydWUgb24gc3VjY2VzcyBvciBmYWxzZSBvbiBmYWlsdXJlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRDb29raWUoU2V0Q29va2llICRjb29raWUpOiBib29sOwoKICAgIC8qKgogICAgICogUmVtb3ZlIGNvb2tpZXMgY3VycmVudGx5IGhlbGQgaW4gdGhlIGNvb2tpZSBqYXIuCiAgICAgKgogICAgICogSW52b2tpbmcgdGhpcyBtZXRob2Qgd2l0aG91dCBhcmd1bWVudHMgd2lsbCBlbXB0eSB0aGUgd2hvbGUgY29va2llIGphci4KICAgICAqIElmIGdpdmVuIGEgJGRvbWFpbiBhcmd1bWVudCBvbmx5IGNvb2tpZXMgYmVsb25naW5nIHRvIHRoYXQgZG9tYWluIHdpbGwKICAgICAqIGJlIHJlbW92ZWQuIElmIGdpdmVuIGEgJGRvbWFpbiBhbmQgJHBhdGggYXJndW1lbnQsIGNvb2tpZXMgYmVsb25naW5nIHRvCiAgICAgKiB0aGUgc3BlY2lmaWVkIHBhdGggd2l0aGluIHRoYXQgZG9tYWluIGFyZSByZW1vdmVkLiBJZiBnaXZlbiBhbGwgdGhyZWUKICAgICAqIGFyZ3VtZW50cywgdGhlbiB0aGUgY29va2llIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLCBwYXRoIGFuZCBkb21haW4gaXMKICAgICAqIHJlbW92ZWQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRkb21haW4gQ2xlYXJzIGNvb2tpZXMgbWF0Y2hpbmcgYSBkb21haW4KICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkcGF0aCAgIENsZWFycyBjb29raWVzIG1hdGNoaW5nIGEgZG9tYWluIGFuZCBwYXRoCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJG5hbWUgICBDbGVhcnMgY29va2llcyBtYXRjaGluZyBhIGRvbWFpbiwgcGF0aCwgYW5kIG5hbWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNsZWFyKD9zdHJpbmcgJGRvbWFpbiA9IG51bGwsID9zdHJpbmcgJHBhdGggPSBudWxsLCA/c3RyaW5nICRuYW1lID0gbnVsbCk6IHZvaWQ7CgogICAgLyoqCiAgICAgKiBEaXNjYXJkIGFsbCBzZXNzaW9ucyBjb29raWVzLgogICAgICoKICAgICAqIFJlbW92ZXMgY29va2llcyB0aGF0IGRvbid0IGhhdmUgYW4gZXhwaXJlIGZpZWxkIG9yIGEgaGF2ZSBhIGRpc2NhcmQKICAgICAqIGZpZWxkIHNldCB0byB0cnVlLiBUbyBiZSBjYWxsZWQgd2hlbiB0aGUgdXNlciBhZ2VudCBzaHV0cyBkb3duIGFjY29yZGluZwogICAgICogdG8gUkZDIDI5NjUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbGVhclNlc3Npb25Db29raWVzKCk6IHZvaWQ7CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyB0aGUgY29va2llIGphciB0byBhbiBhcnJheS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQXJyYXkoKTogYXJyYXk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXENvb2tpZTsKCnVzZSBHdXp6bGVIdHRwXFV0aWxzOwoKLyoqCiAqIFBlcnNpc3RzIG5vbi1zZXNzaW9uIGNvb2tpZXMgdXNpbmcgYSBKU09OIGZvcm1hdHRlZCBmaWxlCiAqLwpjbGFzcyBGaWxlQ29va2llSmFyIGV4dGVuZHMgQ29va2llSmFyCnsKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcgZmlsZW5hbWUKICAgICAqLwogICAgcHJpdmF0ZSAkZmlsZW5hbWU7CgogICAgLyoqCiAgICAgKiBAdmFyIGJvb2wgQ29udHJvbCB3aGV0aGVyIHRvIHBlcnNpc3Qgc2Vzc2lvbiBjb29raWVzIG9yIG5vdC4KICAgICAqLwogICAgcHJpdmF0ZSAkc3RvcmVTZXNzaW9uQ29va2llczsKCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyBGaWxlQ29va2llSmFyIG9iamVjdAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvb2tpZUZpbGUgICAgICAgICAgRmlsZSB0byBzdG9yZSB0aGUgY29va2llIGRhdGEKICAgICAqIEBwYXJhbSBib29sICAgJHN0b3JlU2Vzc2lvbkNvb2tpZXMgU2V0IHRvIHRydWUgdG8gc3RvcmUgc2Vzc2lvbiBjb29raWVzCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBjb29raWUgamFyLgogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIGZpbGUgY2Fubm90IGJlIGZvdW5kIG9yIGNyZWF0ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkY29va2llRmlsZSwgYm9vbCAkc3RvcmVTZXNzaW9uQ29va2llcyA9IGZhbHNlKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoKTsKICAgICAgICAkdGhpcy0+ZmlsZW5hbWUgPSAkY29va2llRmlsZTsKICAgICAgICAkdGhpcy0+c3RvcmVTZXNzaW9uQ29va2llcyA9ICRzdG9yZVNlc3Npb25Db29raWVzOwoKICAgICAgICBpZiAoXGZpbGVfZXhpc3RzKCRjb29raWVGaWxlKSkgewogICAgICAgICAgICAkdGhpcy0+bG9hZCgkY29va2llRmlsZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogU2F2ZXMgdGhlIGZpbGUgd2hlbiBzaHV0dGluZyBkb3duCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2Rlc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+c2F2ZSgkdGhpcy0+ZmlsZW5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogU2F2ZXMgdGhlIGNvb2tpZXMgdG8gYSBmaWxlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lIEZpbGUgdG8gc2F2ZQogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIGZpbGUgY2Fubm90IGJlIGZvdW5kIG9yIGNyZWF0ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNhdmUoc3RyaW5nICRmaWxlbmFtZSk6IHZvaWQKICAgIHsKICAgICAgICAkanNvbiA9IFtdOwogICAgICAgIC8qKiBAdmFyIFNldENvb2tpZSAkY29va2llICovCiAgICAgICAgZm9yZWFjaCAoJHRoaXMgYXMgJGNvb2tpZSkgewogICAgICAgICAgICBpZiAoQ29va2llSmFyOjpzaG91bGRQZXJzaXN0KCRjb29raWUsICR0aGlzLT5zdG9yZVNlc3Npb25Db29raWVzKSkgewogICAgICAgICAgICAgICAgJGpzb25bXSA9ICRjb29raWUtPnRvQXJyYXkoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGpzb25TdHIgPSBVdGlsczo6anNvbkVuY29kZSgkanNvbik7CiAgICAgICAgaWYgKGZhbHNlID09PSBcZmlsZV9wdXRfY29udGVudHMoJGZpbGVuYW1lLCAkanNvblN0ciwgXExPQ0tfRVgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiVW5hYmxlIHRvIHNhdmUgZmlsZSB7JGZpbGVuYW1lfSIpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIExvYWQgY29va2llcyBmcm9tIGEgSlNPTiBmb3JtYXR0ZWQgZmlsZS4KICAgICAqCiAgICAgKiBPbGQgY29va2llcyBhcmUga2VwdCB1bmxlc3Mgb3ZlcndyaXR0ZW4gYnkgbmV3bHkgbG9hZGVkIG9uZXMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZmlsZW5hbWUgQ29va2llIGZpbGUgdG8gbG9hZC4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBmaWxlIGNhbm5vdCBiZSBsb2FkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkKHN0cmluZyAkZmlsZW5hbWUpOiB2b2lkCiAgICB7CiAgICAgICAgJGpzb24gPSBcZmlsZV9nZXRfY29udGVudHMoJGZpbGVuYW1lKTsKICAgICAgICBpZiAoZmFsc2UgPT09ICRqc29uKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiVW5hYmxlIHRvIGxvYWQgZmlsZSB7JGZpbGVuYW1lfSIpOwogICAgICAgIH0KICAgICAgICBpZiAoJGpzb24gPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRkYXRhID0gVXRpbHM6Ompzb25EZWNvZGUoJGpzb24sIHRydWUpOwogICAgICAgIGlmIChcaXNfYXJyYXkoJGRhdGEpKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRkYXRhIGFzICRjb29raWUpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zZXRDb29raWUobmV3IFNldENvb2tpZSgkY29va2llKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoXGlzX3NjYWxhcigkZGF0YSkgJiYgIWVtcHR5KCRkYXRhKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkludmFsaWQgY29va2llIGZpbGU6IHskZmlsZW5hbWV9Iik7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXENvb2tpZTsKCi8qKgogKiBQZXJzaXN0cyBjb29raWVzIGluIHRoZSBjbGllbnQgc2Vzc2lvbgogKi8KY2xhc3MgU2Vzc2lvbkNvb2tpZUphciBleHRlbmRzIENvb2tpZUphcgp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nIHNlc3Npb24ga2V5CiAgICAgKi8KICAgIHByaXZhdGUgJHNlc3Npb25LZXk7CgogICAgLyoqCiAgICAgKiBAdmFyIGJvb2wgQ29udHJvbCB3aGV0aGVyIHRvIHBlcnNpc3Qgc2Vzc2lvbiBjb29raWVzIG9yIG5vdC4KICAgICAqLwogICAgcHJpdmF0ZSAkc3RvcmVTZXNzaW9uQ29va2llczsKCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyBTZXNzaW9uQ29va2llSmFyIG9iamVjdAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNlc3Npb25LZXkgICAgICAgICAgU2Vzc2lvbiBrZXkgbmFtZSB0byBzdG9yZSB0aGUgY29va2llCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgaW4gc2Vzc2lvbgogICAgICogQHBhcmFtIGJvb2wgICAkc3RvcmVTZXNzaW9uQ29va2llcyBTZXQgdG8gdHJ1ZSB0byBzdG9yZSBzZXNzaW9uIGNvb2tpZXMKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGNvb2tpZSBqYXIuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJHNlc3Npb25LZXksIGJvb2wgJHN0b3JlU2Vzc2lvbkNvb2tpZXMgPSBmYWxzZSkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CiAgICAgICAgJHRoaXMtPnNlc3Npb25LZXkgPSAkc2Vzc2lvbktleTsKICAgICAgICAkdGhpcy0+c3RvcmVTZXNzaW9uQ29va2llcyA9ICRzdG9yZVNlc3Npb25Db29raWVzOwogICAgICAgICR0aGlzLT5sb2FkKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTYXZlcyBjb29raWVzIHRvIHNlc3Npb24gd2hlbiBzaHV0dGluZyBkb3duCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2Rlc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+c2F2ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogU2F2ZSBjb29raWVzIHRvIHRoZSBjbGllbnQgc2Vzc2lvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZSgpOiB2b2lkCiAgICB7CiAgICAgICAgJGpzb24gPSBbXTsKICAgICAgICAvKiogQHZhciBTZXRDb29raWUgJGNvb2tpZSAqLwogICAgICAgIGZvcmVhY2ggKCR0aGlzIGFzICRjb29raWUpIHsKICAgICAgICAgICAgaWYgKENvb2tpZUphcjo6c2hvdWxkUGVyc2lzdCgkY29va2llLCAkdGhpcy0+c3RvcmVTZXNzaW9uQ29va2llcykpIHsKICAgICAgICAgICAgICAgICRqc29uW10gPSAkY29va2llLT50b0FycmF5KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRqc29uID0gXGpzb25fZW5jb2RlKCRqc29uKTsKICAgICAgICBpZiAoZmFsc2UgPT09ICRqc29uKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVW5hYmxlIHRvIGVuY29kZSBjb29raWUgZGF0YScpOwogICAgICAgIH0KCiAgICAgICAgJF9TRVNTSU9OWyR0aGlzLT5zZXNzaW9uS2V5XSA9ICRqc29uOwogICAgfQoKICAgIC8qKgogICAgICogTG9hZCB0aGUgY29udGVudHMgb2YgdGhlIGNsaWVudCBzZXNzaW9uIGludG8gdGhlIGRhdGEgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxvYWQoKTogdm9pZAogICAgewogICAgICAgIGlmICghaXNzZXQoJF9TRVNTSU9OWyR0aGlzLT5zZXNzaW9uS2V5XSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJGpzb24gPSAkX1NFU1NJT05bJHRoaXMtPnNlc3Npb25LZXldOwogICAgICAgIGlmICghXGlzX3N0cmluZygkanNvbikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdJbnZhbGlkIGNvb2tpZSBkYXRhJyk7CiAgICAgICAgfQoKICAgICAgICAkZGF0YSA9IFxqc29uX2RlY29kZSgkanNvbiwgdHJ1ZSk7CiAgICAgICAgaWYgKFxpc19hcnJheSgkZGF0YSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGRhdGEgYXMgJGNvb2tpZSkgewogICAgICAgICAgICAgICAgaWYgKCFcaXNfYXJyYXkoJGNvb2tpZSkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0ludmFsaWQgY29va2llIGRhdGEnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGhpcy0+c2V0Q29va2llKG5ldyBTZXRDb29raWUoJGNvb2tpZSkpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKFxpc19zY2FsYXIoJGRhdGEpICYmIFxzdHJsZW4oKHN0cmluZykgJGRhdGEpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignSW52YWxpZCBjb29raWUgZGF0YScpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXENvb2tpZTsKCi8qKgogKiBTZXQtQ29va2llIG9iamVjdAogKi8KY2xhc3MgU2V0Q29va2llCnsKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkZGVmYXVsdHMgPSBbCiAgICAgICAgJ05hbWUnID0+IG51bGwsCiAgICAgICAgJ1ZhbHVlJyA9PiBudWxsLAogICAgICAgICdEb21haW4nID0+IG51bGwsCiAgICAgICAgJ1BhdGgnID0+ICcvJywKICAgICAgICAnTWF4LUFnZScgPT4gbnVsbCwKICAgICAgICAnRXhwaXJlcycgPT4gbnVsbCwKICAgICAgICAnU2VjdXJlJyA9PiBmYWxzZSwKICAgICAgICAnRGlzY2FyZCcgPT4gZmFsc2UsCiAgICAgICAgJ0h0dHBPbmx5JyA9PiBmYWxzZSwKICAgIF07CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5IENvb2tpZSBkYXRhCiAgICAgKi8KICAgIHByaXZhdGUgJGRhdGE7CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgU2V0Q29va2llIG9iamVjdCBmcm9tIGEgc3RyaW5nLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvb2tpZSBTZXQtQ29va2llIGhlYWRlciBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tU3RyaW5nKHN0cmluZyAkY29va2llKTogc2VsZgogICAgewogICAgICAgIC8vIENyZWF0ZSB0aGUgZGVmYXVsdCByZXR1cm4gYXJyYXkKICAgICAgICAkZGF0YSA9IHNlbGY6OiRkZWZhdWx0czsKICAgICAgICAvLyBFeHBsb2RlIHRoZSBjb29raWUgc3RyaW5nIHVzaW5nIGEgc2VyaWVzIG9mIHNlbWljb2xvbnMKICAgICAgICAkcGllY2VzID0gXGFycmF5X2ZpbHRlcihcYXJyYXlfbWFwKCd0cmltJywgXGV4cGxvZGUoJzsnLCAkY29va2llKSkpOwogICAgICAgIC8vIFRoZSBuYW1lIG9mIHRoZSBjb29raWUgKGZpcnN0IGt2cCkgbXVzdCBleGlzdCBhbmQgaW5jbHVkZSBhbiBlcXVhbCBzaWduLgogICAgICAgIGlmICghaXNzZXQoJHBpZWNlc1swXSkgfHwgXHN0cnBvcygkcGllY2VzWzBdLCAnPScpID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gbmV3IHNlbGYoJGRhdGEpOwogICAgICAgIH0KCiAgICAgICAgLy8gQWRkIHRoZSBjb29raWUgcGllY2VzIGludG8gdGhlIHBhcnNlZCBkYXRhIGFycmF5CiAgICAgICAgZm9yZWFjaCAoJHBpZWNlcyBhcyAkcGFydCkgewogICAgICAgICAgICAkY29va2llUGFydHMgPSBcZXhwbG9kZSgnPScsICRwYXJ0LCAyKTsKICAgICAgICAgICAgJGtleSA9IFx0cmltKCRjb29raWVQYXJ0c1swXSk7CiAgICAgICAgICAgICR2YWx1ZSA9IGlzc2V0KCRjb29raWVQYXJ0c1sxXSkKICAgICAgICAgICAgICAgID8gXHRyaW0oJGNvb2tpZVBhcnRzWzFdLCAiIFxuXHJcdFwwXHgwQiIpCiAgICAgICAgICAgICAgICA6IHRydWU7CgogICAgICAgICAgICAvLyBPbmx5IGNoZWNrIGZvciBub24tY29va2llcyB3aGVuIGNvb2tpZXMgaGF2ZSBiZWVuIGZvdW5kCiAgICAgICAgICAgIGlmICghaXNzZXQoJGRhdGFbJ05hbWUnXSkpIHsKICAgICAgICAgICAgICAgICRkYXRhWydOYW1lJ10gPSAka2V5OwogICAgICAgICAgICAgICAgJGRhdGFbJ1ZhbHVlJ10gPSAkdmFsdWU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoIChcYXJyYXlfa2V5cyhzZWxmOjokZGVmYXVsdHMpIGFzICRzZWFyY2gpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIVxzdHJjYXNlY21wKCRzZWFyY2gsICRrZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2VhcmNoID09PSAnTWF4LUFnZScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19udW1lcmljKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGF0YVskc2VhcmNoXSA9IChpbnQpICR2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRzZWFyY2ggPT09ICdTZWN1cmUnIHx8ICRzZWFyY2ggPT09ICdEaXNjYXJkJyB8fCAkc2VhcmNoID09PSAnSHR0cE9ubHknKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRhdGFbJHNlYXJjaF0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRhdGFbJHNlYXJjaF0gPSAkdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkZGF0YVska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCRkYXRhKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkZGF0YSBBcnJheSBvZiBjb29raWUgZGF0YSBwcm92aWRlZCBieSBhIENvb2tpZSBwYXJzZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRkYXRhID0gW10pCiAgICB7CiAgICAgICAgJHRoaXMtPmRhdGEgPSBzZWxmOjokZGVmYXVsdHM7CgogICAgICAgIGlmIChpc3NldCgkZGF0YVsnTmFtZSddKSkgewogICAgICAgICAgICAkdGhpcy0+c2V0TmFtZSgkZGF0YVsnTmFtZSddKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkZGF0YVsnVmFsdWUnXSkpIHsKICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlKCRkYXRhWydWYWx1ZSddKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkZGF0YVsnRG9tYWluJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXREb21haW4oJGRhdGFbJ0RvbWFpbiddKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkZGF0YVsnUGF0aCddKSkgewogICAgICAgICAgICAkdGhpcy0+c2V0UGF0aCgkZGF0YVsnUGF0aCddKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkZGF0YVsnTWF4LUFnZSddKSkgewogICAgICAgICAgICAkdGhpcy0+c2V0TWF4QWdlKCRkYXRhWydNYXgtQWdlJ10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRkYXRhWydFeHBpcmVzJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRFeHBpcmVzKCRkYXRhWydFeHBpcmVzJ10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRkYXRhWydTZWN1cmUnXSkpIHsKICAgICAgICAgICAgJHRoaXMtPnNldFNlY3VyZSgkZGF0YVsnU2VjdXJlJ10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRkYXRhWydEaXNjYXJkJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXREaXNjYXJkKCRkYXRhWydEaXNjYXJkJ10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRkYXRhWydIdHRwT25seSddKSkgewogICAgICAgICAgICAkdGhpcy0+c2V0SHR0cE9ubHkoJGRhdGFbJ0h0dHBPbmx5J10pOwogICAgICAgIH0KCiAgICAgICAgLy8gU2V0IHRoZSByZW1haW5pbmcgdmFsdWVzIHRoYXQgZG9uJ3QgaGF2ZSBleHRyYSB2YWxpZGF0aW9uIGxvZ2ljCiAgICAgICAgZm9yZWFjaCAoYXJyYXlfZGlmZihhcnJheV9rZXlzKCRkYXRhKSwgYXJyYXlfa2V5cyhzZWxmOjokZGVmYXVsdHMpKSBhcyAka2V5KSB7CiAgICAgICAgICAgICR0aGlzLT5kYXRhWyRrZXldID0gJGRhdGFbJGtleV07CiAgICAgICAgfQoKICAgICAgICAvLyBFeHRyYWN0IHRoZSBFeHBpcmVzIHZhbHVlIGFuZCB0dXJuIGl0IGludG8gYSBVTklYIHRpbWVzdGFtcCBpZiBuZWVkZWQKICAgICAgICBpZiAoISR0aGlzLT5nZXRFeHBpcmVzKCkgJiYgJHRoaXMtPmdldE1heEFnZSgpKSB7CiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgRXhwaXJlcyBkYXRlCiAgICAgICAgICAgICR0aGlzLT5zZXRFeHBpcmVzKFx0aW1lKCkgKyAkdGhpcy0+Z2V0TWF4QWdlKCkpOwogICAgICAgIH0gZWxzZWlmIChudWxsICE9PSAoJGV4cGlyZXMgPSAkdGhpcy0+Z2V0RXhwaXJlcygpKSAmJiAhXGlzX251bWVyaWMoJGV4cGlyZXMpKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRFeHBpcmVzKCRleHBpcmVzKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgICRzdHIgPSAkdGhpcy0+ZGF0YVsnTmFtZSddLic9Jy4oJHRoaXMtPmRhdGFbJ1ZhbHVlJ10gPz8gJycpLic7ICc7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmRhdGEgYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgaWYgKCRrICE9PSAnTmFtZScgJiYgJGsgIT09ICdWYWx1ZScgJiYgJHYgIT09IG51bGwgJiYgJHYgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBpZiAoJGsgPT09ICdFeHBpcmVzJykgewogICAgICAgICAgICAgICAgICAgICRzdHIgLj0gJ0V4cGlyZXM9Jy5cZ21kYXRlKCdELCBkIE0gWSBIOmk6cyBcR1xNXFQnLCAkdikuJzsgJzsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHN0ciAuPSAoJHYgPT09IHRydWUgPyAkayA6ICJ7JGt9PXskdn0iKS4nOyAnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXHJ0cmltKCRzdHIsICc7ICcpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0b0FycmF5KCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjb29raWUgbmFtZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWydOYW1lJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGNvb2tpZSBuYW1lLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgQ29va2llIG5hbWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldE5hbWUoJG5hbWUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJG5hbWUpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKCdndXp6bGVodHRwL2d1enpsZScsICc3LjQnLCAnTm90IHBhc3NpbmcgYSBzdHJpbmcgdG8gJXM6OiVzKCkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBjYXVzZSBhbiBlcnJvciBpbiA4LjAuJywgX19DTEFTU19fLCBfX0ZVTkNUSU9OX18pOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmRhdGFbJ05hbWUnXSA9IChzdHJpbmcpICRuYW1lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjb29raWUgdmFsdWUuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGF0YVsnVmFsdWUnXTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgY29va2llIHZhbHVlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlIENvb2tpZSB2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VmFsdWUoJHZhbHVlKTogdm9pZAogICAgewogICAgICAgIGlmICghaXNfc3RyaW5nKCR2YWx1ZSkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oJ2d1enpsZWh0dHAvZ3V6emxlJywgJzcuNCcsICdOb3QgcGFzc2luZyBhIHN0cmluZyB0byAlczo6JXMoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGNhdXNlIGFuIGVycm9yIGluIDguMC4nLCBfX0NMQVNTX18sIF9fRlVOQ1RJT05fXyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZGF0YVsnVmFsdWUnXSA9IChzdHJpbmcpICR2YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZG9tYWluLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldERvbWFpbigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWydEb21haW4nXTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZG9tYWluIG9mIHRoZSBjb29raWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRkb21haW4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldERvbWFpbigkZG9tYWluKTogdm9pZAogICAgewogICAgICAgIGlmICghaXNfc3RyaW5nKCRkb21haW4pICYmIG51bGwgIT09ICRkb21haW4pIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oJ2d1enpsZWh0dHAvZ3V6emxlJywgJzcuNCcsICdOb3QgcGFzc2luZyBhIHN0cmluZyBvciBudWxsIHRvICVzOjolcygpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgY2F1c2UgYW4gZXJyb3IgaW4gOC4wLicsIF9fQ0xBU1NfXywgX19GVU5DVElPTl9fKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5kYXRhWydEb21haW4nXSA9IG51bGwgPT09ICRkb21haW4gPyBudWxsIDogKHN0cmluZykgJGRvbWFpbjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcGF0aC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UGF0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWydQYXRoJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIHBhdGggb2YgdGhlIGNvb2tpZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoIFBhdGggb2YgdGhlIGNvb2tpZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0UGF0aCgkcGF0aCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIWlzX3N0cmluZygkcGF0aCkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oJ2d1enpsZWh0dHAvZ3V6emxlJywgJzcuNCcsICdOb3QgcGFzc2luZyBhIHN0cmluZyB0byAlczo6JXMoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGNhdXNlIGFuIGVycm9yIGluIDguMC4nLCBfX0NMQVNTX18sIF9fRlVOQ1RJT05fXyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZGF0YVsnUGF0aCddID0gKHN0cmluZykgJHBhdGg7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYXhpbXVtIGxpZmV0aW1lIG9mIHRoZSBjb29raWUgaW4gc2Vjb25kcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludHxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNYXhBZ2UoKQogICAgewogICAgICAgIHJldHVybiBudWxsID09PSAkdGhpcy0+ZGF0YVsnTWF4LUFnZSddID8gbnVsbCA6IChpbnQpICR0aGlzLT5kYXRhWydNYXgtQWdlJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIG1heC1hZ2Ugb2YgdGhlIGNvb2tpZS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50fG51bGwgJG1heEFnZSBNYXggYWdlIG9mIHRoZSBjb29raWUgaW4gc2Vjb25kcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0TWF4QWdlKCRtYXhBZ2UpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc19pbnQoJG1heEFnZSkgJiYgbnVsbCAhPT0gJG1heEFnZSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbignZ3V6emxlaHR0cC9ndXp6bGUnLCAnNy40JywgJ05vdCBwYXNzaW5nIGFuIGludCBvciBudWxsIHRvICVzOjolcygpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgY2F1c2UgYW4gZXJyb3IgaW4gOC4wLicsIF9fQ0xBU1NfXywgX19GVU5DVElPTl9fKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5kYXRhWydNYXgtQWdlJ10gPSAkbWF4QWdlID09PSBudWxsID8gbnVsbCA6IChpbnQpICRtYXhBZ2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgVU5JWCB0aW1lc3RhbXAgd2hlbiB0aGUgY29va2llIEV4cGlyZXMuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmd8aW50fG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEV4cGlyZXMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGF0YVsnRXhwaXJlcyddOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSB1bml4IHRpbWVzdGFtcCBmb3Igd2hpY2ggdGhlIGNvb2tpZSB3aWxsIGV4cGlyZS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50fHN0cmluZ3xudWxsICR0aW1lc3RhbXAgVW5peCB0aW1lc3RhbXAgb3IgYW55IEVuZ2xpc2ggdGV4dHVhbCBkYXRldGltZSBkZXNjcmlwdGlvbi4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldEV4cGlyZXMoJHRpbWVzdGFtcCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIWlzX2ludCgkdGltZXN0YW1wKSAmJiAhaXNfc3RyaW5nKCR0aW1lc3RhbXApICYmIG51bGwgIT09ICR0aW1lc3RhbXApIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oJ2d1enpsZWh0dHAvZ3V6emxlJywgJzcuNCcsICdOb3QgcGFzc2luZyBhbiBpbnQsIHN0cmluZyBvciBudWxsIHRvICVzOjolcygpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgY2F1c2UgYW4gZXJyb3IgaW4gOC4wLicsIF9fQ0xBU1NfXywgX19GVU5DVElPTl9fKTsKICAgICAgICB9CgogICAgICAgIGlmIChudWxsID09PSAkdGltZXN0YW1wKSB7CiAgICAgICAgICAgICR0aGlzLT5kYXRhWydFeHBpcmVzJ10gPSBudWxsOwogICAgICAgIH0gZWxzZWlmIChcaXNfbnVtZXJpYygkdGltZXN0YW1wKSkgewogICAgICAgICAgICAkdGhpcy0+ZGF0YVsnRXhwaXJlcyddID0gKGludCkgJHRpbWVzdGFtcDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBTdG9yZSB1bnBhcnNlYWJsZSBkYXRlcyBhcyBzZXNzaW9uIGNvb2tpZXMsIG5vdCBhcyBleHBpcmVkIGNvb2tpZXMuCiAgICAgICAgICAgICRleHBpcmVzID0gXHN0cnRvdGltZSgoc3RyaW5nKSAkdGltZXN0YW1wKTsKICAgICAgICAgICAgJHRoaXMtPmRhdGFbJ0V4cGlyZXMnXSA9ICRleHBpcmVzID09PSBmYWxzZSA/IG51bGwgOiAkZXhwaXJlczsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBvciBub3QgdGhpcyBpcyBhIHNlY3VyZSBjb29raWUuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTZWN1cmUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGF0YVsnU2VjdXJlJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgd2hldGhlciBvciBub3QgdGhlIGNvb2tpZSBpcyBzZWN1cmUuCiAgICAgKgogICAgICogQHBhcmFtIGJvb2wgJHNlY3VyZSBTZXQgdG8gdHJ1ZSBvciBmYWxzZSBpZiBzZWN1cmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldFNlY3VyZSgkc2VjdXJlKTogdm9pZAogICAgewogICAgICAgIGlmICghaXNfYm9vbCgkc2VjdXJlKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbignZ3V6emxlaHR0cC9ndXp6bGUnLCAnNy40JywgJ05vdCBwYXNzaW5nIGEgYm9vbCB0byAlczo6JXMoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGNhdXNlIGFuIGVycm9yIGluIDguMC4nLCBfX0NMQVNTX18sIF9fRlVOQ1RJT05fXyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZGF0YVsnU2VjdXJlJ10gPSAoYm9vbCkgJHNlY3VyZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB3aGV0aGVyIG9yIG5vdCB0aGlzIGlzIGEgc2Vzc2lvbiBjb29raWUuCiAgICAgKgogICAgICogQHJldHVybiBib29sfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldERpc2NhcmQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGF0YVsnRGlzY2FyZCddOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHdoZXRoZXIgb3Igbm90IHRoaXMgaXMgYSBzZXNzaW9uIGNvb2tpZS4KICAgICAqCiAgICAgKiBAcGFyYW0gYm9vbCAkZGlzY2FyZCBTZXQgdG8gdHJ1ZSBvciBmYWxzZSBpZiB0aGlzIGlzIGEgc2Vzc2lvbiBjb29raWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldERpc2NhcmQoJGRpc2NhcmQpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc19ib29sKCRkaXNjYXJkKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbignZ3V6emxlaHR0cC9ndXp6bGUnLCAnNy40JywgJ05vdCBwYXNzaW5nIGEgYm9vbCB0byAlczo6JXMoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGNhdXNlIGFuIGVycm9yIGluIDguMC4nLCBfX0NMQVNTX18sIF9fRlVOQ1RJT05fXyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZGF0YVsnRGlzY2FyZCddID0gKGJvb2wpICRkaXNjYXJkOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHdoZXRoZXIgb3Igbm90IHRoaXMgaXMgYW4gSFRUUCBvbmx5IGNvb2tpZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEh0dHBPbmx5KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRhdGFbJ0h0dHBPbmx5J107CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgd2hldGhlciBvciBub3QgdGhpcyBpcyBhbiBIVFRQIG9ubHkgY29va2llLgogICAgICoKICAgICAqIEBwYXJhbSBib29sICRodHRwT25seSBTZXQgdG8gdHJ1ZSBvciBmYWxzZSBpZiB0aGlzIGlzIEhUVFAgb25seQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0SHR0cE9ubHkoJGh0dHBPbmx5KTogdm9pZAogICAgewogICAgICAgIGlmICghaXNfYm9vbCgkaHR0cE9ubHkpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKCdndXp6bGVodHRwL2d1enpsZScsICc3LjQnLCAnTm90IHBhc3NpbmcgYSBib29sIHRvICVzOjolcygpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgY2F1c2UgYW4gZXJyb3IgaW4gOC4wLicsIF9fQ0xBU1NfXywgX19GVU5DVElPTl9fKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5kYXRhWydIdHRwT25seSddID0gKGJvb2wpICRodHRwT25seTsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIHRoZSBjb29raWUgbWF0Y2hlcyBhIHBhdGggdmFsdWUuCiAgICAgKgogICAgICogQSByZXF1ZXN0LXBhdGggcGF0aC1tYXRjaGVzIGEgZ2l2ZW4gY29va2llLXBhdGggaWYgYXQgbGVhc3Qgb25lIG9mCiAgICAgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgaG9sZHM6CiAgICAgKgogICAgICogLSBUaGUgY29va2llLXBhdGggYW5kIHRoZSByZXF1ZXN0LXBhdGggYXJlIGlkZW50aWNhbC4KICAgICAqIC0gVGhlIGNvb2tpZS1wYXRoIGlzIGEgcHJlZml4IG9mIHRoZSByZXF1ZXN0LXBhdGgsIGFuZCB0aGUgbGFzdAogICAgICogICBjaGFyYWN0ZXIgb2YgdGhlIGNvb2tpZS1wYXRoIGlzICV4MkYgKCIvIikuCiAgICAgKiAtIFRoZSBjb29raWUtcGF0aCBpcyBhIHByZWZpeCBvZiB0aGUgcmVxdWVzdC1wYXRoLCBhbmQgdGhlIGZpcnN0CiAgICAgKiAgIGNoYXJhY3RlciBvZiB0aGUgcmVxdWVzdC1wYXRoIHRoYXQgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBjb29raWUtCiAgICAgKiAgIHBhdGggaXMgYSAleDJGICgiLyIpIGNoYXJhY3Rlci4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRyZXF1ZXN0UGF0aCBQYXRoIHRvIGNoZWNrIGFnYWluc3QKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1hdGNoZXNQYXRoKHN0cmluZyAkcmVxdWVzdFBhdGgpOiBib29sCiAgICB7CiAgICAgICAgJGNvb2tpZVBhdGggPSAkdGhpcy0+Z2V0UGF0aCgpOwoKICAgICAgICAvLyBNYXRjaCBvbiBleGFjdCBtYXRjaGVzIG9yIHdoZW4gcGF0aCBpcyB0aGUgZGVmYXVsdCBlbXB0eSAiLyIKICAgICAgICBpZiAoJGNvb2tpZVBhdGggPT09ICcvJyB8fCAkY29va2llUGF0aCA9PSAkcmVxdWVzdFBhdGgpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgY29va2llLXBhdGggaXMgYSBwcmVmaXggb2YgdGhlIHJlcXVlc3QgcGF0aC4KICAgICAgICBpZiAoMCAhPT0gXHN0cnBvcygkcmVxdWVzdFBhdGgsICRjb29raWVQYXRoKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAvLyBNYXRjaCBpZiB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIGNvb2tpZS1wYXRoIGlzICIvIgogICAgICAgIGlmIChcc3Vic3RyKCRjb29raWVQYXRoLCAtMSwgMSkgPT09ICcvJykgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIC8vIE1hdGNoIGlmIHRoZSBmaXJzdCBjaGFyYWN0ZXIgbm90IGluY2x1ZGVkIGluIGNvb2tpZSBwYXRoIGlzICIvIgogICAgICAgIHJldHVybiBcc3Vic3RyKCRyZXF1ZXN0UGF0aCwgXHN0cmxlbigkY29va2llUGF0aCksIDEpID09PSAnLyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiB0aGUgY29va2llIG1hdGNoZXMgYSBkb21haW4gdmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZG9tYWluIERvbWFpbiB0byBjaGVjayBhZ2FpbnN0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtYXRjaGVzRG9tYWluKHN0cmluZyAkZG9tYWluKTogYm9vbAogICAgewogICAgICAgICRjb29raWVEb21haW4gPSAkdGhpcy0+Z2V0RG9tYWluKCk7CiAgICAgICAgaWYgKG51bGwgPT09ICRjb29raWVEb21haW4pIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAvLyBSZW1vdmUgdGhlIGxlYWRpbmcgJy4nIGFzIHBlciBzcGVjIGluIFJGQyA2MjY1LgogICAgICAgIC8vIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNjI2NSNzZWN0aW9uLTUuMi4zCiAgICAgICAgJGNvb2tpZURvbWFpbiA9IFxsdHJpbShcc3RydG9sb3dlcigkY29va2llRG9tYWluKSwgJy4nKTsKCiAgICAgICAgJGRvbWFpbiA9IFxzdHJ0b2xvd2VyKCRkb21haW4pOwoKICAgICAgICAvLyBEb21haW4gbm90IHNldCBvciBleGFjdCBtYXRjaC4KICAgICAgICBpZiAoJycgPT09ICRjb29raWVEb21haW4gfHwgJGRvbWFpbiA9PT0gJGNvb2tpZURvbWFpbikgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIC8vIE1hdGNoaW5nIHRoZSBzdWJkb21haW4gYWNjb3JkaW5nIHRvIFJGQyA2MjY1LgogICAgICAgIC8vIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNjI2NSNzZWN0aW9uLTUuMS4zCiAgICAgICAgaWYgKFxmaWx0ZXJfdmFyKCRkb21haW4sIFxGSUxURVJfVkFMSURBVEVfSVApKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAoYm9vbCkgXHByZWdfbWF0Y2goJy9cLicuXHByZWdfcXVvdGUoJGNvb2tpZURvbWFpbiwgJy8nKS4nJC8nLCAkZG9tYWluKTsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIHRoZSBjb29raWUgaXMgZXhwaXJlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzRXhwaXJlZCgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRFeHBpcmVzKCkgIT09IG51bGwgJiYgXHRpbWUoKSA+ICR0aGlzLT5nZXRFeHBpcmVzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiB0aGUgY29va2llIGlzIHZhbGlkIGFjY29yZGluZyB0byBSRkMgNjI2NS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2x8c3RyaW5nIFJldHVybnMgdHJ1ZSBpZiB2YWxpZCBvciBhbiBlcnJvciBtZXNzYWdlIGlmIGludmFsaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICAgIHsKICAgICAgICAkbmFtZSA9ICR0aGlzLT5nZXROYW1lKCk7CiAgICAgICAgaWYgKCRuYW1lID09PSAnJykgewogICAgICAgICAgICByZXR1cm4gJ1RoZSBjb29raWUgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eSc7CiAgICAgICAgfQoKICAgICAgICAvLyBDaGVjayBpZiBhbnkgb2YgdGhlIGludmFsaWQgY2hhcmFjdGVycyBhcmUgcHJlc2VudCBpbiB0aGUgY29va2llIG5hbWUKICAgICAgICBpZiAoXHByZWdfbWF0Y2goCiAgICAgICAgICAgICcvW1x4MDAtXHgyMFx4MjJceDI4LVx4MjlceDJjXHgyZlx4M2EtXHg0MFx4NWNceDdiXHg3ZFx4N2ZdLycsCiAgICAgICAgICAgICRuYW1lCiAgICAgICAgKSkgewogICAgICAgICAgICByZXR1cm4gJ0Nvb2tpZSBuYW1lIG11c3Qgbm90IGNvbnRhaW4gaW52YWxpZCBjaGFyYWN0ZXJzOiBBU0NJSSAnCiAgICAgICAgICAgICAgICAuJ0NvbnRyb2wgY2hhcmFjdGVycyAoMC0zMTsxMjcpLCBzcGFjZSwgdGFiIGFuZCB0aGUgJwogICAgICAgICAgICAgICAgLidmb2xsb3dpbmcgY2hhcmFjdGVyczogKCk8PkAsOzpcIi8/PXt9JzsKICAgICAgICB9CgogICAgICAgIC8vIFZhbHVlIG11c3Qgbm90IGJlIG51bGwuIDAgYW5kIGVtcHR5IHN0cmluZyBhcmUgdmFsaWQuIEVtcHR5IHN0cmluZ3MKICAgICAgICAvLyBhcmUgdGVjaG5pY2FsbHkgYWdhaW5zdCBSRkMgNjI2NSwgYnV0IGtub3duIHRvIGhhcHBlbiBpbiB0aGUgd2lsZC4KICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Z2V0VmFsdWUoKTsKICAgICAgICBpZiAoJHZhbHVlID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAnVGhlIGNvb2tpZSB2YWx1ZSBtdXN0IG5vdCBiZSBlbXB0eSc7CiAgICAgICAgfQoKICAgICAgICAvLyBEb21haW5zIG11c3Qgbm90IGJlIGVtcHR5LCBidXQgbWF5IGJlIG9taXR0ZWQuICIwIiBpcyBub3QgYSB2YWxpZAogICAgICAgIC8vIGludGVybmV0IGRvbWFpbiwgYnV0IG1heSBiZSB1c2VkIGFzIHNlcnZlciBuYW1lIGluIGEgcHJpdmF0ZSBuZXR3b3JrLgogICAgICAgICRkb21haW4gPSAkdGhpcy0+Z2V0RG9tYWluKCk7CiAgICAgICAgaWYgKCRkb21haW4gPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiAnVGhlIGNvb2tpZSBkb21haW4gbXVzdCBub3QgYmUgZW1wdHknOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwoKLyoqCiAqIEV4Y2VwdGlvbiB3aGVuIGFuIEhUVFAgZXJyb3Igb2NjdXJzICg0eHggb3IgNXh4IGVycm9yKQogKi8KY2xhc3MgQmFkUmVzcG9uc2VFeGNlcHRpb24gZXh0ZW5kcyBSZXF1ZXN0RXhjZXB0aW9uCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBzdHJpbmcgJG1lc3NhZ2UsCiAgICAgICAgUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwKICAgICAgICBSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UsCiAgICAgICAgP1xUaHJvd2FibGUgJHByZXZpb3VzID0gbnVsbCwKICAgICAgICBhcnJheSAkaGFuZGxlckNvbnRleHQgPSBbXQogICAgKSB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkbWVzc2FnZSwgJHJlcXVlc3QsICRyZXNwb25zZSwgJHByZXZpb3VzLCAkaGFuZGxlckNvbnRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3VycmVudCBleGNlcHRpb24gYW5kIHRoZSBvbmVzIHRoYXQgZXh0ZW5kIGl0IHdpbGwgYWx3YXlzIGhhdmUgYSByZXNwb25zZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc1Jlc3BvbnNlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgZnVuY3Rpb24gbmFycm93cyB0aGUgcmV0dXJuIHR5cGUgZnJvbSB0aGUgcGFyZW50IGNsYXNzIGFuZCBkb2VzIG5vdCBhbGxvdyBpdCB0byBiZSBudWxsYWJsZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlc3BvbnNlKCk6IFJlc3BvbnNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgLyoqIEB2YXIgUmVzcG9uc2VJbnRlcmZhY2UgKi8KICAgICAgICByZXR1cm4gcGFyZW50OjpnZXRSZXNwb25zZSgpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCi8qKgogKiBFeGNlcHRpb24gd2hlbiBhIGNsaWVudCBlcnJvciBpcyBlbmNvdW50ZXJlZCAoNHh4IGNvZGVzKQogKi8KY2xhc3MgQ2xpZW50RXhjZXB0aW9uIGV4dGVuZHMgQmFkUmVzcG9uc2VFeGNlcHRpb24Kewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCnVzZSBQc3JcSHR0cFxDbGllbnRcTmV0d29ya0V4Y2VwdGlvbkludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKCi8qKgogKiBFeGNlcHRpb24gdGhyb3duIHdoZW4gYSBjb25uZWN0aW9uIGNhbm5vdCBiZSBlc3RhYmxpc2hlZC4KICovCmNsYXNzIENvbm5lY3RFeGNlcHRpb24gZXh0ZW5kcyBUcmFuc2ZlckV4Y2VwdGlvbiBpbXBsZW1lbnRzIE5ldHdvcmtFeGNlcHRpb25JbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIFJlcXVlc3RJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkcmVxdWVzdDsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkaGFuZGxlckNvbnRleHQ7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgIHN0cmluZyAkbWVzc2FnZSwKICAgICAgICBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LAogICAgICAgID9cVGhyb3dhYmxlICRwcmV2aW91cyA9IG51bGwsCiAgICAgICAgYXJyYXkgJGhhbmRsZXJDb250ZXh0ID0gW10KICAgICkgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJG1lc3NhZ2UsIDAsICRwcmV2aW91cyk7CiAgICAgICAgJHRoaXMtPnJlcXVlc3QgPSAkcmVxdWVzdDsKICAgICAgICAkdGhpcy0+aGFuZGxlckNvbnRleHQgPSAkaGFuZGxlckNvbnRleHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHJlcXVlc3QgdGhhdCBjYXVzZWQgdGhlIGV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVxdWVzdCgpOiBSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXF1ZXN0OwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGNvbnRleHR1YWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGVycm9yIGZyb20gdGhlIHVuZGVybHlpbmcgaGFuZGxlci4KICAgICAqCiAgICAgKiBUaGUgY29udGVudHMgb2YgdGhpcyBhcnJheSB3aWxsIHZhcnkgZGVwZW5kaW5nIG9uIHdoaWNoIGhhbmRsZXIgeW91IGFyZQogICAgICogdXNpbmcuIEl0IG1heSBhbHNvIGJlIGp1c3QgYW4gZW1wdHkgYXJyYXkuIFJlbHlpbmcgb24gdGhpcyBkYXRhIHdpbGwKICAgICAqIGNvdXBsZSB5b3UgdG8gYSBzcGVjaWZpYyBoYW5kbGVyLCBidXQgY2FuIGdpdmUgbW9yZSBkZWJ1ZyBpbmZvcm1hdGlvbgogICAgICogd2hlbiBuZWVkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIYW5kbGVyQ29udGV4dCgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aGFuZGxlckNvbnRleHQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCnVzZSBQc3JcSHR0cFxDbGllbnRcQ2xpZW50RXhjZXB0aW9uSW50ZXJmYWNlOwoKaW50ZXJmYWNlIEd1enpsZUV4Y2VwdGlvbiBleHRlbmRzIENsaWVudEV4Y2VwdGlvbkludGVyZmFjZQp7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCmZpbmFsIGNsYXNzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBleHRlbmRzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaW1wbGVtZW50cyBHdXp6bGVFeGNlcHRpb24Kewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCnVzZSBHdXp6bGVIdHRwXEJvZHlTdW1tYXJpemVyOwp1c2UgR3V6emxlSHR0cFxCb2R5U3VtbWFyaXplckludGVyZmFjZTsKdXNlIFBzclxIdHRwXENsaWVudFxSZXF1ZXN0RXhjZXB0aW9uSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKCi8qKgogKiBIVFRQIFJlcXVlc3QgZXhjZXB0aW9uCiAqLwpjbGFzcyBSZXF1ZXN0RXhjZXB0aW9uIGV4dGVuZHMgVHJhbnNmZXJFeGNlcHRpb24gaW1wbGVtZW50cyBSZXF1ZXN0RXhjZXB0aW9uSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHZhciBSZXF1ZXN0SW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJHJlcXVlc3Q7CgogICAgLyoqCiAgICAgKiBAdmFyIFJlc3BvbnNlSW50ZXJmYWNlfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkcmVzcG9uc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGhhbmRsZXJDb250ZXh0OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBzdHJpbmcgJG1lc3NhZ2UsCiAgICAgICAgUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwKICAgICAgICA/UmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlID0gbnVsbCwKICAgICAgICA/XFRocm93YWJsZSAkcHJldmlvdXMgPSBudWxsLAogICAgICAgIGFycmF5ICRoYW5kbGVyQ29udGV4dCA9IFtdCiAgICApIHsKICAgICAgICAvLyBTZXQgdGhlIGNvZGUgb2YgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgcmVzcG9uc2UgaXMgc2V0IGFuZCBub3QgZnV0dXJlLgogICAgICAgICRjb2RlID0gJHJlc3BvbnNlID8gJHJlc3BvbnNlLT5nZXRTdGF0dXNDb2RlKCkgOiAwOwogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJG1lc3NhZ2UsICRjb2RlLCAkcHJldmlvdXMpOwogICAgICAgICR0aGlzLT5yZXF1ZXN0ID0gJHJlcXVlc3Q7CiAgICAgICAgJHRoaXMtPnJlc3BvbnNlID0gJHJlc3BvbnNlOwogICAgICAgICR0aGlzLT5oYW5kbGVyQ29udGV4dCA9ICRoYW5kbGVyQ29udGV4dDsKICAgIH0KCiAgICAvKioKICAgICAqIFdyYXAgbm9uLVJlcXVlc3RFeGNlcHRpb25zIHdpdGggYSBSZXF1ZXN0RXhjZXB0aW9uCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgc2luY2UgNy4xMS4gQ3JlYXRlIGEgUmVxdWVzdEV4Y2VwdGlvbiBkaXJlY3RseSBpbnN0ZWFkLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHdyYXBFeGNlcHRpb24oUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgXFRocm93YWJsZSAkZSk6IFJlcXVlc3RFeGNlcHRpb24KICAgIHsKICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbignZ3V6emxlaHR0cC9ndXp6bGUnLCAnNy4xMScsICclczo6d3JhcEV4Y2VwdGlvbigpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA4LjAuIENyZWF0ZSBhICVzIGRpcmVjdGx5IGluc3RlYWQuJywgc2VsZjo6Y2xhc3MsIHNlbGY6OmNsYXNzKTsKCiAgICAgICAgcmV0dXJuICRlIGluc3RhbmNlb2YgUmVxdWVzdEV4Y2VwdGlvbiA/ICRlIDogbmV3IFJlcXVlc3RFeGNlcHRpb24oJGUtPmdldE1lc3NhZ2UoKSwgJHJlcXVlc3QsIG51bGwsICRlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZhY3RvcnkgbWV0aG9kIHRvIGNyZWF0ZSBhIG5ldyBleGNlcHRpb24gd2l0aCBhIG5vcm1hbGl6ZWQgZXJyb3IgbWVzc2FnZQogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICAgICAgICAgICAgICRyZXF1ZXN0ICAgICAgICBSZXF1ZXN0IHNlbnQKICAgICAqIEBwYXJhbSBSZXNwb25zZUludGVyZmFjZSAgICAgICAgICAgICRyZXNwb25zZSAgICAgICBSZXNwb25zZSByZWNlaXZlZAogICAgICogQHBhcmFtIFxUaHJvd2FibGV8bnVsbCAgICAgICAgICAgICAgJHByZXZpb3VzICAgICAgIFByZXZpb3VzIGV4Y2VwdGlvbgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgJGhhbmRsZXJDb250ZXh0IE9wdGlvbmFsIGhhbmRsZXIgY29udGV4dAogICAgICogQHBhcmFtIEJvZHlTdW1tYXJpemVySW50ZXJmYWNlfG51bGwgJGJvZHlTdW1tYXJpemVyIE9wdGlvbmFsIGJvZHkgc3VtbWFyaXplcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZSgKICAgICAgICBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LAogICAgICAgID9SZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UgPSBudWxsLAogICAgICAgID9cVGhyb3dhYmxlICRwcmV2aW91cyA9IG51bGwsCiAgICAgICAgYXJyYXkgJGhhbmRsZXJDb250ZXh0ID0gW10sCiAgICAgICAgP0JvZHlTdW1tYXJpemVySW50ZXJmYWNlICRib2R5U3VtbWFyaXplciA9IG51bGwKICAgICk6IHNlbGYgewogICAgICAgIGlmICghJHJlc3BvbnNlKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgc2VsZigKICAgICAgICAgICAgICAgICdFcnJvciBjb21wbGV0aW5nIHJlcXVlc3QnLAogICAgICAgICAgICAgICAgJHJlcXVlc3QsCiAgICAgICAgICAgICAgICBudWxsLAogICAgICAgICAgICAgICAgJHByZXZpb3VzLAogICAgICAgICAgICAgICAgJGhhbmRsZXJDb250ZXh0CiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkbGV2ZWwgPSAoaW50KSBcZmxvb3IoJHJlc3BvbnNlLT5nZXRTdGF0dXNDb2RlKCkgLyAxMDApOwogICAgICAgIGlmICgkbGV2ZWwgPT09IDQpIHsKICAgICAgICAgICAgJGxhYmVsID0gJ0NsaWVudCBlcnJvcic7CiAgICAgICAgICAgICRjbGFzc05hbWUgPSBDbGllbnRFeGNlcHRpb246OmNsYXNzOwogICAgICAgIH0gZWxzZWlmICgkbGV2ZWwgPT09IDUpIHsKICAgICAgICAgICAgJGxhYmVsID0gJ1NlcnZlciBlcnJvcic7CiAgICAgICAgICAgICRjbGFzc05hbWUgPSBTZXJ2ZXJFeGNlcHRpb246OmNsYXNzOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRsYWJlbCA9ICdVbnN1Y2Nlc3NmdWwgcmVxdWVzdCc7CiAgICAgICAgICAgICRjbGFzc05hbWUgPSBfX0NMQVNTX187CiAgICAgICAgfQoKICAgICAgICAkdXJpID0gXEd1enpsZUh0dHBcUHNyN1xVdGlsczo6cmVkYWN0VXNlckluZm8oJHJlcXVlc3QtPmdldFVyaSgpKTsKCiAgICAgICAgLy8gQ2xpZW50IEVycm9yOiBgR0VUIC9gIHJlc3VsdGVkIGluIGEgYDQwNCBOb3QgRm91bmRgIHJlc3BvbnNlOgogICAgICAgIC8vIDxodG1sPiAuLi4gKHRydW5jYXRlZCkKICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAnJXM6IGAlcyAlc2AgcmVzdWx0ZWQgaW4gYSBgJXMgJXNgIHJlc3BvbnNlJywKICAgICAgICAgICAgJGxhYmVsLAogICAgICAgICAgICAkcmVxdWVzdC0+Z2V0TWV0aG9kKCksCiAgICAgICAgICAgICR1cmktPl9fdG9TdHJpbmcoKSwKICAgICAgICAgICAgJHJlc3BvbnNlLT5nZXRTdGF0dXNDb2RlKCksCiAgICAgICAgICAgICRyZXNwb25zZS0+Z2V0UmVhc29uUGhyYXNlKCkKICAgICAgICApOwoKICAgICAgICAkc3VtbWFyeSA9ICgkYm9keVN1bW1hcml6ZXIgPz8gbmV3IEJvZHlTdW1tYXJpemVyKCkpLT5zdW1tYXJpemUoJHJlc3BvbnNlKTsKCiAgICAgICAgaWYgKCRzdW1tYXJ5ICE9PSBudWxsKSB7CiAgICAgICAgICAgICRtZXNzYWdlIC49ICI6XG57JHN1bW1hcnl9XG4iOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyAkY2xhc3NOYW1lKCRtZXNzYWdlLCAkcmVxdWVzdCwgJHJlc3BvbnNlLCAkcHJldmlvdXMsICRoYW5kbGVyQ29udGV4dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHJlcXVlc3QgdGhhdCBjYXVzZWQgdGhlIGV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVxdWVzdCgpOiBSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXF1ZXN0OwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBhc3NvY2lhdGVkIHJlc3BvbnNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZXNwb25zZSgpOiA/UmVzcG9uc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlc3BvbnNlOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgYSByZXNwb25zZSB3YXMgcmVjZWl2ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc1Jlc3BvbnNlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlc3BvbnNlICE9PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGNvbnRleHR1YWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGVycm9yIGZyb20gdGhlIHVuZGVybHlpbmcgaGFuZGxlci4KICAgICAqCiAgICAgKiBUaGUgY29udGVudHMgb2YgdGhpcyBhcnJheSB3aWxsIHZhcnkgZGVwZW5kaW5nIG9uIHdoaWNoIGhhbmRsZXIgeW91IGFyZQogICAgICogdXNpbmcuIEl0IG1heSBhbHNvIGJlIGp1c3QgYW4gZW1wdHkgYXJyYXkuIFJlbHlpbmcgb24gdGhpcyBkYXRhIHdpbGwKICAgICAqIGNvdXBsZSB5b3UgdG8gYSBzcGVjaWZpYyBoYW5kbGVyLCBidXQgY2FuIGdpdmUgbW9yZSBkZWJ1ZyBpbmZvcm1hdGlvbgogICAgICogd2hlbiBuZWVkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIYW5kbGVyQ29udGV4dCgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aGFuZGxlckNvbnRleHQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCi8qKgogKiBFeGNlcHRpb24gd2hlbiBhIHNlcnZlciBlcnJvciBpcyBlbmNvdW50ZXJlZCAoNXh4IGNvZGVzKQogKi8KY2xhc3MgU2VydmVyRXhjZXB0aW9uIGV4dGVuZHMgQmFkUmVzcG9uc2VFeGNlcHRpb24Kewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCmNsYXNzIFRvb01hbnlSZWRpcmVjdHNFeGNlcHRpb24gZXh0ZW5kcyBSZXF1ZXN0RXhjZXB0aW9uCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCmNsYXNzIFRyYW5zZmVyRXhjZXB0aW9uIGV4dGVuZHMgXFJ1bnRpbWVFeGNlcHRpb24gaW1wbGVtZW50cyBHdXp6bGVFeGNlcHRpb24Kewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/functions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKLyoqCiAqIERlYnVnIGZ1bmN0aW9uIHVzZWQgdG8gZGVzY3JpYmUgdGhlIHByb3ZpZGVkIHZhbHVlIHR5cGUgYW5kIGNsYXNzLgogKgogKiBAcGFyYW0gbWl4ZWQgJGlucHV0IEFueSB0eXBlIG9mIHZhcmlhYmxlIHRvIGRlc2NyaWJlIHRoZSB0eXBlIG9mLiBUaGlzCiAqICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIG1pc3NlcyBhIHR5cGVoaW50IGJlY2F1c2Ugb2YgdGhhdC4KICoKICogQHJldHVybiBzdHJpbmcgUmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIHRoZSB0eXBlIG9mIHRoZSB2YXJpYWJsZSBhbmQKICogICAgICAgICAgICAgICAgaWYgYSBjbGFzcyBpcyBwcm92aWRlZCwgdGhlIGNsYXNzIG5hbWUuCiAqCiAqIEBkZXByZWNhdGVkIGRlc2NyaWJlX3R5cGUgd2lsbCBiZSByZW1vdmVkIGluIGd1enpsZWh0dHAvZ3V6emxlOjguMC4gVXNlIGdldF9kZWJ1Z190eXBlKCkgaW5zdGVhZC4KICovCmZ1bmN0aW9uIGRlc2NyaWJlX3R5cGUoJGlucHV0KTogc3RyaW5nCnsKICAgIHJldHVybiBVdGlsczo6ZGVzY3JpYmVUeXBlKCRpbnB1dCk7Cn0KCi8qKgogKiBQYXJzZXMgYW4gYXJyYXkgb2YgaGVhZGVyIGxpbmVzIGludG8gYW4gYXNzb2NpYXRpdmUgYXJyYXkgb2YgaGVhZGVycy4KICoKICogQHBhcmFtIGl0ZXJhYmxlICRsaW5lcyBIZWFkZXIgbGluZXMgYXJyYXkgb2Ygc3RyaW5ncyBpbiB0aGUgZm9sbG93aW5nCiAqICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAiTmFtZTogVmFsdWUiCiAqCiAqIEBkZXByZWNhdGVkIGhlYWRlcnNfZnJvbV9saW5lcyB3aWxsIGJlIHJlbW92ZWQgaW4gZ3V6emxlaHR0cC9ndXp6bGU6OC4wLiBVc2UgVXRpbHM6OmhlYWRlcnNGcm9tTGluZXMgaW5zdGVhZC4KICovCmZ1bmN0aW9uIGhlYWRlcnNfZnJvbV9saW5lcyhpdGVyYWJsZSAkbGluZXMpOiBhcnJheQp7CiAgICByZXR1cm4gVXRpbHM6OmhlYWRlcnNGcm9tTGluZXMoJGxpbmVzKTsKfQoKLyoqCiAqIFJldHVybnMgYSBkZWJ1ZyBzdHJlYW0gYmFzZWQgb24gdGhlIHByb3ZpZGVkIHZhcmlhYmxlLgogKgogKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIE9wdGlvbmFsIHZhbHVlCiAqCiAqIEByZXR1cm4gcmVzb3VyY2UKICoKICogQGRlcHJlY2F0ZWQgZGVidWdfcmVzb3VyY2Ugd2lsbCBiZSByZW1vdmVkIGluIGd1enpsZWh0dHAvZ3V6emxlOjguMC4gVXNlIFV0aWxzOjpkZWJ1Z1Jlc291cmNlIGluc3RlYWQuCiAqLwpmdW5jdGlvbiBkZWJ1Z19yZXNvdXJjZSgkdmFsdWUgPSBudWxsKQp7CiAgICByZXR1cm4gVXRpbHM6OmRlYnVnUmVzb3VyY2UoJHZhbHVlKTsKfQoKLyoqCiAqIENob29zZXMgYW5kIGNyZWF0ZXMgYSBkZWZhdWx0IGhhbmRsZXIgdG8gdXNlIGJhc2VkIG9uIHRoZSBlbnZpcm9ubWVudC4KICoKICogVGhlIHJldHVybmVkIGhhbmRsZXIgaXMgbm90IHdyYXBwZWQgYnkgYW55IGRlZmF1bHQgbWlkZGxld2FyZXMuCiAqCiAqIEByZXR1cm4gY2FsbGFibGUoXFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlXFByb21pc2VJbnRlcmZhY2UgUmV0dXJucyB0aGUgYmVzdCBoYW5kbGVyIGZvciB0aGUgZ2l2ZW4gc3lzdGVtLgogKgogKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIGlmIG5vIHZpYWJsZSBIYW5kbGVyIGlzIGF2YWlsYWJsZS4KICoKICogQGRlcHJlY2F0ZWQgY2hvb3NlX2hhbmRsZXIgd2lsbCBiZSByZW1vdmVkIGluIGd1enpsZWh0dHAvZ3V6emxlOjguMC4gVXNlIFV0aWxzOjpjaG9vc2VIYW5kbGVyIGluc3RlYWQuCiAqLwpmdW5jdGlvbiBjaG9vc2VfaGFuZGxlcigpOiBjYWxsYWJsZQp7CiAgICByZXR1cm4gVXRpbHM6OmNob29zZUhhbmRsZXIoKTsKfQoKLyoqCiAqIEdldCB0aGUgZGVmYXVsdCBVc2VyLUFnZW50IHN0cmluZyB0byB1c2Ugd2l0aCBHdXp6bGUuCiAqCiAqIEBkZXByZWNhdGVkIGRlZmF1bHRfdXNlcl9hZ2VudCB3aWxsIGJlIHJlbW92ZWQgaW4gZ3V6emxlaHR0cC9ndXp6bGU6OC4wLiBVc2UgVXRpbHM6OmRlZmF1bHRVc2VyQWdlbnQgaW5zdGVhZC4KICovCmZ1bmN0aW9uIGRlZmF1bHRfdXNlcl9hZ2VudCgpOiBzdHJpbmcKewogICAgcmV0dXJuIFV0aWxzOjpkZWZhdWx0VXNlckFnZW50KCk7Cn0KCi8qKgogKiBSZXR1cm5zIHRoZSBkZWZhdWx0IGNhY2VydCBidW5kbGUgZm9yIHRoZSBjdXJyZW50IHN5c3RlbS4KICoKICogRmlyc3QsIHRoZSBvcGVuc3NsLmNhZmlsZSBhbmQgY3VybC5jYWluZm8gcGhwLmluaSBzZXR0aW5ncyBhcmUgY2hlY2tlZC4KICogSWYgdGhvc2Ugc2V0dGluZ3MgYXJlIG5vdCBjb25maWd1cmVkLCB0aGVuIHRoZSBjb21tb24gbG9jYXRpb25zIGZvcgogKiBidW5kbGVzIGZvdW5kIG9uIFJlZCBIYXQsIENlbnRPUywgRmVkb3JhLCBVYnVudHUsIERlYmlhbiwgRnJlZUJTRCwgT1MgWAogKiBhbmQgV2luZG93cyBhcmUgY2hlY2tlZC4gSWYgYW55IG9mIHRoZXNlIGZpbGUgbG9jYXRpb25zIGFyZSBmb3VuZCBvbgogKiBkaXNrLCB0aGV5IHdpbGwgYmUgdXRpbGl6ZWQuCiAqCiAqIE5vdGU6IHRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBpcyBjYWNoZWQgZm9yIHN1YnNlcXVlbnQgY2FsbHMuCiAqCiAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgbm8gYnVuZGxlIGNhbiBiZSBmb3VuZC4KICoKICogQGRlcHJlY2F0ZWQgZGVmYXVsdF9jYV9idW5kbGUgd2lsbCBiZSByZW1vdmVkIGluIGd1enpsZWh0dHAvZ3V6emxlOjguMC4gVGhpcyBmdW5jdGlvbiBpcyBub3QgbmVlZGVkIGluIFBIUCA1LjYrLgogKi8KZnVuY3Rpb24gZGVmYXVsdF9jYV9idW5kbGUoKTogc3RyaW5nCnsKICAgIHJldHVybiBVdGlsczo6ZGVmYXVsdENhQnVuZGxlKCk7Cn0KCi8qKgogKiBDcmVhdGVzIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIGxvd2VyY2FzZSBoZWFkZXIgbmFtZXMgdG8gdGhlIGFjdHVhbAogKiBoZWFkZXIgY2FzaW5nLgogKgogKiBAZGVwcmVjYXRlZCBub3JtYWxpemVfaGVhZGVyX2tleXMgd2lsbCBiZSByZW1vdmVkIGluIGd1enpsZWh0dHAvZ3V6emxlOjguMC4gVXNlIFV0aWxzOjpub3JtYWxpemVIZWFkZXJLZXlzIGluc3RlYWQuCiAqLwpmdW5jdGlvbiBub3JtYWxpemVfaGVhZGVyX2tleXMoYXJyYXkgJGhlYWRlcnMpOiBhcnJheQp7CiAgICByZXR1cm4gVXRpbHM6Om5vcm1hbGl6ZUhlYWRlcktleXMoJGhlYWRlcnMpOwp9CgovKioKICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlZCBob3N0IG1hdGNoZXMgYW55IG9mIHRoZSBubyBwcm94eSBhcmVhcy4KICoKICogVGhpcyBtZXRob2Qgd2lsbCBzdHJpcCBhIHBvcnQgZnJvbSB0aGUgaG9zdCBpZiBpdCBpcyBwcmVzZW50LiBFYWNoIHBhdHRlcm4KICogY2FuIGJlIG1hdGNoZWQgd2l0aCBhbiBleGFjdCBtYXRjaCAoZS5nLiwgImZvby5jb20iID09ICJmb28uY29tIikgb3IgYQogKiBwYXJ0aWFsIG1hdGNoOiAoZS5nLiwgImZvby5jb20iID09ICJiYXouZm9vLmNvbSIgYW5kICIuZm9vLmNvbSIgPT0KICogImJhei5mb28uY29tIiwgYnV0ICIuZm9vLmNvbSIgIT0gImZvby5jb20iKS4KICoKICogQXJlYXMgYXJlIG1hdGNoZWQgaW4gdGhlIGZvbGxvd2luZyBjYXNlczoKICogMS4gIioiICh3aXRob3V0IHF1b3RlcykgYWx3YXlzIG1hdGNoZXMgYW55IGhvc3RzLgogKiAyLiBBbiBleGFjdCBtYXRjaC4KICogMy4gVGhlIGFyZWEgc3RhcnRzIHdpdGggIi4iIGFuZCB0aGUgYXJlYSBpcyB0aGUgbGFzdCBwYXJ0IG9mIHRoZSBob3N0LiBlLmcuCiAqICAgICcubWl0LmVkdScgd2lsbCBtYXRjaCBhbnkgaG9zdCB0aGF0IGVuZHMgd2l0aCAnLm1pdC5lZHUnLgogKgogKiBAcGFyYW0gc3RyaW5nICAgJGhvc3QgICAgICAgICBIb3N0IHRvIGNoZWNrIGFnYWluc3QgdGhlIHBhdHRlcm5zLgogKiBAcGFyYW0gc3RyaW5nW10gJG5vUHJveHlBcnJheSBBbiBhcnJheSBvZiBob3N0IHBhdHRlcm5zLgogKgogKiBAdGhyb3dzIEV4Y2VwdGlvblxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICoKICogQGRlcHJlY2F0ZWQgaXNfaG9zdF9pbl9ub3Byb3h5IHdpbGwgYmUgcmVtb3ZlZCBpbiBndXp6bGVodHRwL2d1enpsZTo4LjAuIFVzZSBVdGlsczo6aXNIb3N0SW5Ob1Byb3h5IGluc3RlYWQuCiAqLwpmdW5jdGlvbiBpc19ob3N0X2luX25vcHJveHkoc3RyaW5nICRob3N0LCBhcnJheSAkbm9Qcm94eUFycmF5KTogYm9vbAp7CiAgICByZXR1cm4gVXRpbHM6OmlzSG9zdEluTm9Qcm94eSgkaG9zdCwgJG5vUHJveHlBcnJheSk7Cn0KCi8qKgogKiBXcmFwcGVyIGZvciBqc29uX2RlY29kZSB0aGF0IHRocm93cyB3aGVuIGFuIGVycm9yIG9jY3Vycy4KICoKICogQHBhcmFtIHN0cmluZyAkanNvbiAgICBKU09OIGRhdGEgdG8gcGFyc2UKICogQHBhcmFtIGJvb2wgICAkYXNzb2MgICBXaGVuIHRydWUsIHJldHVybmVkIG9iamVjdHMgd2lsbCBiZSBjb252ZXJ0ZWQKICogICAgICAgICAgICAgICAgICAgICAgICBpbnRvIGFzc29jaWF0aXZlIGFycmF5cy4KICogQHBhcmFtIGludCAgICAkZGVwdGggICBVc2VyIHNwZWNpZmllZCByZWN1cnNpb24gZGVwdGguCiAqIEBwYXJhbSBpbnQgICAgJG9wdGlvbnMgQml0bWFzayBvZiBKU09OIGRlY29kZSBvcHRpb25zLgogKgogKiBAcmV0dXJuIG9iamVjdHxhcnJheXxzdHJpbmd8aW50fGZsb2F0fGJvb2x8bnVsbAogKgogKiBAdGhyb3dzIEV4Y2VwdGlvblxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIEpTT04gY2Fubm90IGJlIGRlY29kZWQuCiAqCiAqIEBzZWUgaHR0cHM6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24uanNvbi1kZWNvZGUucGhwCiAqIEBkZXByZWNhdGVkIGpzb25fZGVjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiBndXp6bGVodHRwL2d1enpsZTo4LjAuIFVzZSBVdGlsczo6anNvbkRlY29kZSBpbnN0ZWFkLgogKi8KZnVuY3Rpb24ganNvbl9kZWNvZGUoc3RyaW5nICRqc29uLCBib29sICRhc3NvYyA9IGZhbHNlLCBpbnQgJGRlcHRoID0gNTEyLCBpbnQgJG9wdGlvbnMgPSAwKQp7CiAgICByZXR1cm4gVXRpbHM6Ompzb25EZWNvZGUoJGpzb24sICRhc3NvYywgJGRlcHRoLCAkb3B0aW9ucyk7Cn0KCi8qKgogKiBXcmFwcGVyIGZvciBKU09OIGVuY29kaW5nIHRoYXQgdGhyb3dzIHdoZW4gYW4gZXJyb3Igb2NjdXJzLgogKgogKiBAcGFyYW0gbWl4ZWQgJHZhbHVlICAgVGhlIHZhbHVlIGJlaW5nIGVuY29kZWQKICogQHBhcmFtIGludCAgICRvcHRpb25zIEpTT04gZW5jb2RlIG9wdGlvbiBiaXRtYXNrCiAqIEBwYXJhbSBpbnQgICAkZGVwdGggICBTZXQgdGhlIG1heGltdW0gZGVwdGguIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uCiAqCiAqIEB0aHJvd3MgRXhjZXB0aW9uXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgSlNPTiBjYW5ub3QgYmUgZW5jb2RlZC4KICoKICogQHNlZSBodHRwczovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5qc29uLWVuY29kZS5waHAKICogQGRlcHJlY2F0ZWQganNvbl9lbmNvZGUgd2lsbCBiZSByZW1vdmVkIGluIGd1enpsZWh0dHAvZ3V6emxlOjguMC4gVXNlIFV0aWxzOjpqc29uRW5jb2RlIGluc3RlYWQuCiAqLwpmdW5jdGlvbiBqc29uX2VuY29kZSgkdmFsdWUsIGludCAkb3B0aW9ucyA9IDAsIGludCAkZGVwdGggPSA1MTIpOiBzdHJpbmcKewogICAgcmV0dXJuIFV0aWxzOjpqc29uRW5jb2RlKCR2YWx1ZSwgJG9wdGlvbnMsICRkZXB0aCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/functions_include.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIERvbid0IHJlZGVmaW5lIHRoZSBmdW5jdGlvbnMgaWYgaW5jbHVkZWQgbXVsdGlwbGUgdGltZXMuCmlmICghXGZ1bmN0aW9uX2V4aXN0cygnR3V6emxlSHR0cFxkZXNjcmliZV90eXBlJykpIHsKICAgIHJlcXVpcmUgX19ESVJfXy4nL2Z1bmN0aW9ucy5waHAnOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cQ29ubmVjdEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXFJlcXVlc3RFeGNlcHRpb247CnVzZSBHdXp6bGVIdHRwXFByb21pc2UgYXMgUDsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxGdWxmaWxsZWRQcm9taXNlOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXFBzcjc7CnVzZSBHdXp6bGVIdHRwXFBzcjdcTGF6eU9wZW5TdHJlYW07CnVzZSBHdXp6bGVIdHRwXFBzcjdcVXJpOwp1c2UgR3V6emxlSHR0cFxUcmFuc2ZlclN0YXRzOwp1c2UgR3V6emxlSHR0cFxUcmFuc3BvcnRTaGFyaW5nOwp1c2UgR3V6emxlSHR0cFxVdGlsczsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOwoKLyoqCiAqIENyZWF0ZXMgY3VybCByZXNvdXJjZXMgZnJvbSBhIHJlcXVlc3QKICoKICogQGZpbmFsCiAqLwpjbGFzcyBDdXJsRmFjdG9yeSBpbXBsZW1lbnRzIEN1cmxGYWN0b3J5SW50ZXJmYWNlCnsKICAgIHB1YmxpYyBjb25zdCBDVVJMX1ZFUlNJT05fU1RSID0gJ2N1cmxfdmVyc2lvbic7CgogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZAogICAgICovCiAgICBwdWJsaWMgY29uc3QgTE9XX0NVUkxfVkVSU0lPTl9OVU1CRVIgPSAnNy4yMS4yJzsKCiAgICAvKioKICAgICAqIEB2YXIgcmVzb3VyY2VbXXxcQ3VybEhhbmRsZVtdCiAgICAgKi8KICAgIHByaXZhdGUgJGhhbmRsZXMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50IFRvdGFsIG51bWJlciBvZiBpZGxlIGhhbmRsZXMgdG8ga2VlcCBpbiBjYWNoZQogICAgICovCiAgICBwcml2YXRlICRtYXhIYW5kbGVzOwoKICAgIC8qKgogICAgICogQHZhciByZXNvdXJjZXxcQ3VybFNoYXJlSGFuZGxlfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkc2hhcmVIYW5kbGU7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRzaGFyZU1vZGU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtYXhIYW5kbGVzICBNYXhpbXVtIG51bWJlciBvZiBpZGxlIGhhbmRsZXMuCiAgICAgKiBAcGFyYW0gcmVzb3VyY2V8XEN1cmxTaGFyZUhhbmRsZXxudWxsICRzaGFyZUhhbmRsZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoaW50ICRtYXhIYW5kbGVzLCBzdHJpbmcgJHNoYXJlTW9kZSA9IFRyYW5zcG9ydFNoYXJpbmc6Ok5PTkUsICRzaGFyZUhhbmRsZSA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPm1heEhhbmRsZXMgPSAkbWF4SGFuZGxlczsKICAgICAgICAkdGhpcy0+c2hhcmVNb2RlID0gQ3VybFNoYXJlSGFuZGxlU3RhdGU6Om5vcm1hbGl6ZU1vZGUoJHNoYXJlTW9kZSwgJ3RyYW5zcG9ydF9zaGFyaW5nJyk7CgogICAgICAgIGlmICgkdGhpcy0+c2hhcmVNb2RlID09PSBUcmFuc3BvcnRTaGFyaW5nOjpOT05FICYmICRzaGFyZUhhbmRsZSAhPT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignQSBjVVJMIHNoYXJlIGhhbmRsZSBjYW5ub3QgYmUgcHJvdmlkZWQgd2hlbiB0cmFuc3BvcnQgc2hhcmluZyBpcyBkaXNhYmxlZC4nKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+c2hhcmVNb2RlICE9PSBUcmFuc3BvcnRTaGFyaW5nOjpOT05FICYmICRzaGFyZUhhbmRsZSA9PT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignQSBjVVJMIHNoYXJlIGhhbmRsZSBpcyByZXF1aXJlZCB3aGVuIHRyYW5zcG9ydCBzaGFyaW5nIGlzIGVuYWJsZWQuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHNoYXJlSGFuZGxlICE9PSBudWxsICYmICFzZWxmOjppc0N1cmxTaGFyZUhhbmRsZSgkc2hhcmVIYW5kbGUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdBIGNVUkwgc2hhcmUgaGFuZGxlIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgQ3VybFNoYXJlSGFuZGxlIG9yIGEgY3VybF9zaGFyZSByZXNvdXJjZS4nKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zaGFyZUhhbmRsZSA9ICRzaGFyZUhhbmRsZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaXNDdXJsU2hhcmVIYW5kbGUoJHZhbHVlKTogYm9vbAogICAgewogICAgICAgIGlmIChcUEhQX1ZFUlNJT05fSUQgPCA4MDAwMCkgewogICAgICAgICAgICByZXR1cm4gXGlzX3Jlc291cmNlKCR2YWx1ZSkgJiYgXGdldF9yZXNvdXJjZV90eXBlKCR2YWx1ZSkgPT09ICdjdXJsX3NoYXJlJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdmFsdWUgaW5zdGFuY2VvZiBcQ3VybFNoYXJlSGFuZGxlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGUoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpOiBFYXN5SGFuZGxlCiAgICB7CiAgICAgICAgJHByb3RvY29sVmVyc2lvbiA9ICRyZXF1ZXN0LT5nZXRQcm90b2NvbFZlcnNpb24oKTsKCiAgICAgICAgaWYgKCcnID09PSAkcHJvdG9jb2xWZXJzaW9uKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKCdndXp6bGVodHRwL2d1enpsZScsICc3LjExJywgJ1NlbmRpbmcgYSByZXF1ZXN0IHdpdGggYW4gZW1wdHkgcHJvdG9jb2wgdmVyc2lvbiBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL2d1enpsZSA4LjAgd2lsbCByZWplY3QgZW1wdHkgcHJvdG9jb2wgdmVyc2lvbnMuJyk7CgogICAgICAgICAgICAkcHJvdG9jb2xWZXJzaW9uID0gJzEuMSc7CiAgICAgICAgICAgICRyZXF1ZXN0ID0gUHNyN1xVdGlsczo6bW9kaWZ5UmVxdWVzdCgkcmVxdWVzdCwgWyd2ZXJzaW9uJyA9PiAkcHJvdG9jb2xWZXJzaW9uXSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJzInID09PSAkcHJvdG9jb2xWZXJzaW9uIHx8ICcyLjAnID09PSAkcHJvdG9jb2xWZXJzaW9uKSB7CiAgICAgICAgICAgIGlmICghQ3VybFZlcnNpb246OnN1cHBvcnRzSHR0cDIoKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IENvbm5lY3RFeGNlcHRpb24oJ0hUVFAvMiBpcyBzdXBwb3J0ZWQgYnkgdGhlIGNVUkwgaGFuZGxlciwgaG93ZXZlciBsaWJjdXJsIGlzIGJ1aWx0IHdpdGhvdXQgSFRUUC8yIHN1cHBvcnQuJywgJHJlcXVlc3QpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCcxLjAnICE9PSAkcHJvdG9jb2xWZXJzaW9uICYmICcxLjEnICE9PSAkcHJvdG9jb2xWZXJzaW9uKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBDb25uZWN0RXhjZXB0aW9uKHNwcmludGYoJ0hUVFAvJXMgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY1VSTCBoYW5kbGVyLicsICRwcm90b2NvbFZlcnNpb24pLCAkcmVxdWVzdCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2N1cmwnXVsnYm9keV9hc19zdHJpbmcnXSkpIHsKICAgICAgICAgICAgJG9wdGlvbnNbJ19ib2R5X2FzX3N0cmluZyddID0gJG9wdGlvbnNbJ2N1cmwnXVsnYm9keV9hc19zdHJpbmcnXTsKICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ2N1cmwnXVsnYm9keV9hc19zdHJpbmcnXSk7CiAgICAgICAgfQoKICAgICAgICBzZWxmOjp0cmlnZ2VyVW5zdXBwb3J0ZWRSZXF1ZXN0T3B0aW9uRGVwcmVjYXRpb25zKCRvcHRpb25zKTsKICAgICAgICAkdGhpcy0+cmVqZWN0UmVxdWVzdExldmVsU2hhcmVDb25mbGljdCgkb3B0aW9ucyk7CiAgICAgICAgc2VsZjo6dHJpZ2dlclVuc3VwcG9ydGVkQ3VybE9wdGlvbkRlcHJlY2F0aW9ucygkb3B0aW9ucyk7CiAgICAgICAgc2VsZjo6dHJpZ2dlckNvbmZsaWN0aW5nQ3VybE9wdGlvbkRlcHJlY2F0aW9ucygkb3B0aW9ucyk7CgogICAgICAgICRlYXN5ID0gbmV3IEVhc3lIYW5kbGUoKTsKICAgICAgICAkZWFzeS0+cmVxdWVzdCA9ICRyZXF1ZXN0OwogICAgICAgICRlYXN5LT5vcHRpb25zID0gJG9wdGlvbnM7CiAgICAgICAgJGNvbmYgPSAkdGhpcy0+Z2V0RGVmYXVsdENvbmYoJGVhc3kpOwogICAgICAgICR0aGlzLT5hcHBseU1ldGhvZCgkZWFzeSwgJGNvbmYpOwogICAgICAgICR0aGlzLT5hcHBseUhhbmRsZXJPcHRpb25zKCRlYXN5LCAkY29uZik7CiAgICAgICAgJHRoaXMtPmFwcGx5SGVhZGVycygkZWFzeSwgJGNvbmYpOwogICAgICAgIHVuc2V0KCRjb25mWydfaGVhZGVycyddKTsKCiAgICAgICAgLy8gQWRkIGhhbmRsZXIgb3B0aW9ucyBmcm9tIHRoZSByZXF1ZXN0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucwogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snY3VybCddKSkgewogICAgICAgICAgICAkY29uZiA9IFxhcnJheV9yZXBsYWNlKCRjb25mLCAkb3B0aW9uc1snY3VybCddKTsKICAgICAgICB9CgogICAgICAgICRlYXN5LT5lZmZlY3RpdmVQcm94eSA9IHNlbGY6OmdldEVmZmVjdGl2ZVByb3h5KCRjb25mKTsKCiAgICAgICAgJGNvbmZbXENVUkxPUFRfSEVBREVSRlVOQ1RJT05dID0gJHRoaXMtPmNyZWF0ZUhlYWRlckZuKCRlYXN5KTsKICAgICAgICBpZiAoJHRoaXMtPnNoYXJlSGFuZGxlICE9PSBudWxsKSB7CiAgICAgICAgICAgIGlmICghXGRlZmluZWQoJ0NVUkxPUFRfU0hBUkUnKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBjb25maWd1cmVkIGNVUkwgc2hhcmUgaGFuZGxlIHJlcXVpcmVzIENVUkxPUFRfU0hBUkUsIGJ1dCBpdCBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBpbnN0YWxsZWQgUEhQIGNVUkwgZXh0ZW5zaW9uLicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkY29uZlsoaW50KSBcY29uc3RhbnQoJ0NVUkxPUFRfU0hBUkUnKV0gPSAkdGhpcy0+c2hhcmVIYW5kbGU7CiAgICAgICAgfQoKICAgICAgICAkaGFuZGxlID0gJHRoaXMtPmhhbmRsZXMgPyBcYXJyYXlfcG9wKCR0aGlzLT5oYW5kbGVzKSA6IFxjdXJsX2luaXQoKTsKICAgICAgICBpZiAoZmFsc2UgPT09ICRoYW5kbGUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDYW4gbm90IGluaXRpYWxpemUgY1VSTCBoYW5kbGUuJyk7CiAgICAgICAgfQogICAgICAgICRlYXN5LT5oYW5kbGUgPSAkaGFuZGxlOwoKICAgICAgICB0cnkgewogICAgICAgICAgICAkdGhpcy0+YXBwbHlDdXJsT3B0aW9ucygkaGFuZGxlLCAkY29uZik7CiAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkZSkgewogICAgICAgICAgICBpZiAoUEhQX1ZFUlNJT05fSUQgPCA4MDAwMCAmJiBcaXNfcmVzb3VyY2UoJGhhbmRsZSkpIHsKICAgICAgICAgICAgICAgIFxjdXJsX2Nsb3NlKCRoYW5kbGUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHVuc2V0KCRlYXN5LT5oYW5kbGUpOwoKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGVhc3k7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gcmVzb3VyY2V8XEN1cmxIYW5kbGUgICAgICRoYW5kbGUKICAgICAqIEBwYXJhbSBhcnJheTxpbnR8c3RyaW5nLCBtaXhlZD4gJGNvbmYKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBhcHBseUN1cmxPcHRpb25zKCRoYW5kbGUsIGFycmF5ICRjb25mKTogdm9pZAogICAgewogICAgICAgIGZvcmVhY2ggKCRjb25mIGFzICRvcHRpb24gPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGlmICghXGlzX2ludCgkb3B0aW9uKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oXHNwcmludGYoCiAgICAgICAgICAgICAgICAgICAgJ0ludmFsaWQgY1VSTCBvcHRpb24gJXMuJywKICAgICAgICAgICAgICAgICAgICBzZWxmOjpmb3JtYXRDdXJsT3B0aW9uKCRvcHRpb24pCiAgICAgICAgICAgICAgICApKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRzdWNjZXNzID0gY3VybF9zZXRvcHQoJGhhbmRsZSwgJG9wdGlvbiwgJHZhbHVlKTsKICAgICAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkZSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgXHNwcmludGYoCiAgICAgICAgICAgICAgICAgICAgICAgICdVbmFibGUgdG8gc2V0IGNVUkwgb3B0aW9uICVzOiAlcycsCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGY6OmZvcm1hdEN1cmxPcHRpb24oJG9wdGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgICRlLT5nZXRNZXNzYWdlKCkKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgJGUKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghJHN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKFxzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICdVbmFibGUgdG8gc2V0IGNVUkwgb3B0aW9uICVzLicsCiAgICAgICAgICAgICAgICAgICAgc2VsZjo6Zm9ybWF0Q3VybE9wdGlvbigkb3B0aW9uKQogICAgICAgICAgICAgICAgKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiByZWplY3RSZXF1ZXN0TGV2ZWxTaGFyZUNvbmZsaWN0KGFycmF5ICRvcHRpb25zKTogdm9pZAogICAgewogICAgICAgIGlmICgkdGhpcy0+c2hhcmVIYW5kbGUgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKAogICAgICAgICAgICAhXGRlZmluZWQoJ0NVUkxPUFRfU0hBUkUnKQogICAgICAgICAgICB8fCAhaXNzZXQoJG9wdGlvbnNbJ2N1cmwnXSkKICAgICAgICAgICAgfHwgIVxpc19hcnJheSgkb3B0aW9uc1snY3VybCddKQogICAgICAgICAgICB8fCAhXGFycmF5X2tleV9leGlzdHMoKGludCkgXGNvbnN0YW50KCdDVVJMT1BUX1NIQVJFJyksICRvcHRpb25zWydjdXJsJ10pCiAgICAgICAgKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgcmVxdWVzdC1sZXZlbCBDVVJMT1BUX1NIQVJFIGNVUkwgb3B0aW9uIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIGNvbmZpZ3VyZWQgdHJhbnNwb3J0IHNoYXJpbmcuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50fHN0cmluZyAkb3B0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGZvcm1hdEN1cmxPcHRpb24oJG9wdGlvbik6IHN0cmluZwogICAgewogICAgICAgIGlmICghXGlzX2ludCgkb3B0aW9uKSkgewogICAgICAgICAgICByZXR1cm4gXHNwcmludGYoJyIlcyInLCAkb3B0aW9uKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyAkbmFtZXMgPSBudWxsOwoKICAgICAgICBpZiAobnVsbCA9PT0gJG5hbWVzKSB7CiAgICAgICAgICAgICRuYW1lcyA9IFtdOwogICAgICAgICAgICBmb3JlYWNoIChcZ2V0X2RlZmluZWRfY29uc3RhbnRzKHRydWUpWydjdXJsJ10gPz8gW10gYXMgJG5hbWUgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICBpZiAoXGlzX2ludCgkdmFsdWUpICYmIFxzdHJwb3MoJG5hbWUsICdDVVJMT1BUXycpID09PSAwICYmICFpc3NldCgkbmFtZXNbJHZhbHVlXSkpIHsKICAgICAgICAgICAgICAgICAgICAkbmFtZXNbJHZhbHVlXSA9ICRuYW1lOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG5hbWVzWyRvcHRpb25dKSkgewogICAgICAgICAgICByZXR1cm4gXHNwcmludGYoJyVzICglZCknLCAkbmFtZXNbJG9wdGlvbl0sICRvcHRpb24pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChzdHJpbmcpICRvcHRpb247CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gdHJpZ2dlckNvbmZsaWN0aW5nQ3VybE9wdGlvbkRlcHJlY2F0aW9ucyhhcnJheSAkb3B0aW9ucyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCRvcHRpb25zWydjdXJsJ10pIHx8ICFcaXNfYXJyYXkoJG9wdGlvbnNbJ2N1cmwnXSkgfHwgJG9wdGlvbnNbJ2N1cmwnXSA9PT0gW10pIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJGNvbmZsaWN0aW5nT3B0aW9ucyA9IHNlbGY6OmNvbmZsaWN0aW5nQ3VybE9wdGlvbnMoKTsKCiAgICAgICAgZm9yZWFjaCAoJG9wdGlvbnNbJ2N1cmwnXSBhcyAkb3B0aW9uID0+ICRfKSB7CiAgICAgICAgICAgIGlmICghXGFycmF5X2tleV9leGlzdHMoJG9wdGlvbiwgJGNvbmZsaWN0aW5nT3B0aW9ucykpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbmFtZSA9IHNlbGY6OmZvcm1hdEN1cmxPcHRpb24oJG9wdGlvbik7CiAgICAgICAgICAgICRyZXBsYWNlbWVudCA9ICRjb25mbGljdGluZ09wdGlvbnNbJG9wdGlvbl07CiAgICAgICAgICAgIGlmICgkcmVwbGFjZW1lbnQgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgICAgICdndXp6bGVodHRwL2d1enpsZScsCiAgICAgICAgICAgICAgICAgICAgJzcuMTEnLAogICAgICAgICAgICAgICAgICAgIFxzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyBpbiB0aGUgImN1cmwiIHJlcXVlc3Qgb3B0aW9uIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvZ3V6emxlIDguMCB3aWxsIHJlamVjdCB0aGlzIG9wdGlvbiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIEd1enpsZS1tYW5hZ2VkIHJlcXVlc3QgaGFuZGxpbmcuIFVzZSAlcyBpbnN0ZWFkLicsCiAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAkcmVwbGFjZW1lbnQKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL2d1enpsZScsCiAgICAgICAgICAgICAgICAnNy4xMScsCiAgICAgICAgICAgICAgICBcc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyBpbiB0aGUgImN1cmwiIHJlcXVlc3Qgb3B0aW9uIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvZ3V6emxlIDguMCB3aWxsIHJlamVjdCB0aGlzIG9wdGlvbiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIEd1enpsZS1tYW5hZ2VkIGNVUkwgaW50ZXJuYWxzLicsCiAgICAgICAgICAgICAgICAgICAgJG5hbWUKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gdHJpZ2dlclVuc3VwcG9ydGVkQ3VybE9wdGlvbkRlcHJlY2F0aW9ucyhhcnJheSAkb3B0aW9ucyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCRvcHRpb25zWydjdXJsJ10pIHx8ICFcaXNfYXJyYXkoJG9wdGlvbnNbJ2N1cmwnXSkgfHwgJG9wdGlvbnNbJ2N1cmwnXSA9PT0gW10pIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHN1cHBvcnRlZE9wdGlvbnMgPSBzZWxmOjpzdXBwb3J0ZWRDdXJsT3B0aW9ucygpOwogICAgICAgICRjb25mbGljdGluZ09wdGlvbnMgPSBzZWxmOjpjb25mbGljdGluZ0N1cmxPcHRpb25zKCk7CgogICAgICAgIGZvcmVhY2ggKCRvcHRpb25zWydjdXJsJ10gYXMgJG9wdGlvbiA9PiAkXykgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAhXGlzX2ludCgkb3B0aW9uKQogICAgICAgICAgICAgICAgfHwgXGFycmF5X2tleV9leGlzdHMoJG9wdGlvbiwgJHN1cHBvcnRlZE9wdGlvbnMpCiAgICAgICAgICAgICAgICB8fCBcYXJyYXlfa2V5X2V4aXN0cygkb3B0aW9uLCAkY29uZmxpY3RpbmdPcHRpb25zKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL2d1enpsZScsCiAgICAgICAgICAgICAgICAnNy4xMicsCiAgICAgICAgICAgICAgICBcc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyBpbiB0aGUgImN1cmwiIHJlcXVlc3Qgb3B0aW9uIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvZ3V6emxlIDguMCB3aWxsIHJlamVjdCByYXcgY1VSTCBvcHRpb25zIG91dHNpZGUgdGhlIGJ1aWx0LWluIGNVUkwgaGFuZGxlcnNcJyBhbGxvdy1saXN0LicsCiAgICAgICAgICAgICAgICAgICAgc2VsZjo6Zm9ybWF0Q3VybE9wdGlvbigkb3B0aW9uKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB0cmlnZ2VyVW5zdXBwb3J0ZWRSZXF1ZXN0T3B0aW9uRGVwcmVjYXRpb25zKGFycmF5ICRvcHRpb25zKTogdm9pZAogICAgewogICAgICAgIGlmIChcYXJyYXlfa2V5X2V4aXN0cygnc3RyZWFtX2NvbnRleHQnLCAkb3B0aW9ucykpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oJ2d1enpsZWh0dHAvZ3V6emxlJywgJzcuMTEnLCAnUGFzc2luZyB0aGUgInN0cmVhbV9jb250ZXh0IiByZXF1ZXN0IG9wdGlvbiB0byBhIGNVUkwgaGFuZGxlciBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL2d1enpsZSA4LjAgd2lsbCByZWplY3QgdGhpcyBvcHRpb24gYmVjYXVzZSBjVVJMIGhhbmRsZXJzIGlnbm9yZSBQSFAgc3RyZWFtIGNvbnRleHQgb3B0aW9ucy4nKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PGludCwgc3RyaW5nfG51bGw+CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNvbmZsaWN0aW5nQ3VybE9wdGlvbnMoKTogYXJyYXkKICAgIHsKICAgICAgICBzdGF0aWMgJG9wdGlvbnMgPSBudWxsOwoKICAgICAgICBpZiAoJG9wdGlvbnMgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICRvcHRpb25zOwogICAgICAgIH0KCiAgICAgICAgJG9wdGlvbnMgPSBbXTsKCiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9TSEFSRScsICd0aGUgInRyYW5zcG9ydF9zaGFyaW5nIiBjbGllbnQgb3B0aW9uIG9yIGNVUkwgaGFuZGxlciBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1VSTCcsICd0aGUgcmVxdWVzdCBVUkknKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1BPUlQnLCAndGhlIHJlcXVlc3QgVVJJJyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9DVVNUT01SRVFVRVNUJywgJ3RoZSByZXF1ZXN0IG1ldGhvZCcpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfSFRUUEdFVCcsICd0aGUgcmVxdWVzdCBtZXRob2QnKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1BPU1QnLCAndGhlIHJlcXVlc3QgbWV0aG9kIGFuZCBib2R5Jyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9QVVQnLCAndGhlIHJlcXVlc3QgbWV0aG9kIGFuZCBib2R5Jyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9OT0JPRFknLCAndGhlIHJlcXVlc3QgbWV0aG9kJyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9VUExPQUQnLCAndGhlIHJlcXVlc3QgYm9keScpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfUE9TVEZJRUxEUycsICd0aGUgcmVxdWVzdCBib2R5Jyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9SRUFERlVOQ1RJT04nLCAndGhlIHJlcXVlc3QgYm9keScpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfUkVBRERBVEEnLCAndGhlIHJlcXVlc3QgYm9keScpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfSU5GSUxFJywgJ3RoZSByZXF1ZXN0IGJvZHknKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX0lORklMRVNJWkUnLCAndGhlIHJlcXVlc3QgYm9keScpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfSU5GSUxFU0laRV9MQVJHRScsICd0aGUgcmVxdWVzdCBib2R5Jyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9IVFRQSEVBREVSJywgJ3RoZSByZXF1ZXN0IGhlYWRlcnMnKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1VTRVJBR0VOVCcsICd0aGUgcmVxdWVzdCBoZWFkZXJzJyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9SRUZFUkVSJywgJ3RoZSByZXF1ZXN0IGhlYWRlcnMnKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX0hFQURFUkZVTkNUSU9OJywgJ3RoZSAib25faGVhZGVycyIgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1dSSVRFRlVOQ1RJT04nLCAndGhlICJzaW5rIiByZXF1ZXN0IG9wdGlvbicpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfRklMRScsICd0aGUgInNpbmsiIHJlcXVlc3Qgb3B0aW9uJyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9USU1FT1VUJywgJ3RoZSAidGltZW91dCIgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1RJTUVPVVRfTVMnLCAndGhlICJ0aW1lb3V0IiByZXF1ZXN0IG9wdGlvbicpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfQ09OTkVDVFRJTUVPVVQnLCAndGhlICJjb25uZWN0X3RpbWVvdXQiIHJlcXVlc3Qgb3B0aW9uJyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9DT05ORUNUVElNRU9VVF9NUycsICd0aGUgImNvbm5lY3RfdGltZW91dCIgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX05PU0lHTkFMJywgJ3RoZSAidGltZW91dCIgb3IgImNvbm5lY3RfdGltZW91dCIgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX05PUFJPR1JFU1MnLCAndGhlICJwcm9ncmVzcyIgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1BST0dSRVNTRlVOQ1RJT04nLCAndGhlICJwcm9ncmVzcyIgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1hGRVJJTkZPRlVOQ1RJT04nLCAndGhlICJwcm9ncmVzcyIgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1ZFUkJPU0UnLCAndGhlICJkZWJ1ZyIgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1NUREVSUicsICd0aGUgImRlYnVnIiByZXF1ZXN0IG9wdGlvbicpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfUFJPWFknLCAndGhlICJwcm94eSIgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX05PUFJPWFknLCAndGhlICJwcm94eSIgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OJywgJ3RoZSAiYWxsb3dfcmVkaXJlY3RzIiByZXF1ZXN0IG9wdGlvbicpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfTUFYUkVESVJTJywgJ3RoZSAiYWxsb3dfcmVkaXJlY3RzIiByZXF1ZXN0IG9wdGlvbicpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfUE9TVFJFRElSJywgJ3RoZSAiYWxsb3dfcmVkaXJlY3RzIiByZXF1ZXN0IG9wdGlvbicpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfUkVESVJfUFJPVE9DT0xTJywgJ3RoZSAiYWxsb3dfcmVkaXJlY3RzIiByZXF1ZXN0IG9wdGlvbicpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfUkVESVJfUFJPVE9DT0xTX1NUUicsICd0aGUgImFsbG93X3JlZGlyZWN0cyIgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1BST1RPQ09MUycsICd0aGUgInByb3RvY29scyIgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1BST1RPQ09MU19TVFInLCAndGhlICJwcm90b2NvbHMiIHJlcXVlc3Qgb3B0aW9uJyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9IVFRQX1ZFUlNJT04nLCAndGhlIHJlcXVlc3QgcHJvdG9jb2wgdmVyc2lvbicpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfSVBSRVNPTFZFJywgJ3RoZSAiZm9yY2VfaXBfcmVzb2x2ZSIgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1NTTF9WRVJJRllQRUVSJywgJ3RoZSAidmVyaWZ5IiByZXF1ZXN0IG9wdGlvbicpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfU1NMX1ZFUklGWUhPU1QnLCAndGhlICJ2ZXJpZnkiIHJlcXVlc3Qgb3B0aW9uJyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9DQUlORk8nLCAndGhlICJ2ZXJpZnkiIHJlcXVlc3Qgb3B0aW9uJyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9DQVBBVEgnLCAndGhlICJ2ZXJpZnkiIHJlcXVlc3Qgb3B0aW9uJyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9TU0xWRVJTSU9OJywgJ3RoZSAiY3J5cHRvX21ldGhvZCIgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1NTTENFUlQnLCAndGhlICJjZXJ0IiByZXF1ZXN0IG9wdGlvbicpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfU1NMQ0VSVFBBU1NXRCcsICd0aGUgImNlcnQiIHJlcXVlc3Qgb3B0aW9uJyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9TU0xDRVJUVFlQRScsICd0aGUgImNlcnRfdHlwZSIgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1NTTEtFWScsICd0aGUgInNzbF9rZXkiIHJlcXVlc3Qgb3B0aW9uJyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9TU0xLRVlQQVNTV0QnLCAndGhlICJzc2xfa2V5IiByZXF1ZXN0IG9wdGlvbicpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfS0VZUEFTU1dEJywgJ3RoZSAic3NsX2tleSIgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1NTTEtFWVRZUEUnLCAndGhlICJzc2xfa2V5X3R5cGUiIHJlcXVlc3Qgb3B0aW9uJyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9DT09LSUUnLCAndGhlICJDb29raWUiIHJlcXVlc3QgaGVhZGVyIG9yIEd1enpsZSBjb29raWUgbWlkZGxld2FyZScpOwogICAgICAgIHNlbGY6OmFkZENvbmZsaWN0aW5nQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfQ09PS0lFRklMRScsICdHdXp6bGUgY29va2llIG1pZGRsZXdhcmUnKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX0NPT0tJRUpBUicsICdHdXp6bGUgY29va2llIG1pZGRsZXdhcmUnKTsKICAgICAgICBzZWxmOjphZGRDb25mbGljdGluZ0N1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX0NPT0tJRUxJU1QnLCAnR3V6emxlIGNvb2tpZSBtaWRkbGV3YXJlJyk7CiAgICAgICAgc2VsZjo6YWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9DT09LSUVTRVNTSU9OJywgJ0d1enpsZSBjb29raWUgbWlkZGxld2FyZScpOwoKICAgICAgICByZXR1cm4gJG9wdGlvbnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PGludCwgdHJ1ZT4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gc3VwcG9ydGVkQ3VybE9wdGlvbnMoKTogYXJyYXkKICAgIHsKICAgICAgICBzdGF0aWMgJG9wdGlvbnMgPSBudWxsOwoKICAgICAgICBpZiAoJG9wdGlvbnMgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICRvcHRpb25zOwogICAgICAgIH0KCiAgICAgICAgJG9wdGlvbnMgPSBbXTsKCiAgICAgICAgc2VsZjo6YWRkU3VwcG9ydGVkQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfQUREUkVTU19TQ09QRScpOwogICAgICAgIHNlbGY6OmFkZFN1cHBvcnRlZEN1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX0NPTk5FQ1RfVE8nKTsKICAgICAgICBzZWxmOjphZGRTdXBwb3J0ZWRDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVCcpOwogICAgICAgIHNlbGY6OmFkZFN1cHBvcnRlZEN1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX0ROU19JTlRFUkZBQ0UnKTsKICAgICAgICBzZWxmOjphZGRTdXBwb3J0ZWRDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9ETlNfTE9DQUxfSVA0Jyk7CiAgICAgICAgc2VsZjo6YWRkU3VwcG9ydGVkQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfRE5TX0xPQ0FMX0lQNicpOwogICAgICAgIHNlbGY6OmFkZFN1cHBvcnRlZEN1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX0ROU19TRVJWRVJTJyk7CiAgICAgICAgc2VsZjo6YWRkU3VwcG9ydGVkQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfRE5TX1NIVUZGTEVfQUREUkVTU0VTJyk7CiAgICAgICAgc2VsZjo6YWRkU3VwcG9ydGVkQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfRU5DT0RJTkcnKTsKICAgICAgICBzZWxmOjphZGRTdXBwb3J0ZWRDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9GT1JCSURfUkVVU0UnKTsKICAgICAgICBzZWxmOjphZGRTdXBwb3J0ZWRDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9GUkVTSF9DT05ORUNUJyk7CiAgICAgICAgc2VsZjo6YWRkU3VwcG9ydGVkQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfSEFQUFlfRVlFQkFMTFNfVElNRU9VVF9NUycpOwogICAgICAgIHNlbGY6OmFkZFN1cHBvcnRlZEN1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX0hUVFBBVVRIJyk7CiAgICAgICAgc2VsZjo6YWRkU3VwcG9ydGVkQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfSU5URVJGQUNFJyk7CiAgICAgICAgc2VsZjo6YWRkU3VwcG9ydGVkQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfTE9DQUxQT1JUJyk7CiAgICAgICAgc2VsZjo6YWRkU3VwcG9ydGVkQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfTE9DQUxQT1JUUkFOR0UnKTsKICAgICAgICBzZWxmOjphZGRTdXBwb3J0ZWRDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9MT1dfU1BFRURfTElNSVQnKTsKICAgICAgICBzZWxmOjphZGRTdXBwb3J0ZWRDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9MT1dfU1BFRURfVElNRScpOwogICAgICAgIHNlbGY6OmFkZFN1cHBvcnRlZEN1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX01BWEFHRV9DT05OJyk7CiAgICAgICAgc2VsZjo6YWRkU3VwcG9ydGVkQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfTUFYQ09OTkVDVFMnKTsKICAgICAgICBzZWxmOjphZGRTdXBwb3J0ZWRDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9NQVhMSUZFVElNRV9DT05OJyk7CiAgICAgICAgc2VsZjo6YWRkU3VwcG9ydGVkQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfSFRUUFBST1hZVFVOTkVMJyk7CiAgICAgICAgc2VsZjo6YWRkU3VwcG9ydGVkQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfUFJPWFlIRUFERVInKTsKICAgICAgICBzZWxmOjphZGRTdXBwb3J0ZWRDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9QUk9YWVVTRVJQV0QnKTsKICAgICAgICBzZWxmOjphZGRTdXBwb3J0ZWRDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9SRVNPTFZFJyk7CiAgICAgICAgc2VsZjo6YWRkU3VwcG9ydGVkQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfU1NMX0NJUEhFUl9MSVNUJyk7CiAgICAgICAgc2VsZjo6YWRkU3VwcG9ydGVkQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfU1NMX0VDX0NVUlZFUycpOwogICAgICAgIHNlbGY6OmFkZFN1cHBvcnRlZEN1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1RDUF9GQVNUT1BFTicpOwogICAgICAgIHNlbGY6OmFkZFN1cHBvcnRlZEN1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1RDUF9LRUVQQUxJVkUnKTsKICAgICAgICBzZWxmOjphZGRTdXBwb3J0ZWRDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9UQ1BfS0VFUElETEUnKTsKICAgICAgICBzZWxmOjphZGRTdXBwb3J0ZWRDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9UQ1BfS0VFUElOVFZMJyk7CiAgICAgICAgc2VsZjo6YWRkU3VwcG9ydGVkQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfVENQX0tFRVBDTlQnKTsKICAgICAgICBzZWxmOjphZGRTdXBwb3J0ZWRDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9UQ1BfTk9ERUxBWScpOwogICAgICAgIHNlbGY6OmFkZFN1cHBvcnRlZEN1cmxPcHRpb24oJG9wdGlvbnMsICdDVVJMT1BUX1RMUzEzX0NJUEhFUlMnKTsKICAgICAgICBzZWxmOjphZGRTdXBwb3J0ZWRDdXJsT3B0aW9uKCRvcHRpb25zLCAnQ1VSTE9QVF9VTklYX1NPQ0tFVF9QQVRIJyk7CiAgICAgICAgc2VsZjo6YWRkU3VwcG9ydGVkQ3VybE9wdGlvbigkb3B0aW9ucywgJ0NVUkxPUFRfVVNFUlBXRCcpOwoKICAgICAgICByZXR1cm4gJG9wdGlvbnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8aW50LCB0cnVlPiAkb3B0aW9ucwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBhZGRTdXBwb3J0ZWRDdXJsT3B0aW9uKGFycmF5ICYkb3B0aW9ucywgc3RyaW5nICRjb25zdGFudCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIVxkZWZpbmVkKCRjb25zdGFudCkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gXGNvbnN0YW50KCRjb25zdGFudCk7CiAgICAgICAgaWYgKFxpc19pbnQoJHZhbHVlKSkgewogICAgICAgICAgICAkb3B0aW9uc1skdmFsdWVdID0gdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8aW50LCBzdHJpbmd8bnVsbD4gJG9wdGlvbnMKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gYWRkQ29uZmxpY3RpbmdDdXJsT3B0aW9uKGFycmF5ICYkb3B0aW9ucywgc3RyaW5nICRjb25zdGFudCwgP3N0cmluZyAkcmVwbGFjZW1lbnQpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFcZGVmaW5lZCgkY29uc3RhbnQpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICR2YWx1ZSA9IFxjb25zdGFudCgkY29uc3RhbnQpOwogICAgICAgIGlmIChcaXNfaW50KCR2YWx1ZSkpIHsKICAgICAgICAgICAgJG9wdGlvbnNbJHZhbHVlXSA9ICRyZXBsYWNlbWVudDsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlbGVhc2UoRWFzeUhhbmRsZSAkZWFzeSk6IHZvaWQKICAgIHsKICAgICAgICAkcmVzb3VyY2UgPSAkZWFzeS0+aGFuZGxlOwogICAgICAgIHVuc2V0KCRlYXN5LT5oYW5kbGUpOwoKICAgICAgICBpZiAoXGNvdW50KCR0aGlzLT5oYW5kbGVzKSA+PSAkdGhpcy0+bWF4SGFuZGxlcykgewogICAgICAgICAgICBpZiAoUEhQX1ZFUlNJT05fSUQgPCA4MDAwMCkgewogICAgICAgICAgICAgICAgXGN1cmxfY2xvc2UoJHJlc291cmNlKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFJlbW92ZSBhbGwgY2FsbGJhY2sgZnVuY3Rpb25zIGFzIHRoZXkgY2FuIGhvbGQgb250byByZWZlcmVuY2VzCiAgICAgICAgICAgIC8vIGFuZCBhcmUgbm90IGNsZWFuZWQgdXAgYnkgY3VybF9yZXNldC4gVXNpbmcgY3VybF9zZXRvcHRfYXJyYXkKICAgICAgICAgICAgLy8gZG9lcyBub3Qgd29yayBmb3Igc29tZSByZWFzb24sIHNvIHJlbW92aW5nIGVhY2ggb25lCiAgICAgICAgICAgIC8vIGluZGl2aWR1YWxseS4KICAgICAgICAgICAgXGN1cmxfc2V0b3B0KCRyZXNvdXJjZSwgXENVUkxPUFRfSEVBREVSRlVOQ1RJT04sIG51bGwpOwogICAgICAgICAgICBcY3VybF9zZXRvcHQoJHJlc291cmNlLCBcQ1VSTE9QVF9SRUFERlVOQ1RJT04sIG51bGwpOwogICAgICAgICAgICBcY3VybF9zZXRvcHQoJHJlc291cmNlLCBcQ1VSTE9QVF9XUklURUZVTkNUSU9OLCBudWxsKTsKICAgICAgICAgICAgXGN1cmxfc2V0b3B0KCRyZXNvdXJjZSwgXENVUkxPUFRfUFJPR1JFU1NGVU5DVElPTiwgbnVsbCk7CiAgICAgICAgICAgIFxjdXJsX3Jlc2V0KCRyZXNvdXJjZSk7CiAgICAgICAgICAgICR0aGlzLT5oYW5kbGVzW10gPSAkcmVzb3VyY2U7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29tcGxldGVzIGEgY1VSTCB0cmFuc2FjdGlvbiwgZWl0aGVyIHJldHVybmluZyBhIHJlc3BvbnNlIHByb21pc2Ugb3IgYQogICAgICogcmVqZWN0ZWQgcHJvbWlzZS4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlICRoYW5kbGVyCiAgICAgKiBAcGFyYW0gQ3VybEZhY3RvcnlJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmYWN0b3J5IERpY3RhdGVzIGhvdyB0aGUgaGFuZGxlIGlzIHJlbGVhc2VkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZmluaXNoKGNhbGxhYmxlICRoYW5kbGVyLCBFYXN5SGFuZGxlICRlYXN5LCBDdXJsRmFjdG9yeUludGVyZmFjZSAkZmFjdG9yeSk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJGVhc3ktPm9wdGlvbnNbJ29uX3N0YXRzJ10pKSB7CiAgICAgICAgICAgIHNlbGY6Omludm9rZVN0YXRzKCRlYXN5KTsKICAgICAgICB9CgogICAgICAgIGlmICghJGVhc3ktPnJlc3BvbnNlIHx8ICRlYXN5LT5lcnJubykgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6ZmluaXNoRXJyb3IoJGhhbmRsZXIsICRlYXN5LCAkZmFjdG9yeSk7CiAgICAgICAgfQoKICAgICAgICAvLyBSZXR1cm4gdGhlIHJlc3BvbnNlIGlmIGl0IGlzIHByZXNlbnQgYW5kIHRoZXJlIGlzIG5vIGVycm9yLgogICAgICAgICRmYWN0b3J5LT5yZWxlYXNlKCRlYXN5KTsKCiAgICAgICAgLy8gUmV3aW5kIHRoZSBib2R5IG9mIHRoZSByZXNwb25zZSBpZiBwb3NzaWJsZS4KICAgICAgICAkYm9keSA9ICRlYXN5LT5yZXNwb25zZS0+Z2V0Qm9keSgpOwogICAgICAgIGlmICgkYm9keS0+aXNTZWVrYWJsZSgpKSB7CiAgICAgICAgICAgICRib2R5LT5yZXdpbmQoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgRnVsZmlsbGVkUHJvbWlzZSgkZWFzeS0+cmVzcG9uc2UpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGludm9rZVN0YXRzKEVhc3lIYW5kbGUgJGVhc3kpOiB2b2lkCiAgICB7CiAgICAgICAgJGN1cmxTdGF0cyA9IFxjdXJsX2dldGluZm8oJGVhc3ktPmhhbmRsZSk7CiAgICAgICAgJGN1cmxTdGF0c1snYXBwY29ubmVjdF90aW1lJ10gPSBcY3VybF9nZXRpbmZvKCRlYXN5LT5oYW5kbGUsIFxDVVJMSU5GT19BUFBDT05ORUNUX1RJTUUpOwogICAgICAgICRzdGF0cyA9IG5ldyBUcmFuc2ZlclN0YXRzKAogICAgICAgICAgICAkZWFzeS0+cmVxdWVzdCwKICAgICAgICAgICAgJGVhc3ktPnJlc3BvbnNlLAogICAgICAgICAgICAkY3VybFN0YXRzWyd0b3RhbF90aW1lJ10sCiAgICAgICAgICAgICRlYXN5LT5lcnJubywKICAgICAgICAgICAgJGN1cmxTdGF0cwogICAgICAgICk7CiAgICAgICAgKCRlYXN5LT5vcHRpb25zWydvbl9zdGF0cyddKSgkc3RhdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGNhbGxhYmxlKFJlcXVlc3RJbnRlcmZhY2UsIGFycmF5KTogUHJvbWlzZUludGVyZmFjZSAkaGFuZGxlcgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBmaW5pc2hFcnJvcihjYWxsYWJsZSAkaGFuZGxlciwgRWFzeUhhbmRsZSAkZWFzeSwgQ3VybEZhY3RvcnlJbnRlcmZhY2UgJGZhY3RvcnkpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgLy8gR2V0IGVycm9yIGluZm9ybWF0aW9uIGFuZCByZWxlYXNlIHRoZSBoYW5kbGUgdG8gdGhlIGZhY3RvcnkuCiAgICAgICAgJGN0eCA9IFsKICAgICAgICAgICAgJ2Vycm5vJyA9PiAkZWFzeS0+ZXJybm8sCiAgICAgICAgICAgICdlcnJvcicgPT4gXGN1cmxfZXJyb3IoJGVhc3ktPmhhbmRsZSksCiAgICAgICAgICAgICdhcHBjb25uZWN0X3RpbWUnID0+IFxjdXJsX2dldGluZm8oJGVhc3ktPmhhbmRsZSwgXENVUkxJTkZPX0FQUENPTk5FQ1RfVElNRSksCiAgICAgICAgXSArIFxjdXJsX2dldGluZm8oJGVhc3ktPmhhbmRsZSk7CiAgICAgICAgJGN0eFtzZWxmOjpDVVJMX1ZFUlNJT05fU1RSXSA9IEN1cmxWZXJzaW9uOjpnZXRWZXJzaW9uKCkgPz8gJyc7CiAgICAgICAgJGZhY3RvcnktPnJlbGVhc2UoJGVhc3kpOwoKICAgICAgICAvLyBSZXRyeSB3aGVuIG5vdGhpbmcgaXMgcHJlc2VudCBvciB3aGVuIGN1cmwgZmFpbGVkIHRvIHJld2luZC4KICAgICAgICBpZiAoZW1wdHkoJGVhc3ktPm9wdGlvbnNbJ19lcnJfbWVzc2FnZSddKSAmJiAoISRlYXN5LT5lcnJubyB8fCAkZWFzeS0+ZXJybm8gPT0gNjUpKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpyZXRyeUZhaWxlZFJld2luZCgkaGFuZGxlciwgJGVhc3ksICRjdHgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZVJlamVjdGlvbigkZWFzeSwgJGN0eCk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUmVqZWN0aW9uKEVhc3lIYW5kbGUgJGVhc3ksIGFycmF5ICRjdHgpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgc3RhdGljICRjb25uZWN0aW9uRXJyb3JzID0gWwogICAgICAgICAgICBcQ1VSTEVfT1BFUkFUSU9OX1RJTUVPVVRFRCA9PiB0cnVlLAogICAgICAgICAgICBcQ1VSTEVfQ09VTEROVF9SRVNPTFZFX0hPU1QgPT4gdHJ1ZSwKICAgICAgICAgICAgXENVUkxFX0NPVUxETlRfQ09OTkVDVCA9PiB0cnVlLAogICAgICAgICAgICBcQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1IgPT4gdHJ1ZSwKICAgICAgICAgICAgXENVUkxFX0dPVF9OT1RISU5HID0+IHRydWUsCiAgICAgICAgXTsKCiAgICAgICAgaWYgKCRlYXN5LT5jcmVhdGVSZXNwb25zZUV4Y2VwdGlvbikgewogICAgICAgICAgICByZXR1cm4gUFxDcmVhdGU6OnJlamVjdGlvbkZvcigKICAgICAgICAgICAgICAgIG5ldyBSZXF1ZXN0RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICdBbiBlcnJvciB3YXMgZW5jb3VudGVyZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHJlc3BvbnNlJywKICAgICAgICAgICAgICAgICAgICAkZWFzeS0+cmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICBudWxsLAogICAgICAgICAgICAgICAgICAgICRlYXN5LT5jcmVhdGVSZXNwb25zZUV4Y2VwdGlvbiwKICAgICAgICAgICAgICAgICAgICAkY3R4CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gd2FzIGVuY291bnRlcmVkIGR1cmluZyB0aGUgb25IZWFkZXJzIGV2ZW50LCB0aGVuCiAgICAgICAgLy8gcmV0dXJuIGEgcmVqZWN0ZWQgcHJvbWlzZSB0aGF0IHdyYXBzIHRoYXQgZXhjZXB0aW9uLgogICAgICAgIGlmICgkZWFzeS0+b25IZWFkZXJzRXhjZXB0aW9uKSB7CiAgICAgICAgICAgIHJldHVybiBQXENyZWF0ZTo6cmVqZWN0aW9uRm9yKAogICAgICAgICAgICAgICAgbmV3IFJlcXVlc3RFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgJ0FuIGVycm9yIHdhcyBlbmNvdW50ZXJlZCBkdXJpbmcgdGhlIG9uX2hlYWRlcnMgZXZlbnQnLAogICAgICAgICAgICAgICAgICAgICRlYXN5LT5yZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICRlYXN5LT5yZXNwb25zZSwKICAgICAgICAgICAgICAgICAgICAkZWFzeS0+b25IZWFkZXJzRXhjZXB0aW9uLAogICAgICAgICAgICAgICAgICAgICRjdHgKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICR1cmkgPSAkZWFzeS0+cmVxdWVzdC0+Z2V0VXJpKCk7CgogICAgICAgICRzYW5pdGl6ZWRFcnJvciA9IHNlbGY6OnNhbml0aXplQ3VybEVycm9yKCRjdHhbJ2Vycm9yJ10gPz8gJycsICR1cmksICRlYXN5LT5lZmZlY3RpdmVQcm94eSk7CgogICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICdjVVJMIGVycm9yICVzOiAlcyAoJXMpJywKICAgICAgICAgICAgJGN0eFsnZXJybm8nXSwKICAgICAgICAgICAgJHNhbml0aXplZEVycm9yLAogICAgICAgICAgICAnc2VlIGh0dHBzOi8vY3VybC5zZS9saWJjdXJsL2MvbGliY3VybC1lcnJvcnMuaHRtbCcKICAgICAgICApOwoKICAgICAgICBpZiAoJycgIT09ICRzYW5pdGl6ZWRFcnJvcikgewogICAgICAgICAgICAkcmVkYWN0ZWRVcmlTdHJpbmcgPSBQc3I3XFV0aWxzOjpyZWRhY3RVc2VySW5mbygkdXJpKS0+X190b1N0cmluZygpOwogICAgICAgICAgICBpZiAoJHJlZGFjdGVkVXJpU3RyaW5nICE9PSAnJyAmJiBmYWxzZSA9PT0gXHN0cnBvcygkc2FuaXRpemVkRXJyb3IsICRyZWRhY3RlZFVyaVN0cmluZykpIHsKICAgICAgICAgICAgICAgICRtZXNzYWdlIC49IFxzcHJpbnRmKCcgZm9yICVzJywgJHJlZGFjdGVkVXJpU3RyaW5nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQ3JlYXRlIGEgY29ubmVjdGlvbiBleGNlcHRpb24gaWYgaXQgd2FzIGEgc3BlY2lmaWMgZXJyb3IgY29kZS4KICAgICAgICAkZXJyb3IgPSBpc3NldCgkY29ubmVjdGlvbkVycm9yc1skZWFzeS0+ZXJybm9dKQogICAgICAgICAgICA/IG5ldyBDb25uZWN0RXhjZXB0aW9uKCRtZXNzYWdlLCAkZWFzeS0+cmVxdWVzdCwgbnVsbCwgJGN0eCkKICAgICAgICAgICAgOiBuZXcgUmVxdWVzdEV4Y2VwdGlvbigkbWVzc2FnZSwgJGVhc3ktPnJlcXVlc3QsICRlYXN5LT5yZXNwb25zZSwgbnVsbCwgJGN0eCk7CgogICAgICAgIHJldHVybiBQXENyZWF0ZTo6cmVqZWN0aW9uRm9yKCRlcnJvcik7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gc2FuaXRpemVDdXJsRXJyb3Ioc3RyaW5nICRlcnJvciwgVXJpSW50ZXJmYWNlICR1cmksID9zdHJpbmcgJHByb3h5ID0gbnVsbCk6IHN0cmluZwogICAgewogICAgICAgIGlmICgnJyA9PT0gJGVycm9yKSB7CiAgICAgICAgICAgIHJldHVybiAkZXJyb3I7CiAgICAgICAgfQoKICAgICAgICAkZXJyb3IgPSBzZWxmOjpyZWRhY3RQcm94eVVzZXJJbmZvKCRlcnJvciwgJHByb3h5KTsKCiAgICAgICAgJGJhc2VVcmkgPSAkdXJpLT53aXRoUXVlcnkoJycpLT53aXRoRnJhZ21lbnQoJycpOwogICAgICAgICRiYXNlVXJpU3RyaW5nID0gJGJhc2VVcmktPl9fdG9TdHJpbmcoKTsKCiAgICAgICAgaWYgKCcnID09PSAkYmFzZVVyaVN0cmluZykgewogICAgICAgICAgICByZXR1cm4gJGVycm9yOwogICAgICAgIH0KCiAgICAgICAgJHJlZGFjdGVkVXJpU3RyaW5nID0gUHNyN1xVdGlsczo6cmVkYWN0VXNlckluZm8oJGJhc2VVcmkpLT5fX3RvU3RyaW5nKCk7CgogICAgICAgIHJldHVybiBzdHJfcmVwbGFjZSgkYmFzZVVyaVN0cmluZywgJHJlZGFjdGVkVXJpU3RyaW5nLCAkZXJyb3IpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHJlZGFjdFByb3h5VXNlckluZm8oc3RyaW5nICRlcnJvciwgP3N0cmluZyAkcHJveHkpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJHByb3h5ID09PSBudWxsIHx8ICRwcm94eSA9PT0gJycgfHwgXHN0cnBvcygkcHJveHksICdAJykgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiAkZXJyb3I7CiAgICAgICAgfQoKICAgICAgICAvLyBUaGUgZXJyb3IgbWVzc2FnZSBlbWJlZHMgdGhlIHByb3h5IHN0cmluZyBleGFjdGx5IGFzIGNvbmZpZ3VyZWQsCiAgICAgICAgLy8gc28gdGhlIHVzZXJpbmZvIG5lZWRsZSBpcyBleHRyYWN0ZWQgd2l0aCBwYXJzZV91cmwoKTogUHNyN1xVcmkKICAgICAgICAvLyBub3JtYWxpemVzIHRoZSBjb21wb25lbnRzLCB3aGljaCBjb3VsZCBtYWtlIHRoZSByZXBsYWNlbWVudCBtaXNzLgogICAgICAgICRwcm94eUZvclBhcnNpbmcgPSBcc3RycG9zKCRwcm94eSwgJzovLycpID09PSBmYWxzZSA/ICdodHRwOi8vJy4kcHJveHkgOiAkcHJveHk7CiAgICAgICAgJHByb3h5UGFydHMgPSBccGFyc2VfdXJsKCRwcm94eUZvclBhcnNpbmcpOwoKICAgICAgICBpZiAoIVxpc19hcnJheSgkcHJveHlQYXJ0cykpIHsKICAgICAgICAgICAgLy8gUHJveHkgc3RyaW5ncyB0aGF0IGRlZmVhdCBwYXJzZV91cmwoKSBhcmUgZXhhY3RseSB0aGUgb25lcwogICAgICAgICAgICAvLyBsaWJjdXJsIGVtYmVkcyB2ZXJiYXRpbSBpbiBlcnJvciB0ZXh0IHN1Y2ggYXMgIlVuc3VwcG9ydGVkCiAgICAgICAgICAgIC8vIHByb3h5IHN5bnRheCBpbiAnLi4uJyI6IHJlZGFjdCBldmVyeXRoaW5nIHVwIHRvIHRoZSBsYXN0ICdAJwogICAgICAgICAgICAvLyBvZiB0aGUgYXV0aG9yaXR5IGFzIGEgc2FmZS1zaWRlIGZhbGxiYWNrLgogICAgICAgICAgICAkYXV0aG9yaXR5ID0gXHN1YnN0cigkcHJveHlGb3JQYXJzaW5nLCBcc3RycG9zKCRwcm94eUZvclBhcnNpbmcsICc6Ly8nKSArIDMpOwogICAgICAgICAgICAkYXRQb3NpdGlvbiA9IFxzdHJycG9zKCRhdXRob3JpdHksICdAJyk7CgogICAgICAgICAgICBpZiAoJGF0UG9zaXRpb24gPT09IGZhbHNlIHx8ICRhdFBvc2l0aW9uID09PSAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGVycm9yOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gXHN0cl9yZXBsYWNlKFxzdWJzdHIoJGF1dGhvcml0eSwgMCwgJGF0UG9zaXRpb24pLidAJywgJyoqKkAnLCAkZXJyb3IpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc3NldCgkcHJveHlQYXJ0c1sndXNlciddKSAmJiAhaXNzZXQoJHByb3h5UGFydHNbJ3Bhc3MnXSkpIHsKICAgICAgICAgICAgcmV0dXJuICRlcnJvcjsKICAgICAgICB9CgogICAgICAgICR1c2VySW5mbyA9ICRwcm94eVBhcnRzWyd1c2VyJ10gPz8gJyc7CiAgICAgICAgaWYgKGlzc2V0KCRwcm94eVBhcnRzWydwYXNzJ10pKSB7CiAgICAgICAgICAgICR1c2VySW5mbyAuPSAnOicuJHByb3h5UGFydHNbJ3Bhc3MnXTsKICAgICAgICB9CgogICAgICAgIGlmICgkdXNlckluZm8gPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiAkZXJyb3I7CiAgICAgICAgfQoKICAgICAgICAkcmVkYWN0ZWRVc2VySW5mbyA9ICcqKionOwoKICAgICAgICB0cnkgewogICAgICAgICAgICAkcHJveHlVcmkgPSBuZXcgVXJpKCRwcm94eUZvclBhcnNpbmcpOwogICAgICAgICAgICAkcmVkYWN0ZWRVc2VySW5mbyA9IFBzcjdcVXRpbHM6OnJlZGFjdFVzZXJJbmZvKCRwcm94eVVyaSktPmdldFVzZXJJbmZvKCk7CgogICAgICAgICAgICBpZiAoJHJlZGFjdGVkVXNlckluZm8gPT09ICRwcm94eVVyaS0+Z2V0VXNlckluZm8oKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRlcnJvcjsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgLy8gVW5wYXJzZWFibGUgYXMgYSBVUkk6IGZhbGwgYmFjayB0byByZWRhY3RpbmcgdGhlIHdob2xlIHVzZXJpbmZvLgogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFxzdHJfcmVwbGFjZSgkdXNlckluZm8uJ0AnLCAkcmVkYWN0ZWRVc2VySW5mby4nQCcsICRlcnJvcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8aW50fHN0cmluZywgbWl4ZWQ+ICRjb25mCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldEVmZmVjdGl2ZVByb3h5KGFycmF5ICRjb25mKTogP3N0cmluZwogICAgewogICAgICAgIGlmICghXGFycmF5X2tleV9leGlzdHMoXENVUkxPUFRfUFJPWFksICRjb25mKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRwcm94eSA9ICRjb25mW1xDVVJMT1BUX1BST1hZXTsKCiAgICAgICAgcmV0dXJuIFxpc19zdHJpbmcoJHByb3h5KSAmJiAkcHJveHkgIT09ICcnID8gJHByb3h5IDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXk8aW50fHN0cmluZywgbWl4ZWQ+CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0RGVmYXVsdENvbmYoRWFzeUhhbmRsZSAkZWFzeSk6IGFycmF5CiAgICB7CiAgICAgICAgJGNvbmYgPSBbCiAgICAgICAgICAgICdfaGVhZGVycycgPT4gJGVhc3ktPnJlcXVlc3QtPmdldEhlYWRlcnMoKSwKICAgICAgICAgICAgXENVUkxPUFRfQ1VTVE9NUkVRVUVTVCA9PiAkZWFzeS0+cmVxdWVzdC0+Z2V0TWV0aG9kKCksCiAgICAgICAgICAgIFxDVVJMT1BUX1VSTCA9PiAoc3RyaW5nKSAkZWFzeS0+cmVxdWVzdC0+Z2V0VXJpKCktPndpdGhGcmFnbWVudCgnJyksCiAgICAgICAgICAgIFxDVVJMT1BUX1JFVFVSTlRSQU5TRkVSID0+IGZhbHNlLAogICAgICAgICAgICBcQ1VSTE9QVF9IRUFERVIgPT4gZmFsc2UsCiAgICAgICAgICAgIFxDVVJMT1BUX0NPTk5FQ1RUSU1FT1VUID0+IDMwMCwKICAgICAgICBdOwoKICAgICAgICAkcHJvdG9jb2xzID0gVXRpbHM6Om5vcm1hbGl6ZVByb3RvY29scygkZWFzeS0+b3B0aW9uc1sncHJvdG9jb2xzJ10gPz8gWydodHRwJywgJ2h0dHBzJ10pOwogICAgICAgICRzY2hlbWUgPSAkZWFzeS0+cmVxdWVzdC0+Z2V0VXJpKCktPmdldFNjaGVtZSgpOwogICAgICAgIGlmICghXGluX2FycmF5KCRzY2hlbWUsICRwcm90b2NvbHMsIHRydWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSZXF1ZXN0RXhjZXB0aW9uKFxzcHJpbnRmKCdUaGUgc2NoZW1lICIlcyIgaXMgbm90IGFsbG93ZWQgYnkgdGhlIHByb3RvY29scyByZXF1ZXN0IG9wdGlvbi4nLCAkc2NoZW1lKSwgJGVhc3ktPnJlcXVlc3QpOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxkZWZpbmVkKCdDVVJMT1BUX1BST1RPQ09MUycpKSB7CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1BST1RPQ09MU10gPSBzZWxmOjpjdXJsUHJvdG9jb2xNYXNrKCRwcm90b2NvbHMpOwogICAgICAgIH0KCiAgICAgICAgJHZlcnNpb24gPSAkZWFzeS0+cmVxdWVzdC0+Z2V0UHJvdG9jb2xWZXJzaW9uKCk7CgogICAgICAgIGlmICgnMicgPT09ICR2ZXJzaW9uIHx8ICcyLjAnID09PSAkdmVyc2lvbikgewogICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9IVFRQX1ZFUlNJT05dID0gXENVUkxfSFRUUF9WRVJTSU9OXzJfMDsKICAgICAgICB9IGVsc2VpZiAoJzEuMScgPT09ICR2ZXJzaW9uKSB7CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX0hUVFBfVkVSU0lPTl0gPSBcQ1VSTF9IVFRQX1ZFUlNJT05fMV8xOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX0hUVFBfVkVSU0lPTl0gPSBcQ1VSTF9IVFRQX1ZFUlNJT05fMV8wOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRjb25mOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdICRwcm90b2NvbHMKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY3VybFByb3RvY29sTWFzayhhcnJheSAkcHJvdG9jb2xzKTogaW50CiAgICB7CiAgICAgICAgJG1hc2sgPSAwOwoKICAgICAgICBpZiAoXGluX2FycmF5KCdodHRwJywgJHByb3RvY29scywgdHJ1ZSkpIHsKICAgICAgICAgICAgJG1hc2sgfD0gXENVUkxQUk9UT19IVFRQOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxpbl9hcnJheSgnaHR0cHMnLCAkcHJvdG9jb2xzLCB0cnVlKSkgewogICAgICAgICAgICAkbWFzayB8PSBcQ1VSTFBST1RPX0hUVFBTOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRtYXNrOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICR0eXBlCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZVRsc0ZpbGVUeXBlKHN0cmluZyAkb3B0aW9uLCAkdHlwZSk6IHN0cmluZwogICAgewogICAgICAgIGlmICghXGlzX3N0cmluZygkdHlwZSkgfHwgJHR5cGUgPT09ICcnKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKFxzcHJpbnRmKCclcyBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycsICRvcHRpb24pKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcc3RydG91cHBlcigkdHlwZSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gc2hvdWxkVmFsaWRhdGVTc2xLZXlGaWxlKD9zdHJpbmcgJHR5cGUpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0eXBlICE9PSAnRU5HJyAmJiAkdHlwZSAhPT0gJ1BST1YnOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYXBwbHlNZXRob2QoRWFzeUhhbmRsZSAkZWFzeSwgYXJyYXkgJiRjb25mKTogdm9pZAogICAgewogICAgICAgICRib2R5ID0gJGVhc3ktPnJlcXVlc3QtPmdldEJvZHkoKTsKICAgICAgICAkc2l6ZSA9ICRib2R5LT5nZXRTaXplKCk7CgogICAgICAgIGlmICgkc2l6ZSA9PT0gbnVsbCB8fCAkc2l6ZSA+IDApIHsKICAgICAgICAgICAgJHRoaXMtPmFwcGx5Qm9keSgkZWFzeS0+cmVxdWVzdCwgJGVhc3ktPm9wdGlvbnMsICRjb25mKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRtZXRob2QgPSAkZWFzeS0+cmVxdWVzdC0+Z2V0TWV0aG9kKCk7CiAgICAgICAgaWYgKCRtZXRob2QgPT09ICdQVVQnIHx8ICRtZXRob2QgPT09ICdQT1NUJykgewogICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4zLjIKICAgICAgICAgICAgaWYgKCEkZWFzeS0+cmVxdWVzdC0+aGFzSGVhZGVyKCdDb250ZW50LUxlbmd0aCcpKSB7CiAgICAgICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9IVFRQSEVBREVSXVtdID0gJ0NvbnRlbnQtTGVuZ3RoOiAwJzsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmICgkbWV0aG9kID09PSAnSEVBRCcpIHsKICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfTk9CT0RZXSA9IHRydWU7CiAgICAgICAgICAgIHVuc2V0KAogICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfV1JJVEVGVU5DVElPTl0sCiAgICAgICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9SRUFERlVOQ1RJT05dLAogICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfRklMRV0sCiAgICAgICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9JTkZJTEVdCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYXBwbHlCb2R5KFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zLCBhcnJheSAmJGNvbmYpOiB2b2lkCiAgICB7CiAgICAgICAgJHNpemUgPSAkcmVxdWVzdC0+aGFzSGVhZGVyKCdDb250ZW50LUxlbmd0aCcpCiAgICAgICAgICAgID8gKGludCkgJHJlcXVlc3QtPmdldEhlYWRlckxpbmUoJ0NvbnRlbnQtTGVuZ3RoJykKICAgICAgICAgICAgOiBudWxsOwoKICAgICAgICAvLyBTZW5kIHRoZSBib2R5IGFzIGEgc3RyaW5nIGlmIHRoZSBzaXplIGlzIGxlc3MgdGhhbiAxTUIgT1IgaWYgdGhlCiAgICAgICAgLy8gW2N1cmxdW2JvZHlfYXNfc3RyaW5nXSByZXF1ZXN0IHZhbHVlIGlzIHNldC4KICAgICAgICBpZiAoKCRzaXplICE9PSBudWxsICYmICRzaXplIDwgMTAwMDAwMCkgfHwgIWVtcHR5KCRvcHRpb25zWydfYm9keV9hc19zdHJpbmcnXSkpIHsKICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfUE9TVEZJRUxEU10gPSAoc3RyaW5nKSAkcmVxdWVzdC0+Z2V0Qm9keSgpOwogICAgICAgICAgICAvLyBEb24ndCBkdXBsaWNhdGUgdGhlIENvbnRlbnQtTGVuZ3RoIGhlYWRlcgogICAgICAgICAgICAkdGhpcy0+cmVtb3ZlSGVhZGVyKCdDb250ZW50LUxlbmd0aCcsICRjb25mKTsKICAgICAgICAgICAgJHRoaXMtPnJlbW92ZUhlYWRlcignVHJhbnNmZXItRW5jb2RpbmcnLCAkY29uZik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfVVBMT0FEXSA9IHRydWU7CiAgICAgICAgICAgIGlmICgkc2l6ZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfSU5GSUxFU0laRV0gPSAkc2l6ZTsKICAgICAgICAgICAgICAgICR0aGlzLT5yZW1vdmVIZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgJGNvbmYpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRib2R5ID0gJHJlcXVlc3QtPmdldEJvZHkoKTsKICAgICAgICAgICAgaWYgKCRib2R5LT5pc1NlZWthYmxlKCkpIHsKICAgICAgICAgICAgICAgICRib2R5LT5yZXdpbmQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9SRUFERlVOQ1RJT05dID0gc3RhdGljIGZ1bmN0aW9uICgkY2gsICRmZCwgJGxlbmd0aCkgdXNlICgkYm9keSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRib2R5LT5yZWFkKCRsZW5ndGgpOwogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlIEV4cGVjdCBoZWFkZXIgaXMgbm90IHByZXNlbnQsIHByZXZlbnQgY3VybCBmcm9tIGFkZGluZyBpdAogICAgICAgIGlmICghJHJlcXVlc3QtPmhhc0hlYWRlcignRXhwZWN0JykpIHsKICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfSFRUUEhFQURFUl1bXSA9ICdFeHBlY3Q6JzsKICAgICAgICB9CgogICAgICAgIC8vIGNVUkwgc29tZXRpbWVzIGFkZHMgYSBjb250ZW50LXR5cGUgYnkgZGVmYXVsdC4gUHJldmVudCB0aGlzLgogICAgICAgIGlmICghJHJlcXVlc3QtPmhhc0hlYWRlcignQ29udGVudC1UeXBlJykpIHsKICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfSFRUUEhFQURFUl1bXSA9ICdDb250ZW50LVR5cGU6JzsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhcHBseUhlYWRlcnMoRWFzeUhhbmRsZSAkZWFzeSwgYXJyYXkgJiRjb25mKTogdm9pZAogICAgewogICAgICAgIGZvcmVhY2ggKCRjb25mWydfaGVhZGVycyddIGFzICRuYW1lID0+ICR2YWx1ZXMpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJHZhbHVlcyBhcyAkdmFsdWUpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IChzdHJpbmcpICR2YWx1ZTsKICAgICAgICAgICAgICAgIGlmICgkdmFsdWUgPT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gY1VSTCByZXF1aXJlcyBhIHNwZWNpYWwgZm9ybWF0IGZvciBlbXB0eSBoZWFkZXJzLgogICAgICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvMTg4MiBmb3IgbW9yZSBkZXRhaWxzLgogICAgICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX0hUVFBIRUFERVJdW10gPSAiJG5hbWU7IjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfSFRUUEhFQURFUl1bXSA9ICIkbmFtZTogJHZhbHVlIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gUmVtb3ZlIHRoZSBBY2NlcHQgaGVhZGVyIGlmIG9uZSB3YXMgbm90IHNldAogICAgICAgIGlmICghJGVhc3ktPnJlcXVlc3QtPmhhc0hlYWRlcignQWNjZXB0JykpIHsKICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfSFRUUEhFQURFUl1bXSA9ICdBY2NlcHQ6JzsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZW1vdmUgYSBoZWFkZXIgZnJvbSB0aGUgb3B0aW9ucyBhcnJheS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lICAgIENhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIHRvIHJlbW92ZQogICAgICogQHBhcmFtIGFycmF5ICAkb3B0aW9ucyBBcnJheSBvZiBvcHRpb25zIHRvIG1vZGlmeQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJlbW92ZUhlYWRlcihzdHJpbmcgJG5hbWUsIGFycmF5ICYkb3B0aW9ucyk6IHZvaWQKICAgIHsKICAgICAgICBmb3JlYWNoIChcYXJyYXlfa2V5cygkb3B0aW9uc1snX2hlYWRlcnMnXSkgYXMgJGtleSkgewogICAgICAgICAgICBpZiAoIVxzdHJjYXNlY21wKChzdHJpbmcpICRrZXksICRuYW1lKSkgewogICAgICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ19oZWFkZXJzJ11bJGtleV0pOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFwcGx5SGFuZGxlck9wdGlvbnMoRWFzeUhhbmRsZSAkZWFzeSwgYXJyYXkgJiRjb25mKTogdm9pZAogICAgewogICAgICAgICRvcHRpb25zID0gJGVhc3ktPm9wdGlvbnM7CiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWyd2ZXJpZnknXSkpIHsKICAgICAgICAgICAgaWYgKCRvcHRpb25zWyd2ZXJpZnknXSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRjb25mW1xDVVJMT1BUX0NBSU5GT10pOwogICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfU1NMX1ZFUklGWUhPU1RdID0gMDsKICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1NTTF9WRVJJRllQRUVSXSA9IGZhbHNlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfU1NMX1ZFUklGWUhPU1RdID0gMjsKICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1NTTF9WRVJJRllQRUVSXSA9IHRydWU7CiAgICAgICAgICAgICAgICBpZiAoXGlzX3N0cmluZygkb3B0aW9uc1sndmVyaWZ5J10pKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gVGhyb3cgYW4gZXJyb3IgaWYgdGhlIGZpbGUvZm9sZGVyL2xpbmsgcGF0aCBpcyBub3QgdmFsaWQgb3IgZG9lc24ndCBleGlzdC4KICAgICAgICAgICAgICAgICAgICBpZiAoIVxmaWxlX2V4aXN0cygkb3B0aW9uc1sndmVyaWZ5J10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJTU0wgQ0EgYnVuZGxlIG5vdCBmb3VuZDogeyRvcHRpb25zWyd2ZXJpZnknXX0iKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gSWYgaXQncyBhIGRpcmVjdG9yeSBvciBhIGxpbmsgdG8gYSBkaXJlY3RvcnkgdXNlIENVUkxPUFRfQ0FQQVRILgogICAgICAgICAgICAgICAgICAgIC8vIElmIG5vdCwgaXQncyBwcm9iYWJseSBhIGZpbGUsIG9yIGEgbGluayB0byBhIGZpbGUsIHNvIHVzZSBDVVJMT1BUX0NBSU5GTy4KICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgIFxpc19kaXIoJG9wdGlvbnNbJ3ZlcmlmeSddKQogICAgICAgICAgICAgICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcaXNfbGluaygkb3B0aW9uc1sndmVyaWZ5J10pID09PSB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoJHZlcmlmeUxpbmsgPSBccmVhZGxpbmsoJG9wdGlvbnNbJ3ZlcmlmeSddKSkgIT09IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBcaXNfZGlyKCR2ZXJpZnlMaW5rKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX0NBUEFUSF0gPSAkb3B0aW9uc1sndmVyaWZ5J107CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfQ0FJTkZPXSA9ICRvcHRpb25zWyd2ZXJpZnknXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghaXNzZXQoJG9wdGlvbnNbJ2N1cmwnXVtcQ1VSTE9QVF9FTkNPRElOR10pICYmICFlbXB0eSgkb3B0aW9uc1snZGVjb2RlX2NvbnRlbnQnXSkpIHsKICAgICAgICAgICAgJGFjY2VwdCA9ICRlYXN5LT5yZXF1ZXN0LT5nZXRIZWFkZXJMaW5lKCdBY2NlcHQtRW5jb2RpbmcnKTsKICAgICAgICAgICAgaWYgKCRhY2NlcHQpIHsKICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX0VOQ09ESU5HXSA9ICRhY2NlcHQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBUaGUgZW1wdHkgc3RyaW5nIGVuYWJsZXMgYWxsIGF2YWlsYWJsZSBkZWNvZGVycyBhbmQgaW1wbGljaXRseQogICAgICAgICAgICAgICAgLy8gc2V0cyBhIG1hdGNoaW5nICdBY2NlcHQtRW5jb2RpbmcnIGhlYWRlci4KICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX0VOQ09ESU5HXSA9ICcnOwogICAgICAgICAgICAgICAgLy8gQnV0IGFzIHRoZSB1c2VyIGRpZCBub3Qgc3BlY2lmeSBhbnkgZW5jb2RpbmcgcHJlZmVyZW5jZSwKICAgICAgICAgICAgICAgIC8vIGxldCdzIGxlYXZlIGl0IHVwIHRvIHNlcnZlciBieSBwcmV2ZW50aW5nIGN1cmwgZnJvbSBzZW5kaW5nCiAgICAgICAgICAgICAgICAvLyB0aGUgaGVhZGVyLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzICdBY2NlcHQtRW5jb2Rpbmc6IConLgogICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzkxMTAjZmllbGQuYWNjZXB0LWVuY29kaW5nCiAgICAgICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9IVFRQSEVBREVSXVtdID0gJ0FjY2VwdC1FbmNvZGluZzonOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIWlzc2V0KCRvcHRpb25zWydzaW5rJ10pKSB7CiAgICAgICAgICAgIC8vIFVzZSBhIGRlZmF1bHQgdGVtcCBzdHJlYW0gaWYgbm8gc2luayB3YXMgc2V0LgogICAgICAgICAgICAkb3B0aW9uc1snc2luayddID0gUHNyN1xVdGlsczo6dHJ5Rm9wZW4oJ3BocDovL3RlbXAnLCAndysnKTsKICAgICAgICB9CiAgICAgICAgJHNpbmsgPSAkb3B0aW9uc1snc2luayddOwogICAgICAgIGlmICghXGlzX3N0cmluZygkc2luaykpIHsKICAgICAgICAgICAgJHNpbmsgPSBQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoJHNpbmspOwogICAgICAgIH0gZWxzZWlmICghXGlzX2RpcihcZGlybmFtZSgkc2luaykpKSB7CiAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBkaXJlY3RvcnkgZXhpc3RzIGJlZm9yZSBmYWlsaW5nIGluIGN1cmwuCiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbihcc3ByaW50ZignRGlyZWN0b3J5ICVzIGRvZXMgbm90IGV4aXN0IGZvciBzaW5rIHZhbHVlIG9mICVzJywgXGRpcm5hbWUoJHNpbmspLCAkc2luaykpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzaW5rID0gbmV3IExhenlPcGVuU3RyZWFtKCRzaW5rLCAndysnKTsKICAgICAgICB9CiAgICAgICAgJGVhc3ktPnNpbmsgPSAkc2luazsKICAgICAgICAkY29uZltcQ1VSTE9QVF9XUklURUZVTkNUSU9OXSA9IHN0YXRpYyBmdW5jdGlvbiAoJGNoLCAkd3JpdGUpIHVzZSAoJHNpbmspOiBpbnQgewogICAgICAgICAgICByZXR1cm4gJHNpbmstPndyaXRlKCR3cml0ZSk7CiAgICAgICAgfTsKCiAgICAgICAgJHRpbWVvdXRSZXF1aXJlc05vU2lnbmFsID0gZmFsc2U7CiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWyd0aW1lb3V0J10pKSB7CiAgICAgICAgICAgICR0aW1lb3V0UmVxdWlyZXNOb1NpZ25hbCB8PSAkb3B0aW9uc1sndGltZW91dCddIDwgMTsKICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfVElNRU9VVF9NU10gPSAkb3B0aW9uc1sndGltZW91dCddICogMTAwMDsKICAgICAgICB9CgogICAgICAgIC8vIENVUkwgZGVmYXVsdCB2YWx1ZSBpcyBDVVJMX0lQUkVTT0xWRV9XSEFURVZFUgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snZm9yY2VfaXBfcmVzb2x2ZSddKSkgewogICAgICAgICAgICBpZiAoJ3Y0JyA9PT0gJG9wdGlvbnNbJ2ZvcmNlX2lwX3Jlc29sdmUnXSkgewogICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfSVBSRVNPTFZFXSA9IFxDVVJMX0lQUkVTT0xWRV9WNDsKICAgICAgICAgICAgfSBlbHNlaWYgKCd2NicgPT09ICRvcHRpb25zWydmb3JjZV9pcF9yZXNvbHZlJ10pIHsKICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX0lQUkVTT0xWRV0gPSBcQ1VSTF9JUFJFU09MVkVfVjY7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snY29ubmVjdF90aW1lb3V0J10pKSB7CiAgICAgICAgICAgICR0aW1lb3V0UmVxdWlyZXNOb1NpZ25hbCB8PSAkb3B0aW9uc1snY29ubmVjdF90aW1lb3V0J10gPCAxOwogICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9DT05ORUNUVElNRU9VVF9NU10gPSAkb3B0aW9uc1snY29ubmVjdF90aW1lb3V0J10gKiAxMDAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aW1lb3V0UmVxdWlyZXNOb1NpZ25hbCAmJiBcc3RydG91cHBlcihcc3Vic3RyKFxQSFBfT1MsIDAsIDMpKSAhPT0gJ1dJTicpIHsKICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfTk9TSUdOQUxdID0gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIC8vIEFsd2F5cyBwaW4gQ1VSTE9QVF9QUk9YWSAoYW5kIENVUkxPUFRfTk9QUk9YWSB3aGVuIGF2YWlsYWJsZSkgc28KICAgICAgICAvLyB0aGF0IGxpYmN1cmwgbmV2ZXIgZmFsbHMgYmFjayB0byByZWFkaW5nIHByb3h5IGVudmlyb25tZW50CiAgICAgICAgLy8gdmFyaWFibGVzIGl0c2VsZi4gV2hlbiB0aGUgcHJveHkgcmVxdWVzdCBvcHRpb24gbWFrZXMgbm8gZGVjaXNpb24sCiAgICAgICAgLy8gdGhlIGVudmlyb25tZW50IGlzIHJlc29sdmVkIGhlcmUgd2l0aCBsaWJjdXJsJ3Mgb3duIHNlbWFudGljcy4KICAgICAgICAkcHJveHlDb25mID0gbnVsbDsKICAgICAgICAkbm9Qcm94eUNvbmYgPSAnJzsKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ3Byb3h5J10pKSB7CiAgICAgICAgICAgIGlmICghXGlzX2FycmF5KCRvcHRpb25zWydwcm94eSddKSkgewogICAgICAgICAgICAgICAgJHByb3h5Q29uZiA9ICRvcHRpb25zWydwcm94eSddOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHNjaGVtZSA9ICRlYXN5LT5yZXF1ZXN0LT5nZXRVcmkoKS0+Z2V0U2NoZW1lKCk7CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ3Byb3h5J11bJHNjaGVtZV0pKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICBpc3NldCgkb3B0aW9uc1sncHJveHknXVsnbm8nXSkKICAgICAgICAgICAgICAgICAgICAgICAgJiYgVXRpbHM6OmlzVXJpSW5Ob1Byb3h5KCRlYXN5LT5yZXF1ZXN0LT5nZXRVcmkoKSwgJG9wdGlvbnNbJ3Byb3h5J11bJ25vJ10pCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwcm94eUNvbmYgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgJG5vUHJveHlDb25mID0gJyonOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwcm94eUNvbmYgPSAkb3B0aW9uc1sncHJveHknXVskc2NoZW1lXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkcHJveHlDb25mID09PSBudWxsKSB7CiAgICAgICAgICAgICRwcm94eUNvbmYgPSBQcm94eUVudmlyb25tZW50OjpnZXRQcm94eUZvclNjaGVtZSgkZWFzeS0+cmVxdWVzdC0+Z2V0VXJpKCktPmdldFNjaGVtZSgpKTsKICAgICAgICAgICAgaWYgKCRwcm94eUNvbmYgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRwcm94eUNvbmYgPSAnJzsKICAgICAgICAgICAgfSBlbHNlaWYgKAogICAgICAgICAgICAgICAgKCRub1Byb3h5ID0gUHJveHlFbnZpcm9ubWVudDo6Z2V0Tm9Qcm94eSgpKSAhPT0gbnVsbAogICAgICAgICAgICAgICAgJiYgVXRpbHM6OmlzVXJpSW5Ob1Byb3h5KCRlYXN5LT5yZXF1ZXN0LT5nZXRVcmkoKSwgUHJveHlFbnZpcm9ubWVudDo6c3BsaXROb1Byb3h5KCRub1Byb3h5KSkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAvLyBUaGUgZW52aXJvbm1lbnQgbm9fcHJveHkgbGlzdCBpcyB0b2tlbml6ZWQgdGhlIHdheSBsaWJjdXJsCiAgICAgICAgICAgICAgICAvLyB0b2tlbml6ZXMgaXQgYW5kIG1hdGNoZWQgaGVyZSB3aXRoIHRoZSBzYW1lIHJ1bGVzIGFzIHRoZQogICAgICAgICAgICAgICAgLy8gcHJveHkgb3B0aW9uJ3MgIm5vIiBsaXN0LCBzbyBiZWhhdmlvciBkb2VzIG5vdCBkZXBlbmQgb24KICAgICAgICAgICAgICAgIC8vIHRoZSBpbnN0YWxsZWQgbGliY3VybCdzIG1hdGNoZXIuCiAgICAgICAgICAgICAgICAkcHJveHlDb25mID0gJyc7CiAgICAgICAgICAgICAgICAkbm9Qcm94eUNvbmYgPSAnKic7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRjb25mW1xDVVJMT1BUX1BST1hZXSA9ICRwcm94eUNvbmY7CiAgICAgICAgaWYgKFxkZWZpbmVkKCdDVVJMT1BUX05PUFJPWFknKSkgewogICAgICAgICAgICAkY29uZlsoaW50KSBcY29uc3RhbnQoJ0NVUkxPUFRfTk9QUk9YWScpXSA9ICRub1Byb3h5Q29uZjsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snY3J5cHRvX21ldGhvZCddKSkgewogICAgICAgICAgICAkcHJvdG9jb2xWZXJzaW9uID0gJGVhc3ktPnJlcXVlc3QtPmdldFByb3RvY29sVmVyc2lvbigpOwoKICAgICAgICAgICAgLy8gSWYgSFRUUC8yLCB1cGdyYWRlIFRMUyAxLjAgYW5kIDEuMSB0byAxLjIKICAgICAgICAgICAgaWYgKCcyJyA9PT0gJHByb3RvY29sVmVyc2lvbiB8fCAnMi4wJyA9PT0gJHByb3RvY29sVmVyc2lvbikgewogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIFxTVFJFQU1fQ1JZUFRPX01FVEhPRF9UTFN2MV8wX0NMSUVOVCA9PT0gJG9wdGlvbnNbJ2NyeXB0b19tZXRob2QnXQogICAgICAgICAgICAgICAgICAgIHx8IFxTVFJFQU1fQ1JZUFRPX01FVEhPRF9UTFN2MV8xX0NMSUVOVCA9PT0gJG9wdGlvbnNbJ2NyeXB0b19tZXRob2QnXQogICAgICAgICAgICAgICAgICAgIHx8IFxTVFJFQU1fQ1JZUFRPX01FVEhPRF9UTFN2MV8yX0NMSUVOVCA9PT0gJG9wdGlvbnNbJ2NyeXB0b19tZXRob2QnXQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfU1NMVkVSU0lPTl0gPSBcQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzI7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoZGVmaW5lZCgnU1RSRUFNX0NSWVBUT19NRVRIT0RfVExTdjFfM19DTElFTlQnKSAmJiBcU1RSRUFNX0NSWVBUT19NRVRIT0RfVExTdjFfM19DTElFTlQgPT09ICRvcHRpb25zWydjcnlwdG9fbWV0aG9kJ10pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIUN1cmxWZXJzaW9uOjpzdXBwb3J0c1RsczEzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgY3J5cHRvX21ldGhvZCByZXF1ZXN0IG9wdGlvbjogVExTIDEuMyBub3Qgc3VwcG9ydGVkIGJ5IHlvdXIgdmVyc2lvbiBvZiBjVVJMJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1NTTFZFUlNJT05dID0gXENVUkxfU1NMVkVSU0lPTl9UTFN2MV8zOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBjcnlwdG9fbWV0aG9kIHJlcXVlc3Qgb3B0aW9uOiB1bmtub3duIHZlcnNpb24gcHJvdmlkZWQnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKFxTVFJFQU1fQ1JZUFRPX01FVEhPRF9UTFN2MV8wX0NMSUVOVCA9PT0gJG9wdGlvbnNbJ2NyeXB0b19tZXRob2QnXSkgewogICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfU1NMVkVSU0lPTl0gPSBcQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzA7CiAgICAgICAgICAgIH0gZWxzZWlmIChcU1RSRUFNX0NSWVBUT19NRVRIT0RfVExTdjFfMV9DTElFTlQgPT09ICRvcHRpb25zWydjcnlwdG9fbWV0aG9kJ10pIHsKICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1NTTFZFUlNJT05dID0gXENVUkxfU1NMVkVSU0lPTl9UTFN2MV8xOwogICAgICAgICAgICB9IGVsc2VpZiAoXFNUUkVBTV9DUllQVE9fTUVUSE9EX1RMU3YxXzJfQ0xJRU5UID09PSAkb3B0aW9uc1snY3J5cHRvX21ldGhvZCddKSB7CiAgICAgICAgICAgICAgICBpZiAoIUN1cmxWZXJzaW9uOjpzdXBwb3J0c1RsczEyKCkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBjcnlwdG9fbWV0aG9kIHJlcXVlc3Qgb3B0aW9uOiBUTFMgMS4yIG5vdCBzdXBwb3J0ZWQgYnkgeW91ciB2ZXJzaW9uIG9mIGNVUkwnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1NTTFZFUlNJT05dID0gXENVUkxfU1NMVkVSU0lPTl9UTFN2MV8yOwogICAgICAgICAgICB9IGVsc2VpZiAoZGVmaW5lZCgnU1RSRUFNX0NSWVBUT19NRVRIT0RfVExTdjFfM19DTElFTlQnKSAmJiBcU1RSRUFNX0NSWVBUT19NRVRIT0RfVExTdjFfM19DTElFTlQgPT09ICRvcHRpb25zWydjcnlwdG9fbWV0aG9kJ10pIHsKICAgICAgICAgICAgICAgIGlmICghQ3VybFZlcnNpb246OnN1cHBvcnRzVGxzMTMoKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGNyeXB0b19tZXRob2QgcmVxdWVzdCBvcHRpb246IFRMUyAxLjMgbm90IHN1cHBvcnRlZCBieSB5b3VyIHZlcnNpb24gb2YgY1VSTCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfU1NMVkVSU0lPTl0gPSBcQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzM7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBjcnlwdG9fbWV0aG9kIHJlcXVlc3Qgb3B0aW9uOiB1bmtub3duIHZlcnNpb24gcHJvdmlkZWQnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGNlcnRUeXBlID0gbnVsbDsKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2NlcnRfdHlwZSddKSkgewogICAgICAgICAgICAkY2VydFR5cGUgPSBzZWxmOjpub3JtYWxpemVUbHNGaWxlVHlwZSgnY2VydF90eXBlJywgJG9wdGlvbnNbJ2NlcnRfdHlwZSddKTsKICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfU1NMQ0VSVFRZUEVdID0gJGNlcnRUeXBlOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydjZXJ0J10pKSB7CiAgICAgICAgICAgICRjZXJ0ID0gJG9wdGlvbnNbJ2NlcnQnXTsKICAgICAgICAgICAgaWYgKFxpc19hcnJheSgkY2VydCkpIHsKICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJGNlcnRbMF0pIHx8ICFcaXNfc3RyaW5nKCRjZXJ0WzBdKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGNlcnQgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY2VydFsxXSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIVxpc19zdHJpbmcoJGNlcnRbMV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGNlcnQgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfU1NMQ0VSVFBBU1NXRF0gPSAkY2VydFsxXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRjZXJ0ID0gJGNlcnRbMF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCRjZXJ0KSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgY2VydCByZXF1ZXN0IG9wdGlvbicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghXGZpbGVfZXhpc3RzKCRjZXJ0KSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIlNTTCBjZXJ0aWZpY2F0ZSBub3QgZm91bmQ6IHskY2VydH0iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBPcGVuU1NMICh2ZXJzaW9ucyAwLjkuMyBhbmQgbGF0ZXIpIGFsc28gc3VwcG9ydCAiUDEyIiBmb3IgUEtDUyMxMi1lbmNvZGVkIGZpbGVzLgogICAgICAgICAgICAvLyBzZWUgaHR0cHM6Ly9jdXJsLnNlL2xpYmN1cmwvYy9DVVJMT1BUX1NTTENFUlRUWVBFLmh0bWwKICAgICAgICAgICAgJGV4dCA9IHBhdGhpbmZvKCRjZXJ0LCBcUEFUSElORk9fRVhURU5TSU9OKTsKICAgICAgICAgICAgaWYgKCRjZXJ0VHlwZSA9PT0gbnVsbCAmJiBwcmVnX21hdGNoKCcjXihkZXJ8cDEyKSQjaScsICRleHQpKSB7CiAgICAgICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9TU0xDRVJUVFlQRV0gPSBzdHJ0b3VwcGVyKCRleHQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1NTTENFUlRdID0gJGNlcnQ7CiAgICAgICAgfQoKICAgICAgICAkc3NsS2V5VHlwZSA9IG51bGw7CiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydzc2xfa2V5X3R5cGUnXSkpIHsKICAgICAgICAgICAgJHNzbEtleVR5cGUgPSBzZWxmOjpub3JtYWxpemVUbHNGaWxlVHlwZSgnc3NsX2tleV90eXBlJywgJG9wdGlvbnNbJ3NzbF9rZXlfdHlwZSddKTsKICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfU1NMS0VZVFlQRV0gPSAkc3NsS2V5VHlwZTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snc3NsX2tleSddKSkgewogICAgICAgICAgICBpZiAoXGlzX2FycmF5KCRvcHRpb25zWydzc2xfa2V5J10pKSB7CiAgICAgICAgICAgICAgICBpZiAoIWlzc2V0KCRvcHRpb25zWydzc2xfa2V5J11bMF0pIHx8ICFcaXNfc3RyaW5nKCRvcHRpb25zWydzc2xfa2V5J11bMF0pKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgc3NsX2tleSByZXF1ZXN0IG9wdGlvbicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydzc2xfa2V5J11bMV0pKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCRvcHRpb25zWydzc2xfa2V5J11bMV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIHNzbF9rZXkgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfU1NMS0VZUEFTU1dEXSA9ICRvcHRpb25zWydzc2xfa2V5J11bMV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkc3NsS2V5ID0gJG9wdGlvbnNbJ3NzbF9rZXknXVswXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHNzbEtleSA9ICRzc2xLZXkgPz8gJG9wdGlvbnNbJ3NzbF9rZXknXTsKCiAgICAgICAgICAgIGlmICghXGlzX3N0cmluZygkc3NsS2V5KSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgc3NsX2tleSByZXF1ZXN0IG9wdGlvbicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoc2VsZjo6c2hvdWxkVmFsaWRhdGVTc2xLZXlGaWxlKCRzc2xLZXlUeXBlKSAmJiAhXGZpbGVfZXhpc3RzKCRzc2xLZXkpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiU1NMIHByaXZhdGUga2V5IG5vdCBmb3VuZDogeyRzc2xLZXl9Iik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfU1NMS0VZXSA9ICRzc2xLZXk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ3Byb2dyZXNzJ10pKSB7CiAgICAgICAgICAgICRwcm9ncmVzcyA9ICRvcHRpb25zWydwcm9ncmVzcyddOwogICAgICAgICAgICBpZiAoIVxpc19jYWxsYWJsZSgkcHJvZ3Jlc3MpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigncHJvZ3Jlc3MgY2xpZW50IG9wdGlvbiBtdXN0IGJlIGNhbGxhYmxlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfTk9QUk9HUkVTU10gPSBmYWxzZTsKICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfUFJPR1JFU1NGVU5DVElPTl0gPSBzdGF0aWMgZnVuY3Rpb24gKCRyZXNvdXJjZSwgaW50ICRkb3dubG9hZFNpemUsIGludCAkZG93bmxvYWRlZCwgaW50ICR1cGxvYWRTaXplLCBpbnQgJHVwbG9hZGVkKSB1c2UgKCRwcm9ncmVzcykgewogICAgICAgICAgICAgICAgJHByb2dyZXNzKCRkb3dubG9hZFNpemUsICRkb3dubG9hZGVkLCAkdXBsb2FkU2l6ZSwgJHVwbG9hZGVkKTsKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGlmICghZW1wdHkoJG9wdGlvbnNbJ2RlYnVnJ10pKSB7CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1NUREVSUl0gPSBVdGlsczo6ZGVidWdSZXNvdXJjZSgkb3B0aW9uc1snZGVidWcnXSk7CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1ZFUkJPU0VdID0gdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCBhIHJlc3BvbnNlIHdhcyBzZXQgb24gYSB0cmFuc2FjdGlvbi4gSWYgb25lCiAgICAgKiB3YXMgbm90IHNldCwgdGhlbiB0aGUgcmVxdWVzdCBpcyByZXRyaWVkIGlmIHBvc3NpYmxlLiBUaGlzIGVycm9yCiAgICAgKiB0eXBpY2FsbHkgbWVhbnMgeW91IGFyZSBzZW5kaW5nIGEgcGF5bG9hZCwgY3VybCBlbmNvdW50ZXJlZCBhCiAgICAgKiAiQ29ubmVjdGlvbiBkaWVkLCByZXRyeWluZyBhIGZyZXNoIGNvbm5lY3QiIGVycm9yLCB0cmllZCB0byByZXdpbmQgdGhlCiAgICAgKiBzdHJlYW0sIGFuZCB0aGVuIGVuY291bnRlcmVkIGEgIm5lY2Vzc2FyeSBkYXRhIHJld2luZCB3YXNuJ3QgcG9zc2libGUiCiAgICAgKiBlcnJvciwgY2F1c2luZyB0aGUgcmVxdWVzdCB0byBiZSBzZW50IHRocm91Z2ggY3VybF9tdWx0aV9pbmZvX3JlYWQoKQogICAgICogd2l0aG91dCBhbiBlcnJvciBzdGF0dXMuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlKFJlcXVlc3RJbnRlcmZhY2UsIGFycmF5KTogUHJvbWlzZUludGVyZmFjZSAkaGFuZGxlcgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiByZXRyeUZhaWxlZFJld2luZChjYWxsYWJsZSAkaGFuZGxlciwgRWFzeUhhbmRsZSAkZWFzeSwgYXJyYXkgJGN0eCk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAvLyBPbmx5IHJld2luZCBpZiB0aGUgYm9keSBoYXMgYmVlbiByZWFkIGZyb20uCiAgICAgICAgICAgICRib2R5ID0gJGVhc3ktPnJlcXVlc3QtPmdldEJvZHkoKTsKICAgICAgICAgICAgaWYgKCRib2R5LT50ZWxsKCkgPiAwKSB7CiAgICAgICAgICAgICAgICAkYm9keS0+cmV3aW5kKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChcUnVudGltZUV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAkY3R4WydlcnJvciddID0gJ1RoZSBjb25uZWN0aW9uIHVuZXhwZWN0ZWRseSBmYWlsZWQgd2l0aG91dCAnCiAgICAgICAgICAgICAgICAuJ3Byb3ZpZGluZyBhbiBlcnJvci4gVGhlIHJlcXVlc3Qgd291bGQgaGF2ZSBiZWVuIHJldHJpZWQsICcKICAgICAgICAgICAgICAgIC4nYnV0IGF0dGVtcHRpbmcgdG8gcmV3aW5kIHRoZSByZXF1ZXN0IGJvZHkgZmFpbGVkLiAnCiAgICAgICAgICAgICAgICAuJ0V4Y2VwdGlvbjogJy4kZTsKCiAgICAgICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVSZWplY3Rpb24oJGVhc3ksICRjdHgpOwogICAgICAgIH0KCiAgICAgICAgLy8gUmV0cnkgbm8gbW9yZSB0aGFuIDMgdGltZXMgYmVmb3JlIGdpdmluZyB1cC4KICAgICAgICBpZiAoIWlzc2V0KCRlYXN5LT5vcHRpb25zWydfY3VybF9yZXRyaWVzJ10pKSB7CiAgICAgICAgICAgICRlYXN5LT5vcHRpb25zWydfY3VybF9yZXRyaWVzJ10gPSAxOwogICAgICAgIH0gZWxzZWlmICgkZWFzeS0+b3B0aW9uc1snX2N1cmxfcmV0cmllcyddID09IDIpIHsKICAgICAgICAgICAgJGN0eFsnZXJyb3InXSA9ICdUaGUgY1VSTCByZXF1ZXN0IHdhcyByZXRyaWVkIDMgdGltZXMgJwogICAgICAgICAgICAgICAgLidhbmQgZGlkIG5vdCBzdWNjZWVkLiBUaGUgbW9zdCBsaWtlbHkgcmVhc29uIGZvciB0aGUgZmFpbHVyZSAnCiAgICAgICAgICAgICAgICAuJ2lzIHRoYXQgY1VSTCB3YXMgdW5hYmxlIHRvIHJld2luZCB0aGUgYm9keSBvZiB0aGUgcmVxdWVzdCAnCiAgICAgICAgICAgICAgICAuJ2FuZCBzdWJzZXF1ZW50IHJldHJpZXMgcmVzdWx0ZWQgaW4gdGhlIHNhbWUgZXJyb3IuIFR1cm4gb24gJwogICAgICAgICAgICAgICAgLid0aGUgZGVidWcgb3B0aW9uIHRvIHNlZSB3aGF0IHdlbnQgd3JvbmcuIFNlZSAnCiAgICAgICAgICAgICAgICAuJ2h0dHBzOi8vYnVncy5waHAubmV0L2J1Zy5waHA/aWQ9NDcyMDQgZm9yIG1vcmUgaW5mb3JtYXRpb24uJzsKCiAgICAgICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVSZWplY3Rpb24oJGVhc3ksICRjdHgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICsrJGVhc3ktPm9wdGlvbnNbJ19jdXJsX3JldHJpZXMnXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkaGFuZGxlcigkZWFzeS0+cmVxdWVzdCwgJGVhc3ktPm9wdGlvbnMpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY3JlYXRlSGVhZGVyRm4oRWFzeUhhbmRsZSAkZWFzeSk6IGNhbGxhYmxlCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRlYXN5LT5vcHRpb25zWydvbl9oZWFkZXJzJ10pKSB7CiAgICAgICAgICAgICRvbkhlYWRlcnMgPSAkZWFzeS0+b3B0aW9uc1snb25faGVhZGVycyddOwoKICAgICAgICAgICAgaWYgKCFcaXNfY2FsbGFibGUoJG9uSGVhZGVycykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdvbl9oZWFkZXJzIG11c3QgYmUgY2FsbGFibGUnKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRvbkhlYWRlcnMgPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHN0YXRpYyBmdW5jdGlvbiAoJGNoLCAkaCkgdXNlICgKICAgICAgICAgICAgJG9uSGVhZGVycywKICAgICAgICAgICAgJGVhc3ksCiAgICAgICAgICAgICYkc3RhcnRpbmdSZXNwb25zZQogICAgICAgICkgewogICAgICAgICAgICAkdmFsdWUgPSBcdHJpbSgkaCk7CiAgICAgICAgICAgIGlmICgkdmFsdWUgPT09ICcnKSB7CiAgICAgICAgICAgICAgICAkc3RhcnRpbmdSZXNwb25zZSA9IHRydWU7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICRlYXN5LT5jcmVhdGVSZXNwb25zZSgpOwogICAgICAgICAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkZSkgewogICAgICAgICAgICAgICAgICAgICRlYXN5LT5yZXNwb25zZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgJGVhc3ktPmNyZWF0ZVJlc3BvbnNlRXhjZXB0aW9uID0gJGU7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkb25IZWFkZXJzICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9uSGVhZGVycygkZWFzeS0+cmVzcG9uc2UpOwogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSBleGNlcHRpb24gd2l0aCB0aGUgaGFuZGxlIGFuZCB0cmlnZ2VyCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgY3VybCBoZWFkZXIgd3JpdGUgZXJyb3IgYnkgcmV0dXJuaW5nIDAuCiAgICAgICAgICAgICAgICAgICAgICAgICRlYXN5LT5vbkhlYWRlcnNFeGNlcHRpb24gPSAkZTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgkc3RhcnRpbmdSZXNwb25zZSkgewogICAgICAgICAgICAgICAgJHN0YXJ0aW5nUmVzcG9uc2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgICRlYXN5LT5oZWFkZXJzID0gWyR2YWx1ZV07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkZWFzeS0+aGVhZGVyc1tdID0gJHZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gXHN0cmxlbigkaCk7CiAgICAgICAgfTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19kZXN0cnVjdCgpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmhhbmRsZXMgYXMgJGlkID0+ICRoYW5kbGUpIHsKICAgICAgICAgICAgaWYgKFBIUF9WRVJTSU9OX0lEIDwgODAwMDApIHsKICAgICAgICAgICAgICAgIFxjdXJsX2Nsb3NlKCRoYW5kbGUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB1bnNldCgkdGhpcy0+aGFuZGxlc1skaWRdKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwoKaW50ZXJmYWNlIEN1cmxGYWN0b3J5SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIGNVUkwgaGFuZGxlIHJlc291cmNlLgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0IFJlcXVlc3QKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICRvcHRpb25zIFRyYW5zZmVyIG9wdGlvbnMKICAgICAqCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIHdoZW4gYW4gb3B0aW9uIGNhbm5vdCBiZSBhcHBsaWVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGUoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpOiBFYXN5SGFuZGxlOwoKICAgIC8qKgogICAgICogUmVsZWFzZSBhbiBlYXN5IGhhbmRsZSwgYWxsb3dpbmcgaXQgdG8gYmUgcmV1c2VkIG9yIGNsb3NlZC4KICAgICAqCiAgICAgKiBUaGlzIGZ1bmN0aW9uIG11c3QgY2FsbCB1bnNldCBvbiB0aGUgZWFzeSBoYW5kbGUncyAiaGFuZGxlIiBwcm9wZXJ0eS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbGVhc2UoRWFzeUhhbmRsZSAkZWFzeSk6IHZvaWQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXFRyYW5zcG9ydFNoYXJpbmc7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CgovKioKICogSFRUUCBoYW5kbGVyIHRoYXQgdXNlcyBjVVJMIGVhc3kgaGFuZGxlcyBhcyBhIHRyYW5zcG9ydCBsYXllci4KICoKICogV2hlbiB1c2luZyB0aGUgQ3VybEhhbmRsZXIsIGN1c3RvbSBjdXJsIG9wdGlvbnMgY2FuIGJlIHNwZWNpZmllZCBhcyBhbgogKiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBjdXJsIG9wdGlvbiBjb25zdGFudHMgbWFwcGluZyB0byB2YWx1ZXMgaW4gdGhlCiAqICoqY3VybCoqIGtleSBvZiB0aGUgImNsaWVudCIga2V5IG9mIHRoZSByZXF1ZXN0LgogKgogKiBAZmluYWwKICovCmNsYXNzIEN1cmxIYW5kbGVyCnsKICAgIC8qKgogICAgICogQHZhciBDdXJsRmFjdG9yeUludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRmYWN0b3J5OwoKICAgIC8qKgogICAgICogQHZhciBDdXJsU2hhcmVIYW5kbGVTdGF0ZXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJHNoYXJlSGFuZGxlU3RhdGU7CgogICAgLyoqCiAgICAgKiBBY2NlcHRzIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIG9wdGlvbnM6CiAgICAgKgogICAgICogLSBoYW5kbGVfZmFjdG9yeTogT3B0aW9uYWwgY3VybCBmYWN0b3J5IHVzZWQgdG8gY3JlYXRlIGNVUkwgaGFuZGxlcy4KICAgICAqIC0gdHJhbnNwb3J0X3NoYXJpbmc6IE9wdGlvbmFsIHRyYW5zcG9ydCBzaGFyaW5nIG1vZGUuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5e2hhbmRsZV9mYWN0b3J5PzogP0N1cmxGYWN0b3J5SW50ZXJmYWNlLCB0cmFuc3BvcnRfc2hhcmluZz86IG1peGVkfSAkb3B0aW9ucyBBcnJheSBvZiBvcHRpb25zIHRvIHVzZSB3aXRoIHRoZSBoYW5kbGVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkb3B0aW9ucyA9IFtdKQogICAgewogICAgICAgIEN1cmxTaGFyZUhhbmRsZVN0YXRlOjphc3NlcnROb1JlcXVpcmVkU2hhcmluZ0N1c3RvbUZhY3RvcnlDb25mbGljdCgkb3B0aW9ucywgJ0N1cmxIYW5kbGVyJyk7CiAgICAgICAgJHRyYW5zcG9ydFNoYXJpbmcgPSAkb3B0aW9uc1sndHJhbnNwb3J0X3NoYXJpbmcnXSA/PyBudWxsOwogICAgICAgICRzaGFyaW5nTW9kZSA9IEN1cmxTaGFyZUhhbmRsZVN0YXRlOjpub3JtYWxpemVNb2RlKCR0cmFuc3BvcnRTaGFyaW5nLCAndHJhbnNwb3J0X3NoYXJpbmcnKTsKCiAgICAgICAgaWYgKFxhcnJheV9rZXlfZXhpc3RzKCdoYW5kbGVfZmFjdG9yeScsICRvcHRpb25zKSAmJiAkb3B0aW9uc1snaGFuZGxlX2ZhY3RvcnknXSAhPT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+c2hhcmVIYW5kbGVTdGF0ZSA9IG51bGw7CiAgICAgICAgICAgICR0aGlzLT5mYWN0b3J5ID0gJG9wdGlvbnNbJ2hhbmRsZV9mYWN0b3J5J107CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2hhcmVIYW5kbGVTdGF0ZSA9ICRzaGFyaW5nTW9kZSAhPT0gVHJhbnNwb3J0U2hhcmluZzo6Tk9ORQogICAgICAgICAgICA/IEN1cmxTaGFyZUhhbmRsZVN0YXRlOjpmcm9tT3B0aW9uKCR0cmFuc3BvcnRTaGFyaW5nKQogICAgICAgICAgICA6IG51bGw7CgogICAgICAgICR0aGlzLT5mYWN0b3J5ID0gJHRoaXMtPnNoYXJlSGFuZGxlU3RhdGUgIT09IG51bGwKICAgICAgICAgICAgPyBuZXcgQ3VybEZhY3RvcnkoMywgJHRoaXMtPnNoYXJlSGFuZGxlU3RhdGUtPm1vZGUsICR0aGlzLT5zaGFyZUhhbmRsZVN0YXRlLT5oYW5kbGUpCiAgICAgICAgICAgIDogbmV3IEN1cmxGYWN0b3J5KDMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2ludm9rZShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucyk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2RlbGF5J10pKSB7CiAgICAgICAgICAgIFx1c2xlZXAoJG9wdGlvbnNbJ2RlbGF5J10gKiAxMDAwKTsKICAgICAgICB9CgogICAgICAgICRlYXN5ID0gJHRoaXMtPmZhY3RvcnktPmNyZWF0ZSgkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgIFxjdXJsX2V4ZWMoJGVhc3ktPmhhbmRsZSk7CiAgICAgICAgJGVhc3ktPmVycm5vID0gXGN1cmxfZXJybm8oJGVhc3ktPmhhbmRsZSk7CgogICAgICAgIHJldHVybiBDdXJsRmFjdG9yeTo6ZmluaXNoKCR0aGlzLCAkZWFzeSwgJHRoaXMtPmZhY3RvcnkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgQ2xvc3VyZTsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZSBhcyBQOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2U7CnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzZUludGVyZmFjZTsKdXNlIEd1enpsZUh0dHBcVHJhbnNwb3J0U2hhcmluZzsKdXNlIEd1enpsZUh0dHBcVXRpbHM7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CgovKioKICogUmV0dXJucyBhbiBhc3luY2hyb25vdXMgcmVzcG9uc2UgdXNpbmcgY3VybF9tdWx0aV8qIGZ1bmN0aW9ucy4KICoKICogV2hlbiB1c2luZyB0aGUgQ3VybE11bHRpSGFuZGxlciwgY3VzdG9tIGN1cmwgb3B0aW9ucyBjYW4gYmUgc3BlY2lmaWVkIGFzIGFuCiAqIGFzc29jaWF0aXZlIGFycmF5IG9mIGN1cmwgb3B0aW9uIGNvbnN0YW50cyBtYXBwaW5nIHRvIHZhbHVlcyBpbiB0aGUKICogKipjdXJsKioga2V5IG9mIHRoZSBwcm92aWRlZCByZXF1ZXN0IG9wdGlvbnMuCiAqCiAqIEBmaW5hbAogKi8KY2xhc3MgQ3VybE11bHRpSGFuZGxlcgp7CiAgICAvKioKICAgICAqIEB2YXIgQ3VybEZhY3RvcnlJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkZmFjdG9yeTsKCiAgICAvKioKICAgICAqIEB2YXIgQ3VybFNoYXJlSGFuZGxlU3RhdGV8bnVsbAogICAgICovCiAgICBwcml2YXRlICRzaGFyZUhhbmRsZVN0YXRlOwoKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJpdmF0ZSAkc2VsZWN0VGltZW91dDsKCiAgICAvKioKICAgICAqIEB2YXIgaW50IFdpbGwgYmUgaGlnaGVyIHRoYW4gMCB3aGVuIGBjdXJsX211bHRpX2V4ZWNgIGlzIHN0aWxsIHJ1bm5pbmcuCiAgICAgKi8KICAgIHByaXZhdGUgJGFjdGl2ZSA9IDA7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5IFJlcXVlc3QgZW50cnkgaGFuZGxlcywgaW5kZXhlZCBieSBoYW5kbGUgaWQgaW4gYGFkZFJlcXVlc3RgLgogICAgICoKICAgICAqIEBzZWUgQ3VybE11bHRpSGFuZGxlcjo6YWRkUmVxdWVzdAogICAgICovCiAgICBwcml2YXRlICRoYW5kbGVzID0gW107CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PGludCwgZmxvYXQ+IEFuIGFycmF5IG9mIGRlbGF5IHRpbWVzLCBpbmRleGVkIGJ5IGhhbmRsZSBpZCBpbiBgYWRkUmVxdWVzdGAuCiAgICAgKgogICAgICogQHNlZSBDdXJsTXVsdGlIYW5kbGVyOjphZGRSZXF1ZXN0CiAgICAgKi8KICAgIHByaXZhdGUgJGRlbGF5cyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxtaXhlZD4gQW4gYXNzb2NpYXRpdmUgYXJyYXkgb2YgQ1VSTE1PUFRfKiBvcHRpb25zIGFuZCBjb3JyZXNwb25kaW5nIHZhbHVlcyBmb3IgY3VybF9tdWx0aV9zZXRvcHQoKQogICAgICovCiAgICBwcml2YXRlICRvcHRpb25zID0gW107CgogICAgLyoqIEB2YXIgcmVzb3VyY2V8XEN1cmxNdWx0aUhhbmRsZSAqLwogICAgcHJpdmF0ZSAkX21oOwoKICAgIC8qKgogICAgICogQHZhciBib29sCiAgICAgKi8KICAgIHByaXZhdGUgJGV4ZWN1dGluZ011bHRpID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PGludCwgRWFzeUhhbmRsZT4KICAgICAqLwogICAgcHJpdmF0ZSAkZGVmZXJyZWRDYW5jZWxzID0gW107CgogICAgLyoqCiAgICAgKiBUaGlzIGhhbmRsZXIgYWNjZXB0cyB0aGUgZm9sbG93aW5nIG9wdGlvbnM6CiAgICAgKgogICAgICogLSBoYW5kbGVfZmFjdG9yeTogQW4gb3B0aW9uYWwgZmFjdG9yeSAgdXNlZCB0byBjcmVhdGUgY3VybCBoYW5kbGVzCiAgICAgKiAtIHRyYW5zcG9ydF9zaGFyaW5nOiBPcHRpb25hbCB0cmFuc3BvcnQgc2hhcmluZyBtb2RlLgogICAgICogLSBzZWxlY3RfdGltZW91dDogT3B0aW9uYWwgdGltZW91dCAoaW4gc2Vjb25kcykgdG8gYmxvY2sgYmVmb3JlIHRpbWluZwogICAgICogICBvdXQgd2hpbGUgc2VsZWN0aW5nIGN1cmwgaGFuZGxlcy4gRGVmYXVsdHMgdG8gMSBzZWNvbmQuCiAgICAgKiAtIG9wdGlvbnM6IEFuIGFzc29jaWF0aXZlIGFycmF5IG9mIENVUkxNT1BUXyogb3B0aW9ucyBhbmQKICAgICAqICAgY29ycmVzcG9uZGluZyB2YWx1ZXMgZm9yIGN1cmxfbXVsdGlfc2V0b3B0KCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRvcHRpb25zID0gW10pCiAgICB7CiAgICAgICAgQ3VybFNoYXJlSGFuZGxlU3RhdGU6OmFzc2VydE5vUmVxdWlyZWRTaGFyaW5nQ3VzdG9tRmFjdG9yeUNvbmZsaWN0KCRvcHRpb25zLCAnQ3VybE11bHRpSGFuZGxlcicpOwogICAgICAgICR0cmFuc3BvcnRTaGFyaW5nID0gJG9wdGlvbnNbJ3RyYW5zcG9ydF9zaGFyaW5nJ10gPz8gbnVsbDsKICAgICAgICAkc2hhcmluZ01vZGUgPSBDdXJsU2hhcmVIYW5kbGVTdGF0ZTo6bm9ybWFsaXplTW9kZSgkdHJhbnNwb3J0U2hhcmluZywgJ3RyYW5zcG9ydF9zaGFyaW5nJyk7CgogICAgICAgIGlmIChcYXJyYXlfa2V5X2V4aXN0cygnaGFuZGxlX2ZhY3RvcnknLCAkb3B0aW9ucykgJiYgJG9wdGlvbnNbJ2hhbmRsZV9mYWN0b3J5J10gIT09IG51bGwpIHsKICAgICAgICAgICAgJHRoaXMtPnNoYXJlSGFuZGxlU3RhdGUgPSBudWxsOwogICAgICAgICAgICAkdGhpcy0+ZmFjdG9yeSA9ICRvcHRpb25zWydoYW5kbGVfZmFjdG9yeSddOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5zaGFyZUhhbmRsZVN0YXRlID0gJHNoYXJpbmdNb2RlICE9PSBUcmFuc3BvcnRTaGFyaW5nOjpOT05FCiAgICAgICAgICAgICAgICA/IEN1cmxTaGFyZUhhbmRsZVN0YXRlOjpmcm9tT3B0aW9uKCR0cmFuc3BvcnRTaGFyaW5nKQogICAgICAgICAgICAgICAgOiBudWxsOwoKICAgICAgICAgICAgJHRoaXMtPmZhY3RvcnkgPSAkdGhpcy0+c2hhcmVIYW5kbGVTdGF0ZSAhPT0gbnVsbAogICAgICAgICAgICAgICAgPyBuZXcgQ3VybEZhY3RvcnkoNTAsICR0aGlzLT5zaGFyZUhhbmRsZVN0YXRlLT5tb2RlLCAkdGhpcy0+c2hhcmVIYW5kbGVTdGF0ZS0+aGFuZGxlKQogICAgICAgICAgICAgICAgOiBuZXcgQ3VybEZhY3RvcnkoNTApOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydzZWxlY3RfdGltZW91dCddKSkgewogICAgICAgICAgICAkdGhpcy0+c2VsZWN0VGltZW91dCA9ICRvcHRpb25zWydzZWxlY3RfdGltZW91dCddOwogICAgICAgIH0gZWxzZWlmICgkc2VsZWN0VGltZW91dCA9IFV0aWxzOjpnZXRlbnYoJ0dVWlpMRV9DVVJMX1NFTEVDVF9USU1FT1VUJykpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oJ2d1enpsZWh0dHAvZ3V6emxlJywgJzcuMicsICdUaGUgR1VaWkxFX0NVUkxfU0VMRUNUX1RJTUVPVVQgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgZGVwcmVjYXRlZDsgdXNlIHRoZSAic2VsZWN0X3RpbWVvdXQiIG9wdGlvbiBpbnN0ZWFkLicpOwogICAgICAgICAgICAkdGhpcy0+c2VsZWN0VGltZW91dCA9IChpbnQpICRzZWxlY3RUaW1lb3V0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5zZWxlY3RUaW1lb3V0ID0gMTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5vcHRpb25zID0gJG9wdGlvbnNbJ29wdGlvbnMnXSA/PyBbXTsKCiAgICAgICAgLy8gdW5zZXR0aW5nIHRoZSBwcm9wZXJ0eSBmb3JjZXMgdGhlIGZpcnN0IGFjY2VzcyB0byBnbyB0aHJvdWdoCiAgICAgICAgLy8gX19nZXQoKS4KICAgICAgICB1bnNldCgkdGhpcy0+X21oKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHJlc291cmNlfFxDdXJsTXVsdGlIYW5kbGUKICAgICAqCiAgICAgKiBAdGhyb3dzIFxCYWRNZXRob2RDYWxsRXhjZXB0aW9uIHdoZW4gYW5vdGhlciBmaWVsZCBhcyBgX21oYCB3aWxsIGJlIGdvdHRlbgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiAgICAgICB3aGVuIGN1cmwgY2FuIG5vdCBpbml0aWFsaXplIGEgbXVsdGkgaGFuZGxlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgkbmFtZSkKICAgIHsKICAgICAgICBpZiAoJG5hbWUgIT09ICdfbWgnKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcQmFkTWV0aG9kQ2FsbEV4Y2VwdGlvbigiQ2FuIG5vdCBnZXQgb3RoZXIgcHJvcGVydHkgYXMgJ19taCcuIik7CiAgICAgICAgfQoKICAgICAgICAkbXVsdGlIYW5kbGUgPSBcY3VybF9tdWx0aV9pbml0KCk7CgogICAgICAgIGlmIChmYWxzZSA9PT0gJG11bHRpSGFuZGxlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ2FuIG5vdCBpbml0aWFsaXplIGN1cmwgbXVsdGkgaGFuZGxlLicpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPl9taCA9ICRtdWx0aUhhbmRsZTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPm9wdGlvbnMgYXMgJG9wdGlvbiA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgLy8gQSB3YXJuaW5nIGlzIHJhaXNlZCBpbiBjYXNlIG9mIGEgd3Jvbmcgb3B0aW9uLgogICAgICAgICAgICBjdXJsX211bHRpX3NldG9wdCgkdGhpcy0+X21oLCAkb3B0aW9uLCAkdmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5fbWg7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+X21oKSkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgXGN1cmxfbXVsdGlfY2xvc2UoJHRoaXMtPl9taCk7CiAgICAgICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICBlcnJvcl9sb2coJ1tNQVNdICcgLiAkZS0+Z2V0TWVzc2FnZSgpKTsKICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+X21oKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19pbnZva2UoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJGVhc3kgPSAkdGhpcy0+ZmFjdG9yeS0+Y3JlYXRlKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICAgICAgJGlkID0gKGludCkgJGVhc3ktPmhhbmRsZTsKCiAgICAgICAgJHByb21pc2UgPSBuZXcgUHJvbWlzZSgKICAgICAgICAgICAgWyR0aGlzLCAnZXhlY3V0ZSddLAogICAgICAgICAgICBmdW5jdGlvbiAoKSB1c2UgKCRpZCkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jYW5jZWwoJGlkKTsKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgICR0aGlzLT5hZGRSZXF1ZXN0KFsnZWFzeScgPT4gJGVhc3ksICdkZWZlcnJlZCcgPT4gJHByb21pc2VdKTsKCiAgICAgICAgcmV0dXJuICRwcm9taXNlOwogICAgfQoKICAgIC8qKgogICAgICogVGlja3MgdGhlIGN1cmwgZXZlbnQgbG9vcC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRpY2soKTogdm9pZAogICAgewogICAgICAgIC8vIEFkZCBhbnkgZGVsYXllZCBoYW5kbGVzIGlmIG5lZWRlZC4KICAgICAgICBpZiAoJHRoaXMtPmRlbGF5cykgewogICAgICAgICAgICAkY3VycmVudFRpbWUgPSBVdGlsczo6Y3VycmVudFRpbWUoKTsKICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmRlbGF5cyBhcyAkaWQgPT4gJGRlbGF5KSB7CiAgICAgICAgICAgICAgICBpZiAoJGN1cnJlbnRUaW1lID49ICRkZWxheSkgewogICAgICAgICAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5kZWxheXNbJGlkXSk7CiAgICAgICAgICAgICAgICAgICAgXGN1cmxfbXVsdGlfYWRkX2hhbmRsZSgKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9taCwKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmhhbmRsZXNbJGlkXVsnZWFzeSddLT5oYW5kbGUKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBSdW4gY3VybF9tdWx0aV9leGVjIGluIHRoZSBxdWV1ZSB0byBlbmFibGUgb3RoZXIgYXN5bmMgdGFza3MgdG8gcnVuCiAgICAgICAgUFxVdGlsczo6cXVldWUoKS0+YWRkKENsb3N1cmU6OmZyb21DYWxsYWJsZShbJHRoaXMsICd0aWNrSW5RdWV1ZSddKSk7CgogICAgICAgIC8vIFN0ZXAgdGhyb3VnaCB0aGUgdGFzayBxdWV1ZSB3aGljaCBtYXkgYWRkIGFkZGl0aW9uYWwgcmVxdWVzdHMuCiAgICAgICAgUFxVdGlsczo6cXVldWUoKS0+cnVuKCk7CgogICAgICAgIGlmICgkdGhpcy0+YWN0aXZlICYmIFxjdXJsX211bHRpX3NlbGVjdCgkdGhpcy0+X21oLCAkdGhpcy0+c2VsZWN0VGltZW91dCkgPT09IC0xKSB7CiAgICAgICAgICAgIC8vIFBlcmZvcm0gYSB1c2xlZXAgaWYgYSBzZWxlY3QgcmV0dXJucyAtMS4KICAgICAgICAgICAgLy8gU2VlOiBodHRwczovL2J1Z3MucGhwLm5ldC9idWcucGhwP2lkPTYxMTQxCiAgICAgICAgICAgIFx1c2xlZXAoMjUwKTsKICAgICAgICB9CgogICAgICAgIGRvIHsKICAgICAgICAgICAgJHRoaXMtPmV4ZWN1dGluZ011bHRpID0gdHJ1ZTsKCiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkZXhlYyA9IFxjdXJsX211bHRpX2V4ZWMoJHRoaXMtPl9taCwgJHRoaXMtPmFjdGl2ZSk7CiAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZXhlY3V0aW5nTXVsdGkgPSBmYWxzZTsKICAgICAgICAgICAgICAgICR0aGlzLT5jbGVhbnVwRGVmZXJyZWRDYW5jZWxzKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFByZXZlbnQgYnVzeSBsb29waW5nIGZvciBzbG93IEhUVFAgcmVxdWVzdHMuCiAgICAgICAgICAgIGlmICgkZXhlYyA9PT0gXENVUkxNX0NBTExfTVVMVElfUEVSRk9STSkgewogICAgICAgICAgICAgICAgXGN1cmxfbXVsdGlfc2VsZWN0KCR0aGlzLT5fbWgsICR0aGlzLT5zZWxlY3RUaW1lb3V0KTsKICAgICAgICAgICAgfQogICAgICAgIH0gd2hpbGUgKCRleGVjID09PSBcQ1VSTE1fQ0FMTF9NVUxUSV9QRVJGT1JNKTsKCiAgICAgICAgJHRoaXMtPnByb2Nlc3NNZXNzYWdlcygpOwogICAgfQoKICAgIC8qKgogICAgICogUnVucyBcY3VybF9tdWx0aV9leGVjKCkgaW5zaWRlIHRoZSBldmVudCBsb29wLCB0byBwcmV2ZW50IGJ1c3kgbG9vcGluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHRpY2tJblF1ZXVlKCk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+ZXhlY3V0aW5nTXVsdGkgPSB0cnVlOwoKICAgICAgICB0cnkgewogICAgICAgICAgICAkZXhlYyA9IFxjdXJsX211bHRpX2V4ZWMoJHRoaXMtPl9taCwgJHRoaXMtPmFjdGl2ZSk7CiAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgJHRoaXMtPmV4ZWN1dGluZ011bHRpID0gZmFsc2U7CiAgICAgICAgICAgICR0aGlzLT5jbGVhbnVwRGVmZXJyZWRDYW5jZWxzKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGV4ZWMgPT09IFxDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk0pIHsKICAgICAgICAgICAgXGN1cmxfbXVsdGlfc2VsZWN0KCR0aGlzLT5fbWgsIDApOwogICAgICAgICAgICBQXFV0aWxzOjpxdWV1ZSgpLT5hZGQoQ2xvc3VyZTo6ZnJvbUNhbGxhYmxlKFskdGhpcywgJ3RpY2tJblF1ZXVlJ10pKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW5zIHVudGlsIGFsbCBvdXRzdGFuZGluZyBjb25uZWN0aW9ucyBoYXZlIGNvbXBsZXRlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGV4ZWN1dGUoKTogdm9pZAogICAgewogICAgICAgICRxdWV1ZSA9IFBcVXRpbHM6OnF1ZXVlKCk7CgogICAgICAgIHdoaWxlICgkdGhpcy0+aGFuZGxlcyB8fCAhJHF1ZXVlLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHRyYW5zZmVycywgdGhlbiBzbGVlcCBmb3IgdGhlIG5leHQgZGVsYXkKICAgICAgICAgICAgaWYgKCEkdGhpcy0+YWN0aXZlICYmICR0aGlzLT5kZWxheXMpIHsKICAgICAgICAgICAgICAgIFx1c2xlZXAoJHRoaXMtPnRpbWVUb05leHQoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPnRpY2soKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGRSZXF1ZXN0KGFycmF5ICRlbnRyeSk6IHZvaWQKICAgIHsKICAgICAgICAkZWFzeSA9ICRlbnRyeVsnZWFzeSddOwogICAgICAgICRpZCA9IChpbnQpICRlYXN5LT5oYW5kbGU7CiAgICAgICAgJHRoaXMtPmhhbmRsZXNbJGlkXSA9ICRlbnRyeTsKICAgICAgICBpZiAoZW1wdHkoJGVhc3ktPm9wdGlvbnNbJ2RlbGF5J10pKSB7CiAgICAgICAgICAgIFxjdXJsX211bHRpX2FkZF9oYW5kbGUoJHRoaXMtPl9taCwgJGVhc3ktPmhhbmRsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPmRlbGF5c1skaWRdID0gVXRpbHM6OmN1cnJlbnRUaW1lKCkgKyAoJGVhc3ktPm9wdGlvbnNbJ2RlbGF5J10gLyAxMDAwKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDYW5jZWxzIGEgaGFuZGxlIGZyb20gc2VuZGluZyBhbmQgcmVtb3ZlcyByZWZlcmVuY2VzIHRvIGl0LgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGlkIEhhbmRsZSBJRCB0byBjYW5jZWwgYW5kIHJlbW92ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wgVHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNhbmNlbCgkaWQpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCFpc19pbnQoJGlkKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbignZ3V6emxlaHR0cC9ndXp6bGUnLCAnNy40JywgJ05vdCBwYXNzaW5nIGFuIGludCB0byAlczo6JXMoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGNhdXNlIGFuIGVycm9yIGluIDguMC4nLCBfX0NMQVNTX18sIF9fRlVOQ1RJT05fXyk7CiAgICAgICAgfQoKICAgICAgICAvLyBDYW5ub3QgY2FuY2VsIGlmIGl0IGhhcyBiZWVuIHByb2Nlc3NlZC4KICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5oYW5kbGVzWyRpZF0pKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRlYXN5ID0gJHRoaXMtPmhhbmRsZXNbJGlkXVsnZWFzeSddOwogICAgICAgIHVuc2V0KCR0aGlzLT5kZWxheXNbJGlkXSwgJHRoaXMtPmhhbmRsZXNbJGlkXSk7CgogICAgICAgIGlmICgkdGhpcy0+ZXhlY3V0aW5nTXVsdGkpIHsKICAgICAgICAgICAgJHRoaXMtPmRlZmVycmVkQ2FuY2Vsc1skaWRdID0gJGVhc3k7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jbGVhbnVwQ2FuY2VsbGVkSGFuZGxlKCRlYXN5KTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjbGVhbnVwRGVmZXJyZWRDYW5jZWxzKCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmRlZmVycmVkQ2FuY2VscyA9PT0gW10pIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJGVudHJpZXMgPSAkdGhpcy0+ZGVmZXJyZWRDYW5jZWxzOwogICAgICAgICR0aGlzLT5kZWZlcnJlZENhbmNlbHMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJGVudHJpZXMgYXMgJGVhc3kpIHsKICAgICAgICAgICAgJHRoaXMtPmNsZWFudXBDYW5jZWxsZWRIYW5kbGUoJGVhc3kpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNsZWFudXBDYW5jZWxsZWRIYW5kbGUoRWFzeUhhbmRsZSAkZWFzeSk6IHZvaWQKICAgIHsKICAgICAgICAkaGFuZGxlID0gJGVhc3ktPmhhbmRsZTsKICAgICAgICBcY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKCR0aGlzLT5fbWgsICRoYW5kbGUpOwoKICAgICAgICBpZiAoUEhQX1ZFUlNJT05fSUQgPCA4MDAwMCkgewogICAgICAgICAgICBcY3VybF9jbG9zZSgkaGFuZGxlKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBwcm9jZXNzTWVzc2FnZXMoKTogdm9pZAogICAgewogICAgICAgIHdoaWxlICgkZG9uZSA9IFxjdXJsX211bHRpX2luZm9fcmVhZCgkdGhpcy0+X21oKSkgewogICAgICAgICAgICBpZiAoJGRvbmVbJ21zZyddICE9PSBcQ1VSTE1TR19ET05FKSB7CiAgICAgICAgICAgICAgICAvLyBpZiBpdCdzIG5vdCBkb25lLCB0aGVuIGl0IHdvdWxkIGJlIHByZW1hdHVyZSB0byByZW1vdmUgdGhlIGhhbmRsZS4gcmVmIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjg5MiNpc3N1ZWNvbW1lbnQtOTQ1MTUwMjE2CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWlzc2V0KCRkb25lWydoYW5kbGUnXSkpIHsKICAgICAgICAgICAgICAgIC8vIFdvcmsgYXJvdW5kIGEgUEhQIGlzc3VlIHdoZXJlIGNhbmNlbGxlZCB0cmFuc2ZlcnMgbWF5IG9taXQgdGhlIGhhbmRsZS4KICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGlzIG9uY2Ugd2Ugbm8gbG9uZ2VyIHN1cHBvcnQgUEhQIHZlcnNpb25zIGJlZm9yZSB0aGUgZml4IGluCiAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGhwL3BocC1zcmMvcHVsbC8xNjMwMi4KICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRpZCA9IChpbnQpICRkb25lWydoYW5kbGUnXTsKICAgICAgICAgICAgXGN1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZSgkdGhpcy0+X21oLCAkZG9uZVsnaGFuZGxlJ10pOwoKICAgICAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+aGFuZGxlc1skaWRdKSkgewogICAgICAgICAgICAgICAgLy8gUHJvYmFibHkgd2FzIGNhbmNlbGxlZC4KICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZW50cnkgPSAkdGhpcy0+aGFuZGxlc1skaWRdOwogICAgICAgICAgICB1bnNldCgkdGhpcy0+aGFuZGxlc1skaWRdLCAkdGhpcy0+ZGVsYXlzWyRpZF0pOwogICAgICAgICAgICAkZW50cnlbJ2Vhc3knXS0+ZXJybm8gPSAkZG9uZVsncmVzdWx0J107CgogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJHJlc3VsdCA9IEN1cmxGYWN0b3J5OjpmaW5pc2goJHRoaXMsICRlbnRyeVsnZWFzeSddLCAkdGhpcy0+ZmFjdG9yeSk7CiAgICAgICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgICAgICRlbnRyeVsnZGVmZXJyZWQnXS0+cmVqZWN0KCRlKTsKCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGVudHJ5WydkZWZlcnJlZCddLT5yZXNvbHZlKCRyZXN1bHQpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHRpbWVUb05leHQoKTogaW50CiAgICB7CiAgICAgICAgJGN1cnJlbnRUaW1lID0gVXRpbHM6OmN1cnJlbnRUaW1lKCk7CiAgICAgICAgJG5leHRUaW1lID0gXFBIUF9JTlRfTUFYOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5kZWxheXMgYXMgJHRpbWUpIHsKICAgICAgICAgICAgaWYgKCR0aW1lIDwgJG5leHRUaW1lKSB7CiAgICAgICAgICAgICAgICAkbmV4dFRpbWUgPSAkdGltZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICgoaW50KSBcbWF4KDAsICRuZXh0VGltZSAtICRjdXJyZW50VGltZSkpICogMTAwMDAwMDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/CurlShareHandleState.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgR3V6emxlSHR0cFxUcmFuc3BvcnRTaGFyaW5nOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgQ3VybFNoYXJlSGFuZGxlU3RhdGUKewogICAgLyoqCiAgICAgKiBAdmFyIHJlc291cmNlfFxDdXJsU2hhcmVIYW5kbGV8bnVsbAogICAgICovCiAgICBwdWJsaWMgJGhhbmRsZTsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkbW9kZTsKCiAgICAvKioKICAgICAqIEBwYXJhbSByZXNvdXJjZXxcQ3VybFNoYXJlSGFuZGxlfG51bGwgJGhhbmRsZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkbW9kZSwgJGhhbmRsZSkKICAgIHsKICAgICAgICAkdGhpcy0+bW9kZSA9ICRtb2RlOwogICAgICAgICR0aGlzLT5oYW5kbGUgPSAkaGFuZGxlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICRzaGFyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbU9wdGlvbigkc2hhcmluZyk6ID9zZWxmCiAgICB7CiAgICAgICAgaWYgKCRzaGFyaW5nIGluc3RhbmNlb2Ygc2VsZikgewogICAgICAgICAgICByZXR1cm4gJHNoYXJpbmc7CiAgICAgICAgfQoKICAgICAgICAkbW9kZSA9IHNlbGY6Om5vcm1hbGl6ZU1vZGUoJHNoYXJpbmcsICd0cmFuc3BvcnRfc2hhcmluZycpOwogICAgICAgIGlmICgkbW9kZSA9PT0gVHJhbnNwb3J0U2hhcmluZzo6Tk9ORSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmICgkbW9kZSA9PT0gVHJhbnNwb3J0U2hhcmluZzo6SEFORExFUl9QUkVGRVIpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZUhhbmRsZXJTaGFyZU9yTnVsbCgkbW9kZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6Y3JlYXRlSGFuZGxlclNoYXJlKCRtb2RlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkc2hhcmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZU1vZGUoJHNoYXJpbmcsIHN0cmluZyAkb3B0aW9uKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRzaGFyaW5nIGluc3RhbmNlb2Ygc2VsZikgewogICAgICAgICAgICByZXR1cm4gJHNoYXJpbmctPm1vZGU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHNoYXJpbmcgPT09IG51bGwgfHwgJHNoYXJpbmcgPT09IFRyYW5zcG9ydFNoYXJpbmc6Ok5PTkUpIHsKICAgICAgICAgICAgcmV0dXJuIFRyYW5zcG9ydFNoYXJpbmc6Ok5PTkU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHNoYXJpbmcgPT09IFRyYW5zcG9ydFNoYXJpbmc6OkhBTkRMRVJfUFJFRkVSIHx8ICRzaGFyaW5nID09PSBUcmFuc3BvcnRTaGFyaW5nOjpIQU5ETEVSX1JFUVVJUkUpIHsKICAgICAgICAgICAgcmV0dXJuICRzaGFyaW5nOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oXHNwcmludGYoCiAgICAgICAgICAgICdUaGUgIiVzIiBvcHRpb24gbXVzdCBiZSBudWxsIG9yIGEgR3V6emxlSHR0cFxcVHJhbnNwb3J0U2hhcmluZzo6KiBjb25zdGFudDsgcmVjZWl2ZWQgJXMuJywKICAgICAgICAgICAgJG9wdGlvbiwKICAgICAgICAgICAgXGdldF9kZWJ1Z190eXBlKCRzaGFyaW5nKQogICAgICAgICkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYXNzZXJ0Tm9SZXF1aXJlZFNoYXJpbmdDdXN0b21GYWN0b3J5Q29uZmxpY3QoYXJyYXkgJG9wdGlvbnMsIHN0cmluZyAkaGFuZGxlck5hbWUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFcYXJyYXlfa2V5X2V4aXN0cygnaGFuZGxlX2ZhY3RvcnknLCAkb3B0aW9ucykgfHwgJG9wdGlvbnNbJ2hhbmRsZV9mYWN0b3J5J10gPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJG1vZGUgPSBzZWxmOjpub3JtYWxpemVNb2RlKCRvcHRpb25zWyd0cmFuc3BvcnRfc2hhcmluZyddID8/IG51bGwsICd0cmFuc3BvcnRfc2hhcmluZycpOwogICAgICAgIGlmICgkbW9kZSAhPT0gVHJhbnNwb3J0U2hhcmluZzo6SEFORExFUl9SRVFVSVJFKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKFxzcHJpbnRmKAogICAgICAgICAgICAnVGhlICJ0cmFuc3BvcnRfc2hhcmluZyIgJXMgb3B0aW9uIGNhbm5vdCByZXF1aXJlIHNoYXJpbmcgd2l0aCBhIGN1c3RvbSAiaGFuZGxlX2ZhY3RvcnkiIGJlY2F1c2UgR3V6emxlIGNhbm5vdCBlbnN1cmUgdGhhdCB0aGUgY3VzdG9tIGZhY3RvcnkgYXBwbGllcyBDVVJMT1BUX1NIQVJFLicsCiAgICAgICAgICAgICRoYW5kbGVyTmFtZQogICAgICAgICkpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUhhbmRsZXJTaGFyZU9yTnVsbChzdHJpbmcgJG1vZGUpOiA/c2VsZgogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVIYW5kbGVyU2hhcmUoJG1vZGUpOwogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUhhbmRsZXJTaGFyZShzdHJpbmcgJG1vZGUpOiBzZWxmCiAgICB7CiAgICAgICAgaWYgKCFcZnVuY3Rpb25fZXhpc3RzKCdjdXJsX3NoYXJlX2luaXQnKSB8fCAhXGZ1bmN0aW9uX2V4aXN0cygnY3VybF9zaGFyZV9zZXRvcHQnKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVGhlICJ0cmFuc3BvcnRfc2hhcmluZyIgb3B0aW9uIHJlcXVpcmVzIGNVUkwgc2hhcmUgc3VwcG9ydC4nKTsKICAgICAgICB9CgogICAgICAgIHNlbGY6OnJlcXVpcmVDdXJsQ29uc3RhbnQoJ0NVUkxPUFRfU0hBUkUnKTsKICAgICAgICAkc2hhcmVPcHRpb24gPSBzZWxmOjpyZXF1aXJlQ3VybENvbnN0YW50KCdDVVJMU0hPUFRfU0hBUkUnKTsKICAgICAgICAkbG9ja3MgPSBzZWxmOjpoYW5kbGVyTG9ja3MoJG1vZGUpOwogICAgICAgICRoYW5kbGUgPSBjdXJsX3NoYXJlX2luaXQoKTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgZm9yZWFjaCAoJGxvY2tzIGFzICRsb2NrKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICRzdWNjZXNzID0gY3VybF9zaGFyZV9zZXRvcHQoJGhhbmRsZSwgJHNoYXJlT3B0aW9uLCAkbG9jayk7CiAgICAgICAgICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBjb25maWd1cmUgY1VSTCBzaGFyZSBoYW5kbGU6ICcuJGUtPmdldE1lc3NhZ2UoKSwgMCwgJGUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICghJHN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZignVW5hYmxlIHRvIGNvbmZpZ3VyZSBjVVJMIHNoYXJlIGhhbmRsZSB3aXRoIGxvY2sgZGF0YSAlZC4nLCAkbG9jaykpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkZSkgewogICAgICAgICAgICBzZWxmOjpjbG9zZUhhbmRsZXJTaGFyZUhhbmRsZU9uUGhwNygkaGFuZGxlKTsKCiAgICAgICAgICAgIHRocm93ICRlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCRtb2RlLCAkaGFuZGxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50W10KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaGFuZGxlckxvY2tzKHN0cmluZyAkbW9kZSk6IGFycmF5CiAgICB7CiAgICAgICAgQ3VybFZlcnNpb246OmVuc3VyZUhhbmRsZXJTaGFyaW5nU3VwcG9ydGVkKCk7CgogICAgICAgIGlmICgkbW9kZSA9PT0gVHJhbnNwb3J0U2hhcmluZzo6SEFORExFUl9SRVFVSVJFKSB7CiAgICAgICAgICAgIEN1cmxWZXJzaW9uOjplbnN1cmVTc2xTZXNzaW9uU2hhcmluZ1N1cHBvcnRlZCgpOwogICAgICAgIH0KCiAgICAgICAgJGxvY2tzID0gWwogICAgICAgICAgICBzZWxmOjpyZXF1aXJlQ3VybENvbnN0YW50KCdDVVJMX0xPQ0tfREFUQV9ETlMnKSwKICAgICAgICBdOwoKICAgICAgICBpZiAoQ3VybFZlcnNpb246OnN1cHBvcnRzU3NsU2Vzc2lvblNoYXJpbmcoKSkgewogICAgICAgICAgICAkbG9ja3NbXSA9IHNlbGY6OnJlcXVpcmVDdXJsQ29uc3RhbnQoJ0NVUkxfTE9DS19EQVRBX1NTTF9TRVNTSU9OJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGxvY2tzOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHJlcXVpcmVDdXJsQ29uc3RhbnQoc3RyaW5nICRjb25zdGFudCk6IGludAogICAgewogICAgICAgIGlmICghXGRlZmluZWQoJGNvbnN0YW50KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZigKICAgICAgICAgICAgICAgICdUaGUgInRyYW5zcG9ydF9zaGFyaW5nIiBvcHRpb24gcmVxdWlyZXMgJXMsIGJ1dCBpdCBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBpbnN0YWxsZWQgUEhQIGNVUkwgZXh0ZW5zaW9uLicsCiAgICAgICAgICAgICAgICAkY29uc3RhbnQKICAgICAgICAgICAgKSk7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSBcY29uc3RhbnQoJGNvbnN0YW50KTsKICAgICAgICBpZiAoIVxpc19pbnQoJHZhbHVlKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZignVGhlIGNVUkwgY29uc3RhbnQgJXMgbXVzdCByZXNvbHZlIHRvIGFuIGludGVnZXIuJywgJGNvbnN0YW50KSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHJlc291cmNlfFxDdXJsU2hhcmVIYW5kbGUgJGhhbmRsZQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjbG9zZUhhbmRsZXJTaGFyZUhhbmRsZU9uUGhwNygkaGFuZGxlKTogdm9pZAogICAgewogICAgICAgIGlmIChcUEhQX1ZFUlNJT05fSUQgPCA4MDAwMCAmJiBcaXNfcmVzb3VyY2UoJGhhbmRsZSkpIHsKICAgICAgICAgICAgY3VybF9zaGFyZV9jbG9zZSgkaGFuZGxlKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/CurlVersion.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7CgovKioKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBDdXJsVmVyc2lvbgp7CiAgICBwcml2YXRlIGNvbnN0IE1JTl9WRVJTSU9OID0gJzcuMjEuMic7CgogICAgcHJpdmF0ZSBjb25zdCBUTFNfMTJfVkVSU0lPTiA9ICc3LjM0LjAnOwoKICAgIHByaXZhdGUgY29uc3QgVExTXzEzX1ZFUlNJT04gPSAnNy41Mi4wJzsKCiAgICBwcml2YXRlIGNvbnN0IEhBTkRMRVJfU0hBUklOR19WRVJTSU9OID0gJzcuMzUuMCc7CgogICAgcHJpdmF0ZSBjb25zdCBTU0xfU0VTU0lPTl9TSEFSSU5HX1ZFUlNJT04gPSAnOC42LjAnOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheXt2ZXJzaW9uOiBzdHJpbmcsIGZlYXR1cmVzOiBpbnR9fGZhbHNlfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJHZlcnNpb25JbmZvOwoKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc3VwcG9ydHNDdXJsSGFuZGxlcigpOiBib29sCiAgICB7CiAgICAgICAgJHZlcnNpb24gPSBzZWxmOjpnZXRWZXJzaW9uKCk7CgogICAgICAgIHJldHVybiAkdmVyc2lvbiAhPT0gbnVsbCAmJiBcdmVyc2lvbl9jb21wYXJlKCR2ZXJzaW9uLCBzZWxmOjpNSU5fVkVSU0lPTiwgJz49Jyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdXBwb3J0c1RsczEyKCk6IGJvb2wKICAgIHsKICAgICAgICAkdmVyc2lvbiA9IHNlbGY6OmdldFZlcnNpb24oKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OnN1cHBvcnRzU3NsKCkKICAgICAgICAgICAgJiYgXGRlZmluZWQoJ0NVUkxfU1NMVkVSU0lPTl9UTFN2MV8yJykKICAgICAgICAgICAgJiYgJHZlcnNpb24gIT09IG51bGwKICAgICAgICAgICAgJiYgXHZlcnNpb25fY29tcGFyZSgkdmVyc2lvbiwgc2VsZjo6VExTXzEyX1ZFUlNJT04sICc+PScpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc3VwcG9ydHNUbHMxMygpOiBib29sCiAgICB7CiAgICAgICAgJHZlcnNpb24gPSBzZWxmOjpnZXRWZXJzaW9uKCk7CgogICAgICAgIHJldHVybiBzZWxmOjpzdXBwb3J0c1NzbCgpCiAgICAgICAgICAgICYmIFxkZWZpbmVkKCdDVVJMX1NTTFZFUlNJT05fVExTdjFfMycpCiAgICAgICAgICAgICYmICR2ZXJzaW9uICE9PSBudWxsCiAgICAgICAgICAgICYmIFx2ZXJzaW9uX2NvbXBhcmUoJHZlcnNpb24sIHNlbGY6OlRMU18xM19WRVJTSU9OLCAnPj0nKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHN1cHBvcnRzSHR0cDIoKTogYm9vbAogICAgewogICAgICAgICR2ZXJzaW9uSW5mbyA9IHNlbGY6OmdldFZlcnNpb25JbmZvKCk7CgogICAgICAgIHJldHVybiBzZWxmOjpzdXBwb3J0c1RsczEyKCkKICAgICAgICAgICAgJiYgXGRlZmluZWQoJ0NVUkxfVkVSU0lPTl9IVFRQMicpCiAgICAgICAgICAgICYmICR2ZXJzaW9uSW5mbyAhPT0gbnVsbAogICAgICAgICAgICAmJiAwICE9PSAoXENVUkxfVkVSU0lPTl9IVFRQMiAmICR2ZXJzaW9uSW5mb1snZmVhdHVyZXMnXSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdXBwb3J0c0hhbmRsZXJTaGFyaW5nKCk6IGJvb2wKICAgIHsKICAgICAgICAkdmVyc2lvbiA9IHNlbGY6OmdldFZlcnNpb24oKTsKCiAgICAgICAgcmV0dXJuICR2ZXJzaW9uICE9PSBudWxsICYmIFx2ZXJzaW9uX2NvbXBhcmUoJHZlcnNpb24sIHNlbGY6OkhBTkRMRVJfU0hBUklOR19WRVJTSU9OLCAnPj0nKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuc3VyZUhhbmRsZXJTaGFyaW5nU3VwcG9ydGVkKCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIXNlbGY6OnN1cHBvcnRzSGFuZGxlclNoYXJpbmcoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZigKICAgICAgICAgICAgICAgICdUaGUgInRyYW5zcG9ydF9zaGFyaW5nIiBvcHRpb24gcmVxdWlyZXMgbGliY3VybCAlcyBvciBoaWdoZXIgZm9yIGNVUkwgc2hhcmUgaGFuZGxlcy4nLAogICAgICAgICAgICAgICAgc2VsZjo6SEFORExFUl9TSEFSSU5HX1ZFUlNJT04KICAgICAgICAgICAgKSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc3VwcG9ydHNTc2xTZXNzaW9uU2hhcmluZygpOiBib29sCiAgICB7CiAgICAgICAgJHZlcnNpb24gPSBzZWxmOjpnZXRWZXJzaW9uKCk7CgogICAgICAgIHJldHVybiBzZWxmOjpzdXBwb3J0c1NzbCgpCiAgICAgICAgICAgICYmICR2ZXJzaW9uICE9PSBudWxsCiAgICAgICAgICAgICYmIFx2ZXJzaW9uX2NvbXBhcmUoJHZlcnNpb24sIHNlbGY6OlNTTF9TRVNTSU9OX1NIQVJJTkdfVkVSU0lPTiwgJz49Jyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlbnN1cmVTc2xTZXNzaW9uU2hhcmluZ1N1cHBvcnRlZCgpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFzZWxmOjpzdXBwb3J0c1NzbFNlc3Npb25TaGFyaW5nKCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oXHNwcmludGYoCiAgICAgICAgICAgICAgICAnVGhlICJ0cmFuc3BvcnRfc2hhcmluZyIgb3B0aW9uIHJlcXVpcmVzIGxpYmN1cmwgJXMgb3IgaGlnaGVyIHdpdGggU1NMIHN1cHBvcnQgZm9yIFNTTCBzZXNzaW9uIHNoYXJpbmcuJywKICAgICAgICAgICAgICAgIHNlbGY6OlNTTF9TRVNTSU9OX1NIQVJJTkdfVkVSU0lPTgogICAgICAgICAgICApKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gc3VwcG9ydHNTc2woKTogYm9vbAogICAgewogICAgICAgICR2ZXJzaW9uSW5mbyA9IHNlbGY6OmdldFZlcnNpb25JbmZvKCk7CgogICAgICAgIHJldHVybiBcZGVmaW5lZCgnQ1VSTF9WRVJTSU9OX1NTTCcpCiAgICAgICAgICAgICYmICR2ZXJzaW9uSW5mbyAhPT0gbnVsbAogICAgICAgICAgICAmJiAwICE9PSAoXENVUkxfVkVSU0lPTl9TU0wgJiAkdmVyc2lvbkluZm9bJ2ZlYXR1cmVzJ10pOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0VmVyc2lvbigpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgJHZlcnNpb25JbmZvID0gc2VsZjo6Z2V0VmVyc2lvbkluZm8oKTsKCiAgICAgICAgcmV0dXJuICR2ZXJzaW9uSW5mbyA9PT0gbnVsbCA/IG51bGwgOiAkdmVyc2lvbkluZm9bJ3ZlcnNpb24nXTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXl7dmVyc2lvbjogc3RyaW5nLCBmZWF0dXJlczogaW50fXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldFZlcnNpb25JbmZvKCk6ID9hcnJheQogICAgewogICAgICAgIGlmIChzZWxmOjokdmVyc2lvbkluZm8gPT09IG51bGwpIHsKICAgICAgICAgICAgaWYgKCFcZnVuY3Rpb25fZXhpc3RzKCdjdXJsX3ZlcnNpb24nKSkgewogICAgICAgICAgICAgICAgc2VsZjo6JHZlcnNpb25JbmZvID0gZmFsc2U7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdmVyc2lvbkluZm8gPSBcY3VybF92ZXJzaW9uKCk7CiAgICAgICAgICAgICAgICBzZWxmOjokdmVyc2lvbkluZm8gPSBcaXNfYXJyYXkoJHZlcnNpb25JbmZvKQogICAgICAgICAgICAgICAgICAgICYmIGlzc2V0KCR2ZXJzaW9uSW5mb1sndmVyc2lvbiddLCAkdmVyc2lvbkluZm9bJ2ZlYXR1cmVzJ10pCiAgICAgICAgICAgICAgICAgICAgJiYgXGlzX3N0cmluZygkdmVyc2lvbkluZm9bJ3ZlcnNpb24nXSkKICAgICAgICAgICAgICAgICAgICAmJiBcaXNfaW50KCR2ZXJzaW9uSW5mb1snZmVhdHVyZXMnXSkKICAgICAgICAgICAgICAgICAgICAgICAgPyBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyc2lvbicgPT4gJHZlcnNpb25JbmZvWyd2ZXJzaW9uJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmVhdHVyZXMnID0+ICR2ZXJzaW9uSW5mb1snZmVhdHVyZXMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6JHZlcnNpb25JbmZvID09PSBmYWxzZSA/IG51bGwgOiBzZWxmOjokdmVyc2lvbkluZm87CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgR3V6emxlSHR0cFxQc3I3XFJlc3BvbnNlOwp1c2UgR3V6emxlSHR0cFxVdGlsczsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBSZXByZXNlbnRzIGEgY1VSTCBlYXN5IGhhbmRsZSBhbmQgdGhlIGRhdGEgaXQgcG9wdWxhdGVzLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEVhc3lIYW5kbGUKewogICAgLyoqCiAgICAgKiBAdmFyIHJlc291cmNlfFxDdXJsSGFuZGxlIGNVUkwgcmVzb3VyY2UKICAgICAqLwogICAgcHVibGljICRoYW5kbGU7CgogICAgLyoqCiAgICAgKiBAdmFyIFN0cmVhbUludGVyZmFjZSBXaGVyZSBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4KICAgICAqLwogICAgcHVibGljICRzaW5rOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheSBSZWNlaXZlZCBIVFRQIGhlYWRlcnMgc28gZmFyCiAgICAgKi8KICAgIHB1YmxpYyAkaGVhZGVycyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBSZXNwb25zZUludGVyZmFjZXxudWxsIFJlY2VpdmVkIHJlc3BvbnNlIChpZiBhbnkpCiAgICAgKi8KICAgIHB1YmxpYyAkcmVzcG9uc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIFJlcXVlc3RJbnRlcmZhY2UgUmVxdWVzdCBiZWluZyBzZW50CiAgICAgKi8KICAgIHB1YmxpYyAkcmVxdWVzdDsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkgUmVxdWVzdCBvcHRpb25zCiAgICAgKi8KICAgIHB1YmxpYyAkb3B0aW9ucyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBpbnQgY1VSTCBlcnJvciBudW1iZXIgKGlmIGFueSkKICAgICAqLwogICAgcHVibGljICRlcnJubyA9IDA7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ3xudWxsIEVmZmVjdGl2ZSBDVVJMT1BUX1BST1hZIHZhbHVlIHRoZSBoYW5kbGUgd2FzIGNyZWF0ZWQgd2l0aCAoaWYgYW55KQogICAgICovCiAgICBwdWJsaWMgJGVmZmVjdGl2ZVByb3h5OwoKICAgIC8qKgogICAgICogQHZhciBcVGhyb3dhYmxlfG51bGwgRXhjZXB0aW9uIGR1cmluZyBvbl9oZWFkZXJzIChpZiBhbnkpCiAgICAgKi8KICAgIHB1YmxpYyAkb25IZWFkZXJzRXhjZXB0aW9uOwoKICAgIC8qKgogICAgICogQHZhciBcVGhyb3dhYmxlfG51bGwgRXhjZXB0aW9uIGR1cmluZyBjcmVhdGVSZXNwb25zZSAoaWYgYW55KQogICAgICovCiAgICBwdWJsaWMgJGNyZWF0ZVJlc3BvbnNlRXhjZXB0aW9uOwoKICAgIC8qKgogICAgICogQXR0YWNoIGEgcmVzcG9uc2UgdG8gdGhlIGVhc3kgaGFuZGxlIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBoZWFkZXJzLgogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgbm8gaGVhZGVycyBoYXZlIGJlZW4gcmVjZWl2ZWQgb3IgdGhlIGZpcnN0CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlciBsaW5lIGlzIGludmFsaWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVSZXNwb25zZSgpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnJlc3BvbnNlID0gbnVsbDsKCiAgICAgICAgWyR2ZXIsICRzdGF0dXMsICRyZWFzb24sICRoZWFkZXJzXSA9IEhlYWRlclByb2Nlc3Nvcjo6cGFyc2VIZWFkZXJzKCR0aGlzLT5oZWFkZXJzKTsKCiAgICAgICAgJG5vcm1hbGl6ZWRLZXlzID0gVXRpbHM6Om5vcm1hbGl6ZUhlYWRlcktleXMoJGhlYWRlcnMpOwoKICAgICAgICBpZiAoIWVtcHR5KCR0aGlzLT5vcHRpb25zWydkZWNvZGVfY29udGVudCddKSAmJiBpc3NldCgkbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtZW5jb2RpbmcnXSkpIHsKICAgICAgICAgICAgJGhlYWRlcnNbJ3gtZW5jb2RlZC1jb250ZW50LWVuY29kaW5nJ10gPSAkaGVhZGVyc1skbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtZW5jb2RpbmcnXV07CiAgICAgICAgICAgIHVuc2V0KCRoZWFkZXJzWyRub3JtYWxpemVkS2V5c1snY29udGVudC1lbmNvZGluZyddXSk7CiAgICAgICAgICAgIGlmIChpc3NldCgkbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtbGVuZ3RoJ10pKSB7CiAgICAgICAgICAgICAgICAkaGVhZGVyc1sneC1lbmNvZGVkLWNvbnRlbnQtbGVuZ3RoJ10gPSAkaGVhZGVyc1skbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtbGVuZ3RoJ11dOwoKICAgICAgICAgICAgICAgICRib2R5TGVuZ3RoID0gKGludCkgJHRoaXMtPnNpbmstPmdldFNpemUoKTsKICAgICAgICAgICAgICAgIGlmICgkYm9keUxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICRoZWFkZXJzWyRub3JtYWxpemVkS2V5c1snY29udGVudC1sZW5ndGgnXV0gPSBbKHN0cmluZykgJGJvZHlMZW5ndGhdOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB1bnNldCgkaGVhZGVyc1skbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtbGVuZ3RoJ11dKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQXR0YWNoIGEgcmVzcG9uc2UgdG8gdGhlIGVhc3kgaGFuZGxlIHdpdGggdGhlIHBhcnNlZCBoZWFkZXJzLgogICAgICAgICR0aGlzLT5yZXNwb25zZSA9IG5ldyBSZXNwb25zZSgKICAgICAgICAgICAgJHN0YXR1cywKICAgICAgICAgICAgJGhlYWRlcnMsCiAgICAgICAgICAgICR0aGlzLT5zaW5rLAogICAgICAgICAgICAkdmVyLAogICAgICAgICAgICAkcmVhc29uCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFxCYWRNZXRob2RDYWxsRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgkbmFtZSkKICAgIHsKICAgICAgICAkbXNnID0gJG5hbWUgPT09ICdoYW5kbGUnID8gJ1RoZSBFYXN5SGFuZGxlIGhhcyBiZWVuIHJlbGVhc2VkJyA6ICdJbnZhbGlkIHByb3BlcnR5OiAnLiRuYW1lOwogICAgICAgIHRocm93IG5ldyBcQmFkTWV0aG9kQ2FsbEV4Y2VwdGlvbigkbXNnKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgR3V6emxlSHR0cFxVdGlsczsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEhlYWRlclByb2Nlc3Nvcgp7CiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIEhUVFAgdmVyc2lvbiwgc3RhdHVzIGNvZGUsIHJlYXNvbiBwaHJhc2UsIGFuZCBoZWFkZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAkaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl7MDpzdHJpbmcsIDE6aW50LCAyOj9zdHJpbmcsIDM6YXJyYXl9CiAgICAgKgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlSGVhZGVycyhhcnJheSAkaGVhZGVycyk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCRoZWFkZXJzID09PSBbXSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0V4cGVjdGVkIGEgbm9uLWVtcHR5IGFycmF5IG9mIGhlYWRlciBkYXRhJyk7CiAgICAgICAgfQoKICAgICAgICAkaGVhZGVycyA9IHNlbGY6OmdldExhc3RIZWFkZXJCbG9jayhcYXJyYXlfdmFsdWVzKCRoZWFkZXJzKSk7CgogICAgICAgICRzdGF0dXNMaW5lID0gXGFycmF5X3NoaWZ0KCRoZWFkZXJzKTsKICAgICAgICBpZiAoJHN0YXR1c0xpbmUgPT09IG51bGwpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdFeHBlY3RlZCBhIG5vbi1lbXB0eSBhcnJheSBvZiBoZWFkZXIgZGF0YScpOwogICAgICAgIH0KCiAgICAgICAgJHBhcnRzID0gXGV4cGxvZGUoJyAnLCAkc3RhdHVzTGluZSwgMyk7CiAgICAgICAgJHZlcnNpb24gPSBcZXhwbG9kZSgnLycsICRwYXJ0c1swXSlbMV0gPz8gbnVsbDsKCiAgICAgICAgaWYgKCR2ZXJzaW9uID09PSBudWxsKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignSFRUUCB2ZXJzaW9uIG1pc3NpbmcgZnJvbSBoZWFkZXIgZGF0YScpOwogICAgICAgIH0KCiAgICAgICAgJHN0YXR1cyA9ICRwYXJ0c1sxXSA/PyBudWxsOwoKICAgICAgICBpZiAoJHN0YXR1cyA9PT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0hUVFAgc3RhdHVzIGNvZGUgbWlzc2luZyBmcm9tIGhlYWRlciBkYXRhJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIVxwcmVnX21hdGNoKCcvXlxkezN9JC8nLCAkc3RhdHVzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0hUVFAgc3RhdHVzIGNvZGUgaXMgaW52YWxpZCcpOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJGhlYWRlcnMgYXMgJGhlYWRlcikgewogICAgICAgICAgICBpZiAoXHN0cnBvcygkaGVhZGVyLCAnOicpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdIVFRQIGhlYWRlciBsaW5lIGlzIGludmFsaWQnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskdmVyc2lvbiwgKGludCkgJHN0YXR1cywgJHBhcnRzWzJdID8/IG51bGwsIFV0aWxzOjpoZWFkZXJzRnJvbUxpbmVzKCRoZWFkZXJzKV07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbm9uLWVtcHR5LWxpc3Q8c3RyaW5nPiAkaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gbGlzdDxzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldExhc3RIZWFkZXJCbG9jayhhcnJheSAkaGVhZGVycyk6IGFycmF5CiAgICB7CiAgICAgICAgJGxhc3RTdGF0dXNMaW5lID0gMDsKCiAgICAgICAgZm9yZWFjaCAoJGhlYWRlcnMgYXMgJGluZGV4ID0+ICRsaW5lKSB7CiAgICAgICAgICAgIGlmIChccHJlZ19tYXRjaCgnL15IVFRQXC9cUytccysvaScsICRsaW5lKSkgewogICAgICAgICAgICAgICAgJGxhc3RTdGF0dXNMaW5lID0gJGluZGV4OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXGFycmF5X3NsaWNlKCRoZWFkZXJzLCAkbGFzdFN0YXR1c0xpbmUpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cUmVxdWVzdEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcSGFuZGxlclN0YWNrOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlIGFzIFA7CnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzZUludGVyZmFjZTsKdXNlIEd1enpsZUh0dHBcVHJhbnNmZXJTdGF0czsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBIYW5kbGVyIHRoYXQgcmV0dXJucyByZXNwb25zZXMgb3IgdGhyb3cgZXhjZXB0aW9ucyBmcm9tIGEgcXVldWUuCiAqCiAqIEBmaW5hbAogKi8KY2xhc3MgTW9ja0hhbmRsZXIgaW1wbGVtZW50cyBcQ291bnRhYmxlCnsKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlICRxdWV1ZSA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBSZXF1ZXN0SW50ZXJmYWNlfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkbGFzdFJlcXVlc3Q7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGxhc3RPcHRpb25zID0gW107CgogICAgLyoqCiAgICAgKiBAdmFyIGNhbGxhYmxlfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkb25GdWxmaWxsZWQ7CgogICAgLyoqCiAgICAgKiBAdmFyIGNhbGxhYmxlfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkb25SZWplY3RlZDsKCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBuZXcgTW9ja0hhbmRsZXIgdGhhdCB1c2VzIHRoZSBkZWZhdWx0IGhhbmRsZXIgc3RhY2sgbGlzdCBvZgogICAgICogbWlkZGxld2FyZXMuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5fG51bGwgICAgJHF1ZXVlICAgICAgIEFycmF5IG9mIHJlc3BvbnNlcywgY2FsbGFibGVzLCBvciBleGNlcHRpb25zLgogICAgICogQHBhcmFtIGNhbGxhYmxlfG51bGwgJG9uRnVsZmlsbGVkIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSByZXR1cm4gdmFsdWUgaXMgZnVsZmlsbGVkLgogICAgICogQHBhcmFtIGNhbGxhYmxlfG51bGwgJG9uUmVqZWN0ZWQgIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSByZXR1cm4gdmFsdWUgaXMgcmVqZWN0ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlV2l0aE1pZGRsZXdhcmUoP2FycmF5ICRxdWV1ZSA9IG51bGwsID9jYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsLCA/Y2FsbGFibGUgJG9uUmVqZWN0ZWQgPSBudWxsKTogSGFuZGxlclN0YWNrCiAgICB7CiAgICAgICAgcmV0dXJuIEhhbmRsZXJTdGFjazo6Y3JlYXRlKG5ldyBzZWxmKCRxdWV1ZSwgJG9uRnVsZmlsbGVkLCAkb25SZWplY3RlZCkpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIHBhc3NlZCBpbiB2YWx1ZSBtdXN0IGJlIGFuIGFycmF5IG9mCiAgICAgKiB7QHNlZSBSZXNwb25zZUludGVyZmFjZX0gb2JqZWN0cywgRXhjZXB0aW9ucywKICAgICAqIGNhbGxhYmxlcywgb3IgUHJvbWlzZXMuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5PGludCwgbWl4ZWQ+fG51bGwgJHF1ZXVlICAgICAgIFRoZSBwYXJhbWV0ZXJzIHRvIGJlIHBhc3NlZCB0byB0aGUgYXBwZW5kIGZ1bmN0aW9uLCBhcyBhbiBpbmRleGVkIGFycmF5LgogICAgICogQHBhcmFtIGNhbGxhYmxlfG51bGwgICAgICAgICAgJG9uRnVsZmlsbGVkIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSByZXR1cm4gdmFsdWUgaXMgZnVsZmlsbGVkLgogICAgICogQHBhcmFtIGNhbGxhYmxlfG51bGwgICAgICAgICAgJG9uUmVqZWN0ZWQgIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSByZXR1cm4gdmFsdWUgaXMgcmVqZWN0ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCg/YXJyYXkgJHF1ZXVlID0gbnVsbCwgP2NhbGxhYmxlICRvbkZ1bGZpbGxlZCA9IG51bGwsID9jYWxsYWJsZSAkb25SZWplY3RlZCA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPm9uRnVsZmlsbGVkID0gJG9uRnVsZmlsbGVkOwogICAgICAgICR0aGlzLT5vblJlamVjdGVkID0gJG9uUmVqZWN0ZWQ7CgogICAgICAgIGlmICgkcXVldWUpIHsKICAgICAgICAgICAgLy8gYXJyYXlfdmFsdWVzIGluY2x1ZGVkIGZvciBCQwogICAgICAgICAgICAkdGhpcy0+YXBwZW5kKC4uLmFycmF5X3ZhbHVlcygkcXVldWUpKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9faW52b2tlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgIGlmICghJHRoaXMtPnF1ZXVlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcT3V0T2ZCb3VuZHNFeGNlcHRpb24oJ01vY2sgcXVldWUgaXMgZW1wdHknKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snZGVsYXknXSkgJiYgXGlzX251bWVyaWMoJG9wdGlvbnNbJ2RlbGF5J10pKSB7CiAgICAgICAgICAgIFx1c2xlZXAoKGludCkgJG9wdGlvbnNbJ2RlbGF5J10gKiAxMDAwKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5sYXN0UmVxdWVzdCA9ICRyZXF1ZXN0OwogICAgICAgICR0aGlzLT5sYXN0T3B0aW9ucyA9ICRvcHRpb25zOwogICAgICAgICRyZXNwb25zZSA9IFxhcnJheV9zaGlmdCgkdGhpcy0+cXVldWUpOwoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ29uX2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgaWYgKCFcaXNfY2FsbGFibGUoJG9wdGlvbnNbJ29uX2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdvbl9oZWFkZXJzIG11c3QgYmUgY2FsbGFibGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJG9wdGlvbnNbJ29uX2hlYWRlcnMnXSgkcmVzcG9uc2UpOwogICAgICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICAkbXNnID0gJ0FuIGVycm9yIHdhcyBlbmNvdW50ZXJlZCBkdXJpbmcgdGhlIG9uX2hlYWRlcnMgZXZlbnQnOwogICAgICAgICAgICAgICAgJHJlc3BvbnNlID0gbmV3IFJlcXVlc3RFeGNlcHRpb24oJG1zZywgJHJlcXVlc3QsICRyZXNwb25zZSwgJGUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoXGlzX2NhbGxhYmxlKCRyZXNwb25zZSkpIHsKICAgICAgICAgICAgJHJlc3BvbnNlID0gJHJlc3BvbnNlKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICAgICAgfQoKICAgICAgICAkcmVzcG9uc2UgPSAkcmVzcG9uc2UgaW5zdGFuY2VvZiBcVGhyb3dhYmxlCiAgICAgICAgICAgID8gUFxDcmVhdGU6OnJlamVjdGlvbkZvcigkcmVzcG9uc2UpCiAgICAgICAgICAgIDogUFxDcmVhdGU6OnByb21pc2VGb3IoJHJlc3BvbnNlKTsKCiAgICAgICAgcmV0dXJuICRyZXNwb25zZS0+dGhlbigKICAgICAgICAgICAgZnVuY3Rpb24gKD9SZXNwb25zZUludGVyZmFjZSAkdmFsdWUpIHVzZSAoJHJlcXVlc3QsICRvcHRpb25zKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+aW52b2tlU3RhdHMoJHJlcXVlc3QsICRvcHRpb25zLCAkdmFsdWUpOwogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5vbkZ1bGZpbGxlZCkgewogICAgICAgICAgICAgICAgICAgICgkdGhpcy0+b25GdWxmaWxsZWQpKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCR2YWx1ZSAhPT0gbnVsbCAmJiBpc3NldCgkb3B0aW9uc1snc2luayddKSkgewogICAgICAgICAgICAgICAgICAgICRjb250ZW50cyA9IChzdHJpbmcpICR2YWx1ZS0+Z2V0Qm9keSgpOwogICAgICAgICAgICAgICAgICAgICRzaW5rID0gJG9wdGlvbnNbJ3NpbmsnXTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKFxpc19yZXNvdXJjZSgkc2luaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgXGZ3cml0ZSgkc2luaywgJGNvbnRlbnRzKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoXGlzX3N0cmluZygkc2luaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgXGZpbGVfcHV0X2NvbnRlbnRzKCRzaW5rLCAkY29udGVudHMpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkc2luayBpbnN0YW5jZW9mIFN0cmVhbUludGVyZmFjZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkc2luay0+d3JpdGUoJGNvbnRlbnRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZnVuY3Rpb24gKCRyZWFzb24pIHVzZSAoJHJlcXVlc3QsICRvcHRpb25zKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+aW52b2tlU3RhdHMoJHJlcXVlc3QsICRvcHRpb25zLCBudWxsLCAkcmVhc29uKTsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+b25SZWplY3RlZCkgewogICAgICAgICAgICAgICAgICAgICgkdGhpcy0+b25SZWplY3RlZCkoJHJlYXNvbik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIFBcQ3JlYXRlOjpyZWplY3Rpb25Gb3IoJHJlYXNvbik7CiAgICAgICAgICAgIH0KICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQWRkcyBvbmUgb3IgbW9yZSB2YXJpYWRpYyByZXF1ZXN0cywgZXhjZXB0aW9ucywgY2FsbGFibGVzLCBvciBwcm9taXNlcwogICAgICogdG8gdGhlIHF1ZXVlLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAuLi4kdmFsdWVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhcHBlbmQoLi4uJHZhbHVlcyk6IHZvaWQKICAgIHsKICAgICAgICBmb3JlYWNoICgkdmFsdWVzIGFzICR2YWx1ZSkgewogICAgICAgICAgICBpZiAoJHZhbHVlIGluc3RhbmNlb2YgUmVzcG9uc2VJbnRlcmZhY2UKICAgICAgICAgICAgICAgIHx8ICR2YWx1ZSBpbnN0YW5jZW9mIFxUaHJvd2FibGUKICAgICAgICAgICAgICAgIHx8ICR2YWx1ZSBpbnN0YW5jZW9mIFByb21pc2VJbnRlcmZhY2UKICAgICAgICAgICAgICAgIHx8IFxpc19jYWxsYWJsZSgkdmFsdWUpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJHRoaXMtPnF1ZXVlW10gPSAkdmFsdWU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFR5cGVFcnJvcignRXhwZWN0ZWQgYSBSZXNwb25zZSwgUHJvbWlzZSwgVGhyb3dhYmxlIG9yIGNhbGxhYmxlLiBGb3VuZCAnLlxnZXRfZGVidWdfdHlwZSgkdmFsdWUpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbGFzdCByZWNlaXZlZCByZXF1ZXN0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGFzdFJlcXVlc3QoKTogP1JlcXVlc3RJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmxhc3RSZXF1ZXN0OwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBsYXN0IHJlY2VpdmVkIHJlcXVlc3Qgb3B0aW9ucy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldExhc3RPcHRpb25zKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5sYXN0T3B0aW9uczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiByZW1haW5pbmcgaXRlbXMgaW4gdGhlIHF1ZXVlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnQoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuIFxjb3VudCgkdGhpcy0+cXVldWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXNldCgpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnF1ZXVlID0gW107CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHJlYXNvbiBQcm9taXNlIG9yIHJlYXNvbi4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBpbnZva2VTdGF0cygKICAgICAgICBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LAogICAgICAgIGFycmF5ICRvcHRpb25zLAogICAgICAgID9SZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UgPSBudWxsLAogICAgICAgICRyZWFzb24gPSBudWxsCiAgICApOiB2b2lkIHsKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ29uX3N0YXRzJ10pKSB7CiAgICAgICAgICAgICR0cmFuc2ZlclRpbWUgPSAkb3B0aW9uc1sndHJhbnNmZXJfdGltZSddID8/IDA7CiAgICAgICAgICAgICRzdGF0cyA9IG5ldyBUcmFuc2ZlclN0YXRzKCRyZXF1ZXN0LCAkcmVzcG9uc2UsICR0cmFuc2ZlclRpbWUsICRyZWFzb24pOwogICAgICAgICAgICAoJG9wdGlvbnNbJ29uX3N0YXRzJ10pKCRzdGF0cyk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXFJlcXVlc3RPcHRpb25zOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwoKLyoqCiAqIFByb3ZpZGVzIGJhc2ljIHByb3hpZXMgZm9yIGhhbmRsZXJzLgogKgogKiBAZmluYWwKICovCmNsYXNzIFByb3h5CnsKICAgIC8qKgogICAgICogU2VuZHMgc3luY2hyb25vdXMgcmVxdWVzdHMgdG8gYSBzcGVjaWZpYyBoYW5kbGVyIHdoaWxlIHNlbmRpbmcgYWxsIG90aGVyCiAgICAgKiByZXF1ZXN0cyB0byBhbm90aGVyIGhhbmRsZXIuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlKFJlcXVlc3RJbnRlcmZhY2UsIGFycmF5KTogUHJvbWlzZUludGVyZmFjZSAkZGVmYXVsdCBIYW5kbGVyIHVzZWQgZm9yIG5vcm1hbCByZXNwb25zZXMKICAgICAqIEBwYXJhbSBjYWxsYWJsZShSZXF1ZXN0SW50ZXJmYWNlLCBhcnJheSk6IFByb21pc2VJbnRlcmZhY2UgJHN5bmMgICAgSGFuZGxlciB1c2VkIGZvciBzeW5jaHJvbm91cyByZXNwb25zZXMuCiAgICAgKgogICAgICogQHJldHVybiBjYWxsYWJsZShSZXF1ZXN0SW50ZXJmYWNlLCBhcnJheSk6IFByb21pc2VJbnRlcmZhY2UgUmV0dXJucyB0aGUgY29tcG9zZWQgaGFuZGxlci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3cmFwU3luYyhjYWxsYWJsZSAkZGVmYXVsdCwgY2FsbGFibGUgJHN5bmMpOiBjYWxsYWJsZQogICAgewogICAgICAgIHJldHVybiBzdGF0aWMgZnVuY3Rpb24gKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKSB1c2UgKCRkZWZhdWx0LCAkc3luYyk6IFByb21pc2VJbnRlcmZhY2UgewogICAgICAgICAgICByZXR1cm4gZW1wdHkoJG9wdGlvbnNbUmVxdWVzdE9wdGlvbnM6OlNZTkNIUk9OT1VTXSkgPyAkZGVmYXVsdCgkcmVxdWVzdCwgJG9wdGlvbnMpIDogJHN5bmMoJHJlcXVlc3QsICRvcHRpb25zKTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogU2VuZHMgc3RyZWFtaW5nIHJlcXVlc3RzIHRvIGEgc3RyZWFtaW5nIGNvbXBhdGlibGUgaGFuZGxlciB3aGlsZSBzZW5kaW5nCiAgICAgKiBhbGwgb3RoZXIgcmVxdWVzdHMgdG8gYSBkZWZhdWx0IGhhbmRsZXIuCiAgICAgKgogICAgICogVGhpcywgZm9yIGV4YW1wbGUsIGNvdWxkIGJlIHVzZWZ1bCBmb3IgdGFraW5nIGFkdmFudGFnZSBvZiB0aGUKICAgICAqIHBlcmZvcm1hbmNlIGJlbmVmaXRzIG9mIGN1cmwgd2hpbGUgc3RpbGwgc3VwcG9ydGluZyB0cnVlIHN0cmVhbWluZwogICAgICogdGhyb3VnaCB0aGUgU3RyZWFtSGFuZGxlci4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlICRkZWZhdWx0ICAgSGFuZGxlciB1c2VkIGZvciBub24tc3RyZWFtaW5nIHJlc3BvbnNlcwogICAgICogQHBhcmFtIGNhbGxhYmxlKFJlcXVlc3RJbnRlcmZhY2UsIGFycmF5KTogUHJvbWlzZUludGVyZmFjZSAkc3RyZWFtaW5nIEhhbmRsZXIgdXNlZCBmb3Igc3RyZWFtaW5nIHJlc3BvbnNlcwogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlIFJldHVybnMgdGhlIGNvbXBvc2VkIGhhbmRsZXIuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gd3JhcFN0cmVhbWluZyhjYWxsYWJsZSAkZGVmYXVsdCwgY2FsbGFibGUgJHN0cmVhbWluZyk6IGNhbGxhYmxlCiAgICB7CiAgICAgICAgcmV0dXJuIHN0YXRpYyBmdW5jdGlvbiAoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpIHVzZSAoJGRlZmF1bHQsICRzdHJlYW1pbmcpOiBQcm9taXNlSW50ZXJmYWNlIHsKICAgICAgICAgICAgcmV0dXJuIGVtcHR5KCRvcHRpb25zWydzdHJlYW0nXSkgPyAkZGVmYXVsdCgkcmVxdWVzdCwgJG9wdGlvbnMpIDogJHN0cmVhbWluZygkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgIH07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/ProxyEnvironment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7CgovKioKICogUmVzb2x2ZXMgcHJveHkgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBwcm9jZXNzIGVudmlyb25tZW50IHdpdGggdGhlIHNhbWUKICogc2VtYW50aWNzIGxpYmN1cmwgYXBwbGllcywgc28gdGhlIGNVUkwgaGFuZGxlcnMgY2FuIHBpbiBDVVJMT1BUX1BST1hZIGFuZAogKiBDVVJMT1BUX05PUFJPWFkgZXhwbGljaXRseSBhbmQgbGliY3VybCBuZXZlciByZWFkcyB0aGUgZW52aXJvbm1lbnQgaXRzZWxmLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFByb3h5RW52aXJvbm1lbnQKewogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXNvbHZlcyB0aGUgcHJveHkgdG8gdXNlIGZvciB0aGUgZ2l2ZW4gcmVxdWVzdCBzY2hlbWUuCiAgICAgKgogICAgICogVGhlIGxvb2t1cCBtaXJyb3JzIGxpYmN1cmwgZm9yIHRoZSBodHRwIGFuZCBodHRwcyBzY2hlbWVzIHRoZSBoYW5kbGVycwogICAgICogYWNjZXB0OiB0aGUgbG93ZXJjYXNlIHNjaGVtZS1zcGVjaWZpYyB2YXJpYWJsZSBmaXJzdCwgaXRzIHVwcGVyY2FzZQogICAgICogdmFyaWFudCBuZXh0IChleGNlcHQgZm9yICJodHRwIiwgd2hlcmUgdXBwZXJjYXNlIEhUVFBfUFJPWFkgaXMgbmV2ZXIKICAgICAqIHJlYWQpLCB0aGVuIGFsbF9wcm94eS9BTExfUFJPWFkuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbCBUaGUgcHJveHkgdG8gdXNlOyBudWxsIHdoZW4gdGhlIGVudmlyb25tZW50CiAgICAgKiAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZXMgbm9uZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRQcm94eUZvclNjaGVtZShzdHJpbmcgJHNjaGVtZSk6ID9zdHJpbmcKICAgIHsKICAgICAgICAkc2NoZW1lID0gXHN0cnRvbG93ZXIoJHNjaGVtZSk7CiAgICAgICAgJGNhbmRpZGF0ZXMgPSBbJHNjaGVtZS4nX3Byb3h5J107CiAgICAgICAgaWYgKCRzY2hlbWUgIT09ICdodHRwJykgewogICAgICAgICAgICAvLyBVcHBlcmNhc2UgSFRUUF9QUk9YWSBpcyBkZWxpYmVyYXRlbHkgbmV2ZXIgY29uc3VsdGVkOiBhIENHSQogICAgICAgICAgICAvLyByZXF1ZXN0IGhlYWRlciAiUHJveHk6IiBiZWNvbWVzIEhUVFBfUFJPWFkgaW4gdGhlIGVudmlyb25tZW50LgogICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9odHRwb3h5Lm9yZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgJGNhbmRpZGF0ZXNbXSA9IFxzdHJ0b3VwcGVyKCRzY2hlbWUpLidfUFJPWFknOwogICAgICAgIH0KICAgICAgICAkY2FuZGlkYXRlc1tdID0gJ2FsbF9wcm94eSc7CiAgICAgICAgJGNhbmRpZGF0ZXNbXSA9ICdBTExfUFJPWFknOwoKICAgICAgICBmb3JlYWNoICgkY2FuZGlkYXRlcyBhcyAkbmFtZSkgewogICAgICAgICAgICAkdmFsdWUgPSBzZWxmOjpnZXRlbnYoJG5hbWUpOwogICAgICAgICAgICBpZiAoJHZhbHVlICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwgVGhlIG5vLXByb3h5IGxpc3Q7IG51bGwgd2hlbiBub3RoaW5nIGlzIHNldC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXROb1Byb3h5KCk6ID9zdHJpbmcKICAgIHsKICAgICAgICBmb3JlYWNoIChbJ25vX3Byb3h5JywgJ05PX1BST1hZJ10gYXMgJG5hbWUpIHsKICAgICAgICAgICAgJHZhbHVlID0gc2VsZjo6Z2V0ZW52KCRuYW1lKTsKICAgICAgICAgICAgaWYgKCR2YWx1ZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBTcGxpdHMgYSBub19wcm94eSBlbnZpcm9ubWVudCB2YWx1ZSBpbnRvIG1hdGNoYWJsZSBlbnRyaWVzLgogICAgICoKICAgICAqIE1pcnJvcnMgbGliY3VybCdzIHRva2VuaXphdGlvbjogZW50cmllcyBtYXkgYmUgc2VwYXJhdGVkIGJ5IGNvbW1hcyBvcgogICAgICogYmxhbmtzLCBhbmQgYSBzaW5nbGUgbGVhZGluZyBkb3QgaXMgaWdub3JlZCwgc28gIi5leGFtcGxlLmNvbSIgYnlwYXNzZXMKICAgICAqIGV4YW1wbGUuY29tIGFuZCBpdHMgc3ViZG9tYWlucyBleGFjdGx5IGFzIGEgYmFyZSBkb21haW4gZW50cnkgZG9lcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc3BsaXROb1Byb3h5KHN0cmluZyAkbm9Qcm94eSk6IGFycmF5CiAgICB7CiAgICAgICAgJGVudHJpZXMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoXHByZWdfc3BsaXQoJy9bXHMsXSsvJywgJG5vUHJveHkpID86IFtdIGFzICRlbnRyeSkgewogICAgICAgICAgICBpZiAoJGVudHJ5ICE9PSAnJyAmJiAkZW50cnlbMF0gPT09ICcuJykgewogICAgICAgICAgICAgICAgJGVudHJ5ID0gXHN1YnN0cigkZW50cnksIDEpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGVudHJ5ICE9PSAnJykgewogICAgICAgICAgICAgICAgJGVudHJpZXNbXSA9ICRlbnRyeTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRlbnRyaWVzOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldGVudihzdHJpbmcgJG5hbWUpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgLy8gV2luZG93cyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUsIHNvIHRoZQogICAgICAgIC8vIGxvd2VyY2FzZS1vbmx5IGh0dHBveHkgZGVmZW5jZSBkb2VzIG5vdCBob2xkIHRoZXJlLiBPdXRzaWRlIHRoZQogICAgICAgIC8vIENMSSBTQVBJIG9uIFdpbmRvd3MsIGVudmlyb25tZW50IHByb3hpZXMgYXJlIG5vdCByZXNvbHZlZCBhdCBhbGwKICAgICAgICAvLyAoYSBzYWZlLXNpZGUgZGl2ZXJnZW5jZSBmcm9tIGxpYmN1cmwpLgogICAgICAgIGlmIChcUEhQX09TX0ZBTUlMWSA9PT0gJ1dpbmRvd3MnICYmIFxQSFBfU0FQSSAhPT0gJ2NsaScpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAvLyBsb2NhbF9vbmx5OiB0aGUgT1MgZW52aXJvbm1lbnQgYW5kIHB1dGVudigpIG9ubHkgLSB0aGUgc2FtZQogICAgICAgIC8vIGVudmlyb24oNykgbGliY3VybCByZWFkcy4gU0FQSSByZXF1ZXN0IGVudmlyb25tZW50cyBzdWNoIGFzCiAgICAgICAgLy8gZmFzdGNnaV9wYXJhbSBvciBTZXRFbnYgYXJlIGRlbGliZXJhdGVseSBleGNsdWRlZC4KICAgICAgICAkdmFsdWUgPSBcZ2V0ZW52KCRuYW1lLCB0cnVlKTsKCiAgICAgICAgLy8gbGliY3VybCdzIEdldEVudiAobGliL2dldGVudi5jKSB0cmVhdHMgdmFyaWFibGVzIHNldCB0byBhbiBlbXB0eQogICAgICAgIC8vIHN0cmluZyBhcyB1bnNldCBvbiBldmVyeSB2ZXJzaW9uLCBzbyB0aGUgbG9va3VwIGZhbGxzIHRocm91Z2ggdG8KICAgICAgICAvLyB0aGUgbmV4dCBjYW5kaWRhdGUuCiAgICAgICAgcmV0dXJuICR2YWx1ZSA9PT0gZmFsc2UgfHwgJHZhbHVlID09PSAnJyA/IG51bGwgOiAkdmFsdWU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cQ29ubmVjdEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXFJlcXVlc3RFeGNlcHRpb247CnVzZSBHdXp6bGVIdHRwXFByb21pc2UgYXMgUDsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxGdWxmaWxsZWRQcm9taXNlOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXFBzcjc7CnVzZSBHdXp6bGVIdHRwXFRyYW5zZmVyU3RhdHM7CnVzZSBHdXp6bGVIdHRwXFRyYW5zcG9ydFNoYXJpbmc7CnVzZSBHdXp6bGVIdHRwXFV0aWxzOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcU3RyZWFtSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U7CgovKioKICogSFRUUCBoYW5kbGVyIHRoYXQgdXNlcyBQSFAncyBIVFRQIHN0cmVhbSB3cmFwcGVyLgogKgogKiBAZmluYWwKICovCmNsYXNzIFN0cmVhbUhhbmRsZXIKewogICAgcHJpdmF0ZSBjb25zdCBDT05ORUNUSU9OX0VSUk9SUyA9IFsKICAgICAgICAncGhwX25ldHdvcmtfZ2V0YWRkcmVzc2VzOicsCiAgICAgICAgJ2dldGFkZHJpbmZvJywKICAgICAgICAnZ2V0aG9zdGJ5bmFtZSBmYWlsZWQnLAogICAgICAgICdDb25uZWN0aW9uIHJlZnVzZWQnLAogICAgICAgICdObyBjb25uZWN0aW9uIGNvdWxkIGJlIG1hZGUgYmVjYXVzZSB0aGUgdGFyZ2V0IG1hY2hpbmUgYWN0aXZlbHkgcmVmdXNlZCBpdCcsCiAgICAgICAgImNvdWxkbid0IGNvbm5lY3QgdG8gaG9zdCIsIC8vIGVycm9yIG9uIEhIVk0KICAgICAgICAnY29ubmVjdGlvbiBhdHRlbXB0IGZhaWxlZCcsCiAgICAgICAgJ2Nvbm5lY3QoKSBmYWlsZWQnLAogICAgICAgICdDb25uZWN0aW9uIHRpbWVkIG91dCcsCiAgICAgICAgJ09wZXJhdGlvbiB0aW1lZCBvdXQnLAogICAgICAgICdOZXR3b3JrIGlzIHVucmVhY2hhYmxlJywKICAgICAgICAnTm8gcm91dGUgdG8gaG9zdCcsCiAgICAgICAgJ0hvc3QgaXMgdW5yZWFjaGFibGUnLAogICAgICAgICdIb3N0IGlzIGRvd24nLAogICAgICAgICdDYW5ub3QgY29ubmVjdCB0byBIVFRQUyBzZXJ2ZXIgdGhyb3VnaCBwcm94eScsCiAgICBdOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlICRsYXN0SGVhZGVycyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkdHJhbnNwb3J0U2hhcmluZ01vZGU7CgogICAgLyoqCiAgICAgKiBBY2NlcHRzIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIG9wdGlvbnM6CiAgICAgKgogICAgICogLSB0cmFuc3BvcnRfc2hhcmluZzogT3B0aW9uYWwgdHJhbnNwb3J0IHNoYXJpbmcgbW9kZS4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl7dHJhbnNwb3J0X3NoYXJpbmc/OiBtaXhlZH0gJG9wdGlvbnMgQXJyYXkgb2Ygb3B0aW9ucyB0byB1c2Ugd2l0aCB0aGUgaGFuZGxlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJG9wdGlvbnMgPSBbXSkKICAgIHsKICAgICAgICAkdGhpcy0+dHJhbnNwb3J0U2hhcmluZ01vZGUgPSBDdXJsU2hhcmVIYW5kbGVTdGF0ZTo6bm9ybWFsaXplTW9kZSgKICAgICAgICAgICAgJG9wdGlvbnNbJ3RyYW5zcG9ydF9zaGFyaW5nJ10gPz8gbnVsbCwKICAgICAgICAgICAgJ3RyYW5zcG9ydF9zaGFyaW5nJwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZW5kcyBhbiBIVFRQIHJlcXVlc3QuCiAgICAgKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QgUmVxdWVzdCB0byBzZW5kLgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCB0cmFuc2ZlciBvcHRpb25zLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19pbnZva2UoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgLy8gU2xlZXAgaWYgdGhlcmUgaXMgYSBkZWxheSBzcGVjaWZpZWQuCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydkZWxheSddKSkgewogICAgICAgICAgICBcdXNsZWVwKCRvcHRpb25zWydkZWxheSddICogMTAwMCk7CiAgICAgICAgfQoKICAgICAgICAkcHJvdG9jb2xWZXJzaW9uID0gJHJlcXVlc3QtPmdldFByb3RvY29sVmVyc2lvbigpOwoKICAgICAgICBpZiAoJycgPT09ICRwcm90b2NvbFZlcnNpb24pIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oJ2d1enpsZWh0dHAvZ3V6emxlJywgJzcuMTEnLCAnU2VuZGluZyBhIHJlcXVlc3Qgd2l0aCBhbiBlbXB0eSBwcm90b2NvbCB2ZXJzaW9uIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvZ3V6emxlIDguMCB3aWxsIHJlamVjdCBlbXB0eSBwcm90b2NvbCB2ZXJzaW9ucy4nKTsKCiAgICAgICAgICAgICRwcm90b2NvbFZlcnNpb24gPSAnMS4xJzsKICAgICAgICAgICAgJHJlcXVlc3QgPSBQc3I3XFV0aWxzOjptb2RpZnlSZXF1ZXN0KCRyZXF1ZXN0LCBbJ3ZlcnNpb24nID0+ICRwcm90b2NvbFZlcnNpb25dKTsKICAgICAgICB9CgogICAgICAgIGlmICgnMS4wJyAhPT0gJHByb3RvY29sVmVyc2lvbiAmJiAnMS4xJyAhPT0gJHByb3RvY29sVmVyc2lvbikgewogICAgICAgICAgICB0aHJvdyBuZXcgQ29ubmVjdEV4Y2VwdGlvbihzcHJpbnRmKCdIVFRQLyVzIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHN0cmVhbSBoYW5kbGVyLicsICRwcm90b2NvbFZlcnNpb24pLCAkcmVxdWVzdCk7CiAgICAgICAgfQoKICAgICAgICAkc3RhcnRUaW1lID0gaXNzZXQoJG9wdGlvbnNbJ29uX3N0YXRzJ10pID8gVXRpbHM6OmN1cnJlbnRUaW1lKCkgOiBudWxsOwoKICAgICAgICBzZWxmOjp0cmlnZ2VyVW5zdXBwb3J0ZWRSZXF1ZXN0T3B0aW9uRGVwcmVjYXRpb25zKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRyYW5zcG9ydFNoYXJpbmdTdXBwb3J0ZWQoKTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy8gRG9lcyBub3Qgc3VwcG9ydCB0aGUgZXhwZWN0IGhlYWRlci4KICAgICAgICAgICAgJHJlcXVlc3QgPSAkcmVxdWVzdC0+d2l0aG91dEhlYWRlcignRXhwZWN0Jyk7CgogICAgICAgICAgICAvLyBBcHBlbmQgYSBjb250ZW50LWxlbmd0aCBoZWFkZXIgaWYgYm9keSBzaXplIGlzIHplcm8gdG8gbWF0Y2gKICAgICAgICAgICAgLy8gdGhlIGJlaGF2aW9yIG9mIGBDdXJsSGFuZGxlcmAKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgIDAgPT09IFxzdHJjYXNlY21wKCdQVVQnLCAkcmVxdWVzdC0+Z2V0TWV0aG9kKCkpCiAgICAgICAgICAgICAgICAgICAgfHwgMCA9PT0gXHN0cmNhc2VjbXAoJ1BPU1QnLCAkcmVxdWVzdC0+Z2V0TWV0aG9kKCkpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAmJiAwID09PSAkcmVxdWVzdC0+Z2V0Qm9keSgpLT5nZXRTaXplKCkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkcmVxdWVzdCA9ICRyZXF1ZXN0LT53aXRoSGVhZGVyKCdDb250ZW50LUxlbmd0aCcsICcwJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y3JlYXRlUmVzcG9uc2UoCiAgICAgICAgICAgICAgICAkcmVxdWVzdCwKICAgICAgICAgICAgICAgICRvcHRpb25zLAogICAgICAgICAgICAgICAgJHRoaXMtPmNyZWF0ZVN0cmVhbSgkcmVxdWVzdCwgJG9wdGlvbnMpLAogICAgICAgICAgICAgICAgJHN0YXJ0VGltZQogICAgICAgICAgICApOwogICAgICAgIH0gY2F0Y2ggKFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIGVycm9yIHdhcyBhIG5ldHdvcmtpbmcgZXJyb3IuCiAgICAgICAgICAgIGlmIChzZWxmOjppc0Nvbm5lY3Rpb25FcnJvcigkZS0+Z2V0TWVzc2FnZSgpKSkgewogICAgICAgICAgICAgICAgJGUgPSBuZXcgQ29ubmVjdEV4Y2VwdGlvbigkZS0+Z2V0TWVzc2FnZSgpLCAkcmVxdWVzdCwgJGUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGUgPSAkZSBpbnN0YW5jZW9mIFJlcXVlc3RFeGNlcHRpb24gPyAkZSA6IG5ldyBSZXF1ZXN0RXhjZXB0aW9uKCRlLT5nZXRNZXNzYWdlKCksICRyZXF1ZXN0LCBudWxsLCAkZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPmludm9rZVN0YXRzKCRvcHRpb25zLCAkcmVxdWVzdCwgJHN0YXJ0VGltZSwgbnVsbCwgJGUpOwoKICAgICAgICAgICAgcmV0dXJuIFBcQ3JlYXRlOjpyZWplY3Rpb25Gb3IoJGUpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBpc0Nvbm5lY3Rpb25FcnJvcihzdHJpbmcgJG1lc3NhZ2UpOiBib29sCiAgICB7CiAgICAgICAgZm9yZWFjaCAoc2VsZjo6Q09OTkVDVElPTl9FUlJPUlMgYXMgJGNvbm5lY3Rpb25FcnJvcikgewogICAgICAgICAgICBpZiAoZmFsc2UgIT09IFxzdHJwb3MoJG1lc3NhZ2UsICRjb25uZWN0aW9uRXJyb3IpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gaW52b2tlU3RhdHMoCiAgICAgICAgYXJyYXkgJG9wdGlvbnMsCiAgICAgICAgUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwKICAgICAgICA/ZmxvYXQgJHN0YXJ0VGltZSwKICAgICAgICA/UmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlID0gbnVsbCwKICAgICAgICA/XFRocm93YWJsZSAkZXJyb3IgPSBudWxsCiAgICApOiB2b2lkIHsKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ29uX3N0YXRzJ10pKSB7CiAgICAgICAgICAgICRzdGF0cyA9IG5ldyBUcmFuc2ZlclN0YXRzKCRyZXF1ZXN0LCAkcmVzcG9uc2UsIFV0aWxzOjpjdXJyZW50VGltZSgpIC0gJHN0YXJ0VGltZSwgJGVycm9yLCBbXSk7CiAgICAgICAgICAgICgkb3B0aW9uc1snb25fc3RhdHMnXSkoJHN0YXRzKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJHN0cmVhbQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNyZWF0ZVJlc3BvbnNlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zLCAkc3RyZWFtLCA/ZmxvYXQgJHN0YXJ0VGltZSk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkaGRycyA9ICR0aGlzLT5sYXN0SGVhZGVyczsKICAgICAgICAkdGhpcy0+bGFzdEhlYWRlcnMgPSBbXTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgWyR2ZXIsICRzdGF0dXMsICRyZWFzb24sICRoZWFkZXJzXSA9IEhlYWRlclByb2Nlc3Nvcjo6cGFyc2VIZWFkZXJzKCRoZHJzKTsKICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmVqZWN0UmVzcG9uc2VDcmVhdGlvbigkb3B0aW9ucywgJHJlcXVlc3QsICRzdGFydFRpbWUsICRlKTsKICAgICAgICB9CgogICAgICAgIFskc3RyZWFtLCAkaGVhZGVyc10gPSAkdGhpcy0+Y2hlY2tEZWNvZGUoJG9wdGlvbnMsICRoZWFkZXJzLCAkc3RyZWFtKTsKICAgICAgICAkc3RyZWFtID0gUHNyN1xVdGlsczo6c3RyZWFtRm9yKCRzdHJlYW0pOwogICAgICAgICRzaW5rID0gJHN0cmVhbTsKCiAgICAgICAgaWYgKFxzdHJjYXNlY21wKCdIRUFEJywgJHJlcXVlc3QtPmdldE1ldGhvZCgpKSkgewogICAgICAgICAgICAkc2luayA9ICR0aGlzLT5jcmVhdGVTaW5rKCRzdHJlYW0sICRvcHRpb25zKTsKICAgICAgICB9CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRyZXNwb25zZSA9IG5ldyBQc3I3XFJlc3BvbnNlKCRzdGF0dXMsICRoZWFkZXJzLCAkc2luaywgJHZlciwgJHJlYXNvbik7CiAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkZSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJlamVjdFJlc3BvbnNlQ3JlYXRpb24oJG9wdGlvbnMsICRyZXF1ZXN0LCAkc3RhcnRUaW1lLCAkZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ29uX2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRvcHRpb25zWydvbl9oZWFkZXJzJ10oJHJlc3BvbnNlKTsKICAgICAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIFBcQ3JlYXRlOjpyZWplY3Rpb25Gb3IoCiAgICAgICAgICAgICAgICAgICAgbmV3IFJlcXVlc3RFeGNlcHRpb24oJ0FuIGVycm9yIHdhcyBlbmNvdW50ZXJlZCBkdXJpbmcgdGhlIG9uX2hlYWRlcnMgZXZlbnQnLCAkcmVxdWVzdCwgJHJlc3BvbnNlLCAkZSkKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIERvIG5vdCBkcmFpbiB3aGVuIHRoZSByZXF1ZXN0IGlzIGEgSEVBRCByZXF1ZXN0IGJlY2F1c2UgdGhleSBoYXZlCiAgICAgICAgLy8gbm8gYm9keS4KICAgICAgICBpZiAoJHNpbmsgIT09ICRzdHJlYW0pIHsKICAgICAgICAgICAgJHRoaXMtPmRyYWluKCRzdHJlYW0sICRzaW5rLCAkcmVzcG9uc2UtPmdldEhlYWRlckxpbmUoJ0NvbnRlbnQtTGVuZ3RoJykpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmludm9rZVN0YXRzKCRvcHRpb25zLCAkcmVxdWVzdCwgJHN0YXJ0VGltZSwgJHJlc3BvbnNlLCBudWxsKTsKCiAgICAgICAgcmV0dXJuIG5ldyBGdWxmaWxsZWRQcm9taXNlKCRyZXNwb25zZSk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiByZWplY3RSZXNwb25zZUNyZWF0aW9uKAogICAgICAgIGFycmF5ICRvcHRpb25zLAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgP2Zsb2F0ICRzdGFydFRpbWUsCiAgICAgICAgXFRocm93YWJsZSAkcHJldmlvdXMKICAgICk6IFByb21pc2VJbnRlcmZhY2UgewogICAgICAgICRyZWFzb24gPSBuZXcgUmVxdWVzdEV4Y2VwdGlvbigKICAgICAgICAgICAgJ0FuIGVycm9yIHdhcyBlbmNvdW50ZXJlZCB3aGlsZSBjcmVhdGluZyB0aGUgcmVzcG9uc2UnLAogICAgICAgICAgICAkcmVxdWVzdCwKICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAgJHByZXZpb3VzCiAgICAgICAgKTsKCiAgICAgICAgJHRoaXMtPmludm9rZVN0YXRzKCRvcHRpb25zLCAkcmVxdWVzdCwgJHN0YXJ0VGltZSwgbnVsbCwgJHJlYXNvbik7CgogICAgICAgIHJldHVybiBQXENyZWF0ZTo6cmVqZWN0aW9uRm9yKCRyZWFzb24pOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY3JlYXRlU2luayhTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgYXJyYXkgJG9wdGlvbnMpOiBTdHJlYW1JbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zWydzdHJlYW0nXSkpIHsKICAgICAgICAgICAgcmV0dXJuICRzdHJlYW07CiAgICAgICAgfQoKICAgICAgICAkc2luayA9ICRvcHRpb25zWydzaW5rJ10gPz8gUHNyN1xVdGlsczo6dHJ5Rm9wZW4oJ3BocDovL3RlbXAnLCAncisnKTsKCiAgICAgICAgcmV0dXJuIFxpc19zdHJpbmcoJHNpbmspID8gbmV3IFBzcjdcTGF6eU9wZW5TdHJlYW0oJHNpbmssICd3KycpIDogUHNyN1xVdGlsczo6c3RyZWFtRm9yKCRzaW5rKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSByZXNvdXJjZSAkc3RyZWFtCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tEZWNvZGUoYXJyYXkgJG9wdGlvbnMsIGFycmF5ICRoZWFkZXJzLCAkc3RyZWFtKTogYXJyYXkKICAgIHsKICAgICAgICAvLyBBdXRvbWF0aWNhbGx5IGRlY29kZSByZXNwb25zZXMgd2hlbiBpbnN0cnVjdGVkLgogICAgICAgIGlmICghZW1wdHkoJG9wdGlvbnNbJ2RlY29kZV9jb250ZW50J10pKSB7CiAgICAgICAgICAgICRub3JtYWxpemVkS2V5cyA9IFV0aWxzOjpub3JtYWxpemVIZWFkZXJLZXlzKCRoZWFkZXJzKTsKICAgICAgICAgICAgaWYgKGlzc2V0KCRub3JtYWxpemVkS2V5c1snY29udGVudC1lbmNvZGluZyddKSkgewogICAgICAgICAgICAgICAgJGVuY29kaW5nID0gJGhlYWRlcnNbJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWVuY29kaW5nJ11dOwogICAgICAgICAgICAgICAgaWYgKCRlbmNvZGluZ1swXSA9PT0gJ2d6aXAnIHx8ICRlbmNvZGluZ1swXSA9PT0gJ2RlZmxhdGUnKSB7CiAgICAgICAgICAgICAgICAgICAgJHN0cmVhbSA9IG5ldyBQc3I3XEluZmxhdGVTdHJlYW0oUHNyN1xVdGlsczo6c3RyZWFtRm9yKCRzdHJlYW0pKTsKICAgICAgICAgICAgICAgICAgICAkaGVhZGVyc1sneC1lbmNvZGVkLWNvbnRlbnQtZW5jb2RpbmcnXSA9ICRoZWFkZXJzWyRub3JtYWxpemVkS2V5c1snY29udGVudC1lbmNvZGluZyddXTsKCiAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGNvbnRlbnQtZW5jb2RpbmcgaGVhZGVyCiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGhlYWRlcnNbJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWVuY29kaW5nJ11dKTsKCiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGRlY29kZWQgbGVuZ3RoIGNhbm5vdCBiZSBrbm93biB3aXRob3V0IGluZmxhdGluZyB0aGUKICAgICAgICAgICAgICAgICAgICAvLyBzdHJlYW0sIHNvIGtlZXAgdGhlIG9yaWdpbmFsIGxlbmd0aCBmb3IgaW5zcGVjdGlvbiBhbmQKICAgICAgICAgICAgICAgICAgICAvLyBkcm9wIHRoZSBub3ctdW5rbm93biBDb250ZW50LUxlbmd0aCBoZWFkZXIuCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRub3JtYWxpemVkS2V5c1snY29udGVudC1sZW5ndGgnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGhlYWRlcnNbJ3gtZW5jb2RlZC1jb250ZW50LWxlbmd0aCddID0gJGhlYWRlcnNbJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWxlbmd0aCddXTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGhlYWRlcnNbJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWxlbmd0aCddXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWyRzdHJlYW0sICRoZWFkZXJzXTsKICAgIH0KCiAgICAvKioKICAgICAqIERyYWlucyB0aGUgc291cmNlIHN0cmVhbSBpbnRvIHRoZSAic2luayIgY2xpZW50IG9wdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50TGVuZ3RoIEhlYWRlciBzcGVjaWZ5aW5nIHRoZSBhbW91bnQgb2YKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSB0byByZWFkLgogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gd2hlbiB0aGUgc2luayBvcHRpb24gaXMgaW52YWxpZC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBkcmFpbihTdHJlYW1JbnRlcmZhY2UgJHNvdXJjZSwgU3RyZWFtSW50ZXJmYWNlICRzaW5rLCBzdHJpbmcgJGNvbnRlbnRMZW5ndGgpOiBTdHJlYW1JbnRlcmZhY2UKICAgIHsKICAgICAgICAvLyBJZiBhIGNvbnRlbnQtbGVuZ3RoIGhlYWRlciBpcyBwcm92aWRlZCwgdGhlbiBzdG9wIHJlYWRpbmcgb25jZQogICAgICAgIC8vIHRoYXQgbnVtYmVyIG9mIGJ5dGVzIGhhcyBiZWVuIHJlYWQuIFRoaXMgY2FuIHByZXZlbnQgaW5maW5pdGVseQogICAgICAgIC8vIHJlYWRpbmcgZnJvbSBhIHN0cmVhbSB3aGVuIGRlYWxpbmcgd2l0aCBzZXJ2ZXJzIHRoYXQgZG8gbm90IGhvbm9yCiAgICAgICAgLy8gQ29ubmVjdGlvbjogQ2xvc2UgaGVhZGVycy4KICAgICAgICBQc3I3XFV0aWxzOjpjb3B5VG9TdHJlYW0oCiAgICAgICAgICAgICRzb3VyY2UsCiAgICAgICAgICAgICRzaW5rLAogICAgICAgICAgICAoXHN0cmxlbigkY29udGVudExlbmd0aCkgPiAwICYmIChpbnQpICRjb250ZW50TGVuZ3RoID4gMCkgPyAoaW50KSAkY29udGVudExlbmd0aCA6IC0xCiAgICAgICAgKTsKCiAgICAgICAgJHNpbmstPnNlZWsoMCk7CiAgICAgICAgJHNvdXJjZS0+Y2xvc2UoKTsKCiAgICAgICAgcmV0dXJuICRzaW5rOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgcmVzb3VyY2UgYW5kIGNoZWNrIHRvIGVuc3VyZSBpdCB3YXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkKICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGNhbGxiYWNrIENhbGxhYmxlIHRoYXQgcmV0dXJucyBzdHJlYW0gcmVzb3VyY2UKICAgICAqCiAgICAgKiBAcmV0dXJuIHJlc291cmNlCiAgICAgKgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBvbiBlcnJvcgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNyZWF0ZVJlc291cmNlKGNhbGxhYmxlICRjYWxsYmFjaykKICAgIHsKICAgICAgICAkZXJyb3JzID0gW107CiAgICAgICAgXHNldF9lcnJvcl9oYW5kbGVyKHN0YXRpYyBmdW5jdGlvbiAoJF8sICRtc2csICRmaWxlLCAkbGluZSkgdXNlICgmJGVycm9ycyk6IGJvb2wgewogICAgICAgICAgICAkZXJyb3JzW10gPSBbCiAgICAgICAgICAgICAgICAnbWVzc2FnZScgPT4gJG1zZywKICAgICAgICAgICAgICAgICdmaWxlJyA9PiAkZmlsZSwKICAgICAgICAgICAgICAgICdsaW5lJyA9PiAkbGluZSwKICAgICAgICAgICAgXTsKCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0pOwoKICAgICAgICB0cnkgewogICAgICAgICAgICAkcmVzb3VyY2UgPSAkY2FsbGJhY2soKTsKICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICBccmVzdG9yZV9lcnJvcl9oYW5kbGVyKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISRyZXNvdXJjZSkgewogICAgICAgICAgICAkbWVzc2FnZSA9ICdFcnJvciBjcmVhdGluZyByZXNvdXJjZTogJzsKICAgICAgICAgICAgZm9yZWFjaCAoJGVycm9ycyBhcyAkZXJyKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkZXJyIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2UgLj0gIlska2V5XSAkdmFsdWUiLlxQSFBfRU9MOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbihcdHJpbSgkbWVzc2FnZSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXNvdXJjZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gcmVzb3VyY2UKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjcmVhdGVTdHJlYW0oUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpCiAgICB7CiAgICAgICAgc3RhdGljICRtZXRob2RzOwogICAgICAgIGlmICghJG1ldGhvZHMpIHsKICAgICAgICAgICAgJG1ldGhvZHMgPSBcYXJyYXlfZmxpcChcZ2V0X2NsYXNzX21ldGhvZHMoX19DTEFTU19fKSk7CiAgICAgICAgfQoKICAgICAgICAkc2NoZW1lID0gJHJlcXVlc3QtPmdldFVyaSgpLT5nZXRTY2hlbWUoKTsKICAgICAgICBpZiAoIVxpbl9hcnJheSgkc2NoZW1lLCBbJ2h0dHAnLCAnaHR0cHMnXSwgdHJ1ZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJlcXVlc3RFeGNlcHRpb24oXHNwcmludGYoIlRoZSBzY2hlbWUgJyVzJyBpcyBub3Qgc3VwcG9ydGVkLiIsICRzY2hlbWUpLCAkcmVxdWVzdCk7CiAgICAgICAgfQoKICAgICAgICAkcHJvdG9jb2xzID0gVXRpbHM6Om5vcm1hbGl6ZVByb3RvY29scygkb3B0aW9uc1sncHJvdG9jb2xzJ10gPz8gWydodHRwJywgJ2h0dHBzJ10pOwogICAgICAgIGlmICghXGluX2FycmF5KCRzY2hlbWUsICRwcm90b2NvbHMsIHRydWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSZXF1ZXN0RXhjZXB0aW9uKFxzcHJpbnRmKCdUaGUgc2NoZW1lICIlcyIgaXMgbm90IGFsbG93ZWQgYnkgdGhlIHByb3RvY29scyByZXF1ZXN0IG9wdGlvbi4nLCAkc2NoZW1lKSwgJHJlcXVlc3QpOwogICAgICAgIH0KCiAgICAgICAgLy8gSFRUUC8xLjEgc3RyZWFtcyB1c2luZyB0aGUgUEhQIHN0cmVhbSB3cmFwcGVyIHJlcXVpcmUgYQogICAgICAgIC8vIENvbm5lY3Rpb246IGNsb3NlIGhlYWRlcgogICAgICAgIGlmICgkcmVxdWVzdC0+Z2V0UHJvdG9jb2xWZXJzaW9uKCkgPT09ICcxLjEnCiAgICAgICAgICAgICYmICEkcmVxdWVzdC0+aGFzSGVhZGVyKCdDb25uZWN0aW9uJykKICAgICAgICApIHsKICAgICAgICAgICAgJHJlcXVlc3QgPSAkcmVxdWVzdC0+d2l0aEhlYWRlcignQ29ubmVjdGlvbicsICdjbG9zZScpOwogICAgICAgIH0KCiAgICAgICAgLy8gRW5zdXJlIFNTTCBpcyB2ZXJpZmllZCBieSBkZWZhdWx0CiAgICAgICAgaWYgKCFpc3NldCgkb3B0aW9uc1sndmVyaWZ5J10pKSB7CiAgICAgICAgICAgICRvcHRpb25zWyd2ZXJpZnknXSA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICAkcGFyYW1zID0gW107CiAgICAgICAgJGNvbnRleHQgPSAkdGhpcy0+Z2V0RGVmYXVsdENvbnRleHQoJHJlcXVlc3QpOwoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ29uX2hlYWRlcnMnXSkgJiYgIVxpc19jYWxsYWJsZSgkb3B0aW9uc1snb25faGVhZGVycyddKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignb25faGVhZGVycyBtdXN0IGJlIGNhbGxhYmxlJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zKSkgewogICAgICAgICAgICBmb3JlYWNoICgkb3B0aW9ucyBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAgICAgJG1ldGhvZCA9ICJhZGRfeyRrZXl9IjsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkbWV0aG9kc1skbWV0aG9kXSkpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+eyRtZXRob2R9KCRyZXF1ZXN0LCAkY29udGV4dCwgJHZhbHVlLCAkcGFyYW1zKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydzdHJlYW1fY29udGV4dCddKSkgewogICAgICAgICAgICBpZiAoIVxpc19hcnJheSgkb3B0aW9uc1snc3RyZWFtX2NvbnRleHQnXSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdzdHJlYW1fY29udGV4dCBtdXN0IGJlIGFuIGFycmF5Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VsZjo6dHJpZ2dlckNvbmZsaWN0aW5nU3RyZWFtQ29udGV4dE9wdGlvbkRlcHJlY2F0aW9ucygkb3B0aW9uc1snc3RyZWFtX2NvbnRleHQnXSk7CiAgICAgICAgICAgIHNlbGY6OnRyaWdnZXJVbnN1cHBvcnRlZFN0cmVhbUNvbnRleHRPcHRpb25EZXByZWNhdGlvbnMoJG9wdGlvbnNbJ3N0cmVhbV9jb250ZXh0J10pOwogICAgICAgICAgICAkY29udGV4dCA9IFxhcnJheV9yZXBsYWNlX3JlY3Vyc2l2ZSgkY29udGV4dCwgJG9wdGlvbnNbJ3N0cmVhbV9jb250ZXh0J10pOwogICAgICAgIH0KCiAgICAgICAgLy8gTWljcm9zb2Z0IE5UTE0gYXV0aGVudGljYXRpb24gb25seSBzdXBwb3J0ZWQgd2l0aCBjdXJsIGhhbmRsZXIKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2F1dGgnXVsyXSkgJiYgJ250bG0nID09PSAkb3B0aW9uc1snYXV0aCddWzJdKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdNaWNyb3NvZnQgTlRMTSBhdXRoZW50aWNhdGlvbiBvbmx5IHN1cHBvcnRlZCB3aXRoIGN1cmwgaGFuZGxlcicpOwogICAgICAgIH0KCiAgICAgICAgJHVyaSA9ICR0aGlzLT5yZXNvbHZlSG9zdCgkcmVxdWVzdCwgJG9wdGlvbnMpOwoKICAgICAgICAkY29udGV4dFJlc291cmNlID0gJHRoaXMtPmNyZWF0ZVJlc291cmNlKAogICAgICAgICAgICBzdGF0aWMgZnVuY3Rpb24gKCkgdXNlICgkY29udGV4dCwgJHBhcmFtcykgewogICAgICAgICAgICAgICAgcmV0dXJuIFxzdHJlYW1fY29udGV4dF9jcmVhdGUoJGNvbnRleHQsICRwYXJhbXMpOwogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5jcmVhdGVSZXNvdXJjZSgKICAgICAgICAgICAgZnVuY3Rpb24gKCkgdXNlICgkdXJpLCAkY29udGV4dFJlc291cmNlLCAkY29udGV4dCwgJG9wdGlvbnMsICRyZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAkcmVzb3VyY2UgPSBAXGZvcGVuKChzdHJpbmcpICR1cmksICdyJywgZmFsc2UsICRjb250ZXh0UmVzb3VyY2UpOwoKICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL3dpa2kucGhwLm5ldC9yZmMvZGVwcmVjYXRpb25zX3BocF84XzUjZGVwcmVjYXRlX3RoZV9odHRwX3Jlc3BvbnNlX2hlYWRlcl9wcmVkZWZpbmVkX3ZhcmlhYmxlCiAgICAgICAgICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdodHRwX2dldF9sYXN0X3Jlc3BvbnNlX2hlYWRlcnMnKSkgewogICAgICAgICAgICAgICAgICAgICRodHRwX3Jlc3BvbnNlX2hlYWRlciA9IFxodHRwX2dldF9sYXN0X3Jlc3BvbnNlX2hlYWRlcnMoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGhpcy0+bGFzdEhlYWRlcnMgPSAkaHR0cF9yZXNwb25zZV9oZWFkZXIgPz8gW107CgogICAgICAgICAgICAgICAgaWYgKGZhbHNlID09PSAkcmVzb3VyY2UpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29ubmVjdEV4Y2VwdGlvbihzcHJpbnRmKCdDb25uZWN0aW9uIHJlZnVzZWQgZm9yIFVSSSAlcycsICR1cmkpLCAkcmVxdWVzdCwgbnVsbCwgJGNvbnRleHQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1sncmVhZF90aW1lb3V0J10pKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlYWRUaW1lb3V0ID0gJG9wdGlvbnNbJ3JlYWRfdGltZW91dCddOwogICAgICAgICAgICAgICAgICAgICRzZWMgPSAoaW50KSAkcmVhZFRpbWVvdXQ7CiAgICAgICAgICAgICAgICAgICAgJHVzZWMgPSAoJHJlYWRUaW1lb3V0IC0gJHNlYykgKiAxMDAwMDA7CiAgICAgICAgICAgICAgICAgICAgXHN0cmVhbV9zZXRfdGltZW91dCgkcmVzb3VyY2UsICRzZWMsICR1c2VjKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHJlc291cmNlOwogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJlc29sdmVIb3N0KFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJHVyaSA9ICRyZXF1ZXN0LT5nZXRVcmkoKTsKCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydmb3JjZV9pcF9yZXNvbHZlJ10pICYmICFcZmlsdGVyX3ZhcigkdXJpLT5nZXRIb3N0KCksIFxGSUxURVJfVkFMSURBVEVfSVApKSB7CiAgICAgICAgICAgIGlmICgndjQnID09PSAkb3B0aW9uc1snZm9yY2VfaXBfcmVzb2x2ZSddKSB7CiAgICAgICAgICAgICAgICAkcmVjb3JkcyA9IFxkbnNfZ2V0X3JlY29yZCgkdXJpLT5nZXRIb3N0KCksIFxETlNfQSk7CiAgICAgICAgICAgICAgICBpZiAoZmFsc2UgPT09ICRyZWNvcmRzIHx8ICFpc3NldCgkcmVjb3Jkc1swXVsnaXAnXSkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29ubmVjdEV4Y2VwdGlvbihcc3ByaW50ZigiQ291bGQgbm90IHJlc29sdmUgSVB2NCBhZGRyZXNzIGZvciBob3N0ICclcyciLCAkdXJpLT5nZXRIb3N0KCkpLCAkcmVxdWVzdCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICR1cmktPndpdGhIb3N0KCRyZWNvcmRzWzBdWydpcCddKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJ3Y2JyA9PT0gJG9wdGlvbnNbJ2ZvcmNlX2lwX3Jlc29sdmUnXSkgewogICAgICAgICAgICAgICAgJHJlY29yZHMgPSBcZG5zX2dldF9yZWNvcmQoJHVyaS0+Z2V0SG9zdCgpLCBcRE5TX0FBQUEpOwogICAgICAgICAgICAgICAgaWYgKGZhbHNlID09PSAkcmVjb3JkcyB8fCAhaXNzZXQoJHJlY29yZHNbMF1bJ2lwdjYnXSkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29ubmVjdEV4Y2VwdGlvbihcc3ByaW50ZigiQ291bGQgbm90IHJlc29sdmUgSVB2NiBhZGRyZXNzIGZvciBob3N0ICclcyciLCAkdXJpLT5nZXRIb3N0KCkpLCAkcmVxdWVzdCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICR1cmktPndpdGhIb3N0KCdbJy4kcmVjb3Jkc1swXVsnaXB2NiddLiddJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkdXJpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0RGVmYXVsdENvbnRleHQoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCk6IGFycmF5CiAgICB7CiAgICAgICAgJGhlYWRlcnMgPSAnJzsKICAgICAgICBmb3JlYWNoICgkcmVxdWVzdC0+Z2V0SGVhZGVycygpIGFzICRuYW1lID0+ICR2YWx1ZSkgewogICAgICAgICAgICBmb3JlYWNoICgkdmFsdWUgYXMgJHZhbCkgewogICAgICAgICAgICAgICAgJGhlYWRlcnMgLj0gIiRuYW1lOiAkdmFsXHJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRjb250ZXh0ID0gWwogICAgICAgICAgICAnaHR0cCcgPT4gWwogICAgICAgICAgICAgICAgJ21ldGhvZCcgPT4gJHJlcXVlc3QtPmdldE1ldGhvZCgpLAogICAgICAgICAgICAgICAgJ2hlYWRlcicgPT4gJGhlYWRlcnMsCiAgICAgICAgICAgICAgICAncHJvdG9jb2xfdmVyc2lvbicgPT4gJHJlcXVlc3QtPmdldFByb3RvY29sVmVyc2lvbigpLAogICAgICAgICAgICAgICAgJ2lnbm9yZV9lcnJvcnMnID0+IHRydWUsCiAgICAgICAgICAgICAgICAnZm9sbG93X2xvY2F0aW9uJyA9PiAwLAogICAgICAgICAgICBdLAogICAgICAgICAgICAnc3NsJyA9PiBbCiAgICAgICAgICAgICAgICAncGVlcl9uYW1lJyA9PiAkcmVxdWVzdC0+Z2V0VXJpKCktPmdldEhvc3QoKSwKICAgICAgICAgICAgXSwKICAgICAgICBdOwoKICAgICAgICAkYm9keSA9IChzdHJpbmcpICRyZXF1ZXN0LT5nZXRCb2R5KCk7CgogICAgICAgIGlmICgnJyAhPT0gJGJvZHkpIHsKICAgICAgICAgICAgJGNvbnRleHRbJ2h0dHAnXVsnY29udGVudCddID0gJGJvZHk7CiAgICAgICAgICAgIC8vIFByZXZlbnQgdGhlIEhUVFAgaGFuZGxlciBmcm9tIGFkZGluZyBhIENvbnRlbnQtVHlwZSBoZWFkZXIuCiAgICAgICAgICAgIGlmICghJHJlcXVlc3QtPmhhc0hlYWRlcignQ29udGVudC1UeXBlJykpIHsKICAgICAgICAgICAgICAgICRjb250ZXh0WydodHRwJ11bJ2hlYWRlciddIC49ICJDb250ZW50LVR5cGU6XHJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRjb250ZXh0WydodHRwJ11bJ2hlYWRlciddID0gXHJ0cmltKCRjb250ZXh0WydodHRwJ11bJ2hlYWRlciddKTsKCiAgICAgICAgcmV0dXJuICRjb250ZXh0OwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHRyaWdnZXJVbnN1cHBvcnRlZFJlcXVlc3RPcHRpb25EZXByZWNhdGlvbnMoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKAogICAgICAgICAgICBcYXJyYXlfa2V5X2V4aXN0cygnY3VybCcsICRvcHRpb25zKQogICAgICAgICAgICAmJiAkb3B0aW9uc1snY3VybCddICE9PSBudWxsCiAgICAgICAgICAgICYmICRvcHRpb25zWydjdXJsJ10gIT09IFtdCiAgICAgICAgICAgICYmICFzZWxmOjppc0N1cmxPcHRpb25HZW5lcmF0ZWRCeUF1dGgoJG9wdGlvbnMpCiAgICAgICAgKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKCdndXp6bGVodHRwL2d1enpsZScsICc3LjExJywgJ1Bhc3NpbmcgdGhlICJjdXJsIiByZXF1ZXN0IG9wdGlvbiB0byB0aGUgc3RyZWFtIGhhbmRsZXIgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9ndXp6bGUgOC4wIHdpbGwgcmVqZWN0IHRoaXMgb3B0aW9uIGJlY2F1c2UgdGhlIHN0cmVhbSBoYW5kbGVyIGlnbm9yZXMgY1VSTCBvcHRpb25zLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxhcnJheV9rZXlfZXhpc3RzKCdleHBlY3QnLCAkb3B0aW9ucykgJiYgJG9wdGlvbnNbJ2V4cGVjdCddICE9PSBmYWxzZSAmJiAkcmVxdWVzdC0+aGFzSGVhZGVyKCdFeHBlY3QnKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbignZ3V6emxlaHR0cC9ndXp6bGUnLCAnNy4xMScsICdQYXNzaW5nIHRoZSAiZXhwZWN0IiByZXF1ZXN0IG9wdGlvbiB0byB0aGUgc3RyZWFtIGhhbmRsZXIgaXMgZGVwcmVjYXRlZCB3aGVuIGl0IGFkZHMgYW4gRXhwZWN0IGhlYWRlcjsgZ3V6emxlaHR0cC9ndXp6bGUgOC4wIHdpbGwgcmVqZWN0IHRoaXMgb3B0aW9uIGJlY2F1c2UgdGhlIHN0cmVhbSBoYW5kbGVyIGRvZXMgbm90IHN1cHBvcnQgRXhwZWN0OiAxMDAtQ29udGludWUuJyk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHRyaWdnZXJDb25mbGljdGluZ1N0cmVhbUNvbnRleHRPcHRpb25EZXByZWNhdGlvbnMoYXJyYXkgJHN0cmVhbUNvbnRleHQpOiB2b2lkCiAgICB7CiAgICAgICAgJGNvbmZsaWN0aW5nT3B0aW9ucyA9IHNlbGY6OmNvbmZsaWN0aW5nU3RyZWFtQ29udGV4dE9wdGlvbnMoKTsKCiAgICAgICAgZm9yZWFjaCAoJHN0cmVhbUNvbnRleHQgYXMgJHdyYXBwZXIgPT4gJGNvbnRleHRPcHRpb25zKSB7CiAgICAgICAgICAgIGlmICghXGlzX3N0cmluZygkd3JhcHBlcikgfHwgIWlzc2V0KCRjb25mbGljdGluZ09wdGlvbnNbJHdyYXBwZXJdKSB8fCAhXGlzX2FycmF5KCRjb250ZXh0T3B0aW9ucykpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3JlYWNoICgkY29udGV4dE9wdGlvbnMgYXMgJG9wdGlvbiA9PiAkXykgewogICAgICAgICAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCRvcHRpb24pIHx8ICFcYXJyYXlfa2V5X2V4aXN0cygkb3B0aW9uLCAkY29uZmxpY3RpbmdPcHRpb25zWyR3cmFwcGVyXSkpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9ndXp6bGUnLAogICAgICAgICAgICAgICAgICAgICc3LjEyJywKICAgICAgICAgICAgICAgICAgICBcc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgJ1Bhc3Npbmcgc3RyZWFtX2NvbnRleHQuJXMuJXMgaW4gdGhlICJzdHJlYW1fY29udGV4dCIgcmVxdWVzdCBvcHRpb24gaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9ndXp6bGUgOC4wIHdpbGwgcmVqZWN0IHRoaXMgb3B0aW9uIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggR3V6emxlLW1hbmFnZWQgcmVxdWVzdCBoYW5kbGluZy4gVXNlICVzIGluc3RlYWQuJywKICAgICAgICAgICAgICAgICAgICAgICAgJHdyYXBwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICRvcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICRjb25mbGljdGluZ09wdGlvbnNbJHdyYXBwZXJdWyRvcHRpb25dCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB0cmlnZ2VyVW5zdXBwb3J0ZWRTdHJlYW1Db250ZXh0T3B0aW9uRGVwcmVjYXRpb25zKGFycmF5ICRzdHJlYW1Db250ZXh0KTogdm9pZAogICAgewogICAgICAgICR1bnN1cHBvcnRlZE9wdGlvbnMgPSBzZWxmOjp1bnN1cHBvcnRlZFN0cmVhbUNvbnRleHRPcHRpb25zKCRzdHJlYW1Db250ZXh0KTsKICAgICAgICBpZiAoJHVuc3VwcG9ydGVkT3B0aW9ucyA9PT0gW10pIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICdndXp6bGVodHRwL2d1enpsZScsCiAgICAgICAgICAgICc3LjEyJywKICAgICAgICAgICAgXHNwcmludGYoCiAgICAgICAgICAgICAgICAnUGFzc2luZyBQSFAgc3RyZWFtIGNvbnRleHQgb3B0aW9ucyBvdXRzaWRlIHRoZSBidWlsdC1pbiBzdHJlYW0gaGFuZGxlciBhbGxvdy1saXN0IHRvIHRoZSAic3RyZWFtX2NvbnRleHQiIHJlcXVlc3Qgb3B0aW9uIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvZ3V6emxlIDguMCB3aWxsIHJlamVjdCBzdHJlYW0gY29udGV4dCBvcHRpb25zIG91dHNpZGUgdGhlIGFsbG93LWxpc3QuIERlcHJlY2F0ZWQgb3B0aW9uJXM6ICVzLicsCiAgICAgICAgICAgICAgICBcY291bnQoJHVuc3VwcG9ydGVkT3B0aW9ucykgPT09IDEgPyAnJyA6ICdzJywKICAgICAgICAgICAgICAgIFxpbXBsb2RlKCcsICcsICR1bnN1cHBvcnRlZE9wdGlvbnMpCiAgICAgICAgICAgICkKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB1bnN1cHBvcnRlZFN0cmVhbUNvbnRleHRPcHRpb25zKGFycmF5ICRzdHJlYW1Db250ZXh0KTogYXJyYXkKICAgIHsKICAgICAgICAkc3VwcG9ydGVkT3B0aW9ucyA9IHNlbGY6OnN1cHBvcnRlZFN0cmVhbUNvbnRleHRPcHRpb25zKCk7CiAgICAgICAgJGNvbmZsaWN0aW5nT3B0aW9ucyA9IHNlbGY6OmNvbmZsaWN0aW5nU3RyZWFtQ29udGV4dE9wdGlvbnMoKTsKICAgICAgICAkdW5zdXBwb3J0ZWRPcHRpb25zID0gW107CgogICAgICAgIGZvcmVhY2ggKCRzdHJlYW1Db250ZXh0IGFzICR3cmFwcGVyID0+ICRjb250ZXh0T3B0aW9ucykgewogICAgICAgICAgICBpZiAoIVxpc19zdHJpbmcoJHdyYXBwZXIpIHx8ICFpc3NldCgkc3VwcG9ydGVkT3B0aW9uc1skd3JhcHBlcl0pKSB7CiAgICAgICAgICAgICAgICBpZiAoXGlzX2FycmF5KCRjb250ZXh0T3B0aW9ucykpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkY29udGV4dE9wdGlvbnMgYXMgJG9wdGlvbiA9PiAkXykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoXGlzX3N0cmluZygkd3JhcHBlcikgJiYgXGlzX3N0cmluZygkb3B0aW9uKSAmJiBpc3NldCgkY29uZmxpY3RpbmdPcHRpb25zWyR3cmFwcGVyXSkgJiYgXGFycmF5X2tleV9leGlzdHMoJG9wdGlvbiwgJGNvbmZsaWN0aW5nT3B0aW9uc1skd3JhcHBlcl0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJHVuc3VwcG9ydGVkT3B0aW9uc1tdID0gXHNwcmludGYoJ3N0cmVhbV9jb250ZXh0LiVzLiVzJywgKHN0cmluZykgJHdyYXBwZXIsIChzdHJpbmcpICRvcHRpb24pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHVuc3VwcG9ydGVkT3B0aW9uc1tdID0gXHNwcmludGYoJ3N0cmVhbV9jb250ZXh0LiVzJywgKHN0cmluZykgJHdyYXBwZXIpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIVxpc19hcnJheSgkY29udGV4dE9wdGlvbnMpKSB7CiAgICAgICAgICAgICAgICAkdW5zdXBwb3J0ZWRPcHRpb25zW10gPSBcc3ByaW50Zignc3RyZWFtX2NvbnRleHQuJXMnLCAkd3JhcHBlcik7CgogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvcmVhY2ggKCRjb250ZXh0T3B0aW9ucyBhcyAkb3B0aW9uID0+ICRfKSB7CiAgICAgICAgICAgICAgICBpZiAoXGlzX3N0cmluZygkb3B0aW9uKSAmJiBpc3NldCgkY29uZmxpY3RpbmdPcHRpb25zWyR3cmFwcGVyXSkgJiYgXGFycmF5X2tleV9leGlzdHMoJG9wdGlvbiwgJGNvbmZsaWN0aW5nT3B0aW9uc1skd3JhcHBlcl0pKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCRvcHRpb24pIHx8ICFcYXJyYXlfa2V5X2V4aXN0cygkb3B0aW9uLCAkc3VwcG9ydGVkT3B0aW9uc1skd3JhcHBlcl0pKSB7CiAgICAgICAgICAgICAgICAgICAgJHVuc3VwcG9ydGVkT3B0aW9uc1tdID0gXHNwcmludGYoJ3N0cmVhbV9jb250ZXh0LiVzLiVzJywgJHdyYXBwZXIsIChzdHJpbmcpICRvcHRpb24pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHVuc3VwcG9ydGVkT3B0aW9uczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXk8c3RyaW5nLCBhcnJheTxzdHJpbmcsIHRydWU+PgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBzdXBwb3J0ZWRTdHJlYW1Db250ZXh0T3B0aW9ucygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICdodHRwJyA9PiBbCiAgICAgICAgICAgICAgICAncmVxdWVzdF9mdWxsdXJpJyA9PiB0cnVlLAogICAgICAgICAgICBdLAogICAgICAgICAgICAnc29ja2V0JyA9PiBbCiAgICAgICAgICAgICAgICAnYmluZHRvJyA9PiB0cnVlLAogICAgICAgICAgICAgICAgJ3RjcF9ub2RlbGF5JyA9PiB0cnVlLAogICAgICAgICAgICBdLAogICAgICAgICAgICAnc3NsJyA9PiBbCiAgICAgICAgICAgICAgICAnU05JX2VuYWJsZWQnID0+IHRydWUsCiAgICAgICAgICAgICAgICAnY2FwdHVyZV9wZWVyX2NlcnQnID0+IHRydWUsCiAgICAgICAgICAgICAgICAnY2FwdHVyZV9wZWVyX2NlcnRfY2hhaW4nID0+IHRydWUsCiAgICAgICAgICAgICAgICAnY2lwaGVycycgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgICdkaXNhYmxlX2NvbXByZXNzaW9uJyA9PiB0cnVlLAogICAgICAgICAgICAgICAgJ25vX3RpY2tldCcgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgICdwZWVyX2ZpbmdlcnByaW50JyA9PiB0cnVlLAogICAgICAgICAgICAgICAgJ3NlY3VyaXR5X2xldmVsJyA9PiB0cnVlLAogICAgICAgICAgICAgICAgJ3ZlcmlmeV9kZXB0aCcgPT4gdHJ1ZSwKICAgICAgICAgICAgXSwKICAgICAgICBdOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsIGFycmF5PHN0cmluZywgc3RyaW5nPj4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY29uZmxpY3RpbmdTdHJlYW1Db250ZXh0T3B0aW9ucygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICdodHRwJyA9PiBbCiAgICAgICAgICAgICAgICAnY29udGVudCcgPT4gJ3RoZSByZXF1ZXN0IGJvZHknLAogICAgICAgICAgICAgICAgJ2ZvbGxvd19sb2NhdGlvbicgPT4gJ3RoZSAiYWxsb3dfcmVkaXJlY3RzIiByZXF1ZXN0IG9wdGlvbicsCiAgICAgICAgICAgICAgICAnaGVhZGVyJyA9PiAndGhlIHJlcXVlc3QgaGVhZGVycycsCiAgICAgICAgICAgICAgICAnbWF4X3JlZGlyZWN0cycgPT4gJ3RoZSAiYWxsb3dfcmVkaXJlY3RzIiByZXF1ZXN0IG9wdGlvbicsCiAgICAgICAgICAgICAgICAnbWV0aG9kJyA9PiAndGhlIHJlcXVlc3QgbWV0aG9kJywKICAgICAgICAgICAgICAgICdwcm90b2NvbF92ZXJzaW9uJyA9PiAndGhlIHJlcXVlc3QgcHJvdG9jb2wgdmVyc2lvbicsCiAgICAgICAgICAgICAgICAncHJveHknID0+ICd0aGUgInByb3h5IiByZXF1ZXN0IG9wdGlvbicsCiAgICAgICAgICAgICAgICAndGltZW91dCcgPT4gJ3RoZSAidGltZW91dCIgcmVxdWVzdCBvcHRpb24nLAogICAgICAgICAgICBdLAogICAgICAgICAgICAnc3NsJyA9PiBbCiAgICAgICAgICAgICAgICAnYWxsb3dfc2VsZl9zaWduZWQnID0+ICd0aGUgInZlcmlmeSIgcmVxdWVzdCBvcHRpb24nLAogICAgICAgICAgICAgICAgJ2NhZmlsZScgPT4gJ3RoZSAidmVyaWZ5IiByZXF1ZXN0IG9wdGlvbicsCiAgICAgICAgICAgICAgICAnY2FwYXRoJyA9PiAndGhlICJ2ZXJpZnkiIHJlcXVlc3Qgb3B0aW9uJywKICAgICAgICAgICAgICAgICdjcnlwdG9fbWV0aG9kJyA9PiAndGhlICJjcnlwdG9fbWV0aG9kIiByZXF1ZXN0IG9wdGlvbicsCiAgICAgICAgICAgICAgICAnbG9jYWxfY2VydCcgPT4gJ3RoZSAiY2VydCIgcmVxdWVzdCBvcHRpb24nLAogICAgICAgICAgICAgICAgJ2xvY2FsX3BrJyA9PiAndGhlICJzc2xfa2V5IiByZXF1ZXN0IG9wdGlvbicsCiAgICAgICAgICAgICAgICAnbWluX3Byb3RvX3ZlcnNpb24nID0+ICd0aGUgImNyeXB0b19tZXRob2QiIHJlcXVlc3Qgb3B0aW9uJywKICAgICAgICAgICAgICAgICdwYXNzcGhyYXNlJyA9PiAndGhlICJjZXJ0IiBvciAic3NsX2tleSIgcmVxdWVzdCBvcHRpb24nLAogICAgICAgICAgICAgICAgJ3BlZXJfbmFtZScgPT4gJ3RoZSByZXF1ZXN0IFVSSScsCiAgICAgICAgICAgICAgICAndmVyaWZ5X3BlZXInID0+ICd0aGUgInZlcmlmeSIgcmVxdWVzdCBvcHRpb24nLAogICAgICAgICAgICAgICAgJ3ZlcmlmeV9wZWVyX25hbWUnID0+ICd0aGUgInZlcmlmeSIgcmVxdWVzdCBvcHRpb24nLAogICAgICAgICAgICBdLAogICAgICAgIF07CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhc3NlcnRUcmFuc3BvcnRTaGFyaW5nU3VwcG9ydGVkKCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnRyYW5zcG9ydFNoYXJpbmdNb2RlID09PSBUcmFuc3BvcnRTaGFyaW5nOjpIQU5ETEVSX1JFUVVJUkUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSAidHJhbnNwb3J0X3NoYXJpbmciIG9wdGlvbiByZXF1aXJlcyB0cmFuc3BvcnQgc2hhcmluZywgYnV0IHRoZSBzdHJlYW0gaGFuZGxlciBkb2VzIG5vdCBzdXBwb3J0IGl0LicpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBpc0N1cmxPcHRpb25HZW5lcmF0ZWRCeUF1dGgoYXJyYXkgJG9wdGlvbnMpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkb3B0aW9uc1snY3VybCddKSB8fCAhXGlzX2FycmF5KCRvcHRpb25zWydjdXJsJ10pIHx8ICFpc3NldCgkb3B0aW9uc1snYXV0aCddWzJdKSB8fCAhXGlzX3N0cmluZygkb3B0aW9uc1snYXV0aCddWzJdKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoIVxkZWZpbmVkKCdDVVJMT1BUX0hUVFBBVVRIJykgfHwgIVxkZWZpbmVkKCdDVVJMT1BUX1VTRVJQV0QnKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkdHlwZSA9IFxzdHJ0b2xvd2VyKCRvcHRpb25zWydhdXRoJ11bMl0pOwogICAgICAgIGlmICgkdHlwZSA9PT0gJ2RpZ2VzdCcpIHsKICAgICAgICAgICAgJGh0dHBBdXRoID0gXGRlZmluZWQoJ0NVUkxBVVRIX0RJR0VTVCcpID8gXGNvbnN0YW50KCdDVVJMQVVUSF9ESUdFU1QnKSA6IG51bGw7CiAgICAgICAgfSBlbHNlaWYgKCR0eXBlID09PSAnbnRsbScpIHsKICAgICAgICAgICAgJGh0dHBBdXRoID0gXGRlZmluZWQoJ0NVUkxBVVRIX05UTE0nKSA/IFxjb25zdGFudCgnQ1VSTEFVVEhfTlRMTScpIDogbnVsbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGh0dHBBdXRoICE9PSBudWxsCiAgICAgICAgICAgICYmIFxjb3VudCgkb3B0aW9uc1snY3VybCddKSA9PT0gMgogICAgICAgICAgICAmJiBpc3NldCgkb3B0aW9uc1snY3VybCddW1xDVVJMT1BUX0hUVFBBVVRIXSwgJG9wdGlvbnNbJ2N1cmwnXVtcQ1VSTE9QVF9VU0VSUFdEXSkKICAgICAgICAgICAgJiYgJG9wdGlvbnNbJ2N1cmwnXVtcQ1VSTE9QVF9IVFRQQVVUSF0gPT09ICRodHRwQXV0aDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUgYXMgcGFzc2VkIHZpYSBSZXF1ZXN0IHRyYW5zZmVyIG9wdGlvbnMuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXswOiBzdHJpbmcsIDE6IHN0cmluZ3xudWxsfQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemVUbHNGaWxlT3B0aW9uKHN0cmluZyAkb3B0aW9uLCAkdmFsdWUpOiBhcnJheQogICAgewogICAgICAgICRwYXNzcGhyYXNlID0gbnVsbDsKCiAgICAgICAgaWYgKFxpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgIGlmICghaXNzZXQoJHZhbHVlWzBdKSB8fCAhXGlzX3N0cmluZygkdmFsdWVbMF0pKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZignSW52YWxpZCAlcyByZXF1ZXN0IG9wdGlvbicsICRvcHRpb24pKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNzZXQoJHZhbHVlWzFdKSkgewogICAgICAgICAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCR2YWx1ZVsxXSkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZignSW52YWxpZCAlcyByZXF1ZXN0IG9wdGlvbicsICRvcHRpb24pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRwYXNzcGhyYXNlID0gJHZhbHVlWzFdOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR2YWx1ZSA9ICR2YWx1ZVswXTsKICAgICAgICB9CgogICAgICAgIGlmICghXGlzX3N0cmluZygkdmFsdWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKFxzcHJpbnRmKCdJbnZhbGlkICVzIHJlcXVlc3Qgb3B0aW9uJywgJG9wdGlvbikpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskdmFsdWUsICRwYXNzcGhyYXNlXTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBzZXRUbHNQYXNzcGhyYXNlKGFycmF5ICYkb3B0aW9ucywgP3N0cmluZyAkcGFzc3BocmFzZSwgc3RyaW5nICRvcHRpb24pOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCRwYXNzcGhyYXNlID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snc3NsJ11bJ3Bhc3NwaHJhc2UnXSkgJiYgJG9wdGlvbnNbJ3NzbCddWydwYXNzcGhyYXNlJ10gIT09ICRwYXNzcGhyYXNlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKFxzcHJpbnRmKCdDYW5ub3QgdXNlIGRpZmZlcmVudCBwYXNzcGhyYXNlcyBmb3IgY2VydCBhbmQgc3NsX2tleSB3aXRoIHRoZSBzdHJlYW0gaGFuZGxlcjsgJXMgY29uZmxpY3RzIHdpdGggYW4gZXhpc3RpbmcgVExTIHBhc3NwaHJhc2UuJywgJG9wdGlvbikpOwogICAgICAgIH0KCiAgICAgICAgJG9wdGlvbnNbJ3NzbCddWydwYXNzcGhyYXNlJ10gPSAkcGFzc3BocmFzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUgYXMgcGFzc2VkIHZpYSBSZXF1ZXN0IHRyYW5zZmVyIG9wdGlvbnMuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGFzc2VydFN0cmVhbVRsc1R5cGUoc3RyaW5nICRvcHRpb24sICR2YWx1ZSk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIVxpc19zdHJpbmcoJHZhbHVlKSB8fCAkdmFsdWUgPT09ICcnKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKFxzcHJpbnRmKCclcyBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycsICRvcHRpb24pKTsKICAgICAgICB9CgogICAgICAgIGlmIChcc3RydG91cHBlcigkdmFsdWUpICE9PSAnUEVNJykgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZignVGhlIHN0cmVhbSBoYW5kbGVyIG9ubHkgc3VwcG9ydHMgIlBFTSIgZm9yIHRoZSAlcyByZXF1ZXN0IG9wdGlvbi4nLCAkb3B0aW9uKSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZSBhcyBwYXNzZWQgdmlhIFJlcXVlc3QgdHJhbnNmZXIgb3B0aW9ucy4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGRfcHJveHkoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJiRvcHRpb25zLCAkdmFsdWUsIGFycmF5ICYkcGFyYW1zKTogdm9pZAogICAgewogICAgICAgICR1cmkgPSBudWxsOwoKICAgICAgICBpZiAoIVxpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgICR1cmkgPSAkdmFsdWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHNjaGVtZSA9ICRyZXF1ZXN0LT5nZXRVcmkoKS0+Z2V0U2NoZW1lKCk7CiAgICAgICAgICAgIGlmIChpc3NldCgkdmFsdWVbJHNjaGVtZV0pKSB7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgIWlzc2V0KCR2YWx1ZVsnbm8nXSkKICAgICAgICAgICAgICAgICAgICB8fCAhVXRpbHM6OmlzVXJpSW5Ob1Byb3h5KCRyZXF1ZXN0LT5nZXRVcmkoKSwgJHZhbHVlWydubyddKQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHVyaSA9ICR2YWx1ZVskc2NoZW1lXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCEkdXJpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRwYXJzZWQgPSAkdGhpcy0+cGFyc2VfcHJveHkoJHVyaSk7CiAgICAgICAgJG9wdGlvbnNbJ2h0dHAnXVsncHJveHknXSA9ICRwYXJzZWRbJ3Byb3h5J107CgogICAgICAgIGlmICgkcGFyc2VkWydhdXRoJ10pIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkb3B0aW9uc1snaHR0cCddWydoZWFkZXInXSkpIHsKICAgICAgICAgICAgICAgICRvcHRpb25zWydodHRwJ11bJ2hlYWRlciddID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG9wdGlvbnNbJ2h0dHAnXVsnaGVhZGVyJ10gLj0gIlxyXG5Qcm94eS1BdXRob3JpemF0aW9uOiB7JHBhcnNlZFsnYXV0aCddfSI7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzIHRoZSBnaXZlbiBwcm94eSBVUkwgdG8gbWFrZSBpdCBjb21wYXRpYmxlIHdpdGggdGhlIGZvcm1hdCBQSFAncyBzdHJlYW0gY29udGV4dCBleHBlY3RzLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHBhcnNlX3Byb3h5KHN0cmluZyAkdXJsKTogYXJyYXkKICAgIHsKICAgICAgICAkcGFyc2VkID0gXHBhcnNlX3VybCgkdXJsKTsKCiAgICAgICAgLy8gcGFyc2VfdXJsKCkgbWlzcmVhZHMgc2NoZW1lLWxlc3MgcHJveHkgYXV0aG9yaXRpZXMgbGlrZQogICAgICAgIC8vICJ1c2VyOnBhc3NAaG9zdCI7IHJlLXBhcnNlIG9ubHkgdGhvc2UgZm9ybXMgYXMgSFRUUC4KICAgICAgICAkc2NoZW1lTGVzc0F1dGhvcml0eSA9IFxzdHJwb3MoJHVybCwgJzovLycpID09PSBmYWxzZSAmJiBcc3RybmNtcCgkdXJsLCAnLy8nLCAyKSAhPT0gMDsKICAgICAgICBpZiAoJHNjaGVtZUxlc3NBdXRob3JpdHkpIHsKICAgICAgICAgICAgaWYgKFxpc19hcnJheSgkcGFyc2VkKSAmJiAhaXNzZXQoJHBhcnNlZFsnc2NoZW1lJ10pICYmIGlzc2V0KCRwYXJzZWRbJ2hvc3QnXSwgJHBhcnNlZFsncG9ydCddKSkgewogICAgICAgICAgICAgICAgJHBhcnNlZFsnc2NoZW1lJ10gPSAnaHR0cCc7CiAgICAgICAgICAgIH0gZWxzZWlmICgKICAgICAgICAgICAgICAgICghXGlzX2FycmF5KCRwYXJzZWQpIHx8ICFpc3NldCgkcGFyc2VkWydob3N0J10pKQogICAgICAgICAgICAgICAgJiYgKFxzdHJwb3MoJHVybCwgJ0AnKSAhPT0gZmFsc2UgfHwgXHN0cm5jbXAoJHVybCwgJ1snLCAxKSA9PT0gMCkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkcGFyc2VkID0gXHBhcnNlX3VybCgnaHR0cDovLycuJHVybCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChcaXNfYXJyYXkoJHBhcnNlZCkgJiYgaXNzZXQoJHBhcnNlZFsnc2NoZW1lJ10pICYmIFxzdHJjYXNlY21wKCRwYXJzZWRbJ3NjaGVtZSddLCAnaHR0cCcpID09PSAwKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkcGFyc2VkWydob3N0J10sICRwYXJzZWRbJ3BvcnQnXSkpIHsKICAgICAgICAgICAgICAgICR1c2VyID0gJHBhcnNlZFsndXNlciddID8/ICcnOwogICAgICAgICAgICAgICAgJHBhc3MgPSAkcGFyc2VkWydwYXNzJ10gPz8gJyc7CiAgICAgICAgICAgICAgICAkYXV0aCA9ICgkdXNlciAhPT0gJycgfHwgJHBhc3MgIT09ICcnKSA/ICdCYXNpYyAnLlxiYXNlNjRfZW5jb2RlKCJ7JHVzZXJ9OnskcGFzc30iKSA6IG51bGw7CgogICAgICAgICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICAncHJveHknID0+ICJ0Y3A6Ly97JHBhcnNlZFsnaG9zdCddfTp7JHBhcnNlZFsncG9ydCddfSIsCiAgICAgICAgICAgICAgICAgICAgJ2F1dGgnID0+ICRhdXRoLAogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gUmV0dXJuIHByb3h5IGFzLWlzLgogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICdwcm94eScgPT4gJHVybCwKICAgICAgICAgICAgJ2F1dGgnID0+IG51bGwsCiAgICAgICAgXTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUgYXMgcGFzc2VkIHZpYSBSZXF1ZXN0IHRyYW5zZmVyIG9wdGlvbnMuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkX3RpbWVvdXQoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJiRvcHRpb25zLCAkdmFsdWUsIGFycmF5ICYkcGFyYW1zKTogdm9pZAogICAgewogICAgICAgIGlmICgkdmFsdWUgPiAwKSB7CiAgICAgICAgICAgICRvcHRpb25zWydodHRwJ11bJ3RpbWVvdXQnXSA9ICR2YWx1ZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIGFzIHBhc3NlZCB2aWEgUmVxdWVzdCB0cmFuc2ZlciBvcHRpb25zLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZF9jcnlwdG9fbWV0aG9kKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICYkb3B0aW9ucywgJHZhbHVlLCBhcnJheSAmJHBhcmFtcyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICR2YWx1ZSA9PT0gXFNUUkVBTV9DUllQVE9fTUVUSE9EX1RMU3YxXzBfQ0xJRU5UCiAgICAgICAgICAgIHx8ICR2YWx1ZSA9PT0gXFNUUkVBTV9DUllQVE9fTUVUSE9EX1RMU3YxXzFfQ0xJRU5UCiAgICAgICAgICAgIHx8ICR2YWx1ZSA9PT0gXFNUUkVBTV9DUllQVE9fTUVUSE9EX1RMU3YxXzJfQ0xJRU5UCiAgICAgICAgICAgIHx8IChkZWZpbmVkKCdTVFJFQU1fQ1JZUFRPX01FVEhPRF9UTFN2MV8zX0NMSUVOVCcpICYmICR2YWx1ZSA9PT0gXFNUUkVBTV9DUllQVE9fTUVUSE9EX1RMU3YxXzNfQ0xJRU5UKQogICAgICAgICkgewogICAgICAgICAgICAkb3B0aW9uc1snaHR0cCddWydjcnlwdG9fbWV0aG9kJ10gPSAkdmFsdWU7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBjcnlwdG9fbWV0aG9kIHJlcXVlc3Qgb3B0aW9uOiB1bmtub3duIHZlcnNpb24gcHJvdmlkZWQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUgYXMgcGFzc2VkIHZpYSBSZXF1ZXN0IHRyYW5zZmVyIG9wdGlvbnMuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkX3ZlcmlmeShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAmJG9wdGlvbnMsICR2YWx1ZSwgYXJyYXkgJiRwYXJhbXMpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgJG9wdGlvbnNbJ3NzbCddWyd2ZXJpZnlfcGVlciddID0gZmFsc2U7CiAgICAgICAgICAgICRvcHRpb25zWydzc2wnXVsndmVyaWZ5X3BlZXJfbmFtZSddID0gZmFsc2U7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoXGlzX3N0cmluZygkdmFsdWUpKSB7CiAgICAgICAgICAgICRvcHRpb25zWydzc2wnXVsnY2FmaWxlJ10gPSAkdmFsdWU7CiAgICAgICAgICAgIGlmICghXGZpbGVfZXhpc3RzKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiU1NMIENBIGJ1bmRsZSBub3QgZm91bmQ6ICR2YWx1ZSIpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCR2YWx1ZSAhPT0gdHJ1ZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCB2ZXJpZnkgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICB9CgogICAgICAgICRvcHRpb25zWydzc2wnXVsndmVyaWZ5X3BlZXInXSA9IHRydWU7CiAgICAgICAgJG9wdGlvbnNbJ3NzbCddWyd2ZXJpZnlfcGVlcl9uYW1lJ10gPSB0cnVlOwogICAgICAgICRvcHRpb25zWydzc2wnXVsnYWxsb3dfc2VsZl9zaWduZWQnXSA9IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZSBhcyBwYXNzZWQgdmlhIFJlcXVlc3QgdHJhbnNmZXIgb3B0aW9ucy4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGRfY2VydChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAmJG9wdGlvbnMsICR2YWx1ZSwgYXJyYXkgJiRwYXJhbXMpOiB2b2lkCiAgICB7CiAgICAgICAgWyR2YWx1ZSwgJHBhc3NwaHJhc2VdID0gc2VsZjo6bm9ybWFsaXplVGxzRmlsZU9wdGlvbignY2VydCcsICR2YWx1ZSk7CgogICAgICAgIGlmICghXGZpbGVfZXhpc3RzKCR2YWx1ZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJTU0wgY2VydGlmaWNhdGUgbm90IGZvdW5kOiB7JHZhbHVlfSIpOwogICAgICAgIH0KCiAgICAgICAgc2VsZjo6c2V0VGxzUGFzc3BocmFzZSgkb3B0aW9ucywgJHBhc3NwaHJhc2UsICdjZXJ0Jyk7CiAgICAgICAgJG9wdGlvbnNbJ3NzbCddWydsb2NhbF9jZXJ0J10gPSAkdmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIGFzIHBhc3NlZCB2aWEgUmVxdWVzdCB0cmFuc2ZlciBvcHRpb25zLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZF9jZXJ0X3R5cGUoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJiRvcHRpb25zLCAkdmFsdWUsIGFycmF5ICYkcGFyYW1zKTogdm9pZAogICAgewogICAgICAgIHNlbGY6OmFzc2VydFN0cmVhbVRsc1R5cGUoJ2NlcnRfdHlwZScsICR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIGFzIHBhc3NlZCB2aWEgUmVxdWVzdCB0cmFuc2ZlciBvcHRpb25zLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZF9zc2xfa2V5KFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICYkb3B0aW9ucywgJHZhbHVlLCBhcnJheSAmJHBhcmFtcyk6IHZvaWQKICAgIHsKICAgICAgICBbJHZhbHVlLCAkcGFzc3BocmFzZV0gPSBzZWxmOjpub3JtYWxpemVUbHNGaWxlT3B0aW9uKCdzc2xfa2V5JywgJHZhbHVlKTsKCiAgICAgICAgaWYgKCFcZmlsZV9leGlzdHMoJHZhbHVlKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIlNTTCBwcml2YXRlIGtleSBub3QgZm91bmQ6IHskdmFsdWV9Iik7CiAgICAgICAgfQoKICAgICAgICBzZWxmOjpzZXRUbHNQYXNzcGhyYXNlKCRvcHRpb25zLCAkcGFzc3BocmFzZSwgJ3NzbF9rZXknKTsKICAgICAgICAkb3B0aW9uc1snc3NsJ11bJ2xvY2FsX3BrJ10gPSAkdmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIGFzIHBhc3NlZCB2aWEgUmVxdWVzdCB0cmFuc2ZlciBvcHRpb25zLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZF9zc2xfa2V5X3R5cGUoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJiRvcHRpb25zLCAkdmFsdWUsIGFycmF5ICYkcGFyYW1zKTogdm9pZAogICAgewogICAgICAgIHNlbGY6OmFzc2VydFN0cmVhbVRsc1R5cGUoJ3NzbF9rZXlfdHlwZScsICR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIGFzIHBhc3NlZCB2aWEgUmVxdWVzdCB0cmFuc2ZlciBvcHRpb25zLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZF9wcm9ncmVzcyhSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAmJG9wdGlvbnMsICR2YWx1ZSwgYXJyYXkgJiRwYXJhbXMpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFcaXNfY2FsbGFibGUoJHZhbHVlKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigncHJvZ3Jlc3MgY2xpZW50IG9wdGlvbiBtdXN0IGJlIGNhbGxhYmxlJyk7CiAgICAgICAgfQoKICAgICAgICBzZWxmOjphZGROb3RpZmljYXRpb24oCiAgICAgICAgICAgICRwYXJhbXMsCiAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoJGNvZGUsICRhLCAkYiwgJGMsICR0cmFuc2ZlcnJlZCwgJHRvdGFsKSB1c2UgKCR2YWx1ZSkgewogICAgICAgICAgICAgICAgaWYgKCRjb2RlID09IFxTVFJFQU1fTk9USUZZX1BST0dSRVNTKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHVwbG9hZCBwcm9ncmVzcyBjYW5ub3QgYmUgZGV0ZXJtaW5lZC4gVXNlIDAgZm9yIGNVUkwgY29tcGF0aWJpbGl0eToKICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2N1cmwuc2UvbGliY3VybC9jL0NVUkxPUFRfUFJPR1JFU1NGVU5DVElPTi5odG1sCiAgICAgICAgICAgICAgICAgICAgJHZhbHVlKCR0b3RhbCwgJHRyYW5zZmVycmVkLCAwLCAwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIGFzIHBhc3NlZCB2aWEgUmVxdWVzdCB0cmFuc2ZlciBvcHRpb25zLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZF9kZWJ1ZyhSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAmJG9wdGlvbnMsICR2YWx1ZSwgYXJyYXkgJiRwYXJhbXMpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljICRtYXAgPSBbCiAgICAgICAgICAgIFxTVFJFQU1fTk9USUZZX0NPTk5FQ1QgPT4gJ0NPTk5FQ1QnLAogICAgICAgICAgICBcU1RSRUFNX05PVElGWV9BVVRIX1JFUVVJUkVEID0+ICdBVVRIX1JFUVVJUkVEJywKICAgICAgICAgICAgXFNUUkVBTV9OT1RJRllfQVVUSF9SRVNVTFQgPT4gJ0FVVEhfUkVTVUxUJywKICAgICAgICAgICAgXFNUUkVBTV9OT1RJRllfTUlNRV9UWVBFX0lTID0+ICdNSU1FX1RZUEVfSVMnLAogICAgICAgICAgICBcU1RSRUFNX05PVElGWV9GSUxFX1NJWkVfSVMgPT4gJ0ZJTEVfU0laRV9JUycsCiAgICAgICAgICAgIFxTVFJFQU1fTk9USUZZX1JFRElSRUNURUQgPT4gJ1JFRElSRUNURUQnLAogICAgICAgICAgICBcU1RSRUFNX05PVElGWV9QUk9HUkVTUyA9PiAnUFJPR1JFU1MnLAogICAgICAgICAgICBcU1RSRUFNX05PVElGWV9GQUlMVVJFID0+ICdGQUlMVVJFJywKICAgICAgICAgICAgXFNUUkVBTV9OT1RJRllfQ09NUExFVEVEID0+ICdDT01QTEVURUQnLAogICAgICAgICAgICBcU1RSRUFNX05PVElGWV9SRVNPTFZFID0+ICdSRVNPTFZFJywKICAgICAgICBdOwogICAgICAgIHN0YXRpYyAkYXJncyA9IFsnc2V2ZXJpdHknLCAnbWVzc2FnZScsICdtZXNzYWdlX2NvZGUnLCAnYnl0ZXNfdHJhbnNmZXJyZWQnLCAnYnl0ZXNfbWF4J107CgogICAgICAgICR2YWx1ZSA9IFV0aWxzOjpkZWJ1Z1Jlc291cmNlKCR2YWx1ZSk7CiAgICAgICAgJGlkZW50ID0gJHJlcXVlc3QtPmdldE1ldGhvZCgpLicgJy4kcmVxdWVzdC0+Z2V0VXJpKCktPndpdGhGcmFnbWVudCgnJyk7CiAgICAgICAgc2VsZjo6YWRkTm90aWZpY2F0aW9uKAogICAgICAgICAgICAkcGFyYW1zLAogICAgICAgICAgICBzdGF0aWMgZnVuY3Rpb24gKGludCAkY29kZSwgLi4uJHBhc3NlZCkgdXNlICgkaWRlbnQsICR2YWx1ZSwgJG1hcCwgJGFyZ3MpOiB2b2lkIHsKICAgICAgICAgICAgICAgIFxmcHJpbnRmKCR2YWx1ZSwgJzwlcz4gWyVzXSAnLCAkaWRlbnQsICRtYXBbJGNvZGVdKTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKFxhcnJheV9maWx0ZXIoJHBhc3NlZCkgYXMgJGkgPT4gJHYpIHsKICAgICAgICAgICAgICAgICAgICBcZndyaXRlKCR2YWx1ZSwgJGFyZ3NbJGldLic6ICInLiR2LiciICcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXGZ3cml0ZSgkdmFsdWUsICJcbiIpOwogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBhZGROb3RpZmljYXRpb24oYXJyYXkgJiRwYXJhbXMsIGNhbGxhYmxlICRub3RpZnkpOiB2b2lkCiAgICB7CiAgICAgICAgLy8gV3JhcCB0aGUgZXhpc3RpbmcgZnVuY3Rpb24gaWYgbmVlZGVkLgogICAgICAgIGlmICghaXNzZXQoJHBhcmFtc1snbm90aWZpY2F0aW9uJ10pKSB7CiAgICAgICAgICAgICRwYXJhbXNbJ25vdGlmaWNhdGlvbiddID0gJG5vdGlmeTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcGFyYW1zWydub3RpZmljYXRpb24nXSA9IHNlbGY6OmNhbGxBcnJheShbCiAgICAgICAgICAgICAgICAkcGFyYW1zWydub3RpZmljYXRpb24nXSwKICAgICAgICAgICAgICAgICRub3RpZnksCiAgICAgICAgICAgIF0pOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjYWxsQXJyYXkoYXJyYXkgJGZ1bmN0aW9ucyk6IGNhbGxhYmxlCiAgICB7CiAgICAgICAgcmV0dXJuIHN0YXRpYyBmdW5jdGlvbiAoLi4uJGFyZ3MpIHVzZSAoJGZ1bmN0aW9ucykgewogICAgICAgICAgICBmb3JlYWNoICgkZnVuY3Rpb25zIGFzICRmbikgewogICAgICAgICAgICAgICAgJGZuKC4uLiRhcmdzKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/HandlerStack.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKCi8qKgogKiBDcmVhdGVzIGEgY29tcG9zZWQgR3V6emxlIGhhbmRsZXIgZnVuY3Rpb24gYnkgc3RhY2tpbmcgbWlkZGxld2FyZXMgb24gdG9wIG9mCiAqIGFuIEhUVFAgaGFuZGxlciBmdW5jdGlvbi4KICoKICogQGZpbmFsCiAqLwpjbGFzcyBIYW5kbGVyU3RhY2sKewogICAgLyoqCiAgICAgKiBAdmFyIChjYWxsYWJsZShSZXF1ZXN0SW50ZXJmYWNlLCBhcnJheSk6IFByb21pc2VJbnRlcmZhY2UpfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkaGFuZGxlcjsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXl7KGNhbGxhYmxlKGNhbGxhYmxlKFJlcXVlc3RJbnRlcmZhY2UsIGFycmF5KTogUHJvbWlzZUludGVyZmFjZSk6IGNhbGxhYmxlKSwgKHN0cmluZ3xudWxsKX1bXQogICAgICovCiAgICBwcml2YXRlICRzdGFjayA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciAoY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlKXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGNhY2hlZDsKCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBkZWZhdWx0IGhhbmRsZXIgc3RhY2sgdGhhdCBjYW4gYmUgdXNlZCBieSBjbGllbnRzLgogICAgICoKICAgICAqIFRoZSByZXR1cm5lZCBoYW5kbGVyIHdpbGwgd3JhcCB0aGUgcHJvdmlkZWQgaGFuZGxlciBvciB1c2UgdGhlIG1vc3QKICAgICAqIGFwcHJvcHJpYXRlIGRlZmF1bHQgaGFuZGxlciBmb3IgeW91ciBzeXN0ZW0uIFRoZSByZXR1cm5lZCBIYW5kbGVyU3RhY2sgaGFzCiAgICAgKiBzdXBwb3J0IGZvciBjb29raWVzLCByZWRpcmVjdHMsIEhUVFAgZXJyb3IgZXhjZXB0aW9ucywgYW5kIHByZXBhcmluZyBhIGJvZHkKICAgICAqIGJlZm9yZSBzZW5kaW5nLgogICAgICoKICAgICAqIFRoZSByZXR1cm5lZCBoYW5kbGVyIHN0YWNrIGNhbiBiZSBwYXNzZWQgdG8gYSBjbGllbnQgaW4gdGhlICJoYW5kbGVyIgogICAgICogb3B0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSAoY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlKXxudWxsICRoYW5kbGVyIEhUVFAgaGFuZGxlciBmdW5jdGlvbiB0byB1c2Ugd2l0aCB0aGUgc3RhY2suIElmIG5vCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyIGlzIHByb3ZpZGVkLCB0aGUgYmVzdCBoYW5kbGVyIGZvciB5b3VyCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gd2lsbCBiZSB1dGlsaXplZC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGUoP2NhbGxhYmxlICRoYW5kbGVyID0gbnVsbCk6IHNlbGYKICAgIHsKICAgICAgICAkc3RhY2sgPSBuZXcgc2VsZigkaGFuZGxlciA/OiBVdGlsczo6Y2hvb3NlSGFuZGxlcigpKTsKICAgICAgICAkc3RhY2stPnB1c2goTWlkZGxld2FyZTo6aHR0cEVycm9ycygpLCAnaHR0cF9lcnJvcnMnKTsKICAgICAgICAkc3RhY2stPnB1c2goTWlkZGxld2FyZTo6cmVkaXJlY3QoKSwgJ2FsbG93X3JlZGlyZWN0cycpOwogICAgICAgICRzdGFjay0+cHVzaChNaWRkbGV3YXJlOjpjb29raWVzKCksICdjb29raWVzJyk7CiAgICAgICAgJHN0YWNrLT5wdXNoKE1pZGRsZXdhcmU6OnByZXBhcmVCb2R5KCksICdwcmVwYXJlX2JvZHknKTsKCiAgICAgICAgcmV0dXJuICRzdGFjazsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAoY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlKXxudWxsICRoYW5kbGVyIFVuZGVybHlpbmcgSFRUUCBoYW5kbGVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoP2NhbGxhYmxlICRoYW5kbGVyID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+aGFuZGxlciA9ICRoYW5kbGVyOwogICAgfQoKICAgIC8qKgogICAgICogSW52b2tlcyB0aGUgaGFuZGxlciBzdGFjayBhcyBhIGNvbXBvc2VkIGhhbmRsZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIFJlc3BvbnNlSW50ZXJmYWNlfFByb21pc2VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9faW52b2tlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKQogICAgewogICAgICAgICRoYW5kbGVyID0gJHRoaXMtPnJlc29sdmUoKTsKCiAgICAgICAgcmV0dXJuICRoYW5kbGVyKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBEdW1wcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3RhY2suCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgICRkZXB0aCA9IDA7CiAgICAgICAgJHN0YWNrID0gW107CgogICAgICAgIGlmICgkdGhpcy0+aGFuZGxlciAhPT0gbnVsbCkgewogICAgICAgICAgICAkc3RhY2tbXSA9ICcwKSBIYW5kbGVyOiAnLiR0aGlzLT5kZWJ1Z0NhbGxhYmxlKCR0aGlzLT5oYW5kbGVyKTsKICAgICAgICB9CgogICAgICAgICRyZXN1bHQgPSAnJzsKICAgICAgICBmb3JlYWNoIChcYXJyYXlfcmV2ZXJzZSgkdGhpcy0+c3RhY2spIGFzICR0dXBsZSkgewogICAgICAgICAgICArKyRkZXB0aDsKICAgICAgICAgICAgJHN0ciA9ICJ7JGRlcHRofSkgTmFtZTogJ3skdHVwbGVbMV19JywgIjsKICAgICAgICAgICAgJHN0ciAuPSAnRnVuY3Rpb246ICcuJHRoaXMtPmRlYnVnQ2FsbGFibGUoJHR1cGxlWzBdKTsKICAgICAgICAgICAgJHJlc3VsdCA9ICI+IHskc3RyfVxueyRyZXN1bHR9IjsKICAgICAgICAgICAgJHN0YWNrW10gPSAkc3RyOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoXGFycmF5X2tleXMoJHN0YWNrKSBhcyAkaykgewogICAgICAgICAgICAkcmVzdWx0IC49ICI8IHskc3RhY2tbJGtdfVxuIjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBIVFRQIGhhbmRsZXIgdGhhdCBhY3R1YWxseSByZXR1cm5zIGEgcHJvbWlzZS4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlICRoYW5kbGVyIEFjY2VwdHMgYSByZXF1ZXN0IGFuZCBhcnJheSBvZiBvcHRpb25zIGFuZAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5zIGEgUHJvbWlzZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldEhhbmRsZXIoY2FsbGFibGUgJGhhbmRsZXIpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmhhbmRsZXIgPSAkaGFuZGxlcjsKICAgICAgICAkdGhpcy0+Y2FjaGVkID0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgYnVpbGRlciBoYXMgYSBoYW5kbGVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzSGFuZGxlcigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oYW5kbGVyICE9PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogVW5zaGlmdCBhIG1pZGRsZXdhcmUgdG8gdGhlIGJvdHRvbSBvZiB0aGUgc3RhY2suCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlKGNhbGxhYmxlKTogY2FsbGFibGUgJG1pZGRsZXdhcmUgTWlkZGxld2FyZSBmdW5jdGlvbgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgICAgICAgTmFtZSB0byByZWdpc3RlciBmb3IgdGhpcyBtaWRkbGV3YXJlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5zaGlmdChjYWxsYWJsZSAkbWlkZGxld2FyZSwgP3N0cmluZyAkbmFtZSA9IG51bGwpOiB2b2lkCiAgICB7CiAgICAgICAgXGFycmF5X3Vuc2hpZnQoJHRoaXMtPnN0YWNrLCBbJG1pZGRsZXdhcmUsICRuYW1lXSk7CiAgICAgICAgJHRoaXMtPmNhY2hlZCA9IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBQdXNoIGEgbWlkZGxld2FyZSB0byB0aGUgdG9wIG9mIHRoZSBzdGFjay4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoY2FsbGFibGUpOiBjYWxsYWJsZSAkbWlkZGxld2FyZSBNaWRkbGV3YXJlIGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSAgICAgICBOYW1lIHRvIHJlZ2lzdGVyIGZvciB0aGlzIG1pZGRsZXdhcmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwdXNoKGNhbGxhYmxlICRtaWRkbGV3YXJlLCBzdHJpbmcgJG5hbWUgPSAnJyk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+c3RhY2tbXSA9IFskbWlkZGxld2FyZSwgJG5hbWVdOwogICAgICAgICR0aGlzLT5jYWNoZWQgPSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGEgbWlkZGxld2FyZSBiZWZvcmUgYW5vdGhlciBtaWRkbGV3YXJlIGJ5IG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgJGZpbmROYW1lICAgTWlkZGxld2FyZSB0byBmaW5kCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoY2FsbGFibGUpOiBjYWxsYWJsZSAkbWlkZGxld2FyZSBNaWRkbGV3YXJlIGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAkd2l0aE5hbWUgICBOYW1lIHRvIHJlZ2lzdGVyIGZvciB0aGlzIG1pZGRsZXdhcmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBiZWZvcmUoc3RyaW5nICRmaW5kTmFtZSwgY2FsbGFibGUgJG1pZGRsZXdhcmUsIHN0cmluZyAkd2l0aE5hbWUgPSAnJyk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+c3BsaWNlKCRmaW5kTmFtZSwgJHdpdGhOYW1lLCAkbWlkZGxld2FyZSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgYSBtaWRkbGV3YXJlIGFmdGVyIGFub3RoZXIgbWlkZGxld2FyZSBieSBuYW1lLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICRmaW5kTmFtZSAgIE1pZGRsZXdhcmUgdG8gZmluZAogICAgICogQHBhcmFtIGNhbGxhYmxlKGNhbGxhYmxlKTogY2FsbGFibGUgJG1pZGRsZXdhcmUgTWlkZGxld2FyZSBmdW5jdGlvbgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgJHdpdGhOYW1lICAgTmFtZSB0byByZWdpc3RlciBmb3IgdGhpcyBtaWRkbGV3YXJlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWZ0ZXIoc3RyaW5nICRmaW5kTmFtZSwgY2FsbGFibGUgJG1pZGRsZXdhcmUsIHN0cmluZyAkd2l0aE5hbWUgPSAnJyk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+c3BsaWNlKCRmaW5kTmFtZSwgJHdpdGhOYW1lLCAkbWlkZGxld2FyZSwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGEgbWlkZGxld2FyZSBieSBpbnN0YW5jZSBvciBuYW1lIGZyb20gdGhlIHN0YWNrLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZXxzdHJpbmcgJHJlbW92ZSBNaWRkbGV3YXJlIHRvIHJlbW92ZSBieSBpbnN0YW5jZSBvciBuYW1lLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlKCRyZW1vdmUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJHJlbW92ZSkgJiYgIWlzX2NhbGxhYmxlKCRyZW1vdmUpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKCdndXp6bGVodHRwL2d1enpsZScsICc3LjQnLCAnTm90IHBhc3NpbmcgYSBjYWxsYWJsZSBvciBzdHJpbmcgdG8gJXM6OiVzKCkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBjYXVzZSBhbiBlcnJvciBpbiA4LjAuJywgX19DTEFTU19fLCBfX0ZVTkNUSU9OX18pOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmNhY2hlZCA9IG51bGw7CgogICAgICAgIGlmIChcaXNfc3RyaW5nKCRyZW1vdmUpKSB7CiAgICAgICAgICAgICRjb3VudCA9IFxjb3VudCgkdGhpcy0+c3RhY2spOwogICAgICAgICAgICAkdGhpcy0+c3RhY2sgPSBcYXJyYXlfdmFsdWVzKFxhcnJheV9maWx0ZXIoCiAgICAgICAgICAgICAgICAkdGhpcy0+c3RhY2ssCiAgICAgICAgICAgICAgICBzdGF0aWMgZnVuY3Rpb24gKCR0dXBsZSkgdXNlICgkcmVtb3ZlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0dXBsZVsxXSAhPT0gJHJlbW92ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKSk7CgogICAgICAgICAgICBpZiAoJGNvdW50ICE9PSBcY291bnQoJHRoaXMtPnN0YWNrKSB8fCAhXGlzX2NhbGxhYmxlKCRyZW1vdmUpKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5zdGFjayA9IFxhcnJheV92YWx1ZXMoXGFycmF5X2ZpbHRlcigKICAgICAgICAgICAgJHRoaXMtPnN0YWNrLAogICAgICAgICAgICBzdGF0aWMgZnVuY3Rpb24gKCR0dXBsZSkgdXNlICgkcmVtb3ZlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHR1cGxlWzBdICE9PSAkcmVtb3ZlOwogICAgICAgICAgICB9CiAgICAgICAgKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21wb3NlIHRoZSBtaWRkbGV3YXJlIGFuZCBoYW5kbGVyIGludG8gYSBzaW5nbGUgY2FsbGFibGUgZnVuY3Rpb24uCiAgICAgKgogICAgICogQHJldHVybiBjYWxsYWJsZShSZXF1ZXN0SW50ZXJmYWNlLCBhcnJheSk6IFByb21pc2VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlc29sdmUoKTogY2FsbGFibGUKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmNhY2hlZCA9PT0gbnVsbCkgewogICAgICAgICAgICBpZiAoKCRwcmV2ID0gJHRoaXMtPmhhbmRsZXIpID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdObyBoYW5kbGVyIGhhcyBiZWVuIHNwZWNpZmllZCcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3JlYWNoIChcYXJyYXlfcmV2ZXJzZSgkdGhpcy0+c3RhY2spIGFzICRmbikgewogICAgICAgICAgICAgICAgLyoqIEB2YXIgY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlICRwcmV2ICovCiAgICAgICAgICAgICAgICAkcHJldiA9ICRmblswXSgkcHJldik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5jYWNoZWQgPSAkcHJldjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+Y2FjaGVkOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZmluZEJ5TmFtZShzdHJpbmcgJG5hbWUpOiBpbnQKICAgIHsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+c3RhY2sgYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgaWYgKCR2WzFdID09PSAkbmFtZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiTWlkZGxld2FyZSBub3QgZm91bmQ6ICRuYW1lIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBTcGxpY2VzIGEgZnVuY3Rpb24gaW50byB0aGUgbWlkZGxld2FyZSBsaXN0IGF0IGEgc3BlY2lmaWMgcG9zaXRpb24uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gc3BsaWNlKHN0cmluZyAkZmluZE5hbWUsIHN0cmluZyAkd2l0aE5hbWUsIGNhbGxhYmxlICRtaWRkbGV3YXJlLCBib29sICRiZWZvcmUpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmNhY2hlZCA9IG51bGw7CiAgICAgICAgJGlkeCA9ICR0aGlzLT5maW5kQnlOYW1lKCRmaW5kTmFtZSk7CiAgICAgICAgJHR1cGxlID0gWyRtaWRkbGV3YXJlLCAkd2l0aE5hbWVdOwoKICAgICAgICBpZiAoJGJlZm9yZSkgewogICAgICAgICAgICBpZiAoJGlkeCA9PT0gMCkgewogICAgICAgICAgICAgICAgXGFycmF5X3Vuc2hpZnQoJHRoaXMtPnN0YWNrLCAkdHVwbGUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHJlcGxhY2VtZW50ID0gWyR0dXBsZSwgJHRoaXMtPnN0YWNrWyRpZHhdXTsKICAgICAgICAgICAgICAgIFxhcnJheV9zcGxpY2UoJHRoaXMtPnN0YWNrLCAkaWR4LCAxLCAkcmVwbGFjZW1lbnQpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCRpZHggPT09IFxjb3VudCgkdGhpcy0+c3RhY2spIC0gMSkgewogICAgICAgICAgICAkdGhpcy0+c3RhY2tbXSA9ICR0dXBsZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcmVwbGFjZW1lbnQgPSBbJHRoaXMtPnN0YWNrWyRpZHhdLCAkdHVwbGVdOwogICAgICAgICAgICBcYXJyYXlfc3BsaWNlKCR0aGlzLT5zdGFjaywgJGlkeCwgMSwgJHJlcGxhY2VtZW50KTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBQcm92aWRlcyBhIGRlYnVnIHN0cmluZyBmb3IgYSBnaXZlbiBjYWxsYWJsZS4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGV8c3RyaW5nICRmbiBGdW5jdGlvbiB0byB3cml0ZSBhcyBhIHN0cmluZy4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBkZWJ1Z0NhbGxhYmxlKCRmbik6IHN0cmluZwogICAgewogICAgICAgIGlmIChcaXNfc3RyaW5nKCRmbikpIHsKICAgICAgICAgICAgcmV0dXJuICJjYWxsYWJsZSh7JGZufSkiOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxpc19hcnJheSgkZm4pKSB7CiAgICAgICAgICAgIHJldHVybiBcaXNfc3RyaW5nKCRmblswXSkKICAgICAgICAgICAgICAgID8gImNhbGxhYmxlKHskZm5bMF19Ojp7JGZuWzFdfSkiCiAgICAgICAgICAgICAgICA6ICJjYWxsYWJsZShbJyIuXGdldF9jbGFzcygkZm5bMF0pLiInLCAneyRmblsxXX0nXSkiOwogICAgICAgIH0KCiAgICAgICAgLyoqIEB2YXIgb2JqZWN0ICRmbiAqLwogICAgICAgIHJldHVybiAnY2FsbGFibGUoJy5cc3BsX29iamVjdF9oYXNoKCRmbikuJyknOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/MessageFormatter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcTWVzc2FnZUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2U7CgovKioKICogRm9ybWF0cyBsb2cgbWVzc2FnZXMgdXNpbmcgdmFyaWFibGUgc3Vic3RpdHV0aW9ucyBmb3IgcmVxdWVzdHMsIHJlc3BvbnNlcywKICogYW5kIG90aGVyIHRyYW5zYWN0aW9uYWwgZGF0YS4KICoKICogVGhlIGZvbGxvd2luZyB2YXJpYWJsZSBzdWJzdGl0dXRpb25zIGFyZSBzdXBwb3J0ZWQ6CiAqCiAqIC0ge3JlcXVlc3R9OiAgICAgICAgRnVsbCBIVFRQIHJlcXVlc3QgbWVzc2FnZQogKiAtIHtyZXNwb25zZX06ICAgICAgIEZ1bGwgSFRUUCByZXNwb25zZSBtZXNzYWdlCiAqIC0ge3RzfTogICAgICAgICAgICAgSVNPIDg2MDEgZGF0ZSBpbiBHTVQKICogLSB7ZGF0ZV9pc29fODYwMX0gICBJU08gODYwMSBkYXRlIGluIEdNVAogKiAtIHtkYXRlX2NvbW1vbl9sb2d9IEFwYWNoZSBjb21tb24gbG9nIGRhdGUgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgdGltZXpvbmUuCiAqIC0ge2hvc3R9OiAgICAgICAgICAgSG9zdCBvZiB0aGUgcmVxdWVzdAogKiAtIHttZXRob2R9OiAgICAgICAgIE1ldGhvZCBvZiB0aGUgcmVxdWVzdAogKiAtIHt1cml9OiAgICAgICAgICAgIFVSSSBvZiB0aGUgcmVxdWVzdAogKiAtIHt2ZXJzaW9ufTogICAgICAgIFByb3RvY29sIHZlcnNpb24KICogLSB7dGFyZ2V0fTogICAgICAgICBSZXF1ZXN0IHRhcmdldCBvZiB0aGUgcmVxdWVzdCAocGF0aCArIHF1ZXJ5ICsgZnJhZ21lbnQpCiAqIC0ge2hvc3RuYW1lfTogICAgICAgSG9zdG5hbWUgb2YgdGhlIG1hY2hpbmUgdGhhdCBzZW50IHRoZSByZXF1ZXN0CiAqIC0ge2NvZGV9OiAgICAgICAgICAgU3RhdHVzIGNvZGUgb2YgdGhlIHJlc3BvbnNlIChpZiBhdmFpbGFibGUpCiAqIC0ge3BocmFzZX06ICAgICAgICAgUmVhc29uIHBocmFzZSBvZiB0aGUgcmVzcG9uc2UgIChpZiBhdmFpbGFibGUpCiAqIC0ge2Vycm9yfTogICAgICAgICAgQW55IGVycm9yIG1lc3NhZ2VzIChpZiBhdmFpbGFibGUpCiAqIC0ge3JlcV9oZWFkZXJfKn06ICAgUmVwbGFjZSBgKmAgd2l0aCB0aGUgbG93ZXJjYXNlZCBuYW1lIG9mIGEgcmVxdWVzdCBoZWFkZXIgdG8gYWRkIHRvIHRoZSBtZXNzYWdlCiAqIC0ge3Jlc19oZWFkZXJfKn06ICAgUmVwbGFjZSBgKmAgd2l0aCB0aGUgbG93ZXJjYXNlZCBuYW1lIG9mIGEgcmVzcG9uc2UgaGVhZGVyIHRvIGFkZCB0byB0aGUgbWVzc2FnZQogKiAtIHtyZXFfaGVhZGVyc306ICAgIFJlcXVlc3QgaGVhZGVycwogKiAtIHtyZXNfaGVhZGVyc306ICAgIFJlc3BvbnNlIGhlYWRlcnMKICogLSB7cmVxX2JvZHl9OiAgICAgICBSZXF1ZXN0IGJvZHkKICogLSB7cmVzX2JvZHl9OiAgICAgICBSZXNwb25zZSBib2R5CiAqCiAqIEBmaW5hbAogKi8KY2xhc3MgTWVzc2FnZUZvcm1hdHRlciBpbXBsZW1lbnRzIE1lc3NhZ2VGb3JtYXR0ZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBBcGFjaGUgQ29tbW9uIExvZyBGb3JtYXQuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8yLjQvbG9ncy5odG1sI2NvbW1vbgogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBDTEYgPSAne2hvc3RuYW1lfSB7cmVxX2hlYWRlcl9Vc2VyLUFnZW50fSAtIFt7ZGF0ZV9jb21tb25fbG9nfV0gInttZXRob2R9IHt0YXJnZXR9IEhUVFAve3ZlcnNpb259IiB7Y29kZX0ge3Jlc19oZWFkZXJfQ29udGVudC1MZW5ndGh9JzsKICAgIHB1YmxpYyBjb25zdCBERUJVRyA9ICI+Pj4+Pj4+Plxue3JlcXVlc3R9XG48PDw8PDw8PFxue3Jlc3BvbnNlfVxuLS0tLS0tLS1cbntlcnJvcn0iOwogICAgcHVibGljIGNvbnN0IFNIT1JUID0gJ1t7dHN9XSAie21ldGhvZH0ge3RhcmdldH0gSFRUUC97dmVyc2lvbn0iIHtjb2RlfSc7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZyBUZW1wbGF0ZSB1c2VkIHRvIGZvcm1hdCBsb2cgbWVzc2FnZXMKICAgICAqLwogICAgcHJpdmF0ZSAkdGVtcGxhdGU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0ZW1wbGF0ZSBMb2cgbWVzc2FnZSB0ZW1wbGF0ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoP3N0cmluZyAkdGVtcGxhdGUgPSBzZWxmOjpDTEYpCiAgICB7CiAgICAgICAgJHRoaXMtPnRlbXBsYXRlID0gJHRlbXBsYXRlID86IHNlbGY6OkNMRjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBmb3JtYXR0ZWQgbWVzc2FnZSBzdHJpbmcuCiAgICAgKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgICAgICAgJHJlcXVlc3QgIFJlcXVlc3QgdGhhdCB3YXMgc2VudAogICAgICogQHBhcmFtIFJlc3BvbnNlSW50ZXJmYWNlfG51bGwgJHJlc3BvbnNlIFJlc3BvbnNlIHRoYXQgd2FzIHJlY2VpdmVkCiAgICAgKiBAcGFyYW0gXFRocm93YWJsZXxudWxsICAgICAgICAkZXJyb3IgICAgRXhjZXB0aW9uIHRoYXQgd2FzIHJlY2VpdmVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmb3JtYXQoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgP1Jlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSA9IG51bGwsID9cVGhyb3dhYmxlICRlcnJvciA9IG51bGwpOiBzdHJpbmcKICAgIHsKICAgICAgICAkY2FjaGUgPSBbXTsKCiAgICAgICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICAgICAgcmV0dXJuIFxwcmVnX3JlcGxhY2VfY2FsbGJhY2soCiAgICAgICAgICAgICcve1xzKihbQS1aYS16X1wtXC4wLTldKylccyp9LycsCiAgICAgICAgICAgIGZ1bmN0aW9uIChhcnJheSAkbWF0Y2hlcykgdXNlICgkcmVxdWVzdCwgJHJlc3BvbnNlLCAkZXJyb3IsICYkY2FjaGUpIHsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY2FjaGVbJG1hdGNoZXNbMV1dKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkY2FjaGVbJG1hdGNoZXNbMV1dOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRyZXN1bHQgPSAnJzsKICAgICAgICAgICAgICAgIHN3aXRjaCAoJG1hdGNoZXNbMV0pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9IFBzcjdcTWVzc2FnZTo6dG9TdHJpbmcoJHJlcXVlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXNwb25zZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzcG9uc2UgPyBQc3I3XE1lc3NhZ2U6OnRvU3RyaW5nKCRyZXNwb25zZSkgOiAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVxX2hlYWRlcnMnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gXHRyaW0oJHJlcXVlc3QtPmdldE1ldGhvZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLicgJy4kcmVxdWVzdC0+Z2V0UmVxdWVzdFRhcmdldCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLicgSFRUUC8nLiRyZXF1ZXN0LT5nZXRQcm90b2NvbFZlcnNpb24oKS4iXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4kdGhpcy0+aGVhZGVycygkcmVxdWVzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc19oZWFkZXJzJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXNwb25zZSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSFRUUC8lcyAlZCAlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3BvbnNlLT5nZXRQcm90b2NvbFZlcnNpb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzcG9uc2UtPmdldFN0YXR1c0NvZGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzcG9uc2UtPmdldFJlYXNvblBocmFzZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLiJcclxuIi4kdGhpcy0+aGVhZGVycygkcmVzcG9uc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdOVUxMJzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVxX2JvZHknOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlcXVlc3QtPmdldEJvZHkoKS0+X190b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXNfYm9keSc6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHJlc3BvbnNlIGluc3RhbmNlb2YgUmVzcG9uc2VJbnRlcmZhY2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAnTlVMTCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJGJvZHkgPSAkcmVzcG9uc2UtPmdldEJvZHkoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJGJvZHktPmlzU2Vla2FibGUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICdSRVNQT05TRV9OT1RfTE9HR0VBQkxFJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlc3BvbnNlLT5nZXRCb2R5KCktPl9fdG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAndHMnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RhdGVfaXNvXzg2MDEnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gXGdtZGF0ZSgnYycpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXRlX2NvbW1vbl9sb2cnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gXGRhdGUoJ2QvTS9ZOkg6aTpzIE8nKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWV0aG9kJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXF1ZXN0LT5nZXRNZXRob2QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAndmVyc2lvbic6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVxdWVzdC0+Z2V0UHJvdG9jb2xWZXJzaW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3VyaSc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAndXJsJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXF1ZXN0LT5nZXRVcmkoKS0+X190b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICd0YXJnZXQnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlcXVlc3QtPmdldFJlcXVlc3RUYXJnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVxX3ZlcnNpb24nOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlcXVlc3QtPmdldFByb3RvY29sVmVyc2lvbigpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXNfdmVyc2lvbic6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzcG9uc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJHJlc3BvbnNlLT5nZXRQcm90b2NvbFZlcnNpb24oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnTlVMTCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvc3QnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlcXVlc3QtPmdldEhlYWRlckxpbmUoJ0hvc3QnKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG9zdG5hbWUnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gXGdldGhvc3RuYW1lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvZGUnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlc3BvbnNlID8gJHJlc3BvbnNlLT5nZXRTdGF0dXNDb2RlKCkgOiAnTlVMTCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3BocmFzZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzcG9uc2UgPyAkcmVzcG9uc2UtPmdldFJlYXNvblBocmFzZSgpIDogJ05VTEwnOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkZXJyb3IgPyAkZXJyb3ItPmdldE1lc3NhZ2UoKSA6ICdOVUxMJzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIHByZWZpeGVkIGR5bmFtaWMgaGVhZGVycwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoXHN0cnBvcygkbWF0Y2hlc1sxXSwgJ3JlcV9oZWFkZXJfJykgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVxdWVzdC0+Z2V0SGVhZGVyTGluZShcc3Vic3RyKCRtYXRjaGVzWzFdLCAxMSkpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoXHN0cnBvcygkbWF0Y2hlc1sxXSwgJ3Jlc19oZWFkZXJfJykgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzcG9uc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICRyZXNwb25zZS0+Z2V0SGVhZGVyTGluZShcc3Vic3RyKCRtYXRjaGVzWzFdLCAxMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnTlVMTCc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkY2FjaGVbJG1hdGNoZXNbMV1dID0gJHJlc3VsdDsKCiAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJHRoaXMtPnRlbXBsYXRlCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBoZWFkZXJzIGZyb20gbWVzc2FnZSBhcyBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBoZWFkZXJzKE1lc3NhZ2VJbnRlcmZhY2UgJG1lc3NhZ2UpOiBzdHJpbmcKICAgIHsKICAgICAgICAkcmVzdWx0ID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJG1lc3NhZ2UtPmdldEhlYWRlcnMoKSBhcyAkbmFtZSA9PiAkdmFsdWVzKSB7CiAgICAgICAgICAgICRyZXN1bHQgLj0gJG5hbWUuJzogJy5caW1wbG9kZSgnLCAnLCAkdmFsdWVzKS4iXHJcbiI7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXHRyaW0oJHJlc3VsdCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2U7CgppbnRlcmZhY2UgTWVzc2FnZUZvcm1hdHRlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHVybnMgYSBmb3JtYXR0ZWQgbWVzc2FnZSBzdHJpbmcuCiAgICAgKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgICAgICAgJHJlcXVlc3QgIFJlcXVlc3QgdGhhdCB3YXMgc2VudAogICAgICogQHBhcmFtIFJlc3BvbnNlSW50ZXJmYWNlfG51bGwgJHJlc3BvbnNlIFJlc3BvbnNlIHRoYXQgd2FzIHJlY2VpdmVkCiAgICAgKiBAcGFyYW0gXFRocm93YWJsZXxudWxsICAgICAgICAkZXJyb3IgICAgRXhjZXB0aW9uIHRoYXQgd2FzIHJlY2VpdmVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmb3JtYXQoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgP1Jlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSA9IG51bGwsID9cVGhyb3dhYmxlICRlcnJvciA9IG51bGwpOiBzdHJpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Middleware.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcQ29va2llXENvb2tpZUphckludGVyZmFjZTsKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXFJlcXVlc3RFeGNlcHRpb247CnVzZSBHdXp6bGVIdHRwXFByb21pc2UgYXMgUDsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKdXNlIFBzclxMb2dcTG9nZ2VySW50ZXJmYWNlOwoKLyoqCiAqIEZ1bmN0aW9ucyB1c2VkIHRvIGNyZWF0ZSBhbmQgd3JhcCBoYW5kbGVycyB3aXRoIGhhbmRsZXIgbWlkZGxld2FyZS4KICovCmZpbmFsIGNsYXNzIE1pZGRsZXdhcmUKewogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgYWRkcyBjb29raWVzIHRvIHJlcXVlc3RzLgogICAgICoKICAgICAqIFRoZSBvcHRpb25zIGFycmF5IG11c3QgYmUgc2V0IHRvIGEgQ29va2llSmFySW50ZXJmYWNlIGluIG9yZGVyIHRvIHVzZQogICAgICogY29va2llcy4gVGhpcyBpcyB0eXBpY2FsbHkgaGFuZGxlZCBmb3IgeW91IGJ5IGEgY2xpZW50LgogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGUgUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbmV4dCBoYW5kbGVyLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvb2tpZXMoKTogY2FsbGFibGUKICAgIHsKICAgICAgICByZXR1cm4gc3RhdGljIGZ1bmN0aW9uIChjYWxsYWJsZSAkaGFuZGxlcik6IGNhbGxhYmxlIHsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpYyBmdW5jdGlvbiAoJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKSB1c2UgKCRoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJG9wdGlvbnNbJ2Nvb2tpZXMnXSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGhhbmRsZXIoJHJlcXVlc3QsICRvcHRpb25zKTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICghJG9wdGlvbnNbJ2Nvb2tpZXMnXSBpbnN0YW5jZW9mIENvb2tpZUphckludGVyZmFjZSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdjb29raWVzIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgR3V6emxlSHR0cFxDb29raWVcQ29va2llSmFySW50ZXJmYWNlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkY29va2llSmFyID0gJG9wdGlvbnNbJ2Nvb2tpZXMnXTsKICAgICAgICAgICAgICAgICRyZXF1ZXN0ID0gJGNvb2tpZUphci0+d2l0aENvb2tpZUhlYWRlcigkcmVxdWVzdCk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRoYW5kbGVyKCRyZXF1ZXN0LCAkb3B0aW9ucykKICAgICAgICAgICAgICAgICAgICAtPnRoZW4oCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlKSB1c2UgKCRjb29raWVKYXIsICRyZXF1ZXN0KTogUmVzcG9uc2VJbnRlcmZhY2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvb2tpZUphci0+ZXh0cmFjdENvb2tpZXMoJHJlcXVlc3QsICRyZXNwb25zZSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXNwb25zZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH07CiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIE1pZGRsZXdhcmUgdGhhdCB0aHJvd3MgZXhjZXB0aW9ucyBmb3IgNHh4IG9yIDV4eCByZXNwb25zZXMgd2hlbiB0aGUKICAgICAqICJodHRwX2Vycm9ycyIgcmVxdWVzdCBvcHRpb24gaXMgc2V0IHRvIHRydWUuCiAgICAgKgogICAgICogQHBhcmFtIEJvZHlTdW1tYXJpemVySW50ZXJmYWNlfG51bGwgJGJvZHlTdW1tYXJpemVyIFRoZSBib2R5IHN1bW1hcml6ZXIgdG8gdXNlIGluIGV4Y2VwdGlvbiBtZXNzYWdlcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNhbGxhYmxlKGNhbGxhYmxlKTogY2FsbGFibGUgUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbmV4dCBoYW5kbGVyLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGh0dHBFcnJvcnMoP0JvZHlTdW1tYXJpemVySW50ZXJmYWNlICRib2R5U3VtbWFyaXplciA9IG51bGwpOiBjYWxsYWJsZQogICAgewogICAgICAgIHJldHVybiBzdGF0aWMgZnVuY3Rpb24gKGNhbGxhYmxlICRoYW5kbGVyKSB1c2UgKCRib2R5U3VtbWFyaXplcik6IGNhbGxhYmxlIHsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpYyBmdW5jdGlvbiAoJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKSB1c2UgKCRoYW5kbGVyLCAkYm9keVN1bW1hcml6ZXIpIHsKICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkb3B0aW9uc1snaHR0cF9lcnJvcnMnXSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGhhbmRsZXIoJHJlcXVlc3QsICRvcHRpb25zKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJGhhbmRsZXIoJHJlcXVlc3QsICRvcHRpb25zKS0+dGhlbigKICAgICAgICAgICAgICAgICAgICBzdGF0aWMgZnVuY3Rpb24gKFJlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSkgdXNlICgkcmVxdWVzdCwgJGJvZHlTdW1tYXJpemVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb2RlID0gJHJlc3BvbnNlLT5nZXRTdGF0dXNDb2RlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkY29kZSA8IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXNwb25zZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBSZXF1ZXN0RXhjZXB0aW9uOjpjcmVhdGUoJHJlcXVlc3QsICRyZXNwb25zZSwgbnVsbCwgW10sICRib2R5U3VtbWFyaXplcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogTWlkZGxld2FyZSB0aGF0IHB1c2hlcyBoaXN0b3J5IGRhdGEgdG8gYW4gQXJyYXlBY2Nlc3MgY29udGFpbmVyLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXxcQXJyYXlBY2Nlc3M8aW50LCBhcnJheT4gJGNvbnRhaW5lciBDb250YWluZXIgdG8gaG9sZCB0aGUgaGlzdG9yeSAoYnkgcmVmZXJlbmNlKS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNhbGxhYmxlKGNhbGxhYmxlKTogY2FsbGFibGUgUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbmV4dCBoYW5kbGVyLgogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiBjb250YWluZXIgaXMgbm90IGFuIGFycmF5IG9yIEFycmF5QWNjZXNzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGhpc3RvcnkoJiRjb250YWluZXIpOiBjYWxsYWJsZQogICAgewogICAgICAgIGlmICghXGlzX2FycmF5KCRjb250YWluZXIpICYmICEkY29udGFpbmVyIGluc3RhbmNlb2YgXEFycmF5QWNjZXNzKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdoaXN0b3J5IGNvbnRhaW5lciBtdXN0IGJlIGFuIGFycmF5IG9yIG9iamVjdCBpbXBsZW1lbnRpbmcgQXJyYXlBY2Nlc3MnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzdGF0aWMgZnVuY3Rpb24gKGNhbGxhYmxlICRoYW5kbGVyKSB1c2UgKCYkY29udGFpbmVyKTogY2FsbGFibGUgewogICAgICAgICAgICByZXR1cm4gc3RhdGljIGZ1bmN0aW9uIChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucykgdXNlICgkaGFuZGxlciwgJiRjb250YWluZXIpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkaGFuZGxlcigkcmVxdWVzdCwgJG9wdGlvbnMpLT50aGVuKAogICAgICAgICAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoJHZhbHVlKSB1c2UgKCRyZXF1ZXN0LCAmJGNvbnRhaW5lciwgJG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcltdID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVlc3QnID0+ICRyZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc3BvbnNlJyA9PiAkdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3InID0+IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9ucycgPT4gJG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc3RhdGljIGZ1bmN0aW9uICgkcmVhc29uKSB1c2UgKCRyZXF1ZXN0LCAmJGNvbnRhaW5lciwgJG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcltdID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVlc3QnID0+ICRyZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc3BvbnNlJyA9PiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yJyA9PiAkcmVhc29uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbnMnID0+ICRvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBcQ3JlYXRlOjpyZWplY3Rpb25Gb3IoJHJlYXNvbik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogTWlkZGxld2FyZSB0aGF0IGludm9rZXMgYSBjYWxsYmFjayBiZWZvcmUgYW5kIGFmdGVyIHNlbmRpbmcgYSByZXF1ZXN0LgogICAgICoKICAgICAqIFRoZSBwcm92aWRlZCBsaXN0ZW5lciBjYW5ub3QgbW9kaWZ5IG9yIGFsdGVyIHRoZSByZXNwb25zZS4gSXQgc2ltcGx5CiAgICAgKiAidGFwcyIgaW50byB0aGUgY2hhaW4gdG8gYmUgbm90aWZpZWQgYmVmb3JlIHJldHVybmluZyB0aGUgcHJvbWlzZS4gVGhlCiAgICAgKiBiZWZvcmUgbGlzdGVuZXIgYWNjZXB0cyBhIHJlcXVlc3QgYW5kIG9wdGlvbnMgYXJyYXksIGFuZCB0aGUgYWZ0ZXIKICAgICAqIGxpc3RlbmVyIGFjY2VwdHMgYSByZXF1ZXN0LCBvcHRpb25zIGFycmF5LCBhbmQgcmVzcG9uc2UgcHJvbWlzZS4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGJlZm9yZSBGdW5jdGlvbiB0byBpbnZva2UgYmVmb3JlIGZvcndhcmRpbmcgdGhlIHJlcXVlc3QuCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGFmdGVyICBGdW5jdGlvbiBpbnZva2VkIGFmdGVyIGZvcndhcmRpbmcuCiAgICAgKgogICAgICogQHJldHVybiBjYWxsYWJsZSBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBuZXh0IGhhbmRsZXIuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdGFwKD9jYWxsYWJsZSAkYmVmb3JlID0gbnVsbCwgP2NhbGxhYmxlICRhZnRlciA9IG51bGwpOiBjYWxsYWJsZQogICAgewogICAgICAgIHJldHVybiBzdGF0aWMgZnVuY3Rpb24gKGNhbGxhYmxlICRoYW5kbGVyKSB1c2UgKCRiZWZvcmUsICRhZnRlcik6IGNhbGxhYmxlIHsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpYyBmdW5jdGlvbiAoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpIHVzZSAoJGhhbmRsZXIsICRiZWZvcmUsICRhZnRlcikgewogICAgICAgICAgICAgICAgaWYgKCRiZWZvcmUpIHsKICAgICAgICAgICAgICAgICAgICAkYmVmb3JlKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcmVzcG9uc2UgPSAkaGFuZGxlcigkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgICAgICAgICAgaWYgKCRhZnRlcikgewogICAgICAgICAgICAgICAgICAgICRhZnRlcigkcmVxdWVzdCwgJG9wdGlvbnMsICRyZXNwb25zZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICRyZXNwb25zZTsKICAgICAgICAgICAgfTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogTWlkZGxld2FyZSB0aGF0IGhhbmRsZXMgcmVxdWVzdCByZWRpcmVjdHMuCiAgICAgKgogICAgICogQHJldHVybiBjYWxsYWJsZSBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBuZXh0IGhhbmRsZXIuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVkaXJlY3QoKTogY2FsbGFibGUKICAgIHsKICAgICAgICByZXR1cm4gc3RhdGljIGZ1bmN0aW9uIChjYWxsYWJsZSAkaGFuZGxlcik6IFJlZGlyZWN0TWlkZGxld2FyZSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgUmVkaXJlY3RNaWRkbGV3YXJlKCRoYW5kbGVyKTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogTWlkZGxld2FyZSB0aGF0IHJldHJpZXMgcmVxdWVzdHMgYmFzZWQgb24gdGhlIGJvb2xlYW4gcmVzdWx0IG9mCiAgICAgKiBpbnZva2luZyB0aGUgcHJvdmlkZWQgImRlY2lkZXIiIGZ1bmN0aW9uLgogICAgICoKICAgICAqIElmIG5vIGRlbGF5IGZ1bmN0aW9uIGlzIHByb3ZpZGVkLCBhIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBleHBvbmVudGlhbAogICAgICogYmFja29mZiB3aWxsIGJlIHV0aWxpemVkLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkZGVjaWRlciBGdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIG51bWJlciBvZiByZXRyaWVzLAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGEgcmVxdWVzdCwgW3Jlc3BvbnNlXSwgYW5kIFtleGNlcHRpb25dIGFuZAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybnMgdHJ1ZSBpZiB0aGUgcmVxdWVzdCBpcyB0byBiZSByZXRyaWVkLgogICAgICogQHBhcmFtIGNhbGxhYmxlICRkZWxheSAgIEZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbnVtYmVyIG9mIHJldHJpZXMgYW5kCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNhbGxhYmxlIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIG5leHQgaGFuZGxlci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXRyeShjYWxsYWJsZSAkZGVjaWRlciwgP2NhbGxhYmxlICRkZWxheSA9IG51bGwpOiBjYWxsYWJsZQogICAgewogICAgICAgIHJldHVybiBzdGF0aWMgZnVuY3Rpb24gKGNhbGxhYmxlICRoYW5kbGVyKSB1c2UgKCRkZWNpZGVyLCAkZGVsYXkpOiBSZXRyeU1pZGRsZXdhcmUgewogICAgICAgICAgICByZXR1cm4gbmV3IFJldHJ5TWlkZGxld2FyZSgkZGVjaWRlciwgJGhhbmRsZXIsICRkZWxheSk7CiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIE1pZGRsZXdhcmUgdGhhdCBsb2dzIHJlcXVlc3RzLCByZXNwb25zZXMsIGFuZCBlcnJvcnMgdXNpbmcgYSBtZXNzYWdlCiAgICAgKiBmb3JtYXR0ZXIuCiAgICAgKgogICAgICogQHBhcmFtIExvZ2dlckludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbG9nZ2VyICAgIExvZ3MgbWVzc2FnZXMuCiAgICAgKiBAcGFyYW0gTWVzc2FnZUZvcm1hdHRlckludGVyZmFjZXxNZXNzYWdlRm9ybWF0dGVyICRmb3JtYXR0ZXIgRm9ybWF0dGVyIHVzZWQgdG8gY3JlYXRlIG1lc3NhZ2Ugc3RyaW5ncy4KICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxvZ0xldmVsICBMZXZlbCBhdCB3aGljaCB0byBsb2cgcmVxdWVzdHMuCiAgICAgKgogICAgICogQHBocHN0YW4tcGFyYW0gXFBzclxMb2dcTG9nTGV2ZWw6OiogJGxvZ0xldmVsIExldmVsIGF0IHdoaWNoIHRvIGxvZyByZXF1ZXN0cy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNhbGxhYmxlIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIG5leHQgaGFuZGxlci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2coTG9nZ2VySW50ZXJmYWNlICRsb2dnZXIsICRmb3JtYXR0ZXIsIHN0cmluZyAkbG9nTGV2ZWwgPSAnaW5mbycpOiBjYWxsYWJsZQogICAgewogICAgICAgIC8vIFRvIGJlIGNvbXBhdGlibGUgd2l0aCBHdXp6bGUgNy4xLnggd2UgbmVlZCB0byBhbGxvdyB1c2VycyB0byBwYXNzIGEgTWVzc2FnZUZvcm1hdHRlcgogICAgICAgIGlmICghJGZvcm1hdHRlciBpbnN0YW5jZW9mIE1lc3NhZ2VGb3JtYXR0ZXIgJiYgISRmb3JtYXR0ZXIgaW5zdGFuY2VvZiBNZXNzYWdlRm9ybWF0dGVySW50ZXJmYWNlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oc3ByaW50ZignQXJndW1lbnQgMiB0byAlczo6bG9nKCkgbXVzdCBiZSBvZiB0eXBlICVzJywgc2VsZjo6Y2xhc3MsIE1lc3NhZ2VGb3JtYXR0ZXJJbnRlcmZhY2U6OmNsYXNzKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3RhdGljIGZ1bmN0aW9uIChjYWxsYWJsZSAkaGFuZGxlcikgdXNlICgkbG9nZ2VyLCAkZm9ybWF0dGVyLCAkbG9nTGV2ZWwpOiBjYWxsYWJsZSB7CiAgICAgICAgICAgIHJldHVybiBzdGF0aWMgZnVuY3Rpb24gKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zID0gW10pIHVzZSAoJGhhbmRsZXIsICRsb2dnZXIsICRmb3JtYXR0ZXIsICRsb2dMZXZlbCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRoYW5kbGVyKCRyZXF1ZXN0LCAkb3B0aW9ucyktPnRoZW4oCiAgICAgICAgICAgICAgICAgICAgc3RhdGljIGZ1bmN0aW9uICgkcmVzcG9uc2UpIHVzZSAoJGxvZ2dlciwgJHJlcXVlc3QsICRmb3JtYXR0ZXIsICRsb2dMZXZlbCk6IFJlc3BvbnNlSW50ZXJmYWNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2UgPSAkZm9ybWF0dGVyLT5mb3JtYXQoJHJlcXVlc3QsICRyZXNwb25zZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRsb2dnZXItPmxvZygkbG9nTGV2ZWwsICRtZXNzYWdlKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcmVzcG9uc2U7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzdGF0aWMgZnVuY3Rpb24gKCRyZWFzb24pIHVzZSAoJGxvZ2dlciwgJHJlcXVlc3QsICRmb3JtYXR0ZXIpOiBQcm9taXNlSW50ZXJmYWNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3BvbnNlID0gJHJlYXNvbiBpbnN0YW5jZW9mIFJlcXVlc3RFeGNlcHRpb24gPyAkcmVhc29uLT5nZXRSZXNwb25zZSgpIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2UgPSAkZm9ybWF0dGVyLT5mb3JtYXQoJHJlcXVlc3QsICRyZXNwb25zZSwgUFxDcmVhdGU6OmV4Y2VwdGlvbkZvcigkcmVhc29uKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRsb2dnZXItPmVycm9yKCRtZXNzYWdlKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQXENyZWF0ZTo6cmVqZWN0aW9uRm9yKCRyZWFzb24pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH07CiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWlkZGxld2FyZSBhZGRzIGEgZGVmYXVsdCBjb250ZW50LXR5cGUgaWYgcG9zc2libGUsIGEgZGVmYXVsdAogICAgICogY29udGVudC1sZW5ndGggb3IgdHJhbnNmZXItZW5jb2RpbmcgaGVhZGVyLCBhbmQgdGhlIGV4cGVjdCBoZWFkZXIuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcHJlcGFyZUJvZHkoKTogY2FsbGFibGUKICAgIHsKICAgICAgICByZXR1cm4gc3RhdGljIGZ1bmN0aW9uIChjYWxsYWJsZSAkaGFuZGxlcik6IFByZXBhcmVCb2R5TWlkZGxld2FyZSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgUHJlcGFyZUJvZHlNaWRkbGV3YXJlKCRoYW5kbGVyKTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogTWlkZGxld2FyZSB0aGF0IGFwcGxpZXMgYSBtYXAgZnVuY3Rpb24gdG8gdGhlIHJlcXVlc3QgYmVmb3JlIHBhc3NpbmcgdG8KICAgICAqIHRoZSBuZXh0IGhhbmRsZXIuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlICRmbiBGdW5jdGlvbiB0aGF0IGFjY2VwdHMgYSBSZXF1ZXN0SW50ZXJmYWNlIGFuZCByZXR1cm5zCiAgICAgKiAgICAgICAgICAgICAgICAgICAgIGEgUmVxdWVzdEludGVyZmFjZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYXBSZXF1ZXN0KGNhbGxhYmxlICRmbik6IGNhbGxhYmxlCiAgICB7CiAgICAgICAgcmV0dXJuIHN0YXRpYyBmdW5jdGlvbiAoY2FsbGFibGUgJGhhbmRsZXIpIHVzZSAoJGZuKTogY2FsbGFibGUgewogICAgICAgICAgICByZXR1cm4gc3RhdGljIGZ1bmN0aW9uIChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucykgdXNlICgkaGFuZGxlciwgJGZuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGhhbmRsZXIoJGZuKCRyZXF1ZXN0KSwgJG9wdGlvbnMpOwogICAgICAgICAgICB9OwogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgYXBwbGllcyBhIG1hcCBmdW5jdGlvbiB0byB0aGUgcmVzb2x2ZWQgcHJvbWlzZSdzCiAgICAgKiByZXNwb25zZS4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGZuIEZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhIFJlc3BvbnNlSW50ZXJmYWNlIGFuZAogICAgICogICAgICAgICAgICAgICAgICAgICByZXR1cm5zIGEgUmVzcG9uc2VJbnRlcmZhY2UuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWFwUmVzcG9uc2UoY2FsbGFibGUgJGZuKTogY2FsbGFibGUKICAgIHsKICAgICAgICByZXR1cm4gc3RhdGljIGZ1bmN0aW9uIChjYWxsYWJsZSAkaGFuZGxlcikgdXNlICgkZm4pOiBjYWxsYWJsZSB7CiAgICAgICAgICAgIHJldHVybiBzdGF0aWMgZnVuY3Rpb24gKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKSB1c2UgKCRoYW5kbGVyLCAkZm4pIHsKICAgICAgICAgICAgICAgIHJldHVybiAkaGFuZGxlcigkcmVxdWVzdCwgJG9wdGlvbnMpLT50aGVuKCRmbik7CiAgICAgICAgICAgIH07CiAgICAgICAgfTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Pool.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcUHJvbWlzZSBhcyBQOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXEVhY2hQcm9taXNlOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzb3JJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CgovKioKICogU2VuZHMgYW4gaXRlcmF0b3Igb2YgcmVxdWVzdHMgY29uY3VycmVudGx5IHVzaW5nIGEgY2FwcGVkIHBvb2wgc2l6ZS4KICoKICogVGhlIHBvb2wgd2lsbCByZWFkIGZyb20gYW4gaXRlcmF0b3IgdW50aWwgaXQgaXMgY2FuY2VsbGVkIG9yIHVudGlsIHRoZQogKiBpdGVyYXRvciBpcyBjb25zdW1lZC4gV2hlbiBhIHJlcXVlc3QgaXMgeWllbGRlZCwgdGhlIHJlcXVlc3QgaXMgc2VudCBhZnRlcgogKiBhcHBseWluZyB0aGUgInJlcXVlc3Rfb3B0aW9ucyIgcmVxdWVzdCBvcHRpb25zIChpZiBwcm92aWRlZCBpbiB0aGUgY3RvcikuCiAqCiAqIFdoZW4gYSBmdW5jdGlvbiBpcyB5aWVsZGVkIGJ5IHRoZSBpdGVyYXRvciwgdGhlIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRoZQogKiAicmVxdWVzdF9vcHRpb25zIiBhcnJheSB0aGF0IHNob3VsZCBiZSBtZXJnZWQgb24gdG9wIG9mIGFueSBleGlzdGluZwogKiBvcHRpb25zLCBhbmQgdGhlIGZ1bmN0aW9uIE1VU1QgdGhlbiByZXR1cm4gYSB3YWl0LWFibGUgcHJvbWlzZS4KICoKICogQGZpbmFsCiAqLwpjbGFzcyBQb29sIGltcGxlbWVudHMgUHJvbWlzb3JJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIEVhY2hQcm9taXNlCiAgICAgKi8KICAgIHByaXZhdGUgJGVhY2g7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQ2xpZW50SW50ZXJmYWNlICRjbGllbnQgICBDbGllbnQgdXNlZCB0byBzZW5kIHRoZSByZXF1ZXN0cy4KICAgICAqIEBwYXJhbSBhcnJheXxcSXRlcmF0b3IgJHJlcXVlc3RzIFJlcXVlc3RzIG9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMgdG8gc2VuZCBjb25jdXJyZW50bHkuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICRjb25maWcgICBBc3NvY2lhdGl2ZSBhcnJheSBvZiBvcHRpb25zCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGNvbmN1cnJlbmN5OiAoaW50KSBNYXhpbXVtIG51bWJlciBvZiByZXF1ZXN0cyB0byBzZW5kIGNvbmN1cnJlbnRseQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBvcHRpb25zOiBBcnJheSBvZiByZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkgdG8gZWFjaCByZXF1ZXN0LgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBmdWxmaWxsZWQ6IChjYWxsYWJsZSkgRnVuY3Rpb24gdG8gaW52b2tlIHdoZW4gYSByZXF1ZXN0IGNvbXBsZXRlcy4KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcmVqZWN0ZWQ6IChjYWxsYWJsZSkgRnVuY3Rpb24gdG8gaW52b2tlIHdoZW4gYSByZXF1ZXN0IGlzIHJlamVjdGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ2xpZW50SW50ZXJmYWNlICRjbGllbnQsICRyZXF1ZXN0cywgYXJyYXkgJGNvbmZpZyA9IFtdKQogICAgewogICAgICAgIGlmICghaXNzZXQoJGNvbmZpZ1snY29uY3VycmVuY3knXSkpIHsKICAgICAgICAgICAgJGNvbmZpZ1snY29uY3VycmVuY3knXSA9IDI1OwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRjb25maWdbJ29wdGlvbnMnXSkpIHsKICAgICAgICAgICAgJG9wdHMgPSAkY29uZmlnWydvcHRpb25zJ107CiAgICAgICAgICAgIHVuc2V0KCRjb25maWdbJ29wdGlvbnMnXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG9wdHMgPSBbXTsKICAgICAgICB9CgogICAgICAgIGlmICghXGlzX2l0ZXJhYmxlKCRyZXF1ZXN0cykpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9ndXp6bGUnLAogICAgICAgICAgICAgICAgJzcuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgYSBub24taXRlcmFibGUgcmVxdWVzdCBjb2xsZWN0aW9uIHRvICVzOjpfX2NvbnN0cnVjdCgpIG9yICVzOjpiYXRjaCgpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvZ3V6emxlIDguMCB3aWxsIHJlcXVpcmUgYW4gaXRlcmFibGUuJywKICAgICAgICAgICAgICAgIF9fQ0xBU1NfXywKICAgICAgICAgICAgICAgIF9fQ0xBU1NfXwogICAgICAgICAgICApOwoKICAgICAgICAgICAgJHJlcXVlc3RzID0gWyRyZXF1ZXN0c107CiAgICAgICAgfQoKICAgICAgICAkaXRlcmFibGUgPSBQXENyZWF0ZTo6aXRlckZvcigkcmVxdWVzdHMpOwogICAgICAgICRyZXF1ZXN0cyA9IHN0YXRpYyBmdW5jdGlvbiAoKSB1c2UgKCRpdGVyYWJsZSwgJGNsaWVudCwgJG9wdHMpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGl0ZXJhYmxlIGFzICRrZXkgPT4gJHJmbikgewogICAgICAgICAgICAgICAgaWYgKCRyZm4gaW5zdGFuY2VvZiBSZXF1ZXN0SW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICAgICAgeWllbGQgJGtleSA9PiAkY2xpZW50LT5zZW5kQXN5bmMoJHJmbiwgJG9wdHMpOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKFxpc19jYWxsYWJsZSgkcmZuKSkgewogICAgICAgICAgICAgICAgICAgIHlpZWxkICRrZXkgPT4gJHJmbigkb3B0cyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdFYWNoIHZhbHVlIHlpZWxkZWQgYnkgdGhlIGl0ZXJhdG9yIG11c3QgYmUgYSBQc3I3XEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlIG9yIGEgY2FsbGFibGUgdGhhdCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIHdpdGggYSBQc3I3XE1lc3NhZ2VcSHR0cFxSZXNwb25zZUludGVyZmFjZSBvYmplY3QuJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICAkdGhpcy0+ZWFjaCA9IG5ldyBFYWNoUHJvbWlzZSgkcmVxdWVzdHMoKSwgJGNvbmZpZyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgcHJvbWlzZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJvbWlzZSgpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lYWNoLT5wcm9taXNlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZW5kcyBtdWx0aXBsZSByZXF1ZXN0cyBjb25jdXJyZW50bHkgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgcmVzcG9uc2VzCiAgICAgKiBhbmQgZXhjZXB0aW9ucyB0aGF0IHVzZXMgdGhlIHNhbWUgb3JkZXJpbmcgYXMgdGhlIHByb3ZpZGVkIHJlcXVlc3RzLgogICAgICoKICAgICAqIElNUE9SVEFOVDogVGhpcyBtZXRob2Qga2VlcHMgZXZlcnkgcmVxdWVzdCBhbmQgcmVzcG9uc2UgaW4gbWVtb3J5LCBhbmQKICAgICAqIGFzIHN1Y2gsIGlzIE5PVCByZWNvbW1lbmRlZCB3aGVuIHNlbmRpbmcgYSBsYXJnZSBudW1iZXIgb3IgYW4KICAgICAqIGluZGV0ZXJtaW5hdGUgbnVtYmVyIG9mIHJlcXVlc3RzIGNvbmN1cnJlbnRseS4KICAgICAqCiAgICAgKiBAcGFyYW0gQ2xpZW50SW50ZXJmYWNlICRjbGllbnQgICBDbGllbnQgdXNlZCB0byBzZW5kIHRoZSByZXF1ZXN0cwogICAgICogQHBhcmFtIGFycmF5fFxJdGVyYXRvciAkcmVxdWVzdHMgUmVxdWVzdHMgdG8gc2VuZCBjb25jdXJyZW50bHkuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICRvcHRpb25zICBQYXNzZXMgdGhyb3VnaCB0aGUgb3B0aW9ucyBhdmFpbGFibGUgaW4KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtAc2VlIFBvb2w6Ol9fY29uc3RydWN0fQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSByZXNwb25zZSBvciBhbiBleGNlcHRpb24KICAgICAqICAgICAgICAgICAgICAgaW4gdGhlIHNhbWUgb3JkZXIgdGhhdCB0aGUgcmVxdWVzdHMgd2VyZSBzZW50LgogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgZXZlbnQgZm9ybWF0IGlzIGluY29ycmVjdC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBiYXRjaChDbGllbnRJbnRlcmZhY2UgJGNsaWVudCwgJHJlcXVlc3RzLCBhcnJheSAkb3B0aW9ucyA9IFtdKTogYXJyYXkKICAgIHsKICAgICAgICAkcmVzID0gW107CiAgICAgICAgc2VsZjo6Y21wQ2FsbGJhY2soJG9wdGlvbnMsICdmdWxmaWxsZWQnLCAkcmVzKTsKICAgICAgICBzZWxmOjpjbXBDYWxsYmFjaygkb3B0aW9ucywgJ3JlamVjdGVkJywgJHJlcyk7CiAgICAgICAgJHBvb2wgPSBuZXcgc3RhdGljKCRjbGllbnQsICRyZXF1ZXN0cywgJG9wdGlvbnMpOwogICAgICAgICRwb29sLT5wcm9taXNlKCktPndhaXQoKTsKICAgICAgICBca3NvcnQoJHJlcyk7CgogICAgICAgIHJldHVybiAkcmVzOwogICAgfQoKICAgIC8qKgogICAgICogRXhlY3V0ZSBjYWxsYmFjayhzKQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjbXBDYWxsYmFjayhhcnJheSAmJG9wdGlvbnMsIHN0cmluZyAkbmFtZSwgYXJyYXkgJiRyZXN1bHRzKTogdm9pZAogICAgewogICAgICAgIGlmICghaXNzZXQoJG9wdGlvbnNbJG5hbWVdKSkgewogICAgICAgICAgICAkb3B0aW9uc1skbmFtZV0gPSBzdGF0aWMgZnVuY3Rpb24gKCR2LCAkaykgdXNlICgmJHJlc3VsdHMpIHsKICAgICAgICAgICAgICAgICRyZXN1bHRzWyRrXSA9ICR2OwogICAgICAgICAgICB9OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRjdXJyZW50Rm4gPSAkb3B0aW9uc1skbmFtZV07CiAgICAgICAgICAgICRvcHRpb25zWyRuYW1lXSA9IHN0YXRpYyBmdW5jdGlvbiAoJHYsICRrKSB1c2UgKCYkcmVzdWx0cywgJGN1cnJlbnRGbikgewogICAgICAgICAgICAgICAgJGN1cnJlbnRGbigkdiwgJGspOwogICAgICAgICAgICAgICAgJHJlc3VsdHNbJGtdID0gJHY7CiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwoKLyoqCiAqIFByZXBhcmVzIHJlcXVlc3RzIHRoYXQgY29udGFpbiBhIGJvZHksIGFkZGluZyB0aGUgQ29udGVudC1MZW5ndGgsCiAqIENvbnRlbnQtVHlwZSwgYW5kIEV4cGVjdCBoZWFkZXJzLgogKgogKiBAZmluYWwKICovCmNsYXNzIFByZXBhcmVCb2R5TWlkZGxld2FyZQp7CiAgICAvKioKICAgICAqIEB2YXIgY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJG5leHRIYW5kbGVyOwoKICAgIC8qKgogICAgICogQHBhcmFtIGNhbGxhYmxlKFJlcXVlc3RJbnRlcmZhY2UsIGFycmF5KTogUHJvbWlzZUludGVyZmFjZSAkbmV4dEhhbmRsZXIgTmV4dCBoYW5kbGVyIHRvIGludm9rZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGNhbGxhYmxlICRuZXh0SGFuZGxlcikKICAgIHsKICAgICAgICAkdGhpcy0+bmV4dEhhbmRsZXIgPSAkbmV4dEhhbmRsZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9faW52b2tlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgICRmbiA9ICR0aGlzLT5uZXh0SGFuZGxlcjsKCiAgICAgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgdGhlIHJlcXVlc3QgaGFzIG5vIGJvZHkuCiAgICAgICAgaWYgKCRyZXF1ZXN0LT5nZXRCb2R5KCktPmdldFNpemUoKSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJGZuKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICAgICAgfQoKICAgICAgICAkbW9kaWZ5ID0gW107CgogICAgICAgIC8vIEFkZCBhIGRlZmF1bHQgY29udGVudC10eXBlIGlmIHBvc3NpYmxlLgogICAgICAgIGlmICghJHJlcXVlc3QtPmhhc0hlYWRlcignQ29udGVudC1UeXBlJykpIHsKICAgICAgICAgICAgaWYgKCR1cmkgPSAkcmVxdWVzdC0+Z2V0Qm9keSgpLT5nZXRNZXRhZGF0YSgndXJpJykpIHsKICAgICAgICAgICAgICAgIGlmIChpc19zdHJpbmcoJHVyaSkgJiYgJHR5cGUgPSBQc3I3XE1pbWVUeXBlOjpmcm9tRmlsZW5hbWUoJHVyaSkpIHsKICAgICAgICAgICAgICAgICAgICAkbW9kaWZ5WydzZXRfaGVhZGVycyddWydDb250ZW50LVR5cGUnXSA9ICR0eXBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBBZGQgYSBkZWZhdWx0IGNvbnRlbnQtbGVuZ3RoIG9yIHRyYW5zZmVyLWVuY29kaW5nIGhlYWRlci4KICAgICAgICBpZiAoISRyZXF1ZXN0LT5oYXNIZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJykKICAgICAgICAgICAgJiYgISRyZXF1ZXN0LT5oYXNIZWFkZXIoJ1RyYW5zZmVyLUVuY29kaW5nJykKICAgICAgICApIHsKICAgICAgICAgICAgJHNpemUgPSAkcmVxdWVzdC0+Z2V0Qm9keSgpLT5nZXRTaXplKCk7CiAgICAgICAgICAgIGlmICgkc2l6ZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJG1vZGlmeVsnc2V0X2hlYWRlcnMnXVsnQ29udGVudC1MZW5ndGgnXSA9IChzdHJpbmcpICRzaXplOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJG1vZGlmeVsnc2V0X2hlYWRlcnMnXVsnVHJhbnNmZXItRW5jb2RpbmcnXSA9ICdjaHVua2VkJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQWRkIHRoZSBleHBlY3QgaGVhZGVyIGlmIG5lZWRlZC4KICAgICAgICAkdGhpcy0+YWRkRXhwZWN0SGVhZGVyKCRyZXF1ZXN0LCAkb3B0aW9ucywgJG1vZGlmeSk7CgogICAgICAgIHJldHVybiAkZm4oUHNyN1xVdGlsczo6bW9kaWZ5UmVxdWVzdCgkcmVxdWVzdCwgJG1vZGlmeSksICRvcHRpb25zKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZCBleHBlY3QgaGVhZGVyCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkRXhwZWN0SGVhZGVyKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zLCBhcnJheSAmJG1vZGlmeSk6IHZvaWQKICAgIHsKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIEV4cGVjdCBoZWFkZXIgc2hvdWxkIGJlIHVzZWQKICAgICAgICBpZiAoJHJlcXVlc3QtPmhhc0hlYWRlcignRXhwZWN0JykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJGV4cGVjdCA9ICRvcHRpb25zWydleHBlY3QnXSA/PyBudWxsOwoKICAgICAgICAvLyBSZXR1cm4gaWYgZGlzYWJsZWQgb3IgdXNpbmcgSFRUUC8xLjAKICAgICAgICBpZiAoJGV4cGVjdCA9PT0gZmFsc2UgfHwgJHJlcXVlc3QtPmdldFByb3RvY29sVmVyc2lvbigpID09PSAnMS4wJykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvLyBUaGUgZXhwZWN0IGhlYWRlciBpcyB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlZAogICAgICAgIGlmICgkZXhwZWN0ID09PSB0cnVlKSB7CiAgICAgICAgICAgICRtb2RpZnlbJ3NldF9oZWFkZXJzJ11bJ0V4cGVjdCddID0gJzEwMC1Db250aW51ZSc7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvLyBCeSBkZWZhdWx0LCBzZW5kIHRoZSBleHBlY3QgaGVhZGVyIHdoZW4gdGhlIHBheWxvYWQgaXMgPiAxbWIKICAgICAgICBpZiAoJGV4cGVjdCA9PT0gbnVsbCkgewogICAgICAgICAgICAkZXhwZWN0ID0gMTA0ODU3NjsKICAgICAgICB9CgogICAgICAgIC8vIEFsd2F5cyBhZGQgaWYgdGhlIGJvZHkgY2Fubm90IGJlIHJld291bmQsIHRoZSBzaXplIGNhbm5vdCBiZQogICAgICAgIC8vIGRldGVybWluZWQsIG9yIHRoZSBzaXplIGlzIGdyZWF0ZXIgdGhhbiB0aGUgY3V0b2ZmIHRocmVzaG9sZAogICAgICAgICRib2R5ID0gJHJlcXVlc3QtPmdldEJvZHkoKTsKICAgICAgICAkc2l6ZSA9ICRib2R5LT5nZXRTaXplKCk7CgogICAgICAgIGlmICgkc2l6ZSA9PT0gbnVsbCB8fCAkc2l6ZSA+PSAoaW50KSAkZXhwZWN0IHx8ICEkYm9keS0+aXNTZWVrYWJsZSgpKSB7CiAgICAgICAgICAgICRtb2RpZnlbJ3NldF9oZWFkZXJzJ11bJ0V4cGVjdCddID0gJzEwMC1Db250aW51ZSc7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXEJhZFJlc3BvbnNlRXhjZXB0aW9uOwp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cVG9vTWFueVJlZGlyZWN0c0V4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOwoKLyoqCiAqIFJlcXVlc3QgcmVkaXJlY3QgbWlkZGxld2FyZS4KICoKICogQXBwbHkgdGhpcyBtaWRkbGV3YXJlIGxpa2Ugb3RoZXIgbWlkZGxld2FyZSB1c2luZwogKiB7QHNlZSBNaWRkbGV3YXJlOjpyZWRpcmVjdCgpfS4KICoKICogQGZpbmFsCiAqLwpjbGFzcyBSZWRpcmVjdE1pZGRsZXdhcmUKewogICAgcHVibGljIGNvbnN0IEhJU1RPUllfSEVBREVSID0gJ1gtR3V6emxlLVJlZGlyZWN0LUhpc3RvcnknOwoKICAgIHB1YmxpYyBjb25zdCBTVEFUVVNfSElTVE9SWV9IRUFERVIgPSAnWC1HdXp6bGUtUmVkaXJlY3QtU3RhdHVzLUhpc3RvcnknOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwdWJsaWMgc3RhdGljICRkZWZhdWx0U2V0dGluZ3MgPSBbCiAgICAgICAgJ21heCcgPT4gNSwKICAgICAgICAncHJvdG9jb2xzJyA9PiBbJ2h0dHAnLCAnaHR0cHMnXSwKICAgICAgICAnc3RyaWN0JyA9PiBmYWxzZSwKICAgICAgICAncmVmZXJlcicgPT4gZmFsc2UsCiAgICAgICAgJ3RyYWNrX3JlZGlyZWN0cycgPT4gZmFsc2UsCiAgICBdOwoKICAgIC8qKgogICAgICogQHZhciBjYWxsYWJsZShSZXF1ZXN0SW50ZXJmYWNlLCBhcnJheSk6IFByb21pc2VJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkbmV4dEhhbmRsZXI7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlICRuZXh0SGFuZGxlciBOZXh0IGhhbmRsZXIgdG8gaW52b2tlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoY2FsbGFibGUgJG5leHRIYW5kbGVyKQogICAgewogICAgICAgICR0aGlzLT5uZXh0SGFuZGxlciA9ICRuZXh0SGFuZGxlcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19pbnZva2UoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJGZuID0gJHRoaXMtPm5leHRIYW5kbGVyOwoKICAgICAgICBpZiAoZW1wdHkoJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddKSkgewogICAgICAgICAgICByZXR1cm4gJGZuKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddID09PSB0cnVlKSB7CiAgICAgICAgICAgICRvcHRpb25zWydhbGxvd19yZWRpcmVjdHMnXSA9IHNlbGY6OiRkZWZhdWx0U2V0dGluZ3M7CiAgICAgICAgfSBlbHNlaWYgKCFcaXNfYXJyYXkoJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignYWxsb3dfcmVkaXJlY3RzIG11c3QgYmUgdHJ1ZSwgZmFsc2UsIG9yIGFycmF5Jyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIGRlZmF1bHQgc2V0dGluZ3Mgd2l0aCB0aGUgcHJvdmlkZWQgc2V0dGluZ3MKICAgICAgICAgICAgJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddICs9IHNlbGY6OiRkZWZhdWx0U2V0dGluZ3M7CiAgICAgICAgfQoKICAgICAgICBpZiAoZW1wdHkoJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddWydtYXgnXSkpIHsKICAgICAgICAgICAgcmV0dXJuICRmbigkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRmbigkcmVxdWVzdCwgJG9wdGlvbnMpCiAgICAgICAgICAgIC0+dGhlbihmdW5jdGlvbiAoUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlKSB1c2UgKCRyZXF1ZXN0LCAkb3B0aW9ucykgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jaGVja1JlZGlyZWN0KCRyZXF1ZXN0LCAkb3B0aW9ucywgJHJlc3BvbnNlKTsKICAgICAgICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFJlc3BvbnNlSW50ZXJmYWNlfFByb21pc2VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrUmVkaXJlY3QoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMsIFJlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSkKICAgIHsKICAgICAgICBpZiAoXHN0cnBvcygoc3RyaW5nKSAkcmVzcG9uc2UtPmdldFN0YXR1c0NvZGUoKSwgJzMnKSAhPT0gMAogICAgICAgICAgICB8fCAhJHJlc3BvbnNlLT5oYXNIZWFkZXIoJ0xvY2F0aW9uJykKICAgICAgICApIHsKICAgICAgICAgICAgcmV0dXJuICRyZXNwb25zZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5ndWFyZE1heCgkcmVxdWVzdCwgJHJlc3BvbnNlLCAkb3B0aW9ucyk7CiAgICAgICAgJG5leHRSZXF1ZXN0ID0gJHRoaXMtPm1vZGlmeVJlcXVlc3QoJHJlcXVlc3QsICRvcHRpb25zLCAkcmVzcG9uc2UpOwoKICAgICAgICAvLyBJZiBhdXRob3JpemF0aW9uIGlzIGhhbmRsZWQgYnkgY3VybCwgdW5zZXQgaXQgaWYgVVJJIGlzIGNyb3NzLW9yaWdpbi4KICAgICAgICBpZiAoUHNyN1xVcmlDb21wYXJhdG9yOjppc0Nyb3NzT3JpZ2luKCRyZXF1ZXN0LT5nZXRVcmkoKSwgJG5leHRSZXF1ZXN0LT5nZXRVcmkoKSkgJiYgZGVmaW5lZCgnXENVUkxPUFRfSFRUUEFVVEgnKSkgewogICAgICAgICAgICB1bnNldCgKICAgICAgICAgICAgICAgICRvcHRpb25zWydjdXJsJ11bXENVUkxPUFRfSFRUUEFVVEhdLAogICAgICAgICAgICAgICAgJG9wdGlvbnNbJ2N1cmwnXVtcQ1VSTE9QVF9VU0VSUFdEXQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydhbGxvd19yZWRpcmVjdHMnXVsnb25fcmVkaXJlY3QnXSkpIHsKICAgICAgICAgICAgKCRvcHRpb25zWydhbGxvd19yZWRpcmVjdHMnXVsnb25fcmVkaXJlY3QnXSkoCiAgICAgICAgICAgICAgICAkcmVxdWVzdCwKICAgICAgICAgICAgICAgICRyZXNwb25zZSwKICAgICAgICAgICAgICAgICRuZXh0UmVxdWVzdC0+Z2V0VXJpKCkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRwcm9taXNlID0gJHRoaXMoJG5leHRSZXF1ZXN0LCAkb3B0aW9ucyk7CgogICAgICAgIC8vIEFkZCBoZWFkZXJzIHRvIGJlIGFibGUgdG8gdHJhY2sgaGlzdG9yeSBvZiByZWRpcmVjdHMuCiAgICAgICAgaWYgKCFlbXB0eSgkb3B0aW9uc1snYWxsb3dfcmVkaXJlY3RzJ11bJ3RyYWNrX3JlZGlyZWN0cyddKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPndpdGhUcmFja2luZygKICAgICAgICAgICAgICAgICRwcm9taXNlLAogICAgICAgICAgICAgICAgKHN0cmluZykgJG5leHRSZXF1ZXN0LT5nZXRVcmkoKSwKICAgICAgICAgICAgICAgICRyZXNwb25zZS0+Z2V0U3RhdHVzQ29kZSgpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHByb21pc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbmFibGUgdHJhY2tpbmcgb24gcHJvbWlzZS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB3aXRoVHJhY2tpbmcoUHJvbWlzZUludGVyZmFjZSAkcHJvbWlzZSwgc3RyaW5nICR1cmksIGludCAkc3RhdHVzQ29kZSk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHByb21pc2UtPnRoZW4oCiAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlKSB1c2UgKCR1cmksICRzdGF0dXNDb2RlKSB7CiAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgYXJlIHB1c2hpbmcgdG8gdGhlIGZyb250IG9mIHRoZSBsaXN0IGFzIHRoaXMKICAgICAgICAgICAgICAgIC8vIHdvdWxkIGJlIGFuIGVhcmxpZXIgcmVzcG9uc2UgdGhhbiB3aGF0IGlzIGN1cnJlbnRseSBwcmVzZW50CiAgICAgICAgICAgICAgICAvLyBpbiB0aGUgaGlzdG9yeSBoZWFkZXIuCiAgICAgICAgICAgICAgICAkaGlzdG9yeUhlYWRlciA9ICRyZXNwb25zZS0+Z2V0SGVhZGVyKHNlbGY6OkhJU1RPUllfSEVBREVSKTsKICAgICAgICAgICAgICAgICRzdGF0dXNIZWFkZXIgPSAkcmVzcG9uc2UtPmdldEhlYWRlcihzZWxmOjpTVEFUVVNfSElTVE9SWV9IRUFERVIpOwogICAgICAgICAgICAgICAgXGFycmF5X3Vuc2hpZnQoJGhpc3RvcnlIZWFkZXIsICR1cmkpOwogICAgICAgICAgICAgICAgXGFycmF5X3Vuc2hpZnQoJHN0YXR1c0hlYWRlciwgKHN0cmluZykgJHN0YXR1c0NvZGUpOwoKICAgICAgICAgICAgICAgIHJldHVybiAkcmVzcG9uc2UtPndpdGhIZWFkZXIoc2VsZjo6SElTVE9SWV9IRUFERVIsICRoaXN0b3J5SGVhZGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+d2l0aEhlYWRlcihzZWxmOjpTVEFUVVNfSElTVE9SWV9IRUFERVIsICRzdGF0dXNIZWFkZXIpOwogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGZvciB0b28gbWFueSByZWRpcmVjdHMuCiAgICAgKgogICAgICogQHRocm93cyBUb29NYW55UmVkaXJlY3RzRXhjZXB0aW9uIFRvbyBtYW55IHJlZGlyZWN0cy4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBndWFyZE1heChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UsIGFycmF5ICYkb3B0aW9ucyk6IHZvaWQKICAgIHsKICAgICAgICAkY3VycmVudCA9ICRvcHRpb25zWydfX3JlZGlyZWN0X2NvdW50J10KICAgICAgICAgICAgPz8gMDsKICAgICAgICAkb3B0aW9uc1snX19yZWRpcmVjdF9jb3VudCddID0gJGN1cnJlbnQgKyAxOwogICAgICAgICRtYXggPSAkb3B0aW9uc1snYWxsb3dfcmVkaXJlY3RzJ11bJ21heCddOwoKICAgICAgICBpZiAoJG9wdGlvbnNbJ19fcmVkaXJlY3RfY291bnQnXSA+ICRtYXgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFRvb01hbnlSZWRpcmVjdHNFeGNlcHRpb24oIldpbGwgbm90IGZvbGxvdyBtb3JlIHRoYW4geyRtYXh9IHJlZGlyZWN0cyIsICRyZXF1ZXN0LCAkcmVzcG9uc2UpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbW9kaWZ5UmVxdWVzdChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucywgUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlKTogUmVxdWVzdEludGVyZmFjZQogICAgewogICAgICAgIC8vIFJlcXVlc3QgbW9kaWZpY2F0aW9ucyB0byBhcHBseS4KICAgICAgICAkbW9kaWZ5ID0gW107CiAgICAgICAgJHByb3RvY29scyA9ICRvcHRpb25zWydhbGxvd19yZWRpcmVjdHMnXVsncHJvdG9jb2xzJ107CgogICAgICAgIC8vIFVzZSBhIEdFVCByZXF1ZXN0IGlmIHRoaXMgaXMgYW4gZW50aXR5IGVuY2xvc2luZyByZXF1ZXN0IGFuZCB3ZSBhcmUKICAgICAgICAvLyBub3QgZm9yY2luZyBSRkMgY29tcGxpYW5jZSwgYnV0IHJhdGhlciBlbXVsYXRpbmcgd2hhdCBhbGwgYnJvd3NlcnMKICAgICAgICAvLyB3b3VsZCBkby4KICAgICAgICAkc3RhdHVzQ29kZSA9ICRyZXNwb25zZS0+Z2V0U3RhdHVzQ29kZSgpOwogICAgICAgIGlmICgkc3RhdHVzQ29kZSA9PSAzMDMKICAgICAgICAgICAgfHwgKCRzdGF0dXNDb2RlIDw9IDMwMiAmJiAhJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddWydzdHJpY3QnXSkKICAgICAgICApIHsKICAgICAgICAgICAgJHNhZmVNZXRob2RzID0gWydHRVQnLCAnSEVBRCcsICdPUFRJT05TJ107CiAgICAgICAgICAgICRyZXF1ZXN0TWV0aG9kID0gJHJlcXVlc3QtPmdldE1ldGhvZCgpOwoKICAgICAgICAgICAgJG1vZGlmeVsnbWV0aG9kJ10gPSBpbl9hcnJheSgkcmVxdWVzdE1ldGhvZCwgJHNhZmVNZXRob2RzKSA/ICRyZXF1ZXN0TWV0aG9kIDogJ0dFVCc7CiAgICAgICAgICAgICRtb2RpZnlbJ2JvZHknXSA9ICcnOwogICAgICAgIH0KCiAgICAgICAgJHVyaSA9IHNlbGY6OnJlZGlyZWN0VXJpKCRyZXF1ZXN0LCAkcmVzcG9uc2UsICRwcm90b2NvbHMpOwogICAgICAgICRpZG5PcHRpb25zID0gVXRpbHM6Om5vcm1hbGl6ZUlkbkNvbnZlcnNpb25PcHRpb24oJG9wdGlvbnNbJ2lkbl9jb252ZXJzaW9uJ10gPz8gbnVsbCk7CiAgICAgICAgaWYgKCRpZG5PcHRpb25zICE9PSBudWxsKSB7CiAgICAgICAgICAgICR1cmkgPSBVdGlsczo6aWRuVXJpQ29udmVydCgkdXJpLCAkaWRuT3B0aW9ucyk7CiAgICAgICAgfQoKICAgICAgICAkbW9kaWZ5Wyd1cmknXSA9ICR1cmk7CiAgICAgICAgUHNyN1xNZXNzYWdlOjpyZXdpbmRCb2R5KCRyZXF1ZXN0KTsKCiAgICAgICAgLy8gQWRkIHRoZSBSZWZlcmVyIGhlYWRlciBpZiBpdCBpcyB0b2xkIHRvIGRvIHNvIGFuZCBvbmx5CiAgICAgICAgLy8gYWRkIHRoZSBoZWFkZXIgaWYgd2UgYXJlIG5vdCByZWRpcmVjdGluZyBmcm9tIGh0dHBzIHRvIGh0dHAuCiAgICAgICAgaWYgKCRvcHRpb25zWydhbGxvd19yZWRpcmVjdHMnXVsncmVmZXJlciddCiAgICAgICAgICAgICYmICRtb2RpZnlbJ3VyaSddLT5nZXRTY2hlbWUoKSA9PT0gJHJlcXVlc3QtPmdldFVyaSgpLT5nZXRTY2hlbWUoKQogICAgICAgICkgewogICAgICAgICAgICAkdXJpID0gJHJlcXVlc3QtPmdldFVyaSgpLT53aXRoVXNlckluZm8oJycpOwogICAgICAgICAgICAkbW9kaWZ5WydzZXRfaGVhZGVycyddWydSZWZlcmVyJ10gPSAoc3RyaW5nKSAkdXJpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRtb2RpZnlbJ3JlbW92ZV9oZWFkZXJzJ11bXSA9ICdSZWZlcmVyJzsKICAgICAgICB9CgogICAgICAgIC8vIFJlbW92ZSBBdXRob3JpemF0aW9uIGFuZCBDb29raWUgaGVhZGVycyBpZiBVUkkgaXMgY3Jvc3Mtb3JpZ2luLgogICAgICAgIGlmIChQc3I3XFVyaUNvbXBhcmF0b3I6OmlzQ3Jvc3NPcmlnaW4oJHJlcXVlc3QtPmdldFVyaSgpLCAkbW9kaWZ5Wyd1cmknXSkpIHsKICAgICAgICAgICAgJG1vZGlmeVsncmVtb3ZlX2hlYWRlcnMnXVtdID0gJ0F1dGhvcml6YXRpb24nOwogICAgICAgICAgICAkbW9kaWZ5WydyZW1vdmVfaGVhZGVycyddW10gPSAnQ29va2llJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBQc3I3XFV0aWxzOjptb2RpZnlSZXF1ZXN0KCRyZXF1ZXN0LCAkbW9kaWZ5KTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgYXBwcm9wcmlhdGUgVVJMIG9uIHRoZSByZXF1ZXN0IGJhc2VkIG9uIHRoZSBsb2NhdGlvbiBoZWFkZXIuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHJlZGlyZWN0VXJpKAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlLAogICAgICAgIGFycmF5ICRwcm90b2NvbHMKICAgICk6IFVyaUludGVyZmFjZSB7CiAgICAgICAgJGxvY2F0aW9uID0gUHNyN1xVcmlSZXNvbHZlcjo6cmVzb2x2ZSgKICAgICAgICAgICAgJHJlcXVlc3QtPmdldFVyaSgpLAogICAgICAgICAgICBuZXcgUHNyN1xVcmkoJHJlc3BvbnNlLT5nZXRIZWFkZXJMaW5lKCdMb2NhdGlvbicpKQogICAgICAgICk7CgogICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSByZWRpcmVjdCBVUkkgaXMgYWxsb3dlZCBiYXNlZCBvbiB0aGUgcHJvdG9jb2xzLgogICAgICAgIGlmICghXGluX2FycmF5KCRsb2NhdGlvbi0+Z2V0U2NoZW1lKCksICRwcm90b2NvbHMpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBCYWRSZXNwb25zZUV4Y2VwdGlvbihcc3ByaW50ZignUmVkaXJlY3QgVVJJLCAlcywgZG9lcyBub3QgdXNlIG9uZSBvZiB0aGUgYWxsb3dlZCByZWRpcmVjdCBwcm90b2NvbHM6ICVzJywgJGxvY2F0aW9uLCBcaW1wbG9kZSgnLCAnLCAkcHJvdG9jb2xzKSksICRyZXF1ZXN0LCAkcmVzcG9uc2UpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRsb2NhdGlvbjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/RequestOptions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKLyoqCiAqIFRoaXMgY2xhc3MgY29udGFpbnMgYSBsaXN0IG9mIGJ1aWx0LWluIEd1enpsZSByZXF1ZXN0IG9wdGlvbnMuCiAqCiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvYmxvYi83LjEyL2RvY3MvcmVxdWVzdC1vcHRpb25zLm1kCiAqLwpmaW5hbCBjbGFzcyBSZXF1ZXN0T3B0aW9ucwp7CiAgICAvKioKICAgICAqIGFsbG93X3JlZGlyZWN0czogKGJvb2x8YXJyYXkpIENvbnRyb2xzIHJlZGlyZWN0IGJlaGF2aW9yLiBQYXNzIGZhbHNlCiAgICAgKiB0byBkaXNhYmxlIHJlZGlyZWN0cywgcGFzcyB0cnVlIHRvIGVuYWJsZSByZWRpcmVjdHMsIHBhc3MgYW4KICAgICAqIGFzc29jaWF0aXZlIHRvIHByb3ZpZGUgY3VzdG9tIHJlZGlyZWN0IHNldHRpbmdzLiBEZWZhdWx0cyB0byAiZmFsc2UiLgogICAgICogVGhpcyBvcHRpb24gb25seSB3b3JrcyBpZiB5b3VyIGhhbmRsZXIgaGFzIHRoZSBSZWRpcmVjdE1pZGRsZXdhcmUuIFdoZW4KICAgICAqIHBhc3NpbmcgYW4gYXNzb2NpYXRpdmUgYXJyYXksIHlvdSBjYW4gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGtleSB2YWx1ZQogICAgICogcGFpcnM6CiAgICAgKgogICAgICogLSBtYXg6IChpbnQsIGRlZmF1bHQ9NSkgbWF4aW11bSBudW1iZXIgb2YgYWxsb3dlZCByZWRpcmVjdHMuCiAgICAgKiAtIHN0cmljdDogKGJvb2wsIGRlZmF1bHQ9ZmFsc2UpIFNldCB0byB0cnVlIHRvIHVzZSBzdHJpY3QgcmVkaXJlY3RzCiAgICAgKiAgIG1lYW5pbmcgcmVkaXJlY3QgUE9TVCByZXF1ZXN0cyB3aXRoIFBPU1QgcmVxdWVzdHMgdnMuIGRvaW5nIHdoYXQgbW9zdAogICAgICogICBicm93c2VycyBkbyB3aGljaCBpcyByZWRpcmVjdCBQT1NUIHJlcXVlc3RzIHdpdGggR0VUIHJlcXVlc3RzCiAgICAgKiAtIHJlZmVyZXI6IChib29sLCBkZWZhdWx0PWZhbHNlKSBTZXQgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIFJlZmVyZXIKICAgICAqICAgaGVhZGVyLgogICAgICogLSBwcm90b2NvbHM6IChub24tZW1wdHktYXJyYXk8YXJyYXkta2V5LCBzdHJpbmc+LCBkZWZhdWx0PVsnaHR0cCcsICdodHRwcyddKQogICAgICogICBBbGxvd2VkIHJlZGlyZWN0IHByb3RvY29scy4gUmVkaXJlY3QgbWF0Y2hpbmcgaXMgY2FzZS1zZW5zaXRpdmU7IHVzZQogICAgICogICAiaHR0cCIgYW5kICJodHRwcyIuCiAgICAgKiAtIG9uX3JlZGlyZWN0OiAoY2FsbGFibGUpIFBIUCBjYWxsYWJsZSB0aGF0IGlzIGludm9rZWQgd2hlbiBhIHJlZGlyZWN0CiAgICAgKiAgIGlzIGVuY291bnRlcmVkLiBUaGUgY2FsbGFibGUgaXMgaW52b2tlZCB3aXRoIHRoZSByZXF1ZXN0LCB0aGUgcmVkaXJlY3QKICAgICAqICAgcmVzcG9uc2UgdGhhdCB3YXMgcmVjZWl2ZWQsIGFuZCB0aGUgZWZmZWN0aXZlIFVSSS4gQW55IHJldHVybiB2YWx1ZQogICAgICogICBmcm9tIHRoZSBvbl9yZWRpcmVjdCBmdW5jdGlvbiBpcyBpZ25vcmVkLgogICAgICogLSB0cmFja19yZWRpcmVjdHM6IChib29sLCBkZWZhdWx0PWZhbHNlKSBUcmFjayByZWRpcmVjdGVkIFVSSSBhbmQgc3RhdHVzCiAgICAgKiAgIGhpc3RvcnkgaW4gcmVzcG9uc2UgaGVhZGVycy4KICAgICAqLwogICAgcHVibGljIGNvbnN0IEFMTE9XX1JFRElSRUNUUyA9ICdhbGxvd19yZWRpcmVjdHMnOwoKICAgIC8qKgogICAgICogYXV0aDogKGFycmF5ezA6IHN0cmluZywgMTogc3RyaW5nLCAyPzogc3RyaW5nfG51bGx9fHN0cmluZ3xmYWxzZXxudWxsKQogICAgICogUGFzcyBhbiBhcnJheSBvZiBIVFRQIGF1dGhlbnRpY2F0aW9uIHBhcmFtZXRlcnMgdG8gdXNlIHdpdGggdGhlIHJlcXVlc3QuCiAgICAgKiBUaGUgYXJyYXkgbXVzdCBjb250YWluIHRoZSB1c2VybmFtZSBpbiBpbmRleCBbMF0sIHRoZSBwYXNzd29yZCBpbiBpbmRleAogICAgICogWzFdLCBhbmQgeW91IGNhbiBvcHRpb25hbGx5IHByb3ZpZGUgYSBidWlsdC1pbiBhdXRoZW50aWNhdGlvbiB0eXBlIGluCiAgICAgKiBpbmRleCBbMl0uIFBhc3MgZmFsc2Ugb3IgbnVsbCB0byBkaXNhYmxlIGF1dGhlbnRpY2F0aW9uIGZvciBhIHJlcXVlc3QuCiAgICAgKiBTdHJpbmcgdmFsdWVzIGFyZSBwYXNzZWQgdGhyb3VnaCBmb3IgY3VzdG9tIGhhbmRsZXJzLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgQVVUSCA9ICdhdXRoJzsKCiAgICAvKioKICAgICAqIGJvZHk6IChyZXNvdXJjZXxzdHJpbmd8bnVsbHxpbnR8ZmxvYXR8Ym9vbHxcUHNyXEh0dHBcTWVzc2FnZVxTdHJlYW1JbnRlcmZhY2V8KGNhbGxhYmxlJm9iamVjdCl8XEl0ZXJhdG9yfFxTdHJpbmdhYmxlKQogICAgICogQm9keSB0byBzZW5kIGluIHRoZSByZXF1ZXN0LiBDYWxsYWJsZSBhcnJheXMgYXJlIGFycmF5cywgYW5kIGFycmF5cyBhcmUKICAgICAqIG5vdCB2YWxpZCBib2R5IHZhbHVlcyBpbiBHdXp6bGUuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBCT0RZID0gJ2JvZHknOwoKICAgIC8qKgogICAgICogY2VydDogKHN0cmluZ3xhcnJheXswOiBzdHJpbmcsIDE/OiBzdHJpbmd8bnVsbH0pIFNldCB0byBhIHN0cmluZyB0bwogICAgICogc3BlY2lmeSB0aGUgcGF0aCB0byBhIGNsaWVudCBjZXJ0aWZpY2F0ZSBmaWxlLiBQRU0gaXMgdGhlIGRlZmF1bHQKICAgICAqIGNlcnRpZmljYXRlIGZvcm1hdC4gSWYgYSBwYXNzd29yZCBpcyByZXF1aXJlZCwgc2V0IGNlcnQgdG8gYW4gYXJyYXkKICAgICAqIGNvbnRhaW5pbmcgdGhlIGNlcnRpZmljYXRlIHBhdGggaW4gdGhlIGZpcnN0IGFycmF5IGVsZW1lbnQgZm9sbG93ZWQgYnkKICAgICAqIHRoZSBjZXJ0aWZpY2F0ZSBwYXNzd29yZCBpbiB0aGUgc2Vjb25kIGFycmF5IGVsZW1lbnQuIEEgbnVsbCBwYXNzd29yZCBpcwogICAgICogdHJlYXRlZCB0aGUgc2FtZSBhcyBvbWl0dGluZyBpdC4gVXNlIGNlcnRfdHlwZSB0byBzcGVjaWZ5IGFub3RoZXIKICAgICAqIHN1cHBvcnRlZCBjZXJ0aWZpY2F0ZSBmb3JtYXQuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBDRVJUID0gJ2NlcnQnOwoKICAgIC8qKgogICAgICogY2VydF90eXBlOiAoc3RyaW5nKSBTcGVjaWZ5IHRoZSBTU0wgY2xpZW50IGNlcnRpZmljYXRlIGZpbGUgdHlwZS4KICAgICAqLwogICAgcHVibGljIGNvbnN0IENFUlRfVFlQRSA9ICdjZXJ0X3R5cGUnOwoKICAgIC8qKgogICAgICogY29va2llczogKGZhbHNlfEd1enpsZUh0dHBcQ29va2llXENvb2tpZUphckludGVyZmFjZSwgZGVmYXVsdD1mYWxzZSkKICAgICAqIFNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCBjb29raWVzIGFyZSB1c2VkIGluIGEgcmVxdWVzdCBvciB3aGF0IGNvb2tpZQogICAgICogamFyIHRvIHVzZSBvciB3aGF0IGNvb2tpZXMgdG8gc2VuZC4gVGhpcyBvcHRpb24gb25seSB3b3JrcyBpZiB5b3VyCiAgICAgKiBoYW5kbGVyIGhhcyB0aGUgYGNvb2tpZWAgbWlkZGxld2FyZS4gVmFsaWQgdmFsdWVzIGFyZSBgZmFsc2VgIGFuZAogICAgICogYW4gaW5zdGFuY2Ugb2Yge0BzZWUgQ29va2llXENvb2tpZUphckludGVyZmFjZX0uCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBDT09LSUVTID0gJ2Nvb2tpZXMnOwoKICAgIC8qKgogICAgICogY29ubmVjdF90aW1lb3V0OiAoaW50fGZsb2F0LCBkZWZhdWx0PTApIE51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgd2hpbGUKICAgICAqIHRyeWluZyB0byBjb25uZWN0IHRvIGEgc2VydmVyLiBVc2UgMCB0byB3YWl0IDMwMCBzZWNvbmRzICh0aGUgZGVmYXVsdAogICAgICogYmVoYXZpb3IpLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgQ09OTkVDVF9USU1FT1VUID0gJ2Nvbm5lY3RfdGltZW91dCc7CgogICAgLyoqCiAgICAgKiBjcnlwdG9fbWV0aG9kOiAoaW50KSBBIHZhbHVlIGRlc2NyaWJpbmcgdGhlIG1pbmltdW0gVExTIHByb3RvY29sCiAgICAgKiB2ZXJzaW9uIHRvIHVzZS4KICAgICAqCiAgICAgKiBUaGlzIHNldHRpbmcgbXVzdCBiZSBzZXQgdG8gb25lIG9mIHRoZQogICAgICogYGBTVFJFQU1fQ1JZUFRPX01FVEhPRF9UTFMqX0NMSUVOVGBgIGNvbnN0YW50cy4gUEhQIDcuNCBvciBoaWdoZXIgaXMKICAgICAqIHJlcXVpcmVkIGluIG9yZGVyIHRvIHVzZSBUTFMgMS4zLCBhbmQgY1VSTCA3LjM0LjAgb3IgaGlnaGVyIGlzIHJlcXVpcmVkCiAgICAgKiBpbiBvcmRlciB0byBzcGVjaWZ5IGEgY3J5cHRvIG1ldGhvZCwgd2l0aCBjVVJMIDcuNTIuMCBvciBoaWdoZXIgYmVpbmcKICAgICAqIHJlcXVpcmVkIHRvIHVzZSBUTFMgMS4zLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgQ1JZUFRPX01FVEhPRCA9ICdjcnlwdG9fbWV0aG9kJzsKCiAgICAvKioKICAgICAqIGN1cmw6IChhcnJheSkgUmF3IGNVUkwgb3B0aW9ucyB0byBhcHBseSB3aGVuIHVzaW5nIGEgYnVpbHQtaW4gY1VSTCBoYW5kbGVyLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgQ1VSTCA9ICdjdXJsJzsKCiAgICAvKioKICAgICAqIGRlYnVnOiAoYm9vbHxyZXNvdXJjZSkgU2V0IHRvIHRydWUgb3Igc2V0IHRvIGEgUEhQIHN0cmVhbSByZXR1cm5lZCBieQogICAgICogZm9wZW4oKSAgZW5hYmxlIGRlYnVnIG91dHB1dCB3aXRoIHRoZSBIVFRQIGhhbmRsZXIgdXNlZCB0byBzZW5kIGEKICAgICAqIHJlcXVlc3QuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBERUJVRyA9ICdkZWJ1Zyc7CgogICAgLyoqCiAgICAgKiBkZWNvZGVfY29udGVudDogKGJvb2x8c3RyaW5nLCBkZWZhdWx0PXRydWUpIFNwZWNpZnkgd2hldGhlciBvciBub3QKICAgICAqIENvbnRlbnQtRW5jb2RpbmcgcmVzcG9uc2VzIChnemlwLCBkZWZsYXRlLCBldGMuKSBhcmUgYXV0b21hdGljYWxseQogICAgICogZGVjb2RlZC4KICAgICAqLwogICAgcHVibGljIGNvbnN0IERFQ09ERV9DT05URU5UID0gJ2RlY29kZV9jb250ZW50JzsKCiAgICAvKioKICAgICAqIGRlbGF5OiAoaW50fGZsb2F0KSBUaGUgYW1vdW50IG9mIHRpbWUgdG8gZGVsYXkgYmVmb3JlIHNlbmRpbmcgaW4KICAgICAqIG1pbGxpc2Vjb25kcy4KICAgICAqLwogICAgcHVibGljIGNvbnN0IERFTEFZID0gJ2RlbGF5JzsKCiAgICAvKioKICAgICAqIGV4cGVjdDogKGJvb2x8aW50ZWdlcikgQ29udHJvbHMgdGhlIGJlaGF2aW9yIG9mIHRoZQogICAgICogIkV4cGVjdDogMTAwLUNvbnRpbnVlIiBoZWFkZXIuCiAgICAgKgogICAgICogU2V0IHRvIGB0cnVlYCB0byBlbmFibGUgdGhlICJFeHBlY3Q6IDEwMC1Db250aW51ZSIgaGVhZGVyIGZvciBhbGwKICAgICAqIHJlcXVlc3RzIHRoYXQgc2VuZHMgYSBib2R5LiBTZXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIHRoZQogICAgICogIkV4cGVjdDogMTAwLUNvbnRpbnVlIiBoZWFkZXIgZm9yIGFsbCByZXF1ZXN0cy4gU2V0IHRvIGEgbnVtYmVyIHNvIHRoYXQKICAgICAqIHRoZSBzaXplIG9mIHRoZSBwYXlsb2FkIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBudW1iZXIgaW4gb3JkZXIgdG8gc2VuZAogICAgICogdGhlIEV4cGVjdCBoZWFkZXIuIFNldHRpbmcgdG8gYSBudW1iZXIgd2lsbCBzZW5kIHRoZSBFeHBlY3QgaGVhZGVyIGZvcgogICAgICogYWxsIHJlcXVlc3RzIGluIHdoaWNoIHRoZSBzaXplIG9mIHRoZSBwYXlsb2FkIGNhbm5vdCBiZSBkZXRlcm1pbmVkIG9yCiAgICAgKiB3aGVyZSB0aGUgYm9keSBpcyBub3QgcmV3aW5kYWJsZS4KICAgICAqCiAgICAgKiBCeSBkZWZhdWx0LCBHdXp6bGUgd2lsbCBhZGQgdGhlICJFeHBlY3Q6IDEwMC1Db250aW51ZSIgaGVhZGVyIHdoZW4gdGhlCiAgICAgKiBzaXplIG9mIHRoZSBib2R5IG9mIGEgcmVxdWVzdCBpcyBncmVhdGVyIHRoYW4gMSBNQiBhbmQgYSByZXF1ZXN0IGlzCiAgICAgKiB1c2luZyBIVFRQLzEuMS4KICAgICAqLwogICAgcHVibGljIGNvbnN0IEVYUEVDVCA9ICdleHBlY3QnOwoKICAgIC8qKgogICAgICogZm9ybV9wYXJhbXM6IChhcnJheTxhcnJheS1rZXksIHN0cmluZ3xpbnR8ZmxvYXR8Ym9vbHxudWxsfGFycmF5PikKICAgICAqIEFzc29jaWF0aXZlIGFycmF5IG9mIGZvcm0gZmllbGQgbmFtZXMgdG8gc2NhbGFyLCBudWxsLCBvciBuZXN0ZWQgYXJyYXkKICAgICAqIHZhbHVlcy4gU2V0cyB0aGUgQ29udGVudC1UeXBlIGhlYWRlciB0byBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQKICAgICAqIHdoZW4gbm8gQ29udGVudC1UeXBlIGhlYWRlciBpcyBhbHJlYWR5IHByZXNlbnQuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBGT1JNX1BBUkFNUyA9ICdmb3JtX3BhcmFtcyc7CgogICAgLyoqCiAgICAgKiBoZWFkZXJzOiAoYXJyYXk8YXJyYXkta2V5LCBzdHJpbmd8bm9uLWVtcHR5LWFycmF5PGFycmF5LWtleSwgc3RyaW5nPj58bnVsbCkKICAgICAqIEFzc29jaWF0aXZlIGFycmF5IG9mIEhUVFAgaGVhZGVycy4gRWFjaCB2YWx1ZSBNVVNUIGJlIGEgc3RyaW5nIG9yIG5vbi1lbXB0eQogICAgICogYXJyYXkgb2Ygc3RyaW5ncy4KICAgICAqLwogICAgcHVibGljIGNvbnN0IEhFQURFUlMgPSAnaGVhZGVycyc7CgogICAgLyoqCiAgICAgKiBodHRwX2Vycm9yczogKGJvb2wsIGRlZmF1bHQ9dHJ1ZSkgU2V0IHRvIGZhbHNlIHRvIGRpc2FibGUgZXhjZXB0aW9ucwogICAgICogd2hlbiBhIG5vbi0gc3VjY2Vzc2Z1bCBIVFRQIHJlc3BvbnNlIGlzIHJlY2VpdmVkLiBCeSBkZWZhdWx0LAogICAgICogZXhjZXB0aW9ucyB3aWxsIGJlIHRocm93biBmb3IgNHh4IGFuZCA1eHggcmVzcG9uc2VzLiBUaGlzIG9wdGlvbiBvbmx5CiAgICAgKiB3b3JrcyBpZiB5b3VyIGhhbmRsZXIgaGFzIHRoZSBgaHR0cEVycm9yc2AgbWlkZGxld2FyZS4KICAgICAqLwogICAgcHVibGljIGNvbnN0IEhUVFBfRVJST1JTID0gJ2h0dHBfZXJyb3JzJzsKCiAgICAvKioKICAgICAqIGlkbl9jb252ZXJzaW9uOiAoYm9vbHxpbnR8bnVsbCwgZGVmYXVsdD1mYWxzZSkgQSBjb21iaW5hdGlvbiBvZiBJRE5BXyoKICAgICAqIGNvbnN0YW50cyBmb3IgUEhQJ3MgaWRuX3RvX2FzY2lpKCkgZnVuY3Rpb24uIFNldCB0byBmYWxzZSBvciBudWxsIHRvCiAgICAgKiBkaXNhYmxlIElETiBzdXBwb3J0LCBvciB0byB0cnVlIHRvIHVzZSB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uCiAgICAgKiAoSUROQV9ERUZBVUxUIGNvbnN0YW50KS4KICAgICAqLwogICAgcHVibGljIGNvbnN0IElETl9DT05WRVJTSU9OID0gJ2lkbl9jb252ZXJzaW9uJzsKCiAgICAvKioKICAgICAqIGpzb246IChtaXhlZCkgQWRkcyBKU09OIGRhdGEgdG8gYSByZXF1ZXN0LiBUaGUgcHJvdmlkZWQgdmFsdWUgaXMgSlNPTgogICAgICogZW5jb2RlZCBhbmQgYSBDb250ZW50LVR5cGUgaGVhZGVyIG9mIGFwcGxpY2F0aW9uL2pzb24gd2lsbCBiZSBhZGRlZCB0bwogICAgICogdGhlIHJlcXVlc3QgaWYgbm8gQ29udGVudC1UeXBlIGhlYWRlciBpcyBhbHJlYWR5IHByZXNlbnQuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBKU09OID0gJ2pzb24nOwoKICAgIC8qKgogICAgICogbXVsdGlwYXJ0OiAoYXJyYXkpIEFycmF5IG9mIHBhcnQgYXJyYXlzLCBlYWNoIGNvbnRhaW5pbmcgYSByZXF1aXJlZAogICAgICogIm5hbWUiIGtleSBtYXBwaW5nIHRvIHRoZSBzdHJpbmcgb3IgaW50ZWdlciBmb3JtIGZpZWxkIG5hbWUsIGEgcmVxdWlyZWQKICAgICAqICJjb250ZW50cyIga2V5IG1hcHBpbmcgdG8gYW55IG5vbi1hcnJheSB2YWx1ZSBhY2NlcHRlZCBieSBQU1ItNwogICAgICogVXRpbHM6OnN0cmVhbUZvcigpIG9yIGEgbmVzdGVkIGFycmF5IG9mIGZpZWxkIHZhbHVlcywgYW4gb3B0aW9uYWwKICAgICAqICJoZWFkZXJzIiBhcnJheSBvZiBzdHJpbmcgY3VzdG9tIGhlYWRlciB2YWx1ZXMsIGFuZCBhbiBvcHRpb25hbAogICAgICogImZpbGVuYW1lIiBrZXkgbWFwcGluZyB0byBhIHN0cmluZyB0byBzZW5kIGFzIHRoZSBmaWxlbmFtZSBpbiB0aGUgcGFydC4KICAgICAqICJoZWFkZXJzIiBhbmQgImZpbGVuYW1lIiBjYW5ub3QgYmUgdXNlZCB3aGVuICJjb250ZW50cyIgaXMgYW4gYXJyYXkuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBNVUxUSVBBUlQgPSAnbXVsdGlwYXJ0JzsKCiAgICAvKioKICAgICAqIG9uX2hlYWRlcnM6IChjYWxsYWJsZSkgQSBjYWxsYWJsZSB0aGF0IGlzIGludm9rZWQgd2hlbiB0aGUgSFRUUCBoZWFkZXJzCiAgICAgKiBvZiB0aGUgcmVzcG9uc2UgaGF2ZSBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgYm9keSBoYXMgbm90IHlldCBiZWd1biB0bwogICAgICogZG93bmxvYWQuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBPTl9IRUFERVJTID0gJ29uX2hlYWRlcnMnOwoKICAgIC8qKgogICAgICogb25fc3RhdHM6IChjYWxsYWJsZSkgYWxsb3dzIHlvdSB0byBnZXQgYWNjZXNzIHRvIHRyYW5zZmVyIHN0YXRpc3RpY3Mgb2YKICAgICAqIGEgcmVxdWVzdCBhbmQgYWNjZXNzIHRoZSBsb3dlciBsZXZlbCB0cmFuc2ZlciBkZXRhaWxzIG9mIHRoZSBoYW5kbGVyCiAgICAgKiBhc3NvY2lhdGVkIHdpdGggeW91ciBjbGllbnQuIGBgb25fc3RhdHNgYCBpcyBhIGNhbGxhYmxlIHRoYXQgaXMgaW52b2tlZAogICAgICogd2hlbiBhIGhhbmRsZXIgaGFzIGZpbmlzaGVkIHNlbmRpbmcgYSByZXF1ZXN0LiBUaGUgY2FsbGJhY2sgaXMgaW52b2tlZAogICAgICogd2l0aCB0cmFuc2ZlciBzdGF0aXN0aWNzIGFib3V0IHRoZSByZXF1ZXN0LCB0aGUgcmVzcG9uc2UgcmVjZWl2ZWQsIG9yCiAgICAgKiB0aGUgZXJyb3IgZW5jb3VudGVyZWQuIEluY2x1ZGVkIGluIHRoZSBkYXRhIGlzIHRoZSB0b3RhbCBhbW91bnQgb2YgdGltZQogICAgICogdGFrZW4gdG8gc2VuZCB0aGUgcmVxdWVzdC4KICAgICAqLwogICAgcHVibGljIGNvbnN0IE9OX1NUQVRTID0gJ29uX3N0YXRzJzsKCiAgICAvKioKICAgICAqIHByb2dyZXNzOiAoY2FsbGFibGUpIERlZmluZXMgYSBmdW5jdGlvbiB0byBpbnZva2Ugd2hlbiB0cmFuc2ZlcgogICAgICogcHJvZ3Jlc3MgaXMgbWFkZS4gVGhlIGZ1bmN0aW9uIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBwb3NpdGlvbmFsCiAgICAgKiBhcmd1bWVudHM6IHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgZXhwZWN0ZWQgdG8gYmUgZG93bmxvYWRlZCwgdGhlCiAgICAgKiBudW1iZXIgb2YgYnl0ZXMgZG93bmxvYWRlZCBzbyBmYXIsIHRoZSBudW1iZXIgb2YgYnl0ZXMgZXhwZWN0ZWQgdG8gYmUKICAgICAqIHVwbG9hZGVkLCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHVwbG9hZGVkIHNvIGZhci4KICAgICAqLwogICAgcHVibGljIGNvbnN0IFBST0dSRVNTID0gJ3Byb2dyZXNzJzsKCiAgICAvKioKICAgICAqIHByb3RvY29sczogKG5vbi1lbXB0eS1hcnJheTxhcnJheS1rZXksIHN0cmluZz4sIGRlZmF1bHQ9WydodHRwJywgJ2h0dHBzJ10pCiAgICAgKiBBbGxvd2VkIFVSSSBzY2hlbWVzLiBCdWlsdC1pbiBoYW5kbGVycyBhY2NlcHQgb25seSB0aGUgY2FzZS1zZW5zaXRpdmUKICAgICAqIHZhbHVlcyAiaHR0cCIgYW5kICJodHRwcyIuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBQUk9UT0NPTFMgPSAncHJvdG9jb2xzJzsKCiAgICAvKioKICAgICAqIHByb3h5OiAoc3RyaW5nfGFycmF5KSBQYXNzIGEgc3RyaW5nIHRvIHNwZWNpZnkgYW4gSFRUUCBwcm94eSwgb3IgYW4KICAgICAqIGFycmF5IHRvIHNwZWNpZnkgZGlmZmVyZW50IHByb3hpZXMgZm9yIGRpZmZlcmVudCBwcm90b2NvbHMgKHdoZXJlIHRoZQogICAgICoga2V5IGlzIHRoZSBwcm90b2NvbCBhbmQgdGhlIHZhbHVlIGlzIGEgcHJveHkgc3RyaW5nIG9yIG51bGwpLiBQcm92aWRlIGEKICAgICAqICJubyIga2V5IGFzIGEgY29tbWEtZGVsaW1pdGVkIHN0cmluZywgYXJyYXkgb2Ygc3RyaW5ncywgb3IgbnVsbCB0bwogICAgICogc3BlY2lmeSBob3N0cyBvciBob3N0LWFuZC1wb3J0IHBhaXJzIHRoYXQgc2hvdWxkIG5vdCBiZSBwcm94aWVkLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgUFJPWFkgPSAncHJveHknOwoKICAgIC8qKgogICAgICogcXVlcnk6IChhcnJheTxhcnJheS1rZXksIG1peGVkPnxzdHJpbmcpIEFzc29jaWF0aXZlIGFycmF5IG9mIHF1ZXJ5IHN0cmluZwogICAgICogdmFsdWVzIHRvIGFkZCB0byB0aGUgcmVxdWVzdC4gVGhpcyBvcHRpb24gdXNlcyBQSFAncyBodHRwX2J1aWxkX3F1ZXJ5KCkKICAgICAqIHRvIGNyZWF0ZSB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiBQYXNzIGEgc3RyaW5nIHZhbHVlIGlmIHlvdSBuZWVkCiAgICAgKiBtb3JlIGNvbnRyb2wgdGhhbiB3aGF0IHRoaXMgbWV0aG9kIHByb3ZpZGVzCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBRVUVSWSA9ICdxdWVyeSc7CgogICAgLyoqCiAgICAgKiBzaW5rOiAocmVzb3VyY2V8c3RyaW5nfFxQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZSkgV2hlcmUgdGhlIGRhdGEKICAgICAqIG9mIHRoZSByZXNwb25zZSBpcyB3cml0dGVuIHRvLiBEZWZhdWx0cyB0byBhIFBIUCB0ZW1wIHN0cmVhbS4gUHJvdmlkaW5nCiAgICAgKiBhIHN0cmluZyB3aWxsIHdyaXRlIGRhdGEgdG8gYSBmaWxlIGJ5IHRoZSBnaXZlbiBuYW1lLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgU0lOSyA9ICdzaW5rJzsKCiAgICAvKioKICAgICAqIHN5bmNocm9ub3VzOiAoYm9vbCkgU2V0IHRvIHRydWUgdG8gaW5mb3JtIEhUVFAgaGFuZGxlcnMgdGhhdCB5b3UgaW50ZW5kCiAgICAgKiBvbiB3YWl0aW5nIG9uIHRoZSByZXNwb25zZS4gVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBvcHRpbWl6YXRpb25zLiBOb3RlCiAgICAgKiB0aGF0IGEgcHJvbWlzZSBpcyBzdGlsbCByZXR1cm5lZCBpZiB5b3UgYXJlIHVzaW5nIG9uZSBvZiB0aGUgYXN5bmMKICAgICAqIGNsaWVudCBtZXRob2RzLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgU1lOQ0hST05PVVMgPSAnc3luY2hyb25vdXMnOwoKICAgIC8qKgogICAgICogc3NsX2tleTogKGFycmF5ezA6IHN0cmluZywgMT86IHN0cmluZ3xudWxsfXxzdHJpbmcpIFNwZWNpZnkgdGhlIHBhdGggdG8KICAgICAqIGEgcHJpdmF0ZSBTU0wga2V5IGZpbGUuIFBFTSBpcyB0aGUgZGVmYXVsdCBwcml2YXRlIGtleSBmb3JtYXQuIElmIGEKICAgICAqIHBhc3N3b3JkIGlzIHJlcXVpcmVkLCBzZXQgc3NsX2tleSB0byBhbiBhcnJheSBjb250YWluaW5nIHRoZSBrZXkgcGF0aCBpbgogICAgICogdGhlIGZpcnN0IGFycmF5IGVsZW1lbnQgZm9sbG93ZWQgYnkgdGhlIGtleSBwYXNzd29yZCBpbiB0aGUgc2Vjb25kCiAgICAgKiBlbGVtZW50LiBBIG51bGwgcGFzc3dvcmQgaXMgdHJlYXRlZCB0aGUgc2FtZSBhcyBvbWl0dGluZyBpdC4gVXNlCiAgICAgKiBzc2xfa2V5X3R5cGUgdG8gc3BlY2lmeSBhbm90aGVyIHN1cHBvcnRlZCBrZXkgZm9ybWF0LgogICAgICovCiAgICBwdWJsaWMgY29uc3QgU1NMX0tFWSA9ICdzc2xfa2V5JzsKCiAgICAvKioKICAgICAqIHNzbF9rZXlfdHlwZTogKHN0cmluZykgU3BlY2lmeSB0aGUgU1NMIHByaXZhdGUga2V5IGZpbGUgdHlwZS4KICAgICAqLwogICAgcHVibGljIGNvbnN0IFNTTF9LRVlfVFlQRSA9ICdzc2xfa2V5X3R5cGUnOwoKICAgIC8qKgogICAgICogc3RyZWFtOiAoYm9vbCkgU2V0IHRvIHRydWUgdG8gYXR0ZW1wdCB0byBzdHJlYW0gYSByZXNwb25zZSByYXRoZXIgdGhhbgogICAgICogZG93bmxvYWQgaXQgYWxsIHVwLWZyb250LgogICAgICovCiAgICBwdWJsaWMgY29uc3QgU1RSRUFNID0gJ3N0cmVhbSc7CgogICAgLyoqCiAgICAgKiBzdHJlYW1fY29udGV4dDogKGFycmF5KSBQSFAgc3RyZWFtIGNvbnRleHQgb3B0aW9ucyB0byBtZXJnZSBpbnRvIHRoZQogICAgICogY29udGV4dCB1c2VkIGJ5IHRoZSBidWlsdC1pbiBzdHJlYW0gaGFuZGxlci4KICAgICAqLwogICAgcHVibGljIGNvbnN0IFNUUkVBTV9DT05URVhUID0gJ3N0cmVhbV9jb250ZXh0JzsKCiAgICAvKioKICAgICAqIHZlcmlmeTogKGJvb2x8c3RyaW5nLCBkZWZhdWx0PXRydWUpIERlc2NyaWJlcyB0aGUgU1NMIGNlcnRpZmljYXRlCiAgICAgKiB2ZXJpZmljYXRpb24gYmVoYXZpb3Igb2YgYSByZXF1ZXN0LiBTZXQgdG8gdHJ1ZSB0byBlbmFibGUgU1NMCiAgICAgKiBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gdXNpbmcgdGhlIHN5c3RlbSBDQSBidW5kbGUgd2hlbiBhdmFpbGFibGUKICAgICAqICh0aGUgZGVmYXVsdCkuIFNldCB0byBmYWxzZSB0byBkaXNhYmxlIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiAodGhpcwogICAgICogaXMgaW5zZWN1cmUhKS4gU2V0IHRvIGEgc3RyaW5nIHRvIHByb3ZpZGUgdGhlIHBhdGggdG8gYSBDQSBidW5kbGUgb24KICAgICAqIGRpc2sgdG8gZW5hYmxlIHZlcmlmaWNhdGlvbiB1c2luZyBhIGN1c3RvbSBjZXJ0aWZpY2F0ZS4KICAgICAqLwogICAgcHVibGljIGNvbnN0IFZFUklGWSA9ICd2ZXJpZnknOwoKICAgIC8qKgogICAgICogdGltZW91dDogKGludHxmbG9hdCwgZGVmYXVsdD0wKSBOdW1iZXIgZGVzY3JpYmluZyB0aGUgdGltZW91dCBvZiB0aGUKICAgICAqIHJlcXVlc3QgaW4gc2Vjb25kcy4gVXNlIDAgdG8gd2FpdCBpbmRlZmluaXRlbHkgKHRoZSBkZWZhdWx0IGJlaGF2aW9yKS4KICAgICAqLwogICAgcHVibGljIGNvbnN0IFRJTUVPVVQgPSAndGltZW91dCc7CgogICAgLyoqCiAgICAgKiByZWFkX3RpbWVvdXQ6IChpbnR8ZmxvYXQsIGRlZmF1bHQ9ZGVmYXVsdF9zb2NrZXRfdGltZW91dCBpbmkgc2V0dGluZykKICAgICAqIE51bWJlciBkZXNjcmliaW5nIHRoZSBib2R5IHJlYWQgdGltZW91dCwgZm9yIHN0cmVhbSByZXF1ZXN0cy4KICAgICAqLwogICAgcHVibGljIGNvbnN0IFJFQURfVElNRU9VVCA9ICdyZWFkX3RpbWVvdXQnOwoKICAgIC8qKgogICAgICogcmV0cmllczogKGludCkgQ3VycmVudCByZXRyeSBjb3VudCB1c2VkIGJ5IHRoZSByZXRyeSBtaWRkbGV3YXJlLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgUkVUUklFUyA9ICdyZXRyaWVzJzsKCiAgICAvKioKICAgICAqIHZlcnNpb246IChzdHJpbmd8aW50fGZsb2F0KSBTcGVjaWZpZXMgdGhlIEhUVFAgcHJvdG9jb2wgdmVyc2lvbiB0byBhdHRlbXB0CiAgICAgKiB0byB1c2UuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBWRVJTSU9OID0gJ3ZlcnNpb24nOwoKICAgIC8qKgogICAgICogZm9yY2VfaXBfcmVzb2x2ZTogKHN0cmluZykgU2V0IHRvICJ2NCIgdG8gZm9yY2UgSVB2NCByZXNvbHV0aW9uIG9yICJ2NiIKICAgICAqIGZvciBJUHY2IHJlc29sdXRpb24gd2hlbiBzdXBwb3J0ZWQgYnkgdGhlIGhhbmRsZXIuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBGT1JDRV9JUF9SRVNPTFZFID0gJ2ZvcmNlX2lwX3Jlc29sdmUnOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcUHJvbWlzZSBhcyBQOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwoKLyoqCiAqIE1pZGRsZXdhcmUgdGhhdCByZXRyaWVzIHJlcXVlc3RzIGJhc2VkIG9uIHRoZSBib29sZWFuIHJlc3VsdCBvZgogKiBpbnZva2luZyB0aGUgcHJvdmlkZWQgImRlY2lkZXIiIGZ1bmN0aW9uLgogKgogKiBAZmluYWwKICovCmNsYXNzIFJldHJ5TWlkZGxld2FyZQp7CiAgICAvKioKICAgICAqIEB2YXIgY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJG5leHRIYW5kbGVyOwoKICAgIC8qKgogICAgICogQHZhciBjYWxsYWJsZQogICAgICovCiAgICBwcml2YXRlICRkZWNpZGVyOwoKICAgIC8qKgogICAgICogQHZhciBjYWxsYWJsZShpbnQpCiAgICAgKi8KICAgIHByaXZhdGUgJGRlbGF5OwoKICAgIC8qKgogICAgICogQHBhcmFtIGNhbGxhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVjaWRlciAgICAgRnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBudW1iZXIgb2YgcmV0cmllcywKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgcmVxdWVzdCwgW3Jlc3BvbnNlXSwgYW5kIFtleGNlcHRpb25dIGFuZAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJucyB0cnVlIGlmIHRoZSByZXF1ZXN0IGlzIHRvIGJlCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyaWVkLgogICAgICogQHBhcmFtIGNhbGxhYmxlKFJlcXVlc3RJbnRlcmZhY2UsIGFycmF5KTogUHJvbWlzZUludGVyZmFjZSAkbmV4dEhhbmRsZXIgTmV4dCBoYW5kbGVyIHRvIGludm9rZS4KICAgICAqIEBwYXJhbSAoY2FsbGFibGUoaW50KTogaW50KXxudWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlbGF5ICAgICAgIEZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbnVtYmVyIG9mIHJldHJpZXMKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByZXR1cm5zIHRoZSBudW1iZXIgb2YKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbGxpc2Vjb25kcyB0byBkZWxheS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGNhbGxhYmxlICRkZWNpZGVyLCBjYWxsYWJsZSAkbmV4dEhhbmRsZXIsID9jYWxsYWJsZSAkZGVsYXkgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5kZWNpZGVyID0gJGRlY2lkZXI7CiAgICAgICAgJHRoaXMtPm5leHRIYW5kbGVyID0gJG5leHRIYW5kbGVyOwogICAgICAgICR0aGlzLT5kZWxheSA9ICRkZWxheSA/OiBzdGF0aWMgZnVuY3Rpb24gKGludCAkcmV0cmllcyk6IGludCB7CiAgICAgICAgICAgIHJldHVybiAoaW50KSAyICoqICgkcmV0cmllcyAtIDEpICogMTAwMDsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogRGVmYXVsdCBleHBvbmVudGlhbCBiYWNrb2ZmIGRlbGF5IGZ1bmN0aW9uLgogICAgICoKICAgICAqIEByZXR1cm4gaW50IG1pbGxpc2Vjb25kcy4KICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSA3LjExLCB3aWxsIGJlIHJlbW92ZWQgaW4gOC4wLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGV4cG9uZW50aWFsRGVsYXkoaW50ICRyZXRyaWVzKTogaW50CiAgICB7CiAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oJ2d1enpsZWh0dHAvZ3V6emxlJywgJzcuMTEnLCAnJXM6OiVzKCkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDguMC4nLCBfX0NMQVNTX18sIF9fRlVOQ1RJT05fXyk7CgogICAgICAgIHJldHVybiAoaW50KSAyICoqICgkcmV0cmllcyAtIDEpICogMTAwMDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19pbnZva2UoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkb3B0aW9uc1sncmV0cmllcyddKSkgewogICAgICAgICAgICAkb3B0aW9uc1sncmV0cmllcyddID0gMDsKICAgICAgICB9CgogICAgICAgICRmbiA9ICR0aGlzLT5uZXh0SGFuZGxlcjsKCiAgICAgICAgcmV0dXJuICRmbigkcmVxdWVzdCwgJG9wdGlvbnMpCiAgICAgICAgICAgIC0+dGhlbigKICAgICAgICAgICAgICAgICR0aGlzLT5vbkZ1bGZpbGxlZCgkcmVxdWVzdCwgJG9wdGlvbnMpLAogICAgICAgICAgICAgICAgJHRoaXMtPm9uUmVqZWN0ZWQoJHJlcXVlc3QsICRvcHRpb25zKQogICAgICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogRXhlY3V0ZSBmdWxmaWxsZWQgY2xvc3VyZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG9uRnVsZmlsbGVkKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKTogY2FsbGFibGUKICAgIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCR2YWx1ZSkgdXNlICgkcmVxdWVzdCwgJG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCEoJHRoaXMtPmRlY2lkZXIpKAogICAgICAgICAgICAgICAgJG9wdGlvbnNbJ3JldHJpZXMnXSwKICAgICAgICAgICAgICAgICRyZXF1ZXN0LAogICAgICAgICAgICAgICAgJHZhbHVlLAogICAgICAgICAgICAgICAgbnVsbAogICAgICAgICAgICApKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmRvUmV0cnkoJHJlcXVlc3QsICRvcHRpb25zLCAkdmFsdWUpOwogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBFeGVjdXRlIHJlamVjdGVkIGNsb3N1cmUKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBvblJlamVjdGVkKFJlcXVlc3RJbnRlcmZhY2UgJHJlcSwgYXJyYXkgJG9wdGlvbnMpOiBjYWxsYWJsZQogICAgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoJHJlYXNvbikgdXNlICgkcmVxLCAkb3B0aW9ucykgewogICAgICAgICAgICBpZiAoISgkdGhpcy0+ZGVjaWRlcikoCiAgICAgICAgICAgICAgICAkb3B0aW9uc1sncmV0cmllcyddLAogICAgICAgICAgICAgICAgJHJlcSwKICAgICAgICAgICAgICAgIG51bGwsCiAgICAgICAgICAgICAgICAkcmVhc29uCiAgICAgICAgICAgICkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBQXENyZWF0ZTo6cmVqZWN0aW9uRm9yKCRyZWFzb24pOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmRvUmV0cnkoJHJlcSwgJG9wdGlvbnMpOwogICAgICAgIH07CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBkb1JldHJ5KFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zLCA/UmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlID0gbnVsbCk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkb3B0aW9uc1snZGVsYXknXSA9ICgkdGhpcy0+ZGVsYXkpKCsrJG9wdGlvbnNbJ3JldHJpZXMnXSwgJHJlc3BvbnNlLCAkcmVxdWVzdCk7CgogICAgICAgIHJldHVybiAkdGhpcygkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/TransferStats.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCi8qKgogKiBSZXByZXNlbnRzIGRhdGEgYXQgdGhlIHBvaW50IGFmdGVyIGl0IHdhcyB0cmFuc2ZlcnJlZCBlaXRoZXIgc3VjY2Vzc2Z1bGx5CiAqIG9yIGFmdGVyIGEgbmV0d29yayBlcnJvci4KICovCmZpbmFsIGNsYXNzIFRyYW5zZmVyU3RhdHMKewogICAgLyoqCiAgICAgKiBAdmFyIFJlcXVlc3RJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkcmVxdWVzdDsKCiAgICAvKioKICAgICAqIEB2YXIgUmVzcG9uc2VJbnRlcmZhY2V8bnVsbAogICAgICovCiAgICBwcml2YXRlICRyZXNwb25zZTsKCiAgICAvKioKICAgICAqIEB2YXIgZmxvYXR8bnVsbAogICAgICovCiAgICBwcml2YXRlICR0cmFuc2ZlclRpbWU7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGhhbmRsZXJTdGF0czsKCiAgICAvKioKICAgICAqIEB2YXIgbWl4ZWR8bnVsbAogICAgICovCiAgICBwcml2YXRlICRoYW5kbGVyRXJyb3JEYXRhOwoKICAgIC8qKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgICAgICAgJHJlcXVlc3QgICAgICAgICAgUmVxdWVzdCB0aGF0IHdhcyBzZW50LgogICAgICogQHBhcmFtIFJlc3BvbnNlSW50ZXJmYWNlfG51bGwgJHJlc3BvbnNlICAgICAgICAgUmVzcG9uc2UgcmVjZWl2ZWQgKGlmIGFueSkKICAgICAqIEBwYXJhbSBmbG9hdHxudWxsICAgICAgICAgICAgICR0cmFuc2ZlclRpbWUgICAgIFRvdGFsIGhhbmRsZXIgdHJhbnNmZXIgdGltZS4KICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAgICRoYW5kbGVyRXJyb3JEYXRhIEhhbmRsZXIgZXJyb3IgZGF0YS4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICRoYW5kbGVyU3RhdHMgICAgIEhhbmRsZXIgc3BlY2lmaWMgc3RhdHMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LAogICAgICAgID9SZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UgPSBudWxsLAogICAgICAgID9mbG9hdCAkdHJhbnNmZXJUaW1lID0gbnVsbCwKICAgICAgICAkaGFuZGxlckVycm9yRGF0YSA9IG51bGwsCiAgICAgICAgYXJyYXkgJGhhbmRsZXJTdGF0cyA9IFtdCiAgICApIHsKICAgICAgICAkdGhpcy0+cmVxdWVzdCA9ICRyZXF1ZXN0OwogICAgICAgICR0aGlzLT5yZXNwb25zZSA9ICRyZXNwb25zZTsKICAgICAgICAkdGhpcy0+dHJhbnNmZXJUaW1lID0gJHRyYW5zZmVyVGltZTsKICAgICAgICAkdGhpcy0+aGFuZGxlckVycm9yRGF0YSA9ICRoYW5kbGVyRXJyb3JEYXRhOwogICAgICAgICR0aGlzLT5oYW5kbGVyU3RhdHMgPSAkaGFuZGxlclN0YXRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZXF1ZXN0KCk6IFJlcXVlc3RJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByZXNwb25zZSB0aGF0IHdhcyByZWNlaXZlZCAoaWYgYW55KS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlc3BvbnNlKCk6ID9SZXNwb25zZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVzcG9uc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgYSByZXNwb25zZSB3YXMgcmVjZWl2ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNSZXNwb25zZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXNwb25zZSAhPT0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldHMgaGFuZGxlciBzcGVjaWZpYyBlcnJvciBkYXRhLgogICAgICoKICAgICAqIFRoaXMgbWlnaHQgYmUgYW4gZXhjZXB0aW9uLCBhIGludGVnZXIgcmVwcmVzZW50aW5nIGFuIGVycm9yIGNvZGUsIG9yCiAgICAgKiBhbnl0aGluZyBlbHNlLiBSZWx5aW5nIG9uIHRoaXMgdmFsdWUgYXNzdW1lcyB0aGF0IHlvdSBrbm93IHdoYXQgaGFuZGxlcgogICAgICogeW91IGFyZSB1c2luZy4KICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIYW5kbGVyRXJyb3JEYXRhKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmhhbmRsZXJFcnJvckRhdGE7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGVmZmVjdGl2ZSBVUkkgdGhlIHJlcXVlc3Qgd2FzIHNlbnQgdG8uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFZmZlY3RpdmVVcmkoKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXF1ZXN0LT5nZXRVcmkoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZXN0aW1hdGVkIHRpbWUgdGhlIHJlcXVlc3Qgd2FzIGJlaW5nIHRyYW5zZmVycmVkIGJ5IHRoZSBoYW5kbGVyLgogICAgICoKICAgICAqIEByZXR1cm4gZmxvYXR8bnVsbCBUaW1lIGluIHNlY29uZHMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUcmFuc2ZlclRpbWUoKTogP2Zsb2F0CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50cmFuc2ZlclRpbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXRzIGFuIGFycmF5IG9mIGFsbCBvZiB0aGUgaGFuZGxlciBzcGVjaWZpYyB0cmFuc2ZlciBkYXRhLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGFuZGxlclN0YXRzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oYW5kbGVyU3RhdHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYSBzcGVjaWZpYyBoYW5kbGVyIHN0YXRpc3RpYyBmcm9tIHRoZSBoYW5kbGVyIGJ5IG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RhdCBIYW5kbGVyIHNwZWNpZmljIHRyYW5zZmVyIHN0YXQgdG8gcmV0cmlldmUuCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZHxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIYW5kbGVyU3RhdChzdHJpbmcgJHN0YXQpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oYW5kbGVyU3RhdHNbJHN0YXRdID8/IG51bGw7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/TransportSharing.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKZmluYWwgY2xhc3MgVHJhbnNwb3J0U2hhcmluZwp7CiAgICBwdWJsaWMgY29uc3QgTk9ORSA9ICdub25lJzsKICAgIHB1YmxpYyBjb25zdCBIQU5ETEVSX1BSRUZFUiA9ICdoYW5kbGVyX3ByZWZlcic7CiAgICBwdWJsaWMgY29uc3QgSEFORExFUl9SRVFVSVJFID0gJ2hhbmRsZXJfcmVxdWlyZSc7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcSGFuZGxlclxDdXJsSGFuZGxlcjsKdXNlIEd1enpsZUh0dHBcSGFuZGxlclxDdXJsTXVsdGlIYW5kbGVyOwp1c2UgR3V6emxlSHR0cFxIYW5kbGVyXEN1cmxTaGFyZUhhbmRsZVN0YXRlOwp1c2UgR3V6emxlSHR0cFxIYW5kbGVyXEN1cmxWZXJzaW9uOwp1c2UgR3V6emxlSHR0cFxIYW5kbGVyXFByb3h5Owp1c2UgR3V6emxlSHR0cFxIYW5kbGVyXFN0cmVhbUhhbmRsZXI7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCmZpbmFsIGNsYXNzIFV0aWxzCnsKICAgIC8qKgogICAgICogRGVidWcgZnVuY3Rpb24gdXNlZCB0byBkZXNjcmliZSB0aGUgcHJvdmlkZWQgdmFsdWUgdHlwZSBhbmQgY2xhc3MuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICRpbnB1dAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFJldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgdHlwZSBvZiB0aGUgdmFyaWFibGUgYW5kCiAgICAgKiAgICAgICAgICAgICAgICBpZiBhIGNsYXNzIGlzIHByb3ZpZGVkLCB0aGUgY2xhc3MgbmFtZS4KICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBVdGlsczo6ZGVzY3JpYmVUeXBlKCkgd2lsbCBiZSByZW1vdmVkIGluIGd1enpsZWh0dHAvZ3V6emxlOjguMC4gVXNlIGdldF9kZWJ1Z190eXBlKCkgaW5zdGVhZC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZXNjcmliZVR5cGUoJGlucHV0KTogc3RyaW5nCiAgICB7CiAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICdndXp6bGVodHRwL2d1enpsZScsCiAgICAgICAgICAgICc3LjEyJywKICAgICAgICAgICAgJyVzKCkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDguMC4gVXNlIGdldF9kZWJ1Z190eXBlKCkgaW5zdGVhZC4nLAogICAgICAgICAgICBfX01FVEhPRF9fCiAgICAgICAgKTsKCiAgICAgICAgc3dpdGNoIChcZ2V0dHlwZSgkaW5wdXQpKSB7CiAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ29iamVjdCgnLlxnZXRfY2xhc3MoJGlucHV0KS4nKSc7CiAgICAgICAgICAgIGNhc2UgJ2FycmF5JzoKICAgICAgICAgICAgICAgIHJldHVybiAnYXJyYXkoJy5cY291bnQoJGlucHV0KS4nKSc7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBcb2Jfc3RhcnQoKTsKICAgICAgICAgICAgICAgIFx2YXJfZHVtcCgkaW5wdXQpOwogICAgICAgICAgICAgICAgLy8gbm9ybWFsaXplIGZsb2F0IHZzIGRvdWJsZQogICAgICAgICAgICAgICAgLyoqIEB2YXIgc3RyaW5nICR2YXJEdW1wQ29udGVudCAqLwogICAgICAgICAgICAgICAgJHZhckR1bXBDb250ZW50ID0gXG9iX2dldF9jbGVhbigpOwoKICAgICAgICAgICAgICAgIHJldHVybiBcc3RyX3JlcGxhY2UoJ2RvdWJsZSgnLCAnZmxvYXQoJywgXHJ0cmltKCR2YXJEdW1wQ29udGVudCkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlcyBhbiBhcnJheSBvZiBoZWFkZXIgbGluZXMgaW50byBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBoZWFkZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBpdGVyYWJsZSAkbGluZXMgSGVhZGVyIGxpbmVzIGFycmF5IG9mIHN0cmluZ3MgaW4gdGhlIGZvbGxvd2luZwogICAgICogICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICJOYW1lOiBWYWx1ZSIKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBoZWFkZXJzRnJvbUxpbmVzKGl0ZXJhYmxlICRsaW5lcyk6IGFycmF5CiAgICB7CiAgICAgICAgJGhlYWRlcnMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJGxpbmVzIGFzICRsaW5lKSB7CiAgICAgICAgICAgICRwYXJ0cyA9IFxleHBsb2RlKCc6JywgJGxpbmUsIDIpOwogICAgICAgICAgICAkaGVhZGVyc1tcdHJpbSgkcGFydHNbMF0pXVtdID0gaXNzZXQoJHBhcnRzWzFdKSA/IFx0cmltKCRwYXJ0c1sxXSkgOiBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRoZWFkZXJzOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGRlYnVnIHN0cmVhbSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFyaWFibGUuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZSBPcHRpb25hbCB2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gcmVzb3VyY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWJ1Z1Jlc291cmNlKCR2YWx1ZSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKFxpc19yZXNvdXJjZSgkdmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CiAgICAgICAgfQogICAgICAgIGlmIChcZGVmaW5lZCgnU1RET1VUJykpIHsKICAgICAgICAgICAgcmV0dXJuIFxTVERPVVQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gUHNyN1xVdGlsczo6dHJ5Rm9wZW4oJ3BocDovL291dHB1dCcsICd3Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaG9vc2VzIGFuZCBjcmVhdGVzIGEgZGVmYXVsdCBoYW5kbGVyIHRvIHVzZSBiYXNlZCBvbiB0aGUgZW52aXJvbm1lbnQuCiAgICAgKgogICAgICogVGhlIHJldHVybmVkIGhhbmRsZXIgaXMgbm90IHdyYXBwZWQgYnkgYW55IGRlZmF1bHQgbWlkZGxld2FyZXMuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5e3RyYW5zcG9ydF9zaGFyaW5nPzogbWl4ZWR9ICRoYW5kbGVyT3B0aW9ucyBIYW5kbGVyIGNvbnN0cnVjdG9yIG9wdGlvbnMuCiAgICAgKgogICAgICogQHJldHVybiBjYWxsYWJsZShSZXF1ZXN0SW50ZXJmYWNlLCBhcnJheSk6IFByb21pc2VcUHJvbWlzZUludGVyZmFjZSBSZXR1cm5zIHRoZSBiZXN0IGhhbmRsZXIgZm9yIHRoZSBnaXZlbiBzeXN0ZW0uCiAgICAgKgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiBubyB2aWFibGUgSGFuZGxlciBpcyBhdmFpbGFibGUuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hvb3NlSGFuZGxlcihhcnJheSAkaGFuZGxlck9wdGlvbnMgPSBbXSk6IGNhbGxhYmxlCiAgICB7CiAgICAgICAgJGhhbmRsZXIgPSBudWxsOwogICAgICAgICRzaGFyaW5nTW9kZSA9IEN1cmxTaGFyZUhhbmRsZVN0YXRlOjpub3JtYWxpemVNb2RlKCRoYW5kbGVyT3B0aW9uc1sndHJhbnNwb3J0X3NoYXJpbmcnXSA/PyBudWxsLCAndHJhbnNwb3J0X3NoYXJpbmcnKTsKICAgICAgICAkc2hhcmluZ1JlcXVlc3RlZCA9ICRzaGFyaW5nTW9kZSAhPT0gVHJhbnNwb3J0U2hhcmluZzo6Tk9ORTsKICAgICAgICAkc2hhcmluZ1JlcXVpcmVkID0gJHNoYXJpbmdNb2RlID09PSBUcmFuc3BvcnRTaGFyaW5nOjpIQU5ETEVSX1JFUVVJUkU7CiAgICAgICAgJGN1cmxIYW5kbGVyT3B0aW9ucyA9IFtdOwogICAgICAgICRjdXJsU3VwcG9ydGVkID0gXGRlZmluZWQoJ0NVUkxPUFRfQ1VTVE9NUkVRVUVTVCcpCiAgICAgICAgICAgICYmIEN1cmxWZXJzaW9uOjpzdXBwb3J0c0N1cmxIYW5kbGVyKCkKICAgICAgICAgICAgJiYgKFxmdW5jdGlvbl9leGlzdHMoJ2N1cmxfbXVsdGlfZXhlYycpIHx8IFxmdW5jdGlvbl9leGlzdHMoJ2N1cmxfZXhlYycpKTsKCiAgICAgICAgaWYgKCRzaGFyaW5nUmVxdWlyZWQgJiYgISRjdXJsU3VwcG9ydGVkKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignUmVxdWlyZWQgdHJhbnNwb3J0IHNoYXJpbmcgcmVxdWlyZXMgdGhlIFBIUCBjVVJMIGV4dGVuc2lvbiwgY3VybF9leGVjKCkgb3IgY3VybF9tdWx0aV9leGVjKCksIGFuZCBsaWJjdXJsIDcuMjEuMiBvciBoaWdoZXIuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGN1cmxTdXBwb3J0ZWQpIHsKICAgICAgICAgICAgaWYgKCRzaGFyaW5nUmVxdWVzdGVkKSB7CiAgICAgICAgICAgICAgICAkc2hhcmVTdGF0ZSA9IEN1cmxTaGFyZUhhbmRsZVN0YXRlOjpmcm9tT3B0aW9uKCRzaGFyaW5nTW9kZSk7CiAgICAgICAgICAgICAgICBpZiAoJHNoYXJlU3RhdGUgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAkY3VybEhhbmRsZXJPcHRpb25zWyd0cmFuc3BvcnRfc2hhcmluZyddID0gJHNoYXJlU3RhdGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChcZnVuY3Rpb25fZXhpc3RzKCdjdXJsX211bHRpX2V4ZWMnKSAmJiBcZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2V4ZWMnKSkgewogICAgICAgICAgICAgICAgJGhhbmRsZXIgPSBQcm94eTo6d3JhcFN5bmMobmV3IEN1cmxNdWx0aUhhbmRsZXIoJGN1cmxIYW5kbGVyT3B0aW9ucyksIG5ldyBDdXJsSGFuZGxlcigkY3VybEhhbmRsZXJPcHRpb25zKSk7CiAgICAgICAgICAgIH0gZWxzZWlmIChcZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2V4ZWMnKSkgewogICAgICAgICAgICAgICAgJGhhbmRsZXIgPSBuZXcgQ3VybEhhbmRsZXIoJGN1cmxIYW5kbGVyT3B0aW9ucyk7CiAgICAgICAgICAgIH0gZWxzZWlmIChcZnVuY3Rpb25fZXhpc3RzKCdjdXJsX211bHRpX2V4ZWMnKSkgewogICAgICAgICAgICAgICAgJGhhbmRsZXIgPSBuZXcgQ3VybE11bHRpSGFuZGxlcigkY3VybEhhbmRsZXJPcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKFxpbmlfZ2V0KCdhbGxvd191cmxfZm9wZW4nKSkgewogICAgICAgICAgICAkc3RyZWFtSGFuZGxlciA9IG5ldyBTdHJlYW1IYW5kbGVyKFsndHJhbnNwb3J0X3NoYXJpbmcnID0+ICRzaGFyaW5nTW9kZV0pOwoKICAgICAgICAgICAgJGhhbmRsZXIgPSAkaGFuZGxlcgogICAgICAgICAgICAgICAgPyBQcm94eTo6d3JhcFN0cmVhbWluZygkaGFuZGxlciwgJHN0cmVhbUhhbmRsZXIpCiAgICAgICAgICAgICAgICA6ICRzdHJlYW1IYW5kbGVyOwogICAgICAgIH0gZWxzZWlmICghJGhhbmRsZXIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdHdXp6bGVIdHRwIHJlcXVpcmVzIGNVUkwsIHRoZSBhbGxvd191cmxfZm9wZW4gaW5pIHNldHRpbmcsIG9yIGEgY3VzdG9tIEhUVFAgaGFuZGxlci4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkaGFuZGxlcjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBVc2VyLUFnZW50IHN0cmluZyB0byB1c2Ugd2l0aCBHdXp6bGUuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVmYXVsdFVzZXJBZ2VudCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gc3ByaW50ZignR3V6emxlSHR0cC8lZCcsIENsaWVudEludGVyZmFjZTo6TUFKT1JfVkVSU0lPTik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBkZWZhdWx0IGNhY2VydCBidW5kbGUgZm9yIHRoZSBjdXJyZW50IHN5c3RlbS4KICAgICAqCiAgICAgKiBGaXJzdCwgdGhlIG9wZW5zc2wuY2FmaWxlIGFuZCBjdXJsLmNhaW5mbyBwaHAuaW5pIHNldHRpbmdzIGFyZSBjaGVja2VkLgogICAgICogSWYgdGhvc2Ugc2V0dGluZ3MgYXJlIG5vdCBjb25maWd1cmVkLCB0aGVuIHRoZSBjb21tb24gbG9jYXRpb25zIGZvcgogICAgICogYnVuZGxlcyBmb3VuZCBvbiBSZWQgSGF0LCBDZW50T1MsIEZlZG9yYSwgVWJ1bnR1LCBEZWJpYW4sIEZyZWVCU0QsIE9TIFgKICAgICAqIGFuZCBXaW5kb3dzIGFyZSBjaGVja2VkLiBJZiBhbnkgb2YgdGhlc2UgZmlsZSBsb2NhdGlvbnMgYXJlIGZvdW5kIG9uCiAgICAgKiBkaXNrLCB0aGV5IHdpbGwgYmUgdXRpbGl6ZWQuCiAgICAgKgogICAgICogTm90ZTogdGhlIHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9uIGlzIGNhY2hlZCBmb3Igc3Vic2VxdWVudCBjYWxscy4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIGlmIG5vIGJ1bmRsZSBjYW4gYmUgZm91bmQuCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgVXRpbHM6OmRlZmF1bHRDYUJ1bmRsZSB3aWxsIGJlIHJlbW92ZWQgaW4gZ3V6emxlaHR0cC9ndXp6bGU6OC4wLiBUaGlzIG1ldGhvZCBpcyBub3QgbmVlZGVkIGluIFBIUCA1LjYrLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlZmF1bHRDYUJ1bmRsZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICBzdGF0aWMgJGNhY2hlZCA9IG51bGw7CiAgICAgICAgc3RhdGljICRjYWZpbGVzID0gWwogICAgICAgICAgICAvLyBSZWQgSGF0LCBDZW50T1MsIEZlZG9yYSAocHJvdmlkZWQgYnkgdGhlIGNhLWNlcnRpZmljYXRlcyBwYWNrYWdlKQogICAgICAgICAgICAnL2V0Yy9wa2kvdGxzL2NlcnRzL2NhLWJ1bmRsZS5jcnQnLAogICAgICAgICAgICAvLyBVYnVudHUsIERlYmlhbiAocHJvdmlkZWQgYnkgdGhlIGNhLWNlcnRpZmljYXRlcyBwYWNrYWdlKQogICAgICAgICAgICAnL2V0Yy9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCcsCiAgICAgICAgICAgIC8vIEZyZWVCU0QgKHByb3ZpZGVkIGJ5IHRoZSBjYV9yb290X25zcyBwYWNrYWdlKQogICAgICAgICAgICAnL3Vzci9sb2NhbC9zaGFyZS9jZXJ0cy9jYS1yb290LW5zcy5jcnQnLAogICAgICAgICAgICAvLyBTTEVTIDEyIChwcm92aWRlZCBieSB0aGUgY2EtY2VydGlmaWNhdGVzIHBhY2thZ2UpCiAgICAgICAgICAgICcvdmFyL2xpYi9jYS1jZXJ0aWZpY2F0ZXMvY2EtYnVuZGxlLnBlbScsCiAgICAgICAgICAgIC8vIE9TIFggcHJvdmlkZWQgYnkgaG9tZWJyZXcgKHVzaW5nIHRoZSBkZWZhdWx0IHBhdGgpCiAgICAgICAgICAgICcvdXNyL2xvY2FsL2V0Yy9vcGVuc3NsL2NlcnQucGVtJywKICAgICAgICAgICAgLy8gR29vZ2xlIGFwcCBlbmdpbmUKICAgICAgICAgICAgJy9ldGMvY2EtY2VydGlmaWNhdGVzLmNydCcsCiAgICAgICAgICAgIC8vIFdpbmRvd3M/CiAgICAgICAgICAgICdDOlxcd2luZG93c1xcc3lzdGVtMzJcXGN1cmwtY2EtYnVuZGxlLmNydCcsCiAgICAgICAgICAgICdDOlxcd2luZG93c1xcY3VybC1jYS1idW5kbGUuY3J0JywKICAgICAgICBdOwoKICAgICAgICBpZiAoJGNhY2hlZCkgewogICAgICAgICAgICByZXR1cm4gJGNhY2hlZDsKICAgICAgICB9CgogICAgICAgIGlmICgkY2EgPSBcaW5pX2dldCgnb3BlbnNzbC5jYWZpbGUnKSkgewogICAgICAgICAgICByZXR1cm4gJGNhY2hlZCA9ICRjYTsKICAgICAgICB9CgogICAgICAgIGlmICgkY2EgPSBcaW5pX2dldCgnY3VybC5jYWluZm8nKSkgewogICAgICAgICAgICByZXR1cm4gJGNhY2hlZCA9ICRjYTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRjYWZpbGVzIGFzICRmaWxlbmFtZSkgewogICAgICAgICAgICBpZiAoXGZpbGVfZXhpc3RzKCRmaWxlbmFtZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkY2FjaGVkID0gJGZpbGVuYW1lOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oCiAgICAgICAgICAgIDw8PCBFT1QKTm8gc3lzdGVtIENBIGJ1bmRsZSBjb3VsZCBiZSBmb3VuZCBpbiBhbnkgb2YgdGhlIHRoZSBjb21tb24gc3lzdGVtIGxvY2F0aW9ucy4KUEhQIHZlcnNpb25zIGVhcmxpZXIgdGhhbiA1LjYgYXJlIG5vdCBwcm9wZXJseSBjb25maWd1cmVkIHRvIHVzZSB0aGUgc3lzdGVtJ3MKQ0EgYnVuZGxlIGJ5IGRlZmF1bHQuIEluIG9yZGVyIHRvIHZlcmlmeSBwZWVyIGNlcnRpZmljYXRlcywgeW91IHdpbGwgbmVlZCB0bwpzdXBwbHkgdGhlIHBhdGggb24gZGlzayB0byBhIGNlcnRpZmljYXRlIGJ1bmRsZSB0byB0aGUgJ3ZlcmlmeScgcmVxdWVzdCBvcHRpb246Cmh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2Jsb2IvNy4xMi9kb2NzL3JlcXVlc3Qtb3B0aW9ucy5tZCN2ZXJpZnkuIElmCnlvdSBkbyBub3QgbmVlZCBhIHNwZWNpZmljIGNlcnRpZmljYXRlIGJ1bmRsZSwgdGhlbiBNb3ppbGxhIHByb3ZpZGVzIGEgY29tbW9ubHkKdXNlZCBDQSBidW5kbGUgd2hpY2ggY2FuIGJlIGRvd25sb2FkZWQgaGVyZSAocHJvdmlkZWQgYnkgdGhlIG1haW50YWluZXIgb2YKY1VSTCk6IGh0dHBzOi8vY3VybC5zZS9jYS9jYWNlcnQucGVtLiBPbmNlIHlvdSBoYXZlIGEgQ0EgYnVuZGxlIGF2YWlsYWJsZSBvbgpkaXNrLCB5b3UgY2FuIHNldCB0aGUgJ29wZW5zc2wuY2FmaWxlJyBQSFAgaW5pIHNldHRpbmcgdG8gcG9pbnQgdG8gdGhlIHBhdGggdG8KdGhlIGZpbGUsIGFsbG93aW5nIHlvdSB0byBvbWl0IHRoZSAndmVyaWZ5JyByZXF1ZXN0IG9wdGlvbi4gU2VlCmh0dHBzOi8vY3VybC5zZS9kb2NzL3NzbGNlcnRzLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCkVPVAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIGxvd2VyY2FzZSBoZWFkZXIgbmFtZXMgdG8gdGhlIGFjdHVhbAogICAgICogaGVhZGVyIGNhc2luZy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemVIZWFkZXJLZXlzKGFycmF5ICRoZWFkZXJzKTogYXJyYXkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gW107CiAgICAgICAgZm9yZWFjaCAoXGFycmF5X2tleXMoJGhlYWRlcnMpIGFzICRrZXkpIHsKICAgICAgICAgICAgJHJlc3VsdFtcc3RydG9sb3dlcigoc3RyaW5nKSAka2V5KV0gPSAka2V5OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHByb3RvY29scwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nW10KICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZVByb3RvY29scygkcHJvdG9jb2xzKTogYXJyYXkKICAgIHsKICAgICAgICBpZiAoIVxpc19hcnJheSgkcHJvdG9jb2xzKSB8fCAkcHJvdG9jb2xzID09PSBbXSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdwcm90b2NvbHMgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheSBvZiAiaHR0cCIgYW5kL29yICJodHRwcyInKTsKICAgICAgICB9CgogICAgICAgICRub3JtYWxpemVkID0gW107CgogICAgICAgIGZvcmVhY2ggKCRwcm90b2NvbHMgYXMgJHByb3RvY29sKSB7CiAgICAgICAgICAgIGlmICghXGlzX3N0cmluZygkcHJvdG9jb2wpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdwcm90b2NvbHMgbXVzdCBjb250YWluIG9ubHkgc3RyaW5ncycpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHByb3RvY29sICE9PSAnaHR0cCcgJiYgJHByb3RvY29sICE9PSAnaHR0cHMnKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdwcm90b2NvbHMgbWF5IG9ubHkgY29udGFpbiAiaHR0cCIgYW5kICJodHRwcyInKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG5vcm1hbGl6ZWRbJHByb3RvY29sXSA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXGFycmF5X2tleXMoJG5vcm1hbGl6ZWQpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlZCBob3N0IG1hdGNoZXMgYW55IG9mIHRoZSBubyBwcm94eSBhcmVhcy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHN0cmlwIGEgcG9ydCBmcm9tIHRoZSBob3N0IGlmIGl0IGlzIHByZXNlbnQuIERvbWFpbgogICAgICogcGF0dGVybnMgYXJlIG1hdGNoZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LiBFeGFjdCBJUCBsaXRlcmFsIHBhdHRlcm5zIGFyZQogICAgICogbWF0Y2hlZCBieSB0aGVpciBub3JtYWxpemVkIGJpbmFyeSBhZGRyZXNzLgogICAgICoKICAgICAqIEFyZWFzIGFyZSBtYXRjaGVkIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6CiAgICAgKiAxLiAiKiIgKHdpdGhvdXQgcXVvdGVzKSBhbHdheXMgbWF0Y2hlcyBhbnkgaG9zdHMuCiAgICAgKiAyLiBBbiBleGFjdCBkb21haW4gb3IgSVAgbGl0ZXJhbCBtYXRjaC4KICAgICAqIDMuIEEgYmFyZSBkb21haW4gbWF0Y2hlcyBpdHNlbGYgYW5kIGl0cyBzdWJkb21haW5zLiBlLmcuICdtaXQuZWR1JyB3aWxsCiAgICAgKiAgICBtYXRjaCAnbWl0LmVkdScgYW5kICdmb28ubWl0LmVkdScuCiAgICAgKiA0LiBUaGUgYXJlYSBzdGFydHMgd2l0aCAiLiIgYW5kIHRoZSBhcmVhIGlzIHRoZSBsYXN0IHBhcnQgb2YgdGhlIGhvc3QuIGUuZy4KICAgICAqICAgICcubWl0LmVkdScgd2lsbCBtYXRjaCBhbnkgaG9zdCB0aGF0IGVuZHMgd2l0aCAnLm1pdC5lZHUnLgogICAgICogNS4gSVAgQ0lEUiBlbnRyaWVzIG1hdGNoIElQIGxpdGVyYWwgaG9zdHMuIGUuZy4gJzE5Mi4xNjguMC4wLzE2JyB3aWxsCiAgICAgKiAgICBtYXRjaCAnMTkyLjE2OC4xLjEwJyBhbmQgJ2ZkMDA6Oi84JyB3aWxsIG1hdGNoICdbZmQwMDo6MV0nLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAkaG9zdCAgICAgICAgIEhvc3QgdG8gY2hlY2sgYWdhaW5zdCB0aGUgcGF0dGVybnMuCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJG5vUHJveHlBcnJheSBBbiBhcnJheSBvZiBob3N0IG9yIENJRFIgcGF0dGVybnMuCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0hvc3RJbk5vUHJveHkoc3RyaW5nICRob3N0LCBhcnJheSAkbm9Qcm94eUFycmF5KTogYm9vbAogICAgewogICAgICAgIGlmIChcc3RybGVuKCRob3N0KSA9PT0gMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdFbXB0eSBob3N0IHByb3ZpZGVkJyk7CiAgICAgICAgfQoKICAgICAgICAkdGFyZ2V0ID0gc2VsZjo6cGFyc2VOb1Byb3h5SG9zdFN0cmluZygkaG9zdCk7CiAgICAgICAgaWYgKCR0YXJnZXQgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6Om1hdGNoZXNOb1Byb3h5TGlzdCgkdGFyZ2V0LCAkbm9Qcm94eUFycmF5KTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvdmlkZWQgVVJJIG1hdGNoZXMgYW55IG9mIHRoZSBubyBwcm94eSBhcmVhcy4KICAgICAqCiAgICAgKiBNYXRjaGluZyBmb2xsb3dzIHRoZSBzYW1lIHJ1bGVzIGFzIGlzSG9zdEluTm9Qcm94eSgpLCB3aXRoIHRoZQogICAgICogYWRkaXRpb24gdGhhdCBhcmVhcyBtYXkgY2FycnkgYSBwb3J0IChlLmcuICJleGFtcGxlLmNvbTo4MDgwIiBvcgogICAgICogIls6OjFdOjgwODAiKSB3aGljaCBpcyBjb21wYXJlZCBhZ2FpbnN0IHRoZSBVUkkgcG9ydCAob3IgdGhlIHNjaGVtZQogICAgICogZGVmYXVsdCBwb3J0IHdoZW4gdGhlIFVSSSBoYXMgbm9uZSkuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICRub1Byb3h5IE5vLXByb3h5IGhvc3QsIGhvc3QtYW5kLXBvcnQsIG9yIENJRFIgcGF0dGVybnMuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNVcmlJbk5vUHJveHkoVXJpSW50ZXJmYWNlICR1cmksICRub1Byb3h5KTogYm9vbAogICAgewogICAgICAgIGlmIChcaXNfc3RyaW5nKCRub1Byb3h5KSkgewogICAgICAgICAgICAkbm9Qcm94eSA9IFxleHBsb2RlKCcsJywgJG5vUHJveHkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFcaXNfYXJyYXkoJG5vUHJveHkpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICR0YXJnZXQgPSBzZWxmOjpwYXJzZU5vUHJveHlUYXJnZXQoJHVyaSk7CiAgICAgICAgaWYgKCR0YXJnZXQgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6Om1hdGNoZXNOb1Byb3h5TGlzdCgkdGFyZ2V0LCAkbm9Qcm94eSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXl7dHlwZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBwb3J0OiBpbnR8bnVsbCwgbWF0Y2hlc1Jvb3Q6IGJvb2x9ICR0YXJnZXQKICAgICAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vUHJveHkKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbWF0Y2hlc05vUHJveHlMaXN0KGFycmF5ICR0YXJnZXQsIGFycmF5ICRub1Byb3h5KTogYm9vbAogICAgewogICAgICAgIGZvcmVhY2ggKCRub1Byb3h5IGFzICRhcmVhKSB7CiAgICAgICAgICAgIGlmICghXGlzX3N0cmluZygkYXJlYSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYXJlYSA9IFx0cmltKCRhcmVhKTsKCiAgICAgICAgICAgIC8vIEFsd2F5cyBtYXRjaCBvbiB3aWxkY2FyZHMuCiAgICAgICAgICAgIGlmICgkYXJlYSA9PT0gJyonKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJ1bGUgPSBzZWxmOjpwYXJzZU5vUHJveHlSdWxlKCRhcmVhKTsKICAgICAgICAgICAgaWYgKCRydWxlICE9PSBudWxsICYmIHNlbGY6Om5vUHJveHlSdWxlTWF0Y2hlcygkdGFyZ2V0LCAkcnVsZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5e3R5cGU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgcG9ydDogaW50fG51bGwsIG1hdGNoZXNSb290OiBib29sfXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHBhcnNlTm9Qcm94eVRhcmdldChVcmlJbnRlcmZhY2UgJHVyaSk6ID9hcnJheQogICAgewogICAgICAgICRob3N0ID0gJHVyaS0+Z2V0SG9zdCgpOwogICAgICAgIGlmICgkaG9zdCA9PT0gJycpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6cGFyc2VOb1Byb3h5SG9zdCgkaG9zdCwgJHVyaS0+Z2V0UG9ydCgpID8/IHNlbGY6OmdldERlZmF1bHRQb3J0KCR1cmktPmdldFNjaGVtZSgpKSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5e3R5cGU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgcG9ydDogaW50fG51bGwsIG1hdGNoZXNSb290OiBib29sfXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHBhcnNlTm9Qcm94eUhvc3RTdHJpbmcoc3RyaW5nICRob3N0KTogP2FycmF5CiAgICB7CiAgICAgICAgJGhvc3RBbmRQb3J0ID0gc2VsZjo6c3BsaXROb1Byb3h5SG9zdEFuZFBvcnQoJGhvc3QpOwogICAgICAgIGlmICgkaG9zdEFuZFBvcnQgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICBbJGhvc3RdID0gJGhvc3RBbmRQb3J0OwoKICAgICAgICByZXR1cm4gc2VsZjo6cGFyc2VOb1Byb3h5SG9zdCgkaG9zdCwgbnVsbCwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5e3R5cGU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgcG9ydDogaW50fG51bGwsIG1hdGNoZXNSb290OiBib29sfXxhcnJheXt0eXBlOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHByZWZpeDogaW50fXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHBhcnNlTm9Qcm94eVJ1bGUoc3RyaW5nICRhcmVhKTogP2FycmF5CiAgICB7CiAgICAgICAgJGFyZWEgPSBcdHJpbSgkYXJlYSk7CiAgICAgICAgaWYgKCRhcmVhID09PSAnJyB8fCAkYXJlYSA9PT0gJyonKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxzdHJwb3MoJGFyZWEsICcvJykgIT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpwYXJzZU5vUHJveHlDaWRyUnVsZSgkYXJlYSk7CiAgICAgICAgfQoKICAgICAgICAkbWF0Y2hlc1Jvb3QgPSB0cnVlOwogICAgICAgIGlmICgkYXJlYVswXSA9PT0gJy4nKSB7CiAgICAgICAgICAgICRtYXRjaGVzUm9vdCA9IGZhbHNlOwogICAgICAgICAgICAkYXJlYSA9IFxzdWJzdHIoJGFyZWEsIDEpOwogICAgICAgIH0KCiAgICAgICAgJGhvc3RBbmRQb3J0ID0gc2VsZjo6c3BsaXROb1Byb3h5SG9zdEFuZFBvcnQoJGFyZWEpOwogICAgICAgIGlmICgkaG9zdEFuZFBvcnQgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICBbJGhvc3QsICRwb3J0XSA9ICRob3N0QW5kUG9ydDsKCiAgICAgICAgaWYgKCRob3N0ID09PSAnKicpIHsKICAgICAgICAgICAgaWYgKCEkbWF0Y2hlc1Jvb3QpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgJ3R5cGUnID0+ICd3aWxkY2FyZCcsCiAgICAgICAgICAgICAgICAndmFsdWUnID0+ICcqJywKICAgICAgICAgICAgICAgICdwb3J0JyA9PiAkcG9ydCwKICAgICAgICAgICAgICAgICdtYXRjaGVzUm9vdCcgPT4gdHJ1ZSwKICAgICAgICAgICAgXTsKICAgICAgICB9CgogICAgICAgICRydWxlID0gc2VsZjo6cGFyc2VOb1Byb3h5SG9zdCgkaG9zdCwgJHBvcnQsICRtYXRjaGVzUm9vdCk7CiAgICAgICAgaWYgKCRydWxlICE9PSBudWxsICYmICEkbWF0Y2hlc1Jvb3QgJiYgJHJ1bGVbJ3R5cGUnXSA9PT0gJ2lwJykgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcnVsZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXl7dHlwZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBwb3J0OiBpbnR8bnVsbCwgbWF0Y2hlc1Jvb3Q6IGJvb2x9fG51bGwKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcGFyc2VOb1Byb3h5SG9zdChzdHJpbmcgJGhvc3QsID9pbnQgJHBvcnQsIGJvb2wgJG1hdGNoZXNSb290KTogP2FycmF5CiAgICB7CiAgICAgICAgaWYgKCRob3N0ICE9PSAnJyAmJiAkaG9zdFswXSA9PT0gJ1snKSB7CiAgICAgICAgICAgIGlmIChcc3Vic3RyKCRob3N0LCAtMSkgIT09ICddJykgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRhZGRyZXNzID0gXHN1YnN0cigkaG9zdCwgMSwgLTEpOwogICAgICAgICAgICBpZiAoIVxmaWx0ZXJfdmFyKCRhZGRyZXNzLCBcRklMVEVSX1ZBTElEQVRFX0lQLCBcRklMVEVSX0ZMQUdfSVBWNikpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkaG9zdCA9ICRhZGRyZXNzOwogICAgICAgIH0KCiAgICAgICAgJHBhY2tlZElwID0gc2VsZjo6cGFja0lwQWRkcmVzcygkaG9zdCk7CiAgICAgICAgaWYgKCRwYWNrZWRJcCAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICd0eXBlJyA9PiAnaXAnLAogICAgICAgICAgICAgICAgJ3ZhbHVlJyA9PiAkcGFja2VkSXAsCiAgICAgICAgICAgICAgICAncG9ydCcgPT4gJHBvcnQsCiAgICAgICAgICAgICAgICAnbWF0Y2hlc1Jvb3QnID0+ICRtYXRjaGVzUm9vdCwKICAgICAgICAgICAgXTsKICAgICAgICB9CgogICAgICAgIGlmICgkaG9zdCA9PT0gJycgfHwgXHN0cnBvcygkaG9zdCwgJzonKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAvLyBOb3JtYWxpemUgYSBzaW5nbGUgRE5TIHJvb3QgZG90IGZvciBuby1wcm94eSBkb21haW4gbWF0Y2hpbmcuCiAgICAgICAgaWYgKFxzdWJzdHIoJGhvc3QsIC0xKSA9PT0gJy4nKSB7CiAgICAgICAgICAgICRob3N0ID0gXHN1YnN0cigkaG9zdCwgMCwgLTEpOwogICAgICAgICAgICBpZiAoJGhvc3QgPT09ICcnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ3R5cGUnID0+ICdkb21haW4nLAogICAgICAgICAgICAndmFsdWUnID0+IFxzdHJ0b2xvd2VyKCRob3N0KSwKICAgICAgICAgICAgJ3BvcnQnID0+ICRwb3J0LAogICAgICAgICAgICAnbWF0Y2hlc1Jvb3QnID0+ICRtYXRjaGVzUm9vdCwKICAgICAgICBdOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheXswOiBzdHJpbmcsIDE6IGludHxudWxsfXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHNwbGl0Tm9Qcm94eUhvc3RBbmRQb3J0KHN0cmluZyAkYXJlYSk6ID9hcnJheQogICAgewogICAgICAgIGlmICgkYXJlYSAhPT0gJycgJiYgJGFyZWFbMF0gPT09ICdbJykgewogICAgICAgICAgICAkY2xvc2luZ0JyYWNrZXQgPSBcc3RycG9zKCRhcmVhLCAnXScpOwogICAgICAgICAgICBpZiAoJGNsb3NpbmdCcmFja2V0ID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRob3N0ID0gXHN1YnN0cigkYXJlYSwgMCwgJGNsb3NpbmdCcmFja2V0ICsgMSk7CiAgICAgICAgICAgICR0YWlsID0gXHN1YnN0cigkYXJlYSwgJGNsb3NpbmdCcmFja2V0ICsgMSk7CiAgICAgICAgICAgIGlmICgkdGFpbCA9PT0gJycpIHsKICAgICAgICAgICAgICAgIHJldHVybiBbJGhvc3QsIG51bGxdOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRhaWxbMF0gIT09ICc6JykgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwb3J0ID0gc2VsZjo6cGFyc2VOb1Byb3h5UG9ydChcc3Vic3RyKCR0YWlsLCAxKSk7CgogICAgICAgICAgICByZXR1cm4gJHBvcnQgPT09IG51bGwgPyBudWxsIDogWyRob3N0LCAkcG9ydF07CiAgICAgICAgfQoKICAgICAgICBpZiAoc2VsZjo6cGFja0lwQWRkcmVzcygkYXJlYSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBbJGFyZWEsIG51bGxdOwogICAgICAgIH0KCiAgICAgICAgJGNvbG9uID0gXHN0cnJwb3MoJGFyZWEsICc6Jyk7CiAgICAgICAgaWYgKCRjb2xvbiA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuIFskYXJlYSwgbnVsbF07CiAgICAgICAgfQoKICAgICAgICAkcG9ydCA9IHNlbGY6OnBhcnNlTm9Qcm94eVBvcnQoXHN1YnN0cigkYXJlYSwgJGNvbG9uICsgMSkpOwogICAgICAgIGlmICgkcG9ydCA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbXHN1YnN0cigkYXJlYSwgMCwgJGNvbG9uKSwgJHBvcnRdOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHBhcnNlTm9Qcm94eVBvcnQoc3RyaW5nICRwb3J0KTogP2ludAogICAgewogICAgICAgIHJldHVybiBzZWxmOjpwYXJzZUJvdW5kZWRVbnNpZ25lZEludGVnZXIoJHBvcnQsIDY1NTM1KTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXl7dHlwZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBwcmVmaXg6IGludH18bnVsbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwYXJzZU5vUHJveHlDaWRyUnVsZShzdHJpbmcgJGFyZWEpOiA/YXJyYXkKICAgIHsKICAgICAgICAkc2xhc2ggPSBcc3RycG9zKCRhcmVhLCAnLycpOwogICAgICAgIGlmICgkc2xhc2ggPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJHByZWZpeCA9IFxzdWJzdHIoJGFyZWEsICRzbGFzaCArIDEpOwoKICAgICAgICAkbmV0d29yayA9IFxzdWJzdHIoJGFyZWEsIDAsICRzbGFzaCk7CiAgICAgICAgaWYgKCRuZXR3b3JrICE9PSAnJyAmJiAkbmV0d29ya1swXSA9PT0gJ1snICYmIFxzdWJzdHIoJG5ldHdvcmssIC0xKSA9PT0gJ10nKSB7CiAgICAgICAgICAgICRuZXR3b3JrID0gXHN1YnN0cigkbmV0d29yaywgMSwgLTEpOwogICAgICAgIH0KCiAgICAgICAgJG5ldHdvcmsgPSBzZWxmOjpwYWNrSXBBZGRyZXNzKCRuZXR3b3JrKTsKICAgICAgICBpZiAoJG5ldHdvcmsgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJHByZWZpeCA9IHNlbGY6OnBhcnNlQm91bmRlZFVuc2lnbmVkSW50ZWdlcigkcHJlZml4LCBcc3RybGVuKCRuZXR3b3JrKSAqIDgpOwogICAgICAgIGlmICgkcHJlZml4ID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ3R5cGUnID0+ICdjaWRyJywKICAgICAgICAgICAgJ3ZhbHVlJyA9PiAkbmV0d29yaywKICAgICAgICAgICAgJ3ByZWZpeCcgPT4gJHByZWZpeCwKICAgICAgICBdOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHBhcnNlQm91bmRlZFVuc2lnbmVkSW50ZWdlcihzdHJpbmcgJHZhbHVlLCBpbnQgJG1heCk6ID9pbnQKICAgIHsKICAgICAgICBpZiAoJHZhbHVlID09PSAnJyB8fCAhXGN0eXBlX2RpZ2l0KCR2YWx1ZSkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkbm9ybWFsaXplZCA9IFxsdHJpbSgkdmFsdWUsICcwJyk7CiAgICAgICAgJG5vcm1hbGl6ZWQgPSAkbm9ybWFsaXplZCA9PT0gJycgPyAnMCcgOiAkbm9ybWFsaXplZDsKICAgICAgICAkbGltaXQgPSAoc3RyaW5nKSAkbWF4OwoKICAgICAgICBpZiAoXHN0cmxlbigkbm9ybWFsaXplZCkgPiBcc3RybGVuKCRsaW1pdCkgfHwgKFxzdHJsZW4oJG5vcm1hbGl6ZWQpID09PSBcc3RybGVuKCRsaW1pdCkgJiYgXHN0cmNtcCgkbm9ybWFsaXplZCwgJGxpbWl0KSA+IDApKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChpbnQpICRub3JtYWxpemVkOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5e3R5cGU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgcG9ydDogaW50fG51bGwsIG1hdGNoZXNSb290OiBib29sfSAgICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0CiAgICAgKiBAcGFyYW0gYXJyYXl7dHlwZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBwb3J0PzogaW50fG51bGwsIG1hdGNoZXNSb290PzogYm9vbCwgcHJlZml4PzogaW50fG51bGx9ICRydWxlCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG5vUHJveHlSdWxlTWF0Y2hlcyhhcnJheSAkdGFyZ2V0LCBhcnJheSAkcnVsZSk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoJHJ1bGVbJ3R5cGUnXSA9PT0gJ3dpbGRjYXJkJykgewogICAgICAgICAgICByZXR1cm4gKCRydWxlWydwb3J0J10gPz8gbnVsbCkgPT09IG51bGwgfHwgJHJ1bGVbJ3BvcnQnXSA9PT0gJHRhcmdldFsncG9ydCddOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRydWxlWyd0eXBlJ10gPT09ICdjaWRyJykgewogICAgICAgICAgICBpZiAoJHRhcmdldFsndHlwZSddICE9PSAnaXAnIHx8ICFpc3NldCgkcnVsZVsncHJlZml4J10pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChcc3RybGVuKCR0YXJnZXRbJ3ZhbHVlJ10pICE9PSBcc3RybGVuKCRydWxlWyd2YWx1ZSddKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gc2VsZjo6aXBNYXRjaGVzUHJlZml4KCR0YXJnZXRbJ3ZhbHVlJ10sICRydWxlWyd2YWx1ZSddLCAkcnVsZVsncHJlZml4J10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKCgkcnVsZVsncG9ydCddID8/IG51bGwpICE9PSBudWxsICYmICRydWxlWydwb3J0J10gIT09ICR0YXJnZXRbJ3BvcnQnXSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHJ1bGVbJ3R5cGUnXSAhPT0gJHRhcmdldFsndHlwZSddKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkcnVsZVsndHlwZSddID09PSAnaXAnKSB7CiAgICAgICAgICAgIHJldHVybiAkcnVsZVsndmFsdWUnXSA9PT0gJHRhcmdldFsndmFsdWUnXTsKICAgICAgICB9CgogICAgICAgIGlmICgoJHJ1bGVbJ21hdGNoZXNSb290J10gPz8gZmFsc2UpICYmICR0YXJnZXRbJ3ZhbHVlJ10gPT09ICRydWxlWyd2YWx1ZSddKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgJHN1ZmZpeCA9ICcuJy4kcnVsZVsndmFsdWUnXTsKCiAgICAgICAgcmV0dXJuIFxzdWJzdHIoJHRhcmdldFsndmFsdWUnXSwgLVxzdHJsZW4oJHN1ZmZpeCkpID09PSAkc3VmZml4OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmd8ZmFsc2UKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcGFja0lwQWRkcmVzcyhzdHJpbmcgJGlwKQogICAgewogICAgICAgIGlmICghXGZpbHRlcl92YXIoJGlwLCBcRklMVEVSX1ZBTElEQVRFX0lQKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXGluZXRfcHRvbigkaXApOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGlwTWF0Y2hlc1ByZWZpeChzdHJpbmcgJGFkZHJlc3MsIHN0cmluZyAkbmV0d29yaywgaW50ICRwcmVmaXgpOiBib29sCiAgICB7CiAgICAgICAgJGZ1bGxCeXRlcyA9IFxpbnRkaXYoJHByZWZpeCwgOCk7CiAgICAgICAgJHJlbWFpbmluZ0JpdHMgPSAkcHJlZml4ICUgODsKCiAgICAgICAgaWYgKCRmdWxsQnl0ZXMgPiAwICYmIFxzdWJzdHIoJGFkZHJlc3MsIDAsICRmdWxsQnl0ZXMpICE9PSBcc3Vic3RyKCRuZXR3b3JrLCAwLCAkZnVsbEJ5dGVzKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHJlbWFpbmluZ0JpdHMgPT09IDApIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAkbWFzayA9ICgweEZGIDw8ICg4IC0gJHJlbWFpbmluZ0JpdHMpKSAmIDB4RkY7CgogICAgICAgIHJldHVybiAoXG9yZCgkYWRkcmVzc1skZnVsbEJ5dGVzXSkgJiAkbWFzaykgPT09IChcb3JkKCRuZXR3b3JrWyRmdWxsQnl0ZXNdKSAmICRtYXNrKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXREZWZhdWx0UG9ydChzdHJpbmcgJHNjaGVtZSk6ID9pbnQKICAgIHsKICAgICAgICBpZiAoJHNjaGVtZSA9PT0gJ2h0dHAnKSB7CiAgICAgICAgICAgIHJldHVybiA4MDsKICAgICAgICB9CgogICAgICAgIGlmICgkc2NoZW1lID09PSAnaHR0cHMnKSB7CiAgICAgICAgICAgIHJldHVybiA0NDM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFdyYXBwZXIgZm9yIGpzb25fZGVjb2RlIHRoYXQgdGhyb3dzIHdoZW4gYW4gZXJyb3Igb2NjdXJzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGpzb24gICAgSlNPTiBkYXRhIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0gYm9vbCAgICRhc3NvYyAgIFdoZW4gdHJ1ZSwgcmV0dXJuZWQgb2JqZWN0cyB3aWxsIGJlIGNvbnZlcnRlZAogICAgICogICAgICAgICAgICAgICAgICAgICAgICBpbnRvIGFzc29jaWF0aXZlIGFycmF5cy4KICAgICAqIEBwYXJhbSBpbnQgICAgJGRlcHRoICAgVXNlciBzcGVjaWZpZWQgcmVjdXJzaW9uIGRlcHRoLgogICAgICogQHBhcmFtIGludCAgICAkb3B0aW9ucyBCaXRtYXNrIG9mIEpTT04gZGVjb2RlIG9wdGlvbnMuCiAgICAgKgogICAgICogQHJldHVybiBvYmplY3R8YXJyYXl8c3RyaW5nfGludHxmbG9hdHxib29sfG51bGwKICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgSlNPTiBjYW5ub3QgYmUgZGVjb2RlZC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLmpzb24tZGVjb2RlLnBocAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGpzb25EZWNvZGUoc3RyaW5nICRqc29uLCBib29sICRhc3NvYyA9IGZhbHNlLCBpbnQgJGRlcHRoID0gNTEyLCBpbnQgJG9wdGlvbnMgPSAwKQogICAgewogICAgICAgIGlmICgkZGVwdGggPCAxKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ2pzb25fZGVjb2RlIGVycm9yOiBNYXhpbXVtIHN0YWNrIGRlcHRoIGV4Y2VlZGVkJyk7CiAgICAgICAgfQoKICAgICAgICAkZGF0YSA9IFxqc29uX2RlY29kZSgkanNvbiwgJGFzc29jLCAkZGVwdGgsICRvcHRpb25zKTsKICAgICAgICBpZiAoXEpTT05fRVJST1JfTk9ORSAhPT0gXGpzb25fbGFzdF9lcnJvcigpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ2pzb25fZGVjb2RlIGVycm9yOiAnLlxqc29uX2xhc3RfZXJyb3JfbXNnKCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRkYXRhOwogICAgfQoKICAgIC8qKgogICAgICogV3JhcHBlciBmb3IgSlNPTiBlbmNvZGluZyB0aGF0IHRocm93cyB3aGVuIGFuIGVycm9yIG9jY3Vycy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlICAgVGhlIHZhbHVlIGJlaW5nIGVuY29kZWQKICAgICAqIEBwYXJhbSBpbnQgICAkb3B0aW9ucyBKU09OIGVuY29kZSBvcHRpb24gYml0bWFzawogICAgICogQHBhcmFtIGludCAgICRkZXB0aCAgIFNldCB0aGUgbWF4aW11bSBkZXB0aC4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4KICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgSlNPTiBjYW5ub3QgYmUgZW5jb2RlZC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLmpzb24tZW5jb2RlLnBocAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGpzb25FbmNvZGUoJHZhbHVlLCBpbnQgJG9wdGlvbnMgPSAwLCBpbnQgJGRlcHRoID0gNTEyKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGpzb24gPSBcanNvbl9lbmNvZGUoJHZhbHVlLCAkb3B0aW9ucywgJGRlcHRoKTsKICAgICAgICBpZiAoXEpTT05fRVJST1JfTk9ORSAhPT0gXGpzb25fbGFzdF9lcnJvcigpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ2pzb25fZW5jb2RlIGVycm9yOiAnLlxqc29uX2xhc3RfZXJyb3JfbXNnKCkpOwogICAgICAgIH0KCiAgICAgICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICAgICAgcmV0dXJuICRqc29uOwogICAgfQoKICAgIC8qKgogICAgICogV3JhcHBlciBmb3IgdGhlIGhydGltZSgpIG9yIG1pY3JvdGltZSgpIGZ1bmN0aW9ucwogICAgICogKGRlcGVuZGluZyBvbiB0aGUgUEhQIHZlcnNpb24sIG9uZSBvZiB0aGUgdHdvIGlzIHVzZWQpCiAgICAgKgogICAgICogQHJldHVybiBmbG9hdCBVTklYIHRpbWVzdGFtcAogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGN1cnJlbnRUaW1lKCk6IGZsb2F0CiAgICB7CiAgICAgICAgcmV0dXJuIChmbG9hdCkgXGZ1bmN0aW9uX2V4aXN0cygnaHJ0aW1lJykgPyBcaHJ0aW1lKHRydWUpIC8gMWU5IDogXG1pY3JvdGltZSh0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUKICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemVJZG5Db252ZXJzaW9uT3B0aW9uKCR2YWx1ZSk6ID9pbnQKICAgIHsKICAgICAgICBpZiAoJHZhbHVlID09PSBudWxsIHx8ICR2YWx1ZSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHZhbHVlID09PSB0cnVlKSB7CiAgICAgICAgICAgIHJldHVybiBcSUROQV9ERUZBVUxUOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxpc19pbnQoJHZhbHVlKSkgewogICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKChcaXNfc3RyaW5nKCR2YWx1ZSkgJiYgXGlzX251bWVyaWMoJHZhbHVlKSkgfHwgKFxpc19mbG9hdCgkdmFsdWUpICYmIFxpc19maW5pdGUoJHZhbHVlKSkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9ndXp6bGUnLAogICAgICAgICAgICAgICAgJzcuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgYXMgdGhlICJpZG5fY29udmVyc2lvbiIgcmVxdWVzdCBvcHRpb24gaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9ndXp6bGUgOC4wIHdpbGwgcmVqZWN0IHZhbHVlcyB0aGF0IGFyZSBub3QgdHJ1ZSwgZmFsc2UsIG51bGwsIG9yIGFuIGludGVnZXIgSUROQV8qIGJpdG1hc2suJywKICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gKGludCkgJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignaWRuX2NvbnZlcnNpb24gbXVzdCBiZSB0cnVlLCBmYWxzZSwgbnVsbCwgb3IgYW4gaW50ZWdlciBJRE5BXyogYml0bWFzaycpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpZG5VcmlDb252ZXJ0KFVyaUludGVyZmFjZSAkdXJpLCBpbnQgJG9wdGlvbnMgPSAwKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKCR1cmktPmdldEhvc3QoKSkgewogICAgICAgICAgICAkYXNjaWlIb3N0ID0gc2VsZjo6aWRuVG9Bc2NpKCR1cmktPmdldEhvc3QoKSwgJG9wdGlvbnMsICRpbmZvKTsKICAgICAgICAgICAgaWYgKCRhc2NpaUhvc3QgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkZXJyb3JCaXRTZXQgPSAkaW5mb1snZXJyb3JzJ10gPz8gMDsKCiAgICAgICAgICAgICAgICAkZXJyb3JDb25zdGFudHMgPSBhcnJheV9maWx0ZXIoYXJyYXlfa2V5cyhnZXRfZGVmaW5lZF9jb25zdGFudHMoKSksIHN0YXRpYyBmdW5jdGlvbiAoc3RyaW5nICRuYW1lKTogYm9vbCB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YnN0cigkbmFtZSwgMCwgMTEpID09PSAnSUROQV9FUlJPUl8nOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgJGVycm9ycyA9IFtdOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGVycm9yQ29uc3RhbnRzIGFzICRlcnJvckNvbnN0YW50KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRlcnJvckJpdFNldCAmIGNvbnN0YW50KCRlcnJvckNvbnN0YW50KSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3JzW10gPSAkZXJyb3JDb25zdGFudDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGVycm9yTWVzc2FnZSA9ICdJRE4gY29udmVyc2lvbiBmYWlsZWQnOwogICAgICAgICAgICAgICAgaWYgKCRlcnJvcnMpIHsKICAgICAgICAgICAgICAgICAgICAkZXJyb3JNZXNzYWdlIC49ICcgKGVycm9yczogJy5pbXBsb2RlKCcsICcsICRlcnJvcnMpLicpJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCRlcnJvck1lc3NhZ2UpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkdXJpLT5nZXRIb3N0KCkgIT09ICRhc2NpaUhvc3QpIHsKICAgICAgICAgICAgICAgIC8vIFJlcGxhY2UgVVJJIG9ubHkgaWYgdGhlIEFTQ0lJIHZlcnNpb24gaXMgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAkdXJpID0gJHVyaS0+d2l0aEhvc3QoJGFzY2lpSG9zdCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkdXJpOwogICAgfQoKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0ZW52KHN0cmluZyAkbmFtZSk6ID9zdHJpbmcKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJF9TRVJWRVJbJG5hbWVdKSkgewogICAgICAgICAgICByZXR1cm4gKHN0cmluZykgJF9TRVJWRVJbJG5hbWVdOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxQSFBfU0FQSSA9PT0gJ2NsaScgJiYgKCR2YWx1ZSA9IFxnZXRlbnYoJG5hbWUpKSAhPT0gZmFsc2UgJiYgJHZhbHVlICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAoc3RyaW5nKSAkdmFsdWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nfGZhbHNlCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGlkblRvQXNjaShzdHJpbmcgJGRvbWFpbiwgaW50ICRvcHRpb25zLCA/YXJyYXkgJiRpbmZvID0gW10pCiAgICB7CiAgICAgICAgaWYgKFxmdW5jdGlvbl9leGlzdHMoJ2lkbl90b19hc2NpaScpICYmIFxkZWZpbmVkKCdJTlRMX0lETkFfVkFSSUFOVF9VVFM0NicpKSB7CiAgICAgICAgICAgIHJldHVybiBcaWRuX3RvX2FzY2lpKCRkb21haW4sICRvcHRpb25zLCBcSU5UTF9JRE5BX1ZBUklBTlRfVVRTNDYsICRpbmZvKTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcRXJyb3IoJ2V4dC1pZG4gb3Igc3ltZm9ueS9wb2x5ZmlsbC1pbnRsLWlkbiBub3QgbG9hZGVkIG9yIHRvbyBvbGQnKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/UPGRADING.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R3V6emxlIFVwZ3JhZGUgR3VpZGUKPT09PT09PT09PT09PT09PT09PT0KCjYuMCB0byA3LjAKLS0tLS0tLS0tLQoKSW4gb3JkZXIgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG5ldyBmZWF0dXJlcyBvZiBQSFAsIEd1enpsZSBkcm9wcGVkIHRoZSBzdXBwb3J0Cm9mIFBIUCA1LiBUaGUgbWluaW11bSBzdXBwb3J0ZWQgUEhQIHZlcnNpb24gaXMgbm93IFBIUCA3LjIuIFR5cGUgaGludHMgYW5kIHJldHVybgp0eXBlcyBmb3IgZnVuY3Rpb25zIGFuZCBtZXRob2RzIGhhdmUgYmVlbiBhZGRlZCB3aGVyZXZlciBwb3NzaWJsZS4gCgpQbGVhc2UgbWFrZSBzdXJlOgotIFlvdSBhcmUgY2FsbGluZyBhIGZ1bmN0aW9uIG9yIGEgbWV0aG9kIHdpdGggdGhlIGNvcnJlY3QgdHlwZS4KLSBJZiB5b3UgZXh0ZW5kIGEgY2xhc3Mgb2YgR3V6emxlOyB1cGRhdGUgYWxsIHNpZ25hdHVyZXMgb24gbWV0aG9kcyB5b3Ugb3ZlcnJpZGUuCgojIyMjIE90aGVyIEJhY2t3YXJkcyBDb21wYXRpYmlsaXR5IEJyZWFraW5nIENoYW5nZXMKCi0gQ2xhc3MgYEd1enpsZUh0dHBcVXJpVGVtcGxhdGVgIGlzIHJlbW92ZWQuCi0gQ2xhc3MgYEd1enpsZUh0dHBcRXhjZXB0aW9uXFNlZWtFeGNlcHRpb25gIGlzIHJlbW92ZWQuCi0gQ2xhc3NlcyBgR3V6emxlSHR0cFxFeGNlcHRpb25cQmFkUmVzcG9uc2VFeGNlcHRpb25gLCBgR3V6emxlSHR0cFxFeGNlcHRpb25cQ2xpZW50RXhjZXB0aW9uYCwgCiAgYEd1enpsZUh0dHBcRXhjZXB0aW9uXFNlcnZlckV4Y2VwdGlvbmAgY2FuIG5vIGxvbmdlciBiZSBpbml0aWFsaXplZCB3aXRoIGFuIGVtcHR5CiAgUmVzcG9uc2UgYXMgYXJndW1lbnQuCi0gQ2xhc3MgYEd1enpsZUh0dHBcRXhjZXB0aW9uXENvbm5lY3RFeGNlcHRpb25gIG5vdyBleHRlbmRzIGBHdXp6bGVIdHRwXEV4Y2VwdGlvblxUcmFuc2ZlckV4Y2VwdGlvbmAKICBpbnN0ZWFkIG9mIGBHdXp6bGVIdHRwXEV4Y2VwdGlvblxSZXF1ZXN0RXhjZXB0aW9uYC4KLSBGdW5jdGlvbiBgR3V6emxlSHR0cFxFeGNlcHRpb25cQ29ubmVjdEV4Y2VwdGlvbjo6Z2V0UmVzcG9uc2UoKWAgaXMgcmVtb3ZlZC4KLSBGdW5jdGlvbiBgR3V6emxlSHR0cFxFeGNlcHRpb25cQ29ubmVjdEV4Y2VwdGlvbjo6aGFzUmVzcG9uc2UoKWAgaXMgcmVtb3ZlZC4KLSBDb25zdGFudCBgR3V6emxlSHR0cFxDbGllbnRJbnRlcmZhY2U6OlZFUlNJT05gIGlzIHJlbW92ZWQuIEFkZGVkIGBHdXp6bGVIdHRwXENsaWVudEludGVyZmFjZTo6TUFKT1JfVkVSU0lPTmAgaW5zdGVhZC4KLSBGdW5jdGlvbiBgR3V6emxlSHR0cFxFeGNlcHRpb25cUmVxdWVzdEV4Y2VwdGlvbjo6Z2V0UmVzcG9uc2VCb2R5U3VtbWFyeWAgaXMgcmVtb3ZlZC4KICBVc2UgYFxHdXp6bGVIdHRwXFBzcjdcZ2V0X21lc3NhZ2VfYm9keV9zdW1tYXJ5YCBhcyBhbiBhbHRlcm5hdGl2ZS4KLSBGdW5jdGlvbiBgR3V6emxlSHR0cFxDb29raWVcQ29va2llSmFyOjpnZXRDb29raWVWYWx1ZWAgaXMgcmVtb3ZlZC4KLSBSZXF1ZXN0IG9wdGlvbiBgZXhjZXB0aW9uc2AgaXMgcmVtb3ZlZC4gUGxlYXNlIHVzZSBgaHR0cF9lcnJvcnNgLgotIFJlcXVlc3Qgb3B0aW9uIGBzYXZlX3RvYCBpcyByZW1vdmVkLiBQbGVhc2UgdXNlIGBzaW5rYC4KLSBQb29sIG9wdGlvbiBgcG9vbF9zaXplYCBpcyByZW1vdmVkLiBQbGVhc2UgdXNlIGBjb25jdXJyZW5jeWAuCi0gV2Ugbm93IGxvb2sgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiB0aGUgYCRfU0VSVkVSYCBzdXBlciBnbG9iYWwsIGR1ZSB0byB0aHJlYWQgc2FmZXR5IGlzc3VlcyB3aXRoIGBnZXRlbnZgLiBXZSBjb250aW51ZSB0byBmYWxsYmFjayB0byBgZ2V0ZW52YCBpbiBDTEkgZW52aXJvbm1lbnRzLCBmb3IgbWF4aW11bSBjb21wYXRpYmlsaXR5LgotIFRoZSBgZ2V0YCwgYGhlYWRgLCBgcHV0YCwgYHBvc3RgLCBgcGF0Y2hgLCBgZGVsZXRlYCwgYGdldEFzeW5jYCwgYGhlYWRBc3luY2AsIGBwdXRBc3luY2AsIGBwb3N0QXN5bmNgLCBgcGF0Y2hBc3luY2AsIGFuZCBgZGVsZXRlQXN5bmNgIG1ldGhvZHMgYXJlIG5vdyBpbXBsZW1lbnRlZCBhcyBnZW51aW5lIG1ldGhvZHMgb24gYEd1enpsZUh0dHBcQ2xpZW50YCwgd2l0aCBzdHJvbmcgdHlwaW5nLiBUaGUgb3JpZ2luYWwgYF9fY2FsbGAgaW1wbGVtZW50YXRpb24gcmVtYWlucyB1bmNoYW5nZWQgZm9yIG5vdywgZm9yIG1heGltdW0gYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGJ1dCB3b24ndCBiZSBpbnZva2VkIHVuZGVyIG5vcm1hbCBvcGVyYXRpb24uCi0gVGhlIGBsb2dgIG1pZGRsZXdhcmUgd2lsbCBsb2cgdGhlIGVycm9ycyB3aXRoIGxldmVsIGBlcnJvcmAgaW5zdGVhZCBvZiBgbm90aWNlYCAKLSBTdXBwb3J0IGZvciBpbnRlcm5hdGlvbmFsIGRvbWFpbiBuYW1lcyAoSUROKSBpcyBub3cgZGlzYWJsZWQgYnkgZGVmYXVsdCwgYW5kIGVuYWJsaW5nIGl0IHJlcXVpcmVzIGluc3RhbGxpbmcgZXh0LWludGwsIGxpbmtlZCBhZ2FpbnN0IGEgbW9kZXJuIHZlcnNpb24gb2YgdGhlIEMgbGlicmFyeSAoSUNVIDQuNiBvciBoaWdoZXIpLgoKIyMjIyBOYXRpdmUgRnVuY3Rpb25zIENhbGxzCgpBbGwgaW50ZXJuYWwgbmF0aXZlIGZ1bmN0aW9ucyBjYWxscyBvZiBHdXp6bGUgYXJlIG5vdyBwcmVmaXhlZCB3aXRoIGEgc2xhc2guIFRoaXMKY2hhbmdlIG1ha2VzIGl0IGltcG9zc2libGUgZm9yIG1ldGhvZCBvdmVybG9hZGluZyBieSBvdGhlciBsaWJyYXJpZXMgb3IgYXBwbGljYXRpb25zLgpFeGFtcGxlOgoKYGBgcGhwCi8vIEJlZm9yZToKY3VybF92ZXJzaW9uKCk7CgovLyBBZnRlcjoKXGN1cmxfdmVyc2lvbigpOwpgYGAKCkZvciB0aGUgZnVsbCBkaWZmIHlvdSBjYW4gY2hlY2sgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2NvbXBhcmUvNi41LjQuLjcuMC4wKS4KCjUuMCB0byA2LjAKLS0tLS0tLS0tLQoKR3V6emxlIG5vdyB1c2VzIFtQU1ItN10oaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LykgZm9yIEhUVFAgbWVzc2FnZXMuCkR1ZSB0byB0aGUgZmFjdCB0aGF0IHRoZXNlIG1lc3NhZ2VzIGFyZSBpbW11dGFibGUsIHRoaXMgcHJvbXB0ZWQgYSByZWZhY3RvcmluZwpvZiBHdXp6bGUgdG8gdXNlIGEgbWlkZGxld2FyZSBiYXNlZCBzeXN0ZW0gcmF0aGVyIHRoYW4gYW4gZXZlbnQgc3lzdGVtLiBBbnkKSFRUUCBtZXNzYWdlIGludGVyYWN0aW9uIChlLmcuLCBgR3V6emxlSHR0cFxNZXNzYWdlXFJlcXVlc3RgKSBuZWVkIHRvIGJlCnVwZGF0ZWQgdG8gd29yayB3aXRoIHRoZSBuZXcgaW1tdXRhYmxlIFBTUi03IHJlcXVlc3QgYW5kIHJlc3BvbnNlIG9iamVjdHMuIEFueQpldmVudCBsaXN0ZW5lcnMgb3Igc3Vic2NyaWJlcnMgbmVlZCB0byBiZSB1cGRhdGVkIHRvIGJlY29tZSBtaWRkbGV3YXJlCmZ1bmN0aW9ucyB0aGF0IHdyYXAgaGFuZGxlcnMgKG9yIGFyZSBpbmplY3RlZCBpbnRvIGEKYEd1enpsZUh0dHBcSGFuZGxlclN0YWNrYCkuCgotIFJlbW92ZWQgYEd1enpsZUh0dHBcQmF0Y2hSZXN1bHRzYAotIFJlbW92ZWQgYEd1enpsZUh0dHBcQ29sbGVjdGlvbmAKLSBSZW1vdmVkIGBHdXp6bGVIdHRwXEhhc0RhdGFUcmFpdGAKLSBSZW1vdmVkIGBHdXp6bGVIdHRwXFRvQXJyYXlJbnRlcmZhY2VgCi0gVGhlIGBndXp6bGVodHRwL3N0cmVhbXNgIGRlcGVuZGVuY3kgaGFzIGJlZW4gcmVtb3ZlZC4gU3RyZWFtIGZ1bmN0aW9uYWxpdHkKICBpcyBub3cgcHJlc2VudCBpbiB0aGUgYEd1enpsZUh0dHBcUHNyN2AgbmFtZXNwYWNlIHByb3ZpZGVkIGJ5IHRoZQogIGBndXp6bGVodHRwL3BzcjdgIHBhY2thZ2UuCi0gR3V6emxlIG5vIGxvbmdlciB1c2VzIFJlYWN0UEhQIHByb21pc2VzIGFuZCBub3cgdXNlcyB0aGUKICBgZ3V6emxlaHR0cC9wcm9taXNlc2AgbGlicmFyeS4gV2UgdXNlIGEgY3VzdG9tIHByb21pc2UgbGlicmFyeSBmb3IgdGhyZWUKICBzaWduaWZpY2FudCByZWFzb25zOgogIDEuIFJlYWN0IHByb21pc2VzIChhdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoaXMpIGFyZSByZWN1cnNpdmUuIFByb21pc2UKICAgICBjaGFpbmluZyBhbmQgcHJvbWlzZSByZXNvbHV0aW9uIHdpbGwgZXZlbnR1YWxseSBibG93IHRoZSBzdGFjay4gR3V6emxlCiAgICAgcHJvbWlzZXMgYXJlIG5vdCByZWN1cnNpdmUgYXMgdGhleSB1c2UgYSBzb3J0IG9mIHRyYW1wb2xpbmluZyB0ZWNobmlxdWUuCiAgICAgTm90ZTogdGhlcmUgaGFzIGJlZW4gbW92ZW1lbnQgaW4gdGhlIFJlYWN0IHByb2plY3QgdG8gbW9kaWZ5IHByb21pc2VzIHRvCiAgICAgbm8gbG9uZ2VyIHV0aWxpemUgcmVjdXJzaW9uLgogIDIuIEd1enpsZSBuZWVkcyB0byBoYXZlIHRoZSBhYmlsaXR5IHRvIHN5bmNocm9ub3VzbHkgYmxvY2sgb24gYSBwcm9taXNlIHRvCiAgICAgd2FpdCBmb3IgYSByZXN1bHQuIEd1enpsZSBwcm9taXNlcyBhbGxvd3MgdGhpcyBmdW5jdGlvbmFsaXR5IChhbmQgZG9lcwogICAgIG5vdCByZXF1aXJlIHRoZSB1c2Ugb2YgcmVjdXJzaW9uKS4KICAzLiBCZWNhdXNlIHdlIG5lZWQgdG8gYmUgYWJsZSB0byB3YWl0IG9uIGEgcmVzdWx0LCBkb2luZyBzbyB1c2luZyBSZWFjdAogICAgIHByb21pc2VzIHJlcXVpcmVzIHdyYXBwaW5nIHJlYWN0IHByb21pc2VzIHdpdGggUmluZ1BIUCBmdXR1cmVzLiBUaGlzCiAgICAgb3ZlcmhlYWQgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgcmVkdWNpbmcgc3RhY2sgc2l6ZXMsIHJlZHVjaW5nIGNvbXBsZXhpdHksCiAgICAgYW5kIGltcHJvdmluZyBwZXJmb3JtYW5jZS4KLSBgR3V6emxlSHR0cFxNaW1ldHlwZXNgIGhhcyBiZWVuIG1vdmVkIHRvIGEgZnVuY3Rpb24gaW4KICBgR3V6emxlSHR0cFxQc3I3XG1pbWV0eXBlX2Zyb21fZXh0ZW5zaW9uYCBhbmQKICBgR3V6emxlSHR0cFxQc3I3XG1pbWV0eXBlX2Zyb21fZmlsZW5hbWVgLgotIGBHdXp6bGVIdHRwXFF1ZXJ5YCBhbmQgYEd1enpsZUh0dHBcUXVlcnlQYXJzZXJgIGhhdmUgYmVlbiByZW1vdmVkLiBRdWVyeQogIHN0cmluZ3MgbXVzdCBub3cgYmUgcGFzc2VkIGludG8gcmVxdWVzdCBvYmplY3RzIGFzIHN0cmluZ3MsIG9yIHByb3ZpZGVkIHRvCiAgdGhlIGBxdWVyeWAgcmVxdWVzdCBvcHRpb24gd2hlbiBjcmVhdGluZyByZXF1ZXN0cyB3aXRoIGNsaWVudHMuIFRoZSBgcXVlcnlgCiAgb3B0aW9uIHVzZXMgUEhQJ3MgYGh0dHBfYnVpbGRfcXVlcnlgIHRvIGNvbnZlcnQgYW4gYXJyYXkgdG8gYSBzdHJpbmcuIElmIHlvdQogIG5lZWQgYSBkaWZmZXJlbnQgc2VyaWFsaXphdGlvbiB0ZWNobmlxdWUsIHlvdSB3aWxsIG5lZWQgdG8gcGFzcyB0aGUgcXVlcnkKICBzdHJpbmcgaW4gYXMgYSBzdHJpbmcuIFRoZXJlIGFyZSBhIGNvdXBsZSBoZWxwZXIgZnVuY3Rpb25zIHRoYXQgd2lsbCBtYWtlCiAgd29ya2luZyB3aXRoIHF1ZXJ5IHN0cmluZ3MgZWFzaWVyOiBgR3V6emxlSHR0cFxQc3I3XHBhcnNlX3F1ZXJ5YCBhbmQKICBgR3V6emxlSHR0cFxQc3I3XGJ1aWxkX3F1ZXJ5YC4KLSBHdXp6bGUgbm8gbG9uZ2VyIGhhcyBhIGRlcGVuZGVuY3kgb24gUmluZ1BIUC4gRHVlIHRvIHRoZSB1c2Ugb2YgYSBtaWRkbGV3YXJlCiAgc3lzdGVtIGJhc2VkIG9uIFBTUi03LCB1c2luZyBSaW5nUEhQIGFuZCBpdCdzIG1pZGRsZXdhcmUgc3lzdGVtIGFzIHdlbGwgYWRkcwogIG1vcmUgY29tcGxleGl0eSB0aGFuIHRoZSBiZW5lZml0cyBpdCBwcm92aWRlcy4gQWxsIEhUVFAgaGFuZGxlcnMgdGhhdCB3ZXJlCiAgcHJlc2VudCBpbiBSaW5nUEhQIGhhdmUgYmVlbiBtb2RpZmllZCB0byB3b3JrIGRpcmVjdGx5IHdpdGggUFNSLTcgbWVzc2FnZXMKICBhbmQgcGxhY2VkIGluIHRoZSBgR3V6emxlSHR0cFxIYW5kbGVyYCBuYW1lc3BhY2UuIFRoaXMgc2lnbmlmaWNhbnRseSByZWR1Y2VzCiAgY29tcGxleGl0eSBpbiBHdXp6bGUsIHJlbW92ZXMgYSBkZXBlbmRlbmN5LCBhbmQgaW1wcm92ZXMgcGVyZm9ybWFuY2UuIFJpbmdQSFAKICB3aWxsIGJlIG1haW50YWluZWQgZm9yIEd1enpsZSA1IHN1cHBvcnQsIGJ1dCB3aWxsIG5vIGxvbmdlciBiZSBhIHBhcnQgb2YKICBHdXp6bGUgNi4KLSBBcyBHdXp6bGUgbm93IHVzZXMgYSBtaWRkbGV3YXJlIGJhc2VkIHN5c3RlbXMgdGhlIGV2ZW50IHN5c3RlbSBhbmQgUmluZ1BIUAogIGludGVncmF0aW9uIGhhcyBiZWVuIHJlbW92ZWQuIE5vdGU6IHdoaWxlIHRoZSBldmVudCBzeXN0ZW0gaGFzIGJlZW4gcmVtb3ZlZCwKICBpdCBpcyBwb3NzaWJsZSB0byBhZGQgeW91ciBvd24gdHlwZSBvZiBldmVudCBzeXN0ZW0gdGhhdCBpcyBwb3dlcmVkIGJ5IHRoZQogIG1pZGRsZXdhcmUgc3lzdGVtLgogIC0gUmVtb3ZlZCB0aGUgYEV2ZW50YCBuYW1lc3BhY2UuCiAgLSBSZW1vdmVkIHRoZSBgU3Vic2NyaWJlcmAgbmFtZXNwYWNlLgogIC0gUmVtb3ZlZCBgVHJhbnNhY3Rpb25gIGNsYXNzCiAgLSBSZW1vdmVkIGBSZXF1ZXN0RnNtYAogIC0gUmVtb3ZlZCBgUmluZ0JyaWRnZWAKICAtIGBHdXp6bGVIdHRwXFN1YnNjcmliZXJcQ29va2llYCBpcyBub3cgcHJvdmlkZWQgYnkKICAgIGBHdXp6bGVIdHRwXE1pZGRsZXdhcmU6OmNvb2tpZXNgCiAgLSBgR3V6emxlSHR0cFxTdWJzY3JpYmVyXEh0dHBFcnJvcmAgaXMgbm93IHByb3ZpZGVkIGJ5CiAgICBgR3V6emxlSHR0cFxNaWRkbGV3YXJlOjpodHRwRXJyb3JgCiAgLSBgR3V6emxlSHR0cFxTdWJzY3JpYmVyXEhpc3RvcnlgIGlzIG5vdyBwcm92aWRlZCBieQogICAgYEd1enpsZUh0dHBcTWlkZGxld2FyZTo6aGlzdG9yeWAKICAtIGBHdXp6bGVIdHRwXFN1YnNjcmliZXJcTW9ja2AgaXMgbm93IHByb3ZpZGVkIGJ5CiAgICBgR3V6emxlSHR0cFxIYW5kbGVyXE1vY2tIYW5kbGVyYAogIC0gYEd1enpsZUh0dHBcU3Vic2NyaWJlclxQcmVwYXJlYCBpcyBub3cgcHJvdmlkZWQgYnkKICAgIGBHdXp6bGVIdHRwXFByZXBhcmVCb2R5TWlkZGxld2FyZWAKICAtIGBHdXp6bGVIdHRwXFN1YnNjcmliZXJcUmVkaXJlY3RgIGlzIG5vdyBwcm92aWRlZCBieQogICAgYEd1enpsZUh0dHBcUmVkaXJlY3RNaWRkbGV3YXJlYAotIEd1enpsZSBub3cgdXNlcyBgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2VgIChpbXBsZW1lbnRzIGluCiAgYEd1enpsZUh0dHBcUHNyN1xVcmlgKSBmb3IgVVJJIHN1cHBvcnQuIGBHdXp6bGVIdHRwXFVybGAgaXMgbm93IGdvbmUuCi0gU3RhdGljIGZ1bmN0aW9ucyBpbiBgR3V6emxlSHR0cFxVdGlsc2AgaGF2ZSBiZWVuIG1vdmVkIHRvIG5hbWVzcGFjZWQKICBmdW5jdGlvbnMgdW5kZXIgdGhlIGBHdXp6bGVIdHRwYCBuYW1lc3BhY2UuIFRoaXMgcmVxdWlyZXMgZWl0aGVyIGEgQ29tcG9zZXIKICBiYXNlZCBhdXRvbG9hZGVyIG9yIHlvdSB0byBpbmNsdWRlIGZ1bmN0aW9ucy5waHAuCi0gYEd1enpsZUh0dHBcQ2xpZW50SW50ZXJmYWNlOjpnZXREZWZhdWx0T3B0aW9uYCBoYXMgYmVlbiByZW5hbWVkIHRvCiAgYEd1enpsZUh0dHBcQ2xpZW50SW50ZXJmYWNlOjpnZXRDb25maWdgLgotIGBHdXp6bGVIdHRwXENsaWVudEludGVyZmFjZTo6c2V0RGVmYXVsdE9wdGlvbmAgaGFzIGJlZW4gcmVtb3ZlZC4KLSBUaGUgYGpzb25gIGFuZCBgeG1sYCBtZXRob2RzIG9mIHJlc3BvbnNlIG9iamVjdHMgaGFzIGJlZW4gcmVtb3ZlZC4gV2l0aCB0aGUKICBtaWdyYXRpb24gdG8gc3RyaWN0bHkgYWRoZXJpbmcgdG8gUFNSLTcgYXMgdGhlIGludGVyZmFjZSBmb3IgR3V6emxlIG1lc3NhZ2VzLAogIGFkZGluZyBtZXRob2RzIHRvIG1lc3NhZ2UgaW50ZXJmYWNlcyB3b3VsZCBhY3R1YWxseSByZXF1aXJlIEd1enpsZSBtZXNzYWdlcwogIHRvIGV4dGVuZCBmcm9tIFBTUi03IG1lc3NhZ2VzIHJhdGhlciB0aGVuIHdvcmsgd2l0aCB0aGVtIGRpcmVjdGx5LgoKIyMgTWlncmF0aW5nIHRvIG1pZGRsZXdhcmUKClRoZSBjaGFuZ2UgdG8gUFNSLTcgdW5mb3J0dW5hdGVseSByZXF1aXJlZCBzaWduaWZpY2FudCByZWZhY3RvcmluZyB0byBHdXp6bGUKZHVlIHRvIHRoZSBmYWN0IHRoYXQgUFNSLTcgbWVzc2FnZXMgYXJlIGltbXV0YWJsZS4gR3V6emxlIDUgcmVsaWVkIG9uIGFuIGV2ZW50CnN5c3RlbSBmcm9tIHBsdWdpbnMuIFRoZSBldmVudCBzeXN0ZW0gcmVsaWVkIG9uIG11dGFiaWxpdHkgb2YgSFRUUCBtZXNzYWdlcyBhbmQKc2lkZSBlZmZlY3RzIGluIG9yZGVyIHRvIHdvcmsuIFdpdGggaW1tdXRhYmxlIG1lc3NhZ2VzLCB5b3UgaGF2ZSB0byBjaGFuZ2UgeW91cgp3b3JrZmxvdyB0byBiZWNvbWUgbW9yZSBhYm91dCBlaXRoZXIgcmV0dXJuaW5nIGEgdmFsdWUgKGUuZy4sIGZ1bmN0aW9uYWwKbWlkZGxld2FyZXMpIG9yIHNldHRpbmcgYSB2YWx1ZSBvbiBhbiBvYmplY3QuIEd1enpsZSB2NiBoYXMgY2hvc2VuIHRoZQpmdW5jdGlvbmFsIG1pZGRsZXdhcmUgYXBwcm9hY2guCgpJbnN0ZWFkIG9mIHVzaW5nIHRoZSBldmVudCBzeXN0ZW0gdG8gbGlzdGVuIGZvciB0aGluZ3MgbGlrZSB0aGUgYGJlZm9yZWAgZXZlbnQsCnlvdSBub3cgY3JlYXRlIGEgc3RhY2sgYmFzZWQgbWlkZGxld2FyZSBmdW5jdGlvbiB0aGF0IGludGVyY2VwdHMgYSByZXF1ZXN0IG9uCnRoZSB3YXkgaW4gYW5kIHRoZSBwcm9taXNlIG9mIHRoZSByZXNwb25zZSBvbiB0aGUgd2F5IG91dC4gVGhpcyBpcyBhIG11Y2gKc2ltcGxlciBhbmQgbW9yZSBwcmVkaWN0YWJsZSBhcHByb2FjaCB0aGFuIHRoZSBldmVudCBzeXN0ZW0gYW5kIHdvcmtzIG5pY2VseQp3aXRoIFBTUi03IG1pZGRsZXdhcmUuIER1ZSB0byB0aGUgdXNlIG9mIHByb21pc2VzLCB0aGUgbWlkZGxld2FyZSBzeXN0ZW0gaXMKYWxzbyBhc3luY2hyb25vdXMuCgp2NToKCmBgYHBocAp1c2UgR3V6emxlSHR0cFxFdmVudFxCZWZvcmVFdmVudDsKJGNsaWVudCA9IG5ldyBHdXp6bGVIdHRwXENsaWVudCgpOwovLyBHZXQgdGhlIGVtaXR0ZXIgYW5kIGxpc3RlbiB0byB0aGUgYmVmb3JlIGV2ZW50LgokY2xpZW50LT5nZXRFbWl0dGVyKCktPm9uKCdiZWZvcmUnLCBmdW5jdGlvbiAoQmVmb3JlRXZlbnQgJGUpIHsKICAgIC8vIEd1enpsZSB2NSBldmVudHMgcmVsaWVkIG9uIG11dGF0aW9uCiAgICAkZS0+Z2V0UmVxdWVzdCgpLT5zZXRIZWFkZXIoJ1gtRm9vJywgJ0JhcicpOwp9KTsKYGBgCgp2NjoKCkluIHY2LCB5b3UgY2FuIG1vZGlmeSB0aGUgcmVxdWVzdCBiZWZvcmUgaXQgaXMgc2VudCB1c2luZyB0aGUgYG1hcFJlcXVlc3RgCm1pZGRsZXdhcmUuIFRoZSBpZGlvbWF0aWMgd2F5IGluIHY2IHRvIG1vZGlmeSB0aGUgcmVxdWVzdC9yZXNwb25zZSBsaWZlY3ljbGUgaXMKdG8gc2V0dXAgYSBoYW5kbGVyIG1pZGRsZXdhcmUgc3RhY2sgdXAgZnJvbnQgYW5kIGluamVjdCB0aGUgaGFuZGxlciBpbnRvIGEKY2xpZW50LgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXE1pZGRsZXdhcmU7Ci8vIENyZWF0ZSBhIGhhbmRsZXIgc3RhY2sgdGhhdCBoYXMgYWxsIG9mIHRoZSBkZWZhdWx0IG1pZGRsZXdhcmVzIGF0dGFjaGVkCiRoYW5kbGVyID0gR3V6emxlSHR0cFxIYW5kbGVyU3RhY2s6OmNyZWF0ZSgpOwovLyBQdXNoIHRoZSBoYW5kbGVyIG9udG8gdGhlIGhhbmRsZXIgc3RhY2sKJGhhbmRsZXItPnB1c2goTWlkZGxld2FyZTo6bWFwUmVxdWVzdChmdW5jdGlvbiAoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCkgewogICAgLy8gTm90aWNlIHRoYXQgd2UgaGF2ZSB0byByZXR1cm4gYSByZXF1ZXN0IG9iamVjdAogICAgcmV0dXJuICRyZXF1ZXN0LT53aXRoSGVhZGVyKCdYLUZvbycsICdCYXInKTsKfSkpOwovLyBJbmplY3QgdGhlIGhhbmRsZXIgaW50byB0aGUgY2xpZW50CiRjbGllbnQgPSBuZXcgR3V6emxlSHR0cFxDbGllbnQoWydoYW5kbGVyJyA9PiAkaGFuZGxlcl0pOwpgYGAKCiMjIFBPU1QgUmVxdWVzdHMKClRoaXMgdmVyc2lvbiBhZGRlZCB0aGUgW2Bmb3JtX3BhcmFtc2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2Jsb2IvNi41L2RvY3MvcmVxdWVzdC1vcHRpb25zLnJzdCNmb3JtX3BhcmFtcykKYW5kIGBtdWx0aXBhcnRgIHJlcXVlc3Qgb3B0aW9ucy4gYGZvcm1fcGFyYW1zYCBpcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZgpzdHJpbmdzIG9yIGFycmF5IG9mIHN0cmluZ3MgYW5kIGlzIHVzZWQgdG8gc2VyaWFsaXplIGFuCmBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgIFBPU1QgcmVxdWVzdC4gVGhlCltgbXVsdGlwYXJ0YF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvYmxvYi82LjUvZG9jcy9yZXF1ZXN0LW9wdGlvbnMucnN0I211bHRpcGFydCkKb3B0aW9uIGlzIG5vdyB1c2VkIHRvIHNlbmQgYSBtdWx0aXBhcnQvZm9ybS1kYXRhIFBPU1QgcmVxdWVzdC4KCmBHdXp6bGVIdHRwXFBvc3RcUG9zdEZpbGVgIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYG11bHRpcGFydGAgb3B0aW9uIHRvIGFkZApQT1NUIGZpbGVzIHRvIGEgbXVsdGlwYXJ0L2Zvcm0tZGF0YSByZXF1ZXN0LgoKVGhlIGBib2R5YCBvcHRpb24gbm8gbG9uZ2VyIGFjY2VwdHMgYW4gYXJyYXkgdG8gc2VuZCBQT1NUIHJlcXVlc3RzLiBQbGVhc2UgdXNlCmBtdWx0aXBhcnRgIG9yIGBmb3JtX3BhcmFtc2AgaW5zdGVhZC4KClRoZSBgYmFzZV91cmxgIG9wdGlvbiBoYXMgYmVlbiByZW5hbWVkIHRvIGBiYXNlX3VyaWAuCgo0LnggdG8gNS4wCi0tLS0tLS0tLS0KCiMjIFJld3JpdHRlbiBBZGFwdGVyIExheWVyCgpHdXp6bGUgbm93IHVzZXMgW1JpbmdQSFBdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvUmluZ1BIUCkgdG8gc2VuZApIVFRQIHJlcXVlc3RzLiBUaGUgYGFkYXB0ZXJgIG9wdGlvbiBpbiBhIGBHdXp6bGVIdHRwXENsaWVudGAgY29uc3RydWN0b3IKaXMgc3RpbGwgc3VwcG9ydGVkLCBidXQgaXQgaGFzIG5vdyBiZWVuIHJlbmFtZWQgdG8gYGhhbmRsZXJgLiBJbnN0ZWFkIG9mCnBhc3NpbmcgYSBgR3V6emxlSHR0cFxBZGFwdGVyXEFkYXB0ZXJJbnRlcmZhY2VgLCB5b3UgbXVzdCBub3cgcGFzcyBhIFBIUApgY2FsbGFibGVgIHRoYXQgZm9sbG93cyB0aGUgUmluZ1BIUCBzcGVjaWZpY2F0aW9uLgoKIyMgUmVtb3ZlZCBGbHVlbnQgSW50ZXJmYWNlcwoKW0ZsdWVudCBpbnRlcmZhY2VzIHdlcmUgcmVtb3ZlZF0oaHR0cHM6Ly9vY3JhbWl1cy5naXRodWIuaW8vYmxvZy9mbHVlbnQtaW50ZXJmYWNlcy1hcmUtZXZpbC8pCmZyb20gdGhlIGZvbGxvd2luZyBjbGFzc2VzOgoKLSBgR3V6emxlSHR0cFxDb2xsZWN0aW9uYAotIGBHdXp6bGVIdHRwXFVybGAKLSBgR3V6emxlSHR0cFxRdWVyeWAKLSBgR3V6emxlSHR0cFxQb3N0XFBvc3RCb2R5YAotIGBHdXp6bGVIdHRwXENvb2tpZVxTZXRDb29raWVgCgojIyBSZW1vdmVkIGZ1bmN0aW9ucy5waHAKClJlbW92ZWQgImZ1bmN0aW9ucy5waHAiLCBzbyB0aGF0IEd1enpsZSBpcyB0cnVseSBQU1ItNCBjb21wbGlhbnQuIFRoZSBmb2xsb3dpbmcKZnVuY3Rpb25zIGNhbiBiZSB1c2VkIGFzIHJlcGxhY2VtZW50cy4KCi0gYEd1enpsZUh0dHBcanNvbl9kZWNvZGVgIC0+IGBHdXp6bGVIdHRwXFV0aWxzOjpqc29uRGVjb2RlYAotIGBHdXp6bGVIdHRwXGdldF9wYXRoYCAtPiBgR3V6emxlSHR0cFxVdGlsczo6Z2V0UGF0aGAKLSBgR3V6emxlSHR0cFxVdGlsczo6c2V0UGF0aGAgLT4gYEd1enpsZUh0dHBcc2V0X3BhdGhgCi0gYEd1enpsZUh0dHBcUG9vbDo6YmF0Y2hgIC0+IGBHdXp6bGVIdHRwXGJhdGNoYC4gVGhpcyBmdW5jdGlvbiBpcywgaG93ZXZlciwKICBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHVzaW5nIGBHdXp6bGVIdHRwXFBvb2w6OmJhdGNoKClgLgoKVGhlICJwcm9jZWR1cmFsIiBnbG9iYWwgY2xpZW50IGhhcyBiZWVuIHJlbW92ZWQgd2l0aCBubyByZXBsYWNlbWVudCAoZS5nLiwKYEd1enpsZUh0dHBcZ2V0KClgLCBgR3V6emxlSHR0cFxwb3N0KClgLCBldGMuKS4gVXNlIGEgYEd1enpsZUh0dHBcQ2xpZW50YApvYmplY3QgYXMgYSByZXBsYWNlbWVudC4KCiMjIGB0aHJvd0ltbWVkaWF0ZWx5YCBoYXMgYmVlbiByZW1vdmVkCgpUaGUgY29uY2VwdCBvZiAidGhyb3dJbW1lZGlhdGVseSIgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGV4Y2VwdGlvbnMgYW5kIGVycm9yCmV2ZW50cy4gVGhpcyBjb250cm9sIG1lY2hhbmlzbSB3YXMgdXNlZCB0byBzdG9wIGEgdHJhbnNmZXIgb2YgY29uY3VycmVudApyZXF1ZXN0cyBmcm9tIGNvbXBsZXRpbmcuIFRoaXMgY2FuIG5vdyBiZSBoYW5kbGVkIGJ5IHRocm93aW5nIHRoZSBleGNlcHRpb24gb3IKYnkgY2FuY2VsbGluZyBhIHBvb2wgb2YgcmVxdWVzdHMgb3IgZWFjaCBvdXRzdGFuZGluZyBmdXR1cmUgcmVxdWVzdAppbmRpdmlkdWFsbHkuCgojIyBoZWFkZXJzIGV2ZW50IGhhcyBiZWVuIHJlbW92ZWQKClJlbW92ZWQgdGhlICJoZWFkZXJzIiBldmVudC4gVGhpcyBldmVudCB3YXMgb25seSB1c2VmdWwgZm9yIGNoYW5naW5nIHRoZQpib2R5IGEgcmVzcG9uc2Ugb25jZSB0aGUgaGVhZGVycyBvZiB0aGUgcmVzcG9uc2Ugd2VyZSBrbm93bi4gWW91IGNhbiBpbXBsZW1lbnQKYSBzaW1pbGFyIGJlaGF2aW9yIGluIGEgbnVtYmVyIG9mIHdheXMuIE9uZSBleGFtcGxlIG1pZ2h0IGJlIHRvIHVzZSBhCkZuU3RyZWFtIHRoYXQgaGFzIGFjY2VzcyB0byB0aGUgdHJhbnNhY3Rpb24gYmVpbmcgc2VudC4gRm9yIGV4YW1wbGUsIHdoZW4gdGhlCmZpcnN0IGJ5dGUgaXMgd3JpdHRlbiwgeW91IGNvdWxkIGNoZWNrIGlmIHRoZSByZXNwb25zZSBoZWFkZXJzIG1hdGNoIHlvdXIKZXhwZWN0YXRpb25zLCBhbmQgaWYgc28sIGNoYW5nZSB0aGUgYWN0dWFsIHN0cmVhbSBib2R5IHRoYXQgaXMgYmVpbmcKd3JpdHRlbiB0by4KCiMjIFVwZGF0ZXMgdG8gSFRUUCBNZXNzYWdlcwoKUmVtb3ZlZCB0aGUgYGFzQXJyYXlgIHBhcmFtZXRlciBmcm9tCmBHdXp6bGVIdHRwXE1lc3NhZ2VcTWVzc2FnZUludGVyZmFjZTo6Z2V0SGVhZGVyYC4gSWYgeW91IHdhbnQgdG8gZ2V0IGEgaGVhZGVyCnZhbHVlIGFzIGFuIGFycmF5LCB0aGVuIHVzZSB0aGUgbmV3bHkgYWRkZWQgYGdldEhlYWRlckFzQXJyYXkoKWAgbWV0aG9kIG9mCmBNZXNzYWdlSW50ZXJmYWNlYC4gVGhpcyBjaGFuZ2UgbWFrZXMgdGhlIEd1enpsZSBpbnRlcmZhY2VzIGNvbXBhdGlibGUgd2l0aAp0aGUgUFNSLTcgaW50ZXJmYWNlcy4KCjMueCB0byA0LjAKLS0tLS0tLS0tLQoKIyMgT3ZlcmFyY2hpbmcgY2hhbmdlczoKCi0gTm93IHJlcXVpcmVzIFBIUCA1LjQgb3IgZ3JlYXRlci4KLSBObyBsb25nZXIgcmVxdWlyZXMgY1VSTCB0byBzZW5kIHJlcXVlc3RzLgotIEd1enpsZSBubyBsb25nZXIgd3JhcHMgZXZlcnkgZXhjZXB0aW9uIGl0IHRocm93cy4gT25seSBleGNlcHRpb25zIHRoYXQgYXJlCiAgcmVjb3ZlcmFibGUgYXJlIG5vdyB3cmFwcGVkIGJ5IEd1enpsZS4KLSBWYXJpb3VzIG5hbWVzcGFjZXMgaGF2ZSBiZWVuIHJlbW92ZWQgb3IgcmVuYW1lZC4KLSBObyBsb25nZXIgcmVxdWlyaW5nIHRoZSBTeW1mb255IEV2ZW50RGlzcGF0Y2hlci4gQSBjdXN0b20gZXZlbnQgZGlzcGF0Y2hlcgogIGJhc2VkIG9uIHRoZSBTeW1mb255IEV2ZW50RGlzcGF0Y2hlciBpcwogIG5vdyB1dGlsaXplZCBpbiBgR3V6emxlSHR0cFxFdmVudFxFbWl0dGVySW50ZXJmYWNlYCAocmVzdWx0aW5nIGluIHNpZ25pZmljYW50CiAgc3BlZWQgYW5kIGZ1bmN0aW9uYWxpdHkgaW1wcm92ZW1lbnRzKS4KCkNoYW5nZXMgcGVyIEd1enpsZSAzLnggbmFtZXNwYWNlIGFyZSBkZXNjcmliZWQgYmVsb3cuCgojIyBCYXRjaAoKVGhlIGBHdXp6bGVcQmF0Y2hgIG5hbWVzcGFjZSBoYXMgYmVlbiByZW1vdmVkLiBUaGlzIGlzIGJlc3QgbGVmdCB0bwp0aGlyZC1wYXJ0aWVzIHRvIGltcGxlbWVudCBvbiB0b3Agb2YgR3V6emxlJ3MgY29yZSBIVFRQIGxpYnJhcnkuCgojIyBDYWNoZQoKVGhlIGBHdXp6bGVcQ2FjaGVgIG5hbWVzcGFjZSBoYXMgYmVlbiByZW1vdmVkLiAoVG9kbzogTm8gc3VpdGFibGUgcmVwbGFjZW1lbnQKaGFzIGJlZW4gaW1wbGVtZW50ZWQgeWV0LCBidXQgaG9waW5nIHRvIHV0aWxpemUgYSBQU1IgY2FjaGUgaW50ZXJmYWNlKS4KCiMjIENvbW1vbgoKLSBSZW1vdmVkIGFsbCBvZiB0aGUgd3JhcHBlZCBleGNlcHRpb25zLiBJdCdzIGJldHRlciB0byB1c2UgdGhlIHN0YW5kYXJkIFBIUAogIGxpYnJhcnkgZm9yIHVucmVjb3ZlcmFibGUgZXhjZXB0aW9ucy4KLSBgRnJvbUNvbmZpZ0ludGVyZmFjZWAgaGFzIGJlZW4gcmVtb3ZlZC4KLSBgR3V6emxlXENvbW1vblxWZXJzaW9uYCBoYXMgYmVlbiByZW1vdmVkLiBUaGUgVkVSU0lPTiBjb25zdGFudCBjYW4gYmUgZm91bmQKICBhdCBgR3V6emxlSHR0cFxDbGllbnRJbnRlcmZhY2U6OlZFUlNJT05gLgoKIyMjIENvbGxlY3Rpb24KCi0gYGdldEFsbGAgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGB0b0FycmF5YCB0byBjb252ZXJ0IGEgY29sbGVjdGlvbiB0byBhbiBhcnJheS4KLSBgaW5qZWN0YCBoYXMgYmVlbiByZW1vdmVkLgotIGBrZXlTZWFyY2hgIGhhcyBiZWVuIHJlbW92ZWQuCi0gYGdldFBhdGhgIG5vIGxvbmdlciBzdXBwb3J0cyB3aWxkY2FyZCBleHByZXNzaW9ucy4gVXNlIHNvbWV0aGluZyBiZXR0ZXIgbGlrZQogIEpNRVNQYXRoIGZvciB0aGlzLgotIGBzZXRQYXRoYCBub3cgc3VwcG9ydHMgYXBwZW5kaW5nIHRvIGFuIGV4aXN0aW5nIGFycmF5IHZpYSB0aGUgYFtdYCBub3RhdGlvbi4KCiMjIyBFdmVudHMKCkd1enpsZSBubyBsb25nZXIgcmVxdWlyZXMgU3ltZm9ueSdzIEV2ZW50RGlzcGF0Y2hlciBjb21wb25lbnQuIEd1enpsZSBub3cgdXNlcwpgR3V6emxlSHR0cFxFdmVudFxFbWl0dGVyYC4KCi0gYFN5bWZvbnlcQ29tcG9uZW50XEV2ZW50RGlzcGF0Y2hlclxFdmVudERpc3BhdGNoZXJJbnRlcmZhY2VgIGlzIHJlcGxhY2VkIGJ5CiAgYEd1enpsZUh0dHBcRXZlbnRcRW1pdHRlckludGVyZmFjZWAuCi0gYFN5bWZvbnlcQ29tcG9uZW50XEV2ZW50RGlzcGF0Y2hlclxFdmVudERpc3BhdGNoZXJgIGlzIHJlcGxhY2VkIGJ5CiAgYEd1enpsZUh0dHBcRXZlbnRcRW1pdHRlcmAuCi0gYFN5bWZvbnlcQ29tcG9uZW50XEV2ZW50RGlzcGF0Y2hlclxFdmVudGAgaXMgcmVwbGFjZWQgYnkKICBgR3V6emxlSHR0cFxFdmVudFxFdmVudGAsIGFuZCBHdXp6bGUgbm93IGhhcyBhbiBFdmVudEludGVyZmFjZSBpbgogIGBHdXp6bGVIdHRwXEV2ZW50XEV2ZW50SW50ZXJmYWNlYC4KLSBgQWJzdHJhY3RIYXNEaXNwYXRjaGVyYCBoYXMgbW92ZWQgdG8gYSB0cmFpdCwgYEhhc0VtaXR0ZXJUcmFpdGAsIGFuZAogIGBIYXNEaXNwYXRjaGVySW50ZXJmYWNlYCBoYXMgbW92ZWQgdG8gYEhhc0VtaXR0ZXJJbnRlcmZhY2VgLiBSZXRyaWV2aW5nIHRoZQogIGV2ZW50IGVtaXR0ZXIgb2YgYSByZXF1ZXN0LCBjbGllbnQsIGV0Yy4gbm93IHVzZXMgdGhlIGBnZXRFbWl0dGVyYCBtZXRob2QKICByYXRoZXIgdGhhbiB0aGUgYGdldERpc3BhdGNoZXJgIG1ldGhvZC4KCiMjIyMgRW1pdHRlcgoKLSBVc2UgdGhlIGBvbmNlKClgIG1ldGhvZCB0byBhZGQgYSBsaXN0ZW5lciB0aGF0IGF1dG9tYXRpY2FsbHkgcmVtb3ZlcyBpdHNlbGYKICB0aGUgZmlyc3QgdGltZSBpdCBpcyBpbnZva2VkLgotIFVzZSB0aGUgYGxpc3RlbmVycygpYCBtZXRob2QgdG8gcmV0cmlldmUgYSBsaXN0IG9mIGV2ZW50IGxpc3RlbmVycyByYXRoZXIgdGhhbgogIHRoZSBgZ2V0TGlzdGVuZXJzKClgIG1ldGhvZC4KLSBVc2UgYGVtaXQoKWAgaW5zdGVhZCBvZiBgZGlzcGF0Y2goKWAgdG8gZW1pdCBhbiBldmVudCBmcm9tIGFuIGVtaXR0ZXIuCi0gVXNlIGBhdHRhY2goKWAgaW5zdGVhZCBvZiBgYWRkU3Vic2NyaWJlcigpYCBhbmQgYGRldGFjaCgpYCBpbnN0ZWFkIG9mCiAgYHJlbW92ZVN1YnNjcmliZXIoKWAuCgpgYGBwaHAKJG1vY2sgPSBuZXcgTW9jaygpOwovLyAzLngKJHJlcXVlc3QtPmdldEV2ZW50RGlzcGF0Y2hlcigpLT5hZGRTdWJzY3JpYmVyKCRtb2NrKTsKJHJlcXVlc3QtPmdldEV2ZW50RGlzcGF0Y2hlcigpLT5yZW1vdmVTdWJzY3JpYmVyKCRtb2NrKTsKLy8gNC54CiRyZXF1ZXN0LT5nZXRFbWl0dGVyKCktPmF0dGFjaCgkbW9jayk7CiRyZXF1ZXN0LT5nZXRFbWl0dGVyKCktPmRldGFjaCgkbW9jayk7CmBgYAoKVXNlIHRoZSBgb24oKWAgbWV0aG9kIHRvIGFkZCBhIGxpc3RlbmVyIHJhdGhlciB0aGFuIHRoZSBgYWRkTGlzdGVuZXIoKWAgbWV0aG9kLgoKYGBgcGhwCi8vIDMueAokcmVxdWVzdC0+Z2V0RXZlbnREaXNwYXRjaGVyKCktPmFkZExpc3RlbmVyKCdmb28nLCBmdW5jdGlvbiAoRXZlbnQgJGV2ZW50KSB7IC8qIC4uLiAqLyB9ICk7Ci8vIDQueAokcmVxdWVzdC0+Z2V0RW1pdHRlcigpLT5vbignZm9vJywgZnVuY3Rpb24gKEV2ZW50ICRldmVudCwgJG5hbWUpIHsgLyogLi4uICovIH0gKTsKYGBgCgojIyBIdHRwCgojIyMgR2VuZXJhbCBjaGFuZ2VzCgotIFRoZSBjYWNlcnQucGVtIGNlcnRpZmljYXRlIGhhcyBiZWVuIG1vdmVkIHRvIGBzcmMvY2FjZXJ0LnBlbWAuCi0gQWRkZWQgdGhlIGNvbmNlcHQgb2YgYWRhcHRlcnMgdGhhdCBhcmUgdXNlZCB0byB0cmFuc2ZlciByZXF1ZXN0cyBvdmVyIHRoZQogIHdpcmUuCi0gU2ltcGxpZmllZCB0aGUgZXZlbnQgc3lzdGVtLgotIFNlbmRpbmcgcmVxdWVzdHMgaW4gcGFyYWxsZWwgaXMgc3RpbGwgcG9zc2libGUsIGJ1dCBiYXRjaGluZyBpcyBubyBsb25nZXIgYQogIGNvbmNlcHQgb2YgdGhlIEhUVFAgbGF5ZXIuIEluc3RlYWQsIHlvdSBtdXN0IHVzZSB0aGUgYGNvbXBsZXRlYCBhbmQgYGVycm9yYAogIGV2ZW50cyB0byBhc3luY2hyb25vdXNseSBtYW5hZ2UgcGFyYWxsZWwgcmVxdWVzdCB0cmFuc2ZlcnMuCi0gYEd1enpsZVxIdHRwXFVybGAgaGFzIG1vdmVkIHRvIGBHdXp6bGVIdHRwXFVybGAuCi0gYEd1enpsZVxIdHRwXFF1ZXJ5U3RyaW5nYCBoYXMgbW92ZWQgdG8gYEd1enpsZUh0dHBcUXVlcnlgLgotIFF1ZXJ5QWdncmVnYXRvcnMgaGF2ZSBiZWVuIHJld3JpdHRlbiBzbyB0aGF0IHRoZXkgYXJlIHNpbXBseSBjYWxsYWJsZQogIGZ1bmN0aW9ucy4KLSBgR3V6emxlSHR0cFxTdGF0aWNDbGllbnRgIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgZnVuY3Rpb25zIHByb3ZpZGVkIGluCiAgYGZ1bmN0aW9ucy5waHBgIGZvciBhbiBlYXN5IHRvIHVzZSBzdGF0aWMgY2xpZW50IGluc3RhbmNlLgotIEV4Y2VwdGlvbnMgaW4gYEd1enpsZUh0dHBcRXhjZXB0aW9uYCBoYXZlIGJlZW4gdXBkYXRlZCB0byBhbGwgZXh0ZW5kIGZyb20KICBgR3V6emxlSHR0cFxFeGNlcHRpb25cVHJhbnNmZXJFeGNlcHRpb25gLgoKIyMjIENsaWVudAoKQ2FsbGluZyBtZXRob2RzIGxpa2UgYGdldCgpYCwgYHBvc3QoKWAsIGBoZWFkKClgLCBldGMuIG5vIGxvbmdlciBjcmVhdGUgYW5kCnJldHVybiBhIHJlcXVlc3QsIGJ1dCByYXRoZXIgY3JlYXRlcyBhIHJlcXVlc3QsIHNlbmRzIHRoZSByZXF1ZXN0LCBhbmQgcmV0dXJucwp0aGUgcmVzcG9uc2UuCgpgYGBwaHAKLy8gMy4wCiRyZXF1ZXN0ID0gJGNsaWVudC0+Z2V0KCcvJyk7CiRyZXNwb25zZSA9ICRyZXF1ZXN0LT5zZW5kKCk7CgovLyA0LjAKJHJlc3BvbnNlID0gJGNsaWVudC0+Z2V0KCcvJyk7CgovLyBvciwgdG8gbWlycm9yIHRoZSBwcmV2aW91cyBiZWhhdmlvcgokcmVxdWVzdCA9ICRjbGllbnQtPmNyZWF0ZVJlcXVlc3QoJ0dFVCcsICcvJyk7CiRyZXNwb25zZSA9ICRjbGllbnQtPnNlbmQoJHJlcXVlc3QpOwpgYGAKCmBHdXp6bGVIdHRwXENsaWVudEludGVyZmFjZWAgaGFzIGNoYW5nZWQuCgotIFRoZSBgc2VuZGAgbWV0aG9kIG5vIGxvbmdlciBhY2NlcHRzIG1vcmUgdGhhbiBvbmUgcmVxdWVzdC4gVXNlIGBzZW5kQWxsYCB0bwogIHNlbmQgbXVsdGlwbGUgcmVxdWVzdHMgaW4gcGFyYWxsZWwuCi0gYHNldFVzZXJBZ2VudCgpYCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYSBkZWZhdWx0IHJlcXVlc3Qgb3B0aW9uIGluc3RlYWQuIFlvdQogIGNvdWxkLCBmb3IgZXhhbXBsZSwgZG8gc29tZXRoaW5nIGxpa2U6CiAgYCRjbGllbnQtPnNldENvbmZpZygnZGVmYXVsdHMvaGVhZGVycy9Vc2VyLUFnZW50JywgJ0Zvby9CYXIgJyAuICRjbGllbnQ6OmdldERlZmF1bHRVc2VyQWdlbnQoKSlgLgotIGBzZXRTc2xWZXJpZmljYXRpb24oKWAgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGRlZmF1bHQgcmVxdWVzdCBvcHRpb25zIGluc3RlYWQsCiAgbGlrZSBgJGNsaWVudC0+c2V0Q29uZmlnKCdkZWZhdWx0cy92ZXJpZnknLCB0cnVlKWAuCgpgR3V6emxlSHR0cFxDbGllbnRgIGhhcyBjaGFuZ2VkLgoKLSBUaGUgY29uc3RydWN0b3Igbm93IGFjY2VwdHMgb25seSBhbiBhc3NvY2lhdGl2ZSBhcnJheS4gWW91IGNhbiBpbmNsdWRlIGEKICBgYmFzZV91cmxgIHN0cmluZyBvciBhcnJheSB0byB1c2UgYSBVUkkgdGVtcGxhdGUgYXMgdGhlIGJhc2UgVVJMIG9mIGEgY2xpZW50LgogIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IGEgYGRlZmF1bHRzYCBrZXkgdGhhdCBpcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBkZWZhdWx0CiAgcmVxdWVzdCBvcHRpb25zLiBZb3UgY2FuIHBhc3MgYW4gYGFkYXB0ZXJgIHRvIHVzZSBhIGN1c3RvbSBhZGFwdGVyLAogIGBiYXRjaF9hZGFwdGVyYCB0byB1c2UgYSBjdXN0b20gYWRhcHRlciBmb3Igc2VuZGluZyByZXF1ZXN0cyBpbiBwYXJhbGxlbCwgb3IKICBhIGBtZXNzYWdlX2ZhY3RvcnlgIHRvIGNoYW5nZSB0aGUgZmFjdG9yeSB1c2VkIHRvIGNyZWF0ZSBIVFRQIHJlcXVlc3RzIGFuZAogIHJlc3BvbnNlcy4KLSBUaGUgY2xpZW50IG5vIGxvbmdlciBlbWl0cyBhIGBjbGllbnQuY3JlYXRlX3JlcXVlc3RgIGV2ZW50LgotIENyZWF0aW5nIHJlcXVlc3RzIHdpdGggYSBjbGllbnQgbm8gbG9uZ2VyIGF1dG9tYXRpY2FsbHkgdXRpbGl6ZSBhIFVSSQogIHRlbXBsYXRlLiBZb3UgbXVzdCBwYXNzIGFuIGFycmF5IGludG8gYSBjcmVhdGlvbmFsIG1ldGhvZCAoZS5nLiwKICBgY3JlYXRlUmVxdWVzdGAsIGBnZXRgLCBgcHV0YCwgZXRjLikgaW4gb3JkZXIgdG8gZXhwYW5kIGEgVVJJIHRlbXBsYXRlLgoKIyMjIE1lc3NhZ2VzCgpNZXNzYWdlcyBubyBsb25nZXIgaGF2ZSByZWZlcmVuY2VzIHRvIHRoZWlyIGNvdW50ZXJwYXJ0cyAoaS5lLiwgYSByZXF1ZXN0IG5vCmxvbmdlciBoYXMgYSByZWZlcmVuY2UgdG8gaXQncyByZXNwb25zZSwgYW5kIGEgcmVzcG9uc2Ugbm8gbG9nZXIgaGFzIGEKcmVmZXJlbmNlIHRvIGl0cyByZXF1ZXN0KS4gVGhpcyBhc3NvY2lhdGlvbiBpcyBub3cgbWFuYWdlZCB0aHJvdWdoIGEKYEd1enpsZUh0dHBcQWRhcHRlclxUcmFuc2FjdGlvbkludGVyZmFjZWAgb2JqZWN0LiBZb3UgY2FuIGdldCByZWZlcmVuY2VzIHRvCnRoZXNlIHRyYW5zYWN0aW9uIG9iamVjdHMgdXNpbmcgcmVxdWVzdCBldmVudHMgdGhhdCBhcmUgZW1pdHRlZCBvdmVyIHRoZQpsaWZlY3ljbGUgb2YgYSByZXF1ZXN0LgoKIyMjIyBSZXF1ZXN0cyB3aXRoIGEgYm9keQoKLSBgR3V6emxlSHR0cFxNZXNzYWdlXEVudGl0eUVuY2xvc2luZ1JlcXVlc3RgIGFuZAogIGBHdXp6bGVIdHRwXE1lc3NhZ2VcRW50aXR5RW5jbG9zaW5nUmVxdWVzdEludGVyZmFjZWAgaGF2ZSBiZWVuIHJlbW92ZWQuIFRoZQogIHNlcGFyYXRpb24gYmV0d2VlbiByZXF1ZXN0cyB0aGF0IGNvbnRhaW4gYSBib2R5IGFuZCByZXF1ZXN0cyB0aGF0IGRvIG5vdAogIGNvbnRhaW4gYSBib2R5IGhhcyBiZWVuIHJlbW92ZWQsIGFuZCBub3cgYEd1enpsZUh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlYAogIGhhbmRsZXMgYm90aCB1c2UgY2FzZXMuCi0gQW55IG1ldGhvZCB0aGF0IHByZXZpb3VzbHkgYWNjZXB0cyBhIGBHdXp6bGVIdHRwXFJlc3BvbnNlYCBvYmplY3Qgbm93IGFjY2VwdCBhCiAgYEd1enpsZUh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZWAuCi0gYEd1enpsZUh0dHBcTWVzc2FnZVxSZXF1ZXN0RmFjdG9yeUludGVyZmFjZWAgaGFzIGJlZW4gcmVuYW1lZCB0bwogIGBHdXp6bGVIdHRwXE1lc3NhZ2VcTWVzc2FnZUZhY3RvcnlJbnRlcmZhY2VgLiBUaGlzIGludGVyZmFjZSBpcyB1c2VkIHRvIGNyZWF0ZQogIGJvdGggcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyBhbmQgaXMgaW1wbGVtZW50ZWQgaW4KICBgR3V6emxlSHR0cFxNZXNzYWdlXE1lc3NhZ2VGYWN0b3J5YC4KLSBQT1NUIGZpZWxkIGFuZCBmaWxlIG1ldGhvZHMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgcmVxdWVzdCBvYmplY3QuIFlvdQogIG11c3Qgbm93IHVzZSB0aGUgbWV0aG9kcyBtYWRlIGF2YWlsYWJsZSB0byBgR3V6emxlSHR0cFxQb3N0XFBvc3RCb2R5SW50ZXJmYWNlYAogIHRvIGNvbnRyb2wgdGhlIGZvcm1hdCBvZiBhIFBPU1QgYm9keS4gUmVxdWVzdHMgdGhhdCBhcmUgY3JlYXRlZCB1c2luZyBhCiAgc3RhbmRhcmQgYEd1enpsZUh0dHBcTWVzc2FnZVxNZXNzYWdlRmFjdG9yeUludGVyZmFjZWAgd2lsbCBhdXRvbWF0aWNhbGx5IHVzZQogIGEgYEd1enpsZUh0dHBcUG9zdFxQb3N0Qm9keWAgYm9keSBpZiB0aGUgYm9keSB3YXMgcGFzc2VkIGFzIGFuIGFycmF5IG9yIGlmCiAgdGhlIG1ldGhvZCBpcyBQT1NUIGFuZCBubyBib2R5IGlzIHByb3ZpZGVkLgoKYGBgcGhwCiRyZXF1ZXN0ID0gJGNsaWVudC0+Y3JlYXRlUmVxdWVzdCgnUE9TVCcsICcvJyk7CiRyZXF1ZXN0LT5nZXRCb2R5KCktPnNldEZpZWxkKCdmb28nLCAnYmFyJyk7CiRyZXF1ZXN0LT5nZXRCb2R5KCktPmFkZEZpbGUobmV3IFBvc3RGaWxlKCdmaWxlX2tleScsIGZvcGVuKCcvcGF0aC90by9jb250ZW50JywgJ3InKSkpOwpgYGAKCiMjIyMgSGVhZGVycwoKLSBgR3V6emxlSHR0cFxNZXNzYWdlXEhlYWRlcmAgaGFzIGJlZW4gcmVtb3ZlZC4gSGVhZGVyIHZhbHVlcyBhcmUgbm93IHNpbXBseQogIHJlcHJlc2VudGVkIGJ5IGFuIGFycmF5IG9mIHZhbHVlcyBvciBhcyBhIHN0cmluZy4gSGVhZGVyIHZhbHVlcyBhcmUgcmV0dXJuZWQKICBhcyBhIHN0cmluZyBieSBkZWZhdWx0IHdoZW4gcmV0cmlldmluZyBhIGhlYWRlciB2YWx1ZSBmcm9tIGEgbWVzc2FnZS4gWW91IGNhbgogIHBhc3MgYW4gb3B0aW9uYWwgYXJndW1lbnQgb2YgYHRydWVgIHRvIHJldHJpZXZlIGEgaGVhZGVyIHZhbHVlIGFzIGFuIGFycmF5CiAgb2Ygc3RyaW5ncyBpbnN0ZWFkIG9mIGEgc2luZ2xlIGNvbmNhdGVuYXRlZCBzdHJpbmcuCi0gYEd1enpsZUh0dHBcUG9zdEZpbGVgIGFuZCBgR3V6emxlSHR0cFxQb3N0RmlsZUludGVyZmFjZWAgaGF2ZSBiZWVuIG1vdmVkIHRvCiAgYEd1enpsZUh0dHBcUG9zdGAuIFRoaXMgaW50ZXJmYWNlIGhhcyBiZWVuIHNpbXBsaWZpZWQgYW5kIG5vdyBhbGxvd3MgdGhlCiAgYWRkaXRpb24gb2YgYXJiaXRyYXJ5IGhlYWRlcnMuCi0gQ3VzdG9tIGhlYWRlcnMgbGlrZSBgR3V6emxlSHR0cFxNZXNzYWdlXEhlYWRlclxMaW5rYCBoYXZlIGJlZW4gcmVtb3ZlZC4gTW9zdAogIG9mIHRoZSBjdXN0b20gaGVhZGVycyBhcmUgbm93IGhhbmRsZWQgc2VwYXJhdGVseSBpbiBzcGVjaWZpYwogIHN1YnNjcmliZXJzL3BsdWdpbnMsIGFuZCBgR3V6emxlSHR0cFxNZXNzYWdlXEhlYWRlclZhbHVlczo6cGFyc2VQYXJhbXMoKWAgaGFzCiAgYmVlbiB1cGRhdGVkIHRvIHByb3Blcmx5IGhhbmRsZSBoZWFkZXJzIHRoYXQgY29udGFpbiBwYXJhbWV0ZXJzIChsaWtlIHRoZQogIGBMaW5rYCBoZWFkZXIpLgoKIyMjIyBSZXNwb25zZXMKCi0gYEd1enpsZUh0dHBcTWVzc2FnZVxSZXNwb25zZTo6Z2V0SW5mbygpYCBhbmQKICBgR3V6emxlSHR0cFxNZXNzYWdlXFJlc3BvbnNlOjpzZXRJbmZvKClgIGhhdmUgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGV2ZW50CiAgc3lzdGVtIHRvIHJldHJpZXZlIHRoaXMgdHlwZSBvZiBpbmZvcm1hdGlvbi4KLSBgR3V6emxlSHR0cFxNZXNzYWdlXFJlc3BvbnNlOjpnZXRSYXdIZWFkZXJzKClgIGhhcyBiZWVuIHJlbW92ZWQuCi0gYEd1enpsZUh0dHBcTWVzc2FnZVxSZXNwb25zZTo6Z2V0TWVzc2FnZSgpYCBoYXMgYmVlbiByZW1vdmVkLgotIGBHdXp6bGVIdHRwXE1lc3NhZ2VcUmVzcG9uc2U6OmNhbGN1bGF0ZUFnZSgpYCBhbmQgb3RoZXIgY2FjaGUgc3BlY2lmaWMKICBtZXRob2RzIGhhdmUgbW92ZWQgdG8gdGhlIENhY2hlU3Vic2NyaWJlci4KLSBIZWFkZXIgc3BlY2lmaWMgaGVscGVyIGZ1bmN0aW9ucyBsaWtlIGBnZXRDb250ZW50TWQ1KClgIGhhdmUgYmVlbiByZW1vdmVkLgogIEp1c3QgdXNlIGBnZXRIZWFkZXIoJ0NvbnRlbnQtTUQ1JylgIGluc3RlYWQuCi0gYEd1enpsZUh0dHBcTWVzc2FnZVxSZXNwb25zZTo6c2V0UmVxdWVzdCgpYCBhbmQKICBgR3V6emxlSHR0cFxNZXNzYWdlXFJlc3BvbnNlOjpnZXRSZXF1ZXN0KClgIGhhdmUgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGV2ZW50CiAgc3lzdGVtIHRvIHdvcmsgd2l0aCByZXF1ZXN0IGFuZCByZXNwb25zZSBvYmplY3RzIGFzIGEgdHJhbnNhY3Rpb24uCi0gYEd1enpsZUh0dHBcTWVzc2FnZVxSZXNwb25zZTo6Z2V0UmVkaXJlY3RDb3VudCgpYCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlCiAgUmVkaXJlY3Qgc3Vic2NyaWJlciBpbnN0ZWFkLgotIGBHdXp6bGVIdHRwXE1lc3NhZ2VcUmVzcG9uc2U6OmlzU3VjY2Vzc2Z1bCgpYCBhbmQgb3RoZXIgcmVsYXRlZCBtZXRob2RzIGhhdmUKICBiZWVuIHJlbW92ZWQuIFVzZSBgZ2V0U3RhdHVzQ29kZSgpYCBpbnN0ZWFkLgoKIyMjIyBTdHJlYW1pbmcgcmVzcG9uc2VzCgpTdHJlYW1pbmcgcmVxdWVzdHMgY2FuIG5vdyBiZSBjcmVhdGVkIGJ5IGEgY2xpZW50IGRpcmVjdGx5LCByZXR1cm5pbmcgYQpgR3V6emxlSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlYCBvYmplY3QgdGhhdCBjb250YWlucyBhIGJvZHkgc3RyZWFtCnJlZmVyZW5jaW5nIGFuIG9wZW4gUEhQIEhUVFAgc3RyZWFtLgoKYGBgcGhwCi8vIDMuMAp1c2UgR3V6emxlXFN0cmVhbVxQaHBTdHJlYW1SZXF1ZXN0RmFjdG9yeTsKJHJlcXVlc3QgPSAkY2xpZW50LT5nZXQoJy8nKTsKJGZhY3RvcnkgPSBuZXcgUGhwU3RyZWFtUmVxdWVzdEZhY3RvcnkoKTsKJHN0cmVhbSA9ICRmYWN0b3J5LT5mcm9tUmVxdWVzdCgkcmVxdWVzdCk7CiRkYXRhID0gJHN0cmVhbS0+cmVhZCgxMDI0KTsKCi8vIDQuMAokcmVzcG9uc2UgPSAkY2xpZW50LT5nZXQoJy8nLCBbJ3N0cmVhbScgPT4gdHJ1ZV0pOwovLyBSZWFkIHNvbWUgZGF0YSBvZmYgb2YgdGhlIHN0cmVhbSBpbiB0aGUgcmVzcG9uc2UgYm9keQokZGF0YSA9ICRyZXNwb25zZS0+Z2V0Qm9keSgpLT5yZWFkKDEwMjQpOwpgYGAKCiMjIyMgUmVkaXJlY3RzCgpUaGUgYGNvbmZpZ3VyZVJlZGlyZWN0cygpYCBtZXRob2QgaGFzIGJlZW4gcmVtb3ZlZCBpbiBmYXZvciBvZiBhCmBhbGxvd19yZWRpcmVjdHNgIHJlcXVlc3Qgb3B0aW9uLgoKYGBgcGhwCi8vIFN0YW5kYXJkIHJlZGlyZWN0cyB3aXRoIGEgZGVmYXVsdCBvZiBhIG1heCBvZiA1IHJlZGlyZWN0cwokcmVxdWVzdCA9ICRjbGllbnQtPmNyZWF0ZVJlcXVlc3QoJ0dFVCcsICcvJywgWydhbGxvd19yZWRpcmVjdHMnID0+IHRydWVdKTsKCi8vIFN0cmljdCByZWRpcmVjdHMgd2l0aCBhIGN1c3RvbSBudW1iZXIgb2YgcmVkaXJlY3RzCiRyZXF1ZXN0ID0gJGNsaWVudC0+Y3JlYXRlUmVxdWVzdCgnR0VUJywgJy8nLCBbCiAgICAnYWxsb3dfcmVkaXJlY3RzJyA9PiBbJ21heCcgPT4gNSwgJ3N0cmljdCcgPT4gdHJ1ZV0KXSk7CmBgYAoKIyMjIyBFbnRpdHlCb2R5CgpFbnRpdHlCb2R5IGludGVyZmFjZXMgYW5kIGNsYXNzZXMgaGF2ZSBiZWVuIHJlbW92ZWQgb3IgbW92ZWQgdG8KYEd1enpsZUh0dHBcU3RyZWFtYC4gQWxsIGNsYXNzZXMgYW5kIGludGVyZmFjZXMgdGhhdCBvbmNlIHJlcXVpcmVkCmBHdXp6bGVIdHRwXEVudGl0eUJvZHlJbnRlcmZhY2VgIG5vdyByZXF1aXJlCmBHdXp6bGVIdHRwXFN0cmVhbVxTdHJlYW1JbnRlcmZhY2VgLiBDcmVhdGluZyBhIG5ldyBib2R5IGZvciBhIHJlcXVlc3Qgbm8KbG9uZ2VyIHVzZXMgYEd1enpsZUh0dHBcRW50aXR5Qm9keTo6ZmFjdG9yeWAgYnV0IG5vdyB1c2VzCmBHdXp6bGVIdHRwXFN0cmVhbVxTdHJlYW06OmZhY3RvcnlgIG9yIGV2ZW4gYmV0dGVyOgpgR3V6emxlSHR0cFxTdHJlYW1cY3JlYXRlKClgLgoKLSBgR3V6emxlXEh0dHBcRW50aXR5Qm9keUludGVyZmFjZWAgaXMgbm93IGBHdXp6bGVIdHRwXFN0cmVhbVxTdHJlYW1JbnRlcmZhY2VgCi0gYEd1enpsZVxIdHRwXEVudGl0eUJvZHlgIGlzIG5vdyBgR3V6emxlSHR0cFxTdHJlYW1cU3RyZWFtYAotIGBHdXp6bGVcSHR0cFxDYWNoaW5nRW50aXR5Qm9keWAgaXMgbm93IGBHdXp6bGVIdHRwXFN0cmVhbVxDYWNoaW5nU3RyZWFtYAotIGBHdXp6bGVcSHR0cFxSZWFkTGltaXRFbnRpdHlCb2R5YCBpcyBub3cgYEd1enpsZUh0dHBcU3RyZWFtXExpbWl0U3RyZWFtYAotIGBHdXp6bGVcSHR0cFxJb0VtaXR0eWluRW50aXR5Qm9keWAgaGFzIGJlZW4gcmVtb3ZlZC4KCiMjIyMgUmVxdWVzdCBsaWZlY3ljbGUgZXZlbnRzCgpSZXF1ZXN0cyBwcmV2aW91c2x5IHN1Ym1pdHRlZCBhIGxhcmdlIG51bWJlciBvZiByZXF1ZXN0cy4gVGhlIG51bWJlciBvZiBldmVudHMKZW1pdHRlZCBvdmVyIHRoZSBsaWZlY3ljbGUgb2YgYSByZXF1ZXN0IGhhcyBiZWVuIHNpZ25pZmljYW50bHkgcmVkdWNlZCB0byBtYWtlCml0IGVhc2llciB0byB1bmRlcnN0YW5kIGhvdyB0byBleHRlbmQgdGhlIGJlaGF2aW9yIG9mIGEgcmVxdWVzdC4gQWxsIGV2ZW50cwplbWl0dGVkIGR1cmluZyB0aGUgbGlmZWN5Y2xlIG9mIGEgcmVxdWVzdCBub3cgZW1pdCBhIGN1c3RvbQpgR3V6emxlSHR0cFxFdmVudFxFdmVudEludGVyZmFjZWAgb2JqZWN0IHRoYXQgY29udGFpbnMgY29udGV4dCBwcm92aWRpbmcKbWV0aG9kcyBhbmQgYSB3YXkgaW4gd2hpY2ggdG8gbW9kaWZ5IHRoZSB0cmFuc2FjdGlvbiBhdCB0aGF0IHNwZWNpZmljIHBvaW50IGluCnRpbWUgKGUuZy4sIGludGVyY2VwdCB0aGUgcmVxdWVzdCBhbmQgc2V0IGEgcmVzcG9uc2Ugb24gdGhlIHRyYW5zYWN0aW9uKS4KCi0gYHJlcXVlc3QuYmVmb3JlX3NlbmRgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGJlZm9yZWAgYW5kIG5vdyBlbWl0cyBhCiAgYEd1enpsZUh0dHBcRXZlbnRcQmVmb3JlRXZlbnRgCi0gYHJlcXVlc3QuY29tcGxldGVgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGNvbXBsZXRlYCBhbmQgbm93IGVtaXRzIGEKICBgR3V6emxlSHR0cFxFdmVudFxDb21wbGV0ZUV2ZW50YC4KLSBgcmVxdWVzdC5zZW50YCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYGNvbXBsZXRlYC4KLSBgcmVxdWVzdC5zdWNjZXNzYCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYGNvbXBsZXRlYC4KLSBgZXJyb3JgIGlzIG5vdyBhbiBldmVudCB0aGF0IGVtaXRzIGEgYEd1enpsZUh0dHBcRXZlbnRcRXJyb3JFdmVudGAuCi0gYHJlcXVlc3QuZXhjZXB0aW9uYCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYGVycm9yYC4KLSBgcmVxdWVzdC5yZWNlaXZlLnN0YXR1c19saW5lYCBoYXMgYmVlbiByZW1vdmVkLgotIGBjdXJsLmNhbGxiYWNrLnByb2dyZXNzYCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYSBjdXN0b20gYFN0cmVhbUludGVyZmFjZWAgdG8KICBtYWludGFpbiBhIHN0YXR1cyB1cGRhdGUuCi0gYGN1cmwuY2FsbGJhY2sud3JpdGVgIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBhIGN1c3RvbSBgU3RyZWFtSW50ZXJmYWNlYCB0bwogIGludGVyY2VwdCB3cml0ZXMuCi0gYGN1cmwuY2FsbGJhY2sucmVhZGAgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGEgY3VzdG9tIGBTdHJlYW1JbnRlcmZhY2VgIHRvCiAgaW50ZXJjZXB0IHJlYWRzLgoKYGhlYWRlcnNgIGlzIGEgbmV3IGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBhZnRlciB0aGUgcmVzcG9uc2UgaGVhZGVycyBvZiBhCnJlcXVlc3QgaGF2ZSBiZWVuIHJlY2VpdmVkIGJlZm9yZSB0aGUgYm9keSBvZiB0aGUgcmVzcG9uc2UgaXMgZG93bmxvYWRlZC4gVGhpcwpldmVudCBlbWl0cyBhIGBHdXp6bGVIdHRwXEV2ZW50XEhlYWRlcnNFdmVudGAuCgpZb3UgY2FuIGludGVyY2VwdCBhIHJlcXVlc3QgYW5kIGluamVjdCBhIHJlc3BvbnNlIHVzaW5nIHRoZSBgaW50ZXJjZXB0KClgIGV2ZW50Cm9mIGEgYEd1enpsZUh0dHBcRXZlbnRcQmVmb3JlRXZlbnRgLCBgR3V6emxlSHR0cFxFdmVudFxDb21wbGV0ZUV2ZW50YCwgYW5kCmBHdXp6bGVIdHRwXEV2ZW50XEVycm9yRXZlbnRgIGV2ZW50LgoKIyMgSW5mbGVjdGlvbgoKVGhlIGBHdXp6bGVcSW5mbGVjdGlvbmAgbmFtZXNwYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFRoaXMgaXMgbm90IGEgY29yZSBjb25jZXJuCm9mIEd1enpsZS4KCiMjIEl0ZXJhdG9yCgpUaGUgYEd1enpsZVxJdGVyYXRvcmAgbmFtZXNwYWNlIGhhcyBiZWVuIHJlbW92ZWQuCgotIGBHdXp6bGVcSXRlcmF0b3JcQXBwZW5kSXRlcmF0b3JgLCBgR3V6emxlXEl0ZXJhdG9yXENodW5rZWRJdGVyYXRvcmAsIGFuZAogIGBHdXp6bGVcSXRlcmF0b3JcTWV0aG9kUHJveHlJdGVyYXRvcmAgYXJlIG5pY2UsIGJ1dCBub3QgYSBjb3JlIHJlcXVpcmVtZW50IG9mCiAgR3V6emxlIGl0c2VsZi4KLSBgR3V6emxlXEl0ZXJhdG9yXEZpbHRlckl0ZXJhdG9yYCBpcyBubyBsb25nZXIgbmVlZGVkIGJlY2F1c2UgYW4gZXF1aXZhbGVudAogIGNsYXNzIGlzIHNoaXBwZWQgd2l0aCBQSFAgNS40LgotIGBHdXp6bGVcSXRlcmF0b3JcTWFwSXRlcmF0b3JgIGlzIG5vdCByZWFsbHkgbmVlZGVkIHdoZW4gdXNpbmcgUEhQIDUuNSBiZWNhdXNlCiAgaXQncyBlYXNpZXIgdG8ganVzdCB3cmFwIGFuIGl0ZXJhdG9yIGluIGEgZ2VuZXJhdG9yIHRoYXQgbWFwcyB2YWx1ZXMuCgpGb3IgYSByZXBsYWNlbWVudCBvZiB0aGVzZSBpdGVyYXRvcnMsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbmlraWMvaXRlcgoKIyMgTG9nCgpUaGUgTG9nUGx1Z2luIGhhcyBtb3ZlZCB0byBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2xvZy1zdWJzY3JpYmVyLiBUaGUKYEd1enpsZVxMb2dgIG5hbWVzcGFjZSBoYXMgYmVlbiByZW1vdmVkLiBHdXp6bGUgbm93IHJlbGllcyBvbgpgUHNyXExvZ1xMb2dnZXJJbnRlcmZhY2VgIGZvciBhbGwgbG9nZ2luZy4gVGhlIE1lc3NhZ2VGb3JtYXR0ZXIgY2xhc3MgaGFzIGJlZW4KbW92ZWQgdG8gYEd1enpsZUh0dHBcU3Vic2NyaWJlclxMb2dcRm9ybWF0dGVyYC4KCiMjIFBhcnNlcgoKVGhlIGBHdXp6bGVcUGFyc2VyYCBuYW1lc3BhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gVGhpcyB3YXMgcHJldmlvdXNseSB1c2VkIHRvCm1ha2UgaXQgcG9zc2libGUgdG8gcGx1ZyBpbiBjdXN0b20gcGFyc2VycyBmb3IgY29va2llcywgbWVzc2FnZXMsIFVSSQp0ZW1wbGF0ZXMsIGFuZCBVUkxzOyBob3dldmVyLCB0aGlzIGxldmVsIG9mIGNvbXBsZXhpdHkgaXMgbm90IG5lZWRlZCBpbiBHdXp6bGUKc28gaXQgaGFzIGJlZW4gcmVtb3ZlZC4KCi0gQ29va2llOiBDb29raWUgcGFyc2luZyBsb2dpYyBoYXMgYmVlbiBtb3ZlZCB0bwogIGBHdXp6bGVIdHRwXENvb2tpZVxTZXRDb29raWU6OmZyb21TdHJpbmdgLgotIE1lc3NhZ2U6IE1lc3NhZ2UgcGFyc2luZyBsb2dpYyBmb3IgYm90aCByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzIGhhcyBiZWVuIG1vdmVkCiAgdG8gYEd1enpsZUh0dHBcTWVzc2FnZVxNZXNzYWdlRmFjdG9yeTo6ZnJvbU1lc3NhZ2VgLiBNZXNzYWdlIHBhcnNpbmcgaXMgb25seQogIHVzZWQgaW4gZGVidWdnaW5nIG9yIGRlc2VyaWFsaXppbmcgbWVzc2FnZXMsIHNvIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3IKICBHdXp6bGUgYXMgYSBsaWJyYXJ5IHRvIGFkZCB0aGlzIGxldmVsIG9mIGNvbXBsZXhpdHkgdG8gcGFyc2luZyBtZXNzYWdlcy4KLSBVcmlUZW1wbGF0ZTogVVJJIHRlbXBsYXRlIHBhcnNpbmcgaGFzIGJlZW4gbW92ZWQgdG8KICBgR3V6emxlSHR0cFxVcmlUZW1wbGF0ZWAuIFRoZSBHdXp6bGUgbGlicmFyeSB3aWxsIGF1dG9tYXRpY2FsbHkgdXNlIHRoZSBQRUNMCiAgVVJJIHRlbXBsYXRlIGxpYnJhcnkgaWYgaXQgaXMgaW5zdGFsbGVkLgotIFVybDogVVJMIHBhcnNpbmcgaXMgbm93IHBlcmZvcm1lZCBpbiBgR3V6emxlSHR0cFxVcmw6OmZyb21TdHJpbmdgIChwcmV2aW91c2x5CiAgaXQgd2FzIGBHdXp6bGVcSHR0cFxVcmw6OmZhY3RvcnkoKWApLiBJZiBjdXN0b20gVVJMIHBhcnNpbmcgaXMgbmVjZXNzYXJ5LAogIHRoZW4gZGV2ZWxvcGVycyBhcmUgZnJlZSB0byBzdWJjbGFzcyBgR3V6emxlSHR0cFxVcmxgLgoKIyMgUGx1Z2luCgpUaGUgYEd1enpsZVxQbHVnaW5gIG5hbWVzcGFjZSBoYXMgYmVlbiByZW5hbWVkIHRvIGBHdXp6bGVIdHRwXFN1YnNjcmliZXJgLgpTZXZlcmFsIHBsdWdpbnMgYXJlIHNoaXBwaW5nIHdpdGggdGhlIGNvcmUgR3V6emxlIGxpYnJhcnkgdW5kZXIgdGhpcyBuYW1lc3BhY2UuCgotIGBHdXp6bGVIdHRwXFN1YnNjcmliZXJcQ29va2llYDogUmVwbGFjZXMgdGhlIG9sZCBDb29raWVQbHVnaW4uIENvb2tpZSBqYXIKICBjb2RlIGhhcyBtb3ZlZCB0byBgR3V6emxlSHR0cFxDb29raWVgLgotIGBHdXp6bGVIdHRwXFN1YnNjcmliZXJcSGlzdG9yeWA6IFJlcGxhY2VzIHRoZSBvbGQgSGlzdG9yeVBsdWdpbi4KLSBgR3V6emxlSHR0cFxTdWJzY3JpYmVyXEh0dHBFcnJvcmA6IFRocm93cyBlcnJvcnMgd2hlbiBhIGJhZCBIVFRQIHJlc3BvbnNlIGlzCiAgcmVjZWl2ZWQuCi0gYEd1enpsZUh0dHBcU3Vic2NyaWJlclxNb2NrYDogUmVwbGFjZXMgdGhlIG9sZCBNb2NrUGx1Z2luLgotIGBHdXp6bGVIdHRwXFN1YnNjcmliZXJcUHJlcGFyZWA6IFByZXBhcmVzIHRoZSBib2R5IG9mIGEgcmVxdWVzdCBqdXN0IGJlZm9yZQogIHNlbmRpbmcuIFRoaXMgc3Vic2NyaWJlciBpcyBhdHRhY2hlZCB0byBhbGwgcmVxdWVzdHMgYnkgZGVmYXVsdC4KLSBgR3V6emxlSHR0cFxTdWJzY3JpYmVyXFJlZGlyZWN0YDogUmVwbGFjZXMgdGhlIFJlZGlyZWN0UGx1Z2luLgoKVGhlIGZvbGxvd2luZyBwbHVnaW5zIGhhdmUgYmVlbiByZW1vdmVkICh0aGlyZC1wYXJ0aWVzIGFyZSBmcmVlIHRvIHJlLWltcGxlbWVudAp0aGVzZSBpZiBuZWVkZWQpOgoKLSBgR3V6emxlSHR0cFxQbHVnaW5cQXN5bmNgIGhhcyBiZWVuIHJlbW92ZWQuCi0gYEd1enpsZUh0dHBcUGx1Z2luXEN1cmxBdXRoYCBoYXMgYmVlbiByZW1vdmVkLgotIGBHdXp6bGVIdHRwXFBsdWdpblxFcnJvclJlc3BvbnNlXEVycm9yUmVzcG9uc2VQbHVnaW5gIGhhcyBiZWVuIHJlbW92ZWQuIFRoaXMKICBmdW5jdGlvbmFsaXR5IHNob3VsZCBpbnN0ZWFkIGJlIGltcGxlbWVudGVkIHdpdGggZXZlbnQgbGlzdGVuZXJzIHRoYXQgb2NjdXIKICBhZnRlciBub3JtYWwgcmVzcG9uc2UgcGFyc2luZyBvY2N1cnMgaW4gdGhlIGd1enpsZS9jb21tYW5kIHBhY2thZ2UuCgpUaGUgZm9sbG93aW5nIHBsdWdpbnMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBjb3JlIEd1enpsZSBwYWNrYWdlLCBidXQgYXJlIHByb3ZpZGVkCmluIHNlcGFyYXRlIHJlcG9zaXRvcmllczoKCi0gYEd1enpsZVxIdHRwXFBsdWdpblxCYWNrb2ZmUGx1Z2luYCBoYXMgYmVlbiByZXdyaXR0ZW4gdG8gYmUgbXVjaCBzaW1wbGVyCiAgdG8gYnVpbGQgY3VzdG9tIHJldHJ5IHBvbGljaWVzIHVzaW5nIHNpbXBsZSBmdW5jdGlvbnMgcmF0aGVyIHRoYW4gdmFyaW91cwogIGNoYWluZWQgY2xhc3Nlcy4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3JldHJ5LXN1YnNjcmliZXIKLSBgR3V6emxlXEh0dHBcUGx1Z2luXENhY2hlXENhY2hlUGx1Z2luYCBoYXMgbW92ZWQgdG8KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2NhY2hlLXN1YnNjcmliZXIKLSBgR3V6emxlXEh0dHBcUGx1Z2luXExvZ1xMb2dQbHVnaW5gIGhhcyBtb3ZlZCB0bwogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvbG9nLXN1YnNjcmliZXIKLSBgR3V6emxlXEh0dHBcUGx1Z2luXE1kNVxNZDVQbHVnaW5gIGhhcyBtb3ZlZCB0bwogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvbWVzc2FnZS1pbnRlZ3JpdHktc3Vic2NyaWJlcgotIGBHdXp6bGVcSHR0cFxQbHVnaW5cTW9ja1xNb2NrUGx1Z2luYCBoYXMgbW92ZWQgdG8KICBgR3V6emxlSHR0cFxTdWJzY3JpYmVyXE1vY2tTdWJzY3JpYmVyYC4KLSBgR3V6emxlXEh0dHBcUGx1Z2luXE9hdXRoXE9hdXRoUGx1Z2luYCBoYXMgbW92ZWQgdG8KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL29hdXRoLXN1YnNjcmliZXIKCiMjIFNlcnZpY2UKClRoZSBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxheWVyIG9mIEd1enpsZSBoYXMgbW92ZWQgaW50byB0d28gc2VwYXJhdGUgcGFja2FnZXM6CgotIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvY29tbWFuZCBQcm92aWRlcyBhIGhpZ2ggbGV2ZWwgYWJzdHJhY3Rpb24gb3ZlciB3ZWIKICBzZXJ2aWNlcyBieSByZXByZXNlbnRpbmcgd2ViIHNlcnZpY2Ugb3BlcmF0aW9ucyB1c2luZyBjb21tYW5kcy4KLSBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS1zZXJ2aWNlcyBQcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBvZgogIGd1enpsZS9jb21tYW5kIHRoYXQgcHJvdmlkZXMgcmVxdWVzdCBzZXJpYWxpemF0aW9uIGFuZCByZXNwb25zZSBwYXJzaW5nIHVzaW5nCiAgR3V6emxlIHNlcnZpY2UgZGVzY3JpcHRpb25zLgoKIyMgU3RyZWFtCgpTdHJlYW0gaGF2ZSBtb3ZlZCB0byBhIHNlcGFyYXRlIHBhY2thZ2UgYXZhaWxhYmxlIGF0Cmh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvc3RyZWFtcy4KCmBHdXp6bGVcU3RyZWFtXFN0cmVhbUludGVyZmFjZWAgaGFzIGJlZW4gZ2l2ZW4gYSBsYXJnZSB1cGRhdGUgdG8gY2xlYW5seSB0YWtlCm9uIHRoZSByZXNwb25zaWJpbGl0aWVzIG9mIGBHdXp6bGVcSHR0cFxFbnRpdHlCb2R5YCBhbmQKYEd1enpsZVxIdHRwXEVudGl0eUJvZHlJbnRlcmZhY2VgIG5vdyB0aGF0IHRoZXkgaGF2ZSBiZWVuIHJlbW92ZWQuIFRoZSBudW1iZXIKb2YgbWV0aG9kcyBpbXBsZW1lbnRlZCBieSB0aGUgYFN0cmVhbUludGVyZmFjZWAgaGFzIGJlZW4gZHJhc3RpY2FsbHkgcmVkdWNlZCB0bwphbGxvdyBkZXZlbG9wZXJzIHRvIG1vcmUgZWFzaWx5IGV4dGVuZCBhbmQgZGVjb3JhdGUgc3RyZWFtIGJlaGF2aW9yLgoKIyMgUmVtb3ZlZCBtZXRob2RzIGZyb20gU3RyZWFtSW50ZXJmYWNlCgotIGBnZXRTdHJlYW1gIGFuZCBgc2V0U3RyZWFtYCBoYXZlIGJlZW4gcmVtb3ZlZCB0byBiZXR0ZXIgZW5jYXBzdWxhdGUgc3RyZWFtcy4KLSBgZ2V0TWV0YWRhdGFgIGFuZCBgc2V0TWV0YWRhdGFgIGhhdmUgYmVlbiByZW1vdmVkIGluIGZhdm9yIG9mCiAgYEd1enpsZUh0dHBcU3RyZWFtXE1ldGFkYXRhU3RyZWFtSW50ZXJmYWNlYC4KLSBgZ2V0V3JhcHBlcmAsIGBnZXRXcmFwcGVyRGF0YWAsIGBnZXRTdHJlYW1UeXBlYCwgYW5kIGBnZXRVcmlgIGhhdmUgYWxsIGJlZW4KICByZW1vdmVkLiBUaGlzIGRhdGEgaXMgYWNjZXNzaWJsZSB3aGVuCiAgdXNpbmcgc3RyZWFtcyB0aGF0IGltcGxlbWVudCBgR3V6emxlSHR0cFxTdHJlYW1cTWV0YWRhdGFTdHJlYW1JbnRlcmZhY2VgLgotIGByZXdpbmRgIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBgc2VlaygwKWAgZm9yIGEgc2ltaWxhciBiZWhhdmlvci4KCiMjIFJlbmFtZWQgbWV0aG9kcwoKLSBgZGV0YWNoU3RyZWFtYCBoYXMgYmVlbiByZW5hbWVkIHRvIGBkZXRhY2hgLgotIGBmZW9mYCBoYXMgYmVlbiByZW5hbWVkIHRvIGBlb2ZgLgotIGBmdGVsbGAgaGFzIGJlZW4gcmVuYW1lZCB0byBgdGVsbGAuCi0gYHJlYWRMaW5lYCBoYXMgbW92ZWQgZnJvbSBhbiBpbnN0YW5jZSBtZXRob2QgdG8gYSBzdGF0aWMgY2xhc3MgbWV0aG9kIG9mCiAgYEd1enpsZUh0dHBcU3RyZWFtXFN0cmVhbWAuCgojIyBNZXRhZGF0YSBzdHJlYW1zCgpgR3V6emxlSHR0cFxTdHJlYW1cTWV0YWRhdGFTdHJlYW1JbnRlcmZhY2VgIGhhcyBiZWVuIGFkZGVkIHRvIGRlbm90ZSBzdHJlYW1zCnRoYXQgY29udGFpbiBhZGRpdGlvbmFsIG1ldGFkYXRhIGFjY2Vzc2libGUgdmlhIGBnZXRNZXRhZGF0YSgpYC4KYEd1enpsZUh0dHBcU3RyZWFtXFN0cmVhbUludGVyZmFjZTo6Z2V0TWV0YWRhdGFgIGFuZApgR3V6emxlSHR0cFxTdHJlYW1cU3RyZWFtSW50ZXJmYWNlOjpzZXRNZXRhZGF0YWAgaGF2ZSBiZWVuIHJlbW92ZWQuCgojIyBTdHJlYW1SZXF1ZXN0RmFjdG9yeQoKVGhlIGVudGlyZSBjb25jZXB0IG9mIHRoZSBTdHJlYW1SZXF1ZXN0RmFjdG9yeSBoYXMgYmVlbiByZW1vdmVkLiBUaGUgd2F5IHRoaXMKd2FzIHVzZWQgaW4gR3V6emxlIDMgYnJva2UgdGhlIGFjdHVhbCBpbnRlcmZhY2Ugb2Ygc2VuZGluZyBzdHJlYW1pbmcgcmVxdWVzdHMKKGluc3RlYWQgb2YgZ2V0dGluZyBiYWNrIGEgUmVzcG9uc2UsIHlvdSBnb3QgYSBTdHJlYW1JbnRlcmZhY2UpLiBTdHJlYW1pbmcKUEhQIHJlcXVlc3RzIGFyZSBub3cgaW1wbGVtZW50ZWQgdGhyb3VnaCB0aGUgYEd1enpsZUh0dHBcQWRhcHRlclxTdHJlYW1BZGFwdGVyYC4KCjMuNiB0byAzLjcKLS0tLS0tLS0tLQoKIyMjIERlcHJlY2F0aW9ucwoKLSBZb3UgY2FuIG5vdyBlbmFibGUgRV9VU0VSX0RFUFJFQ0FURUQgd2FybmluZ3MgdG8gc2VlIGlmIHlvdSBhcmUgdXNpbmcgYW55IGRlcHJlY2F0ZWQgbWV0aG9kcy46CgpgYGBwaHAKXEd1enpsZVxDb21tb25cVmVyc2lvbjo6JGVtaXRXYXJuaW5ncyA9IHRydWU7CmBgYAoKVGhlIGZvbGxvd2luZyBBUElzIGFuZCBvcHRpb25zIGhhdmUgYmVlbiBtYXJrZWQgYXMgZGVwcmVjYXRlZDoKCi0gTWFya2VkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3Q6OmlzUmVzcG9uc2VCb2R5UmVwZWF0YWJsZSgpYCBhcyBkZXByZWNhdGVkLiBVc2UgYCRyZXF1ZXN0LT5nZXRSZXNwb25zZUJvZHkoKS0+aXNSZXBlYXRhYmxlKClgIGluc3RlYWQuCi0gTWFya2VkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3Q6OmNhbkNhY2hlKClgIGFzIGRlcHJlY2F0ZWQuIFVzZSBgR3V6emxlXFBsdWdpblxDYWNoZVxEZWZhdWx0Q2FuQ2FjaGVTdHJhdGVneS0+Y2FuQ2FjaGVSZXF1ZXN0KClgIGluc3RlYWQuCi0gTWFya2VkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3Q6OmNhbkNhY2hlKClgIGFzIGRlcHJlY2F0ZWQuIFVzZSBgR3V6emxlXFBsdWdpblxDYWNoZVxEZWZhdWx0Q2FuQ2FjaGVTdHJhdGVneS0+Y2FuQ2FjaGVSZXF1ZXN0KClgIGluc3RlYWQuCi0gTWFya2VkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3Q6OnNldElzUmVkaXJlY3QoKWAgYXMgZGVwcmVjYXRlZC4gVXNlIHRoZSBIaXN0b3J5UGx1Z2luIGluc3RlYWQuCi0gTWFya2VkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3Q6OmlzUmVkaXJlY3QoKWAgYXMgZGVwcmVjYXRlZC4gVXNlIHRoZSBIaXN0b3J5UGx1Z2luIGluc3RlYWQuCi0gTWFya2VkIGBHdXp6bGVcQ2FjaGVcQ2FjaGVBZGFwdGVyRmFjdG9yeTo6ZmFjdG9yeSgpYCBhcyBkZXByZWNhdGVkCi0gTWFya2VkIGBHdXp6bGVcU2VydmljZVxDbGllbnQ6OmVuYWJsZU1hZ2ljTWV0aG9kcygpYCBhcyBkZXByZWNhdGVkLiBNYWdpYyBtZXRob2RzIGNhbiBubyBsb25nZXIgYmUgZGlzYWJsZWQgb24gYSBHdXp6bGVcU2VydmljZVxDbGllbnQuCi0gTWFya2VkIGBHdXp6bGVcUGFyc2VyXFVybFxVcmxQYXJzZXJgIGFzIGRlcHJlY2F0ZWQuIEp1c3QgdXNlIFBIUCdzIGBwYXJzZV91cmwoKWAgYW5kIHBlcmNlbnQgZW5jb2RlIHlvdXIgVVRGLTguCi0gTWFya2VkIGBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb246OmluamVjdCgpYCBhcyBkZXByZWNhdGVkLgotIE1hcmtlZCBgR3V6emxlXFBsdWdpblxDdXJsQXV0aFxDdXJsQXV0aFBsdWdpbmAgYXMgZGVwcmVjYXRlZC4gVXNlCiAgYCRjbGllbnQtPmdldENvbmZpZygpLT5zZXRQYXRoKCdyZXF1ZXN0Lm9wdGlvbnMvYXV0aCcsIGFycmF5KCd1c2VyJywgJ3Bhc3MnLCAnQmFzaWN8RGlnZXN0fE5UTE18QW55JykpO2Agb3IKICBgJGNsaWVudC0+c2V0RGVmYXVsdE9wdGlvbignYXV0aCcsIGFycmF5KCd1c2VyJywgJ3Bhc3MnLCAnQmFzaWN8RGlnZXN0fE5UTE18QW55JykpO2AKCjMuNyBpbnRyb2R1Y2VzIGByZXF1ZXN0Lm9wdGlvbnNgIGFzIGEgcGFyYW1ldGVyIGZvciBhIGNsaWVudCBjb25maWd1cmF0aW9uIGFuZCBhcyBhbiBvcHRpb25hbCBhcmd1bWVudCB0byBhbGwgY3JlYXRpb25hbApyZXF1ZXN0IG1ldGhvZHMuIFdoZW4gcGFpcmVkIHdpdGggYSBjbGllbnQncyBjb25maWd1cmF0aW9uIHNldHRpbmdzLCB0aGVzZSBvcHRpb25zIGFsbG93IHlvdSB0byBzcGVjaWZ5IGRlZmF1bHQgc2V0dGluZ3MKZm9yIHZhcmlvdXMgYXNwZWN0cyBvZiBhIHJlcXVlc3QuIEJlY2F1c2UgdGhlc2Ugb3B0aW9ucyBtYWtlIG90aGVyIHByZXZpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWR1bmRhbnQsIHNldmVyYWwKY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBtZXRob2RzIG9mIGEgY2xpZW50IGFuZCBBYnN0cmFjdENvbW1hbmQgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQuCgotIE1hcmtlZCBgR3V6emxlXFNlcnZpY2VcQ2xpZW50OjpnZXREZWZhdWx0SGVhZGVycygpYCBhcyBkZXByZWNhdGVkLiBVc2UgYCRjbGllbnQtPmdldERlZmF1bHRPcHRpb24oJ2hlYWRlcnMnKWAuCi0gTWFya2VkIGBHdXp6bGVcU2VydmljZVxDbGllbnQ6OnNldERlZmF1bHRIZWFkZXJzKClgIGFzIGRlcHJlY2F0ZWQuIFVzZSBgJGNsaWVudC0+c2V0RGVmYXVsdE9wdGlvbignaGVhZGVycy97aGVhZGVyX25hbWV9JywgJ3ZhbHVlJylgLgotIE1hcmtlZCAncmVxdWVzdC5wYXJhbXMnIGZvciBgR3V6emxlXEh0dHBcQ2xpZW50YCBhcyBkZXByZWNhdGVkLiBVc2UgYCRjbGllbnQtPnNldERlZmF1bHRPcHRpb24oJ3BhcmFtcy97cGFyYW1fbmFtZX0nLCAndmFsdWUnKWAKLSBNYXJrZWQgJ2NvbW1hbmQuaGVhZGVycycsICdjb21tYW5kLnJlc3BvbnNlX2JvZHknIGFuZCAnY29tbWFuZC5vbl9jb21wbGV0ZScgYXMgZGVwcmVjYXRlZCBmb3IgQWJzdHJhY3RDb21tYW5kLiBUaGVzZSB3aWxsIHdvcmsgdGhyb3VnaCBHdXp6bGUgNC4wCgogICAgICAgICRjb21tYW5kID0gJGNsaWVudC0+Z2V0Q29tbWFuZCgnZm9vJywgYXJyYXkoCiAgICAgICAgICAgICdjb21tYW5kLmhlYWRlcnMnID0+IGFycmF5KCdUZXN0JyA9PiAnMTIzJyksCiAgICAgICAgICAgICdjb21tYW5kLnJlc3BvbnNlX2JvZHknID0+ICcvcGF0aC90by9maWxlJwogICAgICAgICkpOwoKICAgICAgICAvLyBTaG91bGQgYmUgY2hhbmdlZCB0bzoKCiAgICAgICAgJGNvbW1hbmQgPSAkY2xpZW50LT5nZXRDb21tYW5kKCdmb28nLCBhcnJheSgKICAgICAgICAgICAgJ2NvbW1hbmQucmVxdWVzdF9vcHRpb25zJyA9PiBhcnJheSgKICAgICAgICAgICAgICAgICdoZWFkZXJzJyA9PiBhcnJheSgnVGVzdCcgPT4gJzEyMycpLAogICAgICAgICAgICAgICAgJ3NhdmVfYXMnID0+ICcvcGF0aC90by9maWxlJwogICAgICAgICAgICApCiAgICAgICAgKSk7CgojIyMgSW50ZXJmYWNlIGNoYW5nZXMKCkFkZGl0aW9ucyBhbmQgY2hhbmdlcyAoeW91IHdpbGwgbmVlZCB0byB1cGRhdGUgYW55IGltcGxlbWVudGF0aW9ucyBvciBzdWJjbGFzc2VzIHlvdSBtYXkgaGF2ZSBjcmVhdGVkKToKCi0gQWRkZWQgYW4gYCRvcHRpb25zYCBhcmd1bWVudCB0byB0aGUgZW5kIG9mIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvZiBgR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlYDoKICBjcmVhdGVSZXF1ZXN0LCBoZWFkLCBkZWxldGUsIHB1dCwgcGF0Y2gsIHBvc3QsIG9wdGlvbnMsIHByZXBhcmVSZXF1ZXN0Ci0gQWRkZWQgYW4gYCRvcHRpb25zYCBhcmd1bWVudCB0byB0aGUgZW5kIG9mIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3RcUmVxdWVzdEZhY3RvcnlJbnRlcmZhY2U6OmNyZWF0ZVJlcXVlc3QoKWAKLSBBZGRlZCBhbiBgYXBwbHlPcHRpb25zKClgIG1ldGhvZCB0byBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0XFJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlYAotIENoYW5nZWQgYEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6Z2V0KCR1cmkgPSBudWxsLCAkaGVhZGVycyA9IG51bGwsICRib2R5ID0gbnVsbClgIHRvCiAgYEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6Z2V0KCR1cmkgPSBudWxsLCAkaGVhZGVycyA9IG51bGwsICRvcHRpb25zID0gYXJyYXkoKSlgLiBZb3UgY2FuIHN0aWxsIHBhc3MgaW4gYQogIHJlc291cmNlLCBzdHJpbmcsIG9yIEVudGl0eUJvZHkgaW50byB0aGUgJG9wdGlvbnMgcGFyYW1ldGVyIHRvIHNwZWNpZnkgdGhlIGRvd25sb2FkIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZS4KLSBDaGFuZ2VkIGBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb246Ol9fY29uc3RydWN0KCRkYXRhKWAgdG8gbm8gbG9uZ2VyIGFjY2VwdHMgYSBudWxsIHZhbHVlIGZvciBgJGRhdGFgIGJ1dCBhCiAgZGVmYXVsdCBgYXJyYXkoKWAKLSBBZGRlZCBgR3V6emxlXFN0cmVhbVxTdHJlYW1JbnRlcmZhY2U6OmlzUmVwZWF0YWJsZWAKLSBNYWRlIGBHdXp6bGVcSHR0cFxDbGllbnQ6OmV4cGFuZFRlbXBsYXRlYCBhbmQgYGdldFVyaVRlbXBsYXRlYCBwcm90ZWN0ZWQgbWV0aG9kcy4KClRoZSBmb2xsb3dpbmcgbWV0aG9kcyB3ZXJlIHJlbW92ZWQgZnJvbSBpbnRlcmZhY2VzLiBBbGwgb2YgdGhlc2UgbWV0aG9kcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGluIHRoZSBjb25jcmV0ZSBjbGFzc2VzCnRoYXQgaW1wbGVtZW50IHRoZW0sIGJ1dCB5b3Ugc2hvdWxkIHVwZGF0ZSB5b3VyIGNvZGUgdG8gdXNlIGFsdGVybmF0aXZlIG1ldGhvZHM6CgotIFJlbW92ZWQgYEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6c2V0RGVmYXVsdEhlYWRlcnMoKS4gVXNlCiAgYCRjbGllbnQtPmdldENvbmZpZygpLT5zZXRQYXRoKCdyZXF1ZXN0Lm9wdGlvbnMvaGVhZGVycy97aGVhZGVyX25hbWV9JywgJ3ZhbHVlJylgLiBvcgogIGAkY2xpZW50LT5nZXRDb25maWcoKS0+c2V0UGF0aCgncmVxdWVzdC5vcHRpb25zL2hlYWRlcnMnLCBhcnJheSgnaGVhZGVyX25hbWUnID0+ICd2YWx1ZScpKWAgb3IKICBgJGNsaWVudC0+c2V0RGVmYXVsdE9wdGlvbignaGVhZGVycy97aGVhZGVyX25hbWV9JywgJ3ZhbHVlJylgLiBvcgogIGAkY2xpZW50LT5zZXREZWZhdWx0T3B0aW9uKCdoZWFkZXJzJywgYXJyYXkoJ2hlYWRlcl9uYW1lJyA9PiAndmFsdWUnKSlgLgotIFJlbW92ZWQgYEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6Z2V0RGVmYXVsdEhlYWRlcnMoKS4gVXNlIGAkY2xpZW50LT5nZXRDb25maWcoKS0+Z2V0UGF0aCgncmVxdWVzdC5vcHRpb25zL2hlYWRlcnMnKWAuCi0gUmVtb3ZlZCBgR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlOjpleHBhbmRUZW1wbGF0ZSgpYC4gVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCi0gUmVtb3ZlZCBgR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlOjpzZXRSZXF1ZXN0RmFjdG9yeSgpYC4gVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCi0gUmVtb3ZlZCBgR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlOjpnZXRDdXJsTXVsdGkoKWAuIFRoaXMgaXMgYSB2ZXJ5IHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGRldGFpbC4KLSBSZW1vdmVkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U6OmNhbkNhY2hlYC4gVXNlIHRoZSBDYWNoZVBsdWdpbi4KLSBSZW1vdmVkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U6OnNldElzUmVkaXJlY3RgLiBVc2UgdGhlIEhpc3RvcnlQbHVnaW4uCi0gUmVtb3ZlZCBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOjppc1JlZGlyZWN0YC4gVXNlIHRoZSBIaXN0b3J5UGx1Z2luLgoKIyMjIENhY2hlIHBsdWdpbiBicmVha2luZyBjaGFuZ2VzCgotIENhY2hlS2V5UHJvdmlkZXJJbnRlcmZhY2UgYW5kIERlZmF1bHRDYWNoZUtleVByb3ZpZGVyIGFyZSBubyBsb25nZXIgdXNlZC4gQWxsIG9mIHRoaXMgbG9naWMgaXMgaGFuZGxlZCBpbiBhCiAgQ2FjaGVTdG9yYWdlSW50ZXJmYWNlLiBUaGVzZSB0d28gb2JqZWN0cyBhbmQgaW50ZXJmYWNlIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLgotIEFsd2F5cyBzZXR0aW5nIFgtY2FjaGUgaGVhZGVycyBvbiBjYWNoZWQgcmVzcG9uc2VzCi0gRGVmYXVsdCBjYWNoZSBUVExzIGFyZSBub3cgaGFuZGxlZCBieSB0aGUgQ2FjaGVTdG9yYWdlSW50ZXJmYWNlIG9mIGEgQ2FjaGVQbHVnaW4KLSBgQ2FjaGVTdG9yYWdlSW50ZXJmYWNlOjpjYWNoZSgka2V5LCBSZXNwb25zZSAkcmVzcG9uc2UsICR0dGwgPSBudWxsKWAgaGFzIGNoYW5nZWQgdG8gYGNhY2hlKFJlcXVlc3RJbnRlcmZhY2UKICAkcmVxdWVzdCwgUmVzcG9uc2UgJHJlc3BvbnNlKTtgCi0gYENhY2hlU3RvcmFnZUludGVyZmFjZTo6ZmV0Y2goJGtleSlgIGhhcyBjaGFuZ2VkIHRvIGBmZXRjaChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0KTtgCi0gYENhY2hlU3RvcmFnZUludGVyZmFjZTo6ZGVsZXRlKCRrZXkpYCBoYXMgY2hhbmdlZCB0byBgZGVsZXRlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QpO2AKLSBBZGRlZCBgQ2FjaGVTdG9yYWdlSW50ZXJmYWNlOjpwdXJnZSgkdXJsKWAKLSBgRGVmYXVsdFJldmFsaWRhdGlvbjo6X19jb25zdHJ1Y3QoQ2FjaGVLZXlQcm92aWRlckludGVyZmFjZSAkY2FjaGVLZXksIENhY2hlU3RvcmFnZUludGVyZmFjZSAkY2FjaGUsIENhY2hlUGx1Z2luCiAgJHBsdWdpbilgIGhhcyBjaGFuZ2VkIHRvIGBEZWZhdWx0UmV2YWxpZGF0aW9uOjpfX2NvbnN0cnVjdChDYWNoZVN0b3JhZ2VJbnRlcmZhY2UgJGNhY2hlLAogIENhbkNhY2hlU3RyYXRlZ3lJbnRlcmZhY2UgJGNhbkNhY2hlID0gbnVsbClgCi0gQWRkZWQgYFJldmFsaWRhdGlvbkludGVyZmFjZTo6c2hvdWxkUmV2YWxpZGF0ZShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBSZXNwb25zZSAkcmVzcG9uc2UpYAoKMy41IHRvIDMuNgotLS0tLS0tLS0tCgoqIE1peGVkIGNhc2luZyBvZiBoZWFkZXJzIGFyZSBub3cgZm9yY2VkIHRvIGJlIGEgc2luZ2xlIGNvbnNpc3RlbnQgY2FzaW5nIGFjcm9zcyBhbGwgdmFsdWVzIGZvciB0aGF0IGhlYWRlci4KKiBNZXNzYWdlcyBpbnRlcm5hbGx5IHVzZSBhIEhlYWRlckNvbGxlY3Rpb24gb2JqZWN0IHRvIGRlbGVnYXRlIGhhbmRsaW5nIGNhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIHJlc29sdXRpb24KKiBSZW1vdmVkIHRoZSB3aG9sZSBjaGFuZ2VkSGVhZGVyKCkgZnVuY3Rpb24gc3lzdGVtIG9mIG1lc3NhZ2VzIGJlY2F1c2UgYWxsIGhlYWRlciBjaGFuZ2VzIG5vdyBnbyB0aHJvdWdoIGFkZEhlYWRlcigpLgogIEZvciBleGFtcGxlLCBzZXRIZWFkZXIoKSBmaXJzdCByZW1vdmVzIHRoZSBoZWFkZXIgdXNpbmcgdW5zZXQgb24gYSBIZWFkZXJDb2xsZWN0aW9uIGFuZCB0aGVuIGNhbGxzIGFkZEhlYWRlcigpLgogIEtlZXBpbmcgdGhlIEhvc3QgaGVhZGVyIGFuZCBVUkwgaG9zdCBpbiBzeW5jIGlzIG5vdyBoYW5kbGVkIGJ5IG92ZXJyaWRpbmcgdGhlIGFkZEhlYWRlciBtZXRob2QgaW4gUmVxdWVzdC4KKiBTcGVjaWZpYyBoZWFkZXIgaW1wbGVtZW50YXRpb25zIGNhbiBiZSBjcmVhdGVkIGZvciBjb21wbGV4IGhlYWRlcnMuIFdoZW4gYSBtZXNzYWdlIGNyZWF0ZXMgYSBoZWFkZXIsIGl0IHVzZXMgYQogIEhlYWRlckZhY3Rvcnkgd2hpY2ggY2FuIG1hcCBzcGVjaWZpYyBoZWFkZXJzIHRvIHNwZWNpZmljIGhlYWRlciBjbGFzc2VzLiBUaGVyZSBpcyBub3cgYSBMaW5rIGhlYWRlciBhbmQKICBDYWNoZUNvbnRyb2wgaGVhZGVyIGltcGxlbWVudGF0aW9uLgoqIE1vdmVkIGdldExpbmtzKCkgZnJvbSBSZXNwb25zZSB0byBqdXN0IGJlIHVzZWQgb24gYSBMaW5rIGhlYWRlciBvYmplY3QuCgpJZiB5b3UgcHJldmlvdXNseSByZWxpZWQgb24gR3V6emxlXEh0dHBcTWVzc2FnZVxIZWFkZXI6OnJhdygpLCB0aGVuIHlvdSB3aWxsIG5lZWQgdG8gdXBkYXRlIHlvdXIgY29kZSB0byB1c2UgdGhlCkhlYWRlckludGVyZmFjZSAoZS5nLiB0b0FycmF5KCksIGdldEFsbCgpLCBldGMuKS4KCiMjIyBJbnRlcmZhY2UgY2hhbmdlcwoKKiBSZW1vdmVkIGZyb20gaW50ZXJmYWNlOiBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OnNldFVyaVRlbXBsYXRlCiogUmVtb3ZlZCBmcm9tIGludGVyZmFjZTogR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlOjpzZXRDdXJsTXVsdGkoKQoqIFJlbW92ZWQgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0OjpyZWNlaXZlZFJlcXVlc3RIZWFkZXIoKSBhbmQgaW1wbGVtZW50ZWQgdGhpcyBmdW5jdGlvbmFsaXR5IGluCiAgR3V6emxlXEh0dHBcQ3VybFxSZXF1ZXN0TWVkaWF0b3IKKiBSZW1vdmVkIHRoZSBvcHRpb25hbCAkYXNTdHJpbmcgcGFyYW1ldGVyIGZyb20gTWVzc2FnZUludGVyZmFjZTo6Z2V0SGVhZGVyKCkuIEp1c3QgY2FzdCB0aGUgaGVhZGVyIHRvIGEgc3RyaW5nLgoqIFJlbW92ZWQgdGhlIG9wdGlvbmFsICR0cnlDaHVua2VkVHJhbnNmZXIgb3B0aW9uIGZyb20gR3V6emxlXEh0dHBcTWVzc2FnZVxFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0SW50ZXJmYWNlCiogUmVtb3ZlZCB0aGUgJGFzT2JqZWN0cyBhcmd1bWVudCBmcm9tIEd1enpsZVxIdHRwXE1lc3NhZ2VcTWVzc2FnZUludGVyZmFjZTo6Z2V0SGVhZGVycygpCgojIyMgUmVtb3ZlZCBkZXByZWNhdGVkIGZ1bmN0aW9ucwoKKiBSZW1vdmVkIEd1enpsZVxQYXJzZXJcUGFyc2VyUmVnaXN0ZXI6OmdldCgpLiBVc2UgZ2V0UGFyc2VyKCkKKiBSZW1vdmVkIEd1enpsZVxQYXJzZXJcUGFyc2VyUmVnaXN0ZXI6OnNldCgpLiBVc2UgcmVnaXN0ZXJQYXJzZXIoKS4KCiMjIyBEZXByZWNhdGlvbnMKCiogVGhlIGFiaWxpdHkgdG8gY2FzZS1pbnNlbnNpdGl2ZWx5IHNlYXJjaCBmb3IgaGVhZGVyIHZhbHVlcwoqIEd1enpsZVxIdHRwXE1lc3NhZ2VcSGVhZGVyOjpoYXNFeGFjdEhlYWRlcgoqIEd1enpsZVxIdHRwXE1lc3NhZ2VcSGVhZGVyOjpyYXcuIFVzZSBnZXRBbGwoKQoqIERlcHJlY2F0ZWQgY2FjaGUgY29udHJvbCBzcGVjaWZpYyBtZXRob2RzIG9uIEd1enpsZVxIdHRwXE1lc3NhZ2VcQWJzdHJhY3RNZXNzYWdlLiBVc2UgdGhlIENhY2hlQ29udHJvbCBoZWFkZXIgb2JqZWN0CiAgaW5zdGVhZC4KCiMjIyBPdGhlciBjaGFuZ2VzCgoqIEFsbCByZXNwb25zZSBoZWFkZXIgaGVscGVyIGZ1bmN0aW9ucyByZXR1cm4gYSBzdHJpbmcgcmF0aGVyIHRoYW4gbWl4aW5nIEhlYWRlciBvYmplY3RzIGFuZCBzdHJpbmdzIGluY29uc2lzdGVudGx5CiogUmVtb3ZlZCBjVVJMIGJsYWNrbGlzdCBzdXBwb3J0LiBUaGlzIGlzIG5vIGxvbmdlciBuZWNlc3Nhcnkgbm93IHRoYXQgRXhwZWN0LCBBY2NlcHQsIGV0Yy4gYXJlIG1hbmFnZWQgYnkgR3V6emxlCiAgZGlyZWN0bHkgdmlhIGludGVyZmFjZXMKKiBSZW1vdmVkIHRoZSBpbmplY3Rpbmcgb2YgYSByZXF1ZXN0IG9iamVjdCBvbnRvIGEgcmVzcG9uc2Ugb2JqZWN0LiBUaGUgbWV0aG9kcyB0byBnZXQgYW5kIHNldCBhIHJlcXVlc3Qgc3RpbGwgZXhpc3QKICBidXQgYXJlIGEgbm8tb3AgdW50aWwgcmVtb3ZlZC4KKiBNb3N0IGNsYXNzZXMgdGhhdCB1c2VkIHRvIHJlcXVpcmUgYSBgR3V6emxlXFNlcnZpY2VcQ29tbWFuZFxDb21tYW5kSW50ZXJmYWNlYCB0eXBlaGludCBub3cgcmVxdWVzdCBhCiAgYEd1enpsZVxTZXJ2aWNlXENvbW1hbmRcQXJyYXlDb21tYW5kSW50ZXJmYWNlYC4KKiBBZGRlZCBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOjpzdGFydFJlc3BvbnNlKClgIHRvIHRoZSBSZXF1ZXN0SW50ZXJmYWNlIHRvIGhhbmRsZSBpbmplY3RpbmcgYSByZXNwb25zZQogIG9uIGEgcmVxdWVzdCB3aGlsZSB0aGUgcmVxdWVzdCBpcyBzdGlsbCBiZWluZyB0cmFuc2ZlcnJlZAoqIGBHdXp6bGVcU2VydmljZVxDb21tYW5kXENvbW1hbmRJbnRlcmZhY2VgIG5vdyBleHRlbmRzIGZyb20gVG9BcnJheUludGVyZmFjZSBhbmQgQXJyYXlBY2Nlc3MKCjMuMyB0byAzLjQKLS0tLS0tLS0tLQoKQmFzZSBVUkxzIG9mIGEgY2xpZW50IG5vdyBmb2xsb3cgdGhlIHJ1bGVzIG9mIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi4yIHdoZW4gbWVyZ2luZyBVUkxzLgoKMy4yIHRvIDMuMwotLS0tLS0tLS0tCgojIyMgUmVzcG9uc2U6OmdldEV0YWcoKSBxdW90ZSBzdHJpcHBpbmcgcmVtb3ZlZAoKYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVzcG9uc2U6OmdldEV0YWcoKWAgbm8gbG9uZ2VyIHN0cmlwcyBxdW90ZXMgYXJvdW5kIHRoZSBFVGFnIHJlc3BvbnNlIGhlYWRlcgoKIyMjIFJlbW92ZWQgYEd1enpsZVxIdHRwXFV0aWxzYAoKVGhlIGBHdXp6bGVcSHR0cFxVdGlsc2AgY2xhc3Mgd2FzIHJlbW92ZWQuIFRoaXMgY2xhc3Mgd2FzIG9ubHkgdXNlZCBmb3IgdGVzdGluZy4KCiMjIyBTdHJlYW0gd3JhcHBlciBhbmQgdHlwZQoKYEd1enpsZVxTdHJlYW1cU3RyZWFtOjpnZXRXcmFwcGVyKClgIGFuZCBgR3V6emxlXFN0cmVhbVxTdHJlYW06OmdldFN0cmVhbVR5cGUoKWAgYXJlIG5vIGxvbmdlciBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLgoKIyMjIGN1cmwuZW1pdF9pbyBiZWNhbWUgZW1pdF9pbwoKRW1pdHRpbmcgSU8gZXZlbnRzIGZyb20gYSBSZXF1ZXN0TWVkaWF0b3IgaXMgbm93IGEgcGFyYW1ldGVyIHRoYXQgbXVzdCBiZSBzZXQgaW4gYSByZXF1ZXN0J3MgY3VybCBvcHRpb25zIHVzaW5nIHRoZQonZW1pdF9pbycga2V5LiBUaGlzIHdhcyBwcmV2aW91c2x5IHNldCB1bmRlciBhIHJlcXVlc3QncyBwYXJhbWV0ZXJzIHVzaW5nICdjdXJsLmVtaXRfaW8nCgozLjEgdG8gMy4yCi0tLS0tLS0tLS0KCiMjIyBDdXJsTXVsdGkgaXMgbm8gbG9uZ2VyIHJldXNlZCBnbG9iYWxseQoKQmVmb3JlIDMuMiwgdGhlIHNhbWUgQ3VybE11bHRpIG9iamVjdCB3YXMgcmV1c2VkIGdsb2JhbGx5IGZvciBlYWNoIGNsaWVudC4gVGhpcyBjYW4gY2F1c2UgaXNzdWUgd2hlcmUgcGx1Z2lucyBhZGRlZAp0byBhIHNpbmdsZSBjbGllbnQgY2FuIHBvbGx1dGUgcmVxdWVzdHMgZGlzcGF0Y2hlZCBmcm9tIG90aGVyIGNsaWVudHMuCgpJZiB5b3Ugc3RpbGwgd2lzaCB0byByZXVzZSB0aGUgc2FtZSBDdXJsTXVsdGkgb2JqZWN0IHdpdGggZWFjaCBjbGllbnQsIHRoZW4geW91IGNhbiBhZGQgYSBsaXN0ZW5lciB0byB0aGUKU2VydmljZUJ1aWxkZXIncyBgc2VydmljZV9idWlsZGVyLmNyZWF0ZV9jbGllbnRgIGV2ZW50IHRvIGluamVjdCBhIGN1c3RvbSBDdXJsTXVsdGkgb2JqZWN0IGludG8gZWFjaCBjbGllbnQgYXMgaXQgaXMKY3JlYXRlZC4KCmBgYHBocAokbXVsdGkgPSBuZXcgR3V6emxlXEh0dHBcQ3VybFxDdXJsTXVsdGkoKTsKJGJ1aWxkZXIgPSBHdXp6bGVcU2VydmljZVxCdWlsZGVyXFNlcnZpY2VCdWlsZGVyOjpmYWN0b3J5KCcvcGF0aC90by9jb25maWcuanNvbicpOwokYnVpbGRlci0+YWRkTGlzdGVuZXIoJ3NlcnZpY2VfYnVpbGRlci5jcmVhdGVfY2xpZW50JywgZnVuY3Rpb24gKCRldmVudCkgdXNlICgkbXVsdGkpIHsKICAgICRldmVudFsnY2xpZW50J10tPnNldEN1cmxNdWx0aSgkbXVsdGkpOwp9Cn0pOwpgYGAKCiMjIyBObyBkZWZhdWx0IHBhdGgKClVSTHMgbm8gbG9uZ2VyIGhhdmUgYSBkZWZhdWx0IHBhdGggdmFsdWUgb2YgJy8nIGlmIG5vIHBhdGggd2FzIHNwZWNpZmllZC4KCkJlZm9yZToKCmBgYHBocAokcmVxdWVzdCA9ICRjbGllbnQtPmdldCgnaHR0cDovL3d3dy5mb28uY29tJyk7CmVjaG8gJHJlcXVlc3QtPmdldFVybCgpOwovLyA+PiBodHRwOi8vd3d3LmZvby5jb20vCmBgYAoKQWZ0ZXI6CgpgYGBwaHAKJHJlcXVlc3QgPSAkY2xpZW50LT5nZXQoJ2h0dHA6Ly93d3cuZm9vLmNvbScpOwplY2hvICRyZXF1ZXN0LT5nZXRVcmwoKTsKLy8gPj4gaHR0cDovL3d3dy5mb28uY29tCmBgYAoKIyMjIExlc3MgdmVyYm9zZSBCYWRSZXNwb25zZUV4Y2VwdGlvbgoKVGhlIGV4Y2VwdGlvbiBtZXNzYWdlIGZvciBgR3V6emxlXEh0dHBcRXhjZXB0aW9uXEJhZFJlc3BvbnNlRXhjZXB0aW9uYCBubyBsb25nZXIgY29udGFpbnMgdGhlIGZ1bGwgSFRUUCByZXF1ZXN0IGFuZApyZXNwb25zZSBpbmZvcm1hdGlvbi4gWW91IGNhbiwgaG93ZXZlciwgZ2V0IGFjY2VzcyB0byB0aGUgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2JqZWN0IGJ5IGNhbGxpbmcgYGdldFJlcXVlc3QoKWAgb3IKYGdldFJlc3BvbnNlKClgIG9uIHRoZSBleGNlcHRpb24gb2JqZWN0LgoKIyMjIFF1ZXJ5IHBhcmFtZXRlciBhZ2dyZWdhdGlvbgoKTXVsdGktdmFsdWVkIHF1ZXJ5IHBhcmFtZXRlcnMgYXJlIG5vIGxvbmdlciBhZ2dyZWdhdGVkIHVzaW5nIGEgY2FsbGJhY2sgZnVuY3Rpb24uIGBHdXp6bGVcSHR0cFxRdWVyeWAgbm93IGhhcyBhCnNldEFnZ3JlZ2F0b3IoKSBtZXRob2QgdGhhdCBhY2NlcHRzIGEgYEd1enpsZVxIdHRwXFF1ZXJ5QWdncmVnYXRvclxRdWVyeUFnZ3JlZ2F0b3JJbnRlcmZhY2VgIG9iamVjdC4gVGhpcyBvYmplY3QgaXMKcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZSBhZ2dyZWdhdGlvbiBvZiBtdWx0aS12YWx1ZWQgcXVlcnkgc3RyaW5nIHZhcmlhYmxlcyBpbnRvIGEgZmxhdHRlbmVkIGhhc2guCgoyLjggdG8gMy54Ci0tLS0tLS0tLS0KCiMjIyBHdXp6bGVcU2VydmljZVxJbnNwZWN0b3IKCkNoYW5nZSBgXEd1enpsZVxTZXJ2aWNlXEluc3BlY3Rvcjo6ZnJvbUNvbmZpZ2AgdG8gYFxHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb246OmZyb21Db25maWdgCgoqKkJlZm9yZSoqCgpgYGBwaHAKdXNlIEd1enpsZVxTZXJ2aWNlXEluc3BlY3RvcjsKCmNsYXNzIFlvdXJDbGllbnQgZXh0ZW5kcyBcR3V6emxlXFNlcnZpY2VcQ2xpZW50CnsKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZmFjdG9yeSgkY29uZmlnID0gYXJyYXkoKSkKICAgIHsKICAgICAgICAkZGVmYXVsdCA9IGFycmF5KCk7CiAgICAgICAgJHJlcXVpcmVkID0gYXJyYXkoJ2Jhc2VfdXJsJywgJ3VzZXJuYW1lJywgJ2FwaV9rZXknKTsKICAgICAgICAkY29uZmlnID0gSW5zcGVjdG9yOjpmcm9tQ29uZmlnKCRjb25maWcsICRkZWZhdWx0LCAkcmVxdWlyZWQpOwoKICAgICAgICAkY2xpZW50ID0gbmV3IHNlbGYoCiAgICAgICAgICAgICRjb25maWctPmdldCgnYmFzZV91cmwnKSwKICAgICAgICAgICAgJGNvbmZpZy0+Z2V0KCd1c2VybmFtZScpLAogICAgICAgICAgICAkY29uZmlnLT5nZXQoJ2FwaV9rZXknKQogICAgICAgICk7CiAgICAgICAgJGNsaWVudC0+c2V0Q29uZmlnKCRjb25maWcpOwoKICAgICAgICAkY2xpZW50LT5zZXREZXNjcmlwdGlvbihTZXJ2aWNlRGVzY3JpcHRpb246OmZhY3RvcnkoX19ESVJfXyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnY2xpZW50Lmpzb24nKSk7CgogICAgICAgIHJldHVybiAkY2xpZW50OwogICAgfQpgYGAKCioqQWZ0ZXIqKgoKYGBgcGhwCnVzZSBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb247CgpjbGFzcyBZb3VyQ2xpZW50IGV4dGVuZHMgXEd1enpsZVxTZXJ2aWNlXENsaWVudAp7CiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZhY3RvcnkoJGNvbmZpZyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgJGRlZmF1bHQgPSBhcnJheSgpOwogICAgICAgICRyZXF1aXJlZCA9IGFycmF5KCdiYXNlX3VybCcsICd1c2VybmFtZScsICdhcGlfa2V5Jyk7CiAgICAgICAgJGNvbmZpZyA9IENvbGxlY3Rpb246OmZyb21Db25maWcoJGNvbmZpZywgJGRlZmF1bHQsICRyZXF1aXJlZCk7CgogICAgICAgICRjbGllbnQgPSBuZXcgc2VsZigKICAgICAgICAgICAgJGNvbmZpZy0+Z2V0KCdiYXNlX3VybCcpLAogICAgICAgICAgICAkY29uZmlnLT5nZXQoJ3VzZXJuYW1lJyksCiAgICAgICAgICAgICRjb25maWctPmdldCgnYXBpX2tleScpCiAgICAgICAgKTsKICAgICAgICAkY2xpZW50LT5zZXRDb25maWcoJGNvbmZpZyk7CgogICAgICAgICRjbGllbnQtPnNldERlc2NyaXB0aW9uKFNlcnZpY2VEZXNjcmlwdGlvbjo6ZmFjdG9yeShfX0RJUl9fIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdjbGllbnQuanNvbicpKTsKCiAgICAgICAgcmV0dXJuICRjbGllbnQ7CiAgICB9CmBgYAoKIyMjIENvbnZlcnQgWE1MIFNlcnZpY2UgRGVzY3JpcHRpb25zIHRvIEpTT04KCioqQmVmb3JlKioKCmBgYHhtbAo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgo8Y2xpZW50PgogICAgPGNvbW1hbmRzPgogICAgICAgIDwhLS0gR3JvdXBzIC0tPgogICAgICAgIDxjb21tYW5kIG5hbWU9Imxpc3RfZ3JvdXBzIiBtZXRob2Q9IkdFVCIgdXJpPSJncm91cHMuanNvbiI+CiAgICAgICAgICAgIDxkb2M+R2V0IGEgbGlzdCBvZiBncm91cHM8L2RvYz4KICAgICAgICA8L2NvbW1hbmQ+CiAgICAgICAgPGNvbW1hbmQgbmFtZT0ic2VhcmNoX2dyb3VwcyIgbWV0aG9kPSJHRVQiIHVyaT0nc2VhcmNoLmpzb24/cXVlcnk9Int7cXVlcnl9fSB0eXBlOmdyb3VwIic+CiAgICAgICAgICAgIDxkb2M+VXNlcyBhIHNlYXJjaCBxdWVyeSB0byBnZXQgYSBsaXN0IG9mIGdyb3VwczwvZG9jPgogICAgICAgICAgICA8cGFyYW0gbmFtZT0icXVlcnkiIHR5cGU9InN0cmluZyIgcmVxdWlyZWQ9InRydWUiIC8+CiAgICAgICAgPC9jb21tYW5kPgogICAgICAgIDxjb21tYW5kIG5hbWU9ImNyZWF0ZV9ncm91cCIgbWV0aG9kPSJQT1NUIiB1cmk9Imdyb3Vwcy5qc29uIj4KICAgICAgICAgICAgPGRvYz5DcmVhdGUgYSBncm91cDwvZG9jPgogICAgICAgICAgICA8cGFyYW0gbmFtZT0iZGF0YSIgdHlwZT0iYXJyYXkiIGxvY2F0aW9uPSJib2R5IiBmaWx0ZXJzPSJqc29uX2VuY29kZSIgZG9jPSJHcm91cCBKU09OIi8+CiAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJDb250ZW50LVR5cGUiIGxvY2F0aW9uPSJoZWFkZXIiIHN0YXRpYz0iYXBwbGljYXRpb24vanNvbiIvPgogICAgICAgIDwvY29tbWFuZD4KICAgICAgICA8Y29tbWFuZCBuYW1lPSJkZWxldGVfZ3JvdXAiIG1ldGhvZD0iREVMRVRFIiB1cmk9Imdyb3Vwcy97e2lkfX0uanNvbiI+CiAgICAgICAgICAgIDxkb2M+RGVsZXRlIGEgZ3JvdXAgYnkgSUQ8L2RvYz4KICAgICAgICAgICAgPHBhcmFtIG5hbWU9ImlkIiB0eXBlPSJpbnRlZ2VyIiByZXF1aXJlZD0idHJ1ZSIvPgogICAgICAgIDwvY29tbWFuZD4KICAgICAgICA8Y29tbWFuZCBuYW1lPSJnZXRfZ3JvdXAiIG1ldGhvZD0iR0VUIiB1cmk9Imdyb3Vwcy97e2lkfX0uanNvbiI+CiAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJpZCIgdHlwZT0iaW50ZWdlciIgcmVxdWlyZWQ9InRydWUiLz4KICAgICAgICA8L2NvbW1hbmQ+CiAgICAgICAgPGNvbW1hbmQgbmFtZT0idXBkYXRlX2dyb3VwIiBtZXRob2Q9IlBVVCIgdXJpPSJncm91cHMve3tpZH19Lmpzb24iPgogICAgICAgICAgICA8ZG9jPlVwZGF0ZSBhIGdyb3VwPC9kb2M+CiAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJpZCIgdHlwZT0iaW50ZWdlciIgcmVxdWlyZWQ9InRydWUiLz4KICAgICAgICAgICAgPHBhcmFtIG5hbWU9ImRhdGEiIHR5cGU9ImFycmF5IiBsb2NhdGlvbj0iYm9keSIgZmlsdGVycz0ianNvbl9lbmNvZGUiIGRvYz0iR3JvdXAgSlNPTiIvPgogICAgICAgICAgICA8cGFyYW0gbmFtZT0iQ29udGVudC1UeXBlIiBsb2NhdGlvbj0iaGVhZGVyIiBzdGF0aWM9ImFwcGxpY2F0aW9uL2pzb24iLz4KICAgICAgICA8L2NvbW1hbmQ+CiAgICA8L2NvbW1hbmRzPgo8L2NsaWVudD4KYGBgCgoqKkFmdGVyKioKCmBgYGpzb24KewogICAgIm5hbWUiOiAgICAgICAiWmVuZGVzayBSRVNUIEFQSSB2MiIsCiAgICAiYXBpVmVyc2lvbiI6ICIyMDEyLTEyLTMxIiwKICAgICJkZXNjcmlwdGlvbiI6IlByb3ZpZGVzIGFjY2VzcyB0byBaZW5kZXNrIHZpZXdzLCBncm91cHMsIHRpY2tldHMsIHRpY2tldCBmaWVsZHMsIGFuZCB1c2VycyIsCiAgICAib3BlcmF0aW9ucyI6IHsKICAgICAgICAibGlzdF9ncm91cHMiOiAgewogICAgICAgICAgICAiaHR0cE1ldGhvZCI6IkdFVCIsCiAgICAgICAgICAgICJ1cmkiOiAgICAgICAiZ3JvdXBzLmpzb24iLAogICAgICAgICAgICAic3VtbWFyeSI6ICAgIkdldCBhIGxpc3Qgb2YgZ3JvdXBzIgogICAgICAgIH0sCiAgICAgICAgInNlYXJjaF9ncm91cHMiOnsKICAgICAgICAgICAgImh0dHBNZXRob2QiOiJHRVQiLAogICAgICAgICAgICAidXJpIjogICAgICAgInNlYXJjaC5qc29uP3F1ZXJ5PVwie3F1ZXJ5fSB0eXBlOmdyb3VwXCIiLAogICAgICAgICAgICAic3VtbWFyeSI6ICAgIlVzZXMgYSBzZWFyY2ggcXVlcnkgdG8gZ2V0IGEgbGlzdCBvZiBncm91cHMiLAogICAgICAgICAgICAicGFyYW1ldGVycyI6ewogICAgICAgICAgICAgICAgInF1ZXJ5Ijp7CiAgICAgICAgICAgICAgICAgICAgImxvY2F0aW9uIjogICAidXJpIiwKICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiJaZW5kZXNrIFNlYXJjaCBRdWVyeSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiAgIHRydWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImNyZWF0ZV9ncm91cCI6IHsKICAgICAgICAgICAgImh0dHBNZXRob2QiOiJQT1NUIiwKICAgICAgICAgICAgInVyaSI6ICAgICAgICJncm91cHMuanNvbiIsCiAgICAgICAgICAgICJzdW1tYXJ5IjogICAiQ3JlYXRlIGEgZ3JvdXAiLAogICAgICAgICAgICAicGFyYW1ldGVycyI6ewogICAgICAgICAgICAgICAgImRhdGEiOiAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAgICAgICAibG9jYXRpb24iOiAgICJib2R5IiwKICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiJHcm91cCBKU09OIiwKICAgICAgICAgICAgICAgICAgICAiZmlsdGVycyI6ICAgICJqc29uX2VuY29kZSIsCiAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogICB0cnVlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIkNvbnRlbnQtVHlwZSI6ewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgImxvY2F0aW9uIjoiaGVhZGVyIiwKICAgICAgICAgICAgICAgICAgICAic3RhdGljIjogICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiZGVsZXRlX2dyb3VwIjogewogICAgICAgICAgICAiaHR0cE1ldGhvZCI6IkRFTEVURSIsCiAgICAgICAgICAgICJ1cmkiOiAgICAgICAiZ3JvdXBzL3tpZH0uanNvbiIsCiAgICAgICAgICAgICJzdW1tYXJ5IjogICAiRGVsZXRlIGEgZ3JvdXAiLAogICAgICAgICAgICAicGFyYW1ldGVycyI6ewogICAgICAgICAgICAgICAgImlkIjp7CiAgICAgICAgICAgICAgICAgICAgImxvY2F0aW9uIjogICAidXJpIiwKICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiJHcm91cCB0byBkZWxldGUgYnkgSUQiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogICAgICAgImludGVnZXIiLAogICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6ICAgdHJ1ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiZ2V0X2dyb3VwIjogICAgewogICAgICAgICAgICAiaHR0cE1ldGhvZCI6IkdFVCIsCiAgICAgICAgICAgICJ1cmkiOiAgICAgICAiZ3JvdXBzL3tpZH0uanNvbiIsCiAgICAgICAgICAgICJzdW1tYXJ5IjogICAiR2V0IGEgdGlja2V0IiwKICAgICAgICAgICAgInBhcmFtZXRlcnMiOnsKICAgICAgICAgICAgICAgICJpZCI6ewogICAgICAgICAgICAgICAgICAgICJsb2NhdGlvbiI6ICAgInVyaSIsCiAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjoiR3JvdXAgdG8gZ2V0IGJ5IElEIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICAgICAgICJpbnRlZ2VyIiwKICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiAgIHRydWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInVwZGF0ZV9ncm91cCI6IHsKICAgICAgICAgICAgImh0dHBNZXRob2QiOiJQVVQiLAogICAgICAgICAgICAidXJpIjogICAgICAgImdyb3Vwcy97aWR9Lmpzb24iLAogICAgICAgICAgICAic3VtbWFyeSI6ICAgIlVwZGF0ZSBhIGdyb3VwIiwKICAgICAgICAgICAgInBhcmFtZXRlcnMiOnsKICAgICAgICAgICAgICAgICJpZCI6ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibG9jYXRpb24iOiAgICJ1cmkiLAogICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6Ikdyb3VwIHRvIHVwZGF0ZSBieSBJRCIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAgICAgICAiaW50ZWdlciIsCiAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogICB0cnVlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImRhdGEiOiAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAgICAgICAibG9jYXRpb24iOiAgICJib2R5IiwKICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiJHcm91cCBKU09OIiwKICAgICAgICAgICAgICAgICAgICAiZmlsdGVycyI6ICAgICJqc29uX2VuY29kZSIsCiAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogICB0cnVlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIkNvbnRlbnQtVHlwZSI6ewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgImxvY2F0aW9uIjoiaGVhZGVyIiwKICAgICAgICAgICAgICAgICAgICAic3RhdGljIjogICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQp9CmBgYAoKIyMjIEd1enpsZVxTZXJ2aWNlXERlc2NyaXB0aW9uXFNlcnZpY2VEZXNjcmlwdGlvbgoKQ29tbWFuZHMgYXJlIG5vdyBjYWxsZWQgT3BlcmF0aW9ucwoKKipCZWZvcmUqKgoKYGBgcGhwCnVzZSBHdXp6bGVcU2VydmljZVxEZXNjcmlwdGlvblxTZXJ2aWNlRGVzY3JpcHRpb247Cgokc2QgPSBuZXcgU2VydmljZURlc2NyaXB0aW9uKCk7CiRzZC0+Z2V0Q29tbWFuZHMoKTsgICAgIC8vIEByZXR1cm5zIEFwaUNvbW1hbmRJbnRlcmZhY2VbXQokc2QtPmhhc0NvbW1hbmQoJG5hbWUpOwokc2QtPmdldENvbW1hbmQoJG5hbWUpOyAvLyBAcmV0dXJucyBBcGlDb21tYW5kSW50ZXJmYWNlfG51bGwKJHNkLT5hZGRDb21tYW5kKCRjb21tYW5kKTsgLy8gQHBhcmFtIEFwaUNvbW1hbmRJbnRlcmZhY2UgJGNvbW1hbmQKYGBgCgoqKkFmdGVyKioKCmBgYHBocAp1c2UgR3V6emxlXFNlcnZpY2VcRGVzY3JpcHRpb25cU2VydmljZURlc2NyaXB0aW9uOwoKJHNkID0gbmV3IFNlcnZpY2VEZXNjcmlwdGlvbigpOwokc2QtPmdldE9wZXJhdGlvbnMoKTsgICAgICAgICAgIC8vIEByZXR1cm5zIE9wZXJhdGlvbkludGVyZmFjZVtdCiRzZC0+aGFzT3BlcmF0aW9uKCRuYW1lKTsKJHNkLT5nZXRPcGVyYXRpb24oJG5hbWUpOyAgICAgICAvLyBAcmV0dXJucyBPcGVyYXRpb25JbnRlcmZhY2V8bnVsbAokc2QtPmFkZE9wZXJhdGlvbigkb3BlcmF0aW9uKTsgIC8vIEBwYXJhbSBPcGVyYXRpb25JbnRlcmZhY2UgJG9wZXJhdGlvbgpgYGAKCiMjIyBHdXp6bGVcQ29tbW9uXEluZmxlY3Rpb25cSW5mbGVjdG9yCgpOYW1lc3BhY2UgaXMgbm93IGBHdXp6bGVcSW5mbGVjdGlvblxJbmZsZWN0b3JgCgojIyMgR3V6emxlXEh0dHBcUGx1Z2luCgpOYW1lc3BhY2UgaXMgbm93IGBHdXp6bGVcUGx1Z2luYC4gTWFueSBvdGhlciBjaGFuZ2VzIG9jY3VyIHdpdGhpbiB0aGlzIG5hbWVzcGFjZSBhbmQgYXJlIGRldGFpbGVkIGluIHRoZWlyIG93biBzZWN0aW9ucyBiZWxvdy4KCiMjIyBHdXp6bGVcSHR0cFxQbHVnaW5cTG9nUGx1Z2luIGFuZCBHdXp6bGVcQ29tbW9uXExvZwoKTm93IGBHdXp6bGVcUGx1Z2luXExvZ1xMb2dQbHVnaW5gIGFuZCBgR3V6emxlXExvZ2AgcmVzcGVjdGl2ZWx5LgoKKipCZWZvcmUqKgoKYGBgcGhwCnVzZSBHdXp6bGVcQ29tbW9uXExvZ1xDbG9zdXJlTG9nQWRhcHRlcjsKdXNlIEd1enpsZVxIdHRwXFBsdWdpblxMb2dQbHVnaW47CgovKiogQHZhciBcR3V6emxlXEh0dHBcQ2xpZW50ICovCiRjbGllbnQ7CgovLyAkdmVyYm9zaXR5IGlzIGFuIGludGVnZXIgaW5kaWNhdGluZyBkZXNpcmVkIG1lc3NhZ2UgdmVyYm9zaXR5IGxldmVsCiRjbGllbnQtPmFkZFN1YnNjcmliZXIobmV3IExvZ1BsdWdpbihuZXcgQ2xvc3VyZUxvZ0FkYXB0ZXIoZnVuY3Rpb24oJG0pIHsgZWNobyAkbTsgfSwgJHZlcmJvc2l0eSA9IExvZ1BsdWdpbjo6TE9HX1ZFUkJPU0UpOwpgYGAKCioqQWZ0ZXIqKgoKYGBgcGhwCnVzZSBHdXp6bGVcTG9nXENsb3N1cmVMb2dBZGFwdGVyOwp1c2UgR3V6emxlXExvZ1xNZXNzYWdlRm9ybWF0dGVyOwp1c2UgR3V6emxlXFBsdWdpblxMb2dcTG9nUGx1Z2luOwoKLyoqIEB2YXIgXEd1enpsZVxIdHRwXENsaWVudCAqLwokY2xpZW50OwoKLy8gJGZvcm1hdCBpcyBhIHN0cmluZyBpbmRpY2F0aW5nIGRlc2lyZWQgbWVzc2FnZSBmb3JtYXQgLS0gQHNlZSBNZXNzYWdlRm9ybWF0dGVyCiRjbGllbnQtPmFkZFN1YnNjcmliZXIobmV3IExvZ1BsdWdpbihuZXcgQ2xvc3VyZUxvZ0FkYXB0ZXIoZnVuY3Rpb24oJG0pIHsgZWNobyAkbTsgfSwgJGZvcm1hdCA9IE1lc3NhZ2VGb3JtYXR0ZXI6OkRFQlVHX0ZPUk1BVCk7CmBgYAoKIyMjIEd1enpsZVxIdHRwXFBsdWdpblxDdXJsQXV0aFBsdWdpbgoKTm93IGBHdXp6bGVcUGx1Z2luXEN1cmxBdXRoXEN1cmxBdXRoUGx1Z2luYC4KCiMjIyBHdXp6bGVcSHR0cFxQbHVnaW5cRXhwb25lbnRpYWxCYWNrb2ZmUGx1Z2luCgpOb3cgYEd1enpsZVxQbHVnaW5cQmFja29mZlxCYWNrb2ZmUGx1Z2luYCwgYW5kIG90aGVyIGNoYW5nZXMuCgoqKkJlZm9yZSoqCgpgYGBwaHAKdXNlIEd1enpsZVxIdHRwXFBsdWdpblxFeHBvbmVudGlhbEJhY2tvZmZQbHVnaW47CgokYmFja29mZlBsdWdpbiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmZQbHVnaW4oJG1heFJldHJpZXMsIGFycmF5X21lcmdlKAogICAgICAgIEV4cG9uZW50aWFsQmFja29mZlBsdWdpbjo6Z2V0RGVmYXVsdEZhaWx1cmVDb2RlcygpLCBhcnJheSg0MjkpCiAgICApKTsKCiRjbGllbnQtPmFkZFN1YnNjcmliZXIoJGJhY2tvZmZQbHVnaW4pOwpgYGAKCioqQWZ0ZXIqKgoKYGBgcGhwCnVzZSBHdXp6bGVcUGx1Z2luXEJhY2tvZmZcQmFja29mZlBsdWdpbjsKdXNlIEd1enpsZVxQbHVnaW5cQmFja29mZlxIdHRwQmFja29mZlN0cmF0ZWd5OwoKLy8gVXNlIGNvbnZlbmllbnQgZmFjdG9yeSBtZXRob2QgaW5zdGVhZCAtLSBzZWUgaW1wbGVtZW50YXRpb24gZm9yIGlkZWFzIG9mIHdoYXQKLy8geW91IGNhbiBkbyB3aXRoIGNoYWluaW5nIGJhY2tvZmYgc3RyYXRlZ2llcwokYmFja29mZlBsdWdpbiA9IEJhY2tvZmZQbHVnaW46OmdldEV4cG9uZW50aWFsQmFja29mZigkbWF4UmV0cmllcywgYXJyYXlfbWVyZ2UoCiAgICAgICAgSHR0cEJhY2tvZmZTdHJhdGVneTo6Z2V0RGVmYXVsdEZhaWx1cmVDb2RlcygpLCBhcnJheSg0MjkpCiAgICApKTsKJGNsaWVudC0+YWRkU3Vic2NyaWJlcigkYmFja29mZlBsdWdpbik7CmBgYAoKIyMjIEtub3duIElzc3VlcwoKIyMjIyBbQlVHXSBBY2NlcHQtRW5jb2RpbmcgaGVhZGVyIGJlaGF2aW9yIGNoYW5nZWQgdW5pbnRlbnRpb25hbGx5LgoKKFNlZSAjMjE3KSAoRml4ZWQgaW4gMDlkYWViOGM2NjZmYjQ0NDk5YTA2NDZkNjU1YThhZTM2NDU2NTc1ZSkKCkluIHZlcnNpb24gMi44IHNldHRpbmcgdGhlIGBBY2NlcHQtRW5jb2RpbmdgIGhlYWRlciB3b3VsZCBzZXQgdGhlIENVUkxPUFRfRU5DT0RJTkcgb3B0aW9uLCB3aGljaCBwZXJtaXR0ZWQgY1VSTCB0bwpwcm9wZXJseSBoYW5kbGUgZ3ppcC9kZWZsYXRlIGNvbXByZXNzZWQgcmVzcG9uc2VzIGZyb20gdGhlIHNlcnZlci4gSW4gdmVyc2lvbnMgYWZmZWN0ZWQgYnkgdGhpcyBidWcgdGhpcyBkb2VzIG5vdCBoYXBwZW4uClNlZSBpc3N1ZSAjMjE3IGZvciBhIHdvcmthcm91bmQsIG9yIHVzZSBhIHZlcnNpb24gY29udGFpbmluZyB0aGUgZml4Lgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDSEFOR0VMT0cKCgojIyAyLjUuMCAtIDIwMjYtMDYtMDIKCiMjIyBEZXByZWNhdGVkCgotIERlcHJlY2F0ZWQgcGFzc2luZyBub24taXRlcmFibGUgaW5wdXRzIHRvIHByb21pc2UgY29sbGVjdGlvbiBoZWxwZXJzIGFuZCBgRWFjaFByb21pc2VgCgoKIyMgMi40LjEgLSAyMDI2LTA1LTIwCgojIyMgRml4ZWQKCi0gRml4ZWQgY2FuY2VsbGluZyBzZXR0bGVkIGNvcm91dGluZXMgd2hlbiBubyBjdXJyZW50IHByb21pc2UgcmVtYWlucwoKCiMjIDIuNC4wIC0gMjAyNi0wNS0yMAoKIyMjIENoYW5nZWQKCi0gRW1wdHkgYEVhY2hQcm9taXNlYCBpbnN0YW5jZXMgbm93IHJlc29sdmUgd2hlbiB0aGUgdGFzayBxdWV1ZSBydW5zIHdpdGhvdXQgYHdhaXQoKWAKCgojIyAyLjMuMSAtIDIwMjYtMDUtMTkKCiMjIyBGaXhlZAoKLSBGaXhlZCBgVXRpbHM6Omluc3BlY3QoKWAgcmV0dXJuaW5nIHRoZSBpbnRlcm5hbCByZWFzb24gYXJyYXkgaW5zdGVhZCBvZiB0aGUgYEFnZ3JlZ2F0ZUV4Y2VwdGlvbmAKCgojIyAyLjMuMCAtIDIwMjUtMDgtMjIKCiMjIyBBZGRlZAoKLSBQSFAgOC41IHN1cHBvcnQKCgojIyAyLjIuMCAtIDIwMjUtMDMtMjcKCiMjIyBGaXhlZAoKLSBSZXZlcnQgIkFsbG93IGFuIGVtcHR5IEVhY2hQcm9taXNlIHRvIGJlIHJlc29sdmVkIGJ5IHJ1bm5pbmcgdGhlIHF1ZXVlIgoKCiMjIDIuMS4wIC0gMjAyNS0wMy0yNwoKIyMjIEFkZGVkCgotIEFsbG93IGFuIGVtcHR5IEVhY2hQcm9taXNlIHRvIGJlIHJlc29sdmVkIGJ5IHJ1bm5pbmcgdGhlIHF1ZXVlCgoKIyMgMi4wLjQgLSAyMDI0LTEwLTE3CgojIyMgRml4ZWQKCi0gT25jZSBzZXR0bGVkLCBkb24ndCBhbGxvdyBmdXJ0aGVyIHJlamVjdGlvbiBvZiBhZGRpdGlvbmFsIHByb21pc2VzCgoKIyMgMi4wLjMgLSAyMDI0LTA3LTE4CgojIyMgQ2hhbmdlZAoKLSBQSFAgOC40IHN1cHBvcnQKCgojIyAyLjAuMiAtIDIwMjMtMTItMDMKCiMjIyBDaGFuZ2VkCgotIFJlcGxhY2VkIGBjYWxsX3VzZXJfZnVuYypgIHdpdGggbmF0aXZlIGNhbGxzCgoKIyMgMi4wLjEgLSAyMDIzLTA4LTAzCgojIyMgQ2hhbmdlZAoKLSBQSFAgOC4zIHN1cHBvcnQKCgojIyAyLjAuMCAtIDIwMjMtMDUtMjEKCiMjIyBBZGRlZAoKLSBBZGRlZCBQSFAgNyB0eXBlIGhpbnRzCgojIyMgQ2hhbmdlZAoKLSBBbGwgcHJldmlvdXNseSBub24tZmluYWwgbm9uLWV4Y2VwdGlvbiBjbGFzc2VzIGhhdmUgYmVlbiBtYXJrZWQgYXMgc29mdC1maW5hbAoKIyMjIFJlbW92ZWQKCi0gRHJvcHBlZCBQSFAgPCA3LjIgc3VwcG9ydAotIEFsbCBmdW5jdGlvbnMgaW4gdGhlIGBHdXp6bGVIdHRwXFByb21pc2VgIG5hbWVzcGFjZQoKCiMjIDEuNS4zIC0gMjAyMy0wNS0yMQoKIyMjIENoYW5nZWQKCi0gUmVtb3ZlZCByZW1haW5pbmcgdXNhZ2Ugb2YgZGVwcmVjYXRlZCBmdW5jdGlvbnMKCgojIyAxLjUuMiAtIDIwMjItMDgtMDcKCiMjIyBDaGFuZ2VkCgotIE9mZmljaWFsbHkgc3VwcG9ydCBQSFAgOC4yCgoKIyMgMS41LjEgLSAyMDIxLTEwLTIyCgojIyMgRml4ZWQKCi0gUmV2ZXJ0ICJDYWxsIGhhbmRsZXIgd2hlbiB3YWl0aW5nIG9uIGZ1bGZpbGxlZC9yZWplY3RlZCBQcm9taXNlIgotIEZpeCBwb29sIG1lbW9yeSBsZWFrIHdoZW4gZW1wdHkgYXJyYXkgb2YgcHJvbWlzZXMgcHJvdmlkZWQKCgojIyAxLjUuMCAtIDIwMjEtMTAtMDcKCiMjIyBDaGFuZ2VkCgotIENhbGwgaGFuZGxlciB3aGVuIHdhaXRpbmcgb24gZnVsZmlsbGVkL3JlamVjdGVkIFByb21pc2UKLSBPZmZpY2lhbGx5IHN1cHBvcnQgUEhQIDguMQoKIyMjIEZpeGVkCgotIEZpeCBtYW51YWxseSBzZXR0bGUgcHJvbWlzZXMgZ2VuZXJhdGVkIHdpdGggYFV0aWxzOjp0YXNrYAoKCiMjIDEuNC4xIC0gMjAyMS0wMi0xOAoKIyMjIEZpeGVkCgotIEZpeGVkIGBlYWNoX2xpbWl0YCBza2lwcGluZyBwcm9taXNlcyBhbmQgZmFpbGluZwoKCiMjIDEuNC4wIC0gMjAyMC0wOS0zMAoKIyMjIEFkZGVkCgotIFN1cHBvcnQgZm9yIFBIUCA4Ci0gT3B0aW9uYWwgYCRyZWN1cnNpdmVgIGZsYWcgdG8gYGFsbGAKLSBSZXBsYWNlZCBmdW5jdGlvbnMgYnkgc3RhdGljIG1ldGhvZHMKCiMjIyBGaXhlZAoKLSBGaXggZW1wdHkgYGVhY2hgIHByb2Nlc3NpbmcKLSBGaXggcHJvbWlzZSBoYW5kbGluZyBmb3IgSXRlcmF0b3JzIG9mIG5vbi11bmlxdWUga2V5cwotIEZpeGVkIGBtZXRob2RfZXhpc3RzYCBjcmFzaGVzIG9uIFBIUCA4Ci0gTWVtb3J5IGxlYWsgb24gZXhjZXB0aW9ucwoKCiMjIDEuMy4xIC0gMjAxNi0xMi0yMAoKIyMjIEZpeGVkCgotIGB3YWl0KClgIGZvcmVpZ24gcHJvbWlzZSBjb21wYXRpYmlsaXR5CgoKIyMgMS4zLjAgLSAyMDE2LTExLTE4CgojIyMgQWRkZWQKCi0gQWRkcyBzdXBwb3J0IGZvciBjdXN0b20gdGFzayBxdWV1ZXMuCgojIyMgRml4ZWQKCi0gRml4ZWQgY29yb3V0aW5lIHByb21pc2UgbWVtb3J5IGxlYWsuCgoKIyMgMS4yLjAgLSAyMDE2LTA1LTE4CgojIyMgQ2hhbmdlZAoKLSBVcGRhdGUgdG8gbm93IGNhdGNoIGBcVGhyb3dhYmxlYCBvbiBQSFAgNysKCgojIyAxLjEuMCAtIDIwMTYtMDMtMDcKCiMjIyBDaGFuZ2VkCgotIFVwZGF0ZSBFYWNoUHJvbWlzZSB0byBwcmV2ZW50IHJlY3VycmluZyBvbiBhIGl0ZXJhdG9yIHdoZW4gYWR2YW5jaW5nLCBhcyB0aGlzCiAgY291bGQgdHJpZ2dlciBmYXRhbCBnZW5lcmF0b3IgZXJyb3JzLgotIFVwZGF0ZSBQcm9taXNlIHRvIGFsbG93IHJlY3Vyc2l2ZSB3YWl0aW5nIHdpdGhvdXQgdW53cmFwcGluZyBleGNlcHRpb25zLgoKCiMjIDEuMC4zIC0gMjAxNS0xMC0xNQoKIyMjIENoYW5nZWQKCi0gVXBkYXRlIEVhY2hQcm9taXNlIHRvIGltbWVkaWF0ZWx5IHJlc29sdmUgd2hlbiB0aGUgdW5kZXJseWluZyBwcm9taXNlIGl0ZXJhdG9yCiAgaXMgZW1wdHkuIFByZXZpb3VzbHksIHN1Y2ggYSBwcm9taXNlIHdvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIGl0cyBgd2FpdGAKICBmdW5jdGlvbiB3YXMgY2FsbGVkLgoKCiMjIDEuMC4yIC0gMjAxNS0wNS0xNQoKIyMjIENoYW5nZWQKCi0gQ29uZGl0aW9uYWxseSByZXF1aXJlIGZ1bmN0aW9ucy5waHAuCgoKIyMgMS4wLjEgLSAyMDE1LTA2LTI0CgojIyMgQ2hhbmdlZAoKLSBVcGRhdGluZyBFYWNoUHJvbWlzZSB0byBjYWxsIG5leHQgb24gdGhlIHVuZGVybHlpbmcgcHJvbWlzZSBpdGVyYXRvciBhcyBsYXRlCiAgYXMgcG9zc2libGUgdG8gZW5zdXJlIHRoYXQgZ2VuZXJhdG9ycyB0aGF0IGdlbmVyYXRlIG5ldyByZXF1ZXN0cyBiYXNlZCBvbgogIGNhbGxiYWNrcyBhcmUgbm90IGl0ZXJhdGVkIHVudGlsIGFmdGVyIGNhbGxiYWNrcyBhcmUgaW52b2tlZC4KCgojIyAxLjAuMCAtIDIwMTUtMDUtMTIKCi0gSW5pdGlhbCByZWxlYXNlCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9wcm9taXNlcyIsCiAgICAiZGVzY3JpcHRpb24iOiAiR3V6emxlIHByb21pc2VzIGxpYnJhcnkiLAogICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAicHJvbWlzZSIKICAgIF0sCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkdyYWhhbSBDYW1wYmVsbCIsCiAgICAgICAgICAgICJlbWFpbCI6ICJoZWxsb0BnamNhbXBiZWxsLmNvLnVrIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HcmFoYW1DYW1wYmVsbCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiTWljaGFlbCBEb3dsaW5nIiwKICAgICAgICAgICAgImVtYWlsIjogIm10ZG93bGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL210ZG93bGluZyIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiVG9iaWFzIE55aG9sbSIsCiAgICAgICAgICAgICJlbWFpbCI6ICJ0b2JpYXMubnlob2xtQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vTnlob2xtIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJUb2JpYXMgU2NodWx0emUiLAogICAgICAgICAgICAiZW1haWwiOiAid2VibWFzdGVyQHR1Ym8td29ybGQuZGUiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1RvYmlvbiIKICAgICAgICB9CiAgICBdLAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInBocCI6ICJeNy4yLjUgfHwgXjguMCIsCiAgICAgICAgInN5bWZvbnkvZGVwcmVjYXRpb24tY29udHJhY3RzIjogIl4yLjUgfHwgXjMuMCIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgImJhbWFybmkvY29tcG9zZXItYmluLXBsdWdpbiI6ICJeMS44LjIiLAogICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjguNS41MiB8fCBeOS42LjM0IgogICAgfSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJHdXp6bGVIdHRwXFxQcm9taXNlXFwiOiAic3JjLyIKICAgICAgICB9CiAgICB9LAogICAgImF1dG9sb2FkLWRldiI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJHdXp6bGVIdHRwXFxQcm9taXNlXFxUZXN0c1xcIjogInRlc3RzLyIKICAgICAgICB9CiAgICB9LAogICAgImNvbmZpZyI6IHsKICAgICAgICAiYWxsb3ctcGx1Z2lucyI6IHsKICAgICAgICAgICAgImJhbWFybmkvY29tcG9zZXItYmluLXBsdWdpbiI6IHRydWUKICAgICAgICB9LAogICAgICAgICJwcmVmZXJyZWQtaW5zdGFsbCI6ICJkaXN0IiwKICAgICAgICAic29ydC1wYWNrYWdlcyI6IHRydWUKICAgIH0sCiAgICAiZXh0cmEiOiB7CiAgICAgICAgImJhbWFybmktYmluIjogewogICAgICAgICAgICAiYmluLWxpbmtzIjogdHJ1ZSwKICAgICAgICAgICAgImZvcndhcmQtY29tbWFuZCI6IGZhbHNlCiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTUgTWljaGFlbCBEb3dsaW5nIDxtdGRvd2xpbmdAZ21haWwuY29tPgpDb3B5cmlnaHQgKGMpIDIwMTUgR3JhaGFtIENhbXBiZWxsIDxoZWxsb0BnamNhbXBiZWxsLmNvLnVrPgpDb3B5cmlnaHQgKGMpIDIwMTcgVG9iaWFzIFNjaHVsdHplIDx3ZWJtYXN0ZXJAdHViby13b3JsZC5kZT4KQ29weXJpZ2h0IChjKSAyMDIwIFRvYmlhcyBOeWhvbG0gPHRvYmlhcy5ueWhvbG1AZ21haWwuY29tPgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgphbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBHdXp6bGUgUHJvbWlzZXMKCltQcm9taXNlcy9BK10oaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8pIGltcGxlbWVudGF0aW9uIHRoYXQgaGFuZGxlcyBwcm9taXNlCmNoYWluaW5nIGFuZCByZXNvbHV0aW9uIGl0ZXJhdGl2ZWx5LCBhbGxvd2luZyBmb3IgImluZmluaXRlIiBwcm9taXNlIGNoYWluaW5nCndoaWxlIGtlZXBpbmcgdGhlIHN0YWNrIHNpemUgY29uc3RhbnQuIFJlYWQgW3RoaXMgYmxvZyBwb3N0XShodHRwczovL2Jsb2cuZG9tZW5pYy5tZS95b3VyZS1taXNzaW5nLXRoZS1wb2ludC1vZi1wcm9taXNlcy8pCmZvciBhIGdlbmVyYWwgaW50cm9kdWN0aW9uIHRvIHByb21pc2VzLgoKLSBbRmVhdHVyZXNdKCNmZWF0dXJlcykKLSBbUXVpY2sgc3RhcnRdKCNxdWljay1zdGFydCkKLSBbU3luY2hyb25vdXMgd2FpdF0oI3N5bmNocm9ub3VzLXdhaXQpCi0gW0NhbmNlbGxhdGlvbl0oI2NhbmNlbGxhdGlvbikKLSBbQVBJXSgjYXBpKQogIC0gW1Byb21pc2VdKCNwcm9taXNlKQogIC0gW0Z1bGZpbGxlZFByb21pc2VdKCNmdWxmaWxsZWRwcm9taXNlKQogIC0gW1JlamVjdGVkUHJvbWlzZV0oI3JlamVjdGVkcHJvbWlzZSkKLSBbUHJvbWlzZSBpbnRlcm9wXSgjcHJvbWlzZS1pbnRlcm9wKQotIFtJbXBsZW1lbnRhdGlvbiBub3Rlc10oI2ltcGxlbWVudGF0aW9uLW5vdGVzKQoKCiMjIEZlYXR1cmVzCgotIFtQcm9taXNlcy9BK10oaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8pIGltcGxlbWVudGF0aW9uLgotIFByb21pc2UgcmVzb2x1dGlvbiBhbmQgY2hhaW5pbmcgaXMgaGFuZGxlZCBpdGVyYXRpdmVseSwgYWxsb3dpbmcgZm9yCiAgImluZmluaXRlIiBwcm9taXNlIGNoYWluaW5nLgotIFByb21pc2VzIGhhdmUgYSBzeW5jaHJvbm91cyBgd2FpdGAgbWV0aG9kLgotIFByb21pc2VzIGNhbiBiZSBjYW5jZWxsZWQuCi0gV29ya3Mgd2l0aCBhbnkgb2JqZWN0IHRoYXQgaGFzIGEgYHRoZW5gIGZ1bmN0aW9uLgotIEMjIHN0eWxlIGFzeW5jL2F3YWl0IGNvcm91dGluZSBwcm9taXNlcyB1c2luZwogIGBHdXp6bGVIdHRwXFByb21pc2VcQ29yb3V0aW5lOjpvZigpYC4KCgojIyBJbnN0YWxsYXRpb24KCmBgYHNoZWxsCmNvbXBvc2VyIHJlcXVpcmUgZ3V6emxlaHR0cC9wcm9taXNlcwpgYGAKCgojIyBWZXJzaW9uIEd1aWRhbmNlCgp8IFZlcnNpb24gfCBTdGF0dXMgICAgICAgICAgICAgIHwgUEhQIFZlcnNpb24gIHwKfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18CnwgMS54ICAgICB8IFNlY3VyaXR5IGZpeGVzIG9ubHkgfCA+PTUuNSw8OC4zICAgfAp8IDIueCAgICAgfCBMYXRlc3QgICAgICAgICAgICAgIHwgPj03LjIuNSw8OC42IHwKCgojIyBRdWljayBTdGFydAoKQSAqcHJvbWlzZSogcmVwcmVzZW50cyB0aGUgZXZlbnR1YWwgcmVzdWx0IG9mIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb24uIFRoZQpwcmltYXJ5IHdheSBvZiBpbnRlcmFjdGluZyB3aXRoIGEgcHJvbWlzZSBpcyB0aHJvdWdoIGl0cyBgdGhlbmAgbWV0aG9kLCB3aGljaApyZWdpc3RlcnMgY2FsbGJhY2tzIHRvIHJlY2VpdmUgZWl0aGVyIGEgcHJvbWlzZSdzIGV2ZW50dWFsIHZhbHVlIG9yIHRoZSByZWFzb24Kd2h5IHRoZSBwcm9taXNlIGNhbm5vdCBiZSBmdWxmaWxsZWQuCgojIyMgQ2FsbGJhY2tzCgpDYWxsYmFja3MgYXJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgYHRoZW5gIG1ldGhvZCBieSBwcm92aWRpbmcgYW4gb3B0aW9uYWwKYCRvbkZ1bGZpbGxlZGAgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgYCRvblJlamVjdGVkYCBmdW5jdGlvbi4KCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlOwoKJHByb21pc2UgPSBuZXcgUHJvbWlzZSgpOwokcHJvbWlzZS0+dGhlbigKICAgIC8vICRvbkZ1bGZpbGxlZAogICAgZnVuY3Rpb24gKCR2YWx1ZSkgewogICAgICAgIGVjaG8gJ1RoZSBwcm9taXNlIHdhcyBmdWxmaWxsZWQuJzsKICAgIH0sCiAgICAvLyAkb25SZWplY3RlZAogICAgZnVuY3Rpb24gKCRyZWFzb24pIHsKICAgICAgICBlY2hvICdUaGUgcHJvbWlzZSB3YXMgcmVqZWN0ZWQuJzsKICAgIH0KKTsKYGBgCgoqUmVzb2x2aW5nKiBhIHByb21pc2UgbWVhbnMgdGhhdCB5b3UgZWl0aGVyIGZ1bGZpbGwgYSBwcm9taXNlIHdpdGggYSAqdmFsdWUqIG9yCnJlamVjdCBhIHByb21pc2Ugd2l0aCBhICpyZWFzb24qLiBSZXNvbHZpbmcgYSBwcm9taXNlIHRyaWdnZXJzIGNhbGxiYWNrcwpyZWdpc3RlcmVkIHdpdGggdGhlIHByb21pc2UncyBgdGhlbmAgbWV0aG9kLiBUaGVzZSBjYWxsYmFja3MgYXJlIHRyaWdnZXJlZApvbmx5IG9uY2UgYW5kIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgYWRkZWQuCgojIyMgUmVzb2x2aW5nIGEgUHJvbWlzZQoKUHJvbWlzZXMgYXJlIGZ1bGZpbGxlZCB1c2luZyB0aGUgYHJlc29sdmUoJHZhbHVlKWAgbWV0aG9kLiBSZXNvbHZpbmcgYSBwcm9taXNlCndpdGggYW55IHZhbHVlIG90aGVyIHRoYW4gYSBgR3V6emxlSHR0cFxQcm9taXNlXFJlamVjdGVkUHJvbWlzZWAgd2lsbCB0cmlnZ2VyCmFsbCBvZiB0aGUgb25GdWxmaWxsZWQgY2FsbGJhY2tzIChyZXNvbHZpbmcgYSBwcm9taXNlIHdpdGggYSByZWplY3RlZCBwcm9taXNlCndpbGwgcmVqZWN0IHRoZSBwcm9taXNlIGFuZCB0cmlnZ2VyIHRoZSBgJG9uUmVqZWN0ZWRgIGNhbGxiYWNrcykuCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlOwoKJHByb21pc2UgPSBuZXcgUHJvbWlzZSgpOwokcHJvbWlzZQogICAgLT50aGVuKGZ1bmN0aW9uICgkdmFsdWUpIHsKICAgICAgICAvLyBSZXR1cm4gYSB2YWx1ZSBhbmQgZG9uJ3QgYnJlYWsgdGhlIGNoYWluCiAgICAgICAgcmV0dXJuICJIZWxsbywgIiAuICR2YWx1ZTsKICAgIH0pCiAgICAvLyBUaGlzIHRoZW4gaXMgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGZpcnN0IHRoZW4gYW5kIHJlY2VpdmVzIHRoZSB2YWx1ZQogICAgLy8gcmV0dXJuZWQgZnJvbSB0aGUgZmlyc3QgdGhlbi4KICAgIC0+dGhlbihmdW5jdGlvbiAoJHZhbHVlKSB7CiAgICAgICAgZWNobyAkdmFsdWU7CiAgICB9KTsKCi8vIFJlc29sdmluZyB0aGUgcHJvbWlzZSB0cmlnZ2VycyB0aGUgJG9uRnVsZmlsbGVkIGNhbGxiYWNrcyBhbmQgb3V0cHV0cwovLyAiSGVsbG8sIHJlYWRlci4iCiRwcm9taXNlLT5yZXNvbHZlKCdyZWFkZXIuJyk7CmBgYAoKIyMjIFByb21pc2UgRm9yd2FyZGluZwoKUHJvbWlzZXMgY2FuIGJlIGNoYWluZWQgb25lIGFmdGVyIHRoZSBvdGhlci4gRWFjaCB0aGVuIGluIHRoZSBjaGFpbiBpcyBhIG5ldwpwcm9taXNlLiBUaGUgcmV0dXJuIHZhbHVlIG9mIGEgcHJvbWlzZSBpcyB3aGF0J3MgZm9yd2FyZGVkIHRvIHRoZSBuZXh0CnByb21pc2UgaW4gdGhlIGNoYWluLiBSZXR1cm5pbmcgYSBwcm9taXNlIGluIGEgYHRoZW5gIGNhbGxiYWNrIHdpbGwgY2F1c2UgdGhlCnN1YnNlcXVlbnQgcHJvbWlzZXMgaW4gdGhlIGNoYWluIHRvIG9ubHkgYmUgZnVsZmlsbGVkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UKaGFzIGJlZW4gZnVsZmlsbGVkLiBUaGUgbmV4dCBwcm9taXNlIGluIHRoZSBjaGFpbiB3aWxsIGJlIGludm9rZWQgd2l0aCB0aGUKcmVzb2x2ZWQgdmFsdWUgb2YgdGhlIHByb21pc2UuCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlOwoKJHByb21pc2UgPSBuZXcgUHJvbWlzZSgpOwokbmV4dFByb21pc2UgPSBuZXcgUHJvbWlzZSgpOwoKJHByb21pc2UKICAgIC0+dGhlbihmdW5jdGlvbiAoJHZhbHVlKSB1c2UgKCRuZXh0UHJvbWlzZSkgewogICAgICAgIGVjaG8gJHZhbHVlOwogICAgICAgIHJldHVybiAkbmV4dFByb21pc2U7CiAgICB9KQogICAgLT50aGVuKGZ1bmN0aW9uICgkdmFsdWUpIHsKICAgICAgICBlY2hvICR2YWx1ZTsKICAgIH0pOwoKLy8gVHJpZ2dlcnMgdGhlIGZpcnN0IGNhbGxiYWNrIGFuZCBvdXRwdXRzICJBIgokcHJvbWlzZS0+cmVzb2x2ZSgnQScpOwovLyBUcmlnZ2VycyB0aGUgc2Vjb25kIGNhbGxiYWNrIGFuZCBvdXRwdXRzICJCIgokbmV4dFByb21pc2UtPnJlc29sdmUoJ0InKTsKYGBgCgojIyMgUHJvbWlzZSBSZWplY3Rpb24KCldoZW4gYSBwcm9taXNlIGlzIHJlamVjdGVkLCB0aGUgYCRvblJlamVjdGVkYCBjYWxsYmFja3MgYXJlIGludm9rZWQgd2l0aCB0aGUKcmVqZWN0aW9uIHJlYXNvbi4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2U7CgokcHJvbWlzZSA9IG5ldyBQcm9taXNlKCk7CiRwcm9taXNlLT50aGVuKG51bGwsIGZ1bmN0aW9uICgkcmVhc29uKSB7CiAgICBlY2hvICRyZWFzb247Cn0pOwoKJHByb21pc2UtPnJlamVjdCgnRXJyb3IhJyk7Ci8vIE91dHB1dHMgIkVycm9yISIKYGBgCgojIyMgUmVqZWN0aW9uIEZvcndhcmRpbmcKCklmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gaW4gYW4gYCRvblJlamVjdGVkYCBjYWxsYmFjaywgc3Vic2VxdWVudApgJG9uUmVqZWN0ZWRgIGNhbGxiYWNrcyBhcmUgaW52b2tlZCB3aXRoIHRoZSB0aHJvd24gZXhjZXB0aW9uIGFzIHRoZSByZWFzb24uCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlOwoKJHByb21pc2UgPSBuZXcgUHJvbWlzZSgpOwokcHJvbWlzZS0+dGhlbihudWxsLCBmdW5jdGlvbiAoJHJlYXNvbikgewogICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkcmVhc29uKTsKfSktPnRoZW4obnVsbCwgZnVuY3Rpb24gKCRyZWFzb24pIHsKICAgIGFzc2VydCgkcmVhc29uLT5nZXRNZXNzYWdlKCkgPT09ICdFcnJvciEnKTsKfSk7CgokcHJvbWlzZS0+cmVqZWN0KCdFcnJvciEnKTsKYGBgCgpZb3UgY2FuIGFsc28gZm9yd2FyZCBhIHJlamVjdGlvbiBkb3duIHRoZSBwcm9taXNlIGNoYWluIGJ5IHJldHVybmluZyBhCmBHdXp6bGVIdHRwXFByb21pc2VcUmVqZWN0ZWRQcm9taXNlYCBpbiBlaXRoZXIgYW4gYCRvbkZ1bGZpbGxlZGAgb3IKYCRvblJlamVjdGVkYCBjYWxsYmFjay4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2U7CnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUmVqZWN0ZWRQcm9taXNlOwoKJHByb21pc2UgPSBuZXcgUHJvbWlzZSgpOwokcHJvbWlzZS0+dGhlbihudWxsLCBmdW5jdGlvbiAoJHJlYXNvbikgewogICAgcmV0dXJuIG5ldyBSZWplY3RlZFByb21pc2UoJHJlYXNvbik7Cn0pLT50aGVuKG51bGwsIGZ1bmN0aW9uICgkcmVhc29uKSB7CiAgICBhc3NlcnQoJHJlYXNvbiA9PT0gJ0Vycm9yIScpOwp9KTsKCiRwcm9taXNlLT5yZWplY3QoJ0Vycm9yIScpOwpgYGAKCklmIGFuIGV4Y2VwdGlvbiBpcyBub3QgdGhyb3duIGluIGEgYCRvblJlamVjdGVkYCBjYWxsYmFjayBhbmQgdGhlIGNhbGxiYWNrCmRvZXMgbm90IHJldHVybiBhIHJlamVjdGVkIHByb21pc2UsIGRvd25zdHJlYW0gYCRvbkZ1bGZpbGxlZGAgY2FsbGJhY2tzIGFyZQppbnZva2VkIHVzaW5nIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIHRoZSBgJG9uUmVqZWN0ZWRgIGNhbGxiYWNrLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzZTsKCiRwcm9taXNlID0gbmV3IFByb21pc2UoKTsKJHByb21pc2UKICAgIC0+dGhlbihudWxsLCBmdW5jdGlvbiAoJHJlYXNvbikgewogICAgICAgIHJldHVybiAiSXQncyBvayI7CiAgICB9KQogICAgLT50aGVuKGZ1bmN0aW9uICgkdmFsdWUpIHsKICAgICAgICBhc3NlcnQoJHZhbHVlID09PSAiSXQncyBvayIpOwogICAgfSk7CgokcHJvbWlzZS0+cmVqZWN0KCdFcnJvciEnKTsKYGBgCgoKIyMgU3luY2hyb25vdXMgV2FpdAoKWW91IGNhbiBzeW5jaHJvbm91c2x5IGZvcmNlIHByb21pc2VzIHRvIGNvbXBsZXRlIHVzaW5nIGEgcHJvbWlzZSdzIGB3YWl0YAptZXRob2QuIFdoZW4gY3JlYXRpbmcgYSBwcm9taXNlLCB5b3UgY2FuIHByb3ZpZGUgYSB3YWl0IGZ1bmN0aW9uIHRoYXQgaXMgdXNlZAp0byBzeW5jaHJvbm91c2x5IGZvcmNlIGEgcHJvbWlzZSB0byBjb21wbGV0ZS4gV2hlbiBhIHdhaXQgZnVuY3Rpb24gaXMgaW52b2tlZAppdCBpcyBleHBlY3RlZCB0byBkZWxpdmVyIGEgdmFsdWUgdG8gdGhlIHByb21pc2Ugb3IgcmVqZWN0IHRoZSBwcm9taXNlLiBJZiB0aGUKd2FpdCBmdW5jdGlvbiBkb2VzIG5vdCBkZWxpdmVyIGEgdmFsdWUsIHRoZW4gYW4gZXhjZXB0aW9uIGlzIHRocm93bi4gVGhlIHdhaXQKZnVuY3Rpb24gcHJvdmlkZWQgdG8gYSBwcm9taXNlIGNvbnN0cnVjdG9yIGlzIGludm9rZWQgd2hlbiB0aGUgYHdhaXRgIGZ1bmN0aW9uCm9mIHRoZSBwcm9taXNlIGlzIGNhbGxlZC4KCmBgYHBocAokcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uICgpIHVzZSAoJiRwcm9taXNlKSB7CiAgICAkcHJvbWlzZS0+cmVzb2x2ZSgnZm9vJyk7Cn0pOwoKLy8gQ2FsbGluZyB3YWl0IHdpbGwgcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgcHJvbWlzZS4KZWNobyAkcHJvbWlzZS0+d2FpdCgpOyAvLyBvdXRwdXRzICJmb28iCmBgYAoKSWYgYSB0aHJvd2FibGUgaXMgZW5jb3VudGVyZWQgd2hpbGUgaW52b2tpbmcgdGhlIHdhaXQgZnVuY3Rpb24gb2YgYSBwcm9taXNlLAp0aGUgcHJvbWlzZSBpcyByZWplY3RlZCB3aXRoIHRoZSB0aHJvd2FibGUgYW5kIHRoZSB0aHJvd2FibGUgaXMgdGhyb3duLgoKYGBgcGhwCiRwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKCkgdXNlICgmJHByb21pc2UpIHsKICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2ZvbycpOwp9KTsKCiRwcm9taXNlLT53YWl0KCk7IC8vIHRocm93cyB0aGUgZXhjZXB0aW9uLgpgYGAKCkNhbGxpbmcgYHdhaXRgIG9uIGEgcHJvbWlzZSB0aGF0IGhhcyBiZWVuIGZ1bGZpbGxlZCB3aWxsIG5vdCB0cmlnZ2VyIHRoZSB3YWl0CmZ1bmN0aW9uLiBJdCB3aWxsIHNpbXBseSByZXR1cm4gdGhlIHByZXZpb3VzbHkgcmVzb2x2ZWQgdmFsdWUuCgpgYGBwaHAKJHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAoKSB7IGRpZSgndGhpcyBpcyBub3QgY2FsbGVkIScpOyB9KTsKJHByb21pc2UtPnJlc29sdmUoJ2ZvbycpOwplY2hvICRwcm9taXNlLT53YWl0KCk7IC8vIG91dHB1dHMgImZvbyIKYGBgCgpDYWxsaW5nIGB3YWl0YCBvbiBhIHByb21pc2UgdGhhdCBoYXMgYmVlbiByZWplY3RlZCB3aWxsIHRocm93LiBJZiB0aGUgcmVqZWN0aW9uCnJlYXNvbiBpcyBhbiBpbnN0YW5jZSBvZiBgXFRocm93YWJsZWAgdGhlIHJlYXNvbiBpcyB0aHJvd24uCk90aGVyd2lzZSwgYSBgR3V6emxlSHR0cFxQcm9taXNlXFJlamVjdGlvbkV4Y2VwdGlvbmAgaXMgdGhyb3duIGFuZCB0aGUgcmVhc29uCmNhbiBiZSBvYnRhaW5lZCBieSBjYWxsaW5nIHRoZSBgZ2V0UmVhc29uYCBtZXRob2Qgb2YgdGhlIGV4Y2VwdGlvbi4KCmBgYHBocAokcHJvbWlzZSA9IG5ldyBQcm9taXNlKCk7CiRwcm9taXNlLT5yZWplY3QoJ2ZvbycpOwokcHJvbWlzZS0+d2FpdCgpOwpgYGAKCj4gUEhQIEZhdGFsIGVycm9yOiAgVW5jYXVnaHQgZXhjZXB0aW9uICdHdXp6bGVIdHRwXFByb21pc2VcUmVqZWN0aW9uRXhjZXB0aW9uJyB3aXRoIG1lc3NhZ2UgJ1RoZSBwcm9taXNlIHdhcyByZWplY3RlZCB3aXRoIHZhbHVlOiBmb28nCgojIyMgVW53cmFwcGluZyBhIFByb21pc2UKCldoZW4gc3luY2hyb25vdXNseSB3YWl0aW5nIG9uIGEgcHJvbWlzZSwgeW91IGFyZSBqb2luaW5nIHRoZSBzdGF0ZSBvZiB0aGUKcHJvbWlzZSBpbnRvIHRoZSBjdXJyZW50IHN0YXRlIG9mIGV4ZWN1dGlvbiAoaS5lLiwgcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUKcHJvbWlzZSBpZiBpdCB3YXMgZnVsZmlsbGVkIG9yIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBpdCB3YXMgcmVqZWN0ZWQpLiBUaGlzIGlzCmNhbGxlZCAidW53cmFwcGluZyIgdGhlIHByb21pc2UuIFdhaXRpbmcgb24gYSBwcm9taXNlIHdpbGwgYnkgZGVmYXVsdCB1bndyYXAKdGhlIHByb21pc2Ugc3RhdGUuCgpZb3UgY2FuIGZvcmNlIGEgcHJvbWlzZSB0byByZXNvbHZlIGFuZCAqbm90KiB1bndyYXAgdGhlIHN0YXRlIG9mIHRoZSBwcm9taXNlCmJ5IHBhc3NpbmcgYGZhbHNlYCB0byB0aGUgZmlyc3QgYXJndW1lbnQgb2YgdGhlIGB3YWl0YCBmdW5jdGlvbjoKCmBgYHBocAokcHJvbWlzZSA9IG5ldyBQcm9taXNlKCk7CiRwcm9taXNlLT5yZWplY3QoJ2ZvbycpOwovLyBUaGlzIHdpbGwgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4gSXQgc2ltcGx5IGVuc3VyZXMgdGhlIHByb21pc2UgaGFzCi8vIGJlZW4gcmVzb2x2ZWQuCiRwcm9taXNlLT53YWl0KGZhbHNlKTsKYGBgCgpXaGVuIHVud3JhcHBpbmcgYSBwcm9taXNlLCB0aGUgcmVzb2x2ZWQgdmFsdWUgb2YgdGhlIHByb21pc2Ugd2lsbCBiZSB3YWl0ZWQKdXBvbiB1bnRpbCB0aGUgdW53cmFwcGVkIHZhbHVlIGlzIG5vdCBhIHByb21pc2UuIFRoaXMgbWVhbnMgdGhhdCBpZiB5b3UgcmVzb2x2ZQpwcm9taXNlIEEgd2l0aCBhIHByb21pc2UgQiBhbmQgdW53cmFwIHByb21pc2UgQSwgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZQp3YWl0IGZ1bmN0aW9uIHdpbGwgYmUgdGhlIHZhbHVlIGRlbGl2ZXJlZCB0byBwcm9taXNlIEIuCgoqKk5vdGUqKjogd2hlbiB5b3UgZG8gbm90IHVud3JhcCB0aGUgcHJvbWlzZSwgbm8gdmFsdWUgaXMgcmV0dXJuZWQuCgoKIyMgQ2FuY2VsbGF0aW9uCgpZb3UgY2FuIGNhbmNlbCBhIHByb21pc2UgdGhhdCBoYXMgbm90IHlldCBiZWVuIGZ1bGZpbGxlZCB1c2luZyB0aGUgYGNhbmNlbCgpYAptZXRob2Qgb2YgYSBwcm9taXNlLiBXaGVuIGNyZWF0aW5nIGEgcHJvbWlzZSB5b3UgY2FuIHByb3ZpZGUgYW4gb3B0aW9uYWwKY2FuY2VsIGZ1bmN0aW9uIHRoYXQgd2hlbiBpbnZva2VkIGNhbmNlbHMgdGhlIGFjdGlvbiBvZiBjb21wdXRpbmcgYSByZXNvbHV0aW9uCm9mIHRoZSBwcm9taXNlLgoKCiMjIEFQSQoKIyMjIFByb21pc2UKCldoZW4gY3JlYXRpbmcgYSBwcm9taXNlIG9iamVjdCwgeW91IGNhbiBwcm92aWRlIGFuIG9wdGlvbmFsIGAkd2FpdEZuYCBhbmQKYCRjYW5jZWxGbmAuIGAkd2FpdEZuYCBpcyBhIGZ1bmN0aW9uIHRoYXQgaXMgaW52b2tlZCB3aXRoIG5vIGFyZ3VtZW50cyBhbmQgaXMKZXhwZWN0ZWQgdG8gcmVzb2x2ZSB0aGUgcHJvbWlzZS4gYCRjYW5jZWxGbmAgaXMgYSBmdW5jdGlvbiB3aXRoIG5vIGFyZ3VtZW50cwp0aGF0IGlzIGV4cGVjdGVkIHRvIGNhbmNlbCB0aGUgY29tcHV0YXRpb24gb2YgYSBwcm9taXNlLiBJdCBpcyBpbnZva2VkIHdoZW4gdGhlCmBjYW5jZWwoKWAgbWV0aG9kIG9mIGEgcHJvbWlzZSBpcyBjYWxsZWQuCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlOwoKJHByb21pc2UgPSBuZXcgUHJvbWlzZSgKICAgIGZ1bmN0aW9uICgpIHVzZSAoJiRwcm9taXNlKSB7CiAgICAgICAgJHByb21pc2UtPnJlc29sdmUoJ3dhaXRlZCcpOwogICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAvLyBkbyBzb21ldGhpbmcgdGhhdCB3aWxsIGNhbmNlbCB0aGUgcHJvbWlzZSBjb21wdXRhdGlvbiAoZS5nLiwgY2xvc2UKICAgICAgICAvLyBhIHNvY2tldCwgY2FuY2VsIGEgZGF0YWJhc2UgcXVlcnksIGV0Yy4uLikKICAgIH0KKTsKCmFzc2VydCgnd2FpdGVkJyA9PT0gJHByb21pc2UtPndhaXQoKSk7CmBgYAoKQSBwcm9taXNlIGhhcyB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CgotIGB0aGVuKD9jYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsLCA/Y2FsbGFibGUgJG9uUmVqZWN0ZWQgPSBudWxsKSA6IFByb21pc2VJbnRlcmZhY2VgCgogIEFwcGVuZHMgZnVsZmlsbG1lbnQgYW5kIHJlamVjdGlvbiBoYW5kbGVycyB0byB0aGUgcHJvbWlzZSwgYW5kIHJldHVybnMgYSBuZXcKICBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjYWxsZWQgaGFuZGxlci4gSWYgYSBoYW5kbGVyIGlzCiAgb21pdHRlZCwgdGhlIG9yaWdpbmFsIGZ1bGZpbGxtZW50IHZhbHVlIG9yIHJlamVjdGlvbiByZWFzb24gaXMgZm9yd2FyZGVkLgoKLSBgb3RoZXJ3aXNlKGNhbGxhYmxlICRvblJlamVjdGVkKSA6IFByb21pc2VJbnRlcmZhY2VgCiAgCiAgQXBwZW5kcyBhIHJlamVjdGlvbiBoYW5kbGVyIGNhbGxiYWNrIHRvIHRoZSBwcm9taXNlLCBhbmQgcmV0dXJucyBhIG5ldyBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjYWxsYmFjayBpZiBpdCBpcyBjYWxsZWQsIG9yIHRvIGl0cyBvcmlnaW5hbCBmdWxmaWxsbWVudCB2YWx1ZSBpZiB0aGUgcHJvbWlzZSBpcyBpbnN0ZWFkIGZ1bGZpbGxlZC4KCi0gYHdhaXQoJHVud3JhcCA9IHRydWUpIDogbWl4ZWRgCgogIFN5bmNocm9ub3VzbHkgd2FpdHMgb24gdGhlIHByb21pc2UgdG8gY29tcGxldGUuCiAgCiAgYCR1bndyYXBgIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHRoZSB2YWx1ZSBvZiB0aGUgcHJvbWlzZSBpcyByZXR1cm5lZCBmb3IgYQogIGZ1bGZpbGxlZCBwcm9taXNlIG9yIGlmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQuCiAgVGhpcyBpcyBzZXQgdG8gYHRydWVgIGJ5IGRlZmF1bHQuCgotIGBjYW5jZWwoKWAKCiAgQXR0ZW1wdHMgdG8gY2FuY2VsIHRoZSBwcm9taXNlIGlmIHBvc3NpYmxlLiBUaGUgcHJvbWlzZSBiZWluZyBjYW5jZWxsZWQgYW5kCiAgdGhlIHBhcmVudCBtb3N0IGFuY2VzdG9yIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiByZXNvbHZlZCB3aWxsIGFsc28gYmUKICBjYW5jZWxsZWQuIEFueSBwcm9taXNlcyB3YWl0aW5nIG9uIHRoZSBjYW5jZWxsZWQgcHJvbWlzZSB0byByZXNvbHZlIHdpbGwgYWxzbwogIGJlIGNhbmNlbGxlZC4KCi0gYGdldFN0YXRlKCkgOiBzdHJpbmdgCgogIFJldHVybnMgdGhlIHN0YXRlIG9mIHRoZSBwcm9taXNlLiBPbmUgb2YgYHBlbmRpbmdgLCBgZnVsZmlsbGVkYCwgb3IKICBgcmVqZWN0ZWRgLgoKLSBgcmVzb2x2ZSgkdmFsdWUpYAoKICBGdWxmaWxscyB0aGUgcHJvbWlzZSB3aXRoIHRoZSBnaXZlbiBgJHZhbHVlYC4KCi0gYHJlamVjdCgkcmVhc29uKWAKCiAgUmVqZWN0cyB0aGUgcHJvbWlzZSB3aXRoIHRoZSBnaXZlbiBgJHJlYXNvbmAuCgoKIyMjIEZ1bGZpbGxlZFByb21pc2UKCkEgZnVsZmlsbGVkIHByb21pc2UgY2FuIGJlIGNyZWF0ZWQgdG8gcmVwcmVzZW50IGEgcHJvbWlzZSB0aGF0IGhhcyBiZWVuCmZ1bGZpbGxlZC4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQcm9taXNlXEZ1bGZpbGxlZFByb21pc2U7CgokcHJvbWlzZSA9IG5ldyBGdWxmaWxsZWRQcm9taXNlKCd2YWx1ZScpOwoKLy8gRnVsZmlsbGVkIGNhbGxiYWNrcyBhcmUgaW1tZWRpYXRlbHkgaW52b2tlZC4KJHByb21pc2UtPnRoZW4oZnVuY3Rpb24gKCR2YWx1ZSkgewogICAgZWNobyAkdmFsdWU7Cn0pOwpgYGAKCgojIyMgUmVqZWN0ZWRQcm9taXNlCgpBIHJlamVjdGVkIHByb21pc2UgY2FuIGJlIGNyZWF0ZWQgdG8gcmVwcmVzZW50IGEgcHJvbWlzZSB0aGF0IGhhcyBiZWVuCnJlamVjdGVkLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUmVqZWN0ZWRQcm9taXNlOwoKJHByb21pc2UgPSBuZXcgUmVqZWN0ZWRQcm9taXNlKCdFcnJvcicpOwoKLy8gUmVqZWN0ZWQgY2FsbGJhY2tzIGFyZSBpbW1lZGlhdGVseSBpbnZva2VkLgokcHJvbWlzZS0+dGhlbihudWxsLCBmdW5jdGlvbiAoJHJlYXNvbikgewogICAgZWNobyAkcmVhc29uOwp9KTsKYGBgCgoKIyMgUHJvbWlzZSBJbnRlcm9wZXJhYmlsaXR5CgpUaGlzIGxpYnJhcnkgd29ya3Mgd2l0aCBmb3JlaWduIHByb21pc2VzIHRoYXQgaGF2ZSBhIGB0aGVuYCBtZXRob2QuIFRoaXMgbWVhbnMKeW91IGNhbiB1c2UgR3V6emxlIHByb21pc2VzIHdpdGggW1JlYWN0IHByb21pc2VzXShodHRwczovL2dpdGh1Yi5jb20vcmVhY3RwaHAvcHJvbWlzZSkKZm9yIGV4YW1wbGUuIFdoZW4gYSBmb3JlaWduIHByb21pc2UgaXMgcmV0dXJuZWQgaW5zaWRlIG9mIGEgdGhlbiBtZXRob2QKY2FsbGJhY2ssIHByb21pc2UgcmVzb2x1dGlvbiB3aWxsIG9jY3VyIHJlY3Vyc2l2ZWx5LgoKYGBgcGhwCi8vIENyZWF0ZSBhIFJlYWN0IHByb21pc2UKJGRlZmVycmVkID0gbmV3IFJlYWN0XFByb21pc2VcRGVmZXJyZWQoKTsKJHJlYWN0UHJvbWlzZSA9ICRkZWZlcnJlZC0+cHJvbWlzZSgpOwoKLy8gQ3JlYXRlIGEgR3V6emxlIHByb21pc2UgdGhhdCBpcyBmdWxmaWxsZWQgd2l0aCBhIFJlYWN0IHByb21pc2UuCiRndXp6bGVQcm9taXNlID0gbmV3IEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlKCk7CiRndXp6bGVQcm9taXNlLT50aGVuKGZ1bmN0aW9uICgkdmFsdWUpIHVzZSAoJHJlYWN0UHJvbWlzZSkgewogICAgLy8gRG8gc29tZXRoaW5nIHNvbWV0aGluZyB3aXRoIHRoZSB2YWx1ZS4uLgogICAgLy8gUmV0dXJuIHRoZSBSZWFjdCBwcm9taXNlCiAgICByZXR1cm4gJHJlYWN0UHJvbWlzZTsKfSk7CmBgYAoKUGxlYXNlIG5vdGUgdGhhdCB3YWl0IGFuZCBjYW5jZWwgY2hhaW5pbmcgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIHdoZW4gZm9yd2FyZGluZwphIGZvcmVpZ24gcHJvbWlzZS4gWW91IHdpbGwgbmVlZCB0byB3cmFwIGEgdGhpcmQtcGFydHkgcHJvbWlzZSB3aXRoIGEgR3V6emxlCnByb21pc2UgaW4gb3JkZXIgdG8gdXRpbGl6ZSB3YWl0IGFuZCBjYW5jZWwgZnVuY3Rpb25zIHdpdGggZm9yZWlnbiBwcm9taXNlcy4KCgojIyMgRXZlbnQgTG9vcCBJbnRlZ3JhdGlvbgoKSW4gb3JkZXIgdG8ga2VlcCB0aGUgc3RhY2sgc2l6ZSBjb25zdGFudCwgR3V6emxlIHByb21pc2VzIGFyZSByZXNvbHZlZAphc3luY2hyb25vdXNseSB1c2luZyBhIHRhc2sgcXVldWUuIFdoZW4gd2FpdGluZyBvbiBwcm9taXNlcyBzeW5jaHJvbm91c2x5LCB0aGUKdGFzayBxdWV1ZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcnVuIHRvIGVuc3VyZSB0aGF0IHRoZSBibG9ja2luZyBwcm9taXNlIGFuZAphbnkgZm9yd2FyZGVkIHByb21pc2VzIGFyZSByZXNvbHZlZC4gV2hlbiB1c2luZyBwcm9taXNlcyBhc3luY2hyb25vdXNseSBpbiBhbgpldmVudCBsb29wLCB5b3Ugd2lsbCBuZWVkIHRvIHJ1biB0aGUgdGFzayBxdWV1ZSBvbiBlYWNoIHRpY2sgb2YgdGhlIGxvb3AuIElmCnlvdSBkbyBub3QgcnVuIHRoZSB0YXNrIHF1ZXVlLCB0aGVuIHByb21pc2VzIHdpbGwgbm90IGJlIHJlc29sdmVkLgoKWW91IGNhbiBydW4gdGhlIHRhc2sgcXVldWUgdXNpbmcgdGhlIGBydW4oKWAgbWV0aG9kIG9mIHRoZSBnbG9iYWwgdGFzayBxdWV1ZQppbnN0YW5jZS4KCmBgYHBocAovLyBHZXQgdGhlIGdsb2JhbCB0YXNrIHF1ZXVlCiRxdWV1ZSA9IEd1enpsZUh0dHBcUHJvbWlzZVxVdGlsczo6cXVldWUoKTsKJHF1ZXVlLT5ydW4oKTsKYGBgCgpGb3IgZXhhbXBsZSwgeW91IGNvdWxkIHVzZSBHdXp6bGUgcHJvbWlzZXMgd2l0aCBSZWFjdCB1c2luZyBhIHNob3J0IHBlcmlvZGljCnRpbWVyLiBBdm9pZCB6ZXJvLWludGVydmFsIHRpbWVycyBiZWNhdXNlIHRoZXkgbWF5IGtlZXAgdGhlIGxvb3AgYnVzeSBldmVuIHdoZW4KdGhlcmUgaXMgbm8gcHJvbWlzZSB3b3JrIHRvIHJ1bi4KCmBgYHBocAokbG9vcCA9IFJlYWN0XEV2ZW50TG9vcFxGYWN0b3J5OjpjcmVhdGUoKTsKJGxvb3AtPmFkZFBlcmlvZGljVGltZXIoMC4wMSwgWyRxdWV1ZSwgJ3J1biddKTsKYGBgCgoKIyMgSW1wbGVtZW50YXRpb24gTm90ZXMKCiMjIyBQcm9taXNlIFJlc29sdXRpb24gYW5kIENoYWluaW5nIGlzIEhhbmRsZWQgSXRlcmF0aXZlbHkKCkJ5IHNodWZmbGluZyBwZW5kaW5nIGhhbmRsZXJzIGZyb20gb25lIG93bmVyIHRvIGFub3RoZXIsIHByb21pc2VzIGFyZQpyZXNvbHZlZCBpdGVyYXRpdmVseSwgYWxsb3dpbmcgZm9yICJpbmZpbml0ZSIgdGhlbiBjaGFpbmluZy4KCmBgYHBocAo8P3BocApyZXF1aXJlICd2ZW5kb3IvYXV0b2xvYWQucGhwJzsKCnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzZTsKCiRwYXJlbnQgPSBuZXcgUHJvbWlzZSgpOwokcCA9ICRwYXJlbnQ7Cgpmb3IgKCRpID0gMDsgJGkgPCAxMDAwOyAkaSsrKSB7CiAgICAkcCA9ICRwLT50aGVuKGZ1bmN0aW9uICgkdikgewogICAgICAgIC8vIFRoZSBzdGFjayBzaXplIHJlbWFpbnMgY29uc3RhbnQgKGEgZ29vZCB0aGluZykKICAgICAgICBlY2hvIHhkZWJ1Z19nZXRfc3RhY2tfZGVwdGgoKSAuICcsICc7CiAgICAgICAgcmV0dXJuICR2ICsgMTsKICAgIH0pOwp9CgokcGFyZW50LT5yZXNvbHZlKDApOwp2YXJfZHVtcCgkcC0+d2FpdCgpKTsgLy8gaW50KDEwMDApCgpgYGAKCldoZW4gYSBwcm9taXNlIGlzIGZ1bGZpbGxlZCBvciByZWplY3RlZCB3aXRoIGEgbm9uLXByb21pc2UgdmFsdWUsIHRoZSBwcm9taXNlCnRoZW4gdGFrZXMgb3duZXJzaGlwIG9mIHRoZSBoYW5kbGVycyBvZiBlYWNoIGNoaWxkIHByb21pc2UgYW5kIGRlbGl2ZXJzIHZhbHVlcwpkb3duIHRoZSBjaGFpbiB3aXRob3V0IHVzaW5nIHJlY3Vyc2lvbi4KCldoZW4gYSBwcm9taXNlIGlzIHJlc29sdmVkIHdpdGggYW5vdGhlciBwcm9taXNlLCB0aGUgb3JpZ2luYWwgcHJvbWlzZSB0cmFuc2ZlcnMKYWxsIG9mIGl0cyBwZW5kaW5nIGhhbmRsZXJzIHRvIHRoZSBuZXcgcHJvbWlzZS4gV2hlbiB0aGUgbmV3IHByb21pc2UgaXMKZXZlbnR1YWxseSByZXNvbHZlZCwgYWxsIG9mIHRoZSBwZW5kaW5nIGhhbmRsZXJzIGFyZSBkZWxpdmVyZWQgdGhlIGZvcndhcmRlZAp2YWx1ZS4KCiMjIyBBIFByb21pc2UgaXMgdGhlIERlZmVycmVkCgpTb21lIHByb21pc2UgbGlicmFyaWVzIGltcGxlbWVudCBwcm9taXNlcyB1c2luZyBhIGRlZmVycmVkIG9iamVjdCB0byByZXByZXNlbnQKYSBjb21wdXRhdGlvbiBhbmQgYSBwcm9taXNlIG9iamVjdCB0byByZXByZXNlbnQgdGhlIGRlbGl2ZXJ5IG9mIHRoZSByZXN1bHQgb2YKdGhlIGNvbXB1dGF0aW9uLiBUaGlzIGlzIGEgbmljZSBzZXBhcmF0aW9uIG9mIGNvbXB1dGF0aW9uIGFuZCBkZWxpdmVyeSBiZWNhdXNlCmNvbnN1bWVycyBvZiB0aGUgcHJvbWlzZSBjYW5ub3QgbW9kaWZ5IHRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgZXZlbnR1YWxseQpkZWxpdmVyZWQuCgpPbmUgc2lkZSBlZmZlY3Qgb2YgYmVpbmcgYWJsZSB0byBpbXBsZW1lbnQgcHJvbWlzZSByZXNvbHV0aW9uIGFuZCBjaGFpbmluZwppdGVyYXRpdmVseSBpcyB0aGF0IHlvdSBuZWVkIHRvIGJlIGFibGUgZm9yIG9uZSBwcm9taXNlIHRvIHJlYWNoIGludG8gdGhlIHN0YXRlCm9mIGFub3RoZXIgcHJvbWlzZSB0byBzaHVmZmxlIGFyb3VuZCBvd25lcnNoaXAgb2YgaGFuZGxlcnMuIEluIG9yZGVyIHRvIGFjaGlldmUKdGhpcyB3aXRob3V0IG1ha2luZyB0aGUgaGFuZGxlcnMgb2YgYSBwcm9taXNlIHB1YmxpY2x5IG11dGFibGUsIGEgcHJvbWlzZSBpcwphbHNvIHRoZSBkZWZlcnJlZCB2YWx1ZSwgYWxsb3dpbmcgcHJvbWlzZXMgb2YgdGhlIHNhbWUgcGFyZW50IGNsYXNzIHRvIHJlYWNoCmludG8gYW5kIG1vZGlmeSB0aGUgcHJpdmF0ZSBwcm9wZXJ0aWVzIG9mIHByb21pc2VzIG9mIHRoZSBzYW1lIHR5cGUuIFdoaWxlIHRoaXMKZG9lcyBhbGxvdyBjb25zdW1lcnMgb2YgdGhlIHZhbHVlIHRvIG1vZGlmeSB0aGUgcmVzb2x1dGlvbiBvciByZWplY3Rpb24gb2YgdGhlCmRlZmVycmVkLCBpdCBpcyBhIHNtYWxsIHByaWNlIHRvIHBheSBmb3Iga2VlcGluZyB0aGUgc3RhY2sgc2l6ZSBjb25zdGFudC4KCmBgYHBocAokcHJvbWlzZSA9IG5ldyBQcm9taXNlKCk7CiRwcm9taXNlLT50aGVuKGZ1bmN0aW9uICgkdmFsdWUpIHsgZWNobyAkdmFsdWU7IH0pOwovLyBUaGUgcHJvbWlzZSBpcyB0aGUgZGVmZXJyZWQgdmFsdWUsIHNvIHlvdSBjYW4gZGVsaXZlciBhIHZhbHVlIHRvIGl0LgokcHJvbWlzZS0+cmVzb2x2ZSgnZm9vJyk7Ci8vIHByaW50cyAiZm9vIgpgYGAKCgojIyBVcGdyYWRpbmcKClNlZSBbVVBHUkFESU5HLm1kXShVUEdSQURJTkcubWQpIGZvciBwYWNrYWdlIHVwZ3JhZGUgbm90ZXMuCgoKIyMgU2VjdXJpdHkKCklmIHlvdSBkaXNjb3ZlciBhIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoaXMgcGFja2FnZSwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8gc2VjdXJpdHlAdGlkZWxpZnQuY29tLiBBbGwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIHdpbGwgYmUgcHJvbXB0bHkgYWRkcmVzc2VkLiBQbGVhc2UgZG8gbm90IGRpc2Nsb3NlIHNlY3VyaXR5LXJlbGF0ZWQgaXNzdWVzIHB1YmxpY2x5IHVudGlsIGEgZml4IGhhcyBiZWVuIGFubm91bmNlZC4gUGxlYXNlIHNlZSBbU2VjdXJpdHkgUG9saWN5XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3Byb21pc2VzL3NlY3VyaXR5L3BvbGljeSkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgoKIyMgTGljZW5zZQoKR3V6emxlIGlzIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKS4gUGxlYXNlIHNlZSBbTGljZW5zZSBGaWxlXShMSUNFTlNFKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCgojIyBGb3IgRW50ZXJwcmlzZQoKQXZhaWxhYmxlIGFzIHBhcnQgb2YgdGhlIFRpZGVsaWZ0IFN1YnNjcmlwdGlvbgoKVGhlIG1haW50YWluZXJzIG9mIEd1enpsZSBhbmQgdGhvdXNhbmRzIG9mIG90aGVyIHBhY2thZ2VzIGFyZSB3b3JraW5nIHdpdGggVGlkZWxpZnQgdG8gZGVsaXZlciBjb21tZXJjaWFsIHN1cHBvcnQgYW5kIG1haW50ZW5hbmNlIGZvciB0aGUgb3BlbiBzb3VyY2UgZGVwZW5kZW5jaWVzIHlvdSB1c2UgdG8gYnVpbGQgeW91ciBhcHBsaWNhdGlvbnMuIFNhdmUgdGltZSwgcmVkdWNlIHJpc2ssIGFuZCBpbXByb3ZlIGNvZGUgaGVhbHRoLCB3aGlsZSBwYXlpbmcgdGhlIG1haW50YWluZXJzIG9mIHRoZSBleGFjdCBkZXBlbmRlbmNpZXMgeW91IHVzZS4gW0xlYXJuIG1vcmUuXShodHRwczovL3RpZGVsaWZ0LmNvbS9zdWJzY3JpcHRpb24vcGtnL3BhY2thZ2lzdC1ndXp6bGVodHRwLXByb21pc2VzP3V0bV9zb3VyY2U9cGFja2FnaXN0LWd1enpsZWh0dHAtcHJvbWlzZXMmdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249ZW50ZXJwcmlzZSZ1dG1fdGVybT1yZXBvKQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/AggregateException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBFeGNlcHRpb24gdGhyb3duIHdoZW4gdG9vIG1hbnkgZXJyb3JzIG9jY3VyIGluIHRoZSBzb21lKCkgb3IgYW55KCkgbWV0aG9kcy4KICovCmNsYXNzIEFnZ3JlZ2F0ZUV4Y2VwdGlvbiBleHRlbmRzIFJlamVjdGlvbkV4Y2VwdGlvbgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICRtc2csIGFycmF5ICRyZWFzb25zKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoCiAgICAgICAgICAgICRyZWFzb25zLAogICAgICAgICAgICBzcHJpbnRmKCclczsgJWQgcmVqZWN0ZWQgcHJvbWlzZXMnLCAkbXNnLCBjb3VudCgkcmVhc29ucykpCiAgICAgICAgKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/CancellationException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBFeGNlcHRpb24gdGhhdCBpcyBzZXQgYXMgdGhlIHJlYXNvbiBmb3IgYSBwcm9taXNlIHRoYXQgaGFzIGJlZW4gY2FuY2VsbGVkLgogKi8KY2xhc3MgQ2FuY2VsbGF0aW9uRXhjZXB0aW9uIGV4dGVuZHMgUmVqZWN0aW9uRXhjZXB0aW9uCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/Coroutine.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCnVzZSBHZW5lcmF0b3I7CnVzZSBUaHJvd2FibGU7CgovKioKICogQ3JlYXRlcyBhIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB1c2luZyBhIGdlbmVyYXRvciB0aGF0IHlpZWxkcyB2YWx1ZXMgb3IKICogcHJvbWlzZXMgKHNvbWV3aGF0IHNpbWlsYXIgdG8gQyMncyBhc3luYyBrZXl3b3JkKS4KICoKICogV2hlbiBjYWxsZWQsIHRoZSBDb3JvdXRpbmU6Om9mIG1ldGhvZCB3aWxsIHN0YXJ0IGFuIGluc3RhbmNlIG9mIHRoZSBnZW5lcmF0b3IKICogYW5kIHJldHVybnMgYSBwcm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkIHdpdGggaXRzIGZpbmFsIHlpZWxkZWQgdmFsdWUuCiAqCiAqIENvbnRyb2wgaXMgcmV0dXJuZWQgYmFjayB0byB0aGUgZ2VuZXJhdG9yIHdoZW4gdGhlIHlpZWxkZWQgcHJvbWlzZSBzZXR0bGVzLgogKiBUaGlzIGNhbiBsZWFkIHRvIGxlc3MgdmVyYm9zZSBjb2RlIHdoZW4gZG9pbmcgbG90cyBvZiBzZXF1ZW50aWFsIGFzeW5jIGNhbGxzCiAqIHdpdGggbWluaW1hbCBwcm9jZXNzaW5nIGluIGJldHdlZW4uCiAqCiAqICAgICB1c2UgR3V6emxlSHR0cFxQcm9taXNlOwogKgogKiAgICAgZnVuY3Rpb24gY3JlYXRlUHJvbWlzZSgkdmFsdWUpIHsKICogICAgICAgICByZXR1cm4gbmV3IFByb21pc2VcRnVsZmlsbGVkUHJvbWlzZSgkdmFsdWUpOwogKiAgICAgfQogKgogKiAgICAgJHByb21pc2UgPSBQcm9taXNlXENvcm91dGluZTo6b2YoZnVuY3Rpb24gKCkgewogKiAgICAgICAgICR2YWx1ZSA9ICh5aWVsZCBjcmVhdGVQcm9taXNlKCdhJykpOwogKiAgICAgICAgIHRyeSB7CiAqICAgICAgICAgICAgICR2YWx1ZSA9ICh5aWVsZCBjcmVhdGVQcm9taXNlKCR2YWx1ZSAuICdiJykpOwogKiAgICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICogICAgICAgICAgICAgLy8gVGhlIHByb21pc2Ugd2FzIHJlamVjdGVkLgogKiAgICAgICAgIH0KICogICAgICAgICB5aWVsZCAkdmFsdWUgLiAnYyc7CiAqICAgICB9KTsKICoKICogICAgIC8vIE91dHB1dHMgImFiYyIKICogICAgICRwcm9taXNlLT50aGVuKGZ1bmN0aW9uICgkdikgeyBlY2hvICR2OyB9KTsKICoKICogQHBhcmFtIGNhbGxhYmxlICRnZW5lcmF0b3JGbiBHZW5lcmF0b3IgZnVuY3Rpb24gdG8gd3JhcCBpbnRvIGEgcHJvbWlzZS4KICoKICogQHJldHVybiBQcm9taXNlCiAqCiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3BldGthYW50b25vdi9ibHVlYmlyZC9ibG9iL21hc3Rlci9BUEkubWQjZ2VuZXJhdG9ycyBpbnNwaXJhdGlvbgogKi8KZmluYWwgY2xhc3MgQ29yb3V0aW5lIGltcGxlbWVudHMgUHJvbWlzZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgUHJvbWlzZUludGVyZmFjZXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGN1cnJlbnRQcm9taXNlOwoKICAgIC8qKgogICAgICogQHZhciBHZW5lcmF0b3IKICAgICAqLwogICAgcHJpdmF0ZSAkZ2VuZXJhdG9yOwoKICAgIC8qKgogICAgICogQHZhciBQcm9taXNlCiAgICAgKi8KICAgIHByaXZhdGUgJHJlc3VsdDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoY2FsbGFibGUgJGdlbmVyYXRvckZuKQogICAgewogICAgICAgICR0aGlzLT5nZW5lcmF0b3IgPSAkZ2VuZXJhdG9yRm4oKTsKICAgICAgICAkdGhpcy0+cmVzdWx0ID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKCk6IHZvaWQgewogICAgICAgICAgICB3aGlsZSAoaXNzZXQoJHRoaXMtPmN1cnJlbnRQcm9taXNlKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRQcm9taXNlLT53YWl0KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICB0cnkgewogICAgICAgICAgICAkdGhpcy0+bmV4dENvcm91dGluZSgkdGhpcy0+Z2VuZXJhdG9yLT5jdXJyZW50KCkpOwogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkdGhyb3dhYmxlKSB7CiAgICAgICAgICAgICR0aGlzLT5yZXN1bHQtPnJlamVjdCgkdGhyb3dhYmxlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgY29yb3V0aW5lLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9mKGNhbGxhYmxlICRnZW5lcmF0b3JGbik6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJGdlbmVyYXRvckZuKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGhlbigKICAgICAgICA/Y2FsbGFibGUgJG9uRnVsZmlsbGVkID0gbnVsbCwKICAgICAgICA/Y2FsbGFibGUgJG9uUmVqZWN0ZWQgPSBudWxsCiAgICApOiBQcm9taXNlSW50ZXJmYWNlIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlc3VsdC0+dGhlbigkb25GdWxmaWxsZWQsICRvblJlamVjdGVkKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gb3RoZXJ3aXNlKGNhbGxhYmxlICRvblJlamVjdGVkKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVzdWx0LT5vdGhlcndpc2UoJG9uUmVqZWN0ZWQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3YWl0KGJvb2wgJHVud3JhcCA9IHRydWUpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXN1bHQtPndhaXQoJHVud3JhcCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0YXRlKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVzdWx0LT5nZXRTdGF0ZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXNvbHZlKCR2YWx1ZSk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+cmVzdWx0LT5yZXNvbHZlKCR2YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlamVjdCgkcmVhc29uKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5yZXN1bHQtPnJlamVjdCgkcmVhc29uKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2FuY2VsKCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmN1cnJlbnRQcm9taXNlKSkgewogICAgICAgICAgICAkdGhpcy0+Y3VycmVudFByb21pc2UtPmNhbmNlbCgpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnJlc3VsdC0+Y2FuY2VsKCk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBuZXh0Q29yb3V0aW5lKCR5aWVsZGVkKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5jdXJyZW50UHJvbWlzZSA9IENyZWF0ZTo6cHJvbWlzZUZvcigkeWllbGRlZCkKICAgICAgICAgICAgLT50aGVuKFskdGhpcywgJ19oYW5kbGVTdWNjZXNzJ10sIFskdGhpcywgJ19oYW5kbGVGYWlsdXJlJ10pOwogICAgfQoKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfaGFuZGxlU3VjY2VzcygkdmFsdWUpOiB2b2lkCiAgICB7CiAgICAgICAgdW5zZXQoJHRoaXMtPmN1cnJlbnRQcm9taXNlKTsKICAgICAgICB0cnkgewogICAgICAgICAgICAkbmV4dCA9ICR0aGlzLT5nZW5lcmF0b3ItPnNlbmQoJHZhbHVlKTsKICAgICAgICAgICAgaWYgKCR0aGlzLT5nZW5lcmF0b3ItPnZhbGlkKCkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5uZXh0Q29yb3V0aW5lKCRuZXh0KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5yZXN1bHQtPnJlc29sdmUoJHZhbHVlKTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkdGhyb3dhYmxlKSB7CiAgICAgICAgICAgICR0aGlzLT5yZXN1bHQtPnJlamVjdCgkdGhyb3dhYmxlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9oYW5kbGVGYWlsdXJlKCRyZWFzb24pOiB2b2lkCiAgICB7CiAgICAgICAgdW5zZXQoJHRoaXMtPmN1cnJlbnRQcm9taXNlKTsKICAgICAgICB0cnkgewogICAgICAgICAgICAkbmV4dFlpZWxkID0gJHRoaXMtPmdlbmVyYXRvci0+dGhyb3coQ3JlYXRlOjpleGNlcHRpb25Gb3IoJHJlYXNvbikpOwogICAgICAgICAgICAvLyBUaGUgdGhyb3cgd2FzIGNhdWdodCwgc28ga2VlcCBpdGVyYXRpbmcgb24gdGhlIGNvcm91dGluZQogICAgICAgICAgICAkdGhpcy0+bmV4dENvcm91dGluZSgkbmV4dFlpZWxkKTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJHRocm93YWJsZSkgewogICAgICAgICAgICAkdGhpcy0+cmVzdWx0LT5yZWplY3QoJHRocm93YWJsZSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/Create.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCmZpbmFsIGNsYXNzIENyZWF0ZQp7CiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBwcm9taXNlIGZvciBhIHZhbHVlIGlmIHRoZSB2YWx1ZSBpcyBub3QgYSBwcm9taXNlLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUgUHJvbWlzZSBvciB2YWx1ZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcm9taXNlRm9yKCR2YWx1ZSk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoJHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZUludGVyZmFjZSkgewogICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgLy8gUmV0dXJuIGEgR3V6emxlIHByb21pc2UgdGhhdCBzaGFkb3dzIHRoZSBnaXZlbiBwcm9taXNlLgogICAgICAgIGlmIChpc19vYmplY3QoJHZhbHVlKSAmJiBtZXRob2RfZXhpc3RzKCR2YWx1ZSwgJ3RoZW4nKSkgewogICAgICAgICAgICAkd2ZuID0gbWV0aG9kX2V4aXN0cygkdmFsdWUsICd3YWl0JykgPyBbJHZhbHVlLCAnd2FpdCddIDogbnVsbDsKICAgICAgICAgICAgJGNmbiA9IG1ldGhvZF9leGlzdHMoJHZhbHVlLCAnY2FuY2VsJykgPyBbJHZhbHVlLCAnY2FuY2VsJ10gOiBudWxsOwogICAgICAgICAgICAkcHJvbWlzZSA9IG5ldyBQcm9taXNlKCR3Zm4sICRjZm4pOwogICAgICAgICAgICAkdmFsdWUtPnRoZW4oWyRwcm9taXNlLCAncmVzb2x2ZSddLCBbJHByb21pc2UsICdyZWplY3QnXSk7CgogICAgICAgICAgICByZXR1cm4gJHByb21pc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEZ1bGZpbGxlZFByb21pc2UoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSByZWplY3RlZCBwcm9taXNlIGZvciBhIHJlYXNvbiBpZiB0aGUgcmVhc29uIGlzIG5vdCBhIHByb21pc2UuCiAgICAgKiBJZiB0aGUgcHJvdmlkZWQgcmVhc29uIGlzIGEgcHJvbWlzZSwgdGhlbiBpdCBpcyByZXR1cm5lZCBhcy1pcy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHJlYXNvbiBQcm9taXNlIG9yIHJlYXNvbi4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWplY3Rpb25Gb3IoJHJlYXNvbik6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoJHJlYXNvbiBpbnN0YW5jZW9mIFByb21pc2VJbnRlcmZhY2UpIHsKICAgICAgICAgICAgcmV0dXJuICRyZWFzb247CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFJlamVjdGVkUHJvbWlzZSgkcmVhc29uKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBleGNlcHRpb24gZm9yIGEgcmVqZWN0ZWQgcHJvbWlzZSB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHJlYXNvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGV4Y2VwdGlvbkZvcigkcmVhc29uKTogXFRocm93YWJsZQogICAgewogICAgICAgIGlmICgkcmVhc29uIGluc3RhbmNlb2YgXFRocm93YWJsZSkgewogICAgICAgICAgICByZXR1cm4gJHJlYXNvbjsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgUmVqZWN0aW9uRXhjZXB0aW9uKCRyZWFzb24pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpdGVyYXRvciBmb3IgdGhlIGdpdmVuIHZhbHVlLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpdGVyRm9yKCR2YWx1ZSk6IFxJdGVyYXRvcgogICAgewogICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBcSXRlcmF0b3IpIHsKICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgICAgICB9CgogICAgICAgIGlmIChpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgXEFycmF5SXRlcmF0b3IoJHZhbHVlKTsKICAgICAgICB9CgogICAgICAgIGlmICghaXNfaXRlcmFibGUoJHZhbHVlKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3Byb21pc2VzJywKICAgICAgICAgICAgICAgICcyLjUnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgYSBub24taXRlcmFibGUgdG8gJXM6OiVzKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wcm9taXNlcyAzLjAgd2lsbCByZXF1aXJlIGFuIGl0ZXJhYmxlLicsCiAgICAgICAgICAgICAgICBfX0NMQVNTX18sCiAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18KICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgXEFycmF5SXRlcmF0b3IoWyR2YWx1ZV0pOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/Each.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCmZpbmFsIGNsYXNzIEVhY2gKewogICAgLyoqCiAgICAgKiBHaXZlbiBhbiBpdGVyYXRvciB0aGF0IHlpZWxkcyBwcm9taXNlcyBvciB2YWx1ZXMsIHJldHVybnMgYSBwcm9taXNlIHRoYXQKICAgICAqIGlzIGZ1bGZpbGxlZCB3aXRoIGEgbnVsbCB2YWx1ZSB3aGVuIHRoZSBpdGVyYXRvciBoYXMgYmVlbiBjb25zdW1lZCBvcgogICAgICogdGhlIGFnZ3JlZ2F0ZSBwcm9taXNlIGhhcyBiZWVuIGZ1bGZpbGxlZCBvciByZWplY3RlZC4KICAgICAqCiAgICAgKiAkb25GdWxmaWxsZWQgaXMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIGZ1bGZpbGxlZCB2YWx1ZSwgaXRlcmF0b3IKICAgICAqIGluZGV4LCBhbmQgdGhlIGFnZ3JlZ2F0ZSBwcm9taXNlLiBUaGUgY2FsbGJhY2sgY2FuIGludm9rZSBhbnkgbmVjZXNzYXJ5CiAgICAgKiBzaWRlIGVmZmVjdHMgYW5kIGNob29zZSB0byByZXNvbHZlIG9yIHJlamVjdCB0aGUgYWdncmVnYXRlIGlmIG5lZWRlZC4KICAgICAqCiAgICAgKiAkb25SZWplY3RlZCBpcyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgcmVqZWN0aW9uIHJlYXNvbiwgaXRlcmF0b3IKICAgICAqIGluZGV4LCBhbmQgdGhlIGFnZ3JlZ2F0ZSBwcm9taXNlLiBUaGUgY2FsbGJhY2sgY2FuIGludm9rZSBhbnkgbmVjZXNzYXJ5CiAgICAgKiBzaWRlIGVmZmVjdHMgYW5kIGNob29zZSB0byByZXNvbHZlIG9yIHJlamVjdCB0aGUgYWdncmVnYXRlIGlmIG5lZWRlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJGl0ZXJhYmxlIEl0ZXJhdG9yIG9yIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvZigKICAgICAgICAkaXRlcmFibGUsCiAgICAgICAgP2NhbGxhYmxlICRvbkZ1bGZpbGxlZCA9IG51bGwsCiAgICAgICAgP2NhbGxhYmxlICRvblJlamVjdGVkID0gbnVsbAogICAgKTogUHJvbWlzZUludGVyZmFjZSB7CiAgICAgICAgJGl0ZXJhYmxlID0gc2VsZjo6cHJlcGFyZUl0ZXJhYmxlKCRpdGVyYWJsZSwgX19GVU5DVElPTl9fKTsKCiAgICAgICAgcmV0dXJuIChuZXcgRWFjaFByb21pc2UoJGl0ZXJhYmxlLCBbCiAgICAgICAgICAgICdmdWxmaWxsZWQnID0+ICRvbkZ1bGZpbGxlZCwKICAgICAgICAgICAgJ3JlamVjdGVkJyA9PiAkb25SZWplY3RlZCwKICAgICAgICBdKSktPnByb21pc2UoKTsKICAgIH0KCiAgICAvKioKICAgICAqIExpa2Ugb2YsIGJ1dCBvbmx5IGFsbG93cyBhIGNlcnRhaW4gbnVtYmVyIG9mIG91dHN0YW5kaW5nIHByb21pc2VzIGF0IGFueQogICAgICogZ2l2ZW4gdGltZS4KICAgICAqCiAgICAgKiAkY29uY3VycmVuY3kgbWF5IGJlIGFuIGludGVnZXIgb3IgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIG51bWJlciBvZgogICAgICogcGVuZGluZyBwcm9taXNlcyBhbmQgcmV0dXJucyBhIG51bWVyaWMgY29uY3VycmVuY3kgbGltaXQgdmFsdWUgdG8gYWxsb3cKICAgICAqIGZvciBkeW5hbWljIGEgY29uY3VycmVuY3kgc2l6ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICRpdGVyYWJsZQogICAgICogQHBhcmFtIGludHxjYWxsYWJsZSAkY29uY3VycmVuY3kKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvZkxpbWl0KAogICAgICAgICRpdGVyYWJsZSwKICAgICAgICAkY29uY3VycmVuY3ksCiAgICAgICAgP2NhbGxhYmxlICRvbkZ1bGZpbGxlZCA9IG51bGwsCiAgICAgICAgP2NhbGxhYmxlICRvblJlamVjdGVkID0gbnVsbAogICAgKTogUHJvbWlzZUludGVyZmFjZSB7CiAgICAgICAgJGl0ZXJhYmxlID0gc2VsZjo6cHJlcGFyZUl0ZXJhYmxlKCRpdGVyYWJsZSwgX19GVU5DVElPTl9fKTsKCiAgICAgICAgcmV0dXJuIChuZXcgRWFjaFByb21pc2UoJGl0ZXJhYmxlLCBbCiAgICAgICAgICAgICdmdWxmaWxsZWQnID0+ICRvbkZ1bGZpbGxlZCwKICAgICAgICAgICAgJ3JlamVjdGVkJyA9PiAkb25SZWplY3RlZCwKICAgICAgICAgICAgJ2NvbmN1cnJlbmN5JyA9PiAkY29uY3VycmVuY3ksCiAgICAgICAgXSkpLT5wcm9taXNlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBMaWtlIGxpbWl0LCBidXQgZW5zdXJlcyB0aGF0IG5vIHByb21pc2UgaW4gdGhlIGdpdmVuICRpdGVyYWJsZSBhcmd1bWVudAogICAgICogaXMgcmVqZWN0ZWQuIElmIGFueSBwcm9taXNlIGlzIHJlamVjdGVkLCB0aGVuIHRoZSBhZ2dyZWdhdGUgcHJvbWlzZSBpcwogICAgICogcmVqZWN0ZWQgd2l0aCB0aGUgZW5jb3VudGVyZWQgcmVqZWN0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgJGl0ZXJhYmxlCiAgICAgKiBAcGFyYW0gaW50fGNhbGxhYmxlICRjb25jdXJyZW5jeQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9mTGltaXRBbGwoCiAgICAgICAgJGl0ZXJhYmxlLAogICAgICAgICRjb25jdXJyZW5jeSwKICAgICAgICA/Y2FsbGFibGUgJG9uRnVsZmlsbGVkID0gbnVsbAogICAgKTogUHJvbWlzZUludGVyZmFjZSB7CiAgICAgICAgJGl0ZXJhYmxlID0gc2VsZjo6cHJlcGFyZUl0ZXJhYmxlKCRpdGVyYWJsZSwgX19GVU5DVElPTl9fKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6Om9mTGltaXQoCiAgICAgICAgICAgICRpdGVyYWJsZSwKICAgICAgICAgICAgJGNvbmN1cnJlbmN5LAogICAgICAgICAgICAkb25GdWxmaWxsZWQsCiAgICAgICAgICAgIGZ1bmN0aW9uICgkcmVhc29uLCAkaWR4LCBQcm9taXNlSW50ZXJmYWNlICRhZ2dyZWdhdGUpOiB2b2lkIHsKICAgICAgICAgICAgICAgICRhZ2dyZWdhdGUtPnJlamVjdCgkcmVhc29uKTsKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcHJlcGFyZUl0ZXJhYmxlKCRpdGVyYWJsZSwgc3RyaW5nICRtZXRob2QpOiBpdGVyYWJsZQogICAgewogICAgICAgIGlmIChpc19pdGVyYWJsZSgkaXRlcmFibGUpKSB7CiAgICAgICAgICAgIHJldHVybiAkaXRlcmFibGU7CiAgICAgICAgfQoKICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHJvbWlzZXMnLAogICAgICAgICAgICAnMi41JywKICAgICAgICAgICAgJ1Bhc3NpbmcgYSBub24taXRlcmFibGUgdG8gJXM6OiVzKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wcm9taXNlcyAzLjAgd2lsbCByZXF1aXJlIGFuIGl0ZXJhYmxlLicsCiAgICAgICAgICAgIHNlbGY6OmNsYXNzLAogICAgICAgICAgICAkbWV0aG9kCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIFskaXRlcmFibGVdOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/EachPromise.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBSZXByZXNlbnRzIGEgcHJvbWlzZSB0aGF0IGl0ZXJhdGVzIG92ZXIgbWFueSBwcm9taXNlcyBhbmQgaW52b2tlcwogKiBzaWRlLWVmZmVjdCBmdW5jdGlvbnMgaW4gdGhlIHByb2Nlc3MuCiAqCiAqIEBmaW5hbAogKi8KY2xhc3MgRWFjaFByb21pc2UgaW1wbGVtZW50cyBQcm9taXNvckludGVyZmFjZQp7CiAgICBwcml2YXRlICRwZW5kaW5nID0gW107CgogICAgcHJpdmF0ZSAkbmV4dFBlbmRpbmdJbmRleCA9IDA7CgogICAgLyoqIEB2YXIgXEl0ZXJhdG9yfG51bGwgKi8KICAgIHByaXZhdGUgJGl0ZXJhYmxlOwoKICAgIC8qKiBAdmFyIGNhbGxhYmxlfGludHxudWxsICovCiAgICBwcml2YXRlICRjb25jdXJyZW5jeTsKCiAgICAvKiogQHZhciBjYWxsYWJsZXxudWxsICovCiAgICBwcml2YXRlICRvbkZ1bGZpbGxlZDsKCiAgICAvKiogQHZhciBjYWxsYWJsZXxudWxsICovCiAgICBwcml2YXRlICRvblJlamVjdGVkOwoKICAgIC8qKiBAdmFyIFByb21pc2V8bnVsbCAqLwogICAgcHJpdmF0ZSAkYWdncmVnYXRlOwoKICAgIC8qKiBAdmFyIGJvb2x8bnVsbCAqLwogICAgcHJpdmF0ZSAkbXV0ZXg7CgogICAgLyoqCiAgICAgKiBDb25maWd1cmF0aW9uIGhhc2ggY2FuIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBrZXkgdmFsdWUgcGFpcnM6CiAgICAgKgogICAgICogLSBmdWxmaWxsZWQ6IChjYWxsYWJsZSkgSW52b2tlZCB3aGVuIGEgcHJvbWlzZSBmdWxmaWxscy4gVGhlIGZ1bmN0aW9uCiAgICAgKiAgIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSwgdGhlIGluZGV4CiAgICAgKiAgIHBvc2l0aW9uIGZyb20gdGhlIGl0ZXJhYmxlIGxpc3Qgb2YgdGhlIHByb21pc2UsIGFuZCB0aGUgYWdncmVnYXRlCiAgICAgKiAgIHByb21pc2UgdGhhdCBtYW5hZ2VzIGFsbCBvZiB0aGUgcHJvbWlzZXMuIFRoZSBhZ2dyZWdhdGUgcHJvbWlzZSBtYXkKICAgICAqICAgYmUgcmVzb2x2ZWQgZnJvbSB3aXRoaW4gdGhlIGNhbGxiYWNrIHRvIHNob3J0LWNpcmN1aXQgdGhlIHByb21pc2UuCiAgICAgKiAtIHJlamVjdGVkOiAoY2FsbGFibGUpIEludm9rZWQgd2hlbiBhIHByb21pc2UgaXMgcmVqZWN0ZWQuIFRoZQogICAgICogICBmdW5jdGlvbiBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiB0aGUgcmVqZWN0aW9uIHJlYXNvbiwgdGhlCiAgICAgKiAgIGluZGV4IHBvc2l0aW9uIGZyb20gdGhlIGl0ZXJhYmxlIGxpc3Qgb2YgdGhlIHByb21pc2UsIGFuZCB0aGUKICAgICAqICAgYWdncmVnYXRlIHByb21pc2UgdGhhdCBtYW5hZ2VzIGFsbCBvZiB0aGUgcHJvbWlzZXMuIFRoZSBhZ2dyZWdhdGUKICAgICAqICAgcHJvbWlzZSBtYXkgYmUgcmVzb2x2ZWQgZnJvbSB3aXRoaW4gdGhlIGNhbGxiYWNrIHRvIHNob3J0LWNpcmN1aXQKICAgICAqICAgdGhlIHByb21pc2UuCiAgICAgKiAtIGNvbmN1cnJlbmN5OiAoaW50ZWdlcikgUGFzcyB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGxpbWl0IHRoZQogICAgICogICBhbGxvd2VkIG51bWJlciBvZiBvdXRzdGFuZGluZyBjb25jdXJyZW50bHkgZXhlY3V0aW5nIHByb21pc2VzLAogICAgICogICBjcmVhdGluZyBhIGNhcHBlZCBwb29sIG9mIHByb21pc2VzLiBUaGVyZSBpcyBubyBsaW1pdCBieSBkZWZhdWx0LgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkaXRlcmFibGUgUHJvbWlzZXMgb3IgdmFsdWVzIHRvIGl0ZXJhdGUuCiAgICAgKiBAcGFyYW0gYXJyYXkgJGNvbmZpZyAgIENvbmZpZ3VyYXRpb24gb3B0aW9ucwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGl0ZXJhYmxlLCBhcnJheSAkY29uZmlnID0gW10pCiAgICB7CiAgICAgICAgaWYgKCFpc19pdGVyYWJsZSgkaXRlcmFibGUpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHJvbWlzZXMnLAogICAgICAgICAgICAgICAgJzIuNScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyBhIG5vbi1pdGVyYWJsZSB0byAlczo6JXMoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3Byb21pc2VzIDMuMCB3aWxsIHJlcXVpcmUgYW4gaXRlcmFibGUuJywKICAgICAgICAgICAgICAgIF9fQ0xBU1NfXywKICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXwogICAgICAgICAgICApOwoKICAgICAgICAgICAgJGl0ZXJhYmxlID0gWyRpdGVyYWJsZV07CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+aXRlcmFibGUgPSBDcmVhdGU6Oml0ZXJGb3IoJGl0ZXJhYmxlKTsKCiAgICAgICAgaWYgKGlzc2V0KCRjb25maWdbJ2NvbmN1cnJlbmN5J10pKSB7CiAgICAgICAgICAgICR0aGlzLT5jb25jdXJyZW5jeSA9ICRjb25maWdbJ2NvbmN1cnJlbmN5J107CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJGNvbmZpZ1snZnVsZmlsbGVkJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5vbkZ1bGZpbGxlZCA9ICRjb25maWdbJ2Z1bGZpbGxlZCddOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRjb25maWdbJ3JlamVjdGVkJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5vblJlamVjdGVkID0gJGNvbmZpZ1sncmVqZWN0ZWQnXTsKICAgICAgICB9CiAgICB9CgogICAgLyoqIEBwc2FsbS1zdXBwcmVzcyBJbnZhbGlkTnVsbGFibGVSZXR1cm5UeXBlICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJvbWlzZSgpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5hZ2dyZWdhdGUpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5hZ2dyZWdhdGU7CiAgICAgICAgfQoKICAgICAgICB0cnkgewogICAgICAgICAgICAkdGhpcy0+Y3JlYXRlUHJvbWlzZSgpOwogICAgICAgICAgICAvKiogQHBzYWxtLWFzc2VydCBQcm9taXNlICR0aGlzLT5hZ2dyZWdhdGUgKi8KICAgICAgICAgICAgJHRoaXMtPml0ZXJhYmxlLT5yZXdpbmQoKTsKICAgICAgICAgICAgJHRoaXMtPnJlZmlsbFBlbmRpbmcoKTsKICAgICAgICAgICAgaWYgKCEkdGhpcy0+cGVuZGluZykgewogICAgICAgICAgICAgICAgVXRpbHM6OnF1ZXVlKCktPmFkZChmdW5jdGlvbiAoKTogdm9pZCB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEkdGhpcy0+YWdncmVnYXRlIHx8IElzOjpzZXR0bGVkKCR0aGlzLT5hZ2dyZWdhdGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5jaGVja0lmRmluaXNoZWQoKTsKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5hZ2dyZWdhdGUtPnJlamVjdCgkZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgICR0aGlzLT5hZ2dyZWdhdGUtPnJlamVjdCgkZSk7CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBAcHNhbG0tc3VwcHJlc3MgTnVsbGFibGVSZXR1cm5TdGF0ZW1lbnQKICAgICAgICAgKi8KICAgICAgICByZXR1cm4gJHRoaXMtPmFnZ3JlZ2F0ZTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNyZWF0ZVByb21pc2UoKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5tdXRleCA9IGZhbHNlOwogICAgICAgICR0aGlzLT5hZ2dyZWdhdGUgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAoKTogdm9pZCB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+Y2hlY2tJZkZpbmlzaGVkKCkpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXNldCgkdGhpcy0+cGVuZGluZyk7CiAgICAgICAgICAgIC8vIENvbnN1bWUgYSBwb3RlbnRpYWxseSBmbHVjdHVhdGluZyBsaXN0IG9mIHByb21pc2VzIHdoaWxlCiAgICAgICAgICAgIC8vIGVuc3VyaW5nIHRoYXQgaW5kZXhlcyBhcmUgbWFpbnRhaW5lZCAocHJlY2x1ZGluZyBhcnJheV9zaGlmdCkuCiAgICAgICAgICAgIHdoaWxlICgkcHJvbWlzZSA9IGN1cnJlbnQoJHRoaXMtPnBlbmRpbmcpKSB7CiAgICAgICAgICAgICAgICBuZXh0KCR0aGlzLT5wZW5kaW5nKTsKICAgICAgICAgICAgICAgICRwcm9taXNlLT53YWl0KCk7CiAgICAgICAgICAgICAgICBpZiAoSXM6OnNldHRsZWQoJHRoaXMtPmFnZ3JlZ2F0ZSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgLy8gQ2xlYXIgdGhlIHJlZmVyZW5jZXMgd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC4KICAgICAgICAkY2xlYXJGbiA9IGZ1bmN0aW9uICgpOiB2b2lkIHsKICAgICAgICAgICAgJHRoaXMtPml0ZXJhYmxlID0gJHRoaXMtPmNvbmN1cnJlbmN5ID0gJHRoaXMtPnBlbmRpbmcgPSBudWxsOwogICAgICAgICAgICAkdGhpcy0+b25GdWxmaWxsZWQgPSAkdGhpcy0+b25SZWplY3RlZCA9IG51bGw7CiAgICAgICAgICAgICR0aGlzLT5uZXh0UGVuZGluZ0luZGV4ID0gMDsKICAgICAgICB9OwoKICAgICAgICAkdGhpcy0+YWdncmVnYXRlLT50aGVuKCRjbGVhckZuLCAkY2xlYXJGbik7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiByZWZpbGxQZW5kaW5nKCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5jb25jdXJyZW5jeSkgewogICAgICAgICAgICAvLyBBZGQgYWxsIHBlbmRpbmcgcHJvbWlzZXMuCiAgICAgICAgICAgIHdoaWxlICgkdGhpcy0+YWRkUGVuZGluZygpICYmICR0aGlzLT5hZHZhbmNlSXRlcmF0b3IoKSkgewogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvLyBBZGQgb25seSB1cCB0byBOIHBlbmRpbmcgcHJvbWlzZXMuCiAgICAgICAgJGNvbmN1cnJlbmN5ID0gaXNfY2FsbGFibGUoJHRoaXMtPmNvbmN1cnJlbmN5KQogICAgICAgICAgICA/ICgkdGhpcy0+Y29uY3VycmVuY3kpKGNvdW50KCR0aGlzLT5wZW5kaW5nKSkKICAgICAgICAgICAgOiAkdGhpcy0+Y29uY3VycmVuY3k7CiAgICAgICAgJGNvbmN1cnJlbmN5ID0gbWF4KCRjb25jdXJyZW5jeSAtIGNvdW50KCR0aGlzLT5wZW5kaW5nKSwgMCk7CiAgICAgICAgLy8gQ29uY3VycmVuY3kgbWF5IGJlIHNldCB0byAwIHRvIGRpc2FsbG93IG5ldyBwcm9taXNlcy4KICAgICAgICBpZiAoISRjb25jdXJyZW5jeSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIC8vIEFkZCB0aGUgZmlyc3QgcGVuZGluZyBwcm9taXNlLgogICAgICAgICR0aGlzLT5hZGRQZW5kaW5nKCk7CiAgICAgICAgLy8gTm90ZSB0aGlzIGlzIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGNvbmN1cnJlbmN5PTEgc28gdGhhdCB3ZSBkbwogICAgICAgIC8vIG5vdCBhZHZhbmNlIHRoZSBpdGVyYXRvciBhZnRlciBhZGRpbmcgdGhlIGZpcnN0IHByb21pc2UuIFRoaXMKICAgICAgICAvLyBoZWxwcyB3b3JrIGFyb3VuZCBpc3N1ZXMgd2l0aCBnZW5lcmF0b3JzIHRoYXQgbWlnaHQgbm90IGhhdmUgdGhlCiAgICAgICAgLy8gbmV4dCB2YWx1ZSB0byB5aWVsZCB1bnRpbCBwcm9taXNlIGNhbGxiYWNrcyBhcmUgY2FsbGVkLgogICAgICAgIHdoaWxlICgtLSRjb25jdXJyZW5jeQogICAgICAgICAgICAmJiAkdGhpcy0+YWR2YW5jZUl0ZXJhdG9yKCkKICAgICAgICAgICAgJiYgJHRoaXMtPmFkZFBlbmRpbmcoKSkgewogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZFBlbmRpbmcoKTogYm9vbAogICAgewogICAgICAgIGlmICghJHRoaXMtPml0ZXJhYmxlIHx8ICEkdGhpcy0+aXRlcmFibGUtPnZhbGlkKCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHByb21pc2UgPSBDcmVhdGU6OnByb21pc2VGb3IoJHRoaXMtPml0ZXJhYmxlLT5jdXJyZW50KCkpOwogICAgICAgICRrZXkgPSAkdGhpcy0+aXRlcmFibGUtPmtleSgpOwoKICAgICAgICAvLyBJdGVyYWJsZSBrZXlzIG1heSBub3QgYmUgdW5pcXVlLCBzbyB3ZSB1c2UgYSBjb3VudGVyIHRvCiAgICAgICAgLy8gZ3VhcmFudGVlIHVuaXF1ZW5lc3MKICAgICAgICAkaWR4ID0gJHRoaXMtPm5leHRQZW5kaW5nSW5kZXgrKzsKCiAgICAgICAgJHRoaXMtPnBlbmRpbmdbJGlkeF0gPSAkcHJvbWlzZS0+dGhlbigKICAgICAgICAgICAgZnVuY3Rpb24gKCR2YWx1ZSkgdXNlICgkaWR4LCAka2V5KTogdm9pZCB7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm9uRnVsZmlsbGVkKSB7CiAgICAgICAgICAgICAgICAgICAgKCR0aGlzLT5vbkZ1bGZpbGxlZCkoCiAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgJGtleSwKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFnZ3JlZ2F0ZQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGhpcy0+c3RlcCgkaWR4KTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZnVuY3Rpb24gKCRyZWFzb24pIHVzZSAoJGlkeCwgJGtleSk6IHZvaWQgewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5vblJlamVjdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgKCR0aGlzLT5vblJlamVjdGVkKSgKICAgICAgICAgICAgICAgICAgICAgICAgJHJlYXNvbiwKICAgICAgICAgICAgICAgICAgICAgICAgJGtleSwKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFnZ3JlZ2F0ZQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGhpcy0+c3RlcCgkaWR4KTsKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYWR2YW5jZUl0ZXJhdG9yKCk6IGJvb2wKICAgIHsKICAgICAgICAvLyBQbGFjZSBhIGxvY2sgb24gdGhlIGl0ZXJhdG9yIHNvIHRoYXQgd2UgZW5zdXJlIHRvIG5vdCByZWN1cnNlLAogICAgICAgIC8vIHByZXZlbnRpbmcgZmF0YWwgZ2VuZXJhdG9yIGVycm9ycy4KICAgICAgICBpZiAoJHRoaXMtPm11dGV4KSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5tdXRleCA9IHRydWU7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICR0aGlzLT5pdGVyYWJsZS0+bmV4dCgpOwogICAgICAgICAgICAkdGhpcy0+bXV0ZXggPSBmYWxzZTsKCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgJHRoaXMtPmFnZ3JlZ2F0ZS0+cmVqZWN0KCRlKTsKICAgICAgICAgICAgJHRoaXMtPm11dGV4ID0gZmFsc2U7CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gc3RlcChpbnQgJGlkeCk6IHZvaWQKICAgIHsKICAgICAgICAvLyBJZiB0aGUgcHJvbWlzZSB3YXMgYWxyZWFkeSByZXNvbHZlZCwgdGhlbiBpZ25vcmUgdGhpcyBzdGVwLgogICAgICAgIGlmIChJczo6c2V0dGxlZCgkdGhpcy0+YWdncmVnYXRlKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB1bnNldCgkdGhpcy0+cGVuZGluZ1skaWR4XSk7CgogICAgICAgIC8vIE9ubHkgcmVmaWxsIHBlbmRpbmcgcHJvbWlzZXMgaWYgd2UgYXJlIG5vdCBsb2NrZWQsIHByZXZlbnRpbmcgdGhlCiAgICAgICAgLy8gRWFjaFByb21pc2UgdG8gcmVjdXJzaXZlbHkgaW52b2tlIHRoZSBwcm92aWRlZCBpdGVyYXRvciwgd2hpY2gKICAgICAgICAvLyBjYXVzZSBhIGZhdGFsIGVycm9yOiAiQ2Fubm90IHJlc3VtZSBhbiBhbHJlYWR5IHJ1bm5pbmcgZ2VuZXJhdG9yIgogICAgICAgIGlmICgkdGhpcy0+YWR2YW5jZUl0ZXJhdG9yKCkgJiYgISR0aGlzLT5jaGVja0lmRmluaXNoZWQoKSkgewogICAgICAgICAgICAvLyBBZGQgbW9yZSBwZW5kaW5nIHByb21pc2VzIGlmIHBvc3NpYmxlLgogICAgICAgICAgICAkdGhpcy0+cmVmaWxsUGVuZGluZygpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrSWZGaW5pc2hlZCgpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCEkdGhpcy0+cGVuZGluZyAmJiAhJHRoaXMtPml0ZXJhYmxlLT52YWxpZCgpKSB7CiAgICAgICAgICAgIC8vIFJlc29sdmUgdGhlIHByb21pc2UgaWYgdGhlcmUncyBub3RoaW5nIGxlZnQgdG8gZG8uCiAgICAgICAgICAgICR0aGlzLT5hZ2dyZWdhdGUtPnJlc29sdmUobnVsbCk7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/FulfilledPromise.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBBIHByb21pc2UgdGhhdCBoYXMgYmVlbiBmdWxmaWxsZWQuCiAqCiAqIFRoZW5uaW5nIG9mZiBvZiB0aGlzIHByb21pc2Ugd2lsbCBpbnZva2UgdGhlIG9uRnVsZmlsbGVkIGNhbGxiYWNrCiAqIGltbWVkaWF0ZWx5IGFuZCBpZ25vcmUgb3RoZXIgY2FsbGJhY2tzLgogKgogKiBAZmluYWwKICovCmNsYXNzIEZ1bGZpbGxlZFByb21pc2UgaW1wbGVtZW50cyBQcm9taXNlSW50ZXJmYWNlCnsKICAgIHByaXZhdGUgJHZhbHVlOwoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlKQogICAgewogICAgICAgIGlmIChpc19vYmplY3QoJHZhbHVlKSAmJiBtZXRob2RfZXhpc3RzKCR2YWx1ZSwgJ3RoZW4nKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICdZb3UgY2Fubm90IGNyZWF0ZSBhIEZ1bGZpbGxlZFByb21pc2Ugd2l0aCBhIHByb21pc2UuJwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0aGVuKAogICAgICAgID9jYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsLAogICAgICAgID9jYWxsYWJsZSAkb25SZWplY3RlZCA9IG51bGwKICAgICk6IFByb21pc2VJbnRlcmZhY2UgewogICAgICAgIC8vIFJldHVybiBpdHNlbGYgaWYgdGhlcmUgaXMgbm8gb25GdWxmaWxsZWQgZnVuY3Rpb24uCiAgICAgICAgaWYgKCEkb25GdWxmaWxsZWQpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJHF1ZXVlID0gVXRpbHM6OnF1ZXVlKCk7CiAgICAgICAgJHAgPSBuZXcgUHJvbWlzZShbJHF1ZXVlLCAncnVuJ10pOwogICAgICAgICR2YWx1ZSA9ICR0aGlzLT52YWx1ZTsKICAgICAgICAkcXVldWUtPmFkZChzdGF0aWMgZnVuY3Rpb24gKCkgdXNlICgkcCwgJHZhbHVlLCAkb25GdWxmaWxsZWQpOiB2b2lkIHsKICAgICAgICAgICAgaWYgKElzOjpwZW5kaW5nKCRwKSkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAkcC0+cmVzb2x2ZSgkb25GdWxmaWxsZWQoJHZhbHVlKSk7CiAgICAgICAgICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgICAgICAgICAgJHAtPnJlamVjdCgkZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuICRwOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBvdGhlcndpc2UoY2FsbGFibGUgJG9uUmVqZWN0ZWQpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50aGVuKG51bGwsICRvblJlamVjdGVkKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2FpdChib29sICR1bndyYXAgPSB0cnVlKQogICAgewogICAgICAgIHJldHVybiAkdW53cmFwID8gJHRoaXMtPnZhbHVlIDogbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3RhdGUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OkZVTEZJTExFRDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzb2x2ZSgkdmFsdWUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSAhPT0gJHRoaXMtPnZhbHVlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0Nhbm5vdCByZXNvbHZlIGEgZnVsZmlsbGVkIHByb21pc2UnKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlamVjdCgkcmVhc29uKTogdm9pZAogICAgewogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0Nhbm5vdCByZWplY3QgYSBmdWxmaWxsZWQgcHJvbWlzZScpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjYW5jZWwoKTogdm9pZAogICAgewogICAgICAgIC8vIHBhc3MKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/Is.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCmZpbmFsIGNsYXNzIElzCnsKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIGEgcHJvbWlzZSBpcyBwZW5kaW5nLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBlbmRpbmcoUHJvbWlzZUludGVyZmFjZSAkcHJvbWlzZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHByb21pc2UtPmdldFN0YXRlKCkgPT09IFByb21pc2VJbnRlcmZhY2U6OlBFTkRJTkc7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgYSBwcm9taXNlIGlzIGZ1bGZpbGxlZCBvciByZWplY3RlZC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZXR0bGVkKFByb21pc2VJbnRlcmZhY2UgJHByb21pc2UpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRwcm9taXNlLT5nZXRTdGF0ZSgpICE9PSBQcm9taXNlSW50ZXJmYWNlOjpQRU5ESU5HOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIGEgcHJvbWlzZSBpcyBmdWxmaWxsZWQuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnVsZmlsbGVkKFByb21pc2VJbnRlcmZhY2UgJHByb21pc2UpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRwcm9taXNlLT5nZXRTdGF0ZSgpID09PSBQcm9taXNlSW50ZXJmYWNlOjpGVUxGSUxMRUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgYSBwcm9taXNlIGlzIHJlamVjdGVkLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlamVjdGVkKFByb21pc2VJbnRlcmZhY2UgJHByb21pc2UpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRwcm9taXNlLT5nZXRTdGF0ZSgpID09PSBQcm9taXNlSW50ZXJmYWNlOjpSRUpFQ1RFRDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/Promise.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBQcm9taXNlcy9BKyBpbXBsZW1lbnRhdGlvbiB0aGF0IGF2b2lkcyByZWN1cnNpb24gd2hlbiBwb3NzaWJsZS4KICoKICogQHNlZSBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLwogKgogKiBAZmluYWwKICovCmNsYXNzIFByb21pc2UgaW1wbGVtZW50cyBQcm9taXNlSW50ZXJmYWNlCnsKICAgIHByaXZhdGUgJHN0YXRlID0gc2VsZjo6UEVORElORzsKICAgIHByaXZhdGUgJHJlc3VsdDsKICAgIHByaXZhdGUgJGNhbmNlbEZuOwogICAgcHJpdmF0ZSAkd2FpdEZuOwogICAgcHJpdmF0ZSAkd2FpdExpc3Q7CiAgICBwcml2YXRlICRoYW5kbGVycyA9IFtdOwoKICAgIC8qKgogICAgICogQHBhcmFtIGNhbGxhYmxlICR3YWl0Rm4gICBGbiB0aGF0IHdoZW4gaW52b2tlZCByZXNvbHZlcyB0aGUgcHJvbWlzZS4KICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkY2FuY2VsRm4gRm4gdGhhdCB3aGVuIGludm9rZWQgY2FuY2VscyB0aGUgcHJvbWlzZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgID9jYWxsYWJsZSAkd2FpdEZuID0gbnVsbCwKICAgICAgICA/Y2FsbGFibGUgJGNhbmNlbEZuID0gbnVsbAogICAgKSB7CiAgICAgICAgJHRoaXMtPndhaXRGbiA9ICR3YWl0Rm47CiAgICAgICAgJHRoaXMtPmNhbmNlbEZuID0gJGNhbmNlbEZuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0aGVuKAogICAgICAgID9jYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsLAogICAgICAgID9jYWxsYWJsZSAkb25SZWplY3RlZCA9IG51bGwKICAgICk6IFByb21pc2VJbnRlcmZhY2UgewogICAgICAgIGlmICgkdGhpcy0+c3RhdGUgPT09IHNlbGY6OlBFTkRJTkcpIHsKICAgICAgICAgICAgJHAgPSBuZXcgUHJvbWlzZShudWxsLCBbJHRoaXMsICdjYW5jZWwnXSk7CiAgICAgICAgICAgICR0aGlzLT5oYW5kbGVyc1tdID0gWyRwLCAkb25GdWxmaWxsZWQsICRvblJlamVjdGVkXTsKICAgICAgICAgICAgJHAtPndhaXRMaXN0ID0gJHRoaXMtPndhaXRMaXN0OwogICAgICAgICAgICAkcC0+d2FpdExpc3RbXSA9ICR0aGlzOwoKICAgICAgICAgICAgcmV0dXJuICRwOwogICAgICAgIH0KCiAgICAgICAgLy8gUmV0dXJuIGEgZnVsZmlsbGVkIHByb21pc2UgYW5kIGltbWVkaWF0ZWx5IGludm9rZSBhbnkgY2FsbGJhY2tzLgogICAgICAgIGlmICgkdGhpcy0+c3RhdGUgPT09IHNlbGY6OkZVTEZJTExFRCkgewogICAgICAgICAgICAkcHJvbWlzZSA9IENyZWF0ZTo6cHJvbWlzZUZvcigkdGhpcy0+cmVzdWx0KTsKCiAgICAgICAgICAgIHJldHVybiAkb25GdWxmaWxsZWQgPyAkcHJvbWlzZS0+dGhlbigkb25GdWxmaWxsZWQpIDogJHByb21pc2U7CiAgICAgICAgfQoKICAgICAgICAvLyBJdCdzIGVpdGhlciBjYW5jZWxsZWQgb3IgcmVqZWN0ZWQsIHNvIHJldHVybiBhIHJlamVjdGVkIHByb21pc2UKICAgICAgICAvLyBhbmQgaW1tZWRpYXRlbHkgaW52b2tlIGFueSBjYWxsYmFja3MuCiAgICAgICAgJHJlamVjdGlvbiA9IENyZWF0ZTo6cmVqZWN0aW9uRm9yKCR0aGlzLT5yZXN1bHQpOwoKICAgICAgICByZXR1cm4gJG9uUmVqZWN0ZWQgPyAkcmVqZWN0aW9uLT50aGVuKG51bGwsICRvblJlamVjdGVkKSA6ICRyZWplY3Rpb247CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG90aGVyd2lzZShjYWxsYWJsZSAkb25SZWplY3RlZCk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRoZW4obnVsbCwgJG9uUmVqZWN0ZWQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3YWl0KGJvb2wgJHVud3JhcCA9IHRydWUpCiAgICB7CiAgICAgICAgJHRoaXMtPndhaXRJZlBlbmRpbmcoKTsKCiAgICAgICAgaWYgKCR0aGlzLT5yZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlSW50ZXJmYWNlKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmVzdWx0LT53YWl0KCR1bndyYXApOwogICAgICAgIH0KICAgICAgICBpZiAoJHVud3JhcCkgewogICAgICAgICAgICBpZiAoJHRoaXMtPnN0YXRlID09PSBzZWxmOjpGVUxGSUxMRUQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmVzdWx0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIEl0J3MgcmVqZWN0ZWQgc28gInVud3JhcCIgYW5kIHRocm93IGFuIGV4Y2VwdGlvbi4KICAgICAgICAgICAgdGhyb3cgQ3JlYXRlOjpleGNlcHRpb25Gb3IoJHRoaXMtPnJlc3VsdCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGF0ZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0YXRlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjYW5jZWwoKTogdm9pZAogICAgewogICAgICAgIGlmICgkdGhpcy0+c3RhdGUgIT09IHNlbGY6OlBFTkRJTkcpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPndhaXRGbiA9ICR0aGlzLT53YWl0TGlzdCA9IG51bGw7CgogICAgICAgIGlmICgkdGhpcy0+Y2FuY2VsRm4pIHsKICAgICAgICAgICAgJGZuID0gJHRoaXMtPmNhbmNlbEZuOwogICAgICAgICAgICAkdGhpcy0+Y2FuY2VsRm4gPSBudWxsOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJGZuKCk7CiAgICAgICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5yZWplY3QoJGUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBSZWplY3QgdGhlIHByb21pc2Ugb25seSBpZiBpdCB3YXNuJ3QgcmVqZWN0ZWQgaW4gYSB0aGVuIGNhbGxiYWNrLgogICAgICAgIC8qKiBAcHNhbG0tc3VwcHJlc3MgUmVkdW5kYW50Q29uZGl0aW9uICovCiAgICAgICAgaWYgKCR0aGlzLT5zdGF0ZSA9PT0gc2VsZjo6UEVORElORykgewogICAgICAgICAgICAkdGhpcy0+cmVqZWN0KG5ldyBDYW5jZWxsYXRpb25FeGNlcHRpb24oJ1Byb21pc2UgaGFzIGJlZW4gY2FuY2VsbGVkJykpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzb2x2ZSgkdmFsdWUpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnNldHRsZShzZWxmOjpGVUxGSUxMRUQsICR2YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlamVjdCgkcmVhc29uKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5zZXR0bGUoc2VsZjo6UkVKRUNURUQsICRyZWFzb24pOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gc2V0dGxlKHN0cmluZyAkc3RhdGUsICR2YWx1ZSk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnN0YXRlICE9PSBzZWxmOjpQRU5ESU5HKSB7CiAgICAgICAgICAgIC8vIElnbm9yZSBjYWxscyB3aXRoIHRoZSBzYW1lIHJlc29sdXRpb24uCiAgICAgICAgICAgIGlmICgkc3RhdGUgPT09ICR0aGlzLT5zdGF0ZSAmJiAkdmFsdWUgPT09ICR0aGlzLT5yZXN1bHQpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aHJvdyAkdGhpcy0+c3RhdGUgPT09ICRzdGF0ZQogICAgICAgICAgICAgICAgPyBuZXcgXExvZ2ljRXhjZXB0aW9uKCJUaGUgcHJvbWlzZSBpcyBhbHJlYWR5IHskc3RhdGV9LiIpCiAgICAgICAgICAgICAgICA6IG5ldyBcTG9naWNFeGNlcHRpb24oIkNhbm5vdCBjaGFuZ2UgYSB7JHRoaXMtPnN0YXRlfSBwcm9taXNlIHRvIHskc3RhdGV9Iik7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHZhbHVlID09PSAkdGhpcykgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgZnVsZmlsbCBvciByZWplY3QgYSBwcm9taXNlIHdpdGggaXRzZWxmJyk7CiAgICAgICAgfQoKICAgICAgICAvLyBDbGVhciBvdXQgdGhlIHN0YXRlIG9mIHRoZSBwcm9taXNlIGJ1dCBzdGFzaCB0aGUgaGFuZGxlcnMuCiAgICAgICAgJHRoaXMtPnN0YXRlID0gJHN0YXRlOwogICAgICAgICR0aGlzLT5yZXN1bHQgPSAkdmFsdWU7CiAgICAgICAgJGhhbmRsZXJzID0gJHRoaXMtPmhhbmRsZXJzOwogICAgICAgICR0aGlzLT5oYW5kbGVycyA9IG51bGw7CiAgICAgICAgJHRoaXMtPndhaXRMaXN0ID0gJHRoaXMtPndhaXRGbiA9IG51bGw7CiAgICAgICAgJHRoaXMtPmNhbmNlbEZuID0gbnVsbDsKCiAgICAgICAgaWYgKCEkaGFuZGxlcnMpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlIHZhbHVlIHdhcyBub3QgYSBzZXR0bGVkIHByb21pc2Ugb3IgYSB0aGVuYWJsZSwgdGhlbiByZXNvbHZlCiAgICAgICAgLy8gaXQgaW4gdGhlIHRhc2sgcXVldWUgdXNpbmcgdGhlIGNvcnJlY3QgSUQuCiAgICAgICAgaWYgKCFpc19vYmplY3QoJHZhbHVlKSB8fCAhbWV0aG9kX2V4aXN0cygkdmFsdWUsICd0aGVuJykpIHsKICAgICAgICAgICAgJGlkID0gJHN0YXRlID09PSBzZWxmOjpGVUxGSUxMRUQgPyAxIDogMjsKICAgICAgICAgICAgLy8gSXQncyBhIHN1Y2Nlc3MsIHNvIHJlc29sdmUgdGhlIGhhbmRsZXJzIGluIHRoZSBxdWV1ZS4KICAgICAgICAgICAgVXRpbHM6OnF1ZXVlKCktPmFkZChzdGF0aWMgZnVuY3Rpb24gKCkgdXNlICgkaWQsICR2YWx1ZSwgJGhhbmRsZXJzKTogdm9pZCB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkaGFuZGxlcnMgYXMgJGhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICBzZWxmOjpjYWxsSGFuZGxlcigkaWQsICR2YWx1ZSwgJGhhbmRsZXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2VpZiAoJHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSAmJiBJczo6cGVuZGluZygkdmFsdWUpKSB7CiAgICAgICAgICAgIC8vIFdlIGNhbiBqdXN0IG1lcmdlIG91ciBoYW5kbGVycyBvbnRvIHRoZSBuZXh0IHByb21pc2UuCiAgICAgICAgICAgICR2YWx1ZS0+aGFuZGxlcnMgPSBhcnJheV9tZXJnZSgkdmFsdWUtPmhhbmRsZXJzLCAkaGFuZGxlcnMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFJlc29sdmUgdGhlIGhhbmRsZXJzIHdoZW4gdGhlIGZvcndhcmRlZCBwcm9taXNlIGlzIHJlc29sdmVkLgogICAgICAgICAgICAkdmFsdWUtPnRoZW4oCiAgICAgICAgICAgICAgICBzdGF0aWMgZnVuY3Rpb24gKCR2YWx1ZSkgdXNlICgkaGFuZGxlcnMpOiB2b2lkIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkaGFuZGxlcnMgYXMgJGhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZjo6Y2FsbEhhbmRsZXIoMSwgJHZhbHVlLCAkaGFuZGxlcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoJHJlYXNvbikgdXNlICgkaGFuZGxlcnMpOiB2b2lkIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkaGFuZGxlcnMgYXMgJGhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZjo6Y2FsbEhhbmRsZXIoMiwgJHJlYXNvbiwgJGhhbmRsZXIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDYWxsIGEgc3RhY2sgb2YgaGFuZGxlcnMgdXNpbmcgYSBzcGVjaWZpYyBjYWxsYmFjayBpbmRleCBhbmQgdmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIGludCAgICRpbmRleCAgIDEgKHJlc29sdmUpIG9yIDIgKHJlamVjdCkuCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlICAgVmFsdWUgdG8gcGFzcyB0byB0aGUgY2FsbGJhY2suCiAgICAgKiBAcGFyYW0gYXJyYXkgJGhhbmRsZXIgQXJyYXkgb2YgaGFuZGxlciBkYXRhIChwcm9taXNlIGFuZCBjYWxsYmFja3MpLgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjYWxsSGFuZGxlcihpbnQgJGluZGV4LCAkdmFsdWUsIGFycmF5ICRoYW5kbGVyKTogdm9pZAogICAgewogICAgICAgIC8qKiBAdmFyIFByb21pc2VJbnRlcmZhY2UgJHByb21pc2UgKi8KICAgICAgICAkcHJvbWlzZSA9ICRoYW5kbGVyWzBdOwoKICAgICAgICAvLyBUaGUgcHJvbWlzZSBtYXkgaGF2ZSBiZWVuIGNhbmNlbGxlZCBvciByZXNvbHZlZCBiZWZvcmUgcGxhY2luZwogICAgICAgIC8vIHRoaXMgdGh1bmsgaW4gdGhlIHF1ZXVlLgogICAgICAgIGlmIChJczo6c2V0dGxlZCgkcHJvbWlzZSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKGlzc2V0KCRoYW5kbGVyWyRpbmRleF0pKSB7CiAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICogSWYgJGYgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgdGhlbiAkaGFuZGxlciB3aWxsIGJlIGluIHRoZSBleGNlcHRpb24KICAgICAgICAgICAgICAgICAqIHN0YWNrIHRyYWNlLiBTaW5jZSAkaGFuZGxlciBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY2FsbGFibGUKICAgICAgICAgICAgICAgICAqIGl0c2VsZiB3ZSBnZXQgYSBjaXJjdWxhciByZWZlcmVuY2UuIFdlIGNsZWFyIHRoZSAkaGFuZGxlcgogICAgICAgICAgICAgICAgICogaGVyZSB0byBhdm9pZCB0aGF0IG1lbW9yeSBsZWFrLgogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAkZiA9ICRoYW5kbGVyWyRpbmRleF07CiAgICAgICAgICAgICAgICB1bnNldCgkaGFuZGxlcik7CiAgICAgICAgICAgICAgICAkcHJvbWlzZS0+cmVzb2x2ZSgkZigkdmFsdWUpKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRpbmRleCA9PT0gMSkgewogICAgICAgICAgICAgICAgLy8gRm9yd2FyZCByZXNvbHV0aW9uIHZhbHVlcyBhcy1pcy4KICAgICAgICAgICAgICAgICRwcm9taXNlLT5yZXNvbHZlKCR2YWx1ZSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBGb3J3YXJkIHJlamVjdGlvbnMgZG93biB0aGUgY2hhaW4uCiAgICAgICAgICAgICAgICAkcHJvbWlzZS0+cmVqZWN0KCR2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRyZWFzb24pIHsKICAgICAgICAgICAgJHByb21pc2UtPnJlamVjdCgkcmVhc29uKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB3YWl0SWZQZW5kaW5nKCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnN0YXRlICE9PSBzZWxmOjpQRU5ESU5HKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPndhaXRGbikgewogICAgICAgICAgICAkdGhpcy0+aW52b2tlV2FpdEZuKCk7CiAgICAgICAgfSBlbHNlaWYgKCR0aGlzLT53YWl0TGlzdCkgewogICAgICAgICAgICAkdGhpcy0+aW52b2tlV2FpdExpc3QoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIHdhaXQgZnVuY3Rpb24sIHRoZW4gcmVqZWN0IHRoZSBwcm9taXNlLgogICAgICAgICAgICAkdGhpcy0+cmVqZWN0KCdDYW5ub3Qgd2FpdCBvbiBhIHByb21pc2UgdGhhdCBoYXMgJwogICAgICAgICAgICAgICAgLidubyBpbnRlcm5hbCB3YWl0IGZ1bmN0aW9uLiBZb3UgbXVzdCBwcm92aWRlIGEgd2FpdCAnCiAgICAgICAgICAgICAgICAuJ2Z1bmN0aW9uIHdoZW4gY29uc3RydWN0aW5nIHRoZSBwcm9taXNlIHRvIGJlIGFibGUgdG8gJwogICAgICAgICAgICAgICAgLid3YWl0IG9uIGEgcHJvbWlzZS4nKTsKICAgICAgICB9CgogICAgICAgIFV0aWxzOjpxdWV1ZSgpLT5ydW4oKTsKCiAgICAgICAgLyoqIEBwc2FsbS1zdXBwcmVzcyBSZWR1bmRhbnRDb25kaXRpb24gKi8KICAgICAgICBpZiAoJHRoaXMtPnN0YXRlID09PSBzZWxmOjpQRU5ESU5HKSB7CiAgICAgICAgICAgICR0aGlzLT5yZWplY3QoJ0ludm9raW5nIHRoZSB3YWl0IGNhbGxiYWNrIGRpZCBub3QgcmVzb2x2ZSB0aGUgcHJvbWlzZScpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGludm9rZVdhaXRGbigpOiB2b2lkCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHdmbiA9ICR0aGlzLT53YWl0Rm47CiAgICAgICAgICAgICR0aGlzLT53YWl0Rm4gPSBudWxsOwogICAgICAgICAgICAkd2ZuKHRydWUpOwogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJHJlYXNvbikgewogICAgICAgICAgICBpZiAoJHRoaXMtPnN0YXRlID09PSBzZWxmOjpQRU5ESU5HKSB7CiAgICAgICAgICAgICAgICAvLyBUaGUgcHJvbWlzZSBoYXMgbm90IGJlZW4gcmVzb2x2ZWQgeWV0LCBzbyByZWplY3QgdGhlIHByb21pc2UKICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIGV4Y2VwdGlvbi4KICAgICAgICAgICAgICAgICR0aGlzLT5yZWplY3QoJHJlYXNvbik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBUaGUgcHJvbWlzZSB3YXMgYWxyZWFkeSByZXNvbHZlZCwgc28gdGhlcmUncyBhIHByb2JsZW0gaW4KICAgICAgICAgICAgICAgIC8vIHRoZSBhcHBsaWNhdGlvbi4KICAgICAgICAgICAgICAgIHRocm93ICRyZWFzb247CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBpbnZva2VXYWl0TGlzdCgpOiB2b2lkCiAgICB7CiAgICAgICAgJHdhaXRMaXN0ID0gJHRoaXMtPndhaXRMaXN0OwogICAgICAgICR0aGlzLT53YWl0TGlzdCA9IG51bGw7CgogICAgICAgIGZvcmVhY2ggKCR3YWl0TGlzdCBhcyAkcmVzdWx0KSB7CiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICRyZXN1bHQtPndhaXRJZlBlbmRpbmcoKTsKICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzdWx0LT5yZXN1bHQ7CiAgICAgICAgICAgIH0gd2hpbGUgKCRyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKTsKCiAgICAgICAgICAgIGlmICgkcmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZUludGVyZmFjZSkgewogICAgICAgICAgICAgICAgJHJlc3VsdC0+d2FpdChmYWxzZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/PromiseInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBBIHByb21pc2UgcmVwcmVzZW50cyB0aGUgZXZlbnR1YWwgcmVzdWx0IG9mIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb24uCiAqCiAqIFRoZSBwcmltYXJ5IHdheSBvZiBpbnRlcmFjdGluZyB3aXRoIGEgcHJvbWlzZSBpcyB0aHJvdWdoIGl0cyB0aGVuIG1ldGhvZCwKICogd2hpY2ggcmVnaXN0ZXJzIGNhbGxiYWNrcyB0byByZWNlaXZlIGVpdGhlciBhIHByb21pc2XigJlzIGV2ZW50dWFsIHZhbHVlIG9yCiAqIHRoZSByZWFzb24gd2h5IHRoZSBwcm9taXNlIGNhbm5vdCBiZSBmdWxmaWxsZWQuCiAqCiAqIEBzZWUgaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8KICovCmludGVyZmFjZSBQcm9taXNlSW50ZXJmYWNlCnsKICAgIHB1YmxpYyBjb25zdCBQRU5ESU5HID0gJ3BlbmRpbmcnOwogICAgcHVibGljIGNvbnN0IEZVTEZJTExFRCA9ICdmdWxmaWxsZWQnOwogICAgcHVibGljIGNvbnN0IFJFSkVDVEVEID0gJ3JlamVjdGVkJzsKCiAgICAvKioKICAgICAqIEFwcGVuZHMgZnVsZmlsbG1lbnQgYW5kIHJlamVjdGlvbiBoYW5kbGVycyB0byB0aGUgcHJvbWlzZSwgYW5kIHJldHVybnMKICAgICAqIGEgbmV3IHByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGNhbGxlZCBoYW5kbGVyLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkb25GdWxmaWxsZWQgSW52b2tlZCB3aGVuIHRoZSBwcm9taXNlIGZ1bGZpbGxzLgogICAgICogQHBhcmFtIGNhbGxhYmxlICRvblJlamVjdGVkICBJbnZva2VkIHdoZW4gdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0aGVuKAogICAgICAgID9jYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsLAogICAgICAgID9jYWxsYWJsZSAkb25SZWplY3RlZCA9IG51bGwKICAgICk6IFByb21pc2VJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBBcHBlbmRzIGEgcmVqZWN0aW9uIGhhbmRsZXIgY2FsbGJhY2sgdG8gdGhlIHByb21pc2UsIGFuZCByZXR1cm5zIGEgbmV3CiAgICAgKiBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjYWxsYmFjayBpZiBpdCBpcyBjYWxsZWQsCiAgICAgKiBvciB0byBpdHMgb3JpZ2luYWwgZnVsZmlsbG1lbnQgdmFsdWUgaWYgdGhlIHByb21pc2UgaXMgaW5zdGVhZAogICAgICogZnVsZmlsbGVkLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkb25SZWplY3RlZCBJbnZva2VkIHdoZW4gdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBvdGhlcndpc2UoY2FsbGFibGUgJG9uUmVqZWN0ZWQpOiBQcm9taXNlSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogR2V0IHRoZSBzdGF0ZSBvZiB0aGUgcHJvbWlzZSAoInBlbmRpbmciLCAicmVqZWN0ZWQiLCBvciAiZnVsZmlsbGVkIikuCiAgICAgKgogICAgICogVGhlIHRocmVlIHN0YXRlcyBjYW4gYmUgY2hlY2tlZCBhZ2FpbnN0IHRoZSBjb25zdGFudHMgZGVmaW5lZCBvbgogICAgICogUHJvbWlzZUludGVyZmFjZTogUEVORElORywgRlVMRklMTEVELCBhbmQgUkVKRUNURUQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGF0ZSgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXNvbHZlIHRoZSBwcm9taXNlIHdpdGggdGhlIGdpdmVuIHZhbHVlLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUKICAgICAqCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBwcm9taXNlIGlzIGFscmVhZHkgcmVzb2x2ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZXNvbHZlKCR2YWx1ZSk6IHZvaWQ7CgogICAgLyoqCiAgICAgKiBSZWplY3QgdGhlIHByb21pc2Ugd2l0aCB0aGUgZ2l2ZW4gcmVhc29uLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkcmVhc29uCiAgICAgKgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiB0aGUgcHJvbWlzZSBpcyBhbHJlYWR5IHJlc29sdmVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVqZWN0KCRyZWFzb24pOiB2b2lkOwoKICAgIC8qKgogICAgICogQ2FuY2VscyB0aGUgcHJvbWlzZSBpZiBwb3NzaWJsZS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9taXNlcy1hcGx1cy9jYW5jZWxsYXRpb24tc3BlYy9pc3N1ZXMvNwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2FuY2VsKCk6IHZvaWQ7CgogICAgLyoqCiAgICAgKiBXYWl0cyB1bnRpbCB0aGUgcHJvbWlzZSBjb21wbGV0ZXMgaWYgcG9zc2libGUuCiAgICAgKgogICAgICogUGFzcyAkdW53cmFwIGFzIHRydWUgdG8gdW53cmFwIHRoZSByZXN1bHQgb2YgdGhlIHByb21pc2UsIGVpdGhlcgogICAgICogcmV0dXJuaW5nIHRoZSByZXNvbHZlZCB2YWx1ZSBvciB0aHJvd2luZyB0aGUgcmVqZWN0ZWQgZXhjZXB0aW9uLgogICAgICoKICAgICAqIElmIHRoZSBwcm9taXNlIGNhbm5vdCBiZSB3YWl0ZWQgb24sIHRoZW4gdGhlIHByb21pc2Ugd2lsbCBiZSByZWplY3RlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKgogICAgICogQHRocm93cyBcTG9naWNFeGNlcHRpb24gaWYgdGhlIHByb21pc2UgaGFzIG5vIHdhaXQgZnVuY3Rpb24gb3IgaWYgdGhlCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlIGRvZXMgbm90IHNldHRsZSBhZnRlciB3YWl0aW5nLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2FpdChib29sICR1bndyYXAgPSB0cnVlKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/PromisorInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBJbnRlcmZhY2UgdXNlZCB3aXRoIGNsYXNzZXMgdGhhdCByZXR1cm4gYSBwcm9taXNlLgogKi8KaW50ZXJmYWNlIFByb21pc29ySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0dXJucyBhIHByb21pc2UuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwcm9taXNlKCk6IFByb21pc2VJbnRlcmZhY2U7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/RejectedPromise.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBBIHByb21pc2UgdGhhdCBoYXMgYmVlbiByZWplY3RlZC4KICoKICogVGhlbm5pbmcgb2ZmIG9mIHRoaXMgcHJvbWlzZSB3aWxsIGludm9rZSB0aGUgb25SZWplY3RlZCBjYWxsYmFjawogKiBpbW1lZGlhdGVseSBhbmQgaWdub3JlIG90aGVyIGNhbGxiYWNrcy4KICoKICogQGZpbmFsCiAqLwpjbGFzcyBSZWplY3RlZFByb21pc2UgaW1wbGVtZW50cyBQcm9taXNlSW50ZXJmYWNlCnsKICAgIHByaXZhdGUgJHJlYXNvbjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkcmVhc29uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcmVhc29uKQogICAgewogICAgICAgIGlmIChpc19vYmplY3QoJHJlYXNvbikgJiYgbWV0aG9kX2V4aXN0cygkcmVhc29uLCAndGhlbicpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgJ1lvdSBjYW5ub3QgY3JlYXRlIGEgUmVqZWN0ZWRQcm9taXNlIHdpdGggYSBwcm9taXNlLicKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5yZWFzb24gPSAkcmVhc29uOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0aGVuKAogICAgICAgID9jYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsLAogICAgICAgID9jYWxsYWJsZSAkb25SZWplY3RlZCA9IG51bGwKICAgICk6IFByb21pc2VJbnRlcmZhY2UgewogICAgICAgIC8vIElmIHRoZXJlJ3Mgbm8gb25SZWplY3RlZCBjYWxsYmFjayB0aGVuIGp1c3QgcmV0dXJuIHNlbGYuCiAgICAgICAgaWYgKCEkb25SZWplY3RlZCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkcXVldWUgPSBVdGlsczo6cXVldWUoKTsKICAgICAgICAkcmVhc29uID0gJHRoaXMtPnJlYXNvbjsKICAgICAgICAkcCA9IG5ldyBQcm9taXNlKFskcXVldWUsICdydW4nXSk7CiAgICAgICAgJHF1ZXVlLT5hZGQoc3RhdGljIGZ1bmN0aW9uICgpIHVzZSAoJHAsICRyZWFzb24sICRvblJlamVjdGVkKTogdm9pZCB7CiAgICAgICAgICAgIGlmIChJczo6cGVuZGluZygkcCkpIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJuIGEgcmVzb2x2ZWQgcHJvbWlzZSBpZiBvblJlamVjdGVkIGRvZXMgbm90IHRocm93LgogICAgICAgICAgICAgICAgICAgICRwLT5yZXNvbHZlKCRvblJlamVjdGVkKCRyZWFzb24pKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgICAgICAgICAvLyBvblJlamVjdGVkIHRocmV3LCBzbyByZXR1cm4gYSByZWplY3RlZCBwcm9taXNlLgogICAgICAgICAgICAgICAgICAgICRwLT5yZWplY3QoJGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiAkcDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gb3RoZXJ3aXNlKGNhbGxhYmxlICRvblJlamVjdGVkKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dGhlbihudWxsLCAkb25SZWplY3RlZCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdhaXQoYm9vbCAkdW53cmFwID0gdHJ1ZSkKICAgIHsKICAgICAgICBpZiAoJHVud3JhcCkgewogICAgICAgICAgICB0aHJvdyBDcmVhdGU6OmV4Y2VwdGlvbkZvcigkdGhpcy0+cmVhc29uKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGF0ZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6UkVKRUNURUQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlc29sdmUoJHZhbHVlKTogdm9pZAogICAgewogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0Nhbm5vdCByZXNvbHZlIGEgcmVqZWN0ZWQgcHJvbWlzZScpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWplY3QoJHJlYXNvbik6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHJlYXNvbiAhPT0gJHRoaXMtPnJlYXNvbikgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgcmVqZWN0IGEgcmVqZWN0ZWQgcHJvbWlzZScpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2FuY2VsKCk6IHZvaWQKICAgIHsKICAgICAgICAvLyBwYXNzCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/RejectionException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBBIHNwZWNpYWwgZXhjZXB0aW9uIHRoYXQgaXMgdGhyb3duIHdoZW4gd2FpdGluZyBvbiBhIHJlamVjdGVkIHByb21pc2UuCiAqCiAqIFRoZSByZWFzb24gdmFsdWUgaXMgYXZhaWxhYmxlIHZpYSB0aGUgZ2V0UmVhc29uKCkgbWV0aG9kLgogKi8KY2xhc3MgUmVqZWN0aW9uRXhjZXB0aW9uIGV4dGVuZHMgXFJ1bnRpbWVFeGNlcHRpb24KewogICAgLyoqIEB2YXIgbWl4ZWQgUmVqZWN0aW9uIHJlYXNvbi4gKi8KICAgIHByaXZhdGUgJHJlYXNvbjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAkcmVhc29uICAgICAgUmVqZWN0aW9uIHJlYXNvbi4KICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkZGVzY3JpcHRpb24gT3B0aW9uYWwgZGVzY3JpcHRpb24uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcmVhc29uLCA/c3RyaW5nICRkZXNjcmlwdGlvbiA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPnJlYXNvbiA9ICRyZWFzb247CgogICAgICAgICRtZXNzYWdlID0gJ1RoZSBwcm9taXNlIHdhcyByZWplY3RlZCc7CgogICAgICAgIGlmICgkZGVzY3JpcHRpb24pIHsKICAgICAgICAgICAgJG1lc3NhZ2UgLj0gJyB3aXRoIHJlYXNvbjogJy4kZGVzY3JpcHRpb247CiAgICAgICAgfSBlbHNlaWYgKGlzX3N0cmluZygkcmVhc29uKQogICAgICAgICAgICB8fCAoaXNfb2JqZWN0KCRyZWFzb24pICYmIG1ldGhvZF9leGlzdHMoJHJlYXNvbiwgJ19fdG9TdHJpbmcnKSkKICAgICAgICApIHsKICAgICAgICAgICAgJG1lc3NhZ2UgLj0gJyB3aXRoIHJlYXNvbjogJy4kdGhpcy0+cmVhc29uOwogICAgICAgIH0gZWxzZWlmICgkcmVhc29uIGluc3RhbmNlb2YgXEpzb25TZXJpYWxpemFibGUpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgLj0gJyB3aXRoIHJlYXNvbjogJy5qc29uX2VuY29kZSgkdGhpcy0+cmVhc29uLCBKU09OX1BSRVRUWV9QUklOVCk7CiAgICAgICAgfQoKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtZXNzYWdlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJlamVjdGlvbiByZWFzb24uCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVhc29uKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlYXNvbjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/TaskQueue.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBBIHRhc2sgcXVldWUgdGhhdCBleGVjdXRlcyB0YXNrcyBpbiBhIEZJRk8gb3JkZXIuCiAqCiAqIFRoaXMgdGFzayBxdWV1ZSBjbGFzcyBpcyB1c2VkIHRvIHNldHRsZSBwcm9taXNlcyBhc3luY2hyb25vdXNseSBhbmQKICogbWFpbnRhaW5zIGEgY29uc3RhbnQgc3RhY2sgc2l6ZS4gWW91IGNhbiB1c2UgdGhlIHRhc2sgcXVldWUgYXN5bmNocm9ub3VzbHkKICogYnkgY2FsbGluZyB0aGUgYHJ1bigpYCBmdW5jdGlvbiBvZiB0aGUgZ2xvYmFsIHRhc2sgcXVldWUgaW4gYW4gZXZlbnQgbG9vcC4KICoKICogICAgIEd1enpsZUh0dHBcUHJvbWlzZVxVdGlsczo6cXVldWUoKS0+cnVuKCk7CiAqCiAqIEBmaW5hbAogKi8KY2xhc3MgVGFza1F1ZXVlIGltcGxlbWVudHMgVGFza1F1ZXVlSW50ZXJmYWNlCnsKICAgIHByaXZhdGUgJGVuYWJsZVNodXRkb3duID0gdHJ1ZTsKICAgIHByaXZhdGUgJHF1ZXVlID0gW107CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGJvb2wgJHdpdGhTaHV0ZG93biA9IHRydWUpCiAgICB7CiAgICAgICAgaWYgKCR3aXRoU2h1dGRvd24pIHsKICAgICAgICAgICAgcmVnaXN0ZXJfc2h1dGRvd25fZnVuY3Rpb24oZnVuY3Rpb24gKCk6IHZvaWQgewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5lbmFibGVTaHV0ZG93bikgewogICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgcnVuIHRoZSB0YXNrcyBpZiBhbiBFX0VSUk9SIGRpZG4ndCBvY2N1ci4KICAgICAgICAgICAgICAgICAgICAkZXJyID0gZXJyb3JfZ2V0X2xhc3QoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoISRlcnIgfHwgKCRlcnJbJ3R5cGUnXSBeIEVfRVJST1IpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5ydW4oKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFbXB0eSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICEkdGhpcy0+cXVldWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZChjYWxsYWJsZSAkdGFzayk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+cXVldWVbXSA9ICR0YXNrOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBydW4oKTogdm9pZAogICAgewogICAgICAgIHdoaWxlICgkdGFzayA9IGFycmF5X3NoaWZ0KCR0aGlzLT5xdWV1ZSkpIHsKICAgICAgICAgICAgLyoqIEB2YXIgY2FsbGFibGUgJHRhc2sgKi8KICAgICAgICAgICAgJHRhc2soKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgdGFzayBxdWV1ZSB3aWxsIGJlIHJ1biBhbmQgZXhoYXVzdGVkIGJ5IGRlZmF1bHQgd2hlbiB0aGUgcHJvY2VzcwogICAgICogZXhpdHMgSUZGIHRoZSBleGl0IGlzIG5vdCB0aGUgcmVzdWx0IG9mIGEgUEhQIEVfRVJST1IgZXJyb3IuCiAgICAgKgogICAgICogWW91IGNhbiBkaXNhYmxlIHJ1bm5pbmcgdGhlIGF1dG9tYXRpYyBzaHV0ZG93biBvZiB0aGUgcXVldWUgYnkgY2FsbGluZwogICAgICogdGhpcyBmdW5jdGlvbi4gSWYgeW91IGRpc2FibGUgdGhlIHRhc2sgcXVldWUgc2h1dGRvd24gcHJvY2VzcywgdGhlbiB5b3UKICAgICAqIE1VU1QgZWl0aGVyIHJ1biB0aGUgdGFzayBxdWV1ZSAoYXMgYSByZXN1bHQgb2YgcnVubmluZyB5b3VyIGV2ZW50IGxvb3AKICAgICAqIG9yIG1hbnVhbGx5IHVzaW5nIHRoZSBydW4oKSBtZXRob2QpIG9yIHdhaXQgb24gZWFjaCBvdXRzdGFuZGluZyBwcm9taXNlLgogICAgICoKICAgICAqIE5vdGU6IFRoaXMgc2h1dGRvd24gd2lsbCBvY2N1ciBiZWZvcmUgYW55IGRlc3RydWN0b3JzIGFyZSB0cmlnZ2VyZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXNhYmxlU2h1dGRvd24oKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5lbmFibGVTaHV0ZG93biA9IGZhbHNlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/TaskQueueInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCmludGVyZmFjZSBUYXNrUXVldWVJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFbXB0eSgpOiBib29sOwoKICAgIC8qKgogICAgICogQWRkcyBhIHRhc2sgdG8gdGhlIHF1ZXVlIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB0aGUgbmV4dCB0aW1lIHJ1biBpcwogICAgICogY2FsbGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKGNhbGxhYmxlICR0YXNrKTogdm9pZDsKCiAgICAvKioKICAgICAqIEV4ZWN1dGUgYWxsIG9mIHRoZSBwZW5kaW5nIHRhc2sgaW4gdGhlIHF1ZXVlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcnVuKCk6IHZvaWQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/Utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCmZpbmFsIGNsYXNzIFV0aWxzCnsKICAgIC8qKgogICAgICogR2V0IHRoZSBnbG9iYWwgdGFzayBxdWV1ZSB1c2VkIGZvciBwcm9taXNlIHJlc29sdXRpb24uCiAgICAgKgogICAgICogVGhpcyB0YXNrIHF1ZXVlIE1VU1QgYmUgcnVuIGluIGFuIGV2ZW50IGxvb3AgaW4gb3JkZXIgZm9yIHByb21pc2VzIHRvIGJlCiAgICAgKiBzZXR0bGVkIGFzeW5jaHJvbm91c2x5LiBJdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcnVuIHdoZW4gc3luY2hyb25vdXNseQogICAgICogd2FpdGluZyBvbiBhIHByb21pc2UuCiAgICAgKgogICAgICogPGNvZGU+CiAgICAgKiB3aGlsZSAoJGV2ZW50TG9vcC0+aXNSdW5uaW5nKCkpIHsKICAgICAqICAgICBHdXp6bGVIdHRwXFByb21pc2VcVXRpbHM6OnF1ZXVlKCktPnJ1bigpOwogICAgICogfQogICAgICogPC9jb2RlPgogICAgICoKICAgICAqIEBwYXJhbSBUYXNrUXVldWVJbnRlcmZhY2V8bnVsbCAkYXNzaWduIE9wdGlvbmFsbHkgc3BlY2lmeSBhIG5ldyBxdWV1ZSBpbnN0YW5jZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBxdWV1ZSg/VGFza1F1ZXVlSW50ZXJmYWNlICRhc3NpZ24gPSBudWxsKTogVGFza1F1ZXVlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgc3RhdGljICRxdWV1ZTsKCiAgICAgICAgaWYgKCRhc3NpZ24pIHsKICAgICAgICAgICAgJHF1ZXVlID0gJGFzc2lnbjsKICAgICAgICB9IGVsc2VpZiAoISRxdWV1ZSkgewogICAgICAgICAgICAkcXVldWUgPSBuZXcgVGFza1F1ZXVlKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHF1ZXVlOwogICAgfQoKICAgIC8qKgogICAgICogQWRkcyBhIGZ1bmN0aW9uIHRvIHJ1biBpbiB0aGUgdGFzayBxdWV1ZSB3aGVuIGl0IGlzIG5leHQgYHJ1bigpYCBhbmQKICAgICAqIHJldHVybnMgYSBwcm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkIG9yIHJlamVjdGVkIHdpdGggdGhlIHJlc3VsdC4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJHRhc2sgVGFzayBmdW5jdGlvbiB0byBydW4uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdGFzayhjYWxsYWJsZSAkdGFzayk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkcXVldWUgPSBzZWxmOjpxdWV1ZSgpOwogICAgICAgICRwcm9taXNlID0gbmV3IFByb21pc2UoWyRxdWV1ZSwgJ3J1biddKTsKICAgICAgICAkcXVldWUtPmFkZChmdW5jdGlvbiAoKSB1c2UgKCR0YXNrLCAkcHJvbWlzZSk6IHZvaWQgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKElzOjpwZW5kaW5nKCRwcm9taXNlKSkgewogICAgICAgICAgICAgICAgICAgICRwcm9taXNlLT5yZXNvbHZlKCR0YXNrKCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgICAgICAkcHJvbWlzZS0+cmVqZWN0KCRlKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICByZXR1cm4gJHByb21pc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBTeW5jaHJvbm91c2x5IHdhaXRzIG9uIGEgcHJvbWlzZSB0byByZXNvbHZlIGFuZCByZXR1cm5zIGFuIGluc3BlY3Rpb24KICAgICAqIHN0YXRlIGFycmF5LgogICAgICoKICAgICAqIFJldHVybnMgYSBzdGF0ZSBhc3NvY2lhdGl2ZSBhcnJheSBjb250YWluaW5nIGEgInN0YXRlIiBrZXkgbWFwcGluZyB0byBhCiAgICAgKiB2YWxpZCBwcm9taXNlIHN0YXRlLiBJZiB0aGUgc3RhdGUgb2YgdGhlIHByb21pc2UgaXMgImZ1bGZpbGxlZCIsIHRoZQogICAgICogYXJyYXkgd2lsbCBjb250YWluIGEgInZhbHVlIiBrZXkgbWFwcGluZyB0byB0aGUgZnVsZmlsbGVkIHZhbHVlIG9mIHRoZQogICAgICogcHJvbWlzZS4gSWYgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQsIHRoZSBhcnJheSB3aWxsIGNvbnRhaW4gYSAicmVhc29uIgogICAgICoga2V5IG1hcHBpbmcgdG8gdGhlIHJlamVjdGlvbiByZWFzb24gb2YgdGhlIHByb21pc2UuCiAgICAgKgogICAgICogQHBhcmFtIFByb21pc2VJbnRlcmZhY2UgJHByb21pc2UgUHJvbWlzZSBvciB2YWx1ZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbnNwZWN0KFByb21pc2VJbnRlcmZhY2UgJHByb21pc2UpOiBhcnJheQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICAnc3RhdGUnID0+IFByb21pc2VJbnRlcmZhY2U6OkZVTEZJTExFRCwKICAgICAgICAgICAgICAgICd2YWx1ZScgPT4gJHByb21pc2UtPndhaXQoKSwKICAgICAgICAgICAgXTsKICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgIGlmICgkZSBpbnN0YW5jZW9mIEFnZ3JlZ2F0ZUV4Y2VwdGlvbikgewogICAgICAgICAgICAgICAgcmV0dXJuIFsnc3RhdGUnID0+IFByb21pc2VJbnRlcmZhY2U6OlJFSkVDVEVELCAncmVhc29uJyA9PiAkZV07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkZSBpbnN0YW5jZW9mIFJlamVjdGlvbkV4Y2VwdGlvbikgewogICAgICAgICAgICAgICAgcmV0dXJuIFsnc3RhdGUnID0+IFByb21pc2VJbnRlcmZhY2U6OlJFSkVDVEVELCAncmVhc29uJyA9PiAkZS0+Z2V0UmVhc29uKCldOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gWydzdGF0ZScgPT4gUHJvbWlzZUludGVyZmFjZTo6UkVKRUNURUQsICdyZWFzb24nID0+ICRlXTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBXYWl0cyBvbiBhbGwgb2YgdGhlIHByb3ZpZGVkIHByb21pc2VzLCBidXQgZG9lcyBub3QgdW53cmFwIHJlamVjdGVkCiAgICAgKiBwcm9taXNlcyBhcyB0aHJvd24gZXhjZXB0aW9uLgogICAgICoKICAgICAqIFJldHVybnMgYW4gYXJyYXkgb2YgaW5zcGVjdGlvbiBzdGF0ZSBhcnJheXMuCiAgICAgKgogICAgICogQHNlZSBpbnNwZWN0IGZvciB0aGUgaW5zcGVjdGlvbiBzdGF0ZSBhcnJheSBmb3JtYXQuCiAgICAgKgogICAgICogQHBhcmFtIFByb21pc2VJbnRlcmZhY2VbXSAkcHJvbWlzZXMgVHJhdmVyc2FibGUgb2YgcHJvbWlzZXMgdG8gd2FpdCB1cG9uLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGluc3BlY3RBbGwoJHByb21pc2VzKTogYXJyYXkKICAgIHsKICAgICAgICAkcHJvbWlzZXMgPSBzZWxmOjpwcmVwYXJlSXRlcmFibGUoJHByb21pc2VzLCBfX0ZVTkNUSU9OX18pOwoKICAgICAgICAkcmVzdWx0cyA9IFtdOwogICAgICAgIGZvcmVhY2ggKCRwcm9taXNlcyBhcyAka2V5ID0+ICRwcm9taXNlKSB7CiAgICAgICAgICAgICRyZXN1bHRzWyRrZXldID0gc2VsZjo6aW5zcGVjdCgkcHJvbWlzZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBXYWl0cyBvbiBhbGwgb2YgdGhlIHByb3ZpZGVkIHByb21pc2VzIGFuZCByZXR1cm5zIHRoZSBmdWxmaWxsZWQgdmFsdWVzLgogICAgICoKICAgICAqIFJldHVybnMgYW4gYXJyYXkgdGhhdCBjb250YWlucyB0aGUgdmFsdWUgb2YgZWFjaCBwcm9taXNlIChpbiB0aGUgc2FtZQogICAgICogb3JkZXIgdGhlIHByb21pc2VzIHdlcmUgcHJvdmlkZWQpLiBBbiBleGNlcHRpb24gaXMgdGhyb3duIGlmIGFueSBvZiB0aGUKICAgICAqIHByb21pc2VzIGFyZSByZWplY3RlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gaXRlcmFibGU8UHJvbWlzZUludGVyZmFjZT4gJHByb21pc2VzIEl0ZXJhYmxlIG9mIFByb21pc2VJbnRlcmZhY2Ugb2JqZWN0cyB0byB3YWl0IG9uLgogICAgICoKICAgICAqIEB0aHJvd3MgXFRocm93YWJsZSBvbiBlcnJvcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVud3JhcCgkcHJvbWlzZXMpOiBhcnJheQogICAgewogICAgICAgICRwcm9taXNlcyA9IHNlbGY6OnByZXBhcmVJdGVyYWJsZSgkcHJvbWlzZXMsIF9fRlVOQ1RJT05fXyk7CgogICAgICAgICRyZXN1bHRzID0gW107CiAgICAgICAgZm9yZWFjaCAoJHByb21pc2VzIGFzICRrZXkgPT4gJHByb21pc2UpIHsKICAgICAgICAgICAgJHJlc3VsdHNbJGtleV0gPSAkcHJvbWlzZS0+d2FpdCgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHRzOwogICAgfQoKICAgIC8qKgogICAgICogR2l2ZW4gYW4gYXJyYXkgb2YgcHJvbWlzZXMsIHJldHVybiBhIHByb21pc2UgdGhhdCBpcyBmdWxmaWxsZWQgd2hlbiBhbGwKICAgICAqIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkgYXJlIGZ1bGZpbGxlZC4KICAgICAqCiAgICAgKiBUaGUgcHJvbWlzZSdzIGZ1bGZpbGxtZW50IHZhbHVlIGlzIGFuIGFycmF5IHdpdGggZnVsZmlsbG1lbnQgdmFsdWVzIGF0CiAgICAgKiByZXNwZWN0aXZlIHBvc2l0aW9ucyB0byB0aGUgb3JpZ2luYWwgYXJyYXkuIElmIGFueSBwcm9taXNlIGluIHRoZSBhcnJheQogICAgICogcmVqZWN0cywgdGhlIHJldHVybmVkIHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCB0aGUgcmVqZWN0aW9uIHJlYXNvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHByb21pc2VzICBQcm9taXNlcyBvciB2YWx1ZXMuCiAgICAgKiBAcGFyYW0gYm9vbCAgJHJlY3Vyc2l2ZSBJZiB0cnVlLCByZXNvbHZlcyBuZXcgcHJvbWlzZXMgdGhhdCBtaWdodCBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIHN0YWNrIGR1cmluZyBpdHMgb3duIHJlc29sdXRpb24uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYWxsKCRwcm9taXNlcywgYm9vbCAkcmVjdXJzaXZlID0gZmFsc2UpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJHByb21pc2VzID0gc2VsZjo6cHJlcGFyZUl0ZXJhYmxlKCRwcm9taXNlcywgX19GVU5DVElPTl9fKTsKCiAgICAgICAgJHJlc3VsdHMgPSBbXTsKICAgICAgICAkcHJvbWlzZSA9IEVhY2g6Om9mKAogICAgICAgICAgICAkcHJvbWlzZXMsCiAgICAgICAgICAgIGZ1bmN0aW9uICgkdmFsdWUsICRpZHgpIHVzZSAoJiRyZXN1bHRzKTogdm9pZCB7CiAgICAgICAgICAgICAgICAkcmVzdWx0c1skaWR4XSA9ICR2YWx1ZTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZnVuY3Rpb24gKCRyZWFzb24sICRpZHgsIFByb21pc2UgJGFnZ3JlZ2F0ZSk6IHZvaWQgewogICAgICAgICAgICAgICAgaWYgKElzOjpwZW5kaW5nKCRhZ2dyZWdhdGUpKSB7CiAgICAgICAgICAgICAgICAgICAgJGFnZ3JlZ2F0ZS0+cmVqZWN0KCRyZWFzb24pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgKS0+dGhlbihmdW5jdGlvbiAoKSB1c2UgKCYkcmVzdWx0cykgewogICAgICAgICAgICBrc29ydCgkcmVzdWx0cyk7CgogICAgICAgICAgICByZXR1cm4gJHJlc3VsdHM7CiAgICAgICAgfSk7CgogICAgICAgIGlmICh0cnVlID09PSAkcmVjdXJzaXZlKSB7CiAgICAgICAgICAgICRwcm9taXNlID0gJHByb21pc2UtPnRoZW4oZnVuY3Rpb24gKCRyZXN1bHRzKSB1c2UgKCRyZWN1cnNpdmUsICYkcHJvbWlzZXMpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwcm9taXNlcyBhcyAkcHJvbWlzZSkgewogICAgICAgICAgICAgICAgICAgIGlmIChJczo6cGVuZGluZygkcHJvbWlzZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmFsbCgkcHJvbWlzZXMsICRyZWN1cnNpdmUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3VsdHM7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRwcm9taXNlOwogICAgfQoKICAgIC8qKgogICAgICogSW5pdGlhdGUgYSBjb21wZXRpdGl2ZSByYWNlIGJldHdlZW4gbXVsdGlwbGUgcHJvbWlzZXMgb3IgdmFsdWVzICh2YWx1ZXMKICAgICAqIHdpbGwgYmVjb21lIGltbWVkaWF0ZWx5IGZ1bGZpbGxlZCBwcm9taXNlcykuCiAgICAgKgogICAgICogV2hlbiBjb3VudCBhbW91bnQgb2YgcHJvbWlzZXMgaGF2ZSBiZWVuIGZ1bGZpbGxlZCwgdGhlIHJldHVybmVkIHByb21pc2UKICAgICAqIGlzIGZ1bGZpbGxlZCB3aXRoIGFuIGFycmF5IHRoYXQgY29udGFpbnMgdGhlIGZ1bGZpbGxtZW50IHZhbHVlcyBvZiB0aGUKICAgICAqIHdpbm5lcnMgaW4gb3JkZXIgb2YgcmVzb2x1dGlvbi4KICAgICAqCiAgICAgKiBUaGlzIHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBhIHtAc2VlIEFnZ3JlZ2F0ZUV4Y2VwdGlvbn0gaWYgdGhlIG51bWJlcgogICAgICogb2YgZnVsZmlsbGVkIHByb21pc2VzIGlzIGxlc3MgdGhhbiB0aGUgZGVzaXJlZCAkY291bnQuCiAgICAgKgogICAgICogQHBhcmFtIGludCAgICRjb3VudCAgICBUb3RhbCBudW1iZXIgb2YgcHJvbWlzZXMuCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHByb21pc2VzIFByb21pc2VzIG9yIHZhbHVlcy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzb21lKGludCAkY291bnQsICRwcm9taXNlcyk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkcHJvbWlzZXMgPSBzZWxmOjpwcmVwYXJlSXRlcmFibGUoJHByb21pc2VzLCBfX0ZVTkNUSU9OX18pOwoKICAgICAgICAkcmVzdWx0cyA9IFtdOwogICAgICAgICRyZWplY3Rpb25zID0gW107CgogICAgICAgIHJldHVybiBFYWNoOjpvZigKICAgICAgICAgICAgJHByb21pc2VzLAogICAgICAgICAgICBmdW5jdGlvbiAoJHZhbHVlLCAkaWR4LCBQcm9taXNlSW50ZXJmYWNlICRwKSB1c2UgKCYkcmVzdWx0cywgJGNvdW50KTogdm9pZCB7CiAgICAgICAgICAgICAgICBpZiAoSXM6OnNldHRsZWQoJHApKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHJlc3VsdHNbJGlkeF0gPSAkdmFsdWU7CiAgICAgICAgICAgICAgICBpZiAoY291bnQoJHJlc3VsdHMpID49ICRjb3VudCkgewogICAgICAgICAgICAgICAgICAgICRwLT5yZXNvbHZlKG51bGwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBmdW5jdGlvbiAoJHJlYXNvbikgdXNlICgmJHJlamVjdGlvbnMpOiB2b2lkIHsKICAgICAgICAgICAgICAgICRyZWplY3Rpb25zW10gPSAkcmVhc29uOwogICAgICAgICAgICB9CiAgICAgICAgKS0+dGhlbigKICAgICAgICAgICAgZnVuY3Rpb24gKCkgdXNlICgmJHJlc3VsdHMsICYkcmVqZWN0aW9ucywgJGNvdW50KSB7CiAgICAgICAgICAgICAgICBpZiAoY291bnQoJHJlc3VsdHMpICE9PSAkY291bnQpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQWdncmVnYXRlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAnTm90IGVub3VnaCBwcm9taXNlcyB0byBmdWxmaWxsIGNvdW50JywKICAgICAgICAgICAgICAgICAgICAgICAgJHJlamVjdGlvbnMKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAga3NvcnQoJHJlc3VsdHMpOwoKICAgICAgICAgICAgICAgIHJldHVybiBhcnJheV92YWx1ZXMoJHJlc3VsdHMpOwogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIExpa2Ugc29tZSgpLCB3aXRoIDEgYXMgY291bnQuIEhvd2V2ZXIsIGlmIHRoZSBwcm9taXNlIGZ1bGZpbGxzLCB0aGUKICAgICAqIGZ1bGZpbGxtZW50IHZhbHVlIGlzIG5vdCBhbiBhcnJheSBvZiAxIGJ1dCB0aGUgdmFsdWUgZGlyZWN0bHkuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICRwcm9taXNlcyBQcm9taXNlcyBvciB2YWx1ZXMuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYW55KCRwcm9taXNlcyk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkcHJvbWlzZXMgPSBzZWxmOjpwcmVwYXJlSXRlcmFibGUoJHByb21pc2VzLCBfX0ZVTkNUSU9OX18pOwoKICAgICAgICByZXR1cm4gc2VsZjo6c29tZSgxLCAkcHJvbWlzZXMpLT50aGVuKGZ1bmN0aW9uICgkdmFsdWVzKSB7CiAgICAgICAgICAgIHJldHVybiAkdmFsdWVzWzBdOwogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHByb21pc2UgdGhhdCBpcyBmdWxmaWxsZWQgd2hlbiBhbGwgb2YgdGhlIHByb3ZpZGVkIHByb21pc2VzIGhhdmUKICAgICAqIGJlZW4gZnVsZmlsbGVkIG9yIHJlamVjdGVkLgogICAgICoKICAgICAqIFRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGZ1bGZpbGxlZCB3aXRoIGFuIGFycmF5IG9mIGluc3BlY3Rpb24gc3RhdGUgYXJyYXlzLgogICAgICoKICAgICAqIEBzZWUgaW5zcGVjdCBmb3IgdGhlIGluc3BlY3Rpb24gc3RhdGUgYXJyYXkgZm9ybWF0LgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkcHJvbWlzZXMgUHJvbWlzZXMgb3IgdmFsdWVzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNldHRsZSgkcHJvbWlzZXMpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJHByb21pc2VzID0gc2VsZjo6cHJlcGFyZUl0ZXJhYmxlKCRwcm9taXNlcywgX19GVU5DVElPTl9fKTsKCiAgICAgICAgJHJlc3VsdHMgPSBbXTsKCiAgICAgICAgcmV0dXJuIEVhY2g6Om9mKAogICAgICAgICAgICAkcHJvbWlzZXMsCiAgICAgICAgICAgIGZ1bmN0aW9uICgkdmFsdWUsICRpZHgpIHVzZSAoJiRyZXN1bHRzKTogdm9pZCB7CiAgICAgICAgICAgICAgICAkcmVzdWx0c1skaWR4XSA9IFsnc3RhdGUnID0+IFByb21pc2VJbnRlcmZhY2U6OkZVTEZJTExFRCwgJ3ZhbHVlJyA9PiAkdmFsdWVdOwogICAgICAgICAgICB9LAogICAgICAgICAgICBmdW5jdGlvbiAoJHJlYXNvbiwgJGlkeCkgdXNlICgmJHJlc3VsdHMpOiB2b2lkIHsKICAgICAgICAgICAgICAgICRyZXN1bHRzWyRpZHhdID0gWydzdGF0ZScgPT4gUHJvbWlzZUludGVyZmFjZTo6UkVKRUNURUQsICdyZWFzb24nID0+ICRyZWFzb25dOwogICAgICAgICAgICB9CiAgICAgICAgKS0+dGhlbihmdW5jdGlvbiAoKSB1c2UgKCYkcmVzdWx0cykgewogICAgICAgICAgICBrc29ydCgkcmVzdWx0cyk7CgogICAgICAgICAgICByZXR1cm4gJHJlc3VsdHM7CiAgICAgICAgfSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcHJlcGFyZUl0ZXJhYmxlKCRwcm9taXNlcywgc3RyaW5nICRtZXRob2QpOiBpdGVyYWJsZQogICAgewogICAgICAgIGlmIChpc19pdGVyYWJsZSgkcHJvbWlzZXMpKSB7CiAgICAgICAgICAgIHJldHVybiAkcHJvbWlzZXM7CiAgICAgICAgfQoKICAgICAgICBzZWxmOjp0cmlnZ2VyTm9uSXRlcmFibGVEZXByZWNhdGlvbigkcHJvbWlzZXMsICRtZXRob2QpOwoKICAgICAgICByZXR1cm4gWyRwcm9taXNlc107CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gdHJpZ2dlck5vbkl0ZXJhYmxlRGVwcmVjYXRpb24oJHByb21pc2VzLCBzdHJpbmcgJG1ldGhvZCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoaXNfaXRlcmFibGUoJHByb21pc2VzKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHJvbWlzZXMnLAogICAgICAgICAgICAnMi41JywKICAgICAgICAgICAgJ1Bhc3NpbmcgYSBub24taXRlcmFibGUgdG8gJXM6OiVzKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wcm9taXNlcyAzLjAgd2lsbCByZXF1aXJlIGFuIGl0ZXJhYmxlLicsCiAgICAgICAgICAgIHNlbGY6OmNsYXNzLAogICAgICAgICAgICAkbWV0aG9kCiAgICAgICAgKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/UPGRADING.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R3V6emxlIFByb21pc2VzIFVwZ3JhZGUgR3VpZGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCjEueCB0byAyLjAKLS0tLS0tLS0tLQoKR3V6emxlIFByb21pc2VzIDIuMCBpcyBhIG1ham9yIHJlbGVhc2UgdGhhdCByZW1vdmVzIGRlcHJlY2F0ZWQgQVBJcywgcmFpc2VzIHRoZQptaW5pbXVtIFBIUCB2ZXJzaW9uLCBhbmQgYWRkcyBQSFAgNyBwYXJhbWV0ZXIgYW5kIHJldHVybiB0eXBlcy4gQXBwbGljYXRpb25zIHRoYXQKb25seSB1c2UgdGhlIG9iamVjdC1vcmllbnRlZCBBUEkgc2hvdWxkIHVzdWFsbHkgbmVlZCBzbWFsbCBjaGFuZ2VzLiBBcHBsaWNhdGlvbnMKdGhhdCBjYWxsIGhlbHBlciBmdW5jdGlvbnMsIGltcGxlbWVudCBwYWNrYWdlIGludGVyZmFjZXMsIGV4dGVuZCBwYWNrYWdlIGNsYXNzZXMsCm9yIHBhc3MgaW52YWxpZCBhcmd1bWVudCB0eXBlcyBuZWVkIGNsb3NlciByZXZpZXcuCgojIyMjIFBIUCBWZXJzaW9uIGFuZCBEZXBlbmRlbmNpZXMKCkd1enpsZSBQcm9taXNlcyAyLjAgcmVxdWlyZXMgUEhQIGBeNy4yLjUgfHwgXjguMGAuIEd1enpsZSBQcm9taXNlcyAxLngKc3VwcG9ydGVkIFBIUCBgPj01LjVgLgoKIyMjIyBQSFAgNyBUeXBlIEhpbnRzIGFuZCBSZXR1cm4gVHlwZXMKClR5cGUgaGludHMgYW5kIHJldHVybiB0eXBlcyB3ZXJlIGFkZGVkIHdoZXJldmVyIHBvc3NpYmxlLiBQbGVhc2UgbWFrZSBzdXJlOgoKLSBZb3UgcGFzcyB2YWx1ZXMgb2YgdGhlIGRvY3VtZW50ZWQgdHlwZSB3aGVuIGNhbGxpbmcgbWV0aG9kcyBhbmQgZnVuY3Rpb25zLgotIENsYXNzZXMgdGhhdCBpbXBsZW1lbnQgYFByb21pc2VJbnRlcmZhY2VgLCBgUHJvbWlzb3JJbnRlcmZhY2VgLCBvcgogIGBUYXNrUXVldWVJbnRlcmZhY2VgIHVwZGF0ZSBtZXRob2Qgc2lnbmF0dXJlcyB0byByZW1haW4gY29tcGF0aWJsZS4KLSBDbGFzc2VzIHRoYXQgZXh0ZW5kIEd1enpsZSBQcm9taXNlcyBjbGFzc2VzIHVwZGF0ZSBhbnkgb3ZlcnJpZGRlbiBtZXRob2QKICBzaWduYXR1cmVzIHRvIHJlbWFpbiBjb21wYXRpYmxlLgotIENvZGUgdGhhdCBleHBlY3RlZCBwYWNrYWdlLXNwZWNpZmljIGV4Y2VwdGlvbnMgZm9yIGludmFsaWQgYXJndW1lbnQgdHlwZXMgbWF5CiAgbm93IHJlY2VpdmUgUEhQIGBUeXBlRXJyb3JgIGV4Y2VwdGlvbnMgaW5zdGVhZC4KCiMjIyMgU29mdC1GaW5hbCBDbGFzc2VzCgpBbGwgcHJldmlvdXNseSBub24tZmluYWwgbm9uLWV4Y2VwdGlvbiBjbGFzc2VzIGFyZSBub3cgZmluYWwgb3IgYW5ub3RhdGVkIHdpdGgKYEBmaW5hbGAuIElmIHlvdXIgY29kZSBleHRlbmRzIG9uZSBvZiB0aGVzZSBjbGFzc2VzLCByZXBsYWNlIGluaGVyaXRhbmNlIHdpdGgKY29tcG9zaXRpb24gb3IgaW1wbGVtZW50IHRoZSByZWxldmFudCBpbnRlcmZhY2UgZGlyZWN0bHkuCgojIyMjIFJlbW92ZWQgRnVuY3Rpb24gQVBJCgpUaGUgc3RhdGljIEFQSSB3YXMgaW50cm9kdWNlZCBpbiAxLjQuMCB0byBtaXRpZ2F0ZSBwcm9ibGVtcyB3aXRoIGZ1bmN0aW9ucwpjb25mbGljdGluZyBiZXR3ZWVuIGdsb2JhbCBhbmQgbG9jYWwgY29waWVzIG9mIHRoZSBwYWNrYWdlLiBUaGUgZnVuY3Rpb24gQVBJIHdhcwpyZW1vdmVkIGluIDIuMC4wLCBhbG9uZyB3aXRoIHRoZSBDb21wb3NlciBgZmlsZXNgIGF1dG9sb2FkIGVudHJ5IHRoYXQgbG9hZGVkCmBzcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwYC4KClJlcGxhY2UgbmFtZXNwYWNlZCBmdW5jdGlvbiBjYWxscyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHN0YXRpYyBtZXRob2RzIGluIHRoZQpgR3V6emxlSHR0cFxQcm9taXNlYCBuYW1lc3BhY2U6CgpgYGBwaHAKLy8gQmVmb3JlOgp1c2UgZnVuY3Rpb24gR3V6emxlSHR0cFxQcm9taXNlXHByb21pc2VfZm9yOwoKJHByb21pc2UgPSBwcm9taXNlX2ZvcigndmFsdWUnKTsKCi8vIEFmdGVyOgp1c2UgR3V6emxlSHR0cFxQcm9taXNlXENyZWF0ZTsKCiRwcm9taXNlID0gQ3JlYXRlOjpwcm9taXNlRm9yKCd2YWx1ZScpOwpgYGAKCnwgT3JpZ2luYWwgRnVuY3Rpb24gfCBSZXBsYWNlbWVudCBNZXRob2QgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBgcXVldWVgIHwgYFV0aWxzOjpxdWV1ZWAgfAp8IGB0YXNrYCB8IGBVdGlsczo6dGFza2AgfAp8IGBwcm9taXNlX2ZvcmAgfCBgQ3JlYXRlOjpwcm9taXNlRm9yYCB8CnwgYHJlamVjdGlvbl9mb3JgIHwgYENyZWF0ZTo6cmVqZWN0aW9uRm9yYCB8CnwgYGV4Y2VwdGlvbl9mb3JgIHwgYENyZWF0ZTo6ZXhjZXB0aW9uRm9yYCB8CnwgYGl0ZXJfZm9yYCB8IGBDcmVhdGU6Oml0ZXJGb3JgIHwKfCBgaW5zcGVjdGAgfCBgVXRpbHM6Omluc3BlY3RgIHwKfCBgaW5zcGVjdF9hbGxgIHwgYFV0aWxzOjppbnNwZWN0QWxsYCB8CnwgYHVud3JhcGAgfCBgVXRpbHM6OnVud3JhcGAgfAp8IGBhbGxgIHwgYFV0aWxzOjphbGxgIHwKfCBgc29tZWAgfCBgVXRpbHM6OnNvbWVgIHwKfCBgYW55YCB8IGBVdGlsczo6YW55YCB8CnwgYHNldHRsZWAgfCBgVXRpbHM6OnNldHRsZWAgfAp8IGBlYWNoYCB8IGBFYWNoOjpvZmAgfAp8IGBlYWNoX2xpbWl0YCB8IGBFYWNoOjpvZkxpbWl0YCB8CnwgYGVhY2hfbGltaXRfYWxsYCB8IGBFYWNoOjpvZkxpbWl0QWxsYCB8CnwgYCFpc19mdWxmaWxsZWRgIHwgYElzOjpwZW5kaW5nYCB8CnwgYGlzX2Z1bGZpbGxlZGAgfCBgSXM6OmZ1bGZpbGxlZGAgfAp8IGBpc19yZWplY3RlZGAgfCBgSXM6OnJlamVjdGVkYCB8CnwgYGlzX3NldHRsZWRgIHwgYElzOjpzZXR0bGVkYCB8CnwgYGNvcm91dGluZWAgfCBgQ29yb3V0aW5lOjpvZmAgfAoKRm9yIHRoZSBmdWxsIDIuMCBkaWZmLCBzZWUKaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wcm9taXNlcy9jb21wYXJlLzEuNS4zLi4uMi4wLjAuCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDaGFuZ2UgTG9nCgpBbGwgbm90YWJsZSBjaGFuZ2VzIHRvIHRoaXMgcHJvamVjdCB3aWxsIGJlIGRvY3VtZW50ZWQgaW4gdGhpcyBmaWxlLgoKVGhlIGZvcm1hdCBpcyBiYXNlZCBvbiBbS2VlcCBhIENoYW5nZWxvZ10oaHR0cHM6Ly9rZWVwYWNoYW5nZWxvZy5jb20vZW4vMS4wLjAvKQphbmQgdGhpcyBwcm9qZWN0IGFkaGVyZXMgdG8gW1NlbWFudGljIFZlcnNpb25pbmddKGh0dHBzOi8vc2VtdmVyLm9yZy9zcGVjL3YyLjAuMC5odG1sKS4KCiMjIDIuMTIuMCAtIDIwMjYtMDYtMTYKCiMjIyBEZXByZWNhdGVkCgotIERlcHJlY2F0ZWQgbm9uLWZpbml0ZSBmbG9hdCB2YWx1ZXMgaW4gYFF1ZXJ5OjpidWlsZCgpYCB0aGF0IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVqZWN0cwotIERlcHJlY2F0ZWQgbm9uLWZpbml0ZSBmbG9hdCBtdWx0aXBhcnQgY29udGVudHMgdGhhdCBndXp6bGVodHRwL3BzcjcgMy4wIHJlamVjdHMKLSBEZXByZWNhdGVkIG5vbi1zdHJpbmcgc2NhbGFyIGJvZGllcyBpbiBgVXRpbHM6OnN0cmVhbUZvcigpYDsgY2FzdCB0aGVtIHRvIGEgc3RyaW5nIGZvciAzLjAKLSBEZXByZWNhdGVkIG5vbi1zdHJpbmcgYFVyaTo6d2l0aFF1ZXJ5VmFsdWVzKClgIHZhbHVlczsgY2FzdCB0aGVtIHRvIGEgc3RyaW5nIGZvciAzLjAKCiMjIDIuMTEuMSAtIDIwMjYtMDYtMTIKCiMjIyBGaXhlZAoKLSBGaXhlZCBub24tZmluaXRlIGZsb2F0IHZhbHVlcyBlbWl0dGluZyBjb2VyY2lvbiB3YXJuaW5ncyBvbiBQSFAgOC41CgojIyAyLjExLjAgLSAyMDI2LTA2LTAyCgojIyMgQ2hhbmdlZAoKLSBDaGFuZ2VkIGBVdGlsczo6bW9kaWZ5UmVxdWVzdCgpYCB0byByZWplY3QgY29uZmxpY3RpbmcgVVJJIGFuZCBgSG9zdGAgaGVhZGVyIGNoYW5nZXMgaW4gdGhlIHNhbWUgY2FsbAotIENoYW5nZWQgYEhlYWRlcjo6cGFyc2UoKWAgdG8gc3BsaXQgc2VtaWNvbG9uLXNlcGFyYXRlZCBwYXJhbWV0ZXJzIHdpdGhvdXQgcmVwZWF0ZWQgcmVndWxhciBleHByZXNzaW9uIGxvb2thaGVhZHMKLSBDaGFuZ2VkIGBVcmlDb21wYXJhdG9yOjppc0Nyb3NzT3JpZ2luKClgIHNvIG9ubHkgSFRUUCBhbmQgSFRUUFMgbWlzc2luZyBwb3J0cyByZWNlaXZlIGltcGxpY2l0IGRlZmF1bHQgcG9ydHMKCiMjIyBEZXByZWNhdGVkCgotIERlcHJlY2F0ZWQgaW52YWxpZCBQU1ItNyBhcmd1bWVudHMgdGhhdCBndXp6bGVodHRwL3BzcjcgMy4wIHdpbGwgcmVxdWlyZSBuYXRpdmUgdHlwZXMgZm9yCi0gRGVwcmVjYXRlZCBub24tc3RyaW5nIGhlYWRlciB2YWx1ZXMgdGhhdCBndXp6bGVodHRwL3BzcjcgMy4wIHdpbGwgcmVqZWN0Ci0gRGVwcmVjYXRlZCBlbXB0eSBoZWFkZXIgdmFsdWUgYXJyYXlzIHRoYXQgZ3V6emxlaHR0cC9wc3I3IDMuMCB3aWxsIHJlamVjdAotIERlcHJlY2F0ZWQgVVJJIHNjaGVtZXMgdGhhdCBkbyBub3QgbWF0Y2ggZ3V6emxlaHR0cC9wc3I3IDMuMCBzeW50YXggcmVxdWlyZW1lbnRzCi0gRGVwcmVjYXRlZCBtdWx0aXBhcnQgYm91bmRhcnkgYW5kIGN1c3RvbSBwYXJ0IGhlYWRlciBtZXRhZGF0YSB0aGF0IGd1enpsZWh0dHAvcHNyNyAzLjAgd2lsbCByZWplY3QKLSBEZXByZWNhdGVkIHJlbGlhbmNlIG9uIGF1dG9tYXRpYyB1cHBlcmNhc2luZyBvZiByZXF1ZXN0IG1ldGhvZHM7IGd1enpsZWh0dHAvcHNyNyAzLjAgcHJlc2VydmVzIG1ldGhvZCBjYXNpbmcKLSBEZXByZWNhdGVkIGludmFsaWQgYFV0aWxzOjptb2RpZnlSZXF1ZXN0KClgIGNoYW5nZSB2YWx1ZXMgdGhhdCBndXp6bGVodHRwL3BzcjcgMy4wIHdpbGwgcmVqZWN0CgojIyMgRml4ZWQKCi0gRml4ZWQgYFV0aWxzOjpjb3B5VG9TdHJlYW0oKWAgdG8gcmV0cnkgc2hvcnQgZGVzdGluYXRpb24gd3JpdGVzIGluc3RlYWQgb2YgZHJvcHBpbmcgdGhlIHVud3JpdHRlbiByZW1haW5kZXIKLSBGaXhlZCBgSGVhZGVyOjpwYXJzZSgpYCBzcGxpdHRpbmcgb2Ygc2VtaWNvbG9uLXNlcGFyYXRlZCBwYXJhbWV0ZXJzIHdpdGggZXNjYXBlZCBxdW90ZXMKCiMjIDIuMTAuNCAtIDIwMjYtMDUtMjkKCiMjIyBGaXhlZAoKLSBBcHBseSBgVXJpTm9ybWFsaXplcmAgcGVyY2VudC1lbmNvZGluZyBub3JtYWxpemF0aW9ucyB0byBVUkkgZnJhZ21lbnRzCi0gTWFrZSBgTGltaXRTdHJlYW06OmdldFNpemUoKWAgcmV0dXJuIGAwYCBmb3Igc2xpY2VzIHBhc3QgdGhlIHVuZGVybHlpbmcgc3RyZWFtIGVuZAotIE1ha2UgYEFwcGVuZFN0cmVhbTo6cmVhZCgpYCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIHdoZW4gbm8gc3RyZWFtcyBhcmUgYXR0YWNoZWQKLSBNYWtlIGBDYWNoaW5nU3RyZWFtOjpyZWFkKClgIHRocm93IG9uIGFuIGluY29tcGxldGUgY2FjaGUtdGFyZ2V0IHdyaXRlIGluc3RlYWQgb2Ygc2lsZW50bHkgY29ycnVwdGluZyByZXBsYXlzCi0gUHJldmVudCBgQ2FjaGluZ1N0cmVhbTo6c2VlaygpYCBmcm9tIGxvb3BpbmcgaW5kZWZpbml0ZWx5IHdoZW4gdGhlIHJlbW90ZSBzdHJlYW0gbWFrZXMgbm8gcHJvZ3Jlc3MKCiMjIDIuMTAuMyAtIDIwMjYtMDUtMjcKCiMjIyBGaXhlZAoKLSBGaXhlZCBVUkkgcGFyc2luZyBmb3IgSVB2NiBsaXRlcmFscyBjb250YWluaW5nIGVtYmVkZGVkIElQdjQgYWRkcmVzc2VzCi0gRml4ZWQgbWFsZm9ybWVkIFVURi04IFVSSSBzdHJpbmdzIGJlaW5nIHBhcnNlZCBhcyBlbXB0eSBVUklzCgojIyAyLjEwLjIgLSAyMDI2LTA1LTI1CgojIyMgU2VjdXJpdHkKCi0gUmVqZWN0IGNvbnRyb2wgYW5kIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiBVUkkgaG9zdCBjb21wb25lbnRzIChHSFNBLWhxN3YtbXgzZy0yOWh3KQotIFJlamVjdCBtYWxmb3JtZWQgSG9zdCB2YWx1ZXMgd2hlbiBjb25zdHJ1Y3RpbmcgcmVxdWVzdCBVUklzIChHSFNBLTM0eGctd2dqeC04eHBoKQoKIyMjIEZpeGVkCgotIE1ha2UgYFNlcnZlclJlcXVlc3Q6OmZyb21HbG9iYWxzKClgIHJvYnVzdCBhZ2FpbnN0IHVuZXhwZWN0ZWQgSFRUUCBoZWFkZXIgdmFsdWUgdHlwZXMgaW4gYCRfU0VSVkVSYAoKIyMgMi4xMC4xIC0gMjAyNi0wNS0yMAoKIyMjIEZpeGVkCgotIEZpeCBgVXRpbHM6Om1vZGlmeVJlcXVlc3QoKWAgd2l0aCBudW1lcmljIGhlYWRlciBuYW1lcwoKIyMgMi4xMC4wIC0gMjAyNi0wNS0xOQoKIyMjIENoYW5nZWQKCi0gSGFyZGVuIGBTZXJ2ZXJSZXF1ZXN0Ojpmcm9tR2xvYmFscygpYCBhZ2FpbnN0IG1hbGZvcm1lZCBgJF9TRVJWRVJgIHZhbHVlcwotIFByZXZlbnQgY3VzdG9tIHN0cmVhbSBtZXRhZGF0YSBmcm9tIGFmZmVjdGluZyBpbnRlcm5hbCBzaXplIGhhbmRsaW5nCi0gVGhyb3cgd2hlbiBgU3RyZWFtV3JhcHBlcjo6Z2V0UmVzb3VyY2UoKWAgY2Fubm90IGNyZWF0ZSBhIHJlc291cmNlCi0gUHJlc2VydmUgY3VzdG9tIHJlcXVlc3QgaW1wbGVtZW50YXRpb25zIGluIGBVdGlsczo6bW9kaWZ5UmVxdWVzdCgpYAotIFByZXNlcnZlIGN1c3RvbSBVUkkgaW1wbGVtZW50YXRpb25zIGluIGBVcmlSZXNvbHZlcjo6cmVzb2x2ZSgpYAotIE1ha2UgYFVyaTo6X190b1N0cmluZygpYCBzaWRlLWVmZmVjdC1mcmVlCgojIyAyLjkuMSAtIDIwMjYtMDUtMTkKCiMjIyBGaXhlZAoKLSBGaXggcGFyc2luZyBvZiByZWxhdGl2ZSBwYXRoIHJlZmVyZW5jZXMgY29udGFpbmluZyBhIGNvbG9uIGluIGEgbm9uLWluaXRpYWwgcGF0aCBzZWdtZW50Ci0gRml4IGBDYWNoaW5nU3RyZWFtOjpkZXRhY2goKWAgcmV0dXJuaW5nIGFuIGluY29tcGxldGUgcmVzb3VyY2UgYmVmb3JlIHRoZSBkZWNvcmF0ZWQgc3RyZWFtIGhhcyBiZWVuIGZ1bGx5IHJlYWQKLSBGaXggYE1lc3NhZ2U6OmJvZHlTdW1tYXJ5KClgIHJldHVybmluZyBgbnVsbGAgd2hlbiB0cnVuY2F0aW5nIHByaW50YWJsZSBVVEYtOCBib2RpZXMgaW5zaWRlIGEgbXVsdGlieXRlIGNoYXJhY3RlcgoKIyMgMi45LjAgLSAyMDI2LTAzLTEwCgojIyMgQWRkZWQKCi0gQWRkZWQgbmVzdGVkIGFycmF5IGV4cGFuc2lvbiBzdXBwb3J0IHRvIGBNdWx0aXBhcnRTdHJlYW1gCi0gQWRkZWQgYEByZXR1cm4gc3RhdGljYCB0byBgTWVzc2FnZVRyYWl0YCBtZXRob2RzCgojIyMgQ2hhbmdlZAoKLSBVcGRhdGVkIE1JTUUgdHlwZSBtYXBwaW5ncwoKIyMgMi44LjEgLSAyMDI2LTAzLTEwCgojIyMgRml4ZWQKCi0gRW5jb2RlIGArYCBzaWducyBpbiBgVXJpOjp3aXRoUXVlcnlWYWx1ZSgpYCBhbmQgYFVyaTo6d2l0aFF1ZXJ5VmFsdWVzKClgIHRvIHByZXZlbnQgdGhlbSBiZWluZyBpbnRlcnByZXRlZCBhcyBzcGFjZXMKCiMjIDIuOC4wIC0gMjAyNS0wOC0yMwoKIyMjIEFkZGVkCgotIEFsbG93IGVtcHR5IGxpc3RzIGFzIGhlYWRlciB2YWx1ZXMKCiMjIyBDaGFuZ2VkCgotIFBIUCA4LjUgc3VwcG9ydAoKIyMgMi43LjEgLSAyMDI1LTAzLTI3CgojIyMgRml4ZWQKCi0gRml4ZWQgdXBwZXJjYXNlIElQdjYgYWRkcmVzc2VzIGluIFVSSQoKIyMjIENoYW5nZWQKCi0gSW1wcm92ZSB1cGxvYWRlZCBmaWxlIGVycm9yIG1lc3NhZ2UKCiMjIDIuNy4wIC0gMjAyNC0wNy0xOAoKIyMjIEFkZGVkCgotIEFkZCBgVXRpbHM6OnJlZGFjdFVzZXJJbmZvKClgIG1ldGhvZAotIEFkZCBhYmlsaXR5IHRvIGVuY29kZSBib29scyBhcyBpbnRzIGluIGBRdWVyeTo6YnVpbGRgCgojIyAyLjYuMyAtIDIwMjQtMDctMTgKCiMjIyBGaXhlZAoKLSBNYWtlIGBTdHJlYW1XcmFwcGVyOjpzdHJlYW1fc3RhdCgpYCByZXR1cm4gYGZhbHNlYCBpZiBpbm5lciBzdHJlYW0ncyBzaXplIGlzIGBudWxsYCAKCiMjIyBDaGFuZ2VkCgotIFBIUCA4LjQgc3VwcG9ydAoKIyMgMi42LjIgLSAyMDIzLTEyLTAzCgojIyMgRml4ZWQKCi0gRml4ZWQgYW5vdGhlciBpc3N1ZSB3aXRoIHRoZSBmYWN0IHRoYXQgUEhQIHRyYW5zZm9ybXMgbnVtZXJpYyBzdHJpbmdzIGluIGFycmF5IGtleXMgdG8gaW50cwoKIyMjIENoYW5nZWQKCi0gVXBkYXRlZCBsaW5rcyBpbiBkb2NzIHRvIHRoZWlyIGNhbm9uaWNhbCB2ZXJzaW9ucwotIFJlcGxhY2VkIGBjYWxsX3VzZXJfZnVuYypgIHdpdGggbmF0aXZlIGNhbGxzCgojIyAyLjYuMSAtIDIwMjMtMDgtMjcKCiMjIyBGaXhlZAoKLSBQcm9wZXJseSBoYW5kbGUgdGhlIGZhY3QgdGhhdCBQSFAgdHJhbnNmb3JtcyBudW1lcmljIHN0cmluZ3MgaW4gYXJyYXkga2V5cyB0byBpbnRzCgojIyAyLjYuMCAtIDIwMjMtMDgtMDMKCiMjIyBDaGFuZ2VkCgotIFVwZGF0ZWQgdGhlIG1pbWUgdHlwZSBtYXAgdG8gYWRkIHNvbWUgbmV3IGVudHJpZXMsIGZpeCBhIGNvdXBsZSBvZiBpbnZhbGlkIGVudHJpZXMsIGFuZCByZW1vdmUgYW4gaW52YWxpZCBlbnRyeQotIEZhbGxiYWNrIHRvIGBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1gIGlmIHdlIGFyZSB1bmFibGUgdG8gZ3Vlc3MgdGhlIGNvbnRlbnQgdHlwZSBmb3IgYSBtdWx0aXBhcnQgZmlsZSB1cGxvYWQKCiMjIDIuNS4xIC0gMjAyMy0wOC0wMwoKIyMjIEZpeGVkCgotIENvcnJlY3RlZCBtaW1lIHR5cGUgZm9yIGAuYWNjYCBmaWxlcyB0byBgYXVkaW8vYWFjYAoKIyMjIENoYW5nZWQKCi0gUEhQIDguMyBzdXBwb3J0CgojIyAyLjUuMCAtIDIwMjMtMDQtMTcKCiMjIyBDaGFuZ2VkCgotIEFkanVzdGVkIGBwc3IvaHR0cC1tZXNzYWdlYCB2ZXJzaW9uIGNvbnN0cmFpbnQgdG8gYF4xLjEgfHwgXjIuMGAKCiMjIDIuNC41IC0gMjAyMy0wNC0xNwoKIyMjIEZpeGVkCgotIFByZXZlbnQgcG9zc2libGUgd2FybmluZ3Mgb24gdW5zZXQgdmFyaWFibGVzIGluIGBTZXJ2ZXJSZXF1ZXN0Ojpub3JtYWxpemVOZXN0ZWRGaWxlU3BlY2AKLSBGaXhlZCBgTWVzc2FnZTo6Ym9keVN1bW1hcnlgIHdoZW4gYHByZWdfbWF0Y2hgIGZhaWxzCi0gRml4ZWQgaGVhZGVyIHZhbGlkYXRpb24gaXNzdWUKCiMjIDIuNC40IC0gMjAyMy0wMy0wOQoKIyMjIENoYW5nZWQKCi0gUmVtb3ZlZCB0aGUgbmVlZCBmb3IgYEFsbG93RHluYW1pY1Byb3BlcnRpZXNgIGluIGBMYXp5T3BlblN0cmVhbWAKCiMjIDIuNC4zIC0gMjAyMi0xMC0yNgoKIyMjIENoYW5nZWQKCi0gUmVwbGFjZWQgYHNoYTEodW5pcWlkKCkpYCBieSBgYmluMmhleChyYW5kb21fYnl0ZXMoMjApKWAKCiMjIDIuNC4yIC0gMjAyMi0xMC0yNQoKIyMjIEZpeGVkCgotIEZpeGVkIGVycm9uZW91cyBiZWhhdmlvdXIgd2hlbiBjb21iaW5pbmcgaG9zdCBhbmQgcmVsYXRpdmUgcGF0aAoKIyMgMi40LjEgLSAyMDIyLTA4LTI4CgojIyMgRml4ZWQKCi0gUmV3aW5kIGJvZHkgYmVmb3JlIHJlYWRpbmcgaW4gYE1lc3NhZ2U6OmJvZHlTdW1tYXJ5YAoKIyMgMi40LjAgLSAyMDIyLTA2LTIwCgojIyMgQWRkZWQKCi0gQWRkZWQgcHJvdmlzaW9uYWwgUEhQIDguMiBzdXBwb3J0Ci0gQWRkZWQgYFVyaUNvbXBhcmF0b3I6OmlzQ3Jvc3NPcmlnaW5gIG1ldGhvZAoKIyMgMi4zLjAgLSAyMDIyLTA2LTA5CgojIyMgRml4ZWQKCi0gQWRkZWQgYEhlYWRlcjo6c3BsaXRMaXN0YCBtZXRob2QKLSBBZGRlZCBgVXRpbHM6OnRyeUdldENvbnRlbnRzYCBtZXRob2QKLSBJbXByb3ZlZCBgU3RyZWFtOjpnZXRDb250ZW50c2AgbWV0aG9kCi0gVXBkYXRlZCBtaW1ldHlwZSBtYXBwaW5ncwoKIyMgMi4yLjIgLSAyMDIyLTA2LTA4CgojIyMgRml4ZWQKCi0gRml4IGBNZXNzYWdlOjpwYXJzZVJlcXVlc3RVcmlgIGZvciBudW1lcmljIGhlYWRlcnMKLSBSZS13cmFwIGV4Y2VwdGlvbnMgdGhyb3duIGluIGBmcmVhZGAgaW50byBydW50aW1lIGV4Y2VwdGlvbnMKLSBUaHJvdyBhbiBleGNlcHRpb24gd2hlbiBtdWx0aXBhcnQgb3B0aW9ucyBpcyBtaXNmb3JtYXR0ZWQKCiMjIDIuMi4xIC0gMjAyMi0wMy0yMAoKIyMjIEZpeGVkCgotIENvcnJlY3QgaGVhZGVyIHZhbHVlIHZhbGlkYXRpb24KCiMjIDIuMi4wIC0gMjAyMi0wMy0yMAoKIyMjIEFkZGVkCgotIEEgbW9yZSBjb21wcmVzc2l2ZSBsaXN0IG9mIG1pbWUgdHlwZXMKLSBBZGQgSnNvblNlcmlhbGl6YWJsZSB0byBVcmkKLSBNaXNzaW5nIHJldHVybiB0eXBlcwoKIyMjIEZpeGVkCgotIEJ1ZyBNdWx0aXBhcnRTdHJlYW0gbm8gYHVyaWAgbWV0YWRhdGEKLSBCdWcgTXVsdGlwYXJ0U3RyZWFtIHdpdGggZmlsZW5hbWUgZm9yIGBkYXRhOi8vYCBzdHJlYW1zCi0gRml4ZWQgbmV3IGxpbmUgaGFuZGxpbmcgaW4gTXVsdGlwYXJ0U3RyZWFtCi0gUmVkdWNlZCBSQU0gdXNhZ2Ugd2hlbiBjb3B5aW5nIHN0cmVhbXMKLSBVcGRhdGVkIHBhcnNpbmcgaW4gYEhlYWRlcjo6bm9ybWFsaXplKClgCgojIyAyLjEuMSAtIDIwMjItMDMtMjAKCiMjIyBGaXhlZAoKLSBWYWxpZGF0ZSBoZWFkZXIgdmFsdWVzIHByb3Blcmx5CgojIyAyLjEuMCAtIDIwMjEtMTAtMDYKCiMjIyBDaGFuZ2VkCgotIEF0dGVtcHRpbmcgdG8gY3JlYXRlIGEgYFVyaWAgb2JqZWN0IGZyb20gYSBtYWxmb3JtZWQgVVJJIHdpbGwgbm8gbG9uZ2VyIHRocm93IGEgZ2VuZXJpYwogIGBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb25gLCBidXQgcmF0aGVyIGEgYE1hbGZvcm1lZFVyaUV4Y2VwdGlvbmAsIHdoaWNoIGluaGVyaXRzIGZyb20gdGhlIGZvcm1lcgogIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4gQ2FsbGVycyByZWx5aW5nIG9uIHRoZSBleGNlcHRpb24gYmVpbmcgdGhyb3duIHRvIGRldGVjdCBpbnZhbGlkCiAgVVJJcyBzaG91bGQgY2F0Y2ggdGhlIG5ldyBleGNlcHRpb24uCgojIyMgRml4ZWQKCi0gUmV0dXJuIGBudWxsYCBpbiBjYWNoaW5nIHN0cmVhbSBzaXplIGlmIHJlbW90ZSBzaXplIGlzIGBudWxsYAoKIyMgMi4wLjAgLSAyMDIxLTA2LTMwCgpJZGVudGljYWwgdG8gdGhlIFJDIHJlbGVhc2UuCgojIyAyLjAuMEBSQy0xIC0gMjAyMS0wNC0yOQoKIyMjIEZpeGVkCgotIEhhbmRsZSBwb3NzaWJseSB1bnNldCBgdXJsYCBpbiBgc3RyZWFtX2dldF9tZXRhX2RhdGFgCgojIyAyLjAuMEBiZXRhLTEgLSAyMDIxLTAzLTIxCgojIyMgQWRkZWQKCi0gUFNSLTE3IGZhY3RvcmllcwotIE1hZGUgY2xhc3NlcyBmaW5hbAotIFBIUDcgdHlwZSBoaW50cwoKIyMjIENoYW5nZWQKCi0gV2hlbiBidWlsZGluZyBhIHF1ZXJ5IHN0cmluZywgYm9vbGVhbnMgYXJlIHJlcHJlc2VudGVkIGFzIDEgYW5kIDAuCgojIyMgUmVtb3ZlZAoKLSBQSFAgPCA3LjIgc3VwcG9ydAotIEFsbCBmdW5jdGlvbnMgaW4gdGhlIGBHdXp6bGVIdHRwXFBzcjdgIG5hbWVzcGFjZQoKIyMgMS44LjEgLSAyMDIxLTAzLTIxCgojIyMgRml4ZWQKCi0gSXNzdWUgcGFyc2luZyBJUHY2IFVSTHMKLSBJc3N1ZSBtb2RpZnlpbmcgU2VydmVyUmVxdWVzdCBsb3N0IGFsbCBpdHMgYXR0cmlidXRlcwoKIyMgMS44LjAgLSAyMDIxLTAzLTIxCgojIyMgQWRkZWQKCi0gTG9jYWxlIGluZGVwZW5kZW50IFVSTCBwYXJzaW5nCi0gTW9zdCBjbGFzc2VzIGdvdCBhIGBAZmluYWxgIGFubm90YXRpb24gdG8gcHJlcGFyZSBmb3IgMi4wCgojIyMgRml4ZWQKCi0gSXNzdWUgd2hlbiBjcmVhdGluZyBzdHJlYW0gZnJvbSBgcGhwOi8vaW5wdXRgIGFuZCBjdXJsLWV4dCBpcyBub3QgaW5zdGFsbGVkCi0gQnJva2VuIGBVdGlsczo6dHJ5Rm9wZW4oKWAgb24gUEhQIDgKCiMjIDEuNy4wIC0gMjAyMC0wOS0zMAoKIyMjIEFkZGVkCgotIFJlcGxhY2VkIGZ1bmN0aW9ucyBieSBzdGF0aWMgbWV0aG9kcwoKIyMjIEZpeGVkCgotIENvbnZlcnRpbmcgYSBub24tc2Vla2FibGUgc3RyZWFtIHRvIGEgc3RyaW5nCi0gSGFuZGxlIG11bHRpcGxlIFNldC1Db29raWUgY29ycmVjdGx5Ci0gSWdub3JlIGFycmF5IGtleXMgaW4gaGVhZGVyIHZhbHVlcyB3aGVuIG1lcmdpbmcKLSBBbGxvdyBtdWx0aWJ5dGUgY2hhcmFjdGVycyB0byBiZSBwYXJzZWQgaW4gYE1lc3NhZ2U6Ym9keVN1bW1hcnkoKWAKCiMjIyBDaGFuZ2VkCgotIFJlc3RvcmVkIHBhcnRpYWwgSEhWTSAzIHN1cHBvcnQKCgojIyBbMS42LjFdIC0gMjAxOS0wNy0wMgoKIyMjIEZpeGVkCgotIEFjY2VwdCBudWxsIGFuZCBib29sIGhlYWRlciB2YWx1ZXMgYWdhaW4KCgojIyBbMS42LjBdIC0gMjAxOS0wNi0zMAoKIyMjIEFkZGVkCgotIEFsbG93ZWQgdmVyc2lvbiBgXjMuMGAgb2YgYHJhbG91cGhpZS9nZXRhbGxoZWFkZXJzYCBkZXBlbmRlbmN5ICgjMjQ0KQotIEFkZGVkIE1JTUUgdHlwZSBmb3IgV0VCUCBpbWFnZSBmb3JtYXQgKCMyNDYpCi0gQWRkZWQgbW9yZSB2YWxpZGF0aW9uIG9mIHZhbHVlcyBhY2NvcmRpbmcgdG8gUFNSLTcgYW5kIFJGQyBzdGFuZGFyZHMsIGUuZy4gc3RhdHVzIGNvZGUgcmFuZ2UgKCMyNTAsICMyNzIpCgojIyMgQ2hhbmdlZAoKLSBUZXN0cyBkb24ndCBwYXNzIHdpdGggSEhWTSA0LjAsIHNvIEhIVk0gc3VwcG9ydCBnb3QgZHJvcHBlZC4gT3RoZXIgbGlicmFyaWVzIGxpa2UgY29tcG9zZXIgaGF2ZSBkb25lIHRoZSBzYW1lLiAoIzI2MikKLSBBY2NlcHQgcG9ydCBudW1iZXIgMCB0byBiZSB2YWxpZCAoIzI3MCkKCiMjIyBGaXhlZAoKLSBGaXhlZCBzdWJzZXF1ZW50IHJlYWRzIGZyb20gYHBocDovL2lucHV0YCBpbiBTZXJ2ZXJSZXF1ZXN0ICgjMjQ3KQotIEZpeGVkIHJlYWRhYmxlL3dyaXRhYmxlIGRldGVjdGlvbiBmb3IgY2VydGFpbiBzdHJlYW0gbW9kZXMgKCMyNDgpCi0gRml4ZWQgZW5jb2Rpbmcgb2Ygc3BlY2lhbCBjaGFyYWN0ZXJzIGluIHRoZSBgdXNlckluZm9gIGNvbXBvbmVudCBvZiBhbiBVUkkgKCMyNTMpCgoKIyMgWzEuNS4yXSAtIDIwMTgtMTItMDQKCiMjIyBGaXhlZAoKLSBDaGVjayBib2R5IHNpemUgd2hlbiBnZXR0aW5nIHRoZSBtZXNzYWdlIHN1bW1hcnkKCgojIyBbMS41LjFdIC0gMjAxOC0xMi0wNAoKIyMjIEZpeGVkCgotIEdldCB0aGUgc3VtbWFyeSBvZiBhIGJvZHkgb25seSBpZiBpdCBpcyByZWFkYWJsZQoKCiMjIFsxLjUuMF0gLSAyMDE4LTEyLTAzCgojIyMgQWRkZWQKCi0gUmVzcG9uc2UgZmlyc3QtbGluZSB0byByZXNwb25zZSBzdHJpbmcgZXhjZXB0aW9uIChmaXhlcyAjMTQ1KQotIEEgdGVzdCBmb3IgIzEyOSBiZWhhdmlvcgotIGBnZXRfbWVzc2FnZV9ib2R5X3N1bW1hcnlgIGZ1bmN0aW9uIGluIG9yZGVyIHRvIGdldCB0aGUgbWVzc2FnZSBzdW1tYXJ5Ci0gYDNncGAgYW5kIGBta3ZgIG1pbWUgdHlwZXMKCiMjIyBDaGFuZ2VkCgotIENsYXJpZnkgZXhjZXB0aW9uIG1lc3NhZ2Ugd2hlbiBzdHJlYW0gaXMgZGV0YWNoZWQKCiMjIyBEZXByZWNhdGVkCgotIERlcHJlY2F0ZWQgcGFyc2luZyBmb2xkZWQgaGVhZGVyIGxpbmVzIGFzIHBlciBSRkMgNzIzMAoKIyMjIEZpeGVkCgotIEZpeCBgQXBwZW5kU3RyZWFtOjpkZXRhY2hgIHRvIG5vdCBjbG9zZSBzdHJlYW1zCi0gYEluZmxhdGVTdHJlYW1gIHByZXNlcnZlcyBgaXNTZWVrYWJsZWAgYXR0cmlidXRlIG9mIHRoZSB1bmRlcmx5aW5nIHN0cmVhbQotIGBTZXJ2ZXJSZXF1ZXN0OjpnZXRVcmlGcm9tR2xvYmFsc2AgdG8gc3VwcG9ydCBVUkxzIGluIHF1ZXJ5IHBhcmFtZXRlcnMKCgpTZXZlcmFsIG90aGVyIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMuCgoKIyMgWzEuNC4yXSAtIDIwMTctMDMtMjAKCiMjIyBGaXhlZAoKLSBSZXZlcnRlZCBCQyBicmVhayB0byBgVXJpOjpyZXNvbHZlYCBhbmQgYFVyaTo6cmVtb3ZlRG90U2VnbWVudHNgIGJ5IHJlbW92aW5nCiAgY2FsbHMgdG8gYHRyaWdnZXJfZXJyb3JgIHdoZW4gZGVwcmVjYXRlZCBtZXRob2RzIGFyZSBpbnZva2VkLgoKCiMjIFsxLjQuMV0gLSAyMDE3LTAyLTI3CgojIyMgQWRkZWQKCi0gUnJpZ2dlcmluZyBvZiBzaWxlbmNlZCBkZXByZWNhdGlvbiB3YXJuaW5ncy4KCiMjIyBGaXhlZAoKLSBSZXZlcnRlZCBCQyBicmVhayBieSByZWludHJvZHVjaW5nIGJlaGF2aW9yIHRvIGF1dG9tYWdpY2FsbHkgZml4IGEgVVJJIHdpdGggYQogIHJlbGF0aXZlIHBhdGggYW5kIGFuIGF1dGhvcml0eSBieSBhZGRpbmcgYSBsZWFkaW5nIHNsYXNoIHRvIHRoZSBwYXRoLiBJdCdzIG9ubHkKICBkZXByZWNhdGVkIG5vdy4KCgojIyBbMS40LjBdIC0gMjAxNy0wMi0yMQoKIyMjIEFkZGVkCgotIEFkZGVkIGNvbW1vbiBVUkkgdXRpbGl0eSBtZXRob2RzIGJhc2VkIG9uIFJGQyAzOTg2IChzZWUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgcmVhZG1lKToKICAtIGBVcmk6OmlzRGVmYXVsdFBvcnRgCiAgLSBgVXJpOjppc0Fic29sdXRlYAogIC0gYFVyaTo6aXNOZXR3b3JrUGF0aFJlZmVyZW5jZWAKICAtIGBVcmk6OmlzQWJzb2x1dGVQYXRoUmVmZXJlbmNlYAogIC0gYFVyaTo6aXNSZWxhdGl2ZVBhdGhSZWZlcmVuY2VgCiAgLSBgVXJpOjppc1NhbWVEb2N1bWVudFJlZmVyZW5jZWAKICAtIGBVcmk6OmNvbXBvc2VDb21wb25lbnRzYAogIC0gYFVyaU5vcm1hbGl6ZXI6Om5vcm1hbGl6ZWAKICAtIGBVcmlOb3JtYWxpemVyOjppc0VxdWl2YWxlbnRgCiAgLSBgVXJpUmVzb2x2ZXI6OnJlbGF0aXZpemVgCgojIyMgQ2hhbmdlZAoKLSBFbnN1cmUgYFNlcnZlclJlcXVlc3Q6OmdldFVyaUZyb21HbG9iYWxzYCByZXR1cm5zIGEgVVJJIGluIGFic29sdXRlIGZvcm0uCi0gQWxsb3cgYHBhcnNlX3Jlc3BvbnNlYCB0byBwYXJzZSBhIHJlc3BvbnNlIHdpdGhvdXQgZGVsaW1pdGluZyBzcGFjZSBhbmQgcmVhc29uLgotIEVuc3VyZSBlYWNoIFVSSSBtb2RpZmljYXRpb24gcmVzdWx0cyBpbiBhIHZhbGlkIFVSSSBhY2NvcmRpbmcgdG8gUFNSLTcgZGlzY3Vzc2lvbnMuCiAgSW52YWxpZCBtb2RpZmljYXRpb25zIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgd3JvbmcgVVJJIG9yCiAgZG9pbmcgc29tZSBtYWdpYy4KICAtIGAobmV3IFVyaSktPndpdGhQYXRoKCdmb28nKS0+d2l0aEhvc3QoJ2V4YW1wbGUuY29tJylgIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uCiAgICBiZWNhdXNlIHRoZSBwYXRoIG9mIGEgVVJJIHdpdGggYW4gYXV0aG9yaXR5IG11c3Qgc3RhcnQgd2l0aCBhIHNsYXNoICIvIiBvciBiZSBlbXB0eQogIC0gYChuZXcgVXJpKCkpLT53aXRoU2NoZW1lKCdodHRwJylgIHdpbGwgcmV0dXJuIGAnaHR0cDovL2xvY2FsaG9zdCdgCgojIyMgRGVwcmVjYXRlZAoKLSBgVXJpOjpyZXNvbHZlYCBpbiBmYXZvciBvZiBgVXJpUmVzb2x2ZXI6OnJlc29sdmVgCi0gYFVyaTo6cmVtb3ZlRG90U2VnbWVudHNgIGluIGZhdm9yIG9mIGBVcmlSZXNvbHZlcjo6cmVtb3ZlRG90U2VnbWVudHNgCgojIyMgRml4ZWQKCi0gYFN0cmVhbTo6cmVhZGAgd2hlbiBsZW5ndGggcGFyYW1ldGVyIDw9IDAuCi0gYGNvcHlfdG9fc3RyZWFtYCByZWFkcyBieXRlcyBpbiBjaHVua3MgaW5zdGVhZCBvZiBgbWF4TGVuYCBpbnRvIG1lbW9yeS4KLSBgU2VydmVyUmVxdWVzdDo6Z2V0VXJpRnJvbUdsb2JhbHNgIHdoZW4gYEhvc3RgIGhlYWRlciBjb250YWlucyBwb3J0LgotIENvbXBhdGliaWxpdHkgb2YgVVJJcyB3aXRoIGBmaWxlYCBzY2hlbWUgYW5kIGVtcHR5IGhvc3QuCgoKIyMgWzEuMy4xXSAtIDIwMTYtMDYtMjUKCiMjIyBGaXhlZAoKLSBgVXJpOjpfX3RvU3RyaW5nYCBmb3IgbmV0d29yayBwYXRoIHJlZmVyZW5jZXMsIGUuZy4gYC8vZXhhbXBsZS5vcmdgLgotIE1pc3NpbmcgbG93ZXJjYXNlIG5vcm1hbGl6YXRpb24gZm9yIGhvc3QuCi0gSGFuZGxpbmcgb2YgVVJJIGNvbXBvbmVudHMgaW4gY2FzZSB0aGV5IGFyZSBgJzAnYCBpbiBhIGxvdCBvZiBwbGFjZXMsCiAgZS5nLiBhcyBhIHVzZXIgaW5mbyBwYXNzd29yZC4KLSBgVXJpOjp3aXRoQWRkZWRIZWFkZXJgIHRvIGNvcnJlY3RseSBtZXJnZSBoZWFkZXJzIHdpdGggZGlmZmVyZW50IGNhc2UuCi0gVHJpbW1pbmcgb2YgaGVhZGVyIHZhbHVlcyBpbiBgVXJpOjp3aXRoQWRkZWRIZWFkZXJgLiBIZWFkZXIgdmFsdWVzIG1heQogIGJlIHN1cnJvdW5kZWQgYnkgd2hpdGVzcGFjZSB3aGljaCBzaG91bGQgYmUgaWdub3JlZCBhY2NvcmRpbmcgdG8gUkZDIDcyMzAKICBTZWN0aW9uIDMuMi40LiBUaGlzIGRvZXMgbm90IGFwcGx5IHRvIGhlYWRlciBuYW1lcy4KLSBgVXJpOjp3aXRoQWRkZWRIZWFkZXJgIHdpdGggYW4gYXJyYXkgb2YgaGVhZGVyIHZhbHVlcy4KLSBgVXJpOjpyZXNvbHZlYCB3aGVuIGJhc2UgcGF0aCBoYXMgbm8gc2xhc2ggYW5kIGhhbmRsaW5nIG9mIGZyYWdtZW50LgotIEhhbmRsaW5nIG9mIGVuY29kaW5nIGluIGBVcmk6OndpdGgob3V0KVF1ZXJ5VmFsdWVgIHNvIG9uZSBjYW4gcGFzcyB0aGUKICBrZXkvdmFsdWUgYm90aCBpbiBlbmNvZGVkIGFzIHdlbGwgYXMgZGVjb2RlZCBmb3JtIHRvIHRob3NlIG1ldGhvZHMuIFRoaXMgaXMKICBjb25zaXN0ZW50IHdpdGggd2l0aFBhdGgsIHdpdGhRdWVyeSBldGMuCi0gYFNlcnZlclJlcXVlc3Q6OndpdGhvdXRBdHRyaWJ1dGVgIHdoZW4gYXR0cmlidXRlIHZhbHVlIGlzIG51bGwuCgoKIyMgWzEuMy4wXSAtIDIwMTYtMDQtMTMKCiMjIyBBZGRlZAoKLSBSZW1haW5pbmcgaW50ZXJmYWNlcyBuZWVkZWQgZm9yIGZ1bGwgUFNSNyBjb21wYXRpYmlsaXR5CiAgKFNlcnZlclJlcXVlc3RJbnRlcmZhY2UsIFVwbG9hZGVkRmlsZUludGVyZmFjZSwgZXRjLikuCi0gU3VwcG9ydCBmb3Igc3RyZWFtX2ZvciBmcm9tIHNjYWxhcnMuCgojIyMgQ2hhbmdlZAoKLSBDYW4gbm93IGV4dGVuZCBVcmkuCgojIyMgRml4ZWQKLSBBIGJ1ZyBpbiB2YWxpZGF0aW5nIHJlcXVlc3QgbWV0aG9kcyBieSBtYWtpbmcgaXQgbW9yZSBwZXJtaXNzaXZlLgoKCiMjIFsxLjIuM10gLSAyMDE2LTAyLTE4CgojIyMgRml4ZWQKCi0gU3VwcG9ydCBpbiBgR3V6emxlSHR0cFxQc3I3XENhY2hpbmdTdHJlYW1gIGZvciBzZWVraW5nIGZvcndhcmQgb24gcmVtb3RlCiAgc3RyZWFtcywgd2hpY2ggY2FuIHNvbWV0aW1lcyByZXR1cm4gZmV3ZXIgYnl0ZXMgdGhhbiByZXF1ZXN0ZWQgd2l0aCBgZnJlYWRgLgotIEhhbmRsaW5nIG9mIGd6aXBwZWQgcmVzcG9uc2VzIHdpdGggRk5BTUUgaGVhZGVycy4KCgojIyBbMS4yLjJdIC0gMjAxNi0wMS0yMgoKIyMjIEFkZGVkCgotIFN1cHBvcnQgZm9yIFVSSXMgd2l0aG91dCBhbnkgYXV0aG9yaXR5LgotIFN1cHBvcnQgZm9yIEhUVFAgNDUxICdVbmF2YWlsYWJsZSBGb3IgTGVnYWwgUmVhc29ucy4nCi0gU3VwcG9ydCBmb3IgdXNpbmcgJzAnIGFzIGEgZmlsZW5hbWUuCi0gU3VwcG9ydCBmb3IgaW5jbHVkaW5nIG5vbi1zdGFuZGFyZCBwb3J0cyBpbiBIb3N0IGhlYWRlcnMuCgoKIyMgWzEuMi4xXSAtIDIwMTUtMTEtMDIKCiMjIyBDaGFuZ2VzCgotIE5vdyBzdXBwb3J0aW5nIG5lZ2F0aXZlIG9mZnNldHMgd2hlbiBzZWVraW5nIHRvIFNFRUtfRU5ELgoKCiMjIFsxLjIuMF0gLSAyMDE1LTA4LTE1CgojIyMgQ2hhbmdlZAoKLSBCb2R5IGFzIGAiMCJgIGlzIG5vdyBwcm9wZXJseSBhZGRlZCB0byBhIHJlc3BvbnNlLgotIE5vdyBhbGxvd2luZyBmb3J3YXJkIHNlZWtpbmcgaW4gQ2FjaGluZ1N0cmVhbS4KLSBOb3cgcHJvcGVybHkgcGFyc2luZyBIVFRQIHJlcXVlc3RzIHRoYXQgY29udGFpbiBwcm94eSB0YXJnZXRzIGluCiAgYHBhcnNlX3JlcXVlc3RgLgotIGZ1bmN0aW9ucy5waHAgaXMgbm93IGNvbmRpdGlvbmFsbHkgcmVxdWlyZWQuCi0gdXNlci1pbmZvIGlzIG5vIGxvbmdlciBkcm9wcGVkIHdoZW4gcmVzb2x2aW5nIFVSSXMuCgoKIyMgWzEuMS4wXSAtIDIwMTUtMDYtMjQKCiMjIyBDaGFuZ2VkCgotIFVSSXMgY2FuIG5vdyBiZSByZWxhdGl2ZS4KLSBgbXVsdGlwYXJ0L2Zvcm0tZGF0YWAgaGVhZGVycyBhcmUgbm93IG92ZXJyaWRkZW4gY2FzZS1pbnNlbnNpdGl2ZWx5LgotIFVSSSBwYXRocyBubyBsb25nZXIgZW5jb2RlIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVycyBiZWNhdXNlIHRoZXkgYXJlIGFsbG93ZWQKICBpbiBVUklzOiAiKCIsICIpIiwgIioiLCAiISIsICInIgotIEEgcG9ydCBpcyBubyBsb25nZXIgYWRkZWQgdG8gYSBVUkkgd2hlbiB0aGUgc2NoZW1lIGlzIG1pc3NpbmcgYW5kIG5vIHBvcnQgaXMKICBwcmVzZW50LgoKCiMjIDEuMC4wIC0gMjAxNS0wNS0xOQoKSW5pdGlhbCByZWxlYXNlLgoKQ3VycmVudGx5IHVuc3VwcG9ydGVkOgoKLSBgUHNyXEh0dHBcTWVzc2FnZVxTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlYAotIGBQc3JcSHR0cFxNZXNzYWdlXFVwbG9hZGVkRmlsZUludGVyZmFjZWAKCgoKWzEuNi4wXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3L2NvbXBhcmUvMS41LjIuLi4xLjYuMApbMS41LjJdOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3BzcjcvY29tcGFyZS8xLjUuMS4uLjEuNS4yClsxLjUuMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHNyNy9jb21wYXJlLzEuNS4wLi4uMS41LjEKWzEuNS4wXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3L2NvbXBhcmUvMS40LjIuLi4xLjUuMApbMS40LjJdOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3BzcjcvY29tcGFyZS8xLjQuMS4uLjEuNC4yClsxLjQuMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHNyNy9jb21wYXJlLzEuNC4wLi4uMS40LjEKWzEuNC4wXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3L2NvbXBhcmUvMS4zLjEuLi4xLjQuMApbMS4zLjFdOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3BzcjcvY29tcGFyZS8xLjMuMC4uLjEuMy4xClsxLjMuMF06IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHNyNy9jb21wYXJlLzEuMi4zLi4uMS4zLjAKWzEuMi4zXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3L2NvbXBhcmUvMS4yLjIuLi4xLjIuMwpbMS4yLjJdOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3BzcjcvY29tcGFyZS8xLjIuMS4uLjEuMi4yClsxLjIuMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHNyNy9jb21wYXJlLzEuMi4wLi4uMS4yLjEKWzEuMi4wXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3L2NvbXBhcmUvMS4xLjAuLi4xLjIuMApbMS4xLjBdOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3BzcjcvY29tcGFyZS8xLjAuMC4uLjEuMS4wCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9wc3I3IiwKICAgICJkZXNjcmlwdGlvbiI6ICJQU1ItNyBtZXNzYWdlIGltcGxlbWVudGF0aW9uIHRoYXQgYWxzbyBwcm92aWRlcyBjb21tb24gdXRpbGl0eSBtZXRob2RzIiwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAia2V5d29yZHMiOiBbCiAgICAgICAgInJlcXVlc3QiLAogICAgICAgICJyZXNwb25zZSIsCiAgICAgICAgIm1lc3NhZ2UiLAogICAgICAgICJzdHJlYW0iLAogICAgICAgICJodHRwIiwKICAgICAgICAidXJpIiwKICAgICAgICAidXJsIiwKICAgICAgICAicHNyLTciCiAgICBdLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJHcmFoYW0gQ2FtcGJlbGwiLAogICAgICAgICAgICAiZW1haWwiOiAiaGVsbG9AZ2pjYW1wYmVsbC5jby51ayIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vR3JhaGFtQ2FtcGJlbGwiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICJlbWFpbCI6ICJtdGRvd2xpbmdAZ21haWwuY29tIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tdGRvd2xpbmciCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkdlb3JnZSBNcG9ub3MiLAogICAgICAgICAgICAiZW1haWwiOiAiZ21wb25vc0BnbWFpbC5jb20iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2dtcG9ub3MiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlRvYmlhcyBOeWhvbG0iLAogICAgICAgICAgICAiZW1haWwiOiAidG9iaWFzLm55aG9sbUBnbWFpbC5jb20iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL055aG9sbSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiTcOhcmsgU8OhZ2ktS2F6w6FyIiwKICAgICAgICAgICAgImVtYWlsIjogIm1hcmsuc2FnaWthemFyQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vc2FnaWthemFybWFyayIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiVG9iaWFzIFNjaHVsdHplIiwKICAgICAgICAgICAgImVtYWlsIjogIndlYm1hc3RlckB0dWJvLXdvcmxkLmRlIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ub2Jpb24iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIk3DoXJrIFPDoWdpLUthesOhciIsCiAgICAgICAgICAgICJlbWFpbCI6ICJtYXJrLnNhZ2lrYXphckBnbWFpbC5jb20iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zYWdpa2F6YXJtYXJrLmh1IgogICAgICAgIH0KICAgIF0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIl43LjIuNSB8fCBeOC4wIiwKICAgICAgICAicHNyL2h0dHAtZmFjdG9yeSI6ICJeMS4wIiwKICAgICAgICAicHNyL2h0dHAtbWVzc2FnZSI6ICJeMS4xIHx8IF4yLjAiLAogICAgICAgICJyYWxvdXBoaWUvZ2V0YWxsaGVhZGVycyI6ICJeMy4wIiwKICAgICAgICAic3ltZm9ueS9kZXByZWNhdGlvbi1jb250cmFjdHMiOiAiXjIuNSB8fCBeMy4wIiwKICAgICAgICAic3ltZm9ueS9wb2x5ZmlsbC1waHA4MCI6ICJeMS4yNCIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgImJhbWFybmkvY29tcG9zZXItYmluLXBsdWdpbiI6ICJeMS44LjIiLAogICAgICAgICJodHRwLWludGVyb3AvaHR0cC1mYWN0b3J5LXRlc3RzIjogIjEuMS4wIiwKICAgICAgICAianNodHRwL21pbWUtZGIiOiAiMS41NC4wLjEiLAogICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjguNS41MiB8fCBeOS42LjM0IgogICAgfSwKICAgICJwcm92aWRlIjogewogICAgICAgICJwc3IvaHR0cC1mYWN0b3J5LWltcGxlbWVudGF0aW9uIjogIjEuMCIsCiAgICAgICAgInBzci9odHRwLW1lc3NhZ2UtaW1wbGVtZW50YXRpb24iOiAiMS4wIgogICAgfSwKICAgICJzdWdnZXN0IjogewogICAgICAgICJsYW1pbmFzL2xhbWluYXMtaHR0cGhhbmRsZXJydW5uZXIiOiAiRW1pdCBQU1ItNyByZXNwb25zZXMiCiAgICB9LAogICAgInJlcG9zaXRvcmllcyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogInBhY2thZ2UiLAogICAgICAgICAgICAicGFja2FnZSI6IHsKICAgICAgICAgICAgICAgICJuYW1lIjogImpzaHR0cC9taW1lLWRiIiwKICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNTQuMC4xIiwKICAgICAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2NvZGVsb2FkLmdpdGh1Yi5jb20vanNodHRwL21pbWUtZGIvemlwLzBhOWZkMGJmYmM4N2E3MjVmZjYzODQ5NTgzOTExNGU3ODA3YjcxNzciCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBdLAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkd1enpsZUh0dHBcXFBzcjdcXCI6ICJzcmMvIgogICAgICAgIH0KICAgIH0sCiAgICAiYXV0b2xvYWQtZGV2IjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkd1enpsZUh0dHBcXFRlc3RzXFxQc3I3XFwiOiAidGVzdHMvIgogICAgICAgIH0KICAgIH0sCiAgICAiY29uZmlnIjogewogICAgICAgICJhbGxvdy1wbHVnaW5zIjogewogICAgICAgICAgICAiYmFtYXJuaS9jb21wb3Nlci1iaW4tcGx1Z2luIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInByZWZlcnJlZC1pbnN0YWxsIjogImRpc3QiLAogICAgICAgICJzb3J0LXBhY2thZ2VzIjogdHJ1ZQogICAgfSwKICAgICJleHRyYSI6IHsKICAgICAgICAiYmFtYXJuaS1iaW4iOiB7CiAgICAgICAgICAgICJiaW4tbGlua3MiOiB0cnVlLAogICAgICAgICAgICAiZm9yd2FyZC1jb21tYW5kIjogZmFsc2UKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTUgTWljaGFlbCBEb3dsaW5nIDxtdGRvd2xpbmdAZ21haWwuY29tPgpDb3B5cmlnaHQgKGMpIDIwMTUgTcOhcmsgU8OhZ2ktS2F6w6FyIDxtYXJrLnNhZ2lrYXphckBnbWFpbC5jb20+CkNvcHlyaWdodCAoYykgMjAxNSBHcmFoYW0gQ2FtcGJlbGwgPGhlbGxvQGdqY2FtcGJlbGwuY28udWs+CkNvcHlyaWdodCAoYykgMjAxNiBUb2JpYXMgU2NodWx0emUgPHdlYm1hc3RlckB0dWJvLXdvcmxkLmRlPgpDb3B5cmlnaHQgKGMpIDIwMTYgR2VvcmdlIE1wb25vcyA8Z21wb25vc0BnbWFpbC5jb20+CkNvcHlyaWdodCAoYykgMjAxOCBUb2JpYXMgTnlob2xtIDx0b2JpYXMubnlob2xtQGdtYWlsLmNvbT4KClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwp0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgpUSEUgU09GVFdBUkUuCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBQU1ItNyBNZXNzYWdlIEltcGxlbWVudGF0aW9uCgpUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgYSBmdWxsIFtQU1ItN10oaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LykKbWVzc2FnZSBpbXBsZW1lbnRhdGlvbiwgc2V2ZXJhbCBzdHJlYW0gZGVjb3JhdG9ycywgYW5kIHNvbWUgaGVscGZ1bApmdW5jdGlvbmFsaXR5IGxpa2UgcXVlcnkgc3RyaW5nIHBhcnNpbmcuCgohW0NJXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3Bzcjcvd29ya2Zsb3dzL0NJL2JhZGdlLnN2ZykKIVtTdGF0aWMgYW5hbHlzaXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHNyNy93b3JrZmxvd3MvU3RhdGljJTIwYW5hbHlzaXMvYmFkZ2Uuc3ZnKQoKCiMjIEZlYXR1cmVzCgpUaGlzIHBhY2thZ2UgY29tZXMgd2l0aCBhIG51bWJlciBvZiBzdHJlYW0gaW1wbGVtZW50YXRpb25zIGFuZCBzdHJlYW0KZGVjb3JhdG9ycy4KCgojIyBJbnN0YWxsYXRpb24KCmBgYHNoZWxsCmNvbXBvc2VyIHJlcXVpcmUgZ3V6emxlaHR0cC9wc3I3CmBgYAoKIyMgVmVyc2lvbiBHdWlkYW5jZQoKfCBWZXJzaW9uIHwgU3RhdHVzICAgICAgICAgICAgICB8IFBIUCBWZXJzaW9uICB8CnwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfAp8IDEueCAgICAgfCBFT0wgKDIwMjQtMDYtMzApICAgIHwgPj01LjQsPDguMiAgIHwKfCAyLnggICAgIHwgTGF0ZXN0ICAgICAgICAgICAgICB8ID49Ny4yLjUsPDguNiB8CgpTZWUgW1VQR1JBRElORy5tZF0oVVBHUkFESU5HLm1kKSBmb3Igbm90ZXMgb24gdXBncmFkaW5nIGZyb20gMS54IHRvIDIuMC4KCgojIyBBcHBlbmRTdHJlYW0KCmBHdXp6bGVIdHRwXFBzcjdcQXBwZW5kU3RyZWFtYAoKUmVhZHMgZnJvbSBtdWx0aXBsZSBzdHJlYW1zLCBvbmUgYWZ0ZXIgdGhlIG90aGVyLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFBzcjc7CgokYSA9IFBzcjdcVXRpbHM6OnN0cmVhbUZvcignYWJjLCAnKTsKJGIgPSBQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoJzEyMy4nKTsKJGNvbXBvc2VkID0gbmV3IFBzcjdcQXBwZW5kU3RyZWFtKFskYSwgJGJdKTsKCiRjb21wb3NlZC0+YWRkU3RyZWFtKFBzcjdcVXRpbHM6OnN0cmVhbUZvcignIEFib3ZlIGFsbCBsaXN0ZW4gdG8gbWUnKSk7CgplY2hvICRjb21wb3NlZDsgLy8gYWJjLCAxMjMuIEFib3ZlIGFsbCBsaXN0ZW4gdG8gbWUuCmBgYAoKCiMjIEJ1ZmZlclN0cmVhbQoKYEd1enpsZUh0dHBcUHNyN1xCdWZmZXJTdHJlYW1gCgpQcm92aWRlcyBhIGJ1ZmZlciBzdHJlYW0gdGhhdCBjYW4gYmUgd3JpdHRlbiB0byBmaWxsIGEgYnVmZmVyLCBhbmQgcmVhZApmcm9tIHRvIHJlbW92ZSBieXRlcyBmcm9tIHRoZSBidWZmZXIuCgpUaGlzIHN0cmVhbSByZXR1cm5zIGEgImh3bSIgbWV0YWRhdGEgdmFsdWUgdGhhdCB0ZWxscyB1cHN0cmVhbSBjb25zdW1lcnMKd2hhdCB0aGUgY29uZmlndXJlZCBoaWdoIHdhdGVyIG1hcmsgb2YgdGhlIHN0cmVhbSBpcywgb3IgdGhlIG1heGltdW0KcHJlZmVycmVkIHNpemUgb2YgdGhlIGJ1ZmZlci4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQc3I3OwoKLy8gV2hlbiBtb3JlIHRoYW4gMTAyNCBieXRlcyBhcmUgaW4gdGhlIGJ1ZmZlciwgaXQgd2lsbCBiZWdpbiByZXR1cm5pbmcKLy8gMCB0byB3cml0ZXMuIFRoaXMgaXMgYW4gaW5kaWNhdGlvbiB0aGF0IHdyaXRlcnMgc2hvdWxkIHNsb3cgZG93bi4KJGJ1ZmZlciA9IG5ldyBQc3I3XEJ1ZmZlclN0cmVhbSgxMDI0KTsKYGBgCgoKIyMgQ2FjaGluZ1N0cmVhbQoKVGhlIENhY2hpbmdTdHJlYW0gaXMgdXNlZCB0byBhbGxvdyBzZWVraW5nIG92ZXIgcHJldmlvdXNseSByZWFkIGJ5dGVzIG9uCm5vbi1zZWVrYWJsZSBzdHJlYW1zLiBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiB0cmFuc2ZlcnJpbmcgYSBub24tc2Vla2FibGUKZW50aXR5IGJvZHkgZmFpbHMgZHVlIHRvIG5lZWRpbmcgdG8gcmV3aW5kIHRoZSBzdHJlYW0gKGZvciBleGFtcGxlLCByZXN1bHRpbmcKZnJvbSBhIHJlZGlyZWN0KS4gRGF0YSB0aGF0IGlzIHJlYWQgZnJvbSB0aGUgcmVtb3RlIHN0cmVhbSB3aWxsIGJlIGJ1ZmZlcmVkIGluCmEgUEhQIHRlbXAgc3RyZWFtIHNvIHRoYXQgcHJldmlvdXNseSByZWFkIGJ5dGVzIGFyZSBjYWNoZWQgZmlyc3QgaW4gbWVtb3J5LAp0aGVuIG9uIGRpc2suCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHNyNzsKCiRvcmlnaW5hbCA9IFBzcjdcVXRpbHM6OnN0cmVhbUZvcihmb3BlbignaHR0cDovL3d3dy5nb29nbGUuY29tJywgJ3InKSk7CiRzdHJlYW0gPSBuZXcgUHNyN1xDYWNoaW5nU3RyZWFtKCRvcmlnaW5hbCk7Cgokc3RyZWFtLT5yZWFkKDEwMjQpOwplY2hvICRzdHJlYW0tPnRlbGwoKTsKLy8gMTAyNAoKJHN0cmVhbS0+c2VlaygwKTsKZWNobyAkc3RyZWFtLT50ZWxsKCk7Ci8vIDAKYGBgCgoKIyMgRHJvcHBpbmdTdHJlYW0KCmBHdXp6bGVIdHRwXFBzcjdcRHJvcHBpbmdTdHJlYW1gCgpTdHJlYW0gZGVjb3JhdG9yIHRoYXQgYmVnaW5zIGRyb3BwaW5nIGRhdGEgb25jZSB0aGUgc2l6ZSBvZiB0aGUgdW5kZXJseWluZwpzdHJlYW0gYmVjb21lcyB0b28gZnVsbC4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQc3I3OwoKLy8gQ3JlYXRlIGFuIGVtcHR5IHN0cmVhbQokc3RyZWFtID0gUHNyN1xVdGlsczo6c3RyZWFtRm9yKCk7CgovLyBTdGFydCBkcm9wcGluZyBkYXRhIHdoZW4gdGhlIHN0cmVhbSBoYXMgbW9yZSB0aGFuIDEwIGJ5dGVzCiRkcm9wcGluZyA9IG5ldyBQc3I3XERyb3BwaW5nU3RyZWFtKCRzdHJlYW0sIDEwKTsKCiRkcm9wcGluZy0+d3JpdGUoJzAxMjM0NTY3ODkwMTIzNDU2Nzg5Jyk7CmVjaG8gJHN0cmVhbTsgLy8gMDEyMzQ1Njc4OQpgYGAKCgojIyBGblN0cmVhbQoKYEd1enpsZUh0dHBcUHNyN1xGblN0cmVhbWAKCkNvbXBvc2Ugc3RyZWFtIGltcGxlbWVudGF0aW9ucyBiYXNlZCBvbiBhIGhhc2ggb2YgY2FsbGFibGVzLgoKQWxsb3dzIGZvciBlYXN5IHRlc3RpbmcgYW5kIGV4dGVuc2lvbiBvZiBhIHByb3ZpZGVkIHN0cmVhbSB3aXRob3V0IG5lZWRpbmcKdG8gY3JlYXRlIGEgY29uY3JldGUgY2xhc3MgZm9yIGEgc2ltcGxlIGV4dGVuc2lvbiBwb2ludC4KCmBgYHBocAoKdXNlIEd1enpsZUh0dHBcUHNyNzsKCiRzdHJlYW0gPSBQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoJ2hpJyk7CiRmblN0cmVhbSA9IFBzcjdcRm5TdHJlYW06OmRlY29yYXRlKCRzdHJlYW0sIFsKICAgICdyZXdpbmQnID0+IGZ1bmN0aW9uICgpIHVzZSAoJHN0cmVhbSkgewogICAgICAgIGVjaG8gJ0Fib3V0IHRvIHJld2luZCAtICc7CiAgICAgICAgJHN0cmVhbS0+cmV3aW5kKCk7CiAgICAgICAgZWNobyAncmV3b3VuZCEnOwogICAgfQpdKTsKCiRmblN0cmVhbS0+cmV3aW5kKCk7Ci8vIE91dHB1dHM6IEFib3V0IHRvIHJld2luZCAtIHJld291bmQhCmBgYAoKCiMjIEluZmxhdGVTdHJlYW0KCmBHdXp6bGVIdHRwXFBzcjdcSW5mbGF0ZVN0cmVhbWAKClVzZXMgUEhQJ3MgemxpYi5pbmZsYXRlIGZpbHRlciB0byBpbmZsYXRlIHpsaWIgKEhUVFAgZGVmbGF0ZSwgUkZDMTk1MCkgb3IgZ3ppcHBlZCAoUkZDMTk1MikgY29udGVudC4KClRoaXMgc3RyZWFtIGRlY29yYXRvciBjb252ZXJ0cyB0aGUgcHJvdmlkZWQgc3RyZWFtIHRvIGEgUEhQIHN0cmVhbSByZXNvdXJjZSwKdGhlbiBhcHBlbmRzIHRoZSB6bGliLmluZmxhdGUgZmlsdGVyLiBUaGUgc3RyZWFtIGlzIHRoZW4gY29udmVydGVkIGJhY2sKdG8gYSBHdXp6bGUgc3RyZWFtIHJlc291cmNlIHRvIGJlIHVzZWQgYXMgYSBHdXp6bGUgc3RyZWFtLgoKCiMjIExhenlPcGVuU3RyZWFtCgpgR3V6emxlSHR0cFxQc3I3XExhenlPcGVuU3RyZWFtYAoKTGF6aWx5IHJlYWRzIG9yIHdyaXRlcyB0byBhIGZpbGUgdGhhdCBpcyBvcGVuZWQgb25seSBhZnRlciBhbiBJTyBvcGVyYXRpb24KdGFrZSBwbGFjZSBvbiB0aGUgc3RyZWFtLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFBzcjc7Cgokc3RyZWFtID0gbmV3IFBzcjdcTGF6eU9wZW5TdHJlYW0oJy9wYXRoL3RvL2ZpbGUnLCAncicpOwovLyBUaGUgZmlsZSBoYXMgbm90IHlldCBiZWVuIG9wZW5lZC4uLgoKZWNobyAkc3RyZWFtLT5yZWFkKDEwKTsKLy8gVGhlIGZpbGUgaXMgb3BlbmVkIGFuZCByZWFkIGZyb20gb25seSB3aGVuIG5lZWRlZC4KYGBgCgoKIyMgTGltaXRTdHJlYW0KCmBHdXp6bGVIdHRwXFBzcjdcTGltaXRTdHJlYW1gCgpMaW1pdFN0cmVhbSBjYW4gYmUgdXNlZCB0byByZWFkIGEgc3Vic2V0IG9yIHNsaWNlIG9mIGFuIGV4aXN0aW5nIHN0cmVhbSBvYmplY3QuClRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgYnJlYWtpbmcgYSBsYXJnZSBmaWxlIGludG8gc21hbGxlciBwaWVjZXMgdG8gYmUgc2VudCBpbgpjaHVua3MgKGUuZy4gQW1hem9uIFMzJ3MgbXVsdGlwYXJ0IHVwbG9hZCBBUEkpLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFBzcjc7Cgokb3JpZ2luYWwgPSBQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoZm9wZW4oJy90bXAvdGVzdC50eHQnLCAncisnKSk7CmVjaG8gJG9yaWdpbmFsLT5nZXRTaXplKCk7Ci8vID4+PiAxMDQ4NTc2CgovLyBMaW1pdCB0aGUgc2l6ZSBvZiB0aGUgYm9keSB0byAxMDI0IGJ5dGVzIGFuZCBzdGFydCByZWFkaW5nIGZyb20gYnl0ZSAyMDQ4CiRzdHJlYW0gPSBuZXcgUHNyN1xMaW1pdFN0cmVhbSgkb3JpZ2luYWwsIDEwMjQsIDIwNDgpOwplY2hvICRzdHJlYW0tPmdldFNpemUoKTsKLy8gPj4+IDEwMjQKZWNobyAkc3RyZWFtLT50ZWxsKCk7Ci8vID4+PiAwCmBgYAoKCiMjIE11bHRpcGFydFN0cmVhbQoKYEd1enpsZUh0dHBcUHNyN1xNdWx0aXBhcnRTdHJlYW1gCgpTdHJlYW0gdGhhdCB3aGVuIHJlYWQgcmV0dXJucyBieXRlcyBmb3IgYSBzdHJlYW1pbmcgbXVsdGlwYXJ0IG9yCm11bHRpcGFydC9mb3JtLWRhdGEgc3RyZWFtLgoKRWFjaCBtdWx0aXBhcnQgZWxlbWVudCBtdXN0IGNvbnRhaW4gYSBgbmFtZWAgYW5kIGBjb250ZW50c2Aga2V5LiBgY29udGVudHNgIG1heQpiZSBhbnkgbm9uLWFycmF5IHZhbHVlIGFjY2VwdGVkIGJ5IGBHdXp6bGVIdHRwXFBzcjdcVXRpbHM6OnN0cmVhbUZvcigpYCwKaW5jbHVkaW5nIGNsb3N1cmVzIGFuZCBpbnZva2FibGUgb2JqZWN0cy4gQXJyYXkgY29udGVudHMgYXJlIHJlY3Vyc2l2ZWx5CmV4cGFuZGVkIGludG8gbmVzdGVkIGZvcm0gZmllbGRzLgoKCiMjIE5vU2Vla1N0cmVhbQoKYEd1enpsZUh0dHBcUHNyN1xOb1NlZWtTdHJlYW1gCgpOb1NlZWtTdHJlYW0gd3JhcHMgYSBzdHJlYW0gYW5kIGRvZXMgbm90IGFsbG93IHNlZWtpbmcuCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHNyNzsKCiRvcmlnaW5hbCA9IFBzcjdcVXRpbHM6OnN0cmVhbUZvcignZm9vJyk7CiRub1NlZWsgPSBuZXcgUHNyN1xOb1NlZWtTdHJlYW0oJG9yaWdpbmFsKTsKCmVjaG8gJG5vU2Vlay0+cmVhZCgzKTsKLy8gZm9vCnZhcl9leHBvcnQoJG5vU2Vlay0+aXNTZWVrYWJsZSgpKTsKLy8gZmFsc2UKJG5vU2Vlay0+c2VlaygwKTsKdmFyX2V4cG9ydCgkbm9TZWVrLT5yZWFkKDMpKTsKLy8gTlVMTApgYGAKCgojIyBQdW1wU3RyZWFtCgpgR3V6emxlSHR0cFxQc3I3XFB1bXBTdHJlYW1gCgpQcm92aWRlcyBhIHJlYWQgb25seSBzdHJlYW0gdGhhdCBwdW1wcyBkYXRhIGZyb20gYSBQSFAgY2FsbGFibGUuCgpXaGVuIGludm9raW5nIHRoZSBwcm92aWRlZCBjYWxsYWJsZSwgdGhlIFB1bXBTdHJlYW0gd2lsbCBwYXNzIHRoZSBzdWdnZXN0ZWQKbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQgdG8gdGhlIGNhbGxhYmxlLiBUaGUgY2FsbGFibGUgY2FuIGNob29zZSB0byBpZ25vcmUKdGhpcyB2YWx1ZSBhbmQgcmV0dXJuIGZld2VyIG9yIG1vcmUgYnl0ZXMgdGhhbiByZXF1ZXN0ZWQuIEFueSBleHRyYSBkYXRhCnJldHVybmVkIGJ5IHRoZSBwcm92aWRlZCBjYWxsYWJsZSBpcyBidWZmZXJlZCBpbnRlcm5hbGx5IHVudGlsIGRyYWluZWQgdXNpbmcKdGhlIHJlYWQoKSBmdW5jdGlvbiBvZiB0aGUgUHVtcFN0cmVhbS4gVGhlIHByb3ZpZGVkIGNhbGxhYmxlIE1VU1QgcmV0dXJuCmZhbHNlIG9yIG51bGwgd2hlbiB0aGVyZSBpcyBubyBtb3JlIGRhdGEgdG8gcmVhZC4KClVzZXJsYW5kIGNhbGxhYmxlcyB0aGF0IGRlY2xhcmUgbm8gcGFyYW1ldGVycyBhcmUgdG9sZXJhdGVkIGJ5IFBIUCwgYnV0Cmxlbmd0aC1hd2FyZSBjYWxsYWJsZXMgcmVtYWluIHRoZSByZWNvbW1lbmRlZCBmb3JtYWwgc2hhcGUuCgoKIyMgSW1wbGVtZW50aW5nIHN0cmVhbSBkZWNvcmF0b3JzCgpDcmVhdGluZyBhIHN0cmVhbSBkZWNvcmF0b3IgaXMgdmVyeSBlYXN5IHRoYW5rcyB0byB0aGUKYEd1enpsZUh0dHBcUHNyN1xTdHJlYW1EZWNvcmF0b3JUcmFpdGAuIFRoaXMgdHJhaXQgcHJvdmlkZXMgbWV0aG9kcyB0aGF0CmltcGxlbWVudCBgUHNyXEh0dHBcTWVzc2FnZVxTdHJlYW1JbnRlcmZhY2VgIGJ5IHByb3h5aW5nIHRvIGFuIHVuZGVybHlpbmcKc3RyZWFtLiBKdXN0IGB1c2VgIHRoZSBgU3RyZWFtRGVjb3JhdG9yVHJhaXRgIGFuZCBpbXBsZW1lbnQgeW91ciBjdXN0b20KbWV0aG9kcy4KCkZvciBleGFtcGxlLCBsZXQncyBzYXkgd2Ugd2FudGVkIHRvIGNhbGwgYSBzcGVjaWZpYyBmdW5jdGlvbiBlYWNoIHRpbWUgdGhlIGxhc3QKYnl0ZSBpcyByZWFkIGZyb20gYSBzdHJlYW0uIFRoaXMgY291bGQgYmUgaW1wbGVtZW50ZWQgYnkgb3ZlcnJpZGluZyB0aGUKYHJlYWQoKWAgbWV0aG9kLgoKYGBgcGhwCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKdXNlIEd1enpsZUh0dHBcUHNyN1xTdHJlYW1EZWNvcmF0b3JUcmFpdDsKCmNsYXNzIEVvZkNhbGxiYWNrU3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHVzZSBTdHJlYW1EZWNvcmF0b3JUcmFpdDsKCiAgICBwcml2YXRlICRjYWxsYmFjazsKCiAgICBwcml2YXRlICRzdHJlYW07CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KFN0cmVhbUludGVyZmFjZSAkc3RyZWFtLCBjYWxsYWJsZSAkY2IpCiAgICB7CiAgICAgICAgJHRoaXMtPnN0cmVhbSA9ICRzdHJlYW07CiAgICAgICAgJHRoaXMtPmNhbGxiYWNrID0gJGNiOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKCRsZW5ndGgpCiAgICB7CiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5zdHJlYW0tPnJlYWQoJGxlbmd0aCk7CgogICAgICAgIC8vIEludm9rZSB0aGUgY2FsbGJhY2sgd2hlbiBFT0YgaXMgaGl0LgogICAgICAgIGlmICgkdGhpcy0+ZW9mKCkpIHsKICAgICAgICAgICAgKCR0aGlzLT5jYWxsYmFjaykoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQp9CmBgYAoKVGhpcyBkZWNvcmF0b3IgY291bGQgYmUgYWRkZWQgdG8gYW55IGV4aXN0aW5nIHN0cmVhbSBhbmQgdXNlZCBsaWtlIHNvOgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFBzcjc7Cgokb3JpZ2luYWwgPSBQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoJ2ZvbycpOwoKJGVvZlN0cmVhbSA9IG5ldyBFb2ZDYWxsYmFja1N0cmVhbSgkb3JpZ2luYWwsIGZ1bmN0aW9uICgpIHsKICAgIGVjaG8gJ0VPRiEnOwp9KTsKCiRlb2ZTdHJlYW0tPnJlYWQoMik7CiRlb2ZTdHJlYW0tPnJlYWQoMSk7Ci8vIGVjaG9lcyAiRU9GISIKJGVvZlN0cmVhbS0+c2VlaygwKTsKJGVvZlN0cmVhbS0+cmVhZCgzKTsKLy8gZWNob2VzICJFT0YhIgpgYGAKCgojIyBQSFAgU3RyZWFtV3JhcHBlcgoKWW91IGNhbiB1c2UgdGhlIGBHdXp6bGVIdHRwXFBzcjdcU3RyZWFtV3JhcHBlcmAgY2xhc3MgaWYgeW91IG5lZWQgdG8gdXNlIGEKUFNSLTcgc3RyZWFtIGFzIGEgUEhQIHN0cmVhbSByZXNvdXJjZS4KClVzZSB0aGUgYEd1enpsZUh0dHBcUHNyN1xTdHJlYW1XcmFwcGVyOjpnZXRSZXNvdXJjZSgpYCBtZXRob2QgdG8gY3JlYXRlIGEgUEhQCnN0cmVhbSBmcm9tIGEgUFNSLTcgc3RyZWFtLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFBzcjdcU3RyZWFtV3JhcHBlcjsKCiRzdHJlYW0gPSBHdXp6bGVIdHRwXFBzcjdcVXRpbHM6OnN0cmVhbUZvcignaGVsbG8hJyk7CiRyZXNvdXJjZSA9IFN0cmVhbVdyYXBwZXI6OmdldFJlc291cmNlKCRzdHJlYW0pOwplY2hvIGZyZWFkKCRyZXNvdXJjZSwgNik7IC8vIG91dHB1dHMgaGVsbG8hCmBgYAoKCiMgU3RhdGljIEFQSQoKVGhlcmUgYXJlIHZhcmlvdXMgc3RhdGljIG1ldGhvZHMgYXZhaWxhYmxlIHVuZGVyIHRoZSBgR3V6emxlSHR0cFxQc3I3YCBuYW1lc3BhY2UuCgoKIyMgYEd1enpsZUh0dHBcUHNyN1xNZXNzYWdlOjp0b1N0cmluZ2AKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvU3RyaW5nKE1lc3NhZ2VJbnRlcmZhY2UgJG1lc3NhZ2UpOiBzdHJpbmdgCgpSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gSFRUUCBtZXNzYWdlLgoKYGBgcGhwCiRyZXF1ZXN0ID0gbmV3IEd1enpsZUh0dHBcUHNyN1xSZXF1ZXN0KCdHRVQnLCAnaHR0cDovL2V4YW1wbGUuY29tJyk7CmVjaG8gR3V6emxlSHR0cFxQc3I3XE1lc3NhZ2U6OnRvU3RyaW5nKCRyZXF1ZXN0KTsKYGBgCgoKIyMgYEd1enpsZUh0dHBcUHNyN1xNZXNzYWdlOjpib2R5U3VtbWFyeWAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGJvZHlTdW1tYXJ5KE1lc3NhZ2VJbnRlcmZhY2UgJG1lc3NhZ2UsIGludCAkdHJ1bmNhdGVBdCA9IDEyMCk6IHN0cmluZ3xudWxsYAoKR2V0IGEgc2hvcnQgc3VtbWFyeSBvZiB0aGUgbWVzc2FnZSBib2R5LgoKV2lsbCByZXR1cm4gYG51bGxgIGlmIHRoZSByZXNwb25zZSBpcyBub3QgcHJpbnRhYmxlLgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcTWVzc2FnZTo6cmV3aW5kQm9keWAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJld2luZEJvZHkoTWVzc2FnZUludGVyZmFjZSAkbWVzc2FnZSk6IHZvaWRgCgpBdHRlbXB0cyB0byByZXdpbmQgYSBtZXNzYWdlIGJvZHkgYW5kIHRocm93cyBhbiBleGNlcHRpb24gb24gZmFpbHVyZS4KClRoZSBib2R5IG9mIHRoZSBtZXNzYWdlIHdpbGwgb25seSBiZSByZXdvdW5kIGlmIGEgY2FsbCB0byBgdGVsbCgpYApyZXR1cm5zIGEgdmFsdWUgb3RoZXIgdGhhbiBgMGAuCgoKIyMgYEd1enpsZUh0dHBcUHNyN1xNZXNzYWdlOjpwYXJzZU1lc3NhZ2VgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZU1lc3NhZ2Uoc3RyaW5nICRtZXNzYWdlKTogYXJyYXlgCgpQYXJzZXMgYW4gSFRUUCBtZXNzYWdlIGludG8gYW4gYXNzb2NpYXRpdmUgYXJyYXkuCgpUaGUgYXJyYXkgY29udGFpbnMgdGhlICJzdGFydC1saW5lIiBrZXkgY29udGFpbmluZyB0aGUgc3RhcnQgbGluZSBvZgp0aGUgbWVzc2FnZSwgImhlYWRlcnMiIGtleSBjb250YWluaW5nIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIGhlYWRlcgphcnJheSB2YWx1ZXMsIGFuZCBhICJib2R5IiBrZXkgY29udGFpbmluZyB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZS4KCgojIyBgR3V6emxlSHR0cFxQc3I3XE1lc3NhZ2U6OnBhcnNlUmVxdWVzdFVyaWAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlUmVxdWVzdFVyaShzdHJpbmcgJHBhdGgsIGFycmF5ICRoZWFkZXJzKTogc3RyaW5nYAoKQ29uc3RydWN0cyBhIFVSSSBmb3IgYW4gSFRUUCByZXF1ZXN0IG1lc3NhZ2UuCgoKIyMgYEd1enpsZUh0dHBcUHNyN1xNZXNzYWdlOjpwYXJzZVJlcXVlc3RgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZVJlcXVlc3Qoc3RyaW5nICRtZXNzYWdlKTogUmVxdWVzdGAKClBhcnNlcyBhIHJlcXVlc3QgbWVzc2FnZSBzdHJpbmcgaW50byBhIHJlcXVlc3Qgb2JqZWN0LgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcTWVzc2FnZTo6cGFyc2VSZXNwb25zZWAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlUmVzcG9uc2Uoc3RyaW5nICRtZXNzYWdlKTogUmVzcG9uc2VgCgpQYXJzZXMgYSByZXNwb25zZSBtZXNzYWdlIHN0cmluZyBpbnRvIGEgcmVzcG9uc2Ugb2JqZWN0LgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcSGVhZGVyOjpwYXJzZWAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKHN0cmluZ3xhcnJheSAkaGVhZGVyKTogYXJyYXlgCgpQYXJzZSBhbiBhcnJheSBvZiBoZWFkZXIgdmFsdWVzIGNvbnRhaW5pbmcgIjsiIHNlcGFyYXRlZCBkYXRhIGludG8gYW4KYXJyYXkgb2YgYXNzb2NpYXRpdmUgYXJyYXlzIHJlcHJlc2VudGluZyB0aGUgaGVhZGVyIGtleSB2YWx1ZSBwYWlyIGRhdGEKb2YgdGhlIGhlYWRlci4gV2hlbiBhIHBhcmFtZXRlciBkb2VzIG5vdCBjb250YWluIGEgdmFsdWUsIGJ1dCBqdXN0CmNvbnRhaW5zIGEga2V5LCB0aGlzIGZ1bmN0aW9uIHdpbGwgaW5qZWN0IGEga2V5IHdpdGggYSAnJyBzdHJpbmcgdmFsdWUuCgoKIyMgYEd1enpsZUh0dHBcUHNyN1xIZWFkZXI6OnNwbGl0TGlzdGAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNwbGl0TGlzdChzdHJpbmd8c3RyaW5nW10gJGhlYWRlcik6IHN0cmluZ1tdYAoKU3BsaXRzIGEgSFRUUCBoZWFkZXIgZGVmaW5lZCB0byBjb250YWluIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QgaW50bwplYWNoIGluZGl2aWR1YWwgdmFsdWU6CgpgYGAKJGtub3duRXRhZ3MgPSBIZWFkZXI6OnNwbGl0TGlzdCgkcmVxdWVzdC0+Z2V0SGVhZGVyKCdpZi1ub25lLW1hdGNoJykpOwpgYGAKCkV4YW1wbGUgaGVhZGVycyBpbmNsdWRlIGBhY2NlcHRgLCBgY2FjaGUtY29udHJvbGAgYW5kIGBpZi1ub25lLW1hdGNoYC4KCgojIyBgR3V6emxlSHR0cFxQc3I3XEhlYWRlcjo6bm9ybWFsaXplYCAoZGVwcmVjYXRlZCkKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZShzdHJpbmd8YXJyYXkgJGhlYWRlcik6IGFycmF5YAoKYEhlYWRlcjo6bm9ybWFsaXplKClgIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgW2BIZWFkZXI6OnNwbGl0TGlzdCgpYF0oUkVBRE1FLm1kI2d1enpsZWh0dHBwc3I3aGVhZGVyc3BsaXRsaXN0KQp3aGljaCBwZXJmb3JtcyB0aGUgc2FtZSBvcGVyYXRpb24gd2l0aCBhIGNsZWFuZWQgdXAgQVBJIGFuZCBpbXByb3ZlZApkb2N1bWVudGF0aW9uLgoKQ29udmVydHMgYW4gYXJyYXkgb2YgaGVhZGVyIHZhbHVlcyB0aGF0IG1heSBjb250YWluIGNvbW1hIHNlcGFyYXRlZApoZWFkZXJzIGludG8gYW4gYXJyYXkgb2YgaGVhZGVycyB3aXRoIG5vIGNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMuCgoKIyMgYEd1enpsZUh0dHBcUHNyN1xRdWVyeTo6cGFyc2VgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZShzdHJpbmcgJHN0ciwgaW50fGJvb2wgJHVybEVuY29kaW5nID0gdHJ1ZSk6IGFycmF5YAoKUGFyc2UgYSBxdWVyeSBzdHJpbmcgaW50byBhbiBhc3NvY2lhdGl2ZSBhcnJheS4KCklmIG11bHRpcGxlIHZhbHVlcyBhcmUgZm91bmQgZm9yIHRoZSBzYW1lIGtleSwgdGhlIHZhbHVlIG9mIHRoYXQga2V5CnZhbHVlIHBhaXIgd2lsbCBiZWNvbWUgYW4gYXJyYXkuIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcGFyc2UgbmVzdGVkClBIUCBzdHlsZSBhcnJheXMgaW50byBhbiBhc3NvY2lhdGl2ZSBhcnJheSAoZS5nLiwgYGZvb1thXT0xJmZvb1tiXT0yYAp3aWxsIGJlIHBhcnNlZCBpbnRvIGBbJ2Zvb1thXScgPT4gJzEnLCAnZm9vW2JdJyA9PiAnMiddKWAuCgoKIyMgYEd1enpsZUh0dHBcUHNyN1xRdWVyeTo6YnVpbGRgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBidWlsZChhcnJheSAkcGFyYW1zLCBpbnR8ZmFsc2UgJGVuY29kaW5nID0gUEhQX1FVRVJZX1JGQzM5ODYsIGJvb2wgJHRyZWF0Qm9vbHNBc0ludHMgPSB0cnVlKTogc3RyaW5nYAoKQnVpbGQgYSBxdWVyeSBzdHJpbmcgZnJvbSBhbiBhcnJheSBvZiBrZXkgdmFsdWUgcGFpcnMuCgpUaGlzIGZ1bmN0aW9uIGNhbiB1c2UgdGhlIHJldHVybiB2YWx1ZSBvZiBgcGFyc2UoKWAgdG8gYnVpbGQgYSBxdWVyeQpzdHJpbmcuIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgbW9kaWZ5IHRoZSBwcm92aWRlZCBrZXlzIHdoZW4gYW4gYXJyYXkgaXMKZW5jb3VudGVyZWQgKGxpa2UgYGh0dHBfYnVpbGRfcXVlcnkoKWAgd291bGQpLgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcVXRpbHM6OmNhc2VsZXNzUmVtb3ZlYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2FzZWxlc3NSZW1vdmUoaXRlcmFibGU8c3RyaW5nPiAka2V5cywgJGtleXMsIGFycmF5ICRkYXRhKTogYXJyYXlgCgpSZW1vdmUgdGhlIGl0ZW1zIGdpdmVuIGJ5IHRoZSBrZXlzLCBjYXNlIGluc2Vuc2l0aXZlbHkgZnJvbSB0aGUgZGF0YS4KCgojIyBgR3V6emxlSHR0cFxQc3I3XFV0aWxzOjpjb3B5VG9TdHJlYW1gCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb3B5VG9TdHJlYW0oU3RyZWFtSW50ZXJmYWNlICRzb3VyY2UsIFN0cmVhbUludGVyZmFjZSAkZGVzdCwgaW50ICRtYXhMZW4gPSAtMSk6IHZvaWRgCgpDb3B5IHRoZSBjb250ZW50cyBvZiBhIHN0cmVhbSBpbnRvIGFub3RoZXIgc3RyZWFtIHVudGlsIHRoZSBnaXZlbiBudW1iZXIKb2YgYnl0ZXMgaGF2ZSBiZWVuIHJlYWQuCgpUaGUgY29weSBzdG9wcyBpZiB0aGUgZGVzdGluYXRpb24gYHdyaXRlKClgIHJldHVybnMgMCwgZm9yIGV4YW1wbGUgYQpgQnVmZmVyU3RyZWFtYCBhdCBpdHMgaGlnaCB3YXRlciBtYXJrIG9yIGEgZnVsbCBgRHJvcHBpbmdTdHJlYW1gLiBGb3IgYQpndWFyYW50ZWVkIGZ1bGwgY29weSwgdXNlIGEgbm9ybWFsIHdyaXRhYmxlIHN0cmVhbSBzdWNoIGFzIGEgZmlsZSBvcgpgcGhwOi8vdGVtcGAgc3RyZWFtLgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcVXRpbHM6OmNvcHlUb1N0cmluZ2AKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvcHlUb1N0cmluZyhTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgaW50ICRtYXhMZW4gPSAtMSk6IHN0cmluZ2AKCkNvcHkgdGhlIGNvbnRlbnRzIG9mIGEgc3RyZWFtIGludG8gYSBzdHJpbmcgdW50aWwgdGhlIGdpdmVuIG51bWJlciBvZgpieXRlcyBoYXZlIGJlZW4gcmVhZC4KCgojIyBgR3V6emxlSHR0cFxQc3I3XFV0aWxzOjpoYXNoYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaGFzaChTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgc3RyaW5nICRhbGdvLCBib29sICRyYXdPdXRwdXQgPSBmYWxzZSk6IHN0cmluZ2AKCkNhbGN1bGF0ZSBhIGhhc2ggb2YgYSBzdHJlYW0uCgpUaGlzIG1ldGhvZCByZWFkcyB0aGUgZW50aXJlIHN0cmVhbSB0byBjYWxjdWxhdGUgYSByb2xsaW5nIGhhc2gsIGJhc2VkIG9uClBIUCdzIGBoYXNoX2luaXRgIGZ1bmN0aW9ucy4KCgojIyBgR3V6emxlSHR0cFxQc3I3XFV0aWxzOjptb2RpZnlSZXF1ZXN0YAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbW9kaWZ5UmVxdWVzdChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkY2hhbmdlcyk6IFJlcXVlc3RJbnRlcmZhY2VgCgpDbG9uZSBhbmQgbW9kaWZ5IGEgcmVxdWVzdCB3aXRoIHRoZSBnaXZlbiBjaGFuZ2VzLgoKVGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvciByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGNsb25lcyBuZWVkZWQgdG8gbXV0YXRlCmEgbWVzc2FnZS4KCi0gbWV0aG9kOiAoc3RyaW5nKSBDaGFuZ2VzIHRoZSBIVFRQIG1ldGhvZC4KLSBzZXRfaGVhZGVyczogKGFycmF5KSBTZXRzIHRoZSBnaXZlbiBoZWFkZXJzLgotIHJlbW92ZV9oZWFkZXJzOiAoYXJyYXkpIFJlbW92ZSB0aGUgZ2l2ZW4gaGVhZGVycy4KLSBib2R5OiAobWl4ZWQpIFNldHMgdGhlIGdpdmVuIGJvZHkuIFByZXNlbnQgbm9uLW51bGwgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgd2l0aAogIGBHdXp6bGVIdHRwXFBzcjdcVXRpbHM6OnN0cmVhbUZvcigpYCwgaW5jbHVkaW5nIHNjYWxhciB2YWx1ZXMsIHJlc291cmNlcywKICBzdHJlYW1zLCBpdGVyYXRvcnMsIGNhbGxhYmxlIGFycmF5cywgY2xvc3VyZXMsIGludm9rYWJsZSBvYmplY3RzLCBhbmQKICBvYmplY3RzIHdpdGggYF9fdG9TdHJpbmcoKWAuIFN0cmluZyBpbnB1dHMgcmVtYWluIGxpdGVyYWwgYm9kaWVzLgotIHVyaTogKFVyaUludGVyZmFjZSkgU2V0IHRoZSBVUkkuCi0gcXVlcnk6IChzdHJpbmcpIFNldCB0aGUgcXVlcnkgc3RyaW5nIHZhbHVlIG9mIHRoZSBVUkkuCi0gdmVyc2lvbjogKHN0cmluZykgU2V0IHRoZSBwcm90b2NvbCB2ZXJzaW9uLgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcVXRpbHM6OnJlYWRMaW5lYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVhZExpbmUoU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0sID9pbnQgJG1heExlbmd0aCA9IG51bGwpOiBzdHJpbmdgCgpSZWFkIGEgbGluZSBmcm9tIHRoZSBzdHJlYW0gdXAgdG8gdGhlIG1heGltdW0gYWxsb3dlZCBidWZmZXIgbGVuZ3RoLgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcVXRpbHM6OnJlZGFjdFVzZXJJbmZvYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVkYWN0VXNlckluZm8oVXJpSW50ZXJmYWNlICR1cmkpOiBVcmlJbnRlcmZhY2VgCgpSZWRhY3QgdGhlIHBhc3N3b3JkIGluIHRoZSB1c2VyIGluZm8gcGFydCBvZiBhIFVSSS4KCgojIyBgR3V6emxlSHR0cFxQc3I3XFV0aWxzOjpzdHJlYW1Gb3JgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdHJlYW1Gb3IocmVzb3VyY2V8c3RyaW5nfG51bGx8aW50fGZsb2F0fGJvb2x8U3RyZWFtSW50ZXJmYWNlfGNhbGxhYmxlfFxJdGVyYXRvciAkcmVzb3VyY2UgPSAnJywgYXJyYXkgJG9wdGlvbnMgPSBbXSk6IFN0cmVhbUludGVyZmFjZWAKCkNyZWF0ZSBhIG5ldyBzdHJlYW0gYmFzZWQgb24gdGhlIGlucHV0IHR5cGUuCgpPcHRpb25zIGlzIGFuIGFzc29jaWF0aXZlIGFycmF5IHRoYXQgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBrZXlzOgoKLSBtZXRhZGF0YTogQXJyYXkgb2YgY3VzdG9tIG1ldGFkYXRhLgotIHNpemU6IFNpemUgb2YgdGhlIHN0cmVhbS4KClRoaXMgbWV0aG9kIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBgJHJlc291cmNlYCB0eXBlczoKCi0gYFBzclxIdHRwXE1lc3NhZ2VcU3RyZWFtSW50ZXJmYWNlYDogUmV0dXJucyB0aGUgdmFsdWUgYXMtaXMuCi0gYHN0cmluZ2A6IENyZWF0ZXMgYSBzdHJlYW0gb2JqZWN0IHRoYXQgdXNlcyB0aGUgZ2l2ZW4gc3RyaW5nIGFzIHRoZSBjb250ZW50cy4KLSBgcmVzb3VyY2VgOiBDcmVhdGVzIGEgc3RyZWFtIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBnaXZlbiBQSFAgc3RyZWFtIHJlc291cmNlLgotIGBJdGVyYXRvcmA6IElmIHRoZSBwcm92aWRlZCB2YWx1ZSBpbXBsZW1lbnRzIGBJdGVyYXRvcmAsIHRoZW4gYSByZWFkLW9ubHkKICBzdHJlYW0gb2JqZWN0IHdpbGwgYmUgY3JlYXRlZCB0aGF0IHdyYXBzIHRoZSBnaXZlbiBpdGVyYWJsZS4gRWFjaCB0aW1lIHRoZQogIHN0cmVhbSBpcyByZWFkIGZyb20sIGRhdGEgZnJvbSB0aGUgaXRlcmF0b3Igd2lsbCBmaWxsIGEgYnVmZmVyIGFuZCB3aWxsIGJlCiAgY29udGludW91c2x5IGNhbGxlZCB1bnRpbCB0aGUgYnVmZmVyIGlzIGVxdWFsIHRvIHRoZSByZXF1ZXN0ZWQgcmVhZCBzaXplLgogIFN1YnNlcXVlbnQgcmVhZCBjYWxscyB3aWxsIGZpcnN0IHJlYWQgZnJvbSB0aGUgYnVmZmVyIGFuZCB0aGVuIGNhbGwgYG5leHRgCiAgb24gdGhlIHVuZGVybHlpbmcgaXRlcmF0b3IgdW50aWwgaXQgaXMgZXhoYXVzdGVkLgotIGBvYmplY3RgIHdpdGggYF9fdG9TdHJpbmcoKWA6IElmIHRoZSBvYmplY3QgaGFzIHRoZSBgX190b1N0cmluZygpYCBtZXRob2QsCiAgdGhlIG9iamVjdCB3aWxsIGJlIGNhc3QgdG8gYSBzdHJpbmcgYW5kIHRoZW4gYSBzdHJlYW0gd2lsbCBiZSByZXR1cm5lZCB0aGF0CiAgdXNlcyB0aGUgc3RyaW5nIHZhbHVlLgotIGBOVUxMYDogV2hlbiBgbnVsbGAgaXMgcGFzc2VkLCBhbiBlbXB0eSBzdHJlYW0gb2JqZWN0IGlzIHJldHVybmVkLgotIGBjYWxsYWJsZWA6IFdoZW4gYSBjYWxsYWJsZSBhcnJheSwgY2xvc3VyZSwgb3IgaW52b2thYmxlIG9iamVjdCBpcyBwYXNzZWQgYW5kCiAgbm8gZWFybGllciByZXNvdXJjZSBvciBvYmplY3QgcnVsZSBhcHBsaWVzLCBhIHJlYWQtb25seSBzdHJlYW0gb2JqZWN0IHdpbGwgYmUKICBjcmVhdGVkIHRoYXQgaW52b2tlcyB0aGUgZ2l2ZW4gY2FsbGFibGUuIFRoZSBjYWxsYWJsZSBpcyBpbnZva2VkIHdpdGggdGhlCiAgc3VnZ2VzdGVkIG51bWJlciBvZiBieXRlcyB0byByZWFkLiBUaGUgY2FsbGFibGUgY2FuIHJldHVybiBmZXdlciBvciBtb3JlIGJ5dGVzCiAgdGhhbiByZXF1ZXN0ZWQsIGJ1dCBNVVNUIHJldHVybiBgZmFsc2VgIG9yIGBudWxsYCB3aGVuIHRoZXJlIGlzIG5vIG1vcmUgZGF0YQogIHRvIHJldHVybi4gQW55IGFkZGl0aW9uYWwgYnl0ZXMgd2lsbCBiZSBidWZmZXJlZCBhbmQgdXNlZCBpbiBzdWJzZXF1ZW50IHJlYWRzLgogIFN0cmluZyBpbnB1dHMgYXJlIGFsd2F5cyB0cmVhdGVkIGFzIHN0cmluZyBib2RpZXMsIGV2ZW4gd2hlbiB0aGV5IG5hbWUKICBjYWxsYWJsZSBmdW5jdGlvbnMuCgpgYGBwaHAKJHN0cmVhbSA9IEd1enpsZUh0dHBcUHNyN1xVdGlsczo6c3RyZWFtRm9yKCdmb28nKTsKJHN0cmVhbSA9IEd1enpsZUh0dHBcUHNyN1xVdGlsczo6c3RyZWFtRm9yKGZvcGVuKCcvcGF0aC90by9maWxlJywgJ3InKSk7CgokZ2VuZXJhdG9yID0gZnVuY3Rpb24gKCRieXRlcykgewogICAgZm9yICgkaSA9IDA7ICRpIDwgJGJ5dGVzOyAkaSsrKSB7CiAgICAgICAgeWllbGQgJyAnOwogICAgfQp9Cgokc3RyZWFtID0gR3V6emxlSHR0cFxQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoJGdlbmVyYXRvcigxMDApKTsKYGBgCgoKIyMgYEd1enpsZUh0dHBcUHNyN1xVdGlsczo6dHJ5Rm9wZW5gCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0cnlGb3BlbihzdHJpbmcgJGZpbGVuYW1lLCBzdHJpbmcgJG1vZGUpOiByZXNvdXJjZWAKClNhZmVseSBvcGVucyBhIFBIUCBzdHJlYW0gcmVzb3VyY2UgdXNpbmcgYSBmaWxlbmFtZS4KCldoZW4gZm9wZW4gZmFpbHMsIFBIUCBub3JtYWxseSByYWlzZXMgYSB3YXJuaW5nLiBUaGlzIGZ1bmN0aW9uIGFkZHMgYW4KZXJyb3IgaGFuZGxlciB0aGF0IGNoZWNrcyBmb3IgZXJyb3JzIGFuZCB0aHJvd3MgYW4gZXhjZXB0aW9uIGluc3RlYWQuCgoKIyMgYEd1enpsZUh0dHBcUHNyN1xVdGlsczo6dHJ5R2V0Q29udGVudHNgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0cnlHZXRDb250ZW50cyhyZXNvdXJjZSAkc3RyZWFtKTogc3RyaW5nYAoKU2FmZWx5IGdldHMgdGhlIGNvbnRlbnRzIG9mIGEgZ2l2ZW4gc3RyZWFtLgoKV2hlbiBzdHJlYW1fZ2V0X2NvbnRlbnRzIGZhaWxzLCBQSFAgbm9ybWFsbHkgcmFpc2VzIGEgd2FybmluZy4gVGhpcwpmdW5jdGlvbiBhZGRzIGFuIGVycm9yIGhhbmRsZXIgdGhhdCBjaGVja3MgZm9yIGVycm9ycyBhbmQgdGhyb3dzIGFuCmV4Y2VwdGlvbiBpbnN0ZWFkLgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcVXRpbHM6OnVyaUZvcmAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVyaUZvcihzdHJpbmd8VXJpSW50ZXJmYWNlICR1cmkpOiBVcmlJbnRlcmZhY2VgCgpSZXR1cm5zIGEgVXJpSW50ZXJmYWNlIGZvciB0aGUgZ2l2ZW4gdmFsdWUuCgpUaGlzIGZ1bmN0aW9uIGFjY2VwdHMgYSBzdHJpbmcgb3IgVXJpSW50ZXJmYWNlIGFuZCByZXR1cm5zIGEKVXJpSW50ZXJmYWNlIGZvciB0aGUgZ2l2ZW4gdmFsdWUuIElmIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IGEKVXJpSW50ZXJmYWNlLCBpdCBpcyByZXR1cm5lZCBhcy1pcy4KCgojIyBgR3V6emxlSHR0cFxQc3I3XE1pbWVUeXBlOjpmcm9tRmlsZW5hbWVgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tRmlsZW5hbWUoc3RyaW5nICRmaWxlbmFtZSk6IHN0cmluZ3xudWxsYAoKRGV0ZXJtaW5lcyB0aGUgbWltZXR5cGUgb2YgYSBmaWxlIGJ5IGxvb2tpbmcgYXQgaXRzIGV4dGVuc2lvbi4KCgojIyBgR3V6emxlSHR0cFxQc3I3XE1pbWVUeXBlOjpmcm9tRXh0ZW5zaW9uYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUV4dGVuc2lvbihzdHJpbmcgJGV4dGVuc2lvbik6IHN0cmluZ3xudWxsYAoKTWFwcyBhIGZpbGUgZXh0ZW5zaW9ucyB0byBhIG1pbWV0eXBlLgoKCiMgQWRkaXRpb25hbCBVUkkgTWV0aG9kcwoKQXNpZGUgZnJvbSB0aGUgc3RhbmRhcmQgYFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlYCBpbXBsZW1lbnRhdGlvbiBpbiBmb3JtIG9mIHRoZSBgR3V6emxlSHR0cFxQc3I3XFVyaWAgY2xhc3MsCnRoaXMgbGlicmFyeSBhbHNvIHByb3ZpZGVzIGFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eSB3aGVuIHdvcmtpbmcgd2l0aCBVUklzIGFzIHN0YXRpYyBtZXRob2RzLgoKIyMgVVJJIFR5cGVzCgpBbiBpbnN0YW5jZSBvZiBgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2VgIGNhbiBlaXRoZXIgYmUgYW4gYWJzb2x1dGUgVVJJIG9yIGEgcmVsYXRpdmUgcmVmZXJlbmNlLgpBbiBhYnNvbHV0ZSBVUkkgaGFzIGEgc2NoZW1lLiBBIHJlbGF0aXZlIHJlZmVyZW5jZSBpcyB1c2VkIHRvIGV4cHJlc3MgYSBVUkkgcmVsYXRpdmUgdG8gYW5vdGhlciBVUkksCnRoZSBiYXNlIFVSSS4gUmVsYXRpdmUgcmVmZXJlbmNlcyBjYW4gYmUgZGl2aWRlZCBpbnRvIHNldmVyYWwgZm9ybXMgYWNjb3JkaW5nIHRvCltSRkMgMzk4NiBTZWN0aW9uIDQuMl0oaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNC4yKToKCi0gbmV0d29yay1wYXRoIHJlZmVyZW5jZXMsIGUuZy4gYC8vZXhhbXBsZS5jb20vcGF0aGAKLSBhYnNvbHV0ZS1wYXRoIHJlZmVyZW5jZXMsIGUuZy4gYC9wYXRoYAotIHJlbGF0aXZlLXBhdGggcmVmZXJlbmNlcywgZS5nLiBgc3VicGF0aGAKClRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB0aGUgdHlwZSBvZiB0aGUgVVJJLgoKIyMjIGBHdXp6bGVIdHRwXFBzcjdcVXJpOjppc0Fic29sdXRlYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNBYnNvbHV0ZShVcmlJbnRlcmZhY2UgJHVyaSk6IGJvb2xgCgpXaGV0aGVyIHRoZSBVUkkgaXMgYWJzb2x1dGUsIGkuZS4gaXQgaGFzIGEgc2NoZW1lLgoKIyMjIGBHdXp6bGVIdHRwXFBzcjdcVXJpOjppc05ldHdvcmtQYXRoUmVmZXJlbmNlYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNOZXR3b3JrUGF0aFJlZmVyZW5jZShVcmlJbnRlcmZhY2UgJHVyaSk6IGJvb2xgCgpXaGV0aGVyIHRoZSBVUkkgaXMgYSBuZXR3b3JrLXBhdGggcmVmZXJlbmNlLiBBIHJlbGF0aXZlIHJlZmVyZW5jZSB0aGF0IGJlZ2lucyB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzIGlzCnRlcm1lZCBhbiBuZXR3b3JrLXBhdGggcmVmZXJlbmNlLgoKIyMjIGBHdXp6bGVIdHRwXFBzcjdcVXJpOjppc0Fic29sdXRlUGF0aFJlZmVyZW5jZWAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzQWJzb2x1dGVQYXRoUmVmZXJlbmNlKFVyaUludGVyZmFjZSAkdXJpKTogYm9vbGAKCldoZXRoZXIgdGhlIFVSSSBpcyBhIGFic29sdXRlLXBhdGggcmVmZXJlbmNlLiBBIHJlbGF0aXZlIHJlZmVyZW5jZSB0aGF0IGJlZ2lucyB3aXRoIGEgc2luZ2xlIHNsYXNoIGNoYXJhY3RlciBpcwp0ZXJtZWQgYW4gYWJzb2x1dGUtcGF0aCByZWZlcmVuY2UuCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmk6OmlzUmVsYXRpdmVQYXRoUmVmZXJlbmNlYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNSZWxhdGl2ZVBhdGhSZWZlcmVuY2UoVXJpSW50ZXJmYWNlICR1cmkpOiBib29sYAoKV2hldGhlciB0aGUgVVJJIGlzIGEgcmVsYXRpdmUtcGF0aCByZWZlcmVuY2UuIEEgcmVsYXRpdmUgcmVmZXJlbmNlIHRoYXQgZG9lcyBub3QgYmVnaW4gd2l0aCBhIHNsYXNoIGNoYXJhY3RlciBpcwp0ZXJtZWQgYSByZWxhdGl2ZS1wYXRoIHJlZmVyZW5jZS4KCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaTo6aXNTYW1lRG9jdW1lbnRSZWZlcmVuY2VgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc1NhbWVEb2N1bWVudFJlZmVyZW5jZShVcmlJbnRlcmZhY2UgJHVyaSwgP1VyaUludGVyZmFjZSAkYmFzZSA9IG51bGwpOiBib29sYAoKV2hldGhlciB0aGUgVVJJIGlzIGEgc2FtZS1kb2N1bWVudCByZWZlcmVuY2UuIEEgc2FtZS1kb2N1bWVudCByZWZlcmVuY2UgcmVmZXJzIHRvIGEgVVJJIHRoYXQgaXMsIGFzaWRlIGZyb20gaXRzCmZyYWdtZW50IGNvbXBvbmVudCwgaWRlbnRpY2FsIHRvIHRoZSBiYXNlIFVSSS4gV2hlbiBubyBiYXNlIFVSSSBpcyBnaXZlbiwgb25seSBhbiBlbXB0eSBVUkkgcmVmZXJlbmNlCihhcGFydCBmcm9tIGl0cyBmcmFnbWVudCkgaXMgY29uc2lkZXJlZCBhIHNhbWUtZG9jdW1lbnQgcmVmZXJlbmNlLgoKIyMgVVJJIENvbXBvbmVudHMKCkFkZGl0aW9uYWwgbWV0aG9kcyB0byB3b3JrIHdpdGggVVJJIGNvbXBvbmVudHMuCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmk6OmlzRGVmYXVsdFBvcnRgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0RlZmF1bHRQb3J0KFVyaUludGVyZmFjZSAkdXJpKTogYm9vbGAKCldoZXRoZXIgdGhlIFVSSSBoYXMgdGhlIGRlZmF1bHQgcG9ydCBvZiB0aGUgY3VycmVudCBzY2hlbWUuIGBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTo6Z2V0UG9ydGAgbWF5IHJldHVybiBudWxsCm9yIHRoZSBzdGFuZGFyZCBwb3J0LiBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4KCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaTo6Y29tcG9zZUNvbXBvbmVudHNgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb21wb3NlQ29tcG9uZW50cygkc2NoZW1lLCAkYXV0aG9yaXR5LCAkcGF0aCwgJHF1ZXJ5LCAkZnJhZ21lbnQpOiBzdHJpbmdgCgpDb21wb3NlcyBhIFVSSSByZWZlcmVuY2Ugc3RyaW5nIGZyb20gaXRzIHZhcmlvdXMgY29tcG9uZW50cyBhY2NvcmRpbmcgdG8KW1JGQyAzOTg2IFNlY3Rpb24gNS4zXShodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjMpLiBVc3VhbGx5IHRoaXMgbWV0aG9kIGRvZXMgbm90IG5lZWQKdG8gYmUgY2FsbGVkIG1hbnVhbGx5IGJ1dCBpbnN0ZWFkIGlzIHVzZWQgaW5kaXJlY3RseSB2aWEgYFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOjpfX3RvU3RyaW5nYC4KCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaTo6ZnJvbVBhcnRzYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbVBhcnRzKGFycmF5ICRwYXJ0cyk6IFVyaUludGVyZmFjZWAKCkNyZWF0ZXMgYSBVUkkgZnJvbSBhIGhhc2ggb2YgW2BwYXJzZV91cmxgXShodHRwczovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5wYXJzZS11cmwucGhwKSBjb21wb25lbnRzLgoKCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaTo6d2l0aFF1ZXJ5VmFsdWVgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3aXRoUXVlcnlWYWx1ZShVcmlJbnRlcmZhY2UgJHVyaSwgJGtleSwgJHZhbHVlKTogVXJpSW50ZXJmYWNlYAoKQ3JlYXRlcyBhIG5ldyBVUkkgd2l0aCBhIHNwZWNpZmljIHF1ZXJ5IHN0cmluZyB2YWx1ZS4gQW55IGV4aXN0aW5nIHF1ZXJ5IHN0cmluZyB2YWx1ZXMgdGhhdCBleGFjdGx5IG1hdGNoIHRoZQpwcm92aWRlZCBrZXkgYXJlIHJlbW92ZWQgYW5kIHJlcGxhY2VkIHdpdGggdGhlIGdpdmVuIGtleSB2YWx1ZSBwYWlyLiBBIHZhbHVlIG9mIG51bGwgd2lsbCBzZXQgdGhlIHF1ZXJ5IHN0cmluZwprZXkgd2l0aG91dCBhIHZhbHVlLCBlLmcuICJrZXkiIGluc3RlYWQgb2YgImtleT12YWx1ZSIuCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmk6OndpdGhRdWVyeVZhbHVlc2AKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHdpdGhRdWVyeVZhbHVlcyhVcmlJbnRlcmZhY2UgJHVyaSwgYXJyYXkgJGtleVZhbHVlQXJyYXkpOiBVcmlJbnRlcmZhY2VgCgpDcmVhdGVzIGEgbmV3IFVSSSB3aXRoIG11bHRpcGxlIHF1ZXJ5IHN0cmluZyB2YWx1ZXMuIEl0IGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhcyBgd2l0aFF1ZXJ5VmFsdWUoKWAgYnV0IGZvciBhbgphc3NvY2lhdGl2ZSBhcnJheSBvZiBrZXkgPT4gdmFsdWUuCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmk6OndpdGhvdXRRdWVyeVZhbHVlYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gd2l0aG91dFF1ZXJ5VmFsdWUoVXJpSW50ZXJmYWNlICR1cmksICRrZXkpOiBVcmlJbnRlcmZhY2VgCgpDcmVhdGVzIGEgbmV3IFVSSSB3aXRoIGEgc3BlY2lmaWMgcXVlcnkgc3RyaW5nIHZhbHVlIHJlbW92ZWQuIEFueSBleGlzdGluZyBxdWVyeSBzdHJpbmcgdmFsdWVzIHRoYXQgZXhhY3RseSBtYXRjaCB0aGUKcHJvdmlkZWQga2V5IGFyZSByZW1vdmVkLgoKIyMgQ3Jvc3MtT3JpZ2luIERldGVjdGlvbgoKYEd1enpsZUh0dHBcUHNyN1xVcmlDb21wYXJhdG9yYCBwcm92aWRlcyBtZXRob2RzIHRvIGRldGVybWluZSBpZiBhIG1vZGlmaWVkIFVSTCBzaG91bGQgYmUgY29uc2lkZXJlZCBjcm9zcy1vcmlnaW4uCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmlDb21wYXJhdG9yOjppc0Nyb3NzT3JpZ2luYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNDcm9zc09yaWdpbihVcmlJbnRlcmZhY2UgJG9yaWdpbmFsLCBVcmlJbnRlcmZhY2UgJG1vZGlmaWVkKTogYm9vbGAKCkRldGVybWluZXMgaWYgYSBtb2RpZmllZCBVUkwgc2hvdWxkIGJlIGNvbnNpZGVyZWQgY3Jvc3Mtb3JpZ2luIHdpdGggcmVzcGVjdCB0byBhbiBvcmlnaW5hbCBVUkwuCgpUd28gVVJMcyBhcmUgY3Jvc3Mtb3JpZ2luIHdoZW4gdGhlaXIgc2NoZW1lLCBob3N0LCBvciBlZmZlY3RpdmUgcG9ydCBkaWZmZXIuIEhvc3QgY29tcGFyaXNvbiBpcyBjYXNlLWluc2Vuc2l0aXZlLCBhbmQgbWlzc2luZyBwb3J0cyB1c2UgdGhlIGRlZmF1bHQgcG9ydCBmb3IgYGh0dHBgIG9yIGBodHRwc2AuIE90aGVyIHNjaGVtZXMgZG8gbm90IHJlY2VpdmUgaW1wbGljaXQgZGVmYXVsdCBwb3J0cy4KClRoaXMgaGVscGVyIG9ubHkgY29tcGFyZXMgVVJJIG9yaWdpbnMuIEl0IGRvZXMgbm90IGltcGxlbWVudCByZWRpcmVjdCBoYW5kbGluZyBvciBjcmVkZW50aWFsIHBvbGljeS4KCiMjIFJlZmVyZW5jZSBSZXNvbHV0aW9uCgpgR3V6emxlSHR0cFxQc3I3XFVyaVJlc29sdmVyYCBwcm92aWRlcyBtZXRob2RzIHRvIHJlc29sdmUgYSBVUkkgcmVmZXJlbmNlIGluIHRoZSBjb250ZXh0IG9mIGEgYmFzZSBVUkkgYWNjb3JkaW5nCnRvIFtSRkMgMzk4NiBTZWN0aW9uIDVdKGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUpLiBUaGlzIGlzIGZvciBleGFtcGxlIGFsc28gd2hhdCB3ZWIKYnJvd3NlcnMgZG8gd2hlbiByZXNvbHZpbmcgYSBsaW5rIGluIGEgd2Vic2l0ZSBiYXNlZCBvbiB0aGUgY3VycmVudCByZXF1ZXN0IFVSSS4KCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaVJlc29sdmVyOjpyZXNvbHZlYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVzb2x2ZShVcmlJbnRlcmZhY2UgJGJhc2UsIFVyaUludGVyZmFjZSAkcmVsKTogVXJpSW50ZXJmYWNlYAoKQ29udmVydHMgdGhlIHJlbGF0aXZlIFVSSSBpbnRvIGEgbmV3IFVSSSB0aGF0IGlzIHJlc29sdmVkIGFnYWluc3QgdGhlIGJhc2UgVVJJLgoKIyMjIGBHdXp6bGVIdHRwXFBzcjdcVXJpUmVzb2x2ZXI6OnJlbW92ZURvdFNlZ21lbnRzYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVtb3ZlRG90U2VnbWVudHMoc3RyaW5nICRwYXRoKTogc3RyaW5nYAoKUmVtb3ZlcyBkb3Qgc2VnbWVudHMgZnJvbSBhIHBhdGggYW5kIHJldHVybnMgdGhlIG5ldyBwYXRoIGFjY29yZGluZyB0bwpbUkZDIDM5ODYgU2VjdGlvbiA1LjIuNF0oaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yLjQpLgoKIyMjIGBHdXp6bGVIdHRwXFBzcjdcVXJpUmVzb2x2ZXI6OnJlbGF0aXZpemVgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWxhdGl2aXplKFVyaUludGVyZmFjZSAkYmFzZSwgVXJpSW50ZXJmYWNlICR0YXJnZXQpOiBVcmlJbnRlcmZhY2VgCgpSZXR1cm5zIHRoZSB0YXJnZXQgVVJJIGFzIGEgcmVsYXRpdmUgcmVmZXJlbmNlIGZyb20gdGhlIGJhc2UgVVJJLiBUaGlzIG1ldGhvZCBpcyB0aGUgY291bnRlcnBhcnQgdG8gcmVzb2x2ZSgpOgoKYGBgcGhwCihzdHJpbmcpICR0YXJnZXQgPT09IChzdHJpbmcpIFVyaVJlc29sdmVyOjpyZXNvbHZlKCRiYXNlLCBVcmlSZXNvbHZlcjo6cmVsYXRpdml6ZSgkYmFzZSwgJHRhcmdldCkpCmBgYAoKT25lIHVzZS1jYXNlIGlzIHRvIHVzZSB0aGUgY3VycmVudCByZXF1ZXN0IFVSSSBhcyBiYXNlIFVSSSBhbmQgdGhlbiBnZW5lcmF0ZSByZWxhdGl2ZSBsaW5rcyBpbiB5b3VyIGRvY3VtZW50cwp0byByZWR1Y2UgdGhlIGRvY3VtZW50IHNpemUgb3Igb2ZmZXIgc2VsZi1jb250YWluZWQgZG93bmxvYWRhYmxlIGRvY3VtZW50IGFyY2hpdmVzLgoKYGBgcGhwCiRiYXNlID0gbmV3IFVyaSgnaHR0cDovL2V4YW1wbGUuY29tL2EvYi8nKTsKZWNobyBVcmlSZXNvbHZlcjo6cmVsYXRpdml6ZSgkYmFzZSwgbmV3IFVyaSgnaHR0cDovL2V4YW1wbGUuY29tL2EvYi9jJykpOyAgLy8gcHJpbnRzICdjJy4KZWNobyBVcmlSZXNvbHZlcjo6cmVsYXRpdml6ZSgkYmFzZSwgbmV3IFVyaSgnaHR0cDovL2V4YW1wbGUuY29tL2EveC95JykpOyAgLy8gcHJpbnRzICcuLi94L3knLgplY2hvIFVyaVJlc29sdmVyOjpyZWxhdGl2aXplKCRiYXNlLCBuZXcgVXJpKCdodHRwOi8vZXhhbXBsZS5jb20vYS9iLz9xJykpOyAvLyBwcmludHMgJz9xJy4KZWNobyBVcmlSZXNvbHZlcjo6cmVsYXRpdml6ZSgkYmFzZSwgbmV3IFVyaSgnaHR0cDovL2V4YW1wbGUub3JnL2EvYi8nKSk7ICAgLy8gcHJpbnRzICcvL2V4YW1wbGUub3JnL2EvYi8nLgpgYGAKCiMjIE5vcm1hbGl6YXRpb24gYW5kIENvbXBhcmlzb24KCmBHdXp6bGVIdHRwXFBzcjdcVXJpTm9ybWFsaXplcmAgcHJvdmlkZXMgbWV0aG9kcyB0byBub3JtYWxpemUgYW5kIGNvbXBhcmUgVVJJcyBhY2NvcmRpbmcgdG8KW1JGQyAzOTg2IFNlY3Rpb24gNl0oaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNikuCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmlOb3JtYWxpemVyOjpub3JtYWxpemVgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemUoVXJpSW50ZXJmYWNlICR1cmksICRmbGFncyA9IHNlbGY6OlBSRVNFUlZJTkdfTk9STUFMSVpBVElPTlMpOiBVcmlJbnRlcmZhY2VgCgpSZXR1cm5zIGEgbm9ybWFsaXplZCBVUkkuIFRoZSBzY2hlbWUgYW5kIGhvc3QgY29tcG9uZW50IGFyZSBhbHJlYWR5IG5vcm1hbGl6ZWQgdG8gbG93ZXJjYXNlIHBlciBQU1ItNyBVcmlJbnRlcmZhY2UuClRoaXMgbWV0aG9kcyBhZGRzIGFkZGl0aW9uYWwgbm9ybWFsaXphdGlvbnMgdGhhdCBjYW4gYmUgY29uZmlndXJlZCB3aXRoIHRoZSBgJGZsYWdzYCBwYXJhbWV0ZXIgd2hpY2ggaXMgYSBiaXRtYXNrCm9mIG5vcm1hbGl6YXRpb25zIHRvIGFwcGx5LiBUaGUgZm9sbG93aW5nIG5vcm1hbGl6YXRpb25zIGFyZSBhdmFpbGFibGU6CgotIGBVcmlOb3JtYWxpemVyOjpQUkVTRVJWSU5HX05PUk1BTElaQVRJT05TYAoKICAgIERlZmF1bHQgbm9ybWFsaXphdGlvbnMgd2hpY2ggb25seSBpbmNsdWRlIHRoZSBvbmVzIHRoYXQgcHJlc2VydmUgc2VtYW50aWNzLgoKLSBgVXJpTm9ybWFsaXplcjo6Q0FQSVRBTElaRV9QRVJDRU5UX0VOQ09ESU5HYAoKICAgIEFsbCBsZXR0ZXJzIHdpdGhpbiBhIHBlcmNlbnQtZW5jb2RpbmcgdHJpcGxldCAoZS5nLiwgIiUzQSIpIGFyZSBjYXNlLWluc2Vuc2l0aXZlLCBhbmQgc2hvdWxkIGJlIGNhcGl0YWxpemVkLgoKICAgIEV4YW1wbGU6IGBodHRwOi8vZXhhbXBsZS5vcmcvYSVjMiViMWJgIOKGkiBgaHR0cDovL2V4YW1wbGUub3JnL2ElQzIlQjFiYAoKLSBgVXJpTm9ybWFsaXplcjo6REVDT0RFX1VOUkVTRVJWRURfQ0hBUkFDVEVSU2AKCiAgICBEZWNvZGVzIHBlcmNlbnQtZW5jb2RlZCBvY3RldHMgb2YgdW5yZXNlcnZlZCBjaGFyYWN0ZXJzLiBGb3IgY29uc2lzdGVuY3ksIHBlcmNlbnQtZW5jb2RlZCBvY3RldHMgaW4gdGhlIHJhbmdlcyBvZgogICAgQUxQSEEgKCU0MeKAkyU1QSBhbmQgJTYx4oCTJTdBKSwgRElHSVQgKCUzMOKAkyUzOSksIGh5cGhlbiAoJTJEKSwgcGVyaW9kICglMkUpLCB1bmRlcnNjb3JlICglNUYpLCBvciB0aWxkZSAoJTdFKSBzaG91bGQKICAgIG5vdCBiZSBjcmVhdGVkIGJ5IFVSSSBwcm9kdWNlcnMgYW5kLCB3aGVuIGZvdW5kIGluIGEgVVJJLCBzaG91bGQgYmUgZGVjb2RlZCB0byB0aGVpciBjb3JyZXNwb25kaW5nIHVucmVzZXJ2ZWQKICAgIGNoYXJhY3RlcnMgYnkgVVJJIG5vcm1hbGl6ZXJzLgoKICAgIEV4YW1wbGU6IGBodHRwOi8vZXhhbXBsZS5vcmcvJTdFdXNlcm4lNjFtZS9gIOKGkiBgaHR0cDovL2V4YW1wbGUub3JnL351c2VybmFtZS9gCgotIGBVcmlOb3JtYWxpemVyOjpDT05WRVJUX0VNUFRZX1BBVEhgCgogICAgQ29udmVydHMgdGhlIGVtcHR5IHBhdGggdG8gIi8iIGZvciBodHRwIGFuZCBodHRwcyBVUklzLgoKICAgIEV4YW1wbGU6IGBodHRwOi8vZXhhbXBsZS5vcmdgIOKGkiBgaHR0cDovL2V4YW1wbGUub3JnL2AKCi0gYFVyaU5vcm1hbGl6ZXI6OlJFTU9WRV9ERUZBVUxUX0hPU1RgCgogICAgUmVtb3ZlcyB0aGUgZGVmYXVsdCBob3N0IG9mIHRoZSBnaXZlbiBVUkkgc2NoZW1lIGZyb20gdGhlIFVSSS4gT25seSB0aGUgImZpbGUiIHNjaGVtZSBkZWZpbmVzIHRoZSBkZWZhdWx0IGhvc3QKICAgICJsb2NhbGhvc3QiLiBBbGwgb2YgYGZpbGU6L215ZmlsZWAsIGBmaWxlOi8vL215ZmlsZWAsIGFuZCBgZmlsZTovL2xvY2FsaG9zdC9teWZpbGVgIGFyZSBlcXVpdmFsZW50IGFjY29yZGluZyB0bwogICAgUkZDIDM5ODYuCgogICAgRXhhbXBsZTogYGZpbGU6Ly9sb2NhbGhvc3QvbXlmaWxlYCDihpIgYGZpbGU6Ly8vbXlmaWxlYAoKLSBgVXJpTm9ybWFsaXplcjo6UkVNT1ZFX0RFRkFVTFRfUE9SVGAKCiAgICBSZW1vdmVzIHRoZSBkZWZhdWx0IHBvcnQgb2YgdGhlIGdpdmVuIFVSSSBzY2hlbWUgZnJvbSB0aGUgVVJJLgoKICAgIEV4YW1wbGU6IGBodHRwOi8vZXhhbXBsZS5vcmc6ODAvYCDihpIgYGh0dHA6Ly9leGFtcGxlLm9yZy9gCgotIGBVcmlOb3JtYWxpemVyOjpSRU1PVkVfRE9UX1NFR01FTlRTYAoKICAgIFJlbW92ZXMgdW5uZWNlc3NhcnkgZG90LXNlZ21lbnRzLiBEb3Qtc2VnbWVudHMgaW4gcmVsYXRpdmUtcGF0aCByZWZlcmVuY2VzIGFyZSBub3QgcmVtb3ZlZCBhcyBpdCB3b3VsZAogICAgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIFVSSSByZWZlcmVuY2UuCgogICAgRXhhbXBsZTogYGh0dHA6Ly9leGFtcGxlLm9yZy8uLi9hL2IvLi4vYy8uL2QuaHRtbGAg4oaSIGBodHRwOi8vZXhhbXBsZS5vcmcvYS9jL2QuaHRtbGAKCi0gYFVyaU5vcm1hbGl6ZXI6OlJFTU9WRV9EVVBMSUNBVEVfU0xBU0hFU2AKCiAgICBQYXRocyB3aGljaCBpbmNsdWRlIHR3byBvciBtb3JlIGFkamFjZW50IHNsYXNoZXMgYXJlIGNvbnZlcnRlZCB0byBvbmUuIFdlYnNlcnZlcnMgdXN1YWxseSBpZ25vcmUgZHVwbGljYXRlIHNsYXNoZXMKICAgIGFuZCB0cmVhdCB0aG9zZSBVUklzIGVxdWl2YWxlbnQuIEJ1dCBpbiB0aGVvcnkgdGhvc2UgVVJJcyBkbyBub3QgbmVlZCB0byBiZSBlcXVpdmFsZW50LiBTbyB0aGlzIG5vcm1hbGl6YXRpb24KICAgIG1heSBjaGFuZ2UgdGhlIHNlbWFudGljcy4gRW5jb2RlZCBzbGFzaGVzICglMkYpIGFyZSBub3QgcmVtb3ZlZC4KCiAgICBFeGFtcGxlOiBgaHR0cDovL2V4YW1wbGUub3JnLy9mb28vLy9iYXIuaHRtbGAg4oaSIGBodHRwOi8vZXhhbXBsZS5vcmcvZm9vL2Jhci5odG1sYAoKLSBgVXJpTm9ybWFsaXplcjo6U09SVF9RVUVSWV9QQVJBTUVURVJTYAoKICAgIFNvcnQgcXVlcnkgcGFyYW1ldGVycyB3aXRoIHRoZWlyIHZhbHVlcyBpbiBhbHBoYWJldGljYWwgb3JkZXIuIEhvd2V2ZXIsIHRoZSBvcmRlciBvZiBwYXJhbWV0ZXJzIGluIGEgVVJJIG1heSBiZQogICAgc2lnbmlmaWNhbnQgKHRoaXMgaXMgbm90IGRlZmluZWQgYnkgdGhlIHN0YW5kYXJkKS4gU28gdGhpcyBub3JtYWxpemF0aW9uIGlzIG5vdCBzYWZlIGFuZCBtYXkgY2hhbmdlIHRoZSBzZW1hbnRpY3MKICAgIG9mIHRoZSBVUkkuCgogICAgRXhhbXBsZTogYD9sYW5nPWVuJmFydGljbGU9ZnJlZGAg4oaSIGA/YXJ0aWNsZT1mcmVkJmxhbmc9ZW5gCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmlOb3JtYWxpemVyOjppc0VxdWl2YWxlbnRgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0VxdWl2YWxlbnQoVXJpSW50ZXJmYWNlICR1cmkxLCBVcmlJbnRlcmZhY2UgJHVyaTIsICRub3JtYWxpemF0aW9ucyA9IHNlbGY6OlBSRVNFUlZJTkdfTk9STUFMSVpBVElPTlMpOiBib29sYAoKV2hldGhlciB0d28gVVJJcyBjYW4gYmUgY29uc2lkZXJlZCBlcXVpdmFsZW50LiBCb3RoIFVSSXMgYXJlIG5vcm1hbGl6ZWQgYXV0b21hdGljYWxseSBiZWZvcmUgY29tcGFyaXNvbiB3aXRoIHRoZSBnaXZlbgpgJG5vcm1hbGl6YXRpb25zYCBiaXRtYXNrLiBUaGUgbWV0aG9kIGFsc28gYWNjZXB0cyByZWxhdGl2ZSBVUkkgcmVmZXJlbmNlcyBhbmQgcmV0dXJucyB0cnVlIHdoZW4gdGhleSBhcmUgZXF1aXZhbGVudC4KVGhpcyBvZiBjb3Vyc2UgYXNzdW1lcyB0aGV5IHdpbGwgYmUgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgc2FtZSBiYXNlIFVSSS4gSWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsIGRldGVybWluYXRpb24gb2YKZXF1aXZhbGVuY2Ugb3IgZGlmZmVyZW5jZSBvZiByZWxhdGl2ZSByZWZlcmVuY2VzIGRvZXMgbm90IG1lYW4gYW55dGhpbmcuCgoKIyMgU2VjdXJpdHkKCklmIHlvdSBkaXNjb3ZlciBhIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoaXMgcGFja2FnZSwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8gc2VjdXJpdHlAdGlkZWxpZnQuY29tLiBBbGwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIHdpbGwgYmUgcHJvbXB0bHkgYWRkcmVzc2VkLiBQbGVhc2UgZG8gbm90IGRpc2Nsb3NlIHNlY3VyaXR5LXJlbGF0ZWQgaXNzdWVzIHB1YmxpY2x5IHVudGlsIGEgZml4IGhhcyBiZWVuIGFubm91bmNlZC4gUGxlYXNlIHNlZSBbU2VjdXJpdHkgUG9saWN5XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3Bzcjcvc2VjdXJpdHkvcG9saWN5KSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCgojIyBMaWNlbnNlCgpHdXp6bGUgaXMgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLiBQbGVhc2Ugc2VlIFtMaWNlbnNlIEZpbGVdKExJQ0VOU0UpIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKCiMjIEZvciBFbnRlcnByaXNlCgpBdmFpbGFibGUgYXMgcGFydCBvZiB0aGUgVGlkZWxpZnQgU3Vic2NyaXB0aW9uCgpUaGUgbWFpbnRhaW5lcnMgb2YgR3V6emxlIGFuZCB0aG91c2FuZHMgb2Ygb3RoZXIgcGFja2FnZXMgYXJlIHdvcmtpbmcgd2l0aCBUaWRlbGlmdCB0byBkZWxpdmVyIGNvbW1lcmNpYWwgc3VwcG9ydCBhbmQgbWFpbnRlbmFuY2UgZm9yIHRoZSBvcGVuIHNvdXJjZSBkZXBlbmRlbmNpZXMgeW91IHVzZSB0byBidWlsZCB5b3VyIGFwcGxpY2F0aW9ucy4gU2F2ZSB0aW1lLCByZWR1Y2UgcmlzaywgYW5kIGltcHJvdmUgY29kZSBoZWFsdGgsIHdoaWxlIHBheWluZyB0aGUgbWFpbnRhaW5lcnMgb2YgdGhlIGV4YWN0IGRlcGVuZGVuY2llcyB5b3UgdXNlLiBbTGVhcm4gbW9yZS5dKGh0dHBzOi8vdGlkZWxpZnQuY29tL3N1YnNjcmlwdGlvbi9wa2cvcGFja2FnaXN0LWd1enpsZWh0dHAtcHNyNz91dG1fc291cmNlPXBhY2thZ2lzdC1ndXp6bGVodHRwLXBzcjcmdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249ZW50ZXJwcmlzZSZ1dG1fdGVybT1yZXBvKQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/AppendStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBSZWFkcyBmcm9tIG11bHRpcGxlIHN0cmVhbXMsIG9uZSBhZnRlciB0aGUgb3RoZXIuCiAqCiAqIFRoaXMgaXMgYSByZWFkLW9ubHkgc3RyZWFtIGRlY29yYXRvci4KICovCmZpbmFsIGNsYXNzIEFwcGVuZFN0cmVhbSBpbXBsZW1lbnRzIFN0cmVhbUludGVyZmFjZQp7CiAgICAvKiogQHZhciBTdHJlYW1JbnRlcmZhY2VbXSBTdHJlYW1zIGJlaW5nIGRlY29yYXRlZCAqLwogICAgcHJpdmF0ZSAkc3RyZWFtcyA9IFtdOwoKICAgIC8qKiBAdmFyIGJvb2wgKi8KICAgIHByaXZhdGUgJHNlZWthYmxlID0gdHJ1ZTsKCiAgICAvKiogQHZhciBpbnQgKi8KICAgIHByaXZhdGUgJGN1cnJlbnQgPSAwOwoKICAgIC8qKiBAdmFyIGludCAqLwogICAgcHJpdmF0ZSAkcG9zID0gMDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2VbXSAkc3RyZWFtcyBTdHJlYW1zIHRvIGRlY29yYXRlLiBFYWNoIHN0cmVhbSBtdXN0CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgcmVhZGFibGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkc3RyZWFtcyA9IFtdKQogICAgewogICAgICAgIGZvcmVhY2ggKCRzdHJlYW1zIGFzICRzdHJlYW0pIHsKICAgICAgICAgICAgJHRoaXMtPmFkZFN0cmVhbSgkc3RyZWFtKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHRoaXMtPnJld2luZCgpOwoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDb250ZW50cygpOwogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgaWYgKFxQSFBfVkVSU0lPTl9JRCA+PSA3MDQwMCkgewogICAgICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJpZ2dlcl9lcnJvcihzcHJpbnRmKCclczo6X190b1N0cmluZyBleGNlcHRpb246ICVzJywgc2VsZjo6Y2xhc3MsIChzdHJpbmcpICRlKSwgRV9VU0VSX0VSUk9SKTsKCiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgYSBzdHJlYW0gdG8gdGhlIEFwcGVuZFN0cmVhbQogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSBTdHJlYW0gdG8gYXBwZW5kLiBNdXN0IGJlIHJlYWRhYmxlLgogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgc3RyZWFtIGlzIG5vdCByZWFkYWJsZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkU3RyZWFtKFN0cmVhbUludGVyZmFjZSAkc3RyZWFtKTogdm9pZAogICAgewogICAgICAgIGlmICghJHN0cmVhbS0+aXNSZWFkYWJsZSgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdFYWNoIHN0cmVhbSBtdXN0IGJlIHJlYWRhYmxlJyk7CiAgICAgICAgfQoKICAgICAgICAvLyBUaGUgc3RyZWFtIGlzIG9ubHkgc2Vla2FibGUgaWYgYWxsIHN0cmVhbXMgYXJlIHNlZWthYmxlCiAgICAgICAgaWYgKCEkc3RyZWFtLT5pc1NlZWthYmxlKCkpIHsKICAgICAgICAgICAgJHRoaXMtPnNlZWthYmxlID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c3RyZWFtc1tdID0gJHN0cmVhbTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudHMoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFV0aWxzOjpjb3B5VG9TdHJpbmcoJHRoaXMpOwogICAgfQoKICAgIC8qKgogICAgICogQ2xvc2VzIGVhY2ggYXR0YWNoZWQgc3RyZWFtLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xvc2UoKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5wb3MgPSAkdGhpcy0+Y3VycmVudCA9IDA7CiAgICAgICAgJHRoaXMtPnNlZWthYmxlID0gdHJ1ZTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnN0cmVhbXMgYXMgJHN0cmVhbSkgewogICAgICAgICAgICAkc3RyZWFtLT5jbG9zZSgpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnN0cmVhbXMgPSBbXTsKICAgIH0KCiAgICAvKioKICAgICAqIERldGFjaGVzIGVhY2ggYXR0YWNoZWQgc3RyZWFtLgogICAgICoKICAgICAqIFJldHVybnMgbnVsbCBhcyBpdCdzIG5vdCBjbGVhciB3aGljaCB1bmRlcmx5aW5nIHN0cmVhbSByZXNvdXJjZSB0byByZXR1cm4uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZXRhY2goKQogICAgewogICAgICAgICR0aGlzLT5wb3MgPSAkdGhpcy0+Y3VycmVudCA9IDA7CiAgICAgICAgJHRoaXMtPnNlZWthYmxlID0gdHJ1ZTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnN0cmVhbXMgYXMgJHN0cmVhbSkgewogICAgICAgICAgICAkc3RyZWFtLT5kZXRhY2goKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zdHJlYW1zID0gW107CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZWxsKCk6IGludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cG9zOwogICAgfQoKICAgIC8qKgogICAgICogVHJpZXMgdG8gY2FsY3VsYXRlIHRoZSBzaXplIGJ5IGFkZGluZyB0aGUgc2l6ZSBvZiBlYWNoIHN0cmVhbS4KICAgICAqCiAgICAgKiBJZiBhbnkgb2YgdGhlIHN0cmVhbXMgZG8gbm90IHJldHVybiBhIHZhbGlkIG51bWJlciwgdGhlbiB0aGUgc2l6ZSBvZiB0aGUKICAgICAqIGFwcGVuZCBzdHJlYW0gY2Fubm90IGJlIGRldGVybWluZWQgYW5kIG51bGwgaXMgcmV0dXJuZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaXplKCk6ID9pbnQKICAgIHsKICAgICAgICAkc2l6ZSA9IDA7CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5zdHJlYW1zIGFzICRzdHJlYW0pIHsKICAgICAgICAgICAgJHMgPSAkc3RyZWFtLT5nZXRTaXplKCk7CiAgICAgICAgICAgIGlmICgkcyA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHNpemUgKz0gJHM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHNpemU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVvZigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICEkdGhpcy0+c3RyZWFtcwogICAgICAgICAgICB8fCAoJHRoaXMtPmN1cnJlbnQgPj0gY291bnQoJHRoaXMtPnN0cmVhbXMpIC0gMQogICAgICAgICAgICAgJiYgJHRoaXMtPnN0cmVhbXNbJHRoaXMtPmN1cnJlbnRdLT5lb2YoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJld2luZCgpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnNlZWsoMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBdHRlbXB0cyB0byBzZWVrIHRvIHRoZSBnaXZlbiBwb3NpdGlvbi4gT25seSBzdXBwb3J0cyBTRUVLX1NFVC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlZWsoJG9mZnNldCwgJHdoZW5jZSA9IFNFRUtfU0VUKTogdm9pZAogICAgewogICAgICAgIGlmICghXGlzX2ludCgkb2Zmc2V0KSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gU3RyZWFtSW50ZXJmYWNlOjpzZWVrKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZXF1aXJlcyBpbnQgZm9yICRvZmZzZXQuJywKICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkb2Zmc2V0KQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFcaXNfaW50KCR3aGVuY2UpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyB0byBTdHJlYW1JbnRlcmZhY2U6OnNlZWsoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIGludCBmb3IgJHdoZW5jZS4nLAogICAgICAgICAgICAgICAgXGdldF9kZWJ1Z190eXBlKCR3aGVuY2UpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISR0aGlzLT5zZWVrYWJsZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1RoaXMgQXBwZW5kU3RyZWFtIGlzIG5vdCBzZWVrYWJsZScpOwogICAgICAgIH0gZWxzZWlmICgkd2hlbmNlICE9PSBTRUVLX1NFVCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1RoZSBBcHBlbmRTdHJlYW0gY2FuIG9ubHkgc2VlayB3aXRoIFNFRUtfU0VUJyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+cG9zID0gJHRoaXMtPmN1cnJlbnQgPSAwOwoKICAgICAgICAvLyBSZXdpbmQgZWFjaCBzdHJlYW0KICAgICAgICBmb3JlYWNoICgkdGhpcy0+c3RyZWFtcyBhcyAkaSA9PiAkc3RyZWFtKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkc3RyZWFtLT5yZXdpbmQoKTsKICAgICAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdVbmFibGUgdG8gc2VlayBzdHJlYW0gJwogICAgICAgICAgICAgICAgICAgIC4kaS4nIG9mIHRoZSBBcHBlbmRTdHJlYW0nLCAwLCAkZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFNlZWsgdG8gdGhlIGFjdHVhbCBwb3NpdGlvbiBieSByZWFkaW5nIGZyb20gZWFjaCBzdHJlYW0KICAgICAgICB3aGlsZSAoJHRoaXMtPnBvcyA8ICRvZmZzZXQgJiYgISR0aGlzLT5lb2YoKSkgewogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnJlYWQobWluKDgwOTYsICRvZmZzZXQgLSAkdGhpcy0+cG9zKSk7CiAgICAgICAgICAgIGlmICgkcmVzdWx0ID09PSAnJykgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWFkcyBmcm9tIGFsbCBvZiB0aGUgYXBwZW5kZWQgc3RyZWFtcyB1bnRpbCB0aGUgbGVuZ3RoIGlzIG1ldCBvciBFT0YuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKCRsZW5ndGgpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoIVxpc19pbnQoJGxlbmd0aCkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFN0cmVhbUludGVyZmFjZTo6cmVhZCgpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgaW50IGZvciAkbGVuZ3RoLicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJGxlbmd0aCkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+c3RyZWFtcyA9PT0gW10pIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KCiAgICAgICAgJGJ1ZmZlciA9ICcnOwogICAgICAgICR0b3RhbCA9IGNvdW50KCR0aGlzLT5zdHJlYW1zKSAtIDE7CiAgICAgICAgJHJlbWFpbmluZyA9ICRsZW5ndGg7CiAgICAgICAgJHByb2dyZXNzVG9OZXh0ID0gZmFsc2U7CgogICAgICAgIHdoaWxlICgkcmVtYWluaW5nID4gMCkgewogICAgICAgICAgICAvLyBQcm9ncmVzcyB0byB0aGUgbmV4dCBzdHJlYW0gaWYgbmVlZGVkLgogICAgICAgICAgICBpZiAoJHByb2dyZXNzVG9OZXh0IHx8ICR0aGlzLT5zdHJlYW1zWyR0aGlzLT5jdXJyZW50XS0+ZW9mKCkpIHsKICAgICAgICAgICAgICAgICRwcm9ncmVzc1RvTmV4dCA9IGZhbHNlOwogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5jdXJyZW50ID09PSAkdG90YWwpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICsrJHRoaXMtPmN1cnJlbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+c3RyZWFtc1skdGhpcy0+Y3VycmVudF0tPnJlYWQoJHJlbWFpbmluZyk7CgogICAgICAgICAgICBpZiAoJHJlc3VsdCA9PT0gJycpIHsKICAgICAgICAgICAgICAgICRwcm9ncmVzc1RvTmV4dCA9IHRydWU7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGJ1ZmZlciAuPSAkcmVzdWx0OwogICAgICAgICAgICAkcmVtYWluaW5nID0gJGxlbmd0aCAtIHN0cmxlbigkYnVmZmVyKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5wb3MgKz0gc3RybGVuKCRidWZmZXIpOwoKICAgICAgICByZXR1cm4gJGJ1ZmZlcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNSZWFkYWJsZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzV3JpdGFibGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTZWVrYWJsZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZWVrYWJsZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JpdGUoJHN0cmluZyk6IGludAogICAgewogICAgICAgIGlmICghXGlzX3N0cmluZygkc3RyaW5nKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gU3RyZWFtSW50ZXJmYWNlOjp3cml0ZSgpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgc3RyaW5nIGZvciAkc3RyaW5nLicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJHN0cmluZykKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ2Fubm90IHdyaXRlIHRvIGFuIEFwcGVuZFN0cmVhbScpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWV0YWRhdGEoJGtleSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCRrZXkgIT09IG51bGwgJiYgIVxpc19zdHJpbmcoJGtleSkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFN0cmVhbUludGVyZmFjZTo6Z2V0TWV0YWRhdGEoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIHN0cmluZ3xudWxsIGZvciAka2V5LicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJGtleSkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAka2V5ID8gbnVsbCA6IFtdOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/BufferStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBQcm92aWRlcyBhIGJ1ZmZlciBzdHJlYW0gdGhhdCBjYW4gYmUgd3JpdHRlbiB0byB0byBmaWxsIGEgYnVmZmVyLCBhbmQgcmVhZAogKiBmcm9tIHRvIHJlbW92ZSBieXRlcyBmcm9tIHRoZSBidWZmZXIuCiAqCiAqIFRoaXMgc3RyZWFtIHJldHVybnMgYSAiaHdtIiBtZXRhZGF0YSB2YWx1ZSB0aGF0IHRlbGxzIHVwc3RyZWFtIGNvbnN1bWVycwogKiB3aGF0IHRoZSBjb25maWd1cmVkIGhpZ2ggd2F0ZXIgbWFyayBvZiB0aGUgc3RyZWFtIGlzLCBvciB0aGUgbWF4aW11bQogKiBwcmVmZXJyZWQgc2l6ZSBvZiB0aGUgYnVmZmVyLgogKi8KZmluYWwgY2xhc3MgQnVmZmVyU3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIC8qKiBAdmFyIGludCAqLwogICAgcHJpdmF0ZSAkaHdtOwoKICAgIC8qKiBAdmFyIHN0cmluZyAqLwogICAgcHJpdmF0ZSAkYnVmZmVyID0gJyc7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRod20gSGlnaCB3YXRlciBtYXJrLCByZXByZXNlbnRpbmcgdGhlIHByZWZlcnJlZCBtYXhpbXVtCiAgICAgKiAgICAgICAgICAgICAgICAgYnVmZmVyIHNpemUuIElmIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgZXhjZWVkcyB0aGUgaGlnaAogICAgICogICAgICAgICAgICAgICAgIHdhdGVyIG1hcmssIHRoZW4gY2FsbHMgdG8gd3JpdGUgd2lsbCBjb250aW51ZSB0byBzdWNjZWVkCiAgICAgKiAgICAgICAgICAgICAgICAgYnV0IHdpbGwgcmV0dXJuIDAgdG8gaW5mb3JtIHdyaXRlcnMgdG8gc2xvdyBkb3duCiAgICAgKiAgICAgICAgICAgICAgICAgdW50aWwgdGhlIGJ1ZmZlciBoYXMgYmVlbiBkcmFpbmVkIGJ5IHJlYWRpbmcgZnJvbSBpdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGludCAkaHdtID0gMTYzODQpCiAgICB7CiAgICAgICAgJHRoaXMtPmh3bSA9ICRod207CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDb250ZW50cygpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50cygpOiBzdHJpbmcKICAgIHsKICAgICAgICAkYnVmZmVyID0gJHRoaXMtPmJ1ZmZlcjsKICAgICAgICAkdGhpcy0+YnVmZmVyID0gJyc7CgogICAgICAgIHJldHVybiAkYnVmZmVyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjbG9zZSgpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmJ1ZmZlciA9ICcnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZXRhY2goKQogICAgewogICAgICAgICR0aGlzLT5jbG9zZSgpOwoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2l6ZSgpOiA/aW50CiAgICB7CiAgICAgICAgcmV0dXJuIHN0cmxlbigkdGhpcy0+YnVmZmVyKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNSZWFkYWJsZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzV3JpdGFibGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1NlZWthYmxlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJld2luZCgpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnNlZWsoMCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNlZWsoJG9mZnNldCwgJHdoZW5jZSA9IFNFRUtfU0VUKTogdm9pZAogICAgewogICAgICAgIGlmICghXGlzX2ludCgkb2Zmc2V0KSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gU3RyZWFtSW50ZXJmYWNlOjpzZWVrKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZXF1aXJlcyBpbnQgZm9yICRvZmZzZXQuJywKICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkb2Zmc2V0KQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFcaXNfaW50KCR3aGVuY2UpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyB0byBTdHJlYW1JbnRlcmZhY2U6OnNlZWsoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIGludCBmb3IgJHdoZW5jZS4nLAogICAgICAgICAgICAgICAgXGdldF9kZWJ1Z190eXBlKCR3aGVuY2UpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0Nhbm5vdCBzZWVrIGEgQnVmZmVyU3RyZWFtJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVvZigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHN0cmxlbigkdGhpcy0+YnVmZmVyKSA9PT0gMDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVsbCgpOiBpbnQKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0Nhbm5vdCBkZXRlcm1pbmUgdGhlIHBvc2l0aW9uIG9mIGEgQnVmZmVyU3RyZWFtJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWFkcyBkYXRhIGZyb20gdGhlIGJ1ZmZlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlYWQoJGxlbmd0aCk6IHN0cmluZwogICAgewogICAgICAgIGlmICghXGlzX2ludCgkbGVuZ3RoKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gU3RyZWFtSW50ZXJmYWNlOjpyZWFkKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZXF1aXJlcyBpbnQgZm9yICRsZW5ndGguJywKICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkbGVuZ3RoKQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJGN1cnJlbnRMZW5ndGggPSBzdHJsZW4oJHRoaXMtPmJ1ZmZlcik7CgogICAgICAgIGlmICgkbGVuZ3RoID49ICRjdXJyZW50TGVuZ3RoKSB7CiAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gc2xpY2UgdGhlIGJ1ZmZlciBiZWNhdXNlIHdlIGRvbid0IGhhdmUgZW5vdWdoIGRhdGEuCiAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+YnVmZmVyOwogICAgICAgICAgICAkdGhpcy0+YnVmZmVyID0gJyc7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gU2xpY2UgdXAgdGhlIHJlc3VsdCB0byBwcm92aWRlIGEgc3Vic2V0IG9mIHRoZSBidWZmZXIuCiAgICAgICAgICAgICRyZXN1bHQgPSBzdWJzdHIoJHRoaXMtPmJ1ZmZlciwgMCwgJGxlbmd0aCk7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXIgPSBzdWJzdHIoJHRoaXMtPmJ1ZmZlciwgJGxlbmd0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIFdyaXRlcyBkYXRhIHRvIHRoZSBidWZmZXIuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3cml0ZSgkc3RyaW5nKTogaW50CiAgICB7CiAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCRzdHJpbmcpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyB0byBTdHJlYW1JbnRlcmZhY2U6OndyaXRlKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZXF1aXJlcyBzdHJpbmcgZm9yICRzdHJpbmcuJywKICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkc3RyaW5nKQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmJ1ZmZlciAuPSAkc3RyaW5nOwoKICAgICAgICBpZiAoc3RybGVuKCR0aGlzLT5idWZmZXIpID49ICR0aGlzLT5od20pIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3RybGVuKCRzdHJpbmcpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWV0YWRhdGEoJGtleSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCRrZXkgIT09IG51bGwgJiYgIVxpc19zdHJpbmcoJGtleSkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFN0cmVhbUludGVyZmFjZTo6Z2V0TWV0YWRhdGEoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIHN0cmluZ3xudWxsIGZvciAka2V5LicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJGtleSkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgka2V5ID09PSAnaHdtJykgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmh3bTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAka2V5ID8gbnVsbCA6IFtdOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/CachingStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBTdHJlYW0gZGVjb3JhdG9yIHRoYXQgY2FuIGNhY2hlIHByZXZpb3VzbHkgcmVhZCBieXRlcyBmcm9tIGEgc2VxdWVudGlhbGx5CiAqIHJlYWQgc3RyZWFtLgogKi8KZmluYWwgY2xhc3MgQ2FjaGluZ1N0cmVhbSBpbXBsZW1lbnRzIFN0cmVhbUludGVyZmFjZQp7CiAgICB1c2UgU3RyZWFtRGVjb3JhdG9yVHJhaXQ7CgogICAgLyoqIEB2YXIgU3RyZWFtSW50ZXJmYWNlIFN0cmVhbSBiZWluZyB3cmFwcGVkICovCiAgICBwcml2YXRlICRyZW1vdGVTdHJlYW07CgogICAgLyoqIEB2YXIgaW50IE51bWJlciBvZiBieXRlcyB0byBza2lwIHJlYWRpbmcgZHVlIHRvIGEgd3JpdGUgb24gdGhlIGJ1ZmZlciAqLwogICAgcHJpdmF0ZSAkc2tpcFJlYWRCeXRlcyA9IDA7CgogICAgLyoqCiAgICAgKiBAdmFyIFN0cmVhbUludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRzdHJlYW07CgogICAgLyoqIEB2YXIgYm9vbCAqLwogICAgcHJpdmF0ZSAkZGV0YWNoZWQgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIFdlIHdpbGwgdHJlYXQgdGhlIGJ1ZmZlciBvYmplY3QgYXMgdGhlIGJvZHkgb2YgdGhlIHN0cmVhbQogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSBTdHJlYW0gdG8gY2FjaGUuIFRoZSBjdXJzb3IgaXMgYXNzdW1lZCB0byBiZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJlYW0uCiAgICAgKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlICR0YXJnZXQgT3B0aW9uYWxseSBzcGVjaWZ5IHdoZXJlIGRhdGEgaXMgY2FjaGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwKICAgICAgICA/U3RyZWFtSW50ZXJmYWNlICR0YXJnZXQgPSBudWxsCiAgICApIHsKICAgICAgICAkdGhpcy0+cmVtb3RlU3RyZWFtID0gJHN0cmVhbTsKICAgICAgICAkdGhpcy0+c3RyZWFtID0gJHRhcmdldCA/OiBuZXcgU3RyZWFtKFV0aWxzOjp0cnlGb3BlbigncGhwOi8vdGVtcCcsICdyKycpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2l6ZSgpOiA/aW50CiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5kZXRhY2hlZCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRyZW1vdGVTaXplID0gJHRoaXMtPnJlbW90ZVN0cmVhbS0+Z2V0U2l6ZSgpOwoKICAgICAgICBpZiAobnVsbCA9PT0gJHJlbW90ZVNpemUpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbWF4KCR0aGlzLT5zdHJlYW0tPmdldFNpemUoKSwgJHJlbW90ZVNpemUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXdpbmQoKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5zZWVrKDApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZWVrKCRvZmZzZXQsICR3aGVuY2UgPSBTRUVLX1NFVCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIVxpc19pbnQoJG9mZnNldCkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFN0cmVhbUludGVyZmFjZTo6c2VlaygpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgaW50IGZvciAkb2Zmc2V0LicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJG9mZnNldCkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICghXGlzX2ludCgkd2hlbmNlKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gU3RyZWFtSW50ZXJmYWNlOjpzZWVrKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZXF1aXJlcyBpbnQgZm9yICR3aGVuY2UuJywKICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkd2hlbmNlKQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR3aGVuY2UgPT09IFNFRUtfU0VUKSB7CiAgICAgICAgICAgICRieXRlID0gJG9mZnNldDsKICAgICAgICB9IGVsc2VpZiAoJHdoZW5jZSA9PT0gU0VFS19DVVIpIHsKICAgICAgICAgICAgJGJ5dGUgPSAkb2Zmc2V0ICsgJHRoaXMtPnRlbGwoKTsKICAgICAgICB9IGVsc2VpZiAoJHdoZW5jZSA9PT0gU0VFS19FTkQpIHsKICAgICAgICAgICAgJHNpemUgPSAkdGhpcy0+cmVtb3RlU3RyZWFtLT5nZXRTaXplKCk7CiAgICAgICAgICAgIGlmICgkc2l6ZSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgJHNpemUgPSAkdGhpcy0+Y2FjaGVFbnRpcmVTdHJlYW0oKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkYnl0ZSA9ICRzaXplICsgJG9mZnNldDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCB3aGVuY2UnKTsKICAgICAgICB9CgogICAgICAgICRkaWZmID0gJGJ5dGUgLSAkdGhpcy0+c3RyZWFtLT5nZXRTaXplKCk7CgogICAgICAgIGlmICgkZGlmZiA+IDApIHsKICAgICAgICAgICAgLy8gUmVhZCB0aGUgcmVtb3RlU3RyZWFtIHVudGlsIHdlIGhhdmUgcmVhZCBpbiBhdCBsZWFzdCB0aGUgYW1vdW50CiAgICAgICAgICAgIC8vIG9mIGJ5dGVzIHJlcXVlc3RlZCwgb3Igd2UgcmVhY2ggdGhlIGVuZCBvZiB0aGUgZmlsZS4KICAgICAgICAgICAgd2hpbGUgKCRkaWZmID4gMCAmJiAhJHRoaXMtPnJlbW90ZVN0cmVhbS0+ZW9mKCkpIHsKICAgICAgICAgICAgICAgICRwcmV2aW91c1NpemUgPSAkdGhpcy0+c3RyZWFtLT5nZXRTaXplKCk7CiAgICAgICAgICAgICAgICAkcHJldmlvdXNTa2lwUmVhZEJ5dGVzID0gJHRoaXMtPnNraXBSZWFkQnl0ZXM7CiAgICAgICAgICAgICAgICAkZGF0YSA9ICR0aGlzLT5yZWFkKCRkaWZmKTsKICAgICAgICAgICAgICAgICRjdXJyZW50U2l6ZSA9ICR0aGlzLT5zdHJlYW0tPmdldFNpemUoKTsKCiAgICAgICAgICAgICAgICBpZiAoJGRhdGEgPT09ICcnICYmICRjdXJyZW50U2l6ZSA9PT0gJHByZXZpb3VzU2l6ZSAmJiAkdGhpcy0+c2tpcFJlYWRCeXRlcyA9PT0gJHByZXZpb3VzU2tpcFJlYWRCeXRlcykgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRkaWZmID0gJGJ5dGUgLSAkY3VycmVudFNpemU7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBXZSBjYW4ganVzdCBkbyBhIG5vcm1hbCBzZWVrIHNpbmNlIHdlJ3ZlIGFscmVhZHkgc2VlbiB0aGlzIGJ5dGUuCiAgICAgICAgICAgICR0aGlzLT5zdHJlYW0tPnNlZWsoJGJ5dGUpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVhZCgkbGVuZ3RoKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCFcaXNfaW50KCRsZW5ndGgpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyB0byBTdHJlYW1JbnRlcmZhY2U6OnJlYWQoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIGludCBmb3IgJGxlbmd0aC4nLAogICAgICAgICAgICAgICAgXGdldF9kZWJ1Z190eXBlKCRsZW5ndGgpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAvLyBQZXJmb3JtIGEgcmVndWxhciByZWFkIG9uIGFueSBwcmV2aW91c2x5IHJlYWQgZGF0YSBmcm9tIHRoZSBidWZmZXIKICAgICAgICAkZGF0YSA9ICR0aGlzLT5zdHJlYW0tPnJlYWQoJGxlbmd0aCk7CiAgICAgICAgJHJlbWFpbmluZyA9ICRsZW5ndGggLSBzdHJsZW4oJGRhdGEpOwoKICAgICAgICAvLyBNb3JlIGRhdGEgd2FzIHJlcXVlc3RlZCBzbyByZWFkIGZyb20gdGhlIHJlbW90ZSBzdHJlYW0KICAgICAgICBpZiAoJHJlbWFpbmluZykgewogICAgICAgICAgICAvLyBJZiBkYXRhIHdhcyB3cml0dGVuIHRvIHRoZSBidWZmZXIgaW4gYSBwb3NpdGlvbiB0aGF0IHdvdWxkIGhhdmUKICAgICAgICAgICAgLy8gYmVlbiBmaWxsZWQgZnJvbSB0aGUgcmVtb3RlIHN0cmVhbSwgdGhlbiB3ZSBtdXN0IHNraXAgYnl0ZXMgb24KICAgICAgICAgICAgLy8gdGhlIHJlbW90ZSBzdHJlYW0gdG8gZW11bGF0ZSBvdmVyd3JpdGluZyBieXRlcyBmcm9tIHRoYXQKICAgICAgICAgICAgLy8gcG9zaXRpb24uIFRoaXMgbWltaWNzIHRoZSBiZWhhdmlvciBvZiBvdGhlciBQSFAgc3RyZWFtIHdyYXBwZXJzLgogICAgICAgICAgICAkcmVtb3RlRGF0YSA9ICR0aGlzLT5yZW1vdGVTdHJlYW0tPnJlYWQoCiAgICAgICAgICAgICAgICAkcmVtYWluaW5nICsgJHRoaXMtPnNraXBSZWFkQnl0ZXMKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+c2tpcFJlYWRCeXRlcykgewogICAgICAgICAgICAgICAgJGxlbiA9IHN0cmxlbigkcmVtb3RlRGF0YSk7CiAgICAgICAgICAgICAgICAkcmVtb3RlRGF0YSA9IHN1YnN0cigkcmVtb3RlRGF0YSwgJHRoaXMtPnNraXBSZWFkQnl0ZXMpOwogICAgICAgICAgICAgICAgJHRoaXMtPnNraXBSZWFkQnl0ZXMgPSBtYXgoMCwgJHRoaXMtPnNraXBSZWFkQnl0ZXMgLSAkbGVuKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGRhdGEgLj0gJHJlbW90ZURhdGE7CgogICAgICAgICAgICAvLyBBIHNob3J0IGNhY2hlIHdyaXRlIHdvdWxkIHNpbGVudGx5IGNvcnJ1cHQgbGF0ZXIgcmVwbGF5cywgc28gZmFpbCBsb3VkbHkuCiAgICAgICAgICAgIGlmICgkdGhpcy0+c3RyZWFtLT53cml0ZSgkcmVtb3RlRGF0YSkgIT09IHN0cmxlbigkcmVtb3RlRGF0YSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVW5hYmxlIHRvIGNhY2hlIHRoZSBlbnRpcmUgcmVhZCBmcm9tIHRoZSByZW1vdGUgc3RyZWFtJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkZGF0YTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JpdGUoJHN0cmluZyk6IGludAogICAgewogICAgICAgIGlmICghXGlzX3N0cmluZygkc3RyaW5nKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gU3RyZWFtSW50ZXJmYWNlOjp3cml0ZSgpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgc3RyaW5nIGZvciAkc3RyaW5nLicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJHN0cmluZykKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIC8vIFdoZW4gYXBwZW5kaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnRseSByZWFkIHN0cmVhbSwgeW91J2xsIHdhbnQKICAgICAgICAvLyB0byBza2lwIGJ5dGVzIGZyb20gYmVpbmcgcmVhZCBmcm9tIHRoZSByZW1vdGUgc3RyZWFtIHRvIGVtdWxhdGUKICAgICAgICAvLyBvdGhlciBzdHJlYW0gd3JhcHBlcnMuIEJhc2ljYWxseSByZXBsYWNpbmcgYnl0ZXMgb2YgZGF0YSBvZiBhIGZpeGVkCiAgICAgICAgLy8gbGVuZ3RoLgogICAgICAgICRvdmVyZmxvdyA9IChzdHJsZW4oJHN0cmluZykgKyAkdGhpcy0+dGVsbCgpKSAtICR0aGlzLT5yZW1vdGVTdHJlYW0tPnRlbGwoKTsKICAgICAgICBpZiAoJG92ZXJmbG93ID4gMCkgewogICAgICAgICAgICAkdGhpcy0+c2tpcFJlYWRCeXRlcyArPSAkb3ZlcmZsb3c7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+d3JpdGUoJHN0cmluZyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVvZigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPmVvZigpICYmICR0aGlzLT5yZW1vdGVTdHJlYW0tPmVvZigpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZXRhY2goKQogICAgewogICAgICAgIGlmICgkdGhpcy0+ZGV0YWNoZWQpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkcG9zaXRpb24gPSAkdGhpcy0+dGVsbCgpOwoKICAgICAgICAkdGhpcy0+Y2FjaGVFbnRpcmVTdHJlYW0oKTsKICAgICAgICAkdGhpcy0+c3RyZWFtLT5zZWVrKCRwb3NpdGlvbik7CgogICAgICAgICRyZXNvdXJjZSA9ICR0aGlzLT5zdHJlYW0tPmRldGFjaCgpOwogICAgICAgICR0aGlzLT5kZXRhY2hlZCA9IHRydWU7CgogICAgICAgIHJldHVybiAkcmVzb3VyY2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBDbG9zZSBib3RoIHRoZSByZW1vdGUgc3RyZWFtIGFuZCBidWZmZXIgc3RyZWFtCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbG9zZSgpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnJlbW90ZVN0cmVhbS0+Y2xvc2UoKTsKICAgICAgICAkdGhpcy0+c3RyZWFtLT5jbG9zZSgpOwogICAgICAgICR0aGlzLT5kZXRhY2hlZCA9IHRydWU7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjYWNoZUVudGlyZVN0cmVhbSgpOiBpbnQKICAgIHsKICAgICAgICAkdGFyZ2V0ID0gbmV3IEZuU3RyZWFtKFsnd3JpdGUnID0+ICdzdHJsZW4nXSk7CiAgICAgICAgVXRpbHM6OmNvcHlUb1N0cmVhbSgkdGhpcywgJHRhcmdldCk7CgogICAgICAgIHJldHVybiAkdGhpcy0+dGVsbCgpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/DroppingStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBTdHJlYW0gZGVjb3JhdG9yIHRoYXQgYmVnaW5zIGRyb3BwaW5nIGRhdGEgb25jZSB0aGUgc2l6ZSBvZiB0aGUgdW5kZXJseWluZwogKiBzdHJlYW0gYmVjb21lcyB0b28gZnVsbC4KICovCmZpbmFsIGNsYXNzIERyb3BwaW5nU3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHVzZSBTdHJlYW1EZWNvcmF0b3JUcmFpdDsKCiAgICAvKiogQHZhciBpbnQgKi8KICAgIHByaXZhdGUgJG1heExlbmd0aDsKCiAgICAvKiogQHZhciBTdHJlYW1JbnRlcmZhY2UgKi8KICAgIHByaXZhdGUgJHN0cmVhbTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSAgICBVbmRlcmx5aW5nIHN0cmVhbSB0byBkZWNvcmF0ZS4KICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgJG1heExlbmd0aCBNYXhpbXVtIHNpemUgYmVmb3JlIGRyb3BwaW5nIGRhdGEuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgaW50ICRtYXhMZW5ndGgpCiAgICB7CiAgICAgICAgJHRoaXMtPnN0cmVhbSA9ICRzdHJlYW07CiAgICAgICAgJHRoaXMtPm1heExlbmd0aCA9ICRtYXhMZW5ndGg7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlKCRzdHJpbmcpOiBpbnQKICAgIHsKICAgICAgICBpZiAoIVxpc19zdHJpbmcoJHN0cmluZykpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFN0cmVhbUludGVyZmFjZTo6d3JpdGUoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIHN0cmluZyBmb3IgJHN0cmluZy4nLAogICAgICAgICAgICAgICAgXGdldF9kZWJ1Z190eXBlKCRzdHJpbmcpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkZGlmZiA9ICR0aGlzLT5tYXhMZW5ndGggLSAkdGhpcy0+c3RyZWFtLT5nZXRTaXplKCk7CgogICAgICAgIC8vIEJlZ2luIHJldHVybmluZyAwIHdoZW4gdGhlIHVuZGVybHlpbmcgc3RyZWFtIGlzIHRvbyBsYXJnZS4KICAgICAgICBpZiAoJGRpZmYgPD0gMCkgewogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICAgIC8vIFdyaXRlIHRoZSBzdHJlYW0gb3IgYSBzdWJzZXQgb2YgdGhlIHN0cmVhbSBpZiBuZWVkZWQuCiAgICAgICAgaWYgKHN0cmxlbigkc3RyaW5nKSA8ICRkaWZmKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT53cml0ZSgkc3RyaW5nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT53cml0ZShzdWJzdHIoJHN0cmluZywgMCwgJGRpZmYpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Exception/MalformedUriException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyN1xFeGNlcHRpb247Cgp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwoKLyoqCiAqIEV4Y2VwdGlvbiB0aHJvd24gaWYgYSBVUkkgY2Fubm90IGJlIHBhcnNlZCBiZWNhdXNlIGl0J3MgbWFsZm9ybWVkLgogKi8KY2xhc3MgTWFsZm9ybWVkVXJpRXhjZXB0aW9uIGV4dGVuZHMgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/FnStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBDb21wb3NlIHN0cmVhbSBpbXBsZW1lbnRhdGlvbnMgYmFzZWQgb24gYSBoYXNoIG9mIGNhbGxhYmxlcy4KICoKICogQWxsb3dzIGZvciBlYXN5IHRlc3RpbmcgYW5kIGV4dGVuc2lvbiBvZiBhIHByb3ZpZGVkIHN0cmVhbSB3aXRob3V0IG5lZWRpbmcKICogdG8gY3JlYXRlIGEgY29uY3JldGUgY2xhc3MgZm9yIGEgc2ltcGxlIGV4dGVuc2lvbiBwb2ludC4KICovCiNbXEFsbG93RHluYW1pY1Byb3BlcnRpZXNdCmZpbmFsIGNsYXNzIEZuU3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHByaXZhdGUgY29uc3QgU0xPVFMgPSBbCiAgICAgICAgJ19fdG9TdHJpbmcnLCAnY2xvc2UnLCAnZGV0YWNoJywgJ3Jld2luZCcsCiAgICAgICAgJ2dldFNpemUnLCAndGVsbCcsICdlb2YnLCAnaXNTZWVrYWJsZScsICdzZWVrJywgJ2lzV3JpdGFibGUnLCAnd3JpdGUnLAogICAgICAgICdpc1JlYWRhYmxlJywgJ3JlYWQnLCAnZ2V0Q29udGVudHMnLCAnZ2V0TWV0YWRhdGEnLAogICAgXTsKCiAgICAvKiogQHZhciBhcnJheTxzdHJpbmcsIGNhbGxhYmxlPiAqLwogICAgcHJpdmF0ZSAkbWV0aG9kczsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIGNhbGxhYmxlPiAkbWV0aG9kcyBIYXNoIG9mIG1ldGhvZCBuYW1lIHRvIGEgY2FsbGFibGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkbWV0aG9kcykKICAgIHsKICAgICAgICAkdGhpcy0+bWV0aG9kcyA9ICRtZXRob2RzOwoKICAgICAgICAvLyBDcmVhdGUgdGhlIGNhbGxhYmxlcyBvbiB0aGUgY2xhc3MKICAgICAgICBmb3JlYWNoICgkbWV0aG9kcyBhcyAkbmFtZSA9PiAkZm4pIHsKICAgICAgICAgICAgJHRoaXMtPnsnX2ZuXycuJG5hbWV9ID0gJGZuOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIExhemlseSBkZXRlcm1pbmUgd2hpY2ggbWV0aG9kcyBhcmUgbm90IGltcGxlbWVudGVkLgogICAgICoKICAgICAqIEB0aHJvd3MgXEJhZE1ldGhvZENhbGxFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KHN0cmluZyAkbmFtZSk6IHZvaWQKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXEJhZE1ldGhvZENhbGxFeGNlcHRpb24oc3RyX3JlcGxhY2UoJ19mbl8nLCAnJywgJG5hbWUpCiAgICAgICAgICAgIC4nKCkgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBGblN0cmVhbScpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGNsb3NlIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIHVuZGVybHlpbmcgc3RyZWFtIG9ubHkgaWYgcG9zc2libGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2Rlc3RydWN0KCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPl9mbl9jbG9zZSkpIHsKICAgICAgICAgICAgKCR0aGlzLT5fZm5fY2xvc2UpKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQW4gdW5zZXJpYWxpemUgd291bGQgYWxsb3cgdGhlIF9fZGVzdHJ1Y3QgdG8gcnVuIHdoZW4gdGhlIHVuc2VyaWFsaXplZCB2YWx1ZSBnb2VzIG91dCBvZiBzY29wZS4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxMb2dpY0V4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX193YWtldXAoKTogdm9pZAogICAgewogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ZuU3RyZWFtIHNob3VsZCBuZXZlciBiZSB1bnNlcmlhbGl6ZWQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZHMgY3VzdG9tIGZ1bmN0aW9uYWxpdHkgdG8gYW4gdW5kZXJseWluZyBzdHJlYW0gYnkgaW50ZXJjZXB0aW5nCiAgICAgKiBzcGVjaWZpYyBtZXRob2QgY2FsbHMuCiAgICAgKgogICAgICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAgICAgICAgICRzdHJlYW0gIFN0cmVhbSB0byBkZWNvcmF0ZQogICAgICogQHBhcmFtIGFycmF5PHN0cmluZywgY2FsbGFibGU+ICRtZXRob2RzIEhhc2ggb2YgbWV0aG9kIG5hbWUgdG8gYSBjYWxsYWJsZQogICAgICoKICAgICAqIEByZXR1cm4gRm5TdHJlYW0KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWNvcmF0ZShTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgYXJyYXkgJG1ldGhvZHMpCiAgICB7CiAgICAgICAgLy8gSWYgYW55IG9mIHRoZSByZXF1aXJlZCBtZXRob2RzIHdlcmUgbm90IHByb3ZpZGVkLCB0aGVuIHNpbXBseQogICAgICAgIC8vIHByb3h5IHRvIHRoZSBkZWNvcmF0ZWQgc3RyZWFtLgogICAgICAgIGZvcmVhY2ggKGFycmF5X2RpZmYoc2VsZjo6U0xPVFMsIGFycmF5X2tleXMoJG1ldGhvZHMpKSBhcyAkZGlmZikgewogICAgICAgICAgICAvKiogQHZhciBjYWxsYWJsZSAkY2FsbGFibGUgKi8KICAgICAgICAgICAgJGNhbGxhYmxlID0gWyRzdHJlYW0sICRkaWZmXTsKICAgICAgICAgICAgJG1ldGhvZHNbJGRpZmZdID0gJGNhbGxhYmxlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCRtZXRob2RzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAvKiogQHZhciBzdHJpbmcgKi8KICAgICAgICAgICAgcmV0dXJuICgkdGhpcy0+X2ZuX19fdG9TdHJpbmcpKCk7CiAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkZSkgewogICAgICAgICAgICBpZiAoXFBIUF9WRVJTSU9OX0lEID49IDcwNDAwKSB7CiAgICAgICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKHNwcmludGYoJyVzOjpfX3RvU3RyaW5nIGV4Y2VwdGlvbjogJXMnLCBzZWxmOjpjbGFzcywgKHN0cmluZykgJGUpLCBFX1VTRVJfRVJST1IpOwoKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xvc2UoKTogdm9pZAogICAgewogICAgICAgICgkdGhpcy0+X2ZuX2Nsb3NlKSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZXRhY2goKQogICAgewogICAgICAgIHJldHVybiAoJHRoaXMtPl9mbl9kZXRhY2gpKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpemUoKTogP2ludAogICAgewogICAgICAgIHJldHVybiAoJHRoaXMtPl9mbl9nZXRTaXplKSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZWxsKCk6IGludAogICAgewogICAgICAgIHJldHVybiAoJHRoaXMtPl9mbl90ZWxsKSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlb2YoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAoJHRoaXMtPl9mbl9lb2YpKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzU2Vla2FibGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAoJHRoaXMtPl9mbl9pc1NlZWthYmxlKSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXdpbmQoKTogdm9pZAogICAgewogICAgICAgICgkdGhpcy0+X2ZuX3Jld2luZCkoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2Vlaygkb2Zmc2V0LCAkd2hlbmNlID0gU0VFS19TRVQpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFcaXNfaW50KCRvZmZzZXQpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyB0byBTdHJlYW1JbnRlcmZhY2U6OnNlZWsoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIGludCBmb3IgJG9mZnNldC4nLAogICAgICAgICAgICAgICAgXGdldF9kZWJ1Z190eXBlKCRvZmZzZXQpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIVxpc19pbnQoJHdoZW5jZSkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFN0cmVhbUludGVyZmFjZTo6c2VlaygpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgaW50IGZvciAkd2hlbmNlLicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJHdoZW5jZSkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICgkdGhpcy0+X2ZuX3NlZWspKCRvZmZzZXQsICR3aGVuY2UpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1dyaXRhYmxlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gKCR0aGlzLT5fZm5faXNXcml0YWJsZSkoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JpdGUoJHN0cmluZyk6IGludAogICAgewogICAgICAgIGlmICghXGlzX3N0cmluZygkc3RyaW5nKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gU3RyZWFtSW50ZXJmYWNlOjp3cml0ZSgpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgc3RyaW5nIGZvciAkc3RyaW5nLicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJHN0cmluZykKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAoJHRoaXMtPl9mbl93cml0ZSkoJHN0cmluZyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzUmVhZGFibGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAoJHRoaXMtPl9mbl9pc1JlYWRhYmxlKSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKCRsZW5ndGgpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoIVxpc19pbnQoJGxlbmd0aCkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFN0cmVhbUludGVyZmFjZTo6cmVhZCgpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgaW50IGZvciAkbGVuZ3RoLicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJGxlbmd0aCkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAoJHRoaXMtPl9mbl9yZWFkKSgkbGVuZ3RoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudHMoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICgkdGhpcy0+X2ZuX2dldENvbnRlbnRzKSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWV0YWRhdGEoJGtleSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCRrZXkgIT09IG51bGwgJiYgIVxpc19zdHJpbmcoJGtleSkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFN0cmVhbUludGVyZmFjZTo6Z2V0TWV0YWRhdGEoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIHN0cmluZ3xudWxsIGZvciAka2V5LicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJGtleSkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAoJHRoaXMtPl9mbl9nZXRNZXRhZGF0YSkoJGtleSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Header.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCmZpbmFsIGNsYXNzIEhlYWRlcgp7CiAgICAvKioKICAgICAqIFBhcnNlIGFuIGFycmF5IG9mIGhlYWRlciB2YWx1ZXMgY29udGFpbmluZyAiOyIgc2VwYXJhdGVkIGRhdGEgaW50byBhbgogICAgICogYXJyYXkgb2YgYXNzb2NpYXRpdmUgYXJyYXlzIHJlcHJlc2VudGluZyB0aGUgaGVhZGVyIGtleSB2YWx1ZSBwYWlyIGRhdGEKICAgICAqIG9mIHRoZSBoZWFkZXIuIFdoZW4gYSBwYXJhbWV0ZXIgZG9lcyBub3QgY29udGFpbiBhIHZhbHVlLCBidXQganVzdAogICAgICogY29udGFpbnMgYSBrZXksIHRoaXMgZnVuY3Rpb24gd2lsbCBpbmplY3QgYSBrZXkgd2l0aCBhICcnIHN0cmluZyB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfGFycmF5ICRoZWFkZXIgSGVhZGVyIHRvIHBhcnNlIGludG8gY29tcG9uZW50cy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZSgkaGVhZGVyKTogYXJyYXkKICAgIHsKICAgICAgICBzdGF0aWMgJHRyaW1tZWQgPSAiXCInICBcblx0XHIiOwogICAgICAgICRwYXJhbXMgPSAkbWF0Y2hlcyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgoYXJyYXkpICRoZWFkZXIgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKHNlbGY6OnNwbGl0TGlzdCgkdmFsdWUpIGFzICR2YWwpIHsKICAgICAgICAgICAgICAgICRwYXJ0ID0gW107CiAgICAgICAgICAgICAgICBmb3JlYWNoIChzZWxmOjpzcGxpdFBhcmFtZXRlcnMoJHZhbCkgYXMgJGt2cCkgewogICAgICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoX2FsbCgnLzxbXj5dKz58W149XSsvJywgJGt2cCwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRtID0gJG1hdGNoZXNbMF07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkbVsxXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0W3RyaW0oJG1bMF0sICR0cmltbWVkKV0gPSB0cmltKCRtWzFdLCAkdHJpbW1lZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFydFtdID0gdHJpbSgkbVswXSwgJHRyaW1tZWQpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCRwYXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgJHBhcmFtc1tdID0gJHBhcnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkcGFyYW1zOwogICAgfQoKICAgIC8qKgogICAgICogU3BsaXQgYSBoZWFkZXIgdmFsdWUgaW50byBzZW1pY29sb24tc2VwYXJhdGVkIHBhcmFtZXRlcnMuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBzcGxpdFBhcmFtZXRlcnMoc3RyaW5nICR2YWx1ZSk6IGFycmF5CiAgICB7CiAgICAgICAgJHZhbHVlcyA9IFtdOwogICAgICAgICRzdGFydCA9IDA7CiAgICAgICAgJGlzUXVvdGVkID0gZmFsc2U7CiAgICAgICAgJGlzRXNjYXBlZCA9IGZhbHNlOwoKICAgICAgICBmb3IgKCRpID0gMCwgJG1heCA9IFxzdHJsZW4oJHZhbHVlKTsgJGkgPCAkbWF4OyArKyRpKSB7CiAgICAgICAgICAgICRjaGFyID0gJHZhbHVlWyRpXTsKCiAgICAgICAgICAgIGlmICgkaXNFc2NhcGVkKSB7CiAgICAgICAgICAgICAgICAkaXNFc2NhcGVkID0gZmFsc2U7CgogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkaXNRdW90ZWQgJiYgJGNoYXIgPT09ICdcXCcpIHsKICAgICAgICAgICAgICAgICRpc0VzY2FwZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGNoYXIgPT09ICciJykgewogICAgICAgICAgICAgICAgJGlzUXVvdGVkID0gISRpc1F1b3RlZDsKCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCEkaXNRdW90ZWQgJiYgJGNoYXIgPT09ICc7JykgewogICAgICAgICAgICAgICAgJHZhbHVlc1tdID0gXHN1YnN0cigkdmFsdWUsICRzdGFydCwgJGkgLSAkc3RhcnQpOwogICAgICAgICAgICAgICAgJHN0YXJ0ID0gJGkgKyAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdmFsdWVzW10gPSBcc3Vic3RyKCR2YWx1ZSwgJHN0YXJ0KTsKCiAgICAgICAgcmV0dXJuICR2YWx1ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBoZWFkZXIgdmFsdWVzIHRoYXQgbWF5IGNvbnRhaW4gY29tbWEgc2VwYXJhdGVkCiAgICAgKiBoZWFkZXJzIGludG8gYW4gYXJyYXkgb2YgaGVhZGVycyB3aXRoIG5vIGNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xhcnJheSAkaGVhZGVyIEhlYWRlciB0byBub3JtYWxpemUuCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgVXNlIHNlbGY6OnNwbGl0TGlzdCgpIGluc3RlYWQuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbm9ybWFsaXplKCRoZWFkZXIpOiBhcnJheQogICAgewogICAgICAgICRyZXN1bHQgPSBbXTsKICAgICAgICBmb3JlYWNoICgoYXJyYXkpICRoZWFkZXIgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKHNlbGY6OnNwbGl0TGlzdCgkdmFsdWUpIGFzICRwYXJzZWQpIHsKICAgICAgICAgICAgICAgICRyZXN1bHRbXSA9ICRwYXJzZWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogU3BsaXRzIGEgSFRUUCBoZWFkZXIgZGVmaW5lZCB0byBjb250YWluIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QgaW50bwogICAgICogZWFjaCBpbmRpdmlkdWFsIHZhbHVlLiBFbXB0eSB2YWx1ZXMgd2lsbCBiZSByZW1vdmVkLgogICAgICoKICAgICAqIEV4YW1wbGUgaGVhZGVycyBpbmNsdWRlICdhY2NlcHQnLCAnY2FjaGUtY29udHJvbCcgYW5kICdpZi1ub25lLW1hdGNoJy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBtdXN0IG5vdCBiZSB1c2VkIHRvIHBhcnNlIGhlYWRlcnMgdGhhdCBhcmUgbm90IGRlZmluZWQgYXMKICAgICAqIGEgbGlzdCwgc3VjaCBhcyAndXNlci1hZ2VudCcgb3IgJ3NldC1jb29raWUnLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8c3RyaW5nW10gJHZhbHVlcyBIZWFkZXIgdmFsdWUgYXMgcmV0dXJuZWQgYnkgTWVzc2FnZUludGVyZmFjZTo6Z2V0SGVhZGVyKCkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc3BsaXRMaXN0KCR2YWx1ZXMpOiBhcnJheQogICAgewogICAgICAgIGlmICghXGlzX2FycmF5KCR2YWx1ZXMpKSB7CiAgICAgICAgICAgICR2YWx1ZXMgPSBbJHZhbHVlc107CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gW107CiAgICAgICAgZm9yZWFjaCAoJHZhbHVlcyBhcyAkdmFsdWUpIHsKICAgICAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcVHlwZUVycm9yKCckaGVhZGVyIG11c3QgZWl0aGVyIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IGNvbnRhaW5pbmcgc3RyaW5ncy4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHYgPSAnJzsKICAgICAgICAgICAgJGlzUXVvdGVkID0gZmFsc2U7CiAgICAgICAgICAgICRpc0VzY2FwZWQgPSBmYWxzZTsKICAgICAgICAgICAgZm9yICgkaSA9IDAsICRtYXggPSBcc3RybGVuKCR2YWx1ZSk7ICRpIDwgJG1heDsgKyskaSkgewogICAgICAgICAgICAgICAgaWYgKCRpc0VzY2FwZWQpIHsKICAgICAgICAgICAgICAgICAgICAkdiAuPSAkdmFsdWVbJGldOwogICAgICAgICAgICAgICAgICAgICRpc0VzY2FwZWQgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCEkaXNRdW90ZWQgJiYgJHZhbHVlWyRpXSA9PT0gJywnKSB7CiAgICAgICAgICAgICAgICAgICAgJHYgPSBcdHJpbSgkdik7CiAgICAgICAgICAgICAgICAgICAgaWYgKCR2ICE9PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkdjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICR2ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRpc1F1b3RlZCAmJiAkdmFsdWVbJGldID09PSAnXFwnKSB7CiAgICAgICAgICAgICAgICAgICAgJGlzRXNjYXBlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgJHYgLj0gJHZhbHVlWyRpXTsKCiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJHZhbHVlWyRpXSA9PT0gJyInKSB7CiAgICAgICAgICAgICAgICAgICAgJGlzUXVvdGVkID0gISRpc1F1b3RlZDsKICAgICAgICAgICAgICAgICAgICAkdiAuPSAkdmFsdWVbJGldOwoKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdiAuPSAkdmFsdWVbJGldOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdiA9IFx0cmltKCR2KTsKICAgICAgICAgICAgaWYgKCR2ICE9PSAnJykgewogICAgICAgICAgICAgICAgJHJlc3VsdFtdID0gJHY7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/HttpFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUZhY3RvcnlJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxTZXJ2ZXJSZXF1ZXN0RmFjdG9yeUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcU2VydmVyUmVxdWVzdEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcU3RyZWFtRmFjdG9yeUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcU3RyZWFtSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcGxvYWRlZEZpbGVGYWN0b3J5SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcGxvYWRlZEZpbGVJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUZhY3RvcnlJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCi8qKgogKiBJbXBsZW1lbnRzIGFsbCBvZiB0aGUgUFNSLTE3IGludGVyZmFjZXMuCiAqCiAqIE5vdGU6IGluIGNvbnN1bWluZyBjb2RlIGl0IGlzIHJlY29tbWVuZGVkIHRvIHJlcXVpcmUgdGhlIGltcGxlbWVudGVkIGludGVyZmFjZXMKICogYW5kIGluamVjdCB0aGUgaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBtdWx0aXBsZSB0aW1lcy4KICovCmZpbmFsIGNsYXNzIEh0dHBGYWN0b3J5IGltcGxlbWVudHMgUmVxdWVzdEZhY3RvcnlJbnRlcmZhY2UsIFJlc3BvbnNlRmFjdG9yeUludGVyZmFjZSwgU2VydmVyUmVxdWVzdEZhY3RvcnlJbnRlcmZhY2UsIFN0cmVhbUZhY3RvcnlJbnRlcmZhY2UsIFVwbG9hZGVkRmlsZUZhY3RvcnlJbnRlcmZhY2UsIFVyaUZhY3RvcnlJbnRlcmZhY2UKewogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVVwbG9hZGVkRmlsZSgKICAgICAgICBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwKICAgICAgICA/aW50ICRzaXplID0gbnVsbCwKICAgICAgICBpbnQgJGVycm9yID0gXFVQTE9BRF9FUlJfT0ssCiAgICAgICAgP3N0cmluZyAkY2xpZW50RmlsZW5hbWUgPSBudWxsLAogICAgICAgID9zdHJpbmcgJGNsaWVudE1lZGlhVHlwZSA9IG51bGwKICAgICk6IFVwbG9hZGVkRmlsZUludGVyZmFjZSB7CiAgICAgICAgaWYgKCRzaXplID09PSBudWxsKSB7CiAgICAgICAgICAgICRzaXplID0gJHN0cmVhbS0+Z2V0U2l6ZSgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBVcGxvYWRlZEZpbGUoJHN0cmVhbSwgJHNpemUsICRlcnJvciwgJGNsaWVudEZpbGVuYW1lLCAkY2xpZW50TWVkaWFUeXBlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlU3RyZWFtKHN0cmluZyAkY29udGVudCA9ICcnKTogU3RyZWFtSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuIFV0aWxzOjpzdHJlYW1Gb3IoJGNvbnRlbnQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVTdHJlYW1Gcm9tRmlsZShzdHJpbmcgJGZpbGUsIHN0cmluZyAkbW9kZSA9ICdyJyk6IFN0cmVhbUludGVyZmFjZQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRyZXNvdXJjZSA9IFV0aWxzOjp0cnlGb3BlbigkZmlsZSwgJG1vZGUpOwogICAgICAgIH0gY2F0Y2ggKFxSdW50aW1lRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIGlmICgnJyA9PT0gJG1vZGUgfHwgZmFsc2UgPT09IFxpbl9hcnJheSgkbW9kZVswXSwgWydyJywgJ3cnLCAnYScsICd4JywgJ2MnXSwgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ0ludmFsaWQgZmlsZSBvcGVuaW5nIG1vZGUgIiVzIicsICRtb2RlKSwgMCwgJGUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBVdGlsczo6c3RyZWFtRm9yKCRyZXNvdXJjZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVN0cmVhbUZyb21SZXNvdXJjZSgkcmVzb3VyY2UpOiBTdHJlYW1JbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gVXRpbHM6OnN0cmVhbUZvcigkcmVzb3VyY2UpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVTZXJ2ZXJSZXF1ZXN0KHN0cmluZyAkbWV0aG9kLCAkdXJpLCBhcnJheSAkc2VydmVyUGFyYW1zID0gW10pOiBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKGVtcHR5KCRtZXRob2QpKSB7CiAgICAgICAgICAgIGlmICghZW1wdHkoJHNlcnZlclBhcmFtc1snUkVRVUVTVF9NRVRIT0QnXSkpIHsKICAgICAgICAgICAgICAgICRtZXRob2QgPSAkc2VydmVyUGFyYW1zWydSRVFVRVNUX01FVEhPRCddOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0Nhbm5vdCBkZXRlcm1pbmUgSFRUUCBtZXRob2QnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBTZXJ2ZXJSZXF1ZXN0KCRtZXRob2QsICR1cmksIFtdLCBudWxsLCAnMS4xJywgJHNlcnZlclBhcmFtcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVJlc3BvbnNlKGludCAkY29kZSA9IDIwMCwgc3RyaW5nICRyZWFzb25QaHJhc2UgPSAnJyk6IFJlc3BvbnNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZSgkY29kZSwgW10sIG51bGwsICcxLjEnLCAkcmVhc29uUGhyYXNlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlUmVxdWVzdChzdHJpbmcgJG1ldGhvZCwgJHVyaSk6IFJlcXVlc3RJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFJlcXVlc3QoJG1ldGhvZCwgJHVyaSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVVyaShzdHJpbmcgJHVyaSA9ICcnKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBVcmkoJHVyaSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/InflateStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBVc2VzIFBIUCdzIHpsaWIuaW5mbGF0ZSBmaWx0ZXIgdG8gaW5mbGF0ZSB6bGliIChIVFRQIGRlZmxhdGUsIFJGQzE5NTApIG9yIGd6aXBwZWQgKFJGQzE5NTIpIGNvbnRlbnQuCiAqCiAqIFRoaXMgc3RyZWFtIGRlY29yYXRvciBjb252ZXJ0cyB0aGUgcHJvdmlkZWQgc3RyZWFtIHRvIGEgUEhQIHN0cmVhbSByZXNvdXJjZSwKICogdGhlbiBhcHBlbmRzIHRoZSB6bGliLmluZmxhdGUgZmlsdGVyLiBUaGUgc3RyZWFtIGlzIHRoZW4gY29udmVydGVkIGJhY2sKICogdG8gYSBHdXp6bGUgc3RyZWFtIHJlc291cmNlIHRvIGJlIHVzZWQgYXMgYSBHdXp6bGUgc3RyZWFtLgogKgogKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMTk1MAogKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMTk1MgogKiBAc2VlIGh0dHBzOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2ZpbHRlcnMuY29tcHJlc3Npb24ucGhwCiAqLwpmaW5hbCBjbGFzcyBJbmZsYXRlU3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHVzZSBTdHJlYW1EZWNvcmF0b3JUcmFpdDsKCiAgICAvKiogQHZhciBTdHJlYW1JbnRlcmZhY2UgKi8KICAgIHByaXZhdGUgJHN0cmVhbTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0pCiAgICB7CiAgICAgICAgJHJlc291cmNlID0gU3RyZWFtV3JhcHBlcjo6Z2V0UmVzb3VyY2UoJHN0cmVhbSk7CiAgICAgICAgLy8gU3BlY2lmeSB3aW5kb3c9MTUrMzIsIHNvIHpsaWIgd2lsbCB1c2UgaGVhZGVyIGRldGVjdGlvbiB0byBib3RoIGd6aXAgKHdpdGggaGVhZGVyKSBhbmQgemxpYiBkYXRhCiAgICAgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnpsaWIubmV0L21hbnVhbC5odG1sI0FkdmFuY2VkIGRlZmluaXRpb24gb2YgaW5mbGF0ZUluaXQyCiAgICAgICAgLy8gIkFkZCAzMiB0byB3aW5kb3dCaXRzIHRvIGVuYWJsZSB6bGliIGFuZCBnemlwIGRlY29kaW5nIHdpdGggYXV0b21hdGljIGhlYWRlciBkZXRlY3Rpb24iCiAgICAgICAgLy8gRGVmYXVsdCB3aW5kb3cgc2l6ZSBpcyAxNS4KICAgICAgICBzdHJlYW1fZmlsdGVyX2FwcGVuZCgkcmVzb3VyY2UsICd6bGliLmluZmxhdGUnLCBTVFJFQU1fRklMVEVSX1JFQUQsIFsnd2luZG93JyA9PiAxNSArIDMyXSk7CiAgICAgICAgJHRoaXMtPnN0cmVhbSA9ICRzdHJlYW0tPmlzU2Vla2FibGUoKSA/IG5ldyBTdHJlYW0oJHJlc291cmNlKSA6IG5ldyBOb1NlZWtTdHJlYW0obmV3IFN0cmVhbSgkcmVzb3VyY2UpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/LazyOpenStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBMYXppbHkgcmVhZHMgb3Igd3JpdGVzIHRvIGEgZmlsZSB0aGF0IGlzIG9wZW5lZCBvbmx5IGFmdGVyIGFuIElPIG9wZXJhdGlvbgogKiB0YWtlIHBsYWNlIG9uIHRoZSBzdHJlYW0uCiAqLwpmaW5hbCBjbGFzcyBMYXp5T3BlblN0cmVhbSBpbXBsZW1lbnRzIFN0cmVhbUludGVyZmFjZQp7CiAgICB1c2UgU3RyZWFtRGVjb3JhdG9yVHJhaXQ7CgogICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICBwcml2YXRlICRmaWxlbmFtZTsKCiAgICAvKiogQHZhciBzdHJpbmcgKi8KICAgIHByaXZhdGUgJG1vZGU7CgogICAgLyoqCiAgICAgKiBAdmFyIFN0cmVhbUludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRzdHJlYW07CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZSBGaWxlIHRvIGxhemlseSBvcGVuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtb2RlICAgICBmb3BlbiBtb2RlIHRvIHVzZSB3aGVuIG9wZW5pbmcgdGhlIHN0cmVhbQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICRmaWxlbmFtZSwgc3RyaW5nICRtb2RlKQogICAgewogICAgICAgICR0aGlzLT5maWxlbmFtZSA9ICRmaWxlbmFtZTsKICAgICAgICAkdGhpcy0+bW9kZSA9ICRtb2RlOwoKICAgICAgICAvLyB1bnNldHRpbmcgdGhlIHByb3BlcnR5IGZvcmNlcyB0aGUgZmlyc3QgYWNjZXNzIHRvIGdvIHRocm91Z2gKICAgICAgICAvLyBfX2dldCgpLgogICAgICAgIHVuc2V0KCR0aGlzLT5zdHJlYW0pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyB0aGUgdW5kZXJseWluZyBzdHJlYW0gbGF6aWx5IHdoZW4gcmVxdWlyZWQuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVTdHJlYW0oKTogU3RyZWFtSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuIFV0aWxzOjpzdHJlYW1Gb3IoVXRpbHM6OnRyeUZvcGVuKCR0aGlzLT5maWxlbmFtZSwgJHRoaXMtPm1vZGUpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/LimitStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBEZWNvcmF0b3IgdXNlZCB0byByZXR1cm4gb25seSBhIHN1YnNldCBvZiBhIHN0cmVhbS4KICovCmZpbmFsIGNsYXNzIExpbWl0U3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHVzZSBTdHJlYW1EZWNvcmF0b3JUcmFpdDsKCiAgICAvKiogQHZhciBpbnQgT2Zmc2V0IHRvIHN0YXJ0IHJlYWRpbmcgZnJvbSAqLwogICAgcHJpdmF0ZSAkb2Zmc2V0OwoKICAgIC8qKiBAdmFyIGludCBMaW1pdCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgY2FuIGJlIHJlYWQgKi8KICAgIHByaXZhdGUgJGxpbWl0OwoKICAgIC8qKiBAdmFyIFN0cmVhbUludGVyZmFjZSAqLwogICAgcHJpdmF0ZSAkc3RyZWFtOwoKICAgIC8qKgogICAgICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAkc3RyZWFtIFN0cmVhbSB0byB3cmFwCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICRsaW1pdCAgVG90YWwgbnVtYmVyIG9mIGJ5dGVzIHRvIGFsbG93IHRvIGJlIHJlYWQKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdHJlYW0uIFBhc3MgLTEgZm9yIG5vIGxpbWl0LgogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAkb2Zmc2V0IFBvc2l0aW9uIHRvIHNlZWsgdG8gYmVmb3JlIHJlYWRpbmcgKG9ubHkKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrcyBvbiBzZWVrYWJsZSBzdHJlYW1zKS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgIFN0cmVhbUludGVyZmFjZSAkc3RyZWFtLAogICAgICAgIGludCAkbGltaXQgPSAtMSwKICAgICAgICBpbnQgJG9mZnNldCA9IDAKICAgICkgewogICAgICAgICR0aGlzLT5zdHJlYW0gPSAkc3RyZWFtOwogICAgICAgICR0aGlzLT5zZXRMaW1pdCgkbGltaXQpOwogICAgICAgICR0aGlzLT5zZXRPZmZzZXQoJG9mZnNldCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVvZigpOiBib29sCiAgICB7CiAgICAgICAgLy8gQWx3YXlzIHJldHVybiB0cnVlIGlmIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBpcyBFT0YKICAgICAgICBpZiAoJHRoaXMtPnN0cmVhbS0+ZW9mKCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAvLyBObyBsaW1pdCBhbmQgdGhlIHVuZGVybHlpbmcgc3RyZWFtIGlzIG5vdCBhdCBFT0YKICAgICAgICBpZiAoJHRoaXMtPmxpbWl0ID09PSAtMSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+dGVsbCgpID49ICR0aGlzLT5vZmZzZXQgKyAkdGhpcy0+bGltaXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBsaW1pdGVkIHN1YnNldCBvZiBkYXRhCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaXplKCk6ID9pbnQKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gKCRsZW5ndGggPSAkdGhpcy0+c3RyZWFtLT5nZXRTaXplKCkpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJHNpemUgPSAkbGVuZ3RoIC0gJHRoaXMtPm9mZnNldDsKCiAgICAgICAgaWYgKCR0aGlzLT5saW1pdCAhPT0gLTEpIHsKICAgICAgICAgICAgJHNpemUgPSBtaW4oJHRoaXMtPmxpbWl0LCAkc2l6ZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbWF4KDAsICRzaXplKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFsbG93IGZvciBhIGJvdW5kZWQgc2VlayBvbiB0aGUgcmVhZCBsaW1pdGVkIHN0cmVhbQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2Vlaygkb2Zmc2V0LCAkd2hlbmNlID0gU0VFS19TRVQpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFcaXNfaW50KCRvZmZzZXQpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyB0byBTdHJlYW1JbnRlcmZhY2U6OnNlZWsoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIGludCBmb3IgJG9mZnNldC4nLAogICAgICAgICAgICAgICAgXGdldF9kZWJ1Z190eXBlKCRvZmZzZXQpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIVxpc19pbnQoJHdoZW5jZSkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFN0cmVhbUludGVyZmFjZTo6c2VlaygpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgaW50IGZvciAkd2hlbmNlLicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJHdoZW5jZSkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgkd2hlbmNlICE9PSBTRUVLX1NFVCB8fCAkb2Zmc2V0IDwgMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oc3ByaW50ZigKICAgICAgICAgICAgICAgICdDYW5ub3Qgc2VlayB0byBvZmZzZXQgJXMgd2l0aCB3aGVuY2UgJXMnLAogICAgICAgICAgICAgICAgJG9mZnNldCwKICAgICAgICAgICAgICAgICR3aGVuY2UKICAgICAgICAgICAgKSk7CiAgICAgICAgfQoKICAgICAgICAkb2Zmc2V0ICs9ICR0aGlzLT5vZmZzZXQ7CgogICAgICAgIGlmICgkdGhpcy0+bGltaXQgIT09IC0xKSB7CiAgICAgICAgICAgIGlmICgkb2Zmc2V0ID4gJHRoaXMtPm9mZnNldCArICR0aGlzLT5saW1pdCkgewogICAgICAgICAgICAgICAgJG9mZnNldCA9ICR0aGlzLT5vZmZzZXQgKyAkdGhpcy0+bGltaXQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5zdHJlYW0tPnNlZWsoJG9mZnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHaXZlIGEgcmVsYXRpdmUgdGVsbCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZWxsKCk6IGludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT50ZWxsKCkgLSAkdGhpcy0+b2Zmc2V0OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBvZmZzZXQgdG8gc3RhcnQgbGltaXRpbmcgZnJvbQogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJG9mZnNldCBPZmZzZXQgdG8gc2VlayB0byBhbmQgYmVnaW4gYnl0ZSBsaW1pdGluZyBmcm9tCiAgICAgKgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiB0aGUgc3RyZWFtIGNhbm5vdCBiZSBzZWVrZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRPZmZzZXQoaW50ICRvZmZzZXQpOiB2b2lkCiAgICB7CiAgICAgICAgJGN1cnJlbnQgPSAkdGhpcy0+c3RyZWFtLT50ZWxsKCk7CgogICAgICAgIGlmICgkY3VycmVudCAhPT0gJG9mZnNldCkgewogICAgICAgICAgICAvLyBJZiB0aGUgc3RyZWFtIGNhbm5vdCBzZWVrIHRvIHRoZSBvZmZzZXQgcG9zaXRpb24sIHRoZW4gcmVhZCB0byBpdAogICAgICAgICAgICBpZiAoJHRoaXMtPnN0cmVhbS0+aXNTZWVrYWJsZSgpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c3RyZWFtLT5zZWVrKCRvZmZzZXQpOwogICAgICAgICAgICB9IGVsc2VpZiAoJGN1cnJlbnQgPiAkb2Zmc2V0KSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkNvdWxkIG5vdCBzZWVrIHRvIHN0cmVhbSBvZmZzZXQgJG9mZnNldCIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPnN0cmVhbS0+cmVhZCgkb2Zmc2V0IC0gJGN1cnJlbnQpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+b2Zmc2V0ID0gJG9mZnNldDsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgbGltaXQgb2YgYnl0ZXMgdGhhdCB0aGUgZGVjb3JhdG9yIGFsbG93cyB0byBiZSByZWFkIGZyb20gdGhlCiAgICAgKiBzdHJlYW0uCiAgICAgKgogICAgICogQHBhcmFtIGludCAkbGltaXQgTnVtYmVyIG9mIGJ5dGVzIHRvIGFsbG93IHRvIGJlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLgogICAgICogICAgICAgICAgICAgICAgICAgVXNlIC0xIGZvciBubyBsaW1pdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldExpbWl0KGludCAkbGltaXQpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmxpbWl0ID0gJGxpbWl0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKCRsZW5ndGgpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoIVxpc19pbnQoJGxlbmd0aCkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFN0cmVhbUludGVyZmFjZTo6cmVhZCgpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgaW50IGZvciAkbGVuZ3RoLicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJGxlbmd0aCkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+bGltaXQgPT09IC0xKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT5yZWFkKCRsZW5ndGgpOwogICAgICAgIH0KCiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgcG9zaXRpb24gaXMgbGVzcyB0aGFuIHRoZSB0b3RhbCBhbGxvd2VkCiAgICAgICAgLy8gYnl0ZXMgKyBvcmlnaW5hbCBvZmZzZXQKICAgICAgICAkcmVtYWluaW5nID0gKCR0aGlzLT5vZmZzZXQgKyAkdGhpcy0+bGltaXQpIC0gJHRoaXMtPnN0cmVhbS0+dGVsbCgpOwogICAgICAgIGlmICgkcmVtYWluaW5nID4gMCkgewogICAgICAgICAgICAvLyBPbmx5IHJldHVybiB0aGUgYW1vdW50IG9mIHJlcXVlc3RlZCBkYXRhLCBlbnN1cmluZyB0aGF0IHRoZSBieXRlCiAgICAgICAgICAgIC8vIGxpbWl0IGlzIG5vdCBleGNlZWRlZAogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+cmVhZChtaW4oJHJlbWFpbmluZywgJGxlbmd0aCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICcnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Message.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwoKZmluYWwgY2xhc3MgTWVzc2FnZQp7CiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBIVFRQIG1lc3NhZ2UuCiAgICAgKgogICAgICogQHBhcmFtIE1lc3NhZ2VJbnRlcmZhY2UgJG1lc3NhZ2UgTWVzc2FnZSB0byBjb252ZXJ0IHRvIGEgc3RyaW5nLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvU3RyaW5nKE1lc3NhZ2VJbnRlcmZhY2UgJG1lc3NhZ2UpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJG1lc3NhZ2UgaW5zdGFuY2VvZiBSZXF1ZXN0SW50ZXJmYWNlKSB7CiAgICAgICAgICAgICRtc2cgPSB0cmltKCRtZXNzYWdlLT5nZXRNZXRob2QoKS4nICcKICAgICAgICAgICAgICAgICAgICAuJG1lc3NhZ2UtPmdldFJlcXVlc3RUYXJnZXQoKSkKICAgICAgICAgICAgICAgIC4nIEhUVFAvJy4kbWVzc2FnZS0+Z2V0UHJvdG9jb2xWZXJzaW9uKCk7CiAgICAgICAgICAgIGlmICghJG1lc3NhZ2UtPmhhc0hlYWRlcignaG9zdCcpKSB7CiAgICAgICAgICAgICAgICAkbXNnIC49ICJcclxuSG9zdDogIi4kbWVzc2FnZS0+Z2V0VXJpKCktPmdldEhvc3QoKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmICgkbWVzc2FnZSBpbnN0YW5jZW9mIFJlc3BvbnNlSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICRtc2cgPSAnSFRUUC8nLiRtZXNzYWdlLT5nZXRQcm90b2NvbFZlcnNpb24oKS4nICcKICAgICAgICAgICAgICAgIC4kbWVzc2FnZS0+Z2V0U3RhdHVzQ29kZSgpLicgJwogICAgICAgICAgICAgICAgLiRtZXNzYWdlLT5nZXRSZWFzb25QaHJhc2UoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5rbm93biBtZXNzYWdlIHR5cGUnKTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRtZXNzYWdlLT5nZXRIZWFkZXJzKCkgYXMgJG5hbWUgPT4gJHZhbHVlcykgewogICAgICAgICAgICBpZiAoaXNfc3RyaW5nKCRuYW1lKSAmJiBzdHJ0b2xvd2VyKCRuYW1lKSA9PT0gJ3NldC1jb29raWUnKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdmFsdWVzIGFzICR2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICRtc2cgLj0gIlxyXG57JG5hbWV9OiAiLiR2YWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRtc2cgLj0gIlxyXG57JG5hbWV9OiAiLmltcGxvZGUoJywgJywgJHZhbHVlcyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAieyRtc2d9XHJcblxyXG4iLiRtZXNzYWdlLT5nZXRCb2R5KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYSBzaG9ydCBzdW1tYXJ5IG9mIHRoZSBtZXNzYWdlIGJvZHkuCiAgICAgKgogICAgICogV2lsbCByZXR1cm4gYG51bGxgIGlmIHRoZSByZXNwb25zZSBpcyBub3QgcHJpbnRhYmxlLgogICAgICoKICAgICAqIEBwYXJhbSBNZXNzYWdlSW50ZXJmYWNlICRtZXNzYWdlICAgIFRoZSBtZXNzYWdlIHRvIGdldCB0aGUgYm9keSBzdW1tYXJ5CiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAkdHJ1bmNhdGVBdCBUaGUgbWF4aW11bSBhbGxvd2VkIHNpemUgb2YgdGhlIHN1bW1hcnkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBib2R5U3VtbWFyeShNZXNzYWdlSW50ZXJmYWNlICRtZXNzYWdlLCBpbnQgJHRydW5jYXRlQXQgPSAxMjApOiA/c3RyaW5nCiAgICB7CiAgICAgICAgJGJvZHkgPSAkbWVzc2FnZS0+Z2V0Qm9keSgpOwoKICAgICAgICBpZiAoISRib2R5LT5pc1NlZWthYmxlKCkgfHwgISRib2R5LT5pc1JlYWRhYmxlKCkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkc2l6ZSA9ICRib2R5LT5nZXRTaXplKCk7CgogICAgICAgIGlmICgkc2l6ZSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRib2R5LT5yZXdpbmQoKTsKICAgICAgICAkc3VtbWFyeSA9ICRib2R5LT5yZWFkKCR0cnVuY2F0ZUF0KTsKCiAgICAgICAgaWYgKCRzaXplID4gJHRydW5jYXRlQXQpIHsKICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy8vdScsICRzdW1tYXJ5KSAhPT0gMSkgewogICAgICAgICAgICAgICAgJHN1bW1hcnkgPSBzZWxmOjp0cmltVHJhaWxpbmdJbmNvbXBsZXRlVXRmOENoYXJhY3Rlcigkc3VtbWFyeSwgJGJvZHktPnJlYWQoMykpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc3VtbWFyeSAuPSAnICh0cnVuY2F0ZWQuLi4pJzsKICAgICAgICB9CgogICAgICAgICRib2R5LT5yZXdpbmQoKTsKCiAgICAgICAgLy8gTWF0Y2hlcyBhbnkgcHJpbnRhYmxlIGNoYXJhY3RlciwgaW5jbHVkaW5nIHVuaWNvZGUgY2hhcmFjdGVyczoKICAgICAgICAvLyBsZXR0ZXJzLCBtYXJrcywgbnVtYmVycywgcHVuY3R1YXRpb24sIHNwYWNpbmcsIGFuZCBzZXBhcmF0b3JzLgogICAgICAgIGlmIChwcmVnX21hdGNoKCcvW15ccExccE1ccE5ccFBccFNccFpcblxyXHRdL3UnLCAkc3VtbWFyeSkgIT09IDApIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHN1bW1hcnk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUcmltcyBhIHBhcnRpYWwgVVRGLTggY2hhcmFjdGVyIGZyb20gdGhlIGVuZCBvZiBhIHRydW5jYXRlZCBzdHJpbmcuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHRyaW1UcmFpbGluZ0luY29tcGxldGVVdGY4Q2hhcmFjdGVyKHN0cmluZyAkc3VtbWFyeSwgc3RyaW5nICRsb29rYWhlYWQpOiBzdHJpbmcKICAgIHsKICAgICAgICAkbGVuZ3RoID0gc3RybGVuKCRzdW1tYXJ5KTsKCiAgICAgICAgaWYgKCRsZW5ndGggPT09IDApIHsKICAgICAgICAgICAgcmV0dXJuICRzdW1tYXJ5OwogICAgICAgIH0KCiAgICAgICAgJHN0YXJ0ID0gJGxlbmd0aCAtIDE7CgogICAgICAgIHdoaWxlICgkc3RhcnQgPj0gMCkgewogICAgICAgICAgICAkYnl0ZSA9IG9yZCgkc3VtbWFyeVskc3RhcnRdKTsKCiAgICAgICAgICAgIGlmICgkYnl0ZSA8IDB4ODAgfHwgJGJ5dGUgPiAweEJGKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLS0kc3RhcnQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHN0YXJ0IDwgMCkgewogICAgICAgICAgICByZXR1cm4gJHN1bW1hcnk7CiAgICAgICAgfQoKICAgICAgICAkbGVhZCA9IG9yZCgkc3VtbWFyeVskc3RhcnRdKTsKCiAgICAgICAgaWYgKCRsZWFkID49IDB4QzIgJiYgJGxlYWQgPD0gMHhERikgewogICAgICAgICAgICAkZXhwZWN0ZWRMZW5ndGggPSAyOwogICAgICAgIH0gZWxzZWlmICgkbGVhZCA+PSAweEUwICYmICRsZWFkIDw9IDB4RUYpIHsKICAgICAgICAgICAgJGV4cGVjdGVkTGVuZ3RoID0gMzsKICAgICAgICB9IGVsc2VpZiAoJGxlYWQgPj0gMHhGMCAmJiAkbGVhZCA8PSAweEY0KSB7CiAgICAgICAgICAgICRleHBlY3RlZExlbmd0aCA9IDQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICRzdW1tYXJ5OwogICAgICAgIH0KCiAgICAgICAgJGF2YWlsYWJsZUxlbmd0aCA9ICRsZW5ndGggLSAkc3RhcnQ7CgogICAgICAgIGlmICgkYXZhaWxhYmxlTGVuZ3RoID49ICRleHBlY3RlZExlbmd0aCkgewogICAgICAgICAgICByZXR1cm4gJHN1bW1hcnk7CiAgICAgICAgfQoKICAgICAgICAkc2VxdWVuY2UgPSBzdWJzdHIoJHN1bW1hcnksICRzdGFydCkuc3Vic3RyKCRsb29rYWhlYWQsIDAsICRleHBlY3RlZExlbmd0aCAtICRhdmFpbGFibGVMZW5ndGgpOwoKICAgICAgICBpZiAoc3RybGVuKCRzZXF1ZW5jZSkgIT09ICRleHBlY3RlZExlbmd0aCB8fCBwcmVnX21hdGNoKCcvL3UnLCAkc2VxdWVuY2UpICE9PSAxKSB7CiAgICAgICAgICAgIHJldHVybiAkc3VtbWFyeTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzdWJzdHIoJHN1bW1hcnksIDAsICRzdGFydCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBdHRlbXB0cyB0byByZXdpbmQgYSBtZXNzYWdlIGJvZHkgYW5kIHRocm93cyBhbiBleGNlcHRpb24gb24gZmFpbHVyZS4KICAgICAqCiAgICAgKiBUaGUgYm9keSBvZiB0aGUgbWVzc2FnZSB3aWxsIG9ubHkgYmUgcmV3b3VuZCBpZiBhIGNhbGwgdG8gYHRlbGwoKWAKICAgICAqIHJldHVybnMgYSB2YWx1ZSBvdGhlciB0aGFuIGAwYC4KICAgICAqCiAgICAgKiBAcGFyYW0gTWVzc2FnZUludGVyZmFjZSAkbWVzc2FnZSBNZXNzYWdlIHRvIHJld2luZAogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXdpbmRCb2R5KE1lc3NhZ2VJbnRlcmZhY2UgJG1lc3NhZ2UpOiB2b2lkCiAgICB7CiAgICAgICAgJGJvZHkgPSAkbWVzc2FnZS0+Z2V0Qm9keSgpOwoKICAgICAgICBpZiAoJGJvZHktPnRlbGwoKSkgewogICAgICAgICAgICAkYm9keS0+cmV3aW5kKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzIGFuIEhUVFAgbWVzc2FnZSBpbnRvIGFuIGFzc29jaWF0aXZlIGFycmF5LgogICAgICoKICAgICAqIFRoZSBhcnJheSBjb250YWlucyB0aGUgInN0YXJ0LWxpbmUiIGtleSBjb250YWluaW5nIHRoZSBzdGFydCBsaW5lIG9mCiAgICAgKiB0aGUgbWVzc2FnZSwgImhlYWRlcnMiIGtleSBjb250YWluaW5nIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIGhlYWRlcgogICAgICogYXJyYXkgdmFsdWVzLCBhbmQgYSAiYm9keSIga2V5IGNvbnRhaW5pbmcgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbWVzc2FnZSBIVFRQIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gcGFyc2UuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2VNZXNzYWdlKHN0cmluZyAkbWVzc2FnZSk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCEkbWVzc2FnZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBtZXNzYWdlJyk7CiAgICAgICAgfQoKICAgICAgICAkbWVzc2FnZSA9IGx0cmltKCRtZXNzYWdlLCAiXHJcbiIpOwoKICAgICAgICAkbWVzc2FnZVBhcnRzID0gcHJlZ19zcGxpdCgiL1xyP1xuXHI/XG4vIiwgJG1lc3NhZ2UsIDIpOwoKICAgICAgICBpZiAoJG1lc3NhZ2VQYXJ0cyA9PT0gZmFsc2UgfHwgY291bnQoJG1lc3NhZ2VQYXJ0cykgIT09IDIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgbWVzc2FnZTogTWlzc2luZyBoZWFkZXIgZGVsaW1pdGVyJyk7CiAgICAgICAgfQoKICAgICAgICBbJHJhd0hlYWRlcnMsICRib2R5XSA9ICRtZXNzYWdlUGFydHM7CiAgICAgICAgJHJhd0hlYWRlcnMgLj0gIlxyXG4iOyAvLyBQdXQgYmFjayB0aGUgZGVsaW1pdGVyIHdlIHNwbGl0IHByZXZpb3VzbHkKICAgICAgICAkaGVhZGVyUGFydHMgPSBwcmVnX3NwbGl0KCIvXHI/XG4vIiwgJHJhd0hlYWRlcnMsIDIpOwoKICAgICAgICBpZiAoJGhlYWRlclBhcnRzID09PSBmYWxzZSB8fCBjb3VudCgkaGVhZGVyUGFydHMpICE9PSAyKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIG1lc3NhZ2U6IE1pc3Npbmcgc3RhdHVzIGxpbmUnKTsKICAgICAgICB9CgogICAgICAgIFskc3RhcnRMaW5lLCAkcmF3SGVhZGVyc10gPSAkaGVhZGVyUGFydHM7CgogICAgICAgIGlmIChwcmVnX21hdGNoKCIvKD86XkhUVFBcL3xeW0EtWl0rIFxTKyBIVFRQXC8pKFxkKyg/OlwuXGQrKT8pL2kiLCAkc3RhcnRMaW5lLCAkbWF0Y2hlcykgJiYgJG1hdGNoZXNbMV0gPT09ICcxLjAnKSB7CiAgICAgICAgICAgIC8vIEhlYWRlciBmb2xkaW5nIGlzIGRlcHJlY2F0ZWQgZm9yIEhUVFAvMS4xLCBidXQgYWxsb3dlZCBpbiBIVFRQLzEuMAogICAgICAgICAgICAkcmF3SGVhZGVycyA9IHByZWdfcmVwbGFjZShSZmM3MjMwOjpIRUFERVJfRk9MRF9SRUdFWCwgJyAnLCAkcmF3SGVhZGVycyk7CiAgICAgICAgfQoKICAgICAgICAvKiogQHZhciBhcnJheVtdICRoZWFkZXJMaW5lcyAqLwogICAgICAgICRjb3VudCA9IHByZWdfbWF0Y2hfYWxsKFJmYzcyMzA6OkhFQURFUl9SRUdFWCwgJHJhd0hlYWRlcnMsICRoZWFkZXJMaW5lcywgUFJFR19TRVRfT1JERVIpOwoKICAgICAgICAvLyBJZiB0aGVzZSBhcmVuJ3QgdGhlIHNhbWUsIHRoZW4gb25lIGxpbmUgZGlkbid0IG1hdGNoIGFuZCB0aGVyZSdzIGFuIGludmFsaWQgaGVhZGVyLgogICAgICAgIGlmICgkY291bnQgIT09IHN1YnN0cl9jb3VudCgkcmF3SGVhZGVycywgIlxuIikpIHsKICAgICAgICAgICAgLy8gRm9sZGluZyBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4yLjQKICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goUmZjNzIzMDo6SEVBREVSX0ZPTERfUkVHRVgsICRyYXdIZWFkZXJzKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgaGVhZGVyIHN5bnRheDogT2Jzb2xldGUgbGluZSBmb2xkaW5nJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGhlYWRlciBzeW50YXgnKTsKICAgICAgICB9CgogICAgICAgICRoZWFkZXJzID0gW107CgogICAgICAgIGZvcmVhY2ggKCRoZWFkZXJMaW5lcyBhcyAkaGVhZGVyTGluZSkgewogICAgICAgICAgICAkaGVhZGVyc1skaGVhZGVyTGluZVsxXV1bXSA9ICRoZWFkZXJMaW5lWzJdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ3N0YXJ0LWxpbmUnID0+ICRzdGFydExpbmUsCiAgICAgICAgICAgICdoZWFkZXJzJyA9PiAkaGVhZGVycywKICAgICAgICAgICAgJ2JvZHknID0+ICRib2R5LAogICAgICAgIF07CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdHJ1Y3RzIGEgVVJJIGZvciBhbiBIVFRQIHJlcXVlc3QgbWVzc2FnZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoICAgIFBhdGggZnJvbSB0aGUgc3RhcnQtbGluZQogICAgICogQHBhcmFtIGFycmF5ICAkaGVhZGVycyBBcnJheSBvZiBoZWFkZXJzIChlYWNoIHZhbHVlIGFuIGFycmF5KS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZVJlcXVlc3RVcmkoc3RyaW5nICRwYXRoLCBhcnJheSAkaGVhZGVycyk6IHN0cmluZwogICAgewogICAgICAgICRob3N0ID0gc2VsZjo6Z2V0SG9zdEZyb21IZWFkZXJzKCRoZWFkZXJzKTsKCiAgICAgICAgLy8gSWYgbm8gaG9zdCBpcyBmb3VuZCwgdGhlbiBhIGZ1bGwgVVJJIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZC4KICAgICAgICBpZiAoJGhvc3QgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICRwYXRoOwogICAgICAgIH0KCiAgICAgICAgJHNjaGVtZSA9IHN1YnN0cigkaG9zdCwgLTQpID09PSAnOjQ0MycgPyAnaHR0cHMnIDogJ2h0dHAnOwoKICAgICAgICByZXR1cm4gJHNjaGVtZS4nOi8vJy4kaG9zdC4nLycubHRyaW0oJHBhdGgsICcvJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGhlYWRlcnMgQXJyYXkgb2YgaGVhZGVycyAoZWFjaCB2YWx1ZSBhbiBhcnJheSkuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldEhvc3RGcm9tSGVhZGVycyhhcnJheSAkaGVhZGVycyk6ID9zdHJpbmcKICAgIHsKICAgICAgICAkaG9zdEtleSA9IGFycmF5X2ZpbHRlcihhcnJheV9rZXlzKCRoZWFkZXJzKSwgZnVuY3Rpb24gKCRrKSB7CiAgICAgICAgICAgIC8vIE51bWVyaWMgYXJyYXkga2V5cyBhcmUgY29udmVydGVkIHRvIGludCBieSBQSFAuCiAgICAgICAgICAgICRrID0gKHN0cmluZykgJGs7CgogICAgICAgICAgICByZXR1cm4gc3RydG9sb3dlcigkaykgPT09ICdob3N0JzsKICAgICAgICB9KTsKCiAgICAgICAgaWYgKCEkaG9zdEtleSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRob3N0ID0gJGhlYWRlcnNbcmVzZXQoJGhvc3RLZXkpXVswXTsKICAgICAgICBpZiAoIWlzX3N0cmluZygkaG9zdCkgfHwgUmZjNzIzMDo6cGFyc2VIb3N0SGVhZGVyKCRob3N0KSA9PT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCByZXF1ZXN0IHN0cmluZycpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRob3N0OwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzIGEgcmVxdWVzdCBtZXNzYWdlIHN0cmluZyBpbnRvIGEgcmVxdWVzdCBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2Ugc3RyaW5nLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlUmVxdWVzdChzdHJpbmcgJG1lc3NhZ2UpOiBSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgJGRhdGEgPSBzZWxmOjpwYXJzZU1lc3NhZ2UoJG1lc3NhZ2UpOwogICAgICAgICRtYXRjaGVzID0gW107CiAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXltcU10rXHMrKFthLXpBLVpdKzpcL1wvfFwvKS4qLycsICRkYXRhWydzdGFydC1saW5lJ10sICRtYXRjaGVzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCByZXF1ZXN0IHN0cmluZycpOwogICAgICAgIH0KICAgICAgICAkcGFydHMgPSBleHBsb2RlKCcgJywgJGRhdGFbJ3N0YXJ0LWxpbmUnXSwgMyk7CiAgICAgICAgJHZlcnNpb24gPSBpc3NldCgkcGFydHNbMl0pID8gZXhwbG9kZSgnLycsICRwYXJ0c1syXSlbMV0gOiAnMS4xJzsKCiAgICAgICAgJHJlcXVlc3QgPSBuZXcgUmVxdWVzdCgKICAgICAgICAgICAgJHBhcnRzWzBdLAogICAgICAgICAgICAkbWF0Y2hlc1sxXSA9PT0gJy8nID8gc2VsZjo6cGFyc2VSZXF1ZXN0VXJpKCRwYXJ0c1sxXSwgJGRhdGFbJ2hlYWRlcnMnXSkgOiAkcGFydHNbMV0sCiAgICAgICAgICAgICRkYXRhWydoZWFkZXJzJ10sCiAgICAgICAgICAgICRkYXRhWydib2R5J10sCiAgICAgICAgICAgICR2ZXJzaW9uCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRtYXRjaGVzWzFdID09PSAnLycgPyAkcmVxdWVzdCA6ICRyZXF1ZXN0LT53aXRoUmVxdWVzdFRhcmdldCgkcGFydHNbMV0pOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzIGEgcmVzcG9uc2UgbWVzc2FnZSBzdHJpbmcgaW50byBhIHJlc3BvbnNlIG9iamVjdC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtZXNzYWdlIFJlc3BvbnNlIG1lc3NhZ2Ugc3RyaW5nLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlUmVzcG9uc2Uoc3RyaW5nICRtZXNzYWdlKTogUmVzcG9uc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkZGF0YSA9IHNlbGY6OnBhcnNlTWVzc2FnZSgkbWVzc2FnZSk7CiAgICAgICAgLy8gQWNjb3JkaW5nIHRvIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMS4yCiAgICAgICAgLy8gdGhlIHNwYWNlIGJldHdlZW4gc3RhdHVzLWNvZGUgYW5kIHJlYXNvbi1waHJhc2UgaXMgcmVxdWlyZWQuIEJ1dAogICAgICAgIC8vIGJyb3dzZXJzIGFjY2VwdCByZXNwb25zZXMgd2l0aG91dCBzcGFjZSBhbmQgcmVhc29uIGFzIHdlbGwuCiAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXkhUVFBcLy4qIFswLTldezN9KCAuKnwkKS8nLCAkZGF0YVsnc3RhcnQtbGluZSddKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCByZXNwb25zZSBzdHJpbmc6ICcuJGRhdGFbJ3N0YXJ0LWxpbmUnXSk7CiAgICAgICAgfQogICAgICAgICRwYXJ0cyA9IGV4cGxvZGUoJyAnLCAkZGF0YVsnc3RhcnQtbGluZSddLCAzKTsKCiAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZSgKICAgICAgICAgICAgKGludCkgJHBhcnRzWzFdLAogICAgICAgICAgICAkZGF0YVsnaGVhZGVycyddLAogICAgICAgICAgICAkZGF0YVsnYm9keSddLAogICAgICAgICAgICBleHBsb2RlKCcvJywgJHBhcnRzWzBdKVsxXSwKICAgICAgICAgICAgJHBhcnRzWzJdID8/IG51bGwKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/MessageTrait.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBUcmFpdCBpbXBsZW1lbnRpbmcgZnVuY3Rpb25hbGl0eSBjb21tb24gdG8gcmVxdWVzdHMgYW5kIHJlc3BvbnNlcy4KICovCnRyYWl0IE1lc3NhZ2VUcmFpdAp7CiAgICAvKiogQHZhciBzdHJpbmdbXVtdIE1hcCBvZiBhbGwgcmVnaXN0ZXJlZCBoZWFkZXJzLCBhcyBvcmlnaW5hbCBuYW1lID0+IGFycmF5IG9mIHZhbHVlcyAqLwogICAgcHJpdmF0ZSAkaGVhZGVycyA9IFtdOwoKICAgIC8qKiBAdmFyIHN0cmluZ1tdIE1hcCBvZiBsb3dlcmNhc2UgaGVhZGVyIG5hbWUgPT4gb3JpZ2luYWwgbmFtZSBhdCByZWdpc3RyYXRpb24gKi8KICAgIHByaXZhdGUgJGhlYWRlck5hbWVzID0gW107CgogICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICBwcml2YXRlICRwcm90b2NvbCA9ICcxLjEnOwoKICAgIC8qKiBAdmFyIFN0cmVhbUludGVyZmFjZXxudWxsICovCiAgICBwcml2YXRlICRzdHJlYW07CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFByb3RvY29sVmVyc2lvbigpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByb3RvY29sOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhQcm90b2NvbFZlcnNpb24oJHZlcnNpb24pOiBNZXNzYWdlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCR2ZXJzaW9uKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gTWVzc2FnZUludGVyZmFjZTo6d2l0aFByb3RvY29sVmVyc2lvbigpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgc3RyaW5nLicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJHZlcnNpb24pCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnByb3RvY29sID09PSAkdmVyc2lvbikgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+cHJvdG9jb2wgPSAkdmVyc2lvbjsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcnMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmhlYWRlcnM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhc0hlYWRlcigkaGVhZGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBpc3NldCgkdGhpcy0+aGVhZGVyTmFtZXNbc3RydG9sb3dlcigkaGVhZGVyKV0pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIZWFkZXIoJGhlYWRlcik6IGFycmF5CiAgICB7CiAgICAgICAgJGhlYWRlciA9IHN0cnRvbG93ZXIoJGhlYWRlcik7CgogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmhlYWRlck5hbWVzWyRoZWFkZXJdKSkgewogICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgfQoKICAgICAgICAkaGVhZGVyID0gJHRoaXMtPmhlYWRlck5hbWVzWyRoZWFkZXJdOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmhlYWRlcnNbJGhlYWRlcl07CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlckxpbmUoJGhlYWRlcik6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBpbXBsb2RlKCcsICcsICR0aGlzLT5nZXRIZWFkZXIoJGhlYWRlcikpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhIZWFkZXIoJGhlYWRlciwgJHZhbHVlKTogTWVzc2FnZUludGVyZmFjZQogICAgewogICAgICAgICR0aGlzLT5hc3NlcnRIZWFkZXIoJGhlYWRlcik7CiAgICAgICAgJHZhbHVlcyA9IFxpc19hcnJheSgkdmFsdWUpID8gJHZhbHVlIDogWyR2YWx1ZV07CiAgICAgICAgZm9yZWFjaCAoJHZhbHVlcyBhcyAkaXRlbSkgewogICAgICAgICAgICBpZiAoIVxpc19zdHJpbmcoJGl0ZW0pICYmIChcaXNfc2NhbGFyKCRpdGVtKSB8fCAkaXRlbSA9PT0gbnVsbCkpIHsKICAgICAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyB0byBNZXNzYWdlSW50ZXJmYWNlOjp3aXRoSGVhZGVyKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZXF1aXJlcyBzdHJpbmd8c3RyaW5nW10uJywKICAgICAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJGl0ZW0pCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5ub3JtYWxpemVIZWFkZXJWYWx1ZSgkdmFsdWUpOwogICAgICAgICRub3JtYWxpemVkID0gc3RydG9sb3dlcigkaGVhZGVyKTsKCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgIGlmIChpc3NldCgkbmV3LT5oZWFkZXJOYW1lc1skbm9ybWFsaXplZF0pKSB7CiAgICAgICAgICAgIHVuc2V0KCRuZXctPmhlYWRlcnNbJG5ldy0+aGVhZGVyTmFtZXNbJG5vcm1hbGl6ZWRdXSk7CiAgICAgICAgfQogICAgICAgICRuZXctPmhlYWRlck5hbWVzWyRub3JtYWxpemVkXSA9ICRoZWFkZXI7CiAgICAgICAgJG5ldy0+aGVhZGVyc1skaGVhZGVyXSA9ICR2YWx1ZTsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEFkZGVkSGVhZGVyKCRoZWFkZXIsICR2YWx1ZSk6IE1lc3NhZ2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkdGhpcy0+YXNzZXJ0SGVhZGVyKCRoZWFkZXIpOwogICAgICAgICR2YWx1ZXMgPSBcaXNfYXJyYXkoJHZhbHVlKSA/ICR2YWx1ZSA6IFskdmFsdWVdOwogICAgICAgIGZvcmVhY2ggKCR2YWx1ZXMgYXMgJGl0ZW0pIHsKICAgICAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCRpdGVtKSAmJiAoXGlzX3NjYWxhcigkaXRlbSkgfHwgJGl0ZW0gPT09IG51bGwpKSB7CiAgICAgICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gTWVzc2FnZUludGVyZmFjZTo6d2l0aEFkZGVkSGVhZGVyKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZXF1aXJlcyBzdHJpbmd8c3RyaW5nW10uJywKICAgICAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJGl0ZW0pCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5ub3JtYWxpemVIZWFkZXJWYWx1ZSgkdmFsdWUpOwogICAgICAgICRub3JtYWxpemVkID0gc3RydG9sb3dlcigkaGVhZGVyKTsKCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgIGlmIChpc3NldCgkbmV3LT5oZWFkZXJOYW1lc1skbm9ybWFsaXplZF0pKSB7CiAgICAgICAgICAgICRoZWFkZXIgPSAkdGhpcy0+aGVhZGVyTmFtZXNbJG5vcm1hbGl6ZWRdOwogICAgICAgICAgICAkbmV3LT5oZWFkZXJzWyRoZWFkZXJdID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmhlYWRlcnNbJGhlYWRlcl0sICR2YWx1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG5ldy0+aGVhZGVyTmFtZXNbJG5vcm1hbGl6ZWRdID0gJGhlYWRlcjsKICAgICAgICAgICAgJG5ldy0+aGVhZGVyc1skaGVhZGVyXSA9ICR2YWx1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhvdXRIZWFkZXIoJGhlYWRlcik6IE1lc3NhZ2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkbm9ybWFsaXplZCA9IHN0cnRvbG93ZXIoJGhlYWRlcik7CgogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmhlYWRlck5hbWVzWyRub3JtYWxpemVkXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJGhlYWRlciA9ICR0aGlzLT5oZWFkZXJOYW1lc1skbm9ybWFsaXplZF07CgogICAgICAgICRuZXcgPSBjbG9uZSAkdGhpczsKICAgICAgICB1bnNldCgkbmV3LT5oZWFkZXJzWyRoZWFkZXJdLCAkbmV3LT5oZWFkZXJOYW1lc1skbm9ybWFsaXplZF0pOwoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Qm9keSgpOiBTdHJlYW1JbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5zdHJlYW0pIHsKICAgICAgICAgICAgJHRoaXMtPnN0cmVhbSA9IFV0aWxzOjpzdHJlYW1Gb3IoJycpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEJvZHkoU3RyZWFtSW50ZXJmYWNlICRib2R5KTogTWVzc2FnZUludGVyZmFjZQogICAgewogICAgICAgIGlmICgkYm9keSA9PT0gJHRoaXMtPnN0cmVhbSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+c3RyZWFtID0gJGJvZHk7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIChzdHJpbmd8c3RyaW5nW10pW10gJGhlYWRlcnMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZXRIZWFkZXJzKGFycmF5ICRoZWFkZXJzKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5oZWFkZXJOYW1lcyA9ICR0aGlzLT5oZWFkZXJzID0gW107CiAgICAgICAgZm9yZWFjaCAoJGhlYWRlcnMgYXMgJGhlYWRlciA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgLy8gTnVtZXJpYyBhcnJheSBrZXlzIGFyZSBjb252ZXJ0ZWQgdG8gaW50IGJ5IFBIUC4KICAgICAgICAgICAgJGhlYWRlciA9IChzdHJpbmcpICRoZWFkZXI7CgogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0SGVhZGVyKCRoZWFkZXIpOwogICAgICAgICAgICAkdmFsdWVzID0gXGlzX2FycmF5KCR2YWx1ZSkgPyAkdmFsdWUgOiBbJHZhbHVlXTsKICAgICAgICAgICAgZm9yZWFjaCAoJHZhbHVlcyBhcyAkaXRlbSkgewogICAgICAgICAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCRpdGVtKSAmJiAoXGlzX3NjYWxhcigkaXRlbSkgfHwgJGl0ZW0gPT09IG51bGwpKSB7CiAgICAgICAgICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvICVzOjpfX2NvbnN0cnVjdCgpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgc3RyaW5nfHN0cmluZ1tdLicsCiAgICAgICAgICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkaXRlbSksCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYzo6Y2xhc3MKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkdmFsdWUgPSAkdGhpcy0+bm9ybWFsaXplSGVhZGVyVmFsdWUoJHZhbHVlKTsKICAgICAgICAgICAgJG5vcm1hbGl6ZWQgPSBzdHJ0b2xvd2VyKCRoZWFkZXIpOwogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmhlYWRlck5hbWVzWyRub3JtYWxpemVkXSkpIHsKICAgICAgICAgICAgICAgICRoZWFkZXIgPSAkdGhpcy0+aGVhZGVyTmFtZXNbJG5vcm1hbGl6ZWRdOwogICAgICAgICAgICAgICAgJHRoaXMtPmhlYWRlcnNbJGhlYWRlcl0gPSBhcnJheV9tZXJnZSgkdGhpcy0+aGVhZGVyc1skaGVhZGVyXSwgJHZhbHVlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5oZWFkZXJOYW1lc1skbm9ybWFsaXplZF0gPSAkaGVhZGVyOwogICAgICAgICAgICAgICAgJHRoaXMtPmhlYWRlcnNbJGhlYWRlcl0gPSAkdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlclZhbHVlKCR2YWx1ZSk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZSkgJiYgJHZhbHVlID09PSBbXSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgYW4gZW1wdHkgYXJyYXkgYXMgYSBoZWFkZXIgdmFsdWUgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZWplY3RzIGVtcHR5IGhlYWRlciB2YWx1ZSBhcnJheXMuJwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dHJpbUFuZFZhbGlkYXRlSGVhZGVyVmFsdWVzKFskdmFsdWVdKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+dHJpbUFuZFZhbGlkYXRlSGVhZGVyVmFsdWVzKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUcmltcyB3aGl0ZXNwYWNlIGZyb20gdGhlIGhlYWRlciB2YWx1ZXMuCiAgICAgKgogICAgICogU3BhY2VzIGFuZCB0YWJzIG91Z2h0IHRvIGJlIGV4Y2x1ZGVkIGJ5IHBhcnNlcnMgd2hlbiBleHRyYWN0aW5nIHRoZSBmaWVsZCB2YWx1ZSBmcm9tIGEgaGVhZGVyIGZpZWxkLgogICAgICoKICAgICAqIGhlYWRlci1maWVsZCA9IGZpZWxkLW5hbWUgIjoiIE9XUyBmaWVsZC12YWx1ZSBPV1MKICAgICAqIE9XUyAgICAgICAgICA9ICooIFNQIC8gSFRBQiApCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkW10gJHZhbHVlcyBIZWFkZXIgdmFsdWVzCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXSBUcmltbWVkIGhlYWRlciB2YWx1ZXMKICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMi40CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdHJpbUFuZFZhbGlkYXRlSGVhZGVyVmFsdWVzKGFycmF5ICR2YWx1ZXMpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBhcnJheV9tYXAoZnVuY3Rpb24gKCR2YWx1ZSkgewogICAgICAgICAgICBpZiAoIWlzX3NjYWxhcigkdmFsdWUpICYmIG51bGwgIT09ICR2YWx1ZSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAnSGVhZGVyIHZhbHVlIG11c3QgYmUgc2NhbGFyIG9yIG51bGwgYnV0ICVzIHByb3ZpZGVkLicsCiAgICAgICAgICAgICAgICAgICAgaXNfb2JqZWN0KCR2YWx1ZSkgPyBnZXRfY2xhc3MoJHZhbHVlKSA6IGdldHR5cGUoJHZhbHVlKQogICAgICAgICAgICAgICAgKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIENvbnZlcnQgbm9uLWZpbml0ZSBmbG9hdHMgZXhwbGljaXRseSwgYXMgaW1wbGljaXQgY29lcmNpb24gb2YKICAgICAgICAgICAgLy8gTkFOIGVtaXRzIGEgd2FybmluZyBvbiBQSFAgOC41LgogICAgICAgICAgICBpZiAoaXNfZmxvYXQoJHZhbHVlKSAmJiAhaXNfZmluaXRlKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IGlzX25hbigkdmFsdWUpID8gJ05BTicgOiAoJHZhbHVlID4gMCA/ICdJTkYnIDogJy1JTkYnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRyaW1tZWQgPSB0cmltKChzdHJpbmcpICR2YWx1ZSwgIiBcdCIpOwogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0VmFsdWUoJHRyaW1tZWQpOwoKICAgICAgICAgICAgcmV0dXJuICR0cmltbWVkOwogICAgICAgIH0sIGFycmF5X3ZhbHVlcygkdmFsdWVzKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkaGVhZGVyCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYXNzZXJ0SGVhZGVyKCRoZWFkZXIpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJGhlYWRlcikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZigKICAgICAgICAgICAgICAgICdIZWFkZXIgbmFtZSBtdXN0IGJlIGEgc3RyaW5nIGJ1dCAlcyBwcm92aWRlZC4nLAogICAgICAgICAgICAgICAgaXNfb2JqZWN0KCRoZWFkZXIpID8gZ2V0X2NsYXNzKCRoZWFkZXIpIDogZ2V0dHlwZSgkaGVhZGVyKQogICAgICAgICAgICApKTsKICAgICAgICB9CgogICAgICAgIGlmICghcHJlZ19tYXRjaCgnL15bYS16QS1aMC05XCdgIyQlJiorLl5ffH4hLV0rJC9EJywgJGhlYWRlcikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICBzcHJpbnRmKCciJXMiIGlzIG5vdCB2YWxpZCBoZWFkZXIgbmFtZS4nLCAkaGVhZGVyKQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4yCiAgICAgKgogICAgICogZmllbGQtdmFsdWUgICAgPSAqKCBmaWVsZC1jb250ZW50IC8gb2JzLWZvbGQgKQogICAgICogZmllbGQtY29udGVudCAgPSBmaWVsZC12Y2hhciBbIDEqKCBTUCAvIEhUQUIgKSBmaWVsZC12Y2hhciBdCiAgICAgKiBmaWVsZC12Y2hhciAgICA9IFZDSEFSIC8gb2JzLXRleHQKICAgICAqIFZDSEFSICAgICAgICAgID0gJXgyMS03RQogICAgICogb2JzLXRleHQgICAgICAgPSAleDgwLUZGCiAgICAgKiBvYnMtZm9sZCAgICAgICA9IENSTEYgMSooIFNQIC8gSFRBQiApCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYXNzZXJ0VmFsdWUoc3RyaW5nICR2YWx1ZSk6IHZvaWQKICAgIHsKICAgICAgICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGludGVudGlvbmFsbHkgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb2JzLWZvbGQgcHJvZHVjdGlvbiwgYmVjYXVzZSBhcwogICAgICAgIC8vIHBlciBSRkMgNzIzMCMzLjIuNDoKICAgICAgICAvLwogICAgICAgIC8vIEEgc2VuZGVyIE1VU1QgTk9UIGdlbmVyYXRlIGEgbWVzc2FnZSB0aGF0IGluY2x1ZGVzCiAgICAgICAgLy8gbGluZSBmb2xkaW5nIChpLmUuLCB0aGF0IGhhcyBhbnkgZmllbGQtdmFsdWUgdGhhdCBjb250YWlucyBhIG1hdGNoIHRvCiAgICAgICAgLy8gdGhlIG9icy1mb2xkIHJ1bGUpIHVubGVzcyB0aGUgbWVzc2FnZSBpcyBpbnRlbmRlZCBmb3IgcGFja2FnaW5nCiAgICAgICAgLy8gd2l0aGluIHRoZSBtZXNzYWdlL2h0dHAgbWVkaWEgdHlwZS4KICAgICAgICAvLwogICAgICAgIC8vIENsaWVudHMgbXVzdCBub3Qgc2VuZCBhIHJlcXVlc3Qgd2l0aCBsaW5lIGZvbGRpbmcgYW5kIGEgc2VydmVyIHNlbmRpbmcgZm9sZGVkIGhlYWRlcnMgaXMKICAgICAgICAvLyBsaWtlbHkgdmVyeSByYXJlLiBMaW5lIGZvbGRpbmcgaXMgYSBmYWlybHkgb2JzY3VyZSBmZWF0dXJlIG9mIEhUVFAvMS4xIGFuZCB0aHVzIG5vdCBhY2NlcHRpbmcKICAgICAgICAvLyBmb2xkaW5nIGlzIG5vdCBsaWtlbHkgdG8gYnJlYWsgYW55IGxlZ2l0aW1hdGUgdXNlIGNhc2UuCiAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXltceDIwXHgwOVx4MjEtXHg3RVx4ODAtXHhGRl0qJC9EJywgJHZhbHVlKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgIHNwcmludGYoJyIlcyIgaXMgbm90IHZhbGlkIGhlYWRlciB2YWx1ZS4nLCAkdmFsdWUpCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/MimeType.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCmZpbmFsIGNsYXNzIE1pbWVUeXBlCnsKICAgIHByaXZhdGUgY29uc3QgTUlNRV9UWVBFUyA9IFsKICAgICAgICAnMTIzJyA9PiAnYXBwbGljYXRpb24vdm5kLmxvdHVzLTEtMi0zJywKICAgICAgICAnMWttJyA9PiAnYXBwbGljYXRpb24vdm5kLjEwMDBtaW5kcy5kZWNpc2lvbi1tb2RlbCt4bWwnLAogICAgICAgICcyMTAnID0+ICdtb2RlbC9zdGVwJywKICAgICAgICAnM2RtbCcgPT4gJ3RleHQvdm5kLmluM2QuM2RtbCcsCiAgICAgICAgJzNkcycgPT4gJ2ltYWdlL3gtM2RzJywKICAgICAgICAnM2cyJyA9PiAndmlkZW8vM2dwcDInLAogICAgICAgICczZ3AnID0+ICd2aWRlby8zZ3BwJywKICAgICAgICAnM2dwcCcgPT4gJ3ZpZGVvLzNncHAnLAogICAgICAgICczbWYnID0+ICdtb2RlbC8zbWYnLAogICAgICAgICc3eicgPT4gJ2FwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZCcsCiAgICAgICAgJzd6aXAnID0+ICdhcHBsaWNhdGlvbi94LTd6LWNvbXByZXNzZWQnLAogICAgICAgICdhYWInID0+ICdhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtYmluJywKICAgICAgICAnYWFjJyA9PiAnYXVkaW8vYWFjJywKICAgICAgICAnYWFtJyA9PiAnYXBwbGljYXRpb24veC1hdXRob3J3YXJlLW1hcCcsCiAgICAgICAgJ2FhcycgPT4gJ2FwcGxpY2F0aW9uL3gtYXV0aG9yd2FyZS1zZWcnLAogICAgICAgICdhYncnID0+ICdhcHBsaWNhdGlvbi94LWFiaXdvcmQnLAogICAgICAgICdhYycgPT4gJ2FwcGxpY2F0aW9uL3BraXgtYXR0ci1jZXJ0JywKICAgICAgICAnYWMzJyA9PiAnYXVkaW8vYWMzJywKICAgICAgICAnYWNjJyA9PiAnYXBwbGljYXRpb24vdm5kLmFtZXJpY2FuZHluYW1pY3MuYWNjJywKICAgICAgICAnYWNlJyA9PiAnYXBwbGljYXRpb24veC1hY2UtY29tcHJlc3NlZCcsCiAgICAgICAgJ2FjdScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hY3Vjb2JvbCcsCiAgICAgICAgJ2FjdXRjJyA9PiAnYXBwbGljYXRpb24vdm5kLmFjdWNvcnAnLAogICAgICAgICdhZHAnID0+ICdhdWRpby9hZHBjbScsCiAgICAgICAgJ2FkdHMnID0+ICdhdWRpby9hYWMnLAogICAgICAgICdhZXAnID0+ICdhcHBsaWNhdGlvbi92bmQuYXVkaW9ncmFwaCcsCiAgICAgICAgJ2FmbScgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC10eXBlMScsCiAgICAgICAgJ2FmcCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5pYm0ubW9kY2FwJywKICAgICAgICAnYWdlJyA9PiAnYXBwbGljYXRpb24vdm5kLmFnZScsCiAgICAgICAgJ2FoZWFkJyA9PiAnYXBwbGljYXRpb24vdm5kLmFoZWFkLnNwYWNlJywKICAgICAgICAnYWknID0+ICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JywKICAgICAgICAnYWlmJyA9PiAnYXVkaW8veC1haWZmJywKICAgICAgICAnYWlmYycgPT4gJ2F1ZGlvL3gtYWlmZicsCiAgICAgICAgJ2FpZmYnID0+ICdhdWRpby94LWFpZmYnLAogICAgICAgICdhaXInID0+ICdhcHBsaWNhdGlvbi92bmQuYWRvYmUuYWlyLWFwcGxpY2F0aW9uLWluc3RhbGxlci1wYWNrYWdlK3ppcCcsCiAgICAgICAgJ2FpdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kdmIuYWl0JywKICAgICAgICAnYW1pJyA9PiAnYXBwbGljYXRpb24vdm5kLmFtaWdhLmFtaScsCiAgICAgICAgJ2FtbCcgPT4gJ2FwcGxpY2F0aW9uL2F1dG9tYXRpb25tbC1hbWwreG1sJywKICAgICAgICAnYW1seCcgPT4gJ2FwcGxpY2F0aW9uL2F1dG9tYXRpb25tbC1hbWx4K3ppcCcsCiAgICAgICAgJ2FtcicgPT4gJ2F1ZGlvL2FtcicsCiAgICAgICAgJ2FwaycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hbmRyb2lkLnBhY2thZ2UtYXJjaGl2ZScsCiAgICAgICAgJ2FwbmcnID0+ICdpbWFnZS9hcG5nJywKICAgICAgICAnYXBwY2FjaGUnID0+ICd0ZXh0L2NhY2hlLW1hbmlmZXN0JywKICAgICAgICAnYXBwaW5zdGFsbGVyJyA9PiAnYXBwbGljYXRpb24vYXBwaW5zdGFsbGVyJywKICAgICAgICAnYXBwbGljYXRpb24nID0+ICdhcHBsaWNhdGlvbi94LW1zLWFwcGxpY2F0aW9uJywKICAgICAgICAnYXBweCcgPT4gJ2FwcGxpY2F0aW9uL2FwcHgnLAogICAgICAgICdhcHB4YnVuZGxlJyA9PiAnYXBwbGljYXRpb24vYXBweGJ1bmRsZScsCiAgICAgICAgJ2FwcicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5sb3R1cy1hcHByb2FjaCcsCiAgICAgICAgJ2FyYycgPT4gJ2FwcGxpY2F0aW9uL3gtZnJlZWFyYycsCiAgICAgICAgJ2FyaicgPT4gJ2FwcGxpY2F0aW9uL3gtYXJqJywKICAgICAgICAnYXNjJyA9PiAnYXBwbGljYXRpb24vcGdwLWtleXMnLAogICAgICAgICdhc2YnID0+ICd2aWRlby94LW1zLWFzZicsCiAgICAgICAgJ2FzbScgPT4gJ3RleHQveC1hc20nLAogICAgICAgICdhc28nID0+ICdhcHBsaWNhdGlvbi92bmQuYWNjcGFjLnNpbXBseS5hc28nLAogICAgICAgICdhc3gnID0+ICd2aWRlby94LW1zLWFzZicsCiAgICAgICAgJ2F0YycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hY3Vjb3JwJywKICAgICAgICAnYXRvbScgPT4gJ2FwcGxpY2F0aW9uL2F0b20reG1sJywKICAgICAgICAnYXRvbWNhdCcgPT4gJ2FwcGxpY2F0aW9uL2F0b21jYXQreG1sJywKICAgICAgICAnYXRvbWRlbGV0ZWQnID0+ICdhcHBsaWNhdGlvbi9hdG9tZGVsZXRlZCt4bWwnLAogICAgICAgICdhdG9tc3ZjJyA9PiAnYXBwbGljYXRpb24vYXRvbXN2Yyt4bWwnLAogICAgICAgICdhdHgnID0+ICdhcHBsaWNhdGlvbi92bmQuYW50aXguZ2FtZS1jb21wb25lbnQnLAogICAgICAgICdhdScgPT4gJ2F1ZGlvL2Jhc2ljJywKICAgICAgICAnYXZjaScgPT4gJ2ltYWdlL2F2Y2knLAogICAgICAgICdhdmNzJyA9PiAnaW1hZ2UvYXZjcycsCiAgICAgICAgJ2F2aScgPT4gJ3ZpZGVvL3gtbXN2aWRlbycsCiAgICAgICAgJ2F2aWYnID0+ICdpbWFnZS9hdmlmJywKICAgICAgICAnYXcnID0+ICdhcHBsaWNhdGlvbi9hcHBsaXh3YXJlJywKICAgICAgICAnYXpmJyA9PiAnYXBwbGljYXRpb24vdm5kLmFpcnppcC5maWxlc2VjdXJlLmF6ZicsCiAgICAgICAgJ2F6cycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5haXJ6aXAuZmlsZXNlY3VyZS5henMnLAogICAgICAgICdhenYnID0+ICdpbWFnZS92bmQuYWlyemlwLmFjY2VsZXJhdG9yLmF6dicsCiAgICAgICAgJ2F6dycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hbWF6b24uZWJvb2snLAogICAgICAgICdiMTYnID0+ICdpbWFnZS92bmQucGNvLmIxNicsCiAgICAgICAgJ2JhcnknID0+ICdtb2RlbC92bmQuYmFyeScsCiAgICAgICAgJ2JhdCcgPT4gJ2FwcGxpY2F0aW9uL3gtbXNkb3dubG9hZCcsCiAgICAgICAgJ2JjcGlvJyA9PiAnYXBwbGljYXRpb24veC1iY3BpbycsCiAgICAgICAgJ2JkZicgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC1iZGYnLAogICAgICAgICdiZG0nID0+ICdhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtK3dieG1sJywKICAgICAgICAnYmRvJyA9PiAnYXBwbGljYXRpb24vdm5kLm5hdG8uYmluZGluZ2RhdGFvYmplY3QreG1sJywKICAgICAgICAnYmRvYycgPT4gJ2FwcGxpY2F0aW9uL2Jkb2MnLAogICAgICAgICdiZWQnID0+ICdhcHBsaWNhdGlvbi92bmQucmVhbHZuYy5iZWQnLAogICAgICAgICdiaDInID0+ICdhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5c3BycycsCiAgICAgICAgJ2JpbicgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ2JsYicgPT4gJ2FwcGxpY2F0aW9uL3gtYmxvcmInLAogICAgICAgICdibGVuZCcgPT4gJ2FwcGxpY2F0aW9uL3gtYmxlbmRlcicsCiAgICAgICAgJ2Jsb3JiJyA9PiAnYXBwbGljYXRpb24veC1ibG9yYicsCiAgICAgICAgJ2JtaScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ibWknLAogICAgICAgICdibW1sJyA9PiAnYXBwbGljYXRpb24vdm5kLmJhbHNhbWlxLmJtbWwreG1sJywKICAgICAgICAnYm1wJyA9PiAnaW1hZ2UvYm1wJywKICAgICAgICAnYm9vaycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5mcmFtZW1ha2VyJywKICAgICAgICAnYm94JyA9PiAnYXBwbGljYXRpb24vdm5kLnByZXZpZXdzeXN0ZW1zLmJveCcsCiAgICAgICAgJ2JveicgPT4gJ2FwcGxpY2F0aW9uL3gtYnppcDInLAogICAgICAgICdicGsnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdicG1uJyA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAnYnJ1c2gnID0+ICdhcHBsaWNhdGlvbi92bmQucHJvY3JlYXRlLmJydXNoJywKICAgICAgICAnYnJ1c2hzZXQnID0+ICdhcHBsaWNhdGlvbi92bmQucHJvY3JlYXRlLmJydXNoc2V0JywKICAgICAgICAnYnNwJyA9PiAnbW9kZWwvdm5kLnZhbHZlLnNvdXJjZS5jb21waWxlZC1tYXAnLAogICAgICAgICdidGYnID0+ICdpbWFnZS9wcnMuYnRpZicsCiAgICAgICAgJ2J0aWYnID0+ICdpbWFnZS9wcnMuYnRpZicsCiAgICAgICAgJ2J1ZmZlcicgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ2J6JyA9PiAnYXBwbGljYXRpb24veC1iemlwJywKICAgICAgICAnYnoyJyA9PiAnYXBwbGljYXRpb24veC1iemlwMicsCiAgICAgICAgJ2MnID0+ICd0ZXh0L3gtYycsCiAgICAgICAgJ2MxMWFtYycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jbHVldHJ1c3QuY2FydG9tb2JpbGUtY29uZmlnJywKICAgICAgICAnYzExYW16JyA9PiAnYXBwbGljYXRpb24vdm5kLmNsdWV0cnVzdC5jYXJ0b21vYmlsZS1jb25maWctcGtnJywKICAgICAgICAnYzRkJyA9PiAnYXBwbGljYXRpb24vdm5kLmNsb25rLmM0Z3JvdXAnLAogICAgICAgICdjNGYnID0+ICdhcHBsaWNhdGlvbi92bmQuY2xvbmsuYzRncm91cCcsCiAgICAgICAgJ2M0ZycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jbG9uay5jNGdyb3VwJywKICAgICAgICAnYzRwJyA9PiAnYXBwbGljYXRpb24vdm5kLmNsb25rLmM0Z3JvdXAnLAogICAgICAgICdjNHUnID0+ICdhcHBsaWNhdGlvbi92bmQuY2xvbmsuYzRncm91cCcsCiAgICAgICAgJ2NhYicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1jYWItY29tcHJlc3NlZCcsCiAgICAgICAgJ2NhZicgPT4gJ2F1ZGlvL3gtY2FmJywKICAgICAgICAnY2FwJyA9PiAnYXBwbGljYXRpb24vdm5kLnRjcGR1bXAucGNhcCcsCiAgICAgICAgJ2NhcicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jdXJsLmNhcicsCiAgICAgICAgJ2NhdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wa2kuc2VjY2F0JywKICAgICAgICAnY2I3JyA9PiAnYXBwbGljYXRpb24veC1jYnInLAogICAgICAgICdjYmEnID0+ICdhcHBsaWNhdGlvbi94LWNicicsCiAgICAgICAgJ2NicicgPT4gJ2FwcGxpY2F0aW9uL3gtY2JyJywKICAgICAgICAnY2J0JyA9PiAnYXBwbGljYXRpb24veC1jYnInLAogICAgICAgICdjYnonID0+ICdhcHBsaWNhdGlvbi94LWNicicsCiAgICAgICAgJ2NjJyA9PiAndGV4dC94LWMnLAogICAgICAgICdjY28nID0+ICdhcHBsaWNhdGlvbi94LWNvY29hJywKICAgICAgICAnY2N0JyA9PiAnYXBwbGljYXRpb24veC1kaXJlY3RvcicsCiAgICAgICAgJ2NjeG1sJyA9PiAnYXBwbGljYXRpb24vY2N4bWwreG1sJywKICAgICAgICAnY2RiY21zZycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jb250YWN0LmNtc2cnLAogICAgICAgICdjZGYnID0+ICdhcHBsaWNhdGlvbi94LW5ldGNkZicsCiAgICAgICAgJ2NkZngnID0+ICdhcHBsaWNhdGlvbi9jZGZ4K3htbCcsCiAgICAgICAgJ2Nka2V5JyA9PiAnYXBwbGljYXRpb24vdm5kLm1lZGlhc3RhdGlvbi5jZGtleScsCiAgICAgICAgJ2NkbWlhJyA9PiAnYXBwbGljYXRpb24vY2RtaS1jYXBhYmlsaXR5JywKICAgICAgICAnY2RtaWMnID0+ICdhcHBsaWNhdGlvbi9jZG1pLWNvbnRhaW5lcicsCiAgICAgICAgJ2NkbWlkJyA9PiAnYXBwbGljYXRpb24vY2RtaS1kb21haW4nLAogICAgICAgICdjZG1pbycgPT4gJ2FwcGxpY2F0aW9uL2NkbWktb2JqZWN0JywKICAgICAgICAnY2RtaXEnID0+ICdhcHBsaWNhdGlvbi9jZG1pLXF1ZXVlJywKICAgICAgICAnY2R4JyA9PiAnY2hlbWljYWwveC1jZHgnLAogICAgICAgICdjZHhtbCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jaGVtZHJhdyt4bWwnLAogICAgICAgICdjZHknID0+ICdhcHBsaWNhdGlvbi92bmQuY2luZGVyZWxsYScsCiAgICAgICAgJ2NlcicgPT4gJ2FwcGxpY2F0aW9uL3BraXgtY2VydCcsCiAgICAgICAgJ2NmcycgPT4gJ2FwcGxpY2F0aW9uL3gtY2ZzLWNvbXByZXNzZWQnLAogICAgICAgICdjZ20nID0+ICdpbWFnZS9jZ20nLAogICAgICAgICdjaGF0JyA9PiAnYXBwbGljYXRpb24veC1jaGF0JywKICAgICAgICAnY2htJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWh0bWxoZWxwJywKICAgICAgICAnY2hydCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5rZGUua2NoYXJ0JywKICAgICAgICAnY2lmJyA9PiAnY2hlbWljYWwveC1jaWYnLAogICAgICAgICdjaWknID0+ICdhcHBsaWNhdGlvbi92bmQuYW5zZXItd2ViLWNlcnRpZmljYXRlLWlzc3VlLWluaXRpYXRpb24nLAogICAgICAgICdjaWwnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtYXJ0Z2FscnknLAogICAgICAgICdjanMnID0+ICdhcHBsaWNhdGlvbi9ub2RlJywKICAgICAgICAnY2xhJyA9PiAnYXBwbGljYXRpb24vdm5kLmNsYXltb3JlJywKICAgICAgICAnY2xhc3MnID0+ICdhcHBsaWNhdGlvbi9qYXZhLXZtJywKICAgICAgICAnY2xkJyA9PiAnbW9kZWwvdm5kLmNsZCcsCiAgICAgICAgJ2Nsa2snID0+ICdhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci5rZXlib2FyZCcsCiAgICAgICAgJ2Nsa3AnID0+ICdhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci5wYWxldHRlJywKICAgICAgICAnY2xrdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLnRlbXBsYXRlJywKICAgICAgICAnY2xrdycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLndvcmRiYW5rJywKICAgICAgICAnY2xreCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyJywKICAgICAgICAnY2xwJyA9PiAnYXBwbGljYXRpb24veC1tc2NsaXAnLAogICAgICAgICdjbWMnID0+ICdhcHBsaWNhdGlvbi92bmQuY29zbW9jYWxsZXInLAogICAgICAgICdjbWRmJyA9PiAnY2hlbWljYWwveC1jbWRmJywKICAgICAgICAnY21sJyA9PiAnY2hlbWljYWwveC1jbWwnLAogICAgICAgICdjbXAnID0+ICdhcHBsaWNhdGlvbi92bmQueWVsbG93cml2ZXItY3VzdG9tLW1lbnUnLAogICAgICAgICdjbXgnID0+ICdpbWFnZS94LWNteCcsCiAgICAgICAgJ2NvZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5yaW0uY29kJywKICAgICAgICAnY29mZmVlJyA9PiAndGV4dC9jb2ZmZWVzY3JpcHQnLAogICAgICAgICdjb20nID0+ICdhcHBsaWNhdGlvbi94LW1zZG93bmxvYWQnLAogICAgICAgICdjb25mJyA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgJ2NwaW8nID0+ICdhcHBsaWNhdGlvbi94LWNwaW8nLAogICAgICAgICdjcGwnID0+ICdhcHBsaWNhdGlvbi9jcGwreG1sJywKICAgICAgICAnY3BwJyA9PiAndGV4dC94LWMnLAogICAgICAgICdjcHQnID0+ICdhcHBsaWNhdGlvbi9tYWMtY29tcGFjdHBybycsCiAgICAgICAgJ2NyZCcgPT4gJ2FwcGxpY2F0aW9uL3gtbXNjYXJkZmlsZScsCiAgICAgICAgJ2NybCcgPT4gJ2FwcGxpY2F0aW9uL3BraXgtY3JsJywKICAgICAgICAnY3J0JyA9PiAnYXBwbGljYXRpb24veC14NTA5LWNhLWNlcnQnLAogICAgICAgICdjcngnID0+ICdhcHBsaWNhdGlvbi94LWNocm9tZS1leHRlbnNpb24nLAogICAgICAgICdjcnlwdG9ub3RlJyA9PiAnYXBwbGljYXRpb24vdm5kLnJpZy5jcnlwdG9ub3RlJywKICAgICAgICAnY3NoJyA9PiAnYXBwbGljYXRpb24veC1jc2gnLAogICAgICAgICdjc2wnID0+ICdhcHBsaWNhdGlvbi92bmQuY2l0YXRpb25zdHlsZXMuc3R5bGUreG1sJywKICAgICAgICAnY3NtbCcgPT4gJ2NoZW1pY2FsL3gtY3NtbCcsCiAgICAgICAgJ2NzcCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jb21tb25zcGFjZScsCiAgICAgICAgJ2NzcicgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ2NzcycgPT4gJ3RleHQvY3NzJywKICAgICAgICAnY3N0JyA9PiAnYXBwbGljYXRpb24veC1kaXJlY3RvcicsCiAgICAgICAgJ2NzdicgPT4gJ3RleHQvY3N2JywKICAgICAgICAnY3UnID0+ICdhcHBsaWNhdGlvbi9jdS1zZWVtZScsCiAgICAgICAgJ2N1cmwnID0+ICd0ZXh0L3ZuZC5jdXJsJywKICAgICAgICAnY3dsJyA9PiAnYXBwbGljYXRpb24vY3dsJywKICAgICAgICAnY3d3JyA9PiAnYXBwbGljYXRpb24vcHJzLmN3dycsCiAgICAgICAgJ2N4dCcgPT4gJ2FwcGxpY2F0aW9uL3gtZGlyZWN0b3InLAogICAgICAgICdjeHgnID0+ICd0ZXh0L3gtYycsCiAgICAgICAgJ2RhZScgPT4gJ21vZGVsL3ZuZC5jb2xsYWRhK3htbCcsCiAgICAgICAgJ2RhZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tb2JpdXMuZGFmJywKICAgICAgICAnZGFydCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kYXJ0JywKICAgICAgICAnZGF0YWxlc3MnID0+ICdhcHBsaWNhdGlvbi92bmQuZmRzbi5zZWVkJywKICAgICAgICAnZGF2bW91bnQnID0+ICdhcHBsaWNhdGlvbi9kYXZtb3VudCt4bWwnLAogICAgICAgICdkYmYnID0+ICdhcHBsaWNhdGlvbi92bmQuZGJmJywKICAgICAgICAnZGJrJyA9PiAnYXBwbGljYXRpb24vZG9jYm9vayt4bWwnLAogICAgICAgICdkY20nID0+ICdhcHBsaWNhdGlvbi9kaWNvbScsCiAgICAgICAgJ2RjbXAnID0+ICdhcHBsaWNhdGlvbi92bmQuZGNtcCt4bWwnLAogICAgICAgICdkY3InID0+ICdhcHBsaWNhdGlvbi94LWRpcmVjdG9yJywKICAgICAgICAnZGN1cmwnID0+ICd0ZXh0L3ZuZC5jdXJsLmRjdXJsJywKICAgICAgICAnZGQyJyA9PiAnYXBwbGljYXRpb24vdm5kLm9tYS5kZDIreG1sJywKICAgICAgICAnZGRkJyA9PiAnYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kZGQnLAogICAgICAgICdkZGYnID0+ICdhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtZGRmK3htbCcsCiAgICAgICAgJ2RkcycgPT4gJ2ltYWdlL3ZuZC5tcy1kZHMnLAogICAgICAgICdkZWInID0+ICdhcHBsaWNhdGlvbi94LWRlYmlhbi1wYWNrYWdlJywKICAgICAgICAnZGVmJyA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgJ2RlcGxveScgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ2RlcicgPT4gJ2FwcGxpY2F0aW9uL3gteDUwOS1jYS1jZXJ0JywKICAgICAgICAnZGZhYycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kcmVhbWZhY3RvcnknLAogICAgICAgICdkZ2MnID0+ICdhcHBsaWNhdGlvbi94LWRnYy1jb21wcmVzc2VkJywKICAgICAgICAnZGliJyA9PiAnaW1hZ2UvYm1wJywKICAgICAgICAnZGljJyA9PiAndGV4dC94LWMnLAogICAgICAgICdkaXInID0+ICdhcHBsaWNhdGlvbi94LWRpcmVjdG9yJywKICAgICAgICAnZGlzJyA9PiAnYXBwbGljYXRpb24vdm5kLm1vYml1cy5kaXMnLAogICAgICAgICdkaXNwb3NpdGlvbi1ub3RpZmljYXRpb24nID0+ICdtZXNzYWdlL2Rpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvbicsCiAgICAgICAgJ2Rpc3QnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdkaXN0eicgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ2RqdicgPT4gJ2ltYWdlL3ZuZC5kanZ1JywKICAgICAgICAnZGp2dScgPT4gJ2ltYWdlL3ZuZC5kanZ1JywKICAgICAgICAnZGxsJyA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAnZG1nJyA9PiAnYXBwbGljYXRpb24veC1hcHBsZS1kaXNraW1hZ2UnLAogICAgICAgICdkbW4nID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdkbXAnID0+ICdhcHBsaWNhdGlvbi92bmQudGNwZHVtcC5wY2FwJywKICAgICAgICAnZG1zJyA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAnZG5hJyA9PiAnYXBwbGljYXRpb24vdm5kLmRuYScsCiAgICAgICAgJ2RuZycgPT4gJ2ltYWdlL3gtYWRvYmUtZG5nJywKICAgICAgICAnZG9jJyA9PiAnYXBwbGljYXRpb24vbXN3b3JkJywKICAgICAgICAnZG9jbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy13b3JkLmRvY3VtZW50Lm1hY3JvZW5hYmxlZC4xMicsCiAgICAgICAgJ2RvY3gnID0+ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsCiAgICAgICAgJ2RvdCcgPT4gJ2FwcGxpY2F0aW9uL21zd29yZCcsCiAgICAgICAgJ2RvdG0nID0+ICdhcHBsaWNhdGlvbi92bmQubXMtd29yZC50ZW1wbGF0ZS5tYWNyb2VuYWJsZWQuMTInLAogICAgICAgICdkb3R4JyA9PiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwudGVtcGxhdGUnLAogICAgICAgICdkcCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vc2dpLmRwJywKICAgICAgICAnZHBnJyA9PiAnYXBwbGljYXRpb24vdm5kLmRwZ3JhcGgnLAogICAgICAgICdkcHgnID0+ICdpbWFnZS9kcHgnLAogICAgICAgICdkcmEnID0+ICdhdWRpby92bmQuZHJhJywKICAgICAgICAnZHJsZScgPT4gJ2ltYWdlL2RpY29tLXJsZScsCiAgICAgICAgJ2RybScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wcm9jcmVhdGUuZHJlYW0nLAogICAgICAgICdkc2MnID0+ICd0ZXh0L3Bycy5saW5lcy50YWcnLAogICAgICAgICdkc3NjJyA9PiAnYXBwbGljYXRpb24vZHNzYytkZXInLAogICAgICAgICdkc3QnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdkdGInID0+ICdhcHBsaWNhdGlvbi94LWR0Ym9vayt4bWwnLAogICAgICAgICdkdGQnID0+ICdhcHBsaWNhdGlvbi94bWwtZHRkJywKICAgICAgICAnZHRzJyA9PiAnYXVkaW8vdm5kLmR0cycsCiAgICAgICAgJ2R0c2hkJyA9PiAnYXVkaW8vdm5kLmR0cy5oZCcsCiAgICAgICAgJ2R1bXAnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdkdmInID0+ICd2aWRlby92bmQuZHZiLmZpbGUnLAogICAgICAgICdkdmknID0+ICdhcHBsaWNhdGlvbi94LWR2aScsCiAgICAgICAgJ2R3ZCcgPT4gJ2FwcGxpY2F0aW9uL2F0c2MtZHdkK3htbCcsCiAgICAgICAgJ2R3ZicgPT4gJ21vZGVsL3ZuZC5kd2YnLAogICAgICAgICdkd2cnID0+ICdpbWFnZS92bmQuZHdnJywKICAgICAgICAnZHhmJyA9PiAnaW1hZ2Uvdm5kLmR4ZicsCiAgICAgICAgJ2R4cCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zcG90ZmlyZS5keHAnLAogICAgICAgICdkeHInID0+ICdhcHBsaWNhdGlvbi94LWRpcmVjdG9yJywKICAgICAgICAnZWFyJyA9PiAnYXBwbGljYXRpb24vamF2YS1hcmNoaXZlJywKICAgICAgICAnZWNlbHA0ODAwJyA9PiAnYXVkaW8vdm5kLm51ZXJhLmVjZWxwNDgwMCcsCiAgICAgICAgJ2VjZWxwNzQ3MCcgPT4gJ2F1ZGlvL3ZuZC5udWVyYS5lY2VscDc0NzAnLAogICAgICAgICdlY2VscDk2MDAnID0+ICdhdWRpby92bmQubnVlcmEuZWNlbHA5NjAwJywKICAgICAgICAnZWNtYScgPT4gJ2FwcGxpY2F0aW9uL2VjbWFzY3JpcHQnLAogICAgICAgICdlZG0nID0+ICdhcHBsaWNhdGlvbi92bmQubm92YWRpZ20uZWRtJywKICAgICAgICAnZWR4JyA9PiAnYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmVkeCcsCiAgICAgICAgJ2VmaWYnID0+ICdhcHBsaWNhdGlvbi92bmQucGljc2VsJywKICAgICAgICAnZWk2JyA9PiAnYXBwbGljYXRpb24vdm5kLnBnLm9zYXNsaScsCiAgICAgICAgJ2VsYycgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ2VtZicgPT4gJ2ltYWdlL2VtZicsCiAgICAgICAgJ2VtbCcgPT4gJ21lc3NhZ2UvcmZjODIyJywKICAgICAgICAnZW1tYScgPT4gJ2FwcGxpY2F0aW9uL2VtbWEreG1sJywKICAgICAgICAnZW1vdGlvbm1sJyA9PiAnYXBwbGljYXRpb24vZW1vdGlvbm1sK3htbCcsCiAgICAgICAgJ2VteicgPT4gJ2FwcGxpY2F0aW9uL3gtbXNtZXRhZmlsZScsCiAgICAgICAgJ2VvbCcgPT4gJ2F1ZGlvL3ZuZC5kaWdpdGFsLXdpbmRzJywKICAgICAgICAnZW90JyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnLAogICAgICAgICdlcHMnID0+ICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JywKICAgICAgICAnZXB1YicgPT4gJ2FwcGxpY2F0aW9uL2VwdWIremlwJywKICAgICAgICAnZXMzJyA9PiAnYXBwbGljYXRpb24vdm5kLmVzemlnbm8zK3htbCcsCiAgICAgICAgJ2VzYScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vc2dpLnN1YnN5c3RlbScsCiAgICAgICAgJ2VzZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5lcHNvbi5lc2YnLAogICAgICAgICdldDMnID0+ICdhcHBsaWNhdGlvbi92bmQuZXN6aWdubzMreG1sJywKICAgICAgICAnZXR4JyA9PiAndGV4dC94LXNldGV4dCcsCiAgICAgICAgJ2V2YScgPT4gJ2FwcGxpY2F0aW9uL3gtZXZhJywKICAgICAgICAnZXZ5JyA9PiAnYXBwbGljYXRpb24veC1lbnZveScsCiAgICAgICAgJ2V4ZScgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ2V4aScgPT4gJ2FwcGxpY2F0aW9uL2V4aScsCiAgICAgICAgJ2V4cCcgPT4gJ2FwcGxpY2F0aW9uL2V4cHJlc3MnLAogICAgICAgICdleHInID0+ICdpbWFnZS9hY2VzJywKICAgICAgICAnZXh0JyA9PiAnYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmV4dCcsCiAgICAgICAgJ2V6JyA9PiAnYXBwbGljYXRpb24vYW5kcmV3LWluc2V0JywKICAgICAgICAnZXoyJyA9PiAnYXBwbGljYXRpb24vdm5kLmV6cGl4LWFsYnVtJywKICAgICAgICAnZXozJyA9PiAnYXBwbGljYXRpb24vdm5kLmV6cGl4LXBhY2thZ2UnLAogICAgICAgICdmJyA9PiAndGV4dC94LWZvcnRyYW4nLAogICAgICAgICdmNHYnID0+ICd2aWRlby9tcDQnLAogICAgICAgICdmNzcnID0+ICd0ZXh0L3gtZm9ydHJhbicsCiAgICAgICAgJ2Y5MCcgPT4gJ3RleHQveC1mb3J0cmFuJywKICAgICAgICAnZmFjdGknID0+ICdpbWFnZS92bmQuYmxvY2tmYWN0LmZhY3RpJywKICAgICAgICAnZmJzJyA9PiAnaW1hZ2Uvdm5kLmZhc3RiaWRzaGVldCcsCiAgICAgICAgJ2ZieCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hdXRvZGVzay5mYngnLAogICAgICAgICdmY2R0JyA9PiAnYXBwbGljYXRpb24vdm5kLmFkb2JlLmZvcm1zY2VudHJhbC5mY2R0JywKICAgICAgICAnZmNzJyA9PiAnYXBwbGljYXRpb24vdm5kLmlzYWMuZmNzJywKICAgICAgICAnZmRmJyA9PiAnYXBwbGljYXRpb24vZmRmJywKICAgICAgICAnZmR0JyA9PiAnYXBwbGljYXRpb24vZmR0K3htbCcsCiAgICAgICAgJ2ZlX2xhdW5jaCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kZW5vdm8uZmNzZWxheW91dC1saW5rJywKICAgICAgICAnZmc1JyA9PiAnYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXNncCcsCiAgICAgICAgJ2ZnZCcgPT4gJ2FwcGxpY2F0aW9uL3gtZGlyZWN0b3InLAogICAgICAgICdmaCcgPT4gJ2ltYWdlL3gtZnJlZWhhbmQnLAogICAgICAgICdmaDQnID0+ICdpbWFnZS94LWZyZWVoYW5kJywKICAgICAgICAnZmg1JyA9PiAnaW1hZ2UveC1mcmVlaGFuZCcsCiAgICAgICAgJ2ZoNycgPT4gJ2ltYWdlL3gtZnJlZWhhbmQnLAogICAgICAgICdmaGMnID0+ICdpbWFnZS94LWZyZWVoYW5kJywKICAgICAgICAnZmlnJyA9PiAnYXBwbGljYXRpb24veC14ZmlnJywKICAgICAgICAnZml0cycgPT4gJ2ltYWdlL2ZpdHMnLAogICAgICAgICdmbGFjJyA9PiAnYXVkaW8veC1mbGFjJywKICAgICAgICAnZmxpJyA9PiAndmlkZW8veC1mbGknLAogICAgICAgICdmbG8nID0+ICdhcHBsaWNhdGlvbi92bmQubWljcm9ncmFmeC5mbG8nLAogICAgICAgICdmbHYnID0+ICd2aWRlby94LWZsdicsCiAgICAgICAgJ2ZsdycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5rZGUua2l2aW8nLAogICAgICAgICdmbHgnID0+ICd0ZXh0L3ZuZC5mbWkuZmxleHN0b3InLAogICAgICAgICdmbHknID0+ICd0ZXh0L3ZuZC5mbHknLAogICAgICAgICdmbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5mcmFtZW1ha2VyJywKICAgICAgICAnZm5jJyA9PiAnYXBwbGljYXRpb24vdm5kLmZyb2dhbnMuZm5jJywKICAgICAgICAnZm8nID0+ICdhcHBsaWNhdGlvbi92bmQuc29mdHdhcmU2MDIuZmlsbGVyLmZvcm0reG1sJywKICAgICAgICAnZm9yJyA9PiAndGV4dC94LWZvcnRyYW4nLAogICAgICAgICdmcHgnID0+ICdpbWFnZS92bmQuZnB4JywKICAgICAgICAnZnJhbWUnID0+ICdhcHBsaWNhdGlvbi92bmQuZnJhbWVtYWtlcicsCiAgICAgICAgJ2ZzYycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5mc2Mud2VibGF1bmNoJywKICAgICAgICAnZnN0JyA9PiAnaW1hZ2Uvdm5kLmZzdCcsCiAgICAgICAgJ2Z0YycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5mbHV4dGltZS5jbGlwJywKICAgICAgICAnZnRpJyA9PiAnYXBwbGljYXRpb24vdm5kLmFuc2VyLXdlYi1mdW5kcy10cmFuc2Zlci1pbml0aWF0aW9uJywKICAgICAgICAnZnZ0JyA9PiAndmlkZW8vdm5kLmZ2dCcsCiAgICAgICAgJ2Z4cCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hZG9iZS5meHAnLAogICAgICAgICdmeHBsJyA9PiAnYXBwbGljYXRpb24vdm5kLmFkb2JlLmZ4cCcsCiAgICAgICAgJ2Z6cycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5mdXp6eXNoZWV0JywKICAgICAgICAnZzJ3JyA9PiAnYXBwbGljYXRpb24vdm5kLmdlb3BsYW4nLAogICAgICAgICdnMycgPT4gJ2ltYWdlL2czZmF4JywKICAgICAgICAnZzN3JyA9PiAnYXBwbGljYXRpb24vdm5kLmdlb3NwYWNlJywKICAgICAgICAnZ2FjJyA9PiAnYXBwbGljYXRpb24vdm5kLmdyb292ZS1hY2NvdW50JywKICAgICAgICAnZ2FtJyA9PiAnYXBwbGljYXRpb24veC10YWRzJywKICAgICAgICAnZ2JyJyA9PiAnYXBwbGljYXRpb24vcnBraS1naG9zdGJ1c3RlcnMnLAogICAgICAgICdnY2EnID0+ICdhcHBsaWNhdGlvbi94LWdjYS1jb21wcmVzc2VkJywKICAgICAgICAnZ2RsJyA9PiAnbW9kZWwvdm5kLmdkbCcsCiAgICAgICAgJ2dkb2MnID0+ICdhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuZG9jdW1lbnQnLAogICAgICAgICdnZHJhdycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5kcmF3aW5nJywKICAgICAgICAnZ2VkJyA9PiAndGV4dC92bmQuZmFtaWx5c2VhcmNoLmdlZGNvbScsCiAgICAgICAgJ2dlbycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5keW5hZ2VvJywKICAgICAgICAnZ2VvanNvbicgPT4gJ2FwcGxpY2F0aW9uL2dlbytqc29uJywKICAgICAgICAnZ2V4JyA9PiAnYXBwbGljYXRpb24vdm5kLmdlb21ldHJ5LWV4cGxvcmVyJywKICAgICAgICAnZ2Zvcm0nID0+ICdhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuZm9ybScsCiAgICAgICAgJ2dnYicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS5maWxlJywKICAgICAgICAnZ2dzJyA9PiAnYXBwbGljYXRpb24vdm5kLmdlb2dlYnJhLnNsaWRlcycsCiAgICAgICAgJ2dndCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS50b29sJywKICAgICAgICAnZ2hmJyA9PiAnYXBwbGljYXRpb24vdm5kLmdyb292ZS1oZWxwJywKICAgICAgICAnZ2lmJyA9PiAnaW1hZ2UvZ2lmJywKICAgICAgICAnZ2ltJyA9PiAnYXBwbGljYXRpb24vdm5kLmdyb292ZS1pZGVudGl0eS1tZXNzYWdlJywKICAgICAgICAnZ2phbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5qYW0nLAogICAgICAgICdnbGInID0+ICdtb2RlbC9nbHRmLWJpbmFyeScsCiAgICAgICAgJ2dsdGYnID0+ICdtb2RlbC9nbHRmK2pzb24nLAogICAgICAgICdnbWFwJyA9PiAnYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLm1hcCcsCiAgICAgICAgJ2dtbCcgPT4gJ2FwcGxpY2F0aW9uL2dtbCt4bWwnLAogICAgICAgICdnbXgnID0+ICdhcHBsaWNhdGlvbi92bmQuZ214JywKICAgICAgICAnZ251bWVyaWMnID0+ICdhcHBsaWNhdGlvbi94LWdudW1lcmljJywKICAgICAgICAnZ3BoJyA9PiAnYXBwbGljYXRpb24vdm5kLmZsb2dyYXBoaXQnLAogICAgICAgICdncHgnID0+ICdhcHBsaWNhdGlvbi9ncHgreG1sJywKICAgICAgICAnZ3FmJyA9PiAnYXBwbGljYXRpb24vdm5kLmdyYWZlcScsCiAgICAgICAgJ2dxcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ncmFmZXEnLAogICAgICAgICdncmFtJyA9PiAnYXBwbGljYXRpb24vc3JncycsCiAgICAgICAgJ2dyYW1wcycgPT4gJ2FwcGxpY2F0aW9uL3gtZ3JhbXBzLXhtbCcsCiAgICAgICAgJ2dyZScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nZW9tZXRyeS1leHBsb3JlcicsCiAgICAgICAgJ2dydicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaW5qZWN0b3InLAogICAgICAgICdncnhtbCcgPT4gJ2FwcGxpY2F0aW9uL3NyZ3MreG1sJywKICAgICAgICAnZ3NjcmlwdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5zY3JpcHQnLAogICAgICAgICdnc2YnID0+ICdhcHBsaWNhdGlvbi94LWZvbnQtZ2hvc3RzY3JpcHQnLAogICAgICAgICdnc2hlZXQnID0+ICdhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuc3ByZWFkc2hlZXQnLAogICAgICAgICdnc2l0ZScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5zaXRlJywKICAgICAgICAnZ3NsaWRlcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5wcmVzZW50YXRpb24nLAogICAgICAgICdndGFyJyA9PiAnYXBwbGljYXRpb24veC1ndGFyJywKICAgICAgICAnZ3RtJyA9PiAnYXBwbGljYXRpb24vdm5kLmdyb292ZS10b29sLW1lc3NhZ2UnLAogICAgICAgICdndHcnID0+ICdtb2RlbC92bmQuZ3R3JywKICAgICAgICAnZ3YnID0+ICd0ZXh0L3ZuZC5ncmFwaHZpeicsCiAgICAgICAgJ2d4ZicgPT4gJ2FwcGxpY2F0aW9uL2d4ZicsCiAgICAgICAgJ2d4dCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nZW9uZXh0JywKICAgICAgICAnZ3onID0+ICdhcHBsaWNhdGlvbi9nemlwJywKICAgICAgICAnZ3ppcCcgPT4gJ2FwcGxpY2F0aW9uL2d6aXAnLAogICAgICAgICdoJyA9PiAndGV4dC94LWMnLAogICAgICAgICdoMjYxJyA9PiAndmlkZW8vaDI2MScsCiAgICAgICAgJ2gyNjMnID0+ICd2aWRlby9oMjYzJywKICAgICAgICAnaDI2NCcgPT4gJ3ZpZGVvL2gyNjQnLAogICAgICAgICdoYWwnID0+ICdhcHBsaWNhdGlvbi92bmQuaGFsK3htbCcsCiAgICAgICAgJ2hiY2knID0+ICdhcHBsaWNhdGlvbi92bmQuaGJjaScsCiAgICAgICAgJ2hicycgPT4gJ3RleHQveC1oYW5kbGViYXJzLXRlbXBsYXRlJywKICAgICAgICAnaGRkJyA9PiAnYXBwbGljYXRpb24veC12aXJ0dWFsYm94LWhkZCcsCiAgICAgICAgJ2hkZicgPT4gJ2FwcGxpY2F0aW9uL3gtaGRmJywKICAgICAgICAnaGVpYycgPT4gJ2ltYWdlL2hlaWMnLAogICAgICAgICdoZWljcycgPT4gJ2ltYWdlL2hlaWMtc2VxdWVuY2UnLAogICAgICAgICdoZWlmJyA9PiAnaW1hZ2UvaGVpZicsCiAgICAgICAgJ2hlaWZzJyA9PiAnaW1hZ2UvaGVpZi1zZXF1ZW5jZScsCiAgICAgICAgJ2hlajInID0+ICdpbWFnZS9oZWoyaycsCiAgICAgICAgJ2hlbGQnID0+ICdhcHBsaWNhdGlvbi9hdHNjLWhlbGQreG1sJywKICAgICAgICAnaGgnID0+ICd0ZXh0L3gtYycsCiAgICAgICAgJ2hqc29uJyA9PiAnYXBwbGljYXRpb24vaGpzb24nLAogICAgICAgICdobHAnID0+ICdhcHBsaWNhdGlvbi93aW5obHAnLAogICAgICAgICdocGdsJyA9PiAnYXBwbGljYXRpb24vdm5kLmhwLWhwZ2wnLAogICAgICAgICdocGlkJyA9PiAnYXBwbGljYXRpb24vdm5kLmhwLWhwaWQnLAogICAgICAgICdocHMnID0+ICdhcHBsaWNhdGlvbi92bmQuaHAtaHBzJywKICAgICAgICAnaHF4JyA9PiAnYXBwbGljYXRpb24vbWFjLWJpbmhleDQwJywKICAgICAgICAnaHRjJyA9PiAndGV4dC94LWNvbXBvbmVudCcsCiAgICAgICAgJ2h0a2UnID0+ICdhcHBsaWNhdGlvbi92bmQua2VuYW1lYWFwcCcsCiAgICAgICAgJ2h0bScgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgJ2h0bWwnID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICdodmQnID0+ICdhcHBsaWNhdGlvbi92bmQueWFtYWhhLmh2LWRpYycsCiAgICAgICAgJ2h2cCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtdm9pY2UnLAogICAgICAgICdodnMnID0+ICdhcHBsaWNhdGlvbi92bmQueWFtYWhhLmh2LXNjcmlwdCcsCiAgICAgICAgJ2kyZycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5pbnRlcmdlbycsCiAgICAgICAgJ2ljYycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5pY2Nwcm9maWxlJywKICAgICAgICAnaWNlJyA9PiAneC1jb25mZXJlbmNlL3gtY29vbHRhbGsnLAogICAgICAgICdpY20nID0+ICdhcHBsaWNhdGlvbi92bmQuaWNjcHJvZmlsZScsCiAgICAgICAgJ2ljbycgPT4gJ2ltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbicsCiAgICAgICAgJ2ljcycgPT4gJ3RleHQvY2FsZW5kYXInLAogICAgICAgICdpZWYnID0+ICdpbWFnZS9pZWYnLAogICAgICAgICdpZmInID0+ICd0ZXh0L2NhbGVuZGFyJywKICAgICAgICAnaWZtJyA9PiAnYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLmZvcm1kYXRhJywKICAgICAgICAnaWdlcycgPT4gJ21vZGVsL2lnZXMnLAogICAgICAgICdpZ2wnID0+ICdhcHBsaWNhdGlvbi92bmQuaWdsb2FkZXInLAogICAgICAgICdpZ20nID0+ICdhcHBsaWNhdGlvbi92bmQuaW5zb3JzLmlnbScsCiAgICAgICAgJ2lncycgPT4gJ21vZGVsL2lnZXMnLAogICAgICAgICdpZ3gnID0+ICdhcHBsaWNhdGlvbi92bmQubWljcm9ncmFmeC5pZ3gnLAogICAgICAgICdpaWYnID0+ICdhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQuaW50ZXJjaGFuZ2UnLAogICAgICAgICdpbWcnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdpbXAnID0+ICdhcHBsaWNhdGlvbi92bmQuYWNjcGFjLnNpbXBseS5pbXAnLAogICAgICAgICdpbXMnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtaW1zJywKICAgICAgICAnaW4nID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAnaW5kZCcgPT4gJ2FwcGxpY2F0aW9uL3gtaW5kZXNpZ24nLAogICAgICAgICdpbmknID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAnaW5rJyA9PiAnYXBwbGljYXRpb24vaW5rbWwreG1sJywKICAgICAgICAnaW5rbWwnID0+ICdhcHBsaWNhdGlvbi9pbmttbCt4bWwnLAogICAgICAgICdpbnN0YWxsJyA9PiAnYXBwbGljYXRpb24veC1pbnN0YWxsLWluc3RydWN0aW9ucycsCiAgICAgICAgJ2lvdGEnID0+ICdhcHBsaWNhdGlvbi92bmQuYXN0cmFlYS1zb2Z0d2FyZS5pb3RhJywKICAgICAgICAnaXBmaXgnID0+ICdhcHBsaWNhdGlvbi9pcGZpeCcsCiAgICAgICAgJ2lwaycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5wYWNrYWdlJywKICAgICAgICAnaXB5bmInID0+ICdhcHBsaWNhdGlvbi94LWlweW5iK2pzb24nLAogICAgICAgICdpcm0nID0+ICdhcHBsaWNhdGlvbi92bmQuaWJtLnJpZ2h0cy1tYW5hZ2VtZW50JywKICAgICAgICAnaXJwJyA9PiAnYXBwbGljYXRpb24vdm5kLmlyZXBvc2l0b3J5LnBhY2thZ2UreG1sJywKICAgICAgICAnaXNvJyA9PiAnYXBwbGljYXRpb24veC1pc285NjYwLWltYWdlJywKICAgICAgICAnaXRwJyA9PiAnYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLmZvcm10ZW1wbGF0ZScsCiAgICAgICAgJ2l0cycgPT4gJ2FwcGxpY2F0aW9uL2l0cyt4bWwnLAogICAgICAgICdpdnAnID0+ICdhcHBsaWNhdGlvbi92bmQuaW1tZXJ2aXNpb24taXZwJywKICAgICAgICAnaXZ1JyA9PiAnYXBwbGljYXRpb24vdm5kLmltbWVydmlzaW9uLWl2dScsCiAgICAgICAgJ2phZCcgPT4gJ3RleHQvdm5kLnN1bi5qMm1lLmFwcC1kZXNjcmlwdG9yJywKICAgICAgICAnamFkZScgPT4gJ3RleHQvamFkZScsCiAgICAgICAgJ2phaWknID0+ICdpbWFnZS9qYWlpJywKICAgICAgICAnamFpcycgPT4gJ2ltYWdlL2phaXMnLAogICAgICAgICdqYW0nID0+ICdhcHBsaWNhdGlvbi92bmQuamFtJywKICAgICAgICAnamFyJyA9PiAnYXBwbGljYXRpb24vamF2YS1hcmNoaXZlJywKICAgICAgICAnamFyZGlmZicgPT4gJ2FwcGxpY2F0aW9uL3gtamF2YS1hcmNoaXZlLWRpZmYnLAogICAgICAgICdqYXZhJyA9PiAndGV4dC94LWphdmEtc291cmNlJywKICAgICAgICAnamZpZicgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgICdqaGMnID0+ICdpbWFnZS9qcGhjJywKICAgICAgICAnamlzcCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5qaXNwJywKICAgICAgICAnamxzJyA9PiAnaW1hZ2UvamxzJywKICAgICAgICAnamx0JyA9PiAnYXBwbGljYXRpb24vdm5kLmhwLWpseXQnLAogICAgICAgICdqbmcnID0+ICdpbWFnZS94LWpuZycsCiAgICAgICAgJ2pubHAnID0+ICdhcHBsaWNhdGlvbi94LWphdmEtam5scC1maWxlJywKICAgICAgICAnam9kYScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5qb29zdC5qb2RhLWFyY2hpdmUnLAogICAgICAgICdqcDInID0+ICdpbWFnZS9qcDInLAogICAgICAgICdqcGUnID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAnanBlZycgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgICdqcGYnID0+ICdpbWFnZS9qcHgnLAogICAgICAgICdqcGcnID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAnanBnMicgPT4gJ2ltYWdlL2pwMicsCiAgICAgICAgJ2pwZ20nID0+ICdpbWFnZS9qcG0nLAogICAgICAgICdqcGd2JyA9PiAndmlkZW8vanBlZycsCiAgICAgICAgJ2pwaCcgPT4gJ2ltYWdlL2pwaCcsCiAgICAgICAgJ2pwbScgPT4gJ2ltYWdlL2pwbScsCiAgICAgICAgJ2pweCcgPT4gJ2ltYWdlL2pweCcsCiAgICAgICAgJ2pzJyA9PiAndGV4dC9qYXZhc2NyaXB0JywKICAgICAgICAnanNvbicgPT4gJ2FwcGxpY2F0aW9uL2pzb24nLAogICAgICAgICdqc29uNScgPT4gJ2FwcGxpY2F0aW9uL2pzb241JywKICAgICAgICAnanNvbmxkJyA9PiAnYXBwbGljYXRpb24vbGQranNvbicsCiAgICAgICAgJ2pzb25tbCcgPT4gJ2FwcGxpY2F0aW9uL2pzb25tbCtqc29uJywKICAgICAgICAnanN4JyA9PiAndGV4dC9qc3gnLAogICAgICAgICdqdCcgPT4gJ21vZGVsL2p0JywKICAgICAgICAnanhsJyA9PiAnaW1hZ2UvanhsJywKICAgICAgICAnanhyJyA9PiAnaW1hZ2UvanhyJywKICAgICAgICAnanhyYScgPT4gJ2ltYWdlL2p4cmEnLAogICAgICAgICdqeHJzJyA9PiAnaW1hZ2UvanhycycsCiAgICAgICAgJ2p4cycgPT4gJ2ltYWdlL2p4cycsCiAgICAgICAgJ2p4c2MnID0+ICdpbWFnZS9qeHNjJywKICAgICAgICAnanhzaScgPT4gJ2ltYWdlL2p4c2knLAogICAgICAgICdqeHNzJyA9PiAnaW1hZ2UvanhzcycsCiAgICAgICAgJ2thcicgPT4gJ2F1ZGlvL21pZGknLAogICAgICAgICdrYXJib24nID0+ICdhcHBsaWNhdGlvbi92bmQua2RlLmthcmJvbicsCiAgICAgICAgJ2tibCcgPT4gJ2FwcGxpY2F0aW9uL2tibCt4bWwnLAogICAgICAgICdrZGInID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdrZGJ4JyA9PiAnYXBwbGljYXRpb24veC1rZWVwYXNzMicsCiAgICAgICAgJ2tleScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5rZXlub3RlJywKICAgICAgICAna2ZvJyA9PiAnYXBwbGljYXRpb24vdm5kLmtkZS5rZm9ybXVsYScsCiAgICAgICAgJ2tpYScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5raWRzcGlyYXRpb24nLAogICAgICAgICdrbWwnID0+ICdhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmttbCt4bWwnLAogICAgICAgICdrbXonID0+ICdhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmtteicsCiAgICAgICAgJ2tuZScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5raW5hcicsCiAgICAgICAgJ2tucCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5raW5hcicsCiAgICAgICAgJ2tvbicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5rZGUua29udG91cicsCiAgICAgICAgJ2twcicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5rZGUua3ByZXNlbnRlcicsCiAgICAgICAgJ2twdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5rZGUua3ByZXNlbnRlcicsCiAgICAgICAgJ2tweHgnID0+ICdhcHBsaWNhdGlvbi92bmQuZHMta2V5cG9pbnQnLAogICAgICAgICdrc3AnID0+ICdhcHBsaWNhdGlvbi92bmQua2RlLmtzcHJlYWQnLAogICAgICAgICdrdHInID0+ICdhcHBsaWNhdGlvbi92bmQua2Fob290eicsCiAgICAgICAgJ2t0eCcgPT4gJ2ltYWdlL2t0eCcsCiAgICAgICAgJ2t0eDInID0+ICdpbWFnZS9rdHgyJywKICAgICAgICAna3R6JyA9PiAnYXBwbGljYXRpb24vdm5kLmthaG9vdHonLAogICAgICAgICdrd2QnID0+ICdhcHBsaWNhdGlvbi92bmQua2RlLmt3b3JkJywKICAgICAgICAna3d0JyA9PiAnYXBwbGljYXRpb24vdm5kLmtkZS5rd29yZCcsCiAgICAgICAgJ2xhc3htbCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5sYXMubGFzK3htbCcsCiAgICAgICAgJ2xhdGV4JyA9PiAnYXBwbGljYXRpb24veC1sYXRleCcsCiAgICAgICAgJ2xiZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5sbGFtYWdyYXBoaWNzLmxpZmUtYmFsYW5jZS5kZXNrdG9wJywKICAgICAgICAnbGJlJyA9PiAnYXBwbGljYXRpb24vdm5kLmxsYW1hZ3JhcGhpY3MubGlmZS1iYWxhbmNlLmV4Y2hhbmdlK3htbCcsCiAgICAgICAgJ2xlcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5oaGUubGVzc29uLXBsYXllcicsCiAgICAgICAgJ2xlc3MnID0+ICd0ZXh0L2xlc3MnLAogICAgICAgICdsZ3InID0+ICdhcHBsaWNhdGlvbi9sZ3IreG1sJywKICAgICAgICAnbGhhJyA9PiAnYXBwbGljYXRpb24veC1semgtY29tcHJlc3NlZCcsCiAgICAgICAgJ2xpbms2NicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5yb3V0ZTY2Lmxpbms2Nit4bWwnLAogICAgICAgICdsaXN0JyA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgJ2xpc3QzODIwJyA9PiAnYXBwbGljYXRpb24vdm5kLmlibS5tb2RjYXAnLAogICAgICAgICdsaXN0YWZwJyA9PiAnYXBwbGljYXRpb24vdm5kLmlibS5tb2RjYXAnLAogICAgICAgICdsaXRjb2ZmZWUnID0+ICd0ZXh0L2NvZmZlZXNjcmlwdCcsCiAgICAgICAgJ2xuaycgPT4gJ2FwcGxpY2F0aW9uL3gtbXMtc2hvcnRjdXQnLAogICAgICAgICdsb2cnID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAnbG9zdHhtbCcgPT4gJ2FwcGxpY2F0aW9uL2xvc3QreG1sJywKICAgICAgICAnbG90dGllJyA9PiAnYXBwbGljYXRpb24vemlwK2RvdGxvdHRpZScsCiAgICAgICAgJ2xyZicgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ2xybScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1scm0nLAogICAgICAgICdsdGYnID0+ICdhcHBsaWNhdGlvbi92bmQuZnJvZ2Fucy5sdGYnLAogICAgICAgICdsdWEnID0+ICd0ZXh0L3gtbHVhJywKICAgICAgICAnbHVhYycgPT4gJ2FwcGxpY2F0aW9uL3gtbHVhLWJ5dGVjb2RlJywKICAgICAgICAnbHZwJyA9PiAnYXVkaW8vdm5kLmx1Y2VudC52b2ljZScsCiAgICAgICAgJ2x3cCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5sb3R1cy13b3JkcHJvJywKICAgICAgICAnbHpoJyA9PiAnYXBwbGljYXRpb24veC1semgtY29tcHJlc3NlZCcsCiAgICAgICAgJ20xMycgPT4gJ2FwcGxpY2F0aW9uL3gtbXNtZWRpYXZpZXcnLAogICAgICAgICdtMTQnID0+ICdhcHBsaWNhdGlvbi94LW1zbWVkaWF2aWV3JywKICAgICAgICAnbTF2JyA9PiAndmlkZW8vbXBlZycsCiAgICAgICAgJ20yMScgPT4gJ2FwcGxpY2F0aW9uL21wMjEnLAogICAgICAgICdtMmEnID0+ICdhdWRpby9tcGVnJywKICAgICAgICAnbTJ0JyA9PiAndmlkZW8vbXAydCcsCiAgICAgICAgJ20ydHMnID0+ICd2aWRlby9tcDJ0JywKICAgICAgICAnbTJ2JyA9PiAndmlkZW8vbXBlZycsCiAgICAgICAgJ20zYScgPT4gJ2F1ZGlvL21wZWcnLAogICAgICAgICdtM3UnID0+ICdhdWRpby94LW1wZWd1cmwnLAogICAgICAgICdtM3U4JyA9PiAnYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmwnLAogICAgICAgICdtNGEnID0+ICdhdWRpby9tcDQnLAogICAgICAgICdtNGInID0+ICdhdWRpby9tcDQnLAogICAgICAgICdtNHAnID0+ICdhcHBsaWNhdGlvbi9tcDQnLAogICAgICAgICdtNHMnID0+ICd2aWRlby9pc28uc2VnbWVudCcsCiAgICAgICAgJ200dScgPT4gJ3ZpZGVvL3ZuZC5tcGVndXJsJywKICAgICAgICAnbTR2JyA9PiAndmlkZW8veC1tNHYnLAogICAgICAgICdtYScgPT4gJ2FwcGxpY2F0aW9uL21hdGhlbWF0aWNhJywKICAgICAgICAnbWFkcycgPT4gJ2FwcGxpY2F0aW9uL21hZHMreG1sJywKICAgICAgICAnbWFlaScgPT4gJ2FwcGxpY2F0aW9uL21tdC1hZWkreG1sJywKICAgICAgICAnbWFnJyA9PiAnYXBwbGljYXRpb24vdm5kLmVjb3dpbi5jaGFydCcsCiAgICAgICAgJ21ha2VyJyA9PiAnYXBwbGljYXRpb24vdm5kLmZyYW1lbWFrZXInLAogICAgICAgICdtYW4nID0+ICd0ZXh0L3Ryb2ZmJywKICAgICAgICAnbWFuaWZlc3QnID0+ICd0ZXh0L2NhY2hlLW1hbmlmZXN0JywKICAgICAgICAnbWFwJyA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgJ21hcicgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ21hcmtkb3duJyA9PiAndGV4dC9tYXJrZG93bicsCiAgICAgICAgJ21hdGhtbCcgPT4gJ2FwcGxpY2F0aW9uL21hdGhtbCt4bWwnLAogICAgICAgICdtYicgPT4gJ2FwcGxpY2F0aW9uL21hdGhlbWF0aWNhJywKICAgICAgICAnbWJrJyA9PiAnYXBwbGljYXRpb24vdm5kLm1vYml1cy5tYmsnLAogICAgICAgICdtYm94JyA9PiAnYXBwbGljYXRpb24vbWJveCcsCiAgICAgICAgJ21jMScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tZWRjYWxjZGF0YScsCiAgICAgICAgJ21jZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tY2QnLAogICAgICAgICdtY3VybCcgPT4gJ3RleHQvdm5kLmN1cmwubWN1cmwnLAogICAgICAgICdtZCcgPT4gJ3RleHQvbWFya2Rvd24nLAogICAgICAgICdtZGInID0+ICdhcHBsaWNhdGlvbi94LW1zYWNjZXNzJywKICAgICAgICAnbWRpJyA9PiAnaW1hZ2Uvdm5kLm1zLW1vZGknLAogICAgICAgICdtZHgnID0+ICd0ZXh0L21keCcsCiAgICAgICAgJ21lJyA9PiAndGV4dC90cm9mZicsCiAgICAgICAgJ21lc2gnID0+ICdtb2RlbC9tZXNoJywKICAgICAgICAnbWV0YTQnID0+ICdhcHBsaWNhdGlvbi9tZXRhbGluazQreG1sJywKICAgICAgICAnbWV0YWxpbmsnID0+ICdhcHBsaWNhdGlvbi9tZXRhbGluayt4bWwnLAogICAgICAgICdtZXRzJyA9PiAnYXBwbGljYXRpb24vbWV0cyt4bWwnLAogICAgICAgICdtZm0nID0+ICdhcHBsaWNhdGlvbi92bmQubWZtcCcsCiAgICAgICAgJ21mdCcgPT4gJ2FwcGxpY2F0aW9uL3Jwa2ktbWFuaWZlc3QnLAogICAgICAgICdtZ3AnID0+ICdhcHBsaWNhdGlvbi92bmQub3NnZW8ubWFwZ3VpZGUucGFja2FnZScsCiAgICAgICAgJ21neicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wcm90ZXVzLm1hZ2F6aW5lJywKICAgICAgICAnbWh0JyA9PiAnbWVzc2FnZS9yZmM4MjInLAogICAgICAgICdtaHRtbCcgPT4gJ21lc3NhZ2UvcmZjODIyJywKICAgICAgICAnbWlkJyA9PiAnYXVkaW8vbWlkaScsCiAgICAgICAgJ21pZGknID0+ICdhdWRpby9taWRpJywKICAgICAgICAnbWllJyA9PiAnYXBwbGljYXRpb24veC1taWUnLAogICAgICAgICdtaWYnID0+ICdhcHBsaWNhdGlvbi92bmQubWlmJywKICAgICAgICAnbWltZScgPT4gJ21lc3NhZ2UvcmZjODIyJywKICAgICAgICAnbWoyJyA9PiAndmlkZW8vbWoyJywKICAgICAgICAnbWpwMicgPT4gJ3ZpZGVvL21qMicsCiAgICAgICAgJ21qcycgPT4gJ3RleHQvamF2YXNjcmlwdCcsCiAgICAgICAgJ21rM2QnID0+ICd2aWRlby9tYXRyb3NrYS0zZCcsCiAgICAgICAgJ21rYScgPT4gJ2F1ZGlvL21hdHJvc2thJywKICAgICAgICAnbWtkJyA9PiAndGV4dC94LW1hcmtkb3duJywKICAgICAgICAnbWtzJyA9PiAndmlkZW8veC1tYXRyb3NrYScsCiAgICAgICAgJ21rdicgPT4gJ3ZpZGVvL21hdHJvc2thJywKICAgICAgICAnbWxwJyA9PiAnYXBwbGljYXRpb24vdm5kLmRvbGJ5Lm1scCcsCiAgICAgICAgJ21tZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jaGlwbnV0cy5rYXJhb2tlLW1tZCcsCiAgICAgICAgJ21tZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zbWFmJywKICAgICAgICAnbW1sJyA9PiAndGV4dC9tYXRobWwnLAogICAgICAgICdtbXInID0+ICdpbWFnZS92bmQuZnVqaXhlcm94LmVkbWljcy1tbXInLAogICAgICAgICdtbmcnID0+ICd2aWRlby94LW1uZycsCiAgICAgICAgJ21ueScgPT4gJ2FwcGxpY2F0aW9uL3gtbXNtb25leScsCiAgICAgICAgJ21vYmknID0+ICdhcHBsaWNhdGlvbi94LW1vYmlwb2NrZXQtZWJvb2snLAogICAgICAgICdtb2RzJyA9PiAnYXBwbGljYXRpb24vbW9kcyt4bWwnLAogICAgICAgICdtb3YnID0+ICd2aWRlby9xdWlja3RpbWUnLAogICAgICAgICdtb3ZpZScgPT4gJ3ZpZGVvL3gtc2dpLW1vdmllJywKICAgICAgICAnbXAyJyA9PiAnYXVkaW8vbXBlZycsCiAgICAgICAgJ21wMjEnID0+ICdhcHBsaWNhdGlvbi9tcDIxJywKICAgICAgICAnbXAyYScgPT4gJ2F1ZGlvL21wZWcnLAogICAgICAgICdtcDMnID0+ICdhdWRpby9tcGVnJywKICAgICAgICAnbXA0JyA9PiAndmlkZW8vbXA0JywKICAgICAgICAnbXA0YScgPT4gJ2F1ZGlvL21wNCcsCiAgICAgICAgJ21wNHMnID0+ICdhcHBsaWNhdGlvbi9tcDQnLAogICAgICAgICdtcDR2JyA9PiAndmlkZW8vbXA0JywKICAgICAgICAnbXBjJyA9PiAnYXBwbGljYXRpb24vdm5kLm1vcGh1bi5jZXJ0aWZpY2F0ZScsCiAgICAgICAgJ21wZCcgPT4gJ2FwcGxpY2F0aW9uL2Rhc2greG1sJywKICAgICAgICAnbXBlJyA9PiAndmlkZW8vbXBlZycsCiAgICAgICAgJ21wZWcnID0+ICd2aWRlby9tcGVnJywKICAgICAgICAnbXBmJyA9PiAnYXBwbGljYXRpb24vbWVkaWEtcG9saWN5LWRhdGFzZXQreG1sJywKICAgICAgICAnbXBnJyA9PiAndmlkZW8vbXBlZycsCiAgICAgICAgJ21wZzQnID0+ICd2aWRlby9tcDQnLAogICAgICAgICdtcGdhJyA9PiAnYXVkaW8vbXBlZycsCiAgICAgICAgJ21wa2cnID0+ICdhcHBsaWNhdGlvbi92bmQuYXBwbGUuaW5zdGFsbGVyK3htbCcsCiAgICAgICAgJ21wbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ibHVlaWNlLm11bHRpcGFzcycsCiAgICAgICAgJ21wbicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tb3BodW4uYXBwbGljYXRpb24nLAogICAgICAgICdtcHAnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtcHJvamVjdCcsCiAgICAgICAgJ21wdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wcm9qZWN0JywKICAgICAgICAnbXB5JyA9PiAnYXBwbGljYXRpb24vdm5kLmlibS5taW5pcGF5JywKICAgICAgICAnbXF5JyA9PiAnYXBwbGljYXRpb24vdm5kLm1vYml1cy5tcXknLAogICAgICAgICdtcmMnID0+ICdhcHBsaWNhdGlvbi9tYXJjJywKICAgICAgICAnbXJjeCcgPT4gJ2FwcGxpY2F0aW9uL21hcmN4bWwreG1sJywKICAgICAgICAnbXMnID0+ICd0ZXh0L3Ryb2ZmJywKICAgICAgICAnbXNjbWwnID0+ICdhcHBsaWNhdGlvbi9tZWRpYXNlcnZlcmNvbnRyb2wreG1sJywKICAgICAgICAnbXNlZWQnID0+ICdhcHBsaWNhdGlvbi92bmQuZmRzbi5tc2VlZCcsCiAgICAgICAgJ21zZXEnID0+ICdhcHBsaWNhdGlvbi92bmQubXNlcScsCiAgICAgICAgJ21zZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5lcHNvbi5tc2YnLAogICAgICAgICdtc2cnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtb3V0bG9vaycsCiAgICAgICAgJ21zaCcgPT4gJ21vZGVsL21lc2gnLAogICAgICAgICdtc2knID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdtc2l4JyA9PiAnYXBwbGljYXRpb24vbXNpeCcsCiAgICAgICAgJ21zaXhidW5kbGUnID0+ICdhcHBsaWNhdGlvbi9tc2l4YnVuZGxlJywKICAgICAgICAnbXNsJyA9PiAnYXBwbGljYXRpb24vdm5kLm1vYml1cy5tc2wnLAogICAgICAgICdtc20nID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdtc3AnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdtc3R5JyA9PiAnYXBwbGljYXRpb24vdm5kLm11dmVlLnN0eWxlJywKICAgICAgICAnbXRsJyA9PiAnbW9kZWwvbXRsJywKICAgICAgICAnbXRzJyA9PiAndmlkZW8vbXAydCcsCiAgICAgICAgJ211cycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tdXNpY2lhbicsCiAgICAgICAgJ211c2QnID0+ICdhcHBsaWNhdGlvbi9tbXQtdXNkK3htbCcsCiAgICAgICAgJ211c2ljeG1sJyA9PiAnYXBwbGljYXRpb24vdm5kLnJlY29yZGFyZS5tdXNpY3htbCt4bWwnLAogICAgICAgICdtdmInID0+ICdhcHBsaWNhdGlvbi94LW1zbWVkaWF2aWV3JywKICAgICAgICAnbXZ0JyA9PiAnYXBwbGljYXRpb24vdm5kLm1hcGJveC12ZWN0b3ItdGlsZScsCiAgICAgICAgJ213ZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tZmVyJywKICAgICAgICAnbXhmJyA9PiAnYXBwbGljYXRpb24vbXhmJywKICAgICAgICAnbXhsJyA9PiAnYXBwbGljYXRpb24vdm5kLnJlY29yZGFyZS5tdXNpY3htbCcsCiAgICAgICAgJ214bWYnID0+ICdhdWRpby9tb2JpbGUteG1mJywKICAgICAgICAnbXhtbCcgPT4gJ2FwcGxpY2F0aW9uL3h2K3htbCcsCiAgICAgICAgJ214cycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC50cmlzY2FwZS5teHMnLAogICAgICAgICdteHUnID0+ICd2aWRlby92bmQubXBlZ3VybCcsCiAgICAgICAgJ24tZ2FnZScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ub2tpYS5uLWdhZ2Uuc3ltYmlhbi5pbnN0YWxsJywKICAgICAgICAnbjMnID0+ICd0ZXh0L24zJywKICAgICAgICAnbmInID0+ICdhcHBsaWNhdGlvbi9tYXRoZW1hdGljYScsCiAgICAgICAgJ25icCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC53b2xmcmFtLnBsYXllcicsCiAgICAgICAgJ25jJyA9PiAnYXBwbGljYXRpb24veC1uZXRjZGYnLAogICAgICAgICduY3gnID0+ICdhcHBsaWNhdGlvbi94LWR0Ym5jeCt4bWwnLAogICAgICAgICduZGpzb24nID0+ICdhcHBsaWNhdGlvbi94LW5kanNvbicsCiAgICAgICAgJ25mbycgPT4gJ3RleHQveC1uZm8nLAogICAgICAgICduZ2RhdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ub2tpYS5uLWdhZ2UuZGF0YScsCiAgICAgICAgJ25pdGYnID0+ICdhcHBsaWNhdGlvbi92bmQubml0ZicsCiAgICAgICAgJ25sdScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5uZXVyb2xhbmd1YWdlLm5sdScsCiAgICAgICAgJ25tbCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5lbmxpdmVuJywKICAgICAgICAnbm5kJyA9PiAnYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LWRpcmVjdG9yeScsCiAgICAgICAgJ25ucycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC1zZWFsZXInLAogICAgICAgICdubncnID0+ICdhcHBsaWNhdGlvbi92bmQubm9ibGVuZXQtd2ViJywKICAgICAgICAnbnB4JyA9PiAnaW1hZ2Uvdm5kLm5ldC1mcHgnLAogICAgICAgICducScgPT4gJ2FwcGxpY2F0aW9uL24tcXVhZHMnLAogICAgICAgICduc2MnID0+ICdhcHBsaWNhdGlvbi94LWNvbmZlcmVuY2UnLAogICAgICAgICduc2YnID0+ICdhcHBsaWNhdGlvbi92bmQubG90dXMtbm90ZXMnLAogICAgICAgICdudCcgPT4gJ2FwcGxpY2F0aW9uL24tdHJpcGxlcycsCiAgICAgICAgJ250ZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5uaXRmJywKICAgICAgICAnbnVtYmVycycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5udW1iZXJzJywKICAgICAgICAnbnpiJyA9PiAnYXBwbGljYXRpb24veC1uemInLAogICAgICAgICdvYTInID0+ICdhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5czInLAogICAgICAgICdvYTMnID0+ICdhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5czMnLAogICAgICAgICdvYXMnID0+ICdhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5cycsCiAgICAgICAgJ29iZCcgPT4gJ2FwcGxpY2F0aW9uL3gtbXNiaW5kZXInLAogICAgICAgICdvYmd4JyA9PiAnYXBwbGljYXRpb24vdm5kLm9wZW5ibG94LmdhbWUreG1sJywKICAgICAgICAnb2JqJyA9PiAnbW9kZWwvb2JqJywKICAgICAgICAnb2RhJyA9PiAnYXBwbGljYXRpb24vb2RhJywKICAgICAgICAnb2RiJyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5kYXRhYmFzZScsCiAgICAgICAgJ29kYycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuY2hhcnQnLAogICAgICAgICdvZGYnID0+ICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmZvcm11bGEnLAogICAgICAgICdvZGZ0JyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5mb3JtdWxhLXRlbXBsYXRlJywKICAgICAgICAnb2RnJyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5ncmFwaGljcycsCiAgICAgICAgJ29kaScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuaW1hZ2UnLAogICAgICAgICdvZG0nID0+ICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtbWFzdGVyJywKICAgICAgICAnb2RwJyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24nLAogICAgICAgICdvZHMnID0+ICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0JywKICAgICAgICAnb2R0JyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0JywKICAgICAgICAnb2dhJyA9PiAnYXVkaW8vb2dnJywKICAgICAgICAnb2dleCcgPT4gJ21vZGVsL3ZuZC5vcGVuZ2V4JywKICAgICAgICAnb2dnJyA9PiAnYXVkaW8vb2dnJywKICAgICAgICAnb2d2JyA9PiAndmlkZW8vb2dnJywKICAgICAgICAnb2d4JyA9PiAnYXBwbGljYXRpb24vb2dnJywKICAgICAgICAnb21kb2MnID0+ICdhcHBsaWNhdGlvbi9vbWRvYyt4bWwnLAogICAgICAgICdvbmUnID0+ICdhcHBsaWNhdGlvbi9vbmVub3RlJywKICAgICAgICAnb25lYScgPT4gJ2FwcGxpY2F0aW9uL29uZW5vdGUnLAogICAgICAgICdvbmVwa2cnID0+ICdhcHBsaWNhdGlvbi9vbmVub3RlJywKICAgICAgICAnb25ldG1wJyA9PiAnYXBwbGljYXRpb24vb25lbm90ZScsCiAgICAgICAgJ29uZXRvYycgPT4gJ2FwcGxpY2F0aW9uL29uZW5vdGUnLAogICAgICAgICdvbmV0b2MyJyA9PiAnYXBwbGljYXRpb24vb25lbm90ZScsCiAgICAgICAgJ29wZicgPT4gJ2FwcGxpY2F0aW9uL29lYnBzLXBhY2thZ2UreG1sJywKICAgICAgICAnb3BtbCcgPT4gJ3RleHQveC1vcG1sJywKICAgICAgICAnb3ByYycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wYWxtJywKICAgICAgICAnb3B1cycgPT4gJ2F1ZGlvL29nZycsCiAgICAgICAgJ29yZycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5sb3R1cy1vcmdhbml6ZXInLAogICAgICAgICdvc2YnID0+ICdhcHBsaWNhdGlvbi92bmQueWFtYWhhLm9wZW5zY29yZWZvcm1hdCcsCiAgICAgICAgJ29zZnB2ZycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC55YW1haGEub3BlbnNjb3JlZm9ybWF0Lm9zZnB2Zyt4bWwnLAogICAgICAgICdvc20nID0+ICdhcHBsaWNhdGlvbi92bmQub3BlbnN0cmVldG1hcC5kYXRhK3htbCcsCiAgICAgICAgJ290YycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuY2hhcnQtdGVtcGxhdGUnLAogICAgICAgICdvdGYnID0+ICdmb250L290ZicsCiAgICAgICAgJ290ZycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZ3JhcGhpY3MtdGVtcGxhdGUnLAogICAgICAgICdvdGgnID0+ICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtd2ViJywKICAgICAgICAnb3RpJyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5pbWFnZS10ZW1wbGF0ZScsCiAgICAgICAgJ290cCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uLXRlbXBsYXRlJywKICAgICAgICAnb3RzJyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldC10ZW1wbGF0ZScsCiAgICAgICAgJ290dCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC10ZW1wbGF0ZScsCiAgICAgICAgJ292YScgPT4gJ2FwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1vdmEnLAogICAgICAgICdvdmYnID0+ICdhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtb3ZmJywKICAgICAgICAnb3dsJyA9PiAnYXBwbGljYXRpb24vcmRmK3htbCcsCiAgICAgICAgJ294cHMnID0+ICdhcHBsaWNhdGlvbi9veHBzJywKICAgICAgICAnb3h0JyA9PiAnYXBwbGljYXRpb24vdm5kLm9wZW5vZmZpY2VvcmcuZXh0ZW5zaW9uJywKICAgICAgICAncCcgPT4gJ3RleHQveC1wYXNjYWwnLAogICAgICAgICdwMTAnID0+ICdhcHBsaWNhdGlvbi9wa2NzMTAnLAogICAgICAgICdwMTInID0+ICdhcHBsaWNhdGlvbi94LXBrY3MxMicsCiAgICAgICAgJ3AyMScgPT4gJ21vZGVsL3N0ZXAnLAogICAgICAgICdwN2EnID0+ICdhcHBsaWNhdGlvbi94LXBrY3M3LXNpZ25hdHVyZScsCiAgICAgICAgJ3A3YicgPT4gJ2FwcGxpY2F0aW9uL3gtcGtjczctY2VydGlmaWNhdGVzJywKICAgICAgICAncDdjJyA9PiAnYXBwbGljYXRpb24vcGtjczctbWltZScsCiAgICAgICAgJ3A3ZScgPT4gJ2FwcGxpY2F0aW9uL3BrY3M3LW1pbWUnLAogICAgICAgICdwN20nID0+ICdhcHBsaWNhdGlvbi9wa2NzNy1taW1lJywKICAgICAgICAncDdyJyA9PiAnYXBwbGljYXRpb24veC1wa2NzNy1jZXJ0cmVxcmVzcCcsCiAgICAgICAgJ3A3cycgPT4gJ2FwcGxpY2F0aW9uL3BrY3M3LXNpZ25hdHVyZScsCiAgICAgICAgJ3A4JyA9PiAnYXBwbGljYXRpb24vcGtjczgnLAogICAgICAgICdwYWMnID0+ICdhcHBsaWNhdGlvbi94LW5zLXByb3h5LWF1dG9jb25maWcnLAogICAgICAgICdwYWdlcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5wYWdlcycsCiAgICAgICAgJ3BhcnF1ZXQnID0+ICdhcHBsaWNhdGlvbi92bmQuYXBhY2hlLnBhcnF1ZXQnLAogICAgICAgICdwYXMnID0+ICd0ZXh0L3gtcGFzY2FsJywKICAgICAgICAncGF3JyA9PiAnYXBwbGljYXRpb24vdm5kLnBhd2FhZmlsZScsCiAgICAgICAgJ3BiZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wb3dlcmJ1aWxkZXI2JywKICAgICAgICAncGJtJyA9PiAnaW1hZ2UveC1wb3J0YWJsZS1iaXRtYXAnLAogICAgICAgICdwY2FwJyA9PiAnYXBwbGljYXRpb24vdm5kLnRjcGR1bXAucGNhcCcsCiAgICAgICAgJ3BjZicgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC1wY2YnLAogICAgICAgICdwY2wnID0+ICdhcHBsaWNhdGlvbi92bmQuaHAtcGNsJywKICAgICAgICAncGNseGwnID0+ICdhcHBsaWNhdGlvbi92bmQuaHAtcGNseGwnLAogICAgICAgICdwY3QnID0+ICdpbWFnZS94LXBpY3QnLAogICAgICAgICdwY3VybCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jdXJsLnBjdXJsJywKICAgICAgICAncGN4JyA9PiAnaW1hZ2Uvdm5kLnpicnVzaC5wY3gnLAogICAgICAgICdwZGInID0+ICdhcHBsaWNhdGlvbi92bmQucGFsbScsCiAgICAgICAgJ3BkZScgPT4gJ3RleHQveC1wcm9jZXNzaW5nJywKICAgICAgICAncGRmJyA9PiAnYXBwbGljYXRpb24vcGRmJywKICAgICAgICAncGVtJyA9PiAnYXBwbGljYXRpb24veC14NTA5LXVzZXItY2VydCcsCiAgICAgICAgJ3BmYScgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC10eXBlMScsCiAgICAgICAgJ3BmYicgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC10eXBlMScsCiAgICAgICAgJ3BmbScgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC10eXBlMScsCiAgICAgICAgJ3BmcicgPT4gJ2FwcGxpY2F0aW9uL2ZvbnQtdGRwZnInLAogICAgICAgICdwZngnID0+ICdhcHBsaWNhdGlvbi94LXBrY3MxMicsCiAgICAgICAgJ3BnbScgPT4gJ2ltYWdlL3gtcG9ydGFibGUtZ3JheW1hcCcsCiAgICAgICAgJ3BnbicgPT4gJ2FwcGxpY2F0aW9uL3gtY2hlc3MtcGduJywKICAgICAgICAncGdwJyA9PiAnYXBwbGljYXRpb24vcGdwLWVuY3J5cHRlZCcsCiAgICAgICAgJ3BoYXInID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdwaHAnID0+ICdhcHBsaWNhdGlvbi94LWh0dHBkLXBocCcsCiAgICAgICAgJ3BocDMnID0+ICdhcHBsaWNhdGlvbi94LWh0dHBkLXBocCcsCiAgICAgICAgJ3BocDQnID0+ICdhcHBsaWNhdGlvbi94LWh0dHBkLXBocCcsCiAgICAgICAgJ3BocHMnID0+ICdhcHBsaWNhdGlvbi94LWh0dHBkLXBocC1zb3VyY2UnLAogICAgICAgICdwaHRtbCcgPT4gJ2FwcGxpY2F0aW9uL3gtaHR0cGQtcGhwJywKICAgICAgICAncGljJyA9PiAnaW1hZ2UveC1waWN0JywKICAgICAgICAncGtnJyA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAncGtpJyA9PiAnYXBwbGljYXRpb24vcGtpeGNtcCcsCiAgICAgICAgJ3BraXBhdGgnID0+ICdhcHBsaWNhdGlvbi9wa2l4LXBraXBhdGgnLAogICAgICAgICdwa3Bhc3MnID0+ICdhcHBsaWNhdGlvbi92bmQuYXBwbGUucGtwYXNzJywKICAgICAgICAncGwnID0+ICdhcHBsaWNhdGlvbi94LXBlcmwnLAogICAgICAgICdwbGInID0+ICdhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctbGFyZ2UnLAogICAgICAgICdwbGMnID0+ICdhcHBsaWNhdGlvbi92bmQubW9iaXVzLnBsYycsCiAgICAgICAgJ3BsZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wb2NrZXRsZWFybicsCiAgICAgICAgJ3BscycgPT4gJ2FwcGxpY2F0aW9uL3Bscyt4bWwnLAogICAgICAgICdwbScgPT4gJ2FwcGxpY2F0aW9uL3gtcGVybCcsCiAgICAgICAgJ3BtbCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jdGMtcG9zbWwnLAogICAgICAgICdwbmcnID0+ICdpbWFnZS9wbmcnLAogICAgICAgICdwbm0nID0+ICdpbWFnZS94LXBvcnRhYmxlLWFueW1hcCcsCiAgICAgICAgJ3BvcnRwa2cnID0+ICdhcHBsaWNhdGlvbi92bmQubWFjcG9ydHMucG9ydHBrZycsCiAgICAgICAgJ3BvdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JywKICAgICAgICAncG90bScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnRlbXBsYXRlLm1hY3JvZW5hYmxlZC4xMicsCiAgICAgICAgJ3BvdHgnID0+ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGVtcGxhdGUnLAogICAgICAgICdwcGEnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcsCiAgICAgICAgJ3BwYW0nID0+ICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5hZGRpbi5tYWNyb2VuYWJsZWQuMTInLAogICAgICAgICdwcGQnID0+ICdhcHBsaWNhdGlvbi92bmQuY3Vwcy1wcGQnLAogICAgICAgICdwcG0nID0+ICdpbWFnZS94LXBvcnRhYmxlLXBpeG1hcCcsCiAgICAgICAgJ3BwcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JywKICAgICAgICAncHBzbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnNsaWRlc2hvdy5tYWNyb2VuYWJsZWQuMTInLAogICAgICAgICdwcHN4JyA9PiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlc2hvdycsCiAgICAgICAgJ3BwdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JywKICAgICAgICAncHB0bScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnByZXNlbnRhdGlvbi5tYWNyb2VuYWJsZWQuMTInLAogICAgICAgICdwcHR4JyA9PiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbicsCiAgICAgICAgJ3BxYScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wYWxtJywKICAgICAgICAncHJjJyA9PiAnbW9kZWwvcHJjJywKICAgICAgICAncHJlJyA9PiAnYXBwbGljYXRpb24vdm5kLmxvdHVzLWZyZWVsYW5jZScsCiAgICAgICAgJ3ByZicgPT4gJ2FwcGxpY2F0aW9uL3BpY3MtcnVsZXMnLAogICAgICAgICdwcm92eCcgPT4gJ2FwcGxpY2F0aW9uL3Byb3ZlbmFuY2UreG1sJywKICAgICAgICAncHMnID0+ICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JywKICAgICAgICAncHNiJyA9PiAnYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LXNtYWxsJywKICAgICAgICAncHNkJyA9PiAnaW1hZ2Uvdm5kLmFkb2JlLnBob3Rvc2hvcCcsCiAgICAgICAgJ3BzZicgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC1saW51eC1wc2YnLAogICAgICAgICdwc2tjeG1sJyA9PiAnYXBwbGljYXRpb24vcHNrYyt4bWwnLAogICAgICAgICdwdGknID0+ICdpbWFnZS9wcnMucHRpJywKICAgICAgICAncHRpZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wdmkucHRpZDEnLAogICAgICAgICdwdWInID0+ICdhcHBsaWNhdGlvbi94LW1zcHVibGlzaGVyJywKICAgICAgICAncHYnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdwdmInID0+ICdhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctdmFyJywKICAgICAgICAncHduJyA9PiAnYXBwbGljYXRpb24vdm5kLjNtLnBvc3QtaXQtbm90ZXMnLAogICAgICAgICdweGYnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdweWEnID0+ICdhdWRpby92bmQubXMtcGxheXJlYWR5Lm1lZGlhLnB5YScsCiAgICAgICAgJ3B5bycgPT4gJ21vZGVsL3ZuZC5weXRoYS5weW94JywKICAgICAgICAncHlveCcgPT4gJ21vZGVsL3ZuZC5weXRoYS5weW94JywKICAgICAgICAncHl2JyA9PiAndmlkZW8vdm5kLm1zLXBsYXlyZWFkeS5tZWRpYS5weXYnLAogICAgICAgICdxYW0nID0+ICdhcHBsaWNhdGlvbi92bmQuZXBzb24ucXVpY2thbmltZScsCiAgICAgICAgJ3FibycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5pbnR1LnFibycsCiAgICAgICAgJ3FmeCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5pbnR1LnFmeCcsCiAgICAgICAgJ3FwcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wdWJsaXNoYXJlLWRlbHRhLXRyZWUnLAogICAgICAgICdxdCcgPT4gJ3ZpZGVvL3F1aWNrdGltZScsCiAgICAgICAgJ3F3ZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcycsCiAgICAgICAgJ3F3dCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcycsCiAgICAgICAgJ3F4YicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcycsCiAgICAgICAgJ3F4ZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcycsCiAgICAgICAgJ3F4bCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcycsCiAgICAgICAgJ3F4dCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcycsCiAgICAgICAgJ3JhJyA9PiAnYXVkaW8veC1yZWFsYXVkaW8nLAogICAgICAgICdyYW0nID0+ICdhdWRpby94LXBuLXJlYWxhdWRpbycsCiAgICAgICAgJ3JhbWwnID0+ICdhcHBsaWNhdGlvbi9yYW1sK3lhbWwnLAogICAgICAgICdyYXBkJyA9PiAnYXBwbGljYXRpb24vcm91dGUtYXBkK3htbCcsCiAgICAgICAgJ3JhcicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5yYXInLAogICAgICAgICdyYXMnID0+ICdpbWFnZS94LWNtdS1yYXN0ZXInLAogICAgICAgICdyY3Byb2ZpbGUnID0+ICdhcHBsaWNhdGlvbi92bmQuaXB1bnBsdWdnZWQucmNwcm9maWxlJywKICAgICAgICAncmRmJyA9PiAnYXBwbGljYXRpb24vcmRmK3htbCcsCiAgICAgICAgJ3JkeicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kYXRhLXZpc2lvbi5yZHonLAogICAgICAgICdyZWxvJyA9PiAnYXBwbGljYXRpb24vcDJwLW92ZXJsYXkreG1sJywKICAgICAgICAncmVwJyA9PiAnYXBwbGljYXRpb24vdm5kLmJ1c2luZXNzb2JqZWN0cycsCiAgICAgICAgJ3JlcycgPT4gJ2FwcGxpY2F0aW9uL3gtZHRicmVzb3VyY2UreG1sJywKICAgICAgICAncmdiJyA9PiAnaW1hZ2UveC1yZ2InLAogICAgICAgICdyaWYnID0+ICdhcHBsaWNhdGlvbi9yZWdpbmZvK3htbCcsCiAgICAgICAgJ3JpcCcgPT4gJ2F1ZGlvL3ZuZC5yaXAnLAogICAgICAgICdyaXMnID0+ICdhcHBsaWNhdGlvbi94LXJlc2VhcmNoLWluZm8tc3lzdGVtcycsCiAgICAgICAgJ3JsJyA9PiAnYXBwbGljYXRpb24vcmVzb3VyY2UtbGlzdHMreG1sJywKICAgICAgICAncmxjJyA9PiAnaW1hZ2Uvdm5kLmZ1aml4ZXJveC5lZG1pY3MtcmxjJywKICAgICAgICAncmxkJyA9PiAnYXBwbGljYXRpb24vcmVzb3VyY2UtbGlzdHMtZGlmZit4bWwnLAogICAgICAgICdybScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ybi1yZWFsbWVkaWEnLAogICAgICAgICdybWknID0+ICdhdWRpby9taWRpJywKICAgICAgICAncm1wJyA9PiAnYXVkaW8veC1wbi1yZWFsYXVkaW8tcGx1Z2luJywKICAgICAgICAncm1zJyA9PiAnYXBwbGljYXRpb24vdm5kLmpjcC5qYXZhbWUubWlkbGV0LXJtcycsCiAgICAgICAgJ3JtdmInID0+ICdhcHBsaWNhdGlvbi92bmQucm4tcmVhbG1lZGlhLXZicicsCiAgICAgICAgJ3JuYycgPT4gJ2FwcGxpY2F0aW9uL3JlbGF4LW5nLWNvbXBhY3Qtc3ludGF4JywKICAgICAgICAncm5nJyA9PiAnYXBwbGljYXRpb24veG1sJywKICAgICAgICAncm9hJyA9PiAnYXBwbGljYXRpb24vcnBraS1yb2EnLAogICAgICAgICdyb2ZmJyA9PiAndGV4dC90cm9mZicsCiAgICAgICAgJ3JwOScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jbG9hbnRvLnJwOScsCiAgICAgICAgJ3JwbScgPT4gJ2FwcGxpY2F0aW9uL3gtcmVkaGF0LXBhY2thZ2UtbWFuYWdlcicsCiAgICAgICAgJ3Jwc3MnID0+ICdhcHBsaWNhdGlvbi92bmQubm9raWEucmFkaW8tcHJlc2V0cycsCiAgICAgICAgJ3Jwc3QnID0+ICdhcHBsaWNhdGlvbi92bmQubm9raWEucmFkaW8tcHJlc2V0JywKICAgICAgICAncnEnID0+ICdhcHBsaWNhdGlvbi9zcGFycWwtcXVlcnknLAogICAgICAgICdycycgPT4gJ2FwcGxpY2F0aW9uL3Jscy1zZXJ2aWNlcyt4bWwnLAogICAgICAgICdyc2EnID0+ICdhcHBsaWNhdGlvbi94LXBrY3M3JywKICAgICAgICAncnNhdCcgPT4gJ2FwcGxpY2F0aW9uL2F0c2MtcnNhdCt4bWwnLAogICAgICAgICdyc2QnID0+ICdhcHBsaWNhdGlvbi9yc2QreG1sJywKICAgICAgICAncnNoZWV0JyA9PiAnYXBwbGljYXRpb24vdXJjLXJlc3NoZWV0K3htbCcsCiAgICAgICAgJ3JzcycgPT4gJ2FwcGxpY2F0aW9uL3Jzcyt4bWwnLAogICAgICAgICdydGYnID0+ICd0ZXh0L3J0ZicsCiAgICAgICAgJ3J0eCcgPT4gJ3RleHQvcmljaHRleHQnLAogICAgICAgICdydW4nID0+ICdhcHBsaWNhdGlvbi94LW1ha2VzZWxmJywKICAgICAgICAncnVzZCcgPT4gJ2FwcGxpY2F0aW9uL3JvdXRlLXVzZCt4bWwnLAogICAgICAgICdydicgPT4gJ3ZpZGVvL3ZuZC5ybi1yZWFsdmlkZW8nLAogICAgICAgICdzJyA9PiAndGV4dC94LWFzbScsCiAgICAgICAgJ3MzbScgPT4gJ2F1ZGlvL3MzbScsCiAgICAgICAgJ3NhZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC55YW1haGEuc21hZi1hdWRpbycsCiAgICAgICAgJ3Nhc3MnID0+ICd0ZXh0L3gtc2FzcycsCiAgICAgICAgJ3NibWwnID0+ICdhcHBsaWNhdGlvbi9zYm1sK3htbCcsCiAgICAgICAgJ3NjJyA9PiAnYXBwbGljYXRpb24vdm5kLmlibS5zZWN1cmUtY29udGFpbmVyJywKICAgICAgICAnc2NkJyA9PiAnYXBwbGljYXRpb24veC1tc3NjaGVkdWxlJywKICAgICAgICAnc2NtJyA9PiAnYXBwbGljYXRpb24vdm5kLmxvdHVzLXNjcmVlbmNhbScsCiAgICAgICAgJ3NjcScgPT4gJ2FwcGxpY2F0aW9uL3NjdnAtY3YtcmVxdWVzdCcsCiAgICAgICAgJ3NjcycgPT4gJ2FwcGxpY2F0aW9uL3NjdnAtY3YtcmVzcG9uc2UnLAogICAgICAgICdzY3NzJyA9PiAndGV4dC94LXNjc3MnLAogICAgICAgICdzY3VybCcgPT4gJ3RleHQvdm5kLmN1cmwuc2N1cmwnLAogICAgICAgICdzZGEnID0+ICdhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmRyYXcnLAogICAgICAgICdzZGMnID0+ICdhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmNhbGMnLAogICAgICAgICdzZGQnID0+ICdhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmltcHJlc3MnLAogICAgICAgICdzZGtkJyA9PiAnYXBwbGljYXRpb24vdm5kLnNvbGVudC5zZGttK3htbCcsCiAgICAgICAgJ3Nka20nID0+ICdhcHBsaWNhdGlvbi92bmQuc29sZW50LnNka20reG1sJywKICAgICAgICAnc2RwJyA9PiAnYXBwbGljYXRpb24vc2RwJywKICAgICAgICAnc2R3JyA9PiAnYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi53cml0ZXInLAogICAgICAgICdzZWEnID0+ICdhcHBsaWNhdGlvbi94LXNlYScsCiAgICAgICAgJ3NlZScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zZWVtYWlsJywKICAgICAgICAnc2VlZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5mZHNuLnNlZWQnLAogICAgICAgICdzZW1hJyA9PiAnYXBwbGljYXRpb24vdm5kLnNlbWEnLAogICAgICAgICdzZW1kJyA9PiAnYXBwbGljYXRpb24vdm5kLnNlbWQnLAogICAgICAgICdzZW1mJyA9PiAnYXBwbGljYXRpb24vdm5kLnNlbWYnLAogICAgICAgICdzZW5tbHgnID0+ICdhcHBsaWNhdGlvbi9zZW5tbCt4bWwnLAogICAgICAgICdzZW5zbWx4JyA9PiAnYXBwbGljYXRpb24vc2Vuc21sK3htbCcsCiAgICAgICAgJ3NlcicgPT4gJ2FwcGxpY2F0aW9uL2phdmEtc2VyaWFsaXplZC1vYmplY3QnLAogICAgICAgICdzZXRwYXknID0+ICdhcHBsaWNhdGlvbi9zZXQtcGF5bWVudC1pbml0aWF0aW9uJywKICAgICAgICAnc2V0cmVnJyA9PiAnYXBwbGljYXRpb24vc2V0LXJlZ2lzdHJhdGlvbi1pbml0aWF0aW9uJywKICAgICAgICAnc2ZkLWhkc3R4JyA9PiAnYXBwbGljYXRpb24vdm5kLmh5ZHJvc3RhdGl4LnNvZi1kYXRhJywKICAgICAgICAnc2ZzJyA9PiAnYXBwbGljYXRpb24vdm5kLnNwb3RmaXJlLnNmcycsCiAgICAgICAgJ3NmdicgPT4gJ3RleHQveC1zZnYnLAogICAgICAgICdzZ2knID0+ICdpbWFnZS9zZ2knLAogICAgICAgICdzZ2wnID0+ICdhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLndyaXRlci1nbG9iYWwnLAogICAgICAgICdzZ20nID0+ICd0ZXh0L3NnbWwnLAogICAgICAgICdzZ21sJyA9PiAndGV4dC9zZ21sJywKICAgICAgICAnc2gnID0+ICdhcHBsaWNhdGlvbi94LXNoJywKICAgICAgICAnc2hhcicgPT4gJ2FwcGxpY2F0aW9uL3gtc2hhcicsCiAgICAgICAgJ3NoZXgnID0+ICd0ZXh0L3NoZXgnLAogICAgICAgICdzaGYnID0+ICdhcHBsaWNhdGlvbi9zaGYreG1sJywKICAgICAgICAnc2h0bWwnID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICdzaWQnID0+ICdpbWFnZS94LW1yc2lkLWltYWdlJywKICAgICAgICAnc2lldmUnID0+ICdhcHBsaWNhdGlvbi9zaWV2ZScsCiAgICAgICAgJ3NpZycgPT4gJ2FwcGxpY2F0aW9uL3BncC1zaWduYXR1cmUnLAogICAgICAgICdzaWwnID0+ICdhdWRpby9zaWxrJywKICAgICAgICAnc2lsbycgPT4gJ21vZGVsL21lc2gnLAogICAgICAgICdzaXMnID0+ICdhcHBsaWNhdGlvbi92bmQuc3ltYmlhbi5pbnN0YWxsJywKICAgICAgICAnc2lzeCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zeW1iaWFuLmluc3RhbGwnLAogICAgICAgICdzaXQnID0+ICdhcHBsaWNhdGlvbi94LXN0dWZmaXQnLAogICAgICAgICdzaXR4JyA9PiAnYXBwbGljYXRpb24veC1zdHVmZml0eCcsCiAgICAgICAgJ3NpdicgPT4gJ2FwcGxpY2F0aW9uL3NpZXZlJywKICAgICAgICAnc2tkJyA9PiAnYXBwbGljYXRpb24vdm5kLmtvYW4nLAogICAgICAgICdza20nID0+ICdhcHBsaWNhdGlvbi92bmQua29hbicsCiAgICAgICAgJ3NrcCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5rb2FuJywKICAgICAgICAnc2t0JyA9PiAnYXBwbGljYXRpb24vdm5kLmtvYW4nLAogICAgICAgICdzbGRtJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuc2xpZGUubWFjcm9lbmFibGVkLjEyJywKICAgICAgICAnc2xkeCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZScsCiAgICAgICAgJ3NsaW0nID0+ICd0ZXh0L3NsaW0nLAogICAgICAgICdzbG0nID0+ICd0ZXh0L3NsaW0nLAogICAgICAgICdzbHMnID0+ICdhcHBsaWNhdGlvbi9yb3V0ZS1zLXRzaWQreG1sJywKICAgICAgICAnc2x0JyA9PiAnYXBwbGljYXRpb24vdm5kLmVwc29uLnNhbHQnLAogICAgICAgICdzbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zdGVwbWFuaWEuc3RlcGNoYXJ0JywKICAgICAgICAnc21mJyA9PiAnYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5tYXRoJywKICAgICAgICAnc21pJyA9PiAnYXBwbGljYXRpb24vc21pbCt4bWwnLAogICAgICAgICdzbWlsJyA9PiAnYXBwbGljYXRpb24vc21pbCt4bWwnLAogICAgICAgICdzbXYnID0+ICd2aWRlby94LXNtdicsCiAgICAgICAgJ3NtemlwJyA9PiAnYXBwbGljYXRpb24vdm5kLnN0ZXBtYW5pYS5wYWNrYWdlJywKICAgICAgICAnc25kJyA9PiAnYXVkaW8vYmFzaWMnLAogICAgICAgICdzbmYnID0+ICdhcHBsaWNhdGlvbi94LWZvbnQtc25mJywKICAgICAgICAnc28nID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdzcGMnID0+ICdhcHBsaWNhdGlvbi94LXBrY3M3LWNlcnRpZmljYXRlcycsCiAgICAgICAgJ3NwZHgnID0+ICd0ZXh0L3NwZHgnLAogICAgICAgICdzcGYnID0+ICdhcHBsaWNhdGlvbi92bmQueWFtYWhhLnNtYWYtcGhyYXNlJywKICAgICAgICAnc3BsJyA9PiAnYXBwbGljYXRpb24veC1mdXR1cmVzcGxhc2gnLAogICAgICAgICdzcG90JyA9PiAndGV4dC92bmQuaW4zZC5zcG90JywKICAgICAgICAnc3BwJyA9PiAnYXBwbGljYXRpb24vc2N2cC12cC1yZXNwb25zZScsCiAgICAgICAgJ3NwcScgPT4gJ2FwcGxpY2F0aW9uL3NjdnAtdnAtcmVxdWVzdCcsCiAgICAgICAgJ3NweCcgPT4gJ2F1ZGlvL29nZycsCiAgICAgICAgJ3NxbCcgPT4gJ2FwcGxpY2F0aW9uL3NxbCcsCiAgICAgICAgJ3NxbGl0ZScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zcWxpdGUzJywKICAgICAgICAnc3FsaXRlMycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zcWxpdGUzJywKICAgICAgICAnc3JjJyA9PiAnYXBwbGljYXRpb24veC13YWlzLXNvdXJjZScsCiAgICAgICAgJ3NydCcgPT4gJ2FwcGxpY2F0aW9uL3gtc3VicmlwJywKICAgICAgICAnc3J1JyA9PiAnYXBwbGljYXRpb24vc3J1K3htbCcsCiAgICAgICAgJ3NyeCcgPT4gJ2FwcGxpY2F0aW9uL3NwYXJxbC1yZXN1bHRzK3htbCcsCiAgICAgICAgJ3NzZGwnID0+ICdhcHBsaWNhdGlvbi9zc2RsK3htbCcsCiAgICAgICAgJ3NzZScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5rb2Rhay1kZXNjcmlwdG9yJywKICAgICAgICAnc3NmJyA9PiAnYXBwbGljYXRpb24vdm5kLmVwc29uLnNzZicsCiAgICAgICAgJ3NzbWwnID0+ICdhcHBsaWNhdGlvbi9zc21sK3htbCcsCiAgICAgICAgJ3NzdCcgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ3N0JyA9PiAnYXBwbGljYXRpb24vdm5kLnNhaWxpbmd0cmFja2VyLnRyYWNrJywKICAgICAgICAnc3RjJyA9PiAnYXBwbGljYXRpb24vdm5kLnN1bi54bWwuY2FsYy50ZW1wbGF0ZScsCiAgICAgICAgJ3N0ZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmRyYXcudGVtcGxhdGUnLAogICAgICAgICdzdGVwJyA9PiAnbW9kZWwvc3RlcCcsCiAgICAgICAgJ3N0ZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC53dC5zdGYnLAogICAgICAgICdzdGknID0+ICdhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzLnRlbXBsYXRlJywKICAgICAgICAnc3RrJyA9PiAnYXBwbGljYXRpb24vaHlwZXJzdHVkaW8nLAogICAgICAgICdzdGwnID0+ICdtb2RlbC9zdGwnLAogICAgICAgICdzdHAnID0+ICdtb2RlbC9zdGVwJywKICAgICAgICAnc3RwbmMnID0+ICdtb2RlbC9zdGVwJywKICAgICAgICAnc3RweCcgPT4gJ21vZGVsL3N0ZXAreG1sJywKICAgICAgICAnc3RweHonID0+ICdtb2RlbC9zdGVwLXhtbCt6aXAnLAogICAgICAgICdzdHB6JyA9PiAnbW9kZWwvc3RlcCt6aXAnLAogICAgICAgICdzdHInID0+ICdhcHBsaWNhdGlvbi92bmQucGcuZm9ybWF0JywKICAgICAgICAnc3R3JyA9PiAnYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyLnRlbXBsYXRlJywKICAgICAgICAnc3R5bCcgPT4gJ3RleHQvc3R5bHVzJywKICAgICAgICAnc3R5bHVzJyA9PiAndGV4dC9zdHlsdXMnLAogICAgICAgICdzdWInID0+ICdpbWFnZS92bmQuZHZiLnN1YnRpdGxlJywKICAgICAgICAnc3VzJyA9PiAnYXBwbGljYXRpb24vdm5kLnN1cy1jYWxlbmRhcicsCiAgICAgICAgJ3N1c3AnID0+ICdhcHBsaWNhdGlvbi92bmQuc3VzLWNhbGVuZGFyJywKICAgICAgICAnc3Y0Y3BpbycgPT4gJ2FwcGxpY2F0aW9uL3gtc3Y0Y3BpbycsCiAgICAgICAgJ3N2NGNyYycgPT4gJ2FwcGxpY2F0aW9uL3gtc3Y0Y3JjJywKICAgICAgICAnc3ZjJyA9PiAnYXBwbGljYXRpb24vdm5kLmR2Yi5zZXJ2aWNlJywKICAgICAgICAnc3ZkJyA9PiAnYXBwbGljYXRpb24vdm5kLnN2ZCcsCiAgICAgICAgJ3N2ZycgPT4gJ2ltYWdlL3N2Zyt4bWwnLAogICAgICAgICdzdmd6JyA9PiAnaW1hZ2Uvc3ZnK3htbCcsCiAgICAgICAgJ3N3YScgPT4gJ2FwcGxpY2F0aW9uL3gtZGlyZWN0b3InLAogICAgICAgICdzd2YnID0+ICdhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCcsCiAgICAgICAgJ3N3aScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hcmlzdGFuZXR3b3Jrcy5zd2knLAogICAgICAgICdzd2lkdGFnJyA9PiAnYXBwbGljYXRpb24vc3dpZCt4bWwnLAogICAgICAgICdzeGMnID0+ICdhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjJywKICAgICAgICAnc3hkJyA9PiAnYXBwbGljYXRpb24vdm5kLnN1bi54bWwuZHJhdycsCiAgICAgICAgJ3N4ZycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci5nbG9iYWwnLAogICAgICAgICdzeGknID0+ICdhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzJywKICAgICAgICAnc3htJyA9PiAnYXBwbGljYXRpb24vdm5kLnN1bi54bWwubWF0aCcsCiAgICAgICAgJ3N4dycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlcicsCiAgICAgICAgJ3N5c3RlbXZlcmlmeScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wcC5zeXN0ZW12ZXJpZnkreG1sJywKICAgICAgICAndCcgPT4gJ3RleHQvdHJvZmYnLAogICAgICAgICd0MycgPT4gJ2FwcGxpY2F0aW9uL3gtdDN2bS1pbWFnZScsCiAgICAgICAgJ3QzOCcgPT4gJ2ltYWdlL3QzOCcsCiAgICAgICAgJ3RhZ2xldCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5teW5mYycsCiAgICAgICAgJ3RhbycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC50YW8uaW50ZW50LW1vZHVsZS1hcmNoaXZlJywKICAgICAgICAndGFwJyA9PiAnaW1hZ2Uvdm5kLnRlbmNlbnQudGFwJywKICAgICAgICAndGFyJyA9PiAnYXBwbGljYXRpb24veC10YXInLAogICAgICAgICd0Y2FwJyA9PiAnYXBwbGljYXRpb24vdm5kLjNncHAyLnRjYXAnLAogICAgICAgICd0Y2wnID0+ICdhcHBsaWNhdGlvbi94LXRjbCcsCiAgICAgICAgJ3RkJyA9PiAnYXBwbGljYXRpb24vdXJjLXRhcmdldGRlc2MreG1sJywKICAgICAgICAndGVhY2hlcicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zbWFydC50ZWFjaGVyJywKICAgICAgICAndGVpJyA9PiAnYXBwbGljYXRpb24vdGVpK3htbCcsCiAgICAgICAgJ3RlaWNvcnB1cycgPT4gJ2FwcGxpY2F0aW9uL3RlaSt4bWwnLAogICAgICAgICd0ZXgnID0+ICdhcHBsaWNhdGlvbi94LXRleCcsCiAgICAgICAgJ3RleGknID0+ICdhcHBsaWNhdGlvbi94LXRleGluZm8nLAogICAgICAgICd0ZXhpbmZvJyA9PiAnYXBwbGljYXRpb24veC10ZXhpbmZvJywKICAgICAgICAndGV4dCcgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICd0ZmknID0+ICdhcHBsaWNhdGlvbi90aHJhdWQreG1sJywKICAgICAgICAndGZtJyA9PiAnYXBwbGljYXRpb24veC10ZXgtdGZtJywKICAgICAgICAndGZ4JyA9PiAnaW1hZ2UvdGlmZi1meCcsCiAgICAgICAgJ3RnYScgPT4gJ2ltYWdlL3gtdGdhJywKICAgICAgICAndGd6JyA9PiAnYXBwbGljYXRpb24vZ3ppcCcsCiAgICAgICAgJ3RobXgnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNldGhlbWUnLAogICAgICAgICd0aWYnID0+ICdpbWFnZS90aWZmJywKICAgICAgICAndGlmZicgPT4gJ2ltYWdlL3RpZmYnLAogICAgICAgICd0aycgPT4gJ2FwcGxpY2F0aW9uL3gtdGNsJywKICAgICAgICAndG1vJyA9PiAnYXBwbGljYXRpb24vdm5kLnRtb2JpbGUtbGl2ZXR2JywKICAgICAgICAndG9tbCcgPT4gJ2FwcGxpY2F0aW9uL3RvbWwnLAogICAgICAgICd0b3JyZW50JyA9PiAnYXBwbGljYXRpb24veC1iaXR0b3JyZW50JywKICAgICAgICAndHBsJyA9PiAnYXBwbGljYXRpb24vdm5kLmdyb292ZS10b29sLXRlbXBsYXRlJywKICAgICAgICAndHB0JyA9PiAnYXBwbGljYXRpb24vdm5kLnRyaWQudHB0JywKICAgICAgICAndHInID0+ICd0ZXh0L3Ryb2ZmJywKICAgICAgICAndHJhJyA9PiAnYXBwbGljYXRpb24vdm5kLnRydWVhcHAnLAogICAgICAgICd0cmlnJyA9PiAnYXBwbGljYXRpb24vdHJpZycsCiAgICAgICAgJ3RybScgPT4gJ2FwcGxpY2F0aW9uL3gtbXN0ZXJtaW5hbCcsCiAgICAgICAgJ3RzJyA9PiAndmlkZW8vbXAydCcsCiAgICAgICAgJ3RzZCcgPT4gJ2FwcGxpY2F0aW9uL3RpbWVzdGFtcGVkLWRhdGEnLAogICAgICAgICd0c3YnID0+ICd0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzJywKICAgICAgICAndHRjJyA9PiAnZm9udC9jb2xsZWN0aW9uJywKICAgICAgICAndHRmJyA9PiAnZm9udC90dGYnLAogICAgICAgICd0dGwnID0+ICd0ZXh0L3R1cnRsZScsCiAgICAgICAgJ3R0bWwnID0+ICdhcHBsaWNhdGlvbi90dG1sK3htbCcsCiAgICAgICAgJ3R3ZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zaW10ZWNoLW1pbmRtYXBwZXInLAogICAgICAgICd0d2RzJyA9PiAnYXBwbGljYXRpb24vdm5kLnNpbXRlY2gtbWluZG1hcHBlcicsCiAgICAgICAgJ3R4ZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nZW5vbWF0aXgudHV4ZWRvJywKICAgICAgICAndHhmJyA9PiAnYXBwbGljYXRpb24vdm5kLm1vYml1cy50eGYnLAogICAgICAgICd0eHQnID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAndTMyJyA9PiAnYXBwbGljYXRpb24veC1hdXRob3J3YXJlLWJpbicsCiAgICAgICAgJ3UzZCcgPT4gJ21vZGVsL3UzZCcsCiAgICAgICAgJ3U4ZHNuJyA9PiAnbWVzc2FnZS9nbG9iYWwtZGVsaXZlcnktc3RhdHVzJywKICAgICAgICAndThoZHInID0+ICdtZXNzYWdlL2dsb2JhbC1oZWFkZXJzJywKICAgICAgICAndThtZG4nID0+ICdtZXNzYWdlL2dsb2JhbC1kaXNwb3NpdGlvbi1ub3RpZmljYXRpb24nLAogICAgICAgICd1OG1zZycgPT4gJ21lc3NhZ2UvZ2xvYmFsJywKICAgICAgICAndWJqJyA9PiAnYXBwbGljYXRpb24vdWJqc29uJywKICAgICAgICAndWRlYicgPT4gJ2FwcGxpY2F0aW9uL3gtZGViaWFuLXBhY2thZ2UnLAogICAgICAgICd1ZmQnID0+ICdhcHBsaWNhdGlvbi92bmQudWZkbCcsCiAgICAgICAgJ3VmZGwnID0+ICdhcHBsaWNhdGlvbi92bmQudWZkbCcsCiAgICAgICAgJ3VseCcgPT4gJ2FwcGxpY2F0aW9uL3gtZ2x1bHgnLAogICAgICAgICd1bWonID0+ICdhcHBsaWNhdGlvbi92bmQudW1hamluJywKICAgICAgICAndW5pdHl3ZWInID0+ICdhcHBsaWNhdGlvbi92bmQudW5pdHknLAogICAgICAgICd1bycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC51b21sK3htbCcsCiAgICAgICAgJ3VvbWwnID0+ICdhcHBsaWNhdGlvbi92bmQudW9tbCt4bWwnLAogICAgICAgICd1cmknID0+ICd0ZXh0L3VyaS1saXN0JywKICAgICAgICAndXJpcycgPT4gJ3RleHQvdXJpLWxpc3QnLAogICAgICAgICd1cmxzJyA9PiAndGV4dC91cmktbGlzdCcsCiAgICAgICAgJ3VzZGEnID0+ICdtb2RlbC92bmQudXNkYScsCiAgICAgICAgJ3VzZHonID0+ICdtb2RlbC92bmQudXNkeit6aXAnLAogICAgICAgICd1c3RhcicgPT4gJ2FwcGxpY2F0aW9uL3gtdXN0YXInLAogICAgICAgICd1dHonID0+ICdhcHBsaWNhdGlvbi92bmQudWlxLnRoZW1lJywKICAgICAgICAndXUnID0+ICd0ZXh0L3gtdXVlbmNvZGUnLAogICAgICAgICd1dmEnID0+ICdhdWRpby92bmQuZGVjZS5hdWRpbycsCiAgICAgICAgJ3V2ZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kZWNlLmRhdGEnLAogICAgICAgICd1dmYnID0+ICdhcHBsaWNhdGlvbi92bmQuZGVjZS5kYXRhJywKICAgICAgICAndXZnJyA9PiAnaW1hZ2Uvdm5kLmRlY2UuZ3JhcGhpYycsCiAgICAgICAgJ3V2aCcgPT4gJ3ZpZGVvL3ZuZC5kZWNlLmhkJywKICAgICAgICAndXZpJyA9PiAnaW1hZ2Uvdm5kLmRlY2UuZ3JhcGhpYycsCiAgICAgICAgJ3V2bScgPT4gJ3ZpZGVvL3ZuZC5kZWNlLm1vYmlsZScsCiAgICAgICAgJ3V2cCcgPT4gJ3ZpZGVvL3ZuZC5kZWNlLnBkJywKICAgICAgICAndXZzJyA9PiAndmlkZW8vdm5kLmRlY2Uuc2QnLAogICAgICAgICd1dnQnID0+ICdhcHBsaWNhdGlvbi92bmQuZGVjZS50dG1sK3htbCcsCiAgICAgICAgJ3V2dScgPT4gJ3ZpZGVvL3ZuZC51dnZ1Lm1wNCcsCiAgICAgICAgJ3V2dicgPT4gJ3ZpZGVvL3ZuZC5kZWNlLnZpZGVvJywKICAgICAgICAndXZ2YScgPT4gJ2F1ZGlvL3ZuZC5kZWNlLmF1ZGlvJywKICAgICAgICAndXZ2ZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kZWNlLmRhdGEnLAogICAgICAgICd1dnZmJyA9PiAnYXBwbGljYXRpb24vdm5kLmRlY2UuZGF0YScsCiAgICAgICAgJ3V2dmcnID0+ICdpbWFnZS92bmQuZGVjZS5ncmFwaGljJywKICAgICAgICAndXZ2aCcgPT4gJ3ZpZGVvL3ZuZC5kZWNlLmhkJywKICAgICAgICAndXZ2aScgPT4gJ2ltYWdlL3ZuZC5kZWNlLmdyYXBoaWMnLAogICAgICAgICd1dnZtJyA9PiAndmlkZW8vdm5kLmRlY2UubW9iaWxlJywKICAgICAgICAndXZ2cCcgPT4gJ3ZpZGVvL3ZuZC5kZWNlLnBkJywKICAgICAgICAndXZ2cycgPT4gJ3ZpZGVvL3ZuZC5kZWNlLnNkJywKICAgICAgICAndXZ2dCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kZWNlLnR0bWwreG1sJywKICAgICAgICAndXZ2dScgPT4gJ3ZpZGVvL3ZuZC51dnZ1Lm1wNCcsCiAgICAgICAgJ3V2dnYnID0+ICd2aWRlby92bmQuZGVjZS52aWRlbycsCiAgICAgICAgJ3V2dngnID0+ICdhcHBsaWNhdGlvbi92bmQuZGVjZS51bnNwZWNpZmllZCcsCiAgICAgICAgJ3V2dnonID0+ICdhcHBsaWNhdGlvbi92bmQuZGVjZS56aXAnLAogICAgICAgICd1dngnID0+ICdhcHBsaWNhdGlvbi92bmQuZGVjZS51bnNwZWNpZmllZCcsCiAgICAgICAgJ3V2eicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kZWNlLnppcCcsCiAgICAgICAgJ3Zib3gnID0+ICdhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmJveCcsCiAgICAgICAgJ3Zib3gtZXh0cGFjaycgPT4gJ2FwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12Ym94LWV4dHBhY2snLAogICAgICAgICd2Y2FyZCcgPT4gJ3RleHQvdmNhcmQnLAogICAgICAgICd2Y2QnID0+ICdhcHBsaWNhdGlvbi94LWNkbGluaycsCiAgICAgICAgJ3ZjZicgPT4gJ3RleHQveC12Y2FyZCcsCiAgICAgICAgJ3ZjZycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdmNhcmQnLAogICAgICAgICd2Y3MnID0+ICd0ZXh0L3gtdmNhbGVuZGFyJywKICAgICAgICAndmN4JyA9PiAnYXBwbGljYXRpb24vdm5kLnZjeCcsCiAgICAgICAgJ3ZkaScgPT4gJ2FwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12ZGknLAogICAgICAgICd2ZHMnID0+ICdtb2RlbC92bmQuc2FwLnZkcycsCiAgICAgICAgJ3ZkeCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy12aXNpby52aWV3ZXInLAogICAgICAgICd2ZWMnID0+ICdhcHBsaWNhdGlvbi92ZWMreG1sJywKICAgICAgICAndmhkJyA9PiAnYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZoZCcsCiAgICAgICAgJ3ZpcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC52aXNpb25hcnknLAogICAgICAgICd2aXYnID0+ICd2aWRlby92bmQudml2bycsCiAgICAgICAgJ3ZtZGsnID0+ICdhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdm1kaycsCiAgICAgICAgJ3ZvYicgPT4gJ3ZpZGVvL3gtbXMtdm9iJywKICAgICAgICAndm9yJyA9PiAnYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi53cml0ZXInLAogICAgICAgICd2b3gnID0+ICdhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtYmluJywKICAgICAgICAndnJtbCcgPT4gJ21vZGVsL3ZybWwnLAogICAgICAgICd2c2QnID0+ICdhcHBsaWNhdGlvbi92bmQudmlzaW8nLAogICAgICAgICd2c2R4JyA9PiAnYXBwbGljYXRpb24vdm5kLnZpc2lvJywKICAgICAgICAndnNmJyA9PiAnYXBwbGljYXRpb24vdm5kLnZzZicsCiAgICAgICAgJ3ZzcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC52aXNpbycsCiAgICAgICAgJ3ZzdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC52aXNpbycsCiAgICAgICAgJ3ZzdycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC52aXNpbycsCiAgICAgICAgJ3Z0ZicgPT4gJ2ltYWdlL3ZuZC52YWx2ZS5zb3VyY2UudGV4dHVyZScsCiAgICAgICAgJ3Z0dCcgPT4gJ3RleHQvdnR0JywKICAgICAgICAndnR1JyA9PiAnbW9kZWwvdm5kLnZ0dScsCiAgICAgICAgJ3Z0eCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC52aXNpbycsCiAgICAgICAgJ3Z4bWwnID0+ICdhcHBsaWNhdGlvbi92b2ljZXhtbCt4bWwnLAogICAgICAgICd3M2QnID0+ICdhcHBsaWNhdGlvbi94LWRpcmVjdG9yJywKICAgICAgICAnd2FkJyA9PiAnYXBwbGljYXRpb24veC1kb29tJywKICAgICAgICAnd2FkbCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zdW4ud2FkbCt4bWwnLAogICAgICAgICd3YXInID0+ICdhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUnLAogICAgICAgICd3YXNtJyA9PiAnYXBwbGljYXRpb24vd2FzbScsCiAgICAgICAgJ3dhdicgPT4gJ2F1ZGlvL3dhdicsCiAgICAgICAgJ3dheCcgPT4gJ2F1ZGlvL3gtbXMtd2F4JywKICAgICAgICAnd2JtcCcgPT4gJ2ltYWdlL3ZuZC53YXAud2JtcCcsCiAgICAgICAgJ3dicycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jcml0aWNhbHRvb2xzLndicyt4bWwnLAogICAgICAgICd3YnhtbCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC53YXAud2J4bWwnLAogICAgICAgICd3Y20nID0+ICdhcHBsaWNhdGlvbi92bmQubXMtd29ya3MnLAogICAgICAgICd3ZGInID0+ICdhcHBsaWNhdGlvbi92bmQubXMtd29ya3MnLAogICAgICAgICd3ZHAnID0+ICdpbWFnZS92bmQubXMtcGhvdG8nLAogICAgICAgICd3ZWJhJyA9PiAnYXVkaW8vd2VibScsCiAgICAgICAgJ3dlYmFwcCcgPT4gJ2FwcGxpY2F0aW9uL3gtd2ViLWFwcC1tYW5pZmVzdCtqc29uJywKICAgICAgICAnd2VibScgPT4gJ3ZpZGVvL3dlYm0nLAogICAgICAgICd3ZWJtYW5pZmVzdCcgPT4gJ2FwcGxpY2F0aW9uL21hbmlmZXN0K2pzb24nLAogICAgICAgICd3ZWJwJyA9PiAnaW1hZ2Uvd2VicCcsCiAgICAgICAgJ3dnJyA9PiAnYXBwbGljYXRpb24vdm5kLnBtaS53aWRnZXQnLAogICAgICAgICd3Z3NsJyA9PiAndGV4dC93Z3NsJywKICAgICAgICAnd2d0JyA9PiAnYXBwbGljYXRpb24vd2lkZ2V0JywKICAgICAgICAnd2lmJyA9PiAnYXBwbGljYXRpb24vd2F0Y2hlcmluZm8reG1sJywKICAgICAgICAnd2tzJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLXdvcmtzJywKICAgICAgICAnd20nID0+ICd2aWRlby94LW1zLXdtJywKICAgICAgICAnd21hJyA9PiAnYXVkaW8veC1tcy13bWEnLAogICAgICAgICd3bWQnID0+ICdhcHBsaWNhdGlvbi94LW1zLXdtZCcsCiAgICAgICAgJ3dtZicgPT4gJ2ltYWdlL3dtZicsCiAgICAgICAgJ3dtbCcgPT4gJ3RleHQvdm5kLndhcC53bWwnLAogICAgICAgICd3bWxjJyA9PiAnYXBwbGljYXRpb24vdm5kLndhcC53bWxjJywKICAgICAgICAnd21scycgPT4gJ3RleHQvdm5kLndhcC53bWxzY3JpcHQnLAogICAgICAgICd3bWxzYycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC53YXAud21sc2NyaXB0YycsCiAgICAgICAgJ3dtdicgPT4gJ3ZpZGVvL3gtbXMtd212JywKICAgICAgICAnd214JyA9PiAndmlkZW8veC1tcy13bXgnLAogICAgICAgICd3bXonID0+ICdhcHBsaWNhdGlvbi94LW1zLXdteicsCiAgICAgICAgJ3dvZmYnID0+ICdmb250L3dvZmYnLAogICAgICAgICd3b2ZmMicgPT4gJ2ZvbnQvd29mZjInLAogICAgICAgICd3b3JkJyA9PiAnYXBwbGljYXRpb24vbXN3b3JkJywKICAgICAgICAnd3BkJyA9PiAnYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0JywKICAgICAgICAnd3BsJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLXdwbCcsCiAgICAgICAgJ3dwcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy13b3JrcycsCiAgICAgICAgJ3dxZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC53cWQnLAogICAgICAgICd3cmknID0+ICdhcHBsaWNhdGlvbi94LW1zd3JpdGUnLAogICAgICAgICd3cmwnID0+ICdtb2RlbC92cm1sJywKICAgICAgICAnd3NjJyA9PiAnbWVzc2FnZS92bmQud2ZhLndzYycsCiAgICAgICAgJ3dzZGwnID0+ICdhcHBsaWNhdGlvbi93c2RsK3htbCcsCiAgICAgICAgJ3dzcG9saWN5JyA9PiAnYXBwbGljYXRpb24vd3Nwb2xpY3kreG1sJywKICAgICAgICAnd3RiJyA9PiAnYXBwbGljYXRpb24vdm5kLndlYnR1cmJvJywKICAgICAgICAnd3Z4JyA9PiAndmlkZW8veC1tcy13dngnLAogICAgICAgICd4MzInID0+ICdhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtYmluJywKICAgICAgICAneDNkJyA9PiAnbW9kZWwveDNkK3htbCcsCiAgICAgICAgJ3gzZGInID0+ICdtb2RlbC94M2QrZmFzdGluZm9zZXQnLAogICAgICAgICd4M2RieicgPT4gJ21vZGVsL3gzZCtiaW5hcnknLAogICAgICAgICd4M2R2JyA9PiAnbW9kZWwveDNkLXZybWwnLAogICAgICAgICd4M2R2eicgPT4gJ21vZGVsL3gzZCt2cm1sJywKICAgICAgICAneDNkeicgPT4gJ21vZGVsL3gzZCt4bWwnLAogICAgICAgICd4X2InID0+ICdtb2RlbC92bmQucGFyYXNvbGlkLnRyYW5zbWl0LmJpbmFyeScsCiAgICAgICAgJ3hfdCcgPT4gJ21vZGVsL3ZuZC5wYXJhc29saWQudHJhbnNtaXQudGV4dCcsCiAgICAgICAgJ3hhbWwnID0+ICdhcHBsaWNhdGlvbi94YW1sK3htbCcsCiAgICAgICAgJ3hhcCcgPT4gJ2FwcGxpY2F0aW9uL3gtc2lsdmVybGlnaHQtYXBwJywKICAgICAgICAneGFyJyA9PiAnYXBwbGljYXRpb24vdm5kLnhhcmEnLAogICAgICAgICd4YXYnID0+ICdhcHBsaWNhdGlvbi94Y2FwLWF0dCt4bWwnLAogICAgICAgICd4YmFwJyA9PiAnYXBwbGljYXRpb24veC1tcy14YmFwJywKICAgICAgICAneGJkJyA9PiAnYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kb2N1d29ya3MuYmluZGVyJywKICAgICAgICAneGJtJyA9PiAnaW1hZ2UveC14Yml0bWFwJywKICAgICAgICAneGNhJyA9PiAnYXBwbGljYXRpb24veGNhcC1jYXBzK3htbCcsCiAgICAgICAgJ3hjcycgPT4gJ2FwcGxpY2F0aW9uL2NhbGVuZGFyK3htbCcsCiAgICAgICAgJ3hkY2YnID0+ICdhcHBsaWNhdGlvbi92bmQuZ292LnNrLnhtbGRhdGFjb250YWluZXIreG1sJywKICAgICAgICAneGRmJyA9PiAnYXBwbGljYXRpb24veGNhcC1kaWZmK3htbCcsCiAgICAgICAgJ3hkbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG0reG1sJywKICAgICAgICAneGRwJyA9PiAnYXBwbGljYXRpb24vdm5kLmFkb2JlLnhkcCt4bWwnLAogICAgICAgICd4ZHNzYycgPT4gJ2FwcGxpY2F0aW9uL2Rzc2MreG1sJywKICAgICAgICAneGR3JyA9PiAnYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kb2N1d29ya3MnLAogICAgICAgICd4ZWwnID0+ICdhcHBsaWNhdGlvbi94Y2FwLWVsK3htbCcsCiAgICAgICAgJ3hlbmMnID0+ICdhcHBsaWNhdGlvbi94ZW5jK3htbCcsCiAgICAgICAgJ3hlcicgPT4gJ2FwcGxpY2F0aW9uL3BhdGNoLW9wcy1lcnJvcit4bWwnLAogICAgICAgICd4ZmRmJyA9PiAnYXBwbGljYXRpb24veGZkZicsCiAgICAgICAgJ3hmZGwnID0+ICdhcHBsaWNhdGlvbi92bmQueGZkbCcsCiAgICAgICAgJ3hodCcgPT4gJ2FwcGxpY2F0aW9uL3hodG1sK3htbCcsCiAgICAgICAgJ3hodG0nID0+ICdhcHBsaWNhdGlvbi92bmQucHdnLXhodG1sLXByaW50K3htbCcsCiAgICAgICAgJ3hodG1sJyA9PiAnYXBwbGljYXRpb24veGh0bWwreG1sJywKICAgICAgICAneGh2bWwnID0+ICdhcHBsaWNhdGlvbi94dit4bWwnLAogICAgICAgICd4aWYnID0+ICdpbWFnZS92bmQueGlmZicsCiAgICAgICAgJ3hsJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJywKICAgICAgICAneGxhJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJywKICAgICAgICAneGxhbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb2VuYWJsZWQuMTInLAogICAgICAgICd4bGMnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLAogICAgICAgICd4bGYnID0+ICdhcHBsaWNhdGlvbi94bGlmZit4bWwnLAogICAgICAgICd4bG0nID0+ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLAogICAgICAgICd4bHMnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLAogICAgICAgICd4bHNiJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0LmJpbmFyeS5tYWNyb2VuYWJsZWQuMTInLAogICAgICAgICd4bHNtJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0Lm1hY3JvZW5hYmxlZC4xMicsCiAgICAgICAgJ3hsc3gnID0+ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsCiAgICAgICAgJ3hsdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcsCiAgICAgICAgJ3hsdG0nID0+ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyJywKICAgICAgICAneGx0eCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRlbXBsYXRlJywKICAgICAgICAneGx3JyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJywKICAgICAgICAneG0nID0+ICdhdWRpby94bScsCiAgICAgICAgJ3htbCcgPT4gJ2FwcGxpY2F0aW9uL3htbCcsCiAgICAgICAgJ3hucycgPT4gJ2FwcGxpY2F0aW9uL3hjYXAtbnMreG1sJywKICAgICAgICAneG8nID0+ICdhcHBsaWNhdGlvbi92bmQub2xwYy1zdWdhcicsCiAgICAgICAgJ3hvcCcgPT4gJ2FwcGxpY2F0aW9uL3hvcCt4bWwnLAogICAgICAgICd4cGknID0+ICdhcHBsaWNhdGlvbi94LXhwaW5zdGFsbCcsCiAgICAgICAgJ3hwbCcgPT4gJ2FwcGxpY2F0aW9uL3hwcm9jK3htbCcsCiAgICAgICAgJ3hwbScgPT4gJ2ltYWdlL3gteHBpeG1hcCcsCiAgICAgICAgJ3hwcicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5pcy14cHInLAogICAgICAgICd4cHMnID0+ICdhcHBsaWNhdGlvbi92bmQubXMteHBzZG9jdW1lbnQnLAogICAgICAgICd4cHcnID0+ICdhcHBsaWNhdGlvbi92bmQuaW50ZXJjb24uZm9ybW5ldCcsCiAgICAgICAgJ3hweCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5pbnRlcmNvbi5mb3JtbmV0JywKICAgICAgICAneHNkJyA9PiAnYXBwbGljYXRpb24veG1sJywKICAgICAgICAneHNmJyA9PiAnYXBwbGljYXRpb24vcHJzLnhzZit4bWwnLAogICAgICAgICd4c2wnID0+ICdhcHBsaWNhdGlvbi94c2x0K3htbCcsCiAgICAgICAgJ3hzbHQnID0+ICdhcHBsaWNhdGlvbi94c2x0K3htbCcsCiAgICAgICAgJ3hzbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zeW5jbWwreG1sJywKICAgICAgICAneHNwZicgPT4gJ2FwcGxpY2F0aW9uL3hzcGYreG1sJywKICAgICAgICAneHVsJyA9PiAnYXBwbGljYXRpb24vdm5kLm1vemlsbGEueHVsK3htbCcsCiAgICAgICAgJ3h2bScgPT4gJ2FwcGxpY2F0aW9uL3h2K3htbCcsCiAgICAgICAgJ3h2bWwnID0+ICdhcHBsaWNhdGlvbi94dit4bWwnLAogICAgICAgICd4d2QnID0+ICdpbWFnZS94LXh3aW5kb3dkdW1wJywKICAgICAgICAneHl6JyA9PiAnY2hlbWljYWwveC14eXonLAogICAgICAgICd4eicgPT4gJ2FwcGxpY2F0aW9uL3gteHonLAogICAgICAgICd5YW1sJyA9PiAndGV4dC95YW1sJywKICAgICAgICAneWFuZycgPT4gJ2FwcGxpY2F0aW9uL3lhbmcnLAogICAgICAgICd5aW4nID0+ICdhcHBsaWNhdGlvbi95aW4reG1sJywKICAgICAgICAneW1sJyA9PiAndGV4dC95YW1sJywKICAgICAgICAneW1wJyA9PiAndGV4dC94LXN1c2UteW1wJywKICAgICAgICAneicgPT4gJ2FwcGxpY2F0aW9uL3gtY29tcHJlc3MnLAogICAgICAgICd6MScgPT4gJ2FwcGxpY2F0aW9uL3gtem1hY2hpbmUnLAogICAgICAgICd6MicgPT4gJ2FwcGxpY2F0aW9uL3gtem1hY2hpbmUnLAogICAgICAgICd6MycgPT4gJ2FwcGxpY2F0aW9uL3gtem1hY2hpbmUnLAogICAgICAgICd6NCcgPT4gJ2FwcGxpY2F0aW9uL3gtem1hY2hpbmUnLAogICAgICAgICd6NScgPT4gJ2FwcGxpY2F0aW9uL3gtem1hY2hpbmUnLAogICAgICAgICd6NicgPT4gJ2FwcGxpY2F0aW9uL3gtem1hY2hpbmUnLAogICAgICAgICd6NycgPT4gJ2FwcGxpY2F0aW9uL3gtem1hY2hpbmUnLAogICAgICAgICd6OCcgPT4gJ2FwcGxpY2F0aW9uL3gtem1hY2hpbmUnLAogICAgICAgICd6YXonID0+ICdhcHBsaWNhdGlvbi92bmQuenphenouZGVjayt4bWwnLAogICAgICAgICd6aXAnID0+ICdhcHBsaWNhdGlvbi96aXAnLAogICAgICAgICd6aXInID0+ICdhcHBsaWNhdGlvbi92bmQuenVsJywKICAgICAgICAnemlyeicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC56dWwnLAogICAgICAgICd6bW0nID0+ICdhcHBsaWNhdGlvbi92bmQuaGFuZGhlbGQtZW50ZXJ0YWlubWVudCt4bWwnLAogICAgICAgICd6c2gnID0+ICd0ZXh0L3gtc2NyaXB0enNoJywKICAgIF07CgogICAgLyoqCiAgICAgKiBEZXRlcm1pbmVzIHRoZSBtaW1ldHlwZSBvZiBhIGZpbGUgYnkgbG9va2luZyBhdCBpdHMgZXh0ZW5zaW9uLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2pzaHR0cC9taW1lLWRiL21hc3Rlci9kYi5qc29uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUZpbGVuYW1lKHN0cmluZyAkZmlsZW5hbWUpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmZyb21FeHRlbnNpb24ocGF0aGluZm8oJGZpbGVuYW1lLCBQQVRISU5GT19FWFRFTlNJT04pKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1hcHMgYSBmaWxlIGV4dGVuc2lvbnMgdG8gYSBtaW1ldHlwZS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9qc2h0dHAvbWltZS1kYi9tYXN0ZXIvZGIuanNvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21FeHRlbnNpb24oc3RyaW5nICRleHRlbnNpb24pOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Ok1JTUVfVFlQRVNbc3RydG9sb3dlcigkZXh0ZW5zaW9uKV0gPz8gbnVsbDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/MultipartStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBTdHJlYW0gdGhhdCB3aGVuIHJlYWQgcmV0dXJucyBieXRlcyBmb3IgYSBzdHJlYW1pbmcgbXVsdGlwYXJ0IG9yCiAqIG11bHRpcGFydC9mb3JtLWRhdGEgc3RyZWFtLgogKi8KZmluYWwgY2xhc3MgTXVsdGlwYXJ0U3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHVzZSBTdHJlYW1EZWNvcmF0b3JUcmFpdDsKCiAgICAvKiogQHZhciBzdHJpbmcgKi8KICAgIHByaXZhdGUgJGJvdW5kYXJ5OwoKICAgIC8qKiBAdmFyIFN0cmVhbUludGVyZmFjZSAqLwogICAgcHJpdmF0ZSAkc3RyZWFtOwoKICAgIHByaXZhdGUgY29uc3QgQk9VTkRBUllfQ0hBUlMgPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonKCkrXywtLi86PT8gIjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAkZWxlbWVudHMgQXJyYXkgb2YgYXNzb2NpYXRpdmUgYXJyYXlzLCBlYWNoIGNvbnRhaW5pbmcgYQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCAibmFtZSIga2V5IG1hcHBpbmcgdG8gdGhlIGZvcm0gZmllbGQsCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIGEgcmVxdWlyZWQgImNvbnRlbnRzIiBrZXkgbWFwcGluZyB0byBhbnkKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uLWFycmF5IHZhbHVlIGFjY2VwdGVkIGJ5IFV0aWxzOjpzdHJlYW1Gb3IoKQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9uLXN0cmluZyBzY2FsYXIgZmllbGQgdmFsdWVzIGFyZSBjYXN0IHRvCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyksIG9yIGFuIGFycmF5IGZvciBuZXN0ZWQgZXhwYW5zaW9uLgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25hbCBrZXlzIGluY2x1ZGUgImhlYWRlcnMiIChhc3NvY2lhdGl2ZQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSBvZiBjdXN0b20gaGVhZGVycykgYW5kICJmaWxlbmFtZSIgKHN0cmluZwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBzZW5kIGFzIHRoZSBmaWxlbmFtZSBpbiB0aGUgcGFydCkuCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gImNvbnRlbnRzIiBpcyBhbiBhcnJheSwgaXQgaXMgcmVjdXJzaXZlbHkKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQgaW50byBtdWx0aXBsZSBmaWVsZHMgdXNpbmcgYnJhY2tldCBub3RhdGlvbgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiwgbmFtZVswXVtrZXldKS4gRW1wdHkgYXJyYXlzIHByb2R1Y2Ugbm8gZmllbGRzLgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgImZpbGVuYW1lIiBhbmQgImhlYWRlcnMiIG9wdGlvbnMgY2Fubm90IGJlIHVzZWQKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhcnJheSBjb250ZW50cy4KICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkYm91bmRhcnkgWW91IGNhbiBvcHRpb25hbGx5IHByb3ZpZGUgYSBzcGVjaWZpYyBib3VuZGFyeQogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGVsZW1lbnRzID0gW10sID9zdHJpbmcgJGJvdW5kYXJ5ID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJGJvdW5kYXJ5ICE9PSBudWxsICYmICFzZWxmOjppc1ZhbGlkQm91bmRhcnkoJGJvdW5kYXJ5KSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgYW4gaW52YWxpZCBtdWx0aXBhcnQgYm91bmRhcnkgdG8gTXVsdGlwYXJ0U3RyZWFtOjpfX2NvbnN0cnVjdCgpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVqZWN0cyBpbnZhbGlkIG11bHRpcGFydCBib3VuZGFyaWVzLicKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5ib3VuZGFyeSA9ICRib3VuZGFyeSA/OiBiaW4yaGV4KHJhbmRvbV9ieXRlcygyMCkpOwogICAgICAgICR0aGlzLT5zdHJlYW0gPSAkdGhpcy0+Y3JlYXRlU3RyZWFtKCRlbGVtZW50cyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEJvdW5kYXJ5KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Ym91bmRhcnk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzV3JpdGFibGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaGVhZGVycyBuZWVkZWQgYmVmb3JlIHRyYW5zZmVycmluZyB0aGUgY29udGVudCBvZiBhIFBPU1QgZmlsZQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIHN0cmluZz4gJGhlYWRlcnMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRIZWFkZXJzKGFycmF5ICRoZWFkZXJzKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHN0ciA9ICcnOwogICAgICAgIGZvcmVhY2ggKCRoZWFkZXJzIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICRrZXkgPSAoc3RyaW5nKSAka2V5OwogICAgICAgICAgICAkc3RyIC49ICJ7JGtleX06IHskdmFsdWV9XHJcbiI7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gIi0teyR0aGlzLT5ib3VuZGFyeX1cclxuIi50cmltKCRzdHIpLiJcclxuXHJcbiI7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgdGhlIGFnZ3JlZ2F0ZSBzdHJlYW0gdGhhdCB3aWxsIGJlIHVzZWQgdG8gdXBsb2FkIHRoZSBQT1NUIGRhdGEKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNyZWF0ZVN0cmVhbShhcnJheSAkZWxlbWVudHMgPSBbXSk6IFN0cmVhbUludGVyZmFjZQogICAgewogICAgICAgICRzdHJlYW0gPSBuZXcgQXBwZW5kU3RyZWFtKCk7CgogICAgICAgIGZvcmVhY2ggKCRlbGVtZW50cyBhcyAkZWxlbWVudCkgewogICAgICAgICAgICBpZiAoIWlzX2FycmF5KCRlbGVtZW50KSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxVbmV4cGVjdGVkVmFsdWVFeGNlcHRpb24oJ0FuIGFycmF5IGlzIGV4cGVjdGVkJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPmFkZEVsZW1lbnQoJHN0cmVhbSwgJGVsZW1lbnQpOwogICAgICAgIH0KCiAgICAgICAgLy8gQWRkIHRoZSB0cmFpbGluZyBib3VuZGFyeSB3aXRoIENSTEYKICAgICAgICAkc3RyZWFtLT5hZGRTdHJlYW0oVXRpbHM6OnN0cmVhbUZvcigiLS17JHRoaXMtPmJvdW5kYXJ5fS0tXHJcbiIpKTsKCiAgICAgICAgcmV0dXJuICRzdHJlYW07CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGRFbGVtZW50KEFwcGVuZFN0cmVhbSAkc3RyZWFtLCBhcnJheSAkZWxlbWVudCk6IHZvaWQKICAgIHsKICAgICAgICBmb3JlYWNoIChbJ2NvbnRlbnRzJywgJ25hbWUnXSBhcyAka2V5KSB7CiAgICAgICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJBICd7JGtleX0nIGtleSBpcyByZXF1aXJlZCIpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIWlzX3N0cmluZygkZWxlbWVudFsnbmFtZSddKSAmJiAhaXNfaW50KCRlbGVtZW50WyduYW1lJ10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJUaGUgJ25hbWUnIGtleSBtdXN0IGJlIGEgc3RyaW5nIG9yIGludGVnZXIiKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc19hcnJheSgkZWxlbWVudFsnY29udGVudHMnXSkpIHsKICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2ZpbGVuYW1lJywgJGVsZW1lbnQpIHx8IGFycmF5X2tleV9leGlzdHMoJ2hlYWRlcnMnLCAkZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJUaGUgJ2ZpbGVuYW1lJyBhbmQgJ2hlYWRlcnMnIG9wdGlvbnMgY2Fubm90IGJlIHVzZWQgd2hlbiAnY29udGVudHMnIGlzIGFuIGFycmF5IgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPmFkZE5lc3RlZEVsZW1lbnRzKCRzdHJlYW0sICRlbGVtZW50Wydjb250ZW50cyddLCAoc3RyaW5nKSAkZWxlbWVudFsnbmFtZSddKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRjb250ZW50cyA9ICRlbGVtZW50Wydjb250ZW50cyddOwogICAgICAgIGlmIChpc19zY2FsYXIoJGNvbnRlbnRzKSAmJiAhaXNfc3RyaW5nKCRjb250ZW50cykpIHsKICAgICAgICAgICAgLy8gTXVsdGlwYXJ0IGZpZWxkIHZhbHVlcyBhcmUgYnl0ZSBzdHJpbmdzIG9uIHRoZSB3aXJlLCBzbyBmaW5pdGUKICAgICAgICAgICAgLy8gbnVtZXJpYyBhbmQgYm9vbGVhbiBmaWVsZCB2YWx1ZXMgYXJlIGNhc3QgdG8gc3RyaW5nIGhlcmUgcmF0aGVyCiAgICAgICAgICAgIC8vIHRoYW4gdHJpcHBpbmcgc3RyZWFtRm9yKCkncyBub24tc3RyaW5nLXNjYWxhciBkZXByZWNhdGlvbi4gTm9uLWZpbml0ZQogICAgICAgICAgICAvLyBmbG9hdHMgYXJlIGRlcHJlY2F0ZWQgYW5kIG5vcm1hbGl6ZWQgaGVyZSB0b28sIHNvIHRoZSBkZXByZWNhdGlvbiBpcwogICAgICAgICAgICAvLyByZXBvcnRlZCBhZ2FpbnN0IE11bHRpcGFydFN0cmVhbSBpbnN0ZWFkIG9mIHRyYW5zaXRpdmVseSB0aHJvdWdoCiAgICAgICAgICAgIC8vIHN0cmVhbUZvcigpLgogICAgICAgICAgICBpZiAoaXNfZmxvYXQoJGNvbnRlbnRzKSAmJiAhaXNfZmluaXRlKCRjb250ZW50cykpIHsKICAgICAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgICAgICcyLjEyJywKICAgICAgICAgICAgICAgICAgICAnUGFzc2luZyBhIG5vbi1maW5pdGUgZmxvYXQgYXMgbXVsdGlwYXJ0IGNvbnRlbnRzIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVqZWN0cyBub24tZmluaXRlIGZsb2F0cy4nCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRjb250ZW50cyA9IGlzX25hbigkY29udGVudHMpID8gJ05BTicgOiAoJGNvbnRlbnRzID4gMCA/ICdJTkYnIDogJy1JTkYnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGNvbnRlbnRzID0gKHN0cmluZykgJGNvbnRlbnRzOwogICAgICAgIH0KICAgICAgICAkZWxlbWVudFsnY29udGVudHMnXSA9IFV0aWxzOjpzdHJlYW1Gb3IoJGNvbnRlbnRzKTsKCiAgICAgICAgaWYgKGVtcHR5KCRlbGVtZW50WydmaWxlbmFtZSddKSkgewogICAgICAgICAgICAkdXJpID0gJGVsZW1lbnRbJ2NvbnRlbnRzJ10tPmdldE1ldGFkYXRhKCd1cmknKTsKICAgICAgICAgICAgaWYgKCR1cmkgJiYgXGlzX3N0cmluZygkdXJpKSAmJiBcc3Vic3RyKCR1cmksIDAsIDYpICE9PSAncGhwOi8vJyAmJiBcc3Vic3RyKCR1cmksIDAsIDcpICE9PSAnZGF0YTovLycpIHsKICAgICAgICAgICAgICAgICRlbGVtZW50WydmaWxlbmFtZSddID0gJHVyaTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgWyRib2R5LCAkaGVhZGVyc10gPSAkdGhpcy0+Y3JlYXRlRWxlbWVudCgKICAgICAgICAgICAgKHN0cmluZykgJGVsZW1lbnRbJ25hbWUnXSwKICAgICAgICAgICAgJGVsZW1lbnRbJ2NvbnRlbnRzJ10sCiAgICAgICAgICAgICRlbGVtZW50WydmaWxlbmFtZSddID8/IG51bGwsCiAgICAgICAgICAgICRlbGVtZW50WydoZWFkZXJzJ10gPz8gW10KICAgICAgICApOwoKICAgICAgICAkc3RyZWFtLT5hZGRTdHJlYW0oVXRpbHM6OnN0cmVhbUZvcigkdGhpcy0+Z2V0SGVhZGVycygkaGVhZGVycykpKTsKICAgICAgICAkc3RyZWFtLT5hZGRTdHJlYW0oJGJvZHkpOwogICAgICAgICRzdHJlYW0tPmFkZFN0cmVhbShVdGlsczo6c3RyZWFtRm9yKCJcclxuIikpOwogICAgfQoKICAgIC8qKgogICAgICogUmVjdXJzaXZlbHkgZXhwYW5kIGFycmF5IGNvbnRlbnRzIGludG8gbXVsdGlwbGUgZm9ybSBmaWVsZHMuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5PGFycmF5LWtleSwgbWl4ZWQ+ICRjb250ZW50cwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZE5lc3RlZEVsZW1lbnRzKEFwcGVuZFN0cmVhbSAkc3RyZWFtLCBhcnJheSAkY29udGVudHMsIHN0cmluZyAkcm9vdCk6IHZvaWQKICAgIHsKICAgICAgICBmb3JlYWNoICgkY29udGVudHMgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgJGZpZWxkTmFtZSA9ICRyb290ID09PSAnJyA/IHNwcmludGYoJ1slc10nLCAoc3RyaW5nKSAka2V5KSA6IHNwcmludGYoJyVzWyVzXScsICRyb290LCAoc3RyaW5nKSAka2V5KTsKCiAgICAgICAgICAgIGlmIChpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YWRkTmVzdGVkRWxlbWVudHMoJHN0cmVhbSwgJHZhbHVlLCAkZmllbGROYW1lKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5hZGRFbGVtZW50KCRzdHJlYW0sIFsnbmFtZScgPT4gJGZpZWxkTmFtZSwgJ2NvbnRlbnRzJyA9PiAkdmFsdWVdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPiAkaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl7MDogU3RyZWFtSW50ZXJmYWNlLCAxOiBhcnJheTxhcnJheS1rZXksIHN0cmluZz59CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY3JlYXRlRWxlbWVudChzdHJpbmcgJG5hbWUsIFN0cmVhbUludGVyZmFjZSAkc3RyZWFtLCA/c3RyaW5nICRmaWxlbmFtZSwgYXJyYXkgJGhlYWRlcnMpOiBhcnJheQogICAgewogICAgICAgICRoZWFkZXJzID0gc2VsZjo6bm9ybWFsaXplUGFydEhlYWRlcnMoJGhlYWRlcnMpOwoKICAgICAgICAvLyBTZXQgYSBkZWZhdWx0IGNvbnRlbnQtZGlzcG9zaXRpb24gaGVhZGVyIGlmIG9uZSB3YXMgbm8gcHJvdmlkZWQKICAgICAgICAkZGlzcG9zaXRpb24gPSBzZWxmOjpnZXRIZWFkZXIoJGhlYWRlcnMsICdjb250ZW50LWRpc3Bvc2l0aW9uJyk7CiAgICAgICAgaWYgKCEkZGlzcG9zaXRpb24pIHsKICAgICAgICAgICAgJGhlYWRlcnNbJ0NvbnRlbnQtRGlzcG9zaXRpb24nXSA9ICgkZmlsZW5hbWUgPT09ICcwJyB8fCAkZmlsZW5hbWUpCiAgICAgICAgICAgICAgICA/IHNwcmludGYoCiAgICAgICAgICAgICAgICAgICAgJ2Zvcm0tZGF0YTsgbmFtZT0iJXMiOyBmaWxlbmFtZT0iJXMiJywKICAgICAgICAgICAgICAgICAgICAkbmFtZSwKICAgICAgICAgICAgICAgICAgICBiYXNlbmFtZSgkZmlsZW5hbWUpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICA6ICJmb3JtLWRhdGE7IG5hbWU9XCJ7JG5hbWV9XCIiOwogICAgICAgIH0KCiAgICAgICAgLy8gU2V0IGEgZGVmYXVsdCBjb250ZW50LWxlbmd0aCBoZWFkZXIgaWYgb25lIHdhcyBubyBwcm92aWRlZAogICAgICAgICRsZW5ndGggPSBzZWxmOjpnZXRIZWFkZXIoJGhlYWRlcnMsICdjb250ZW50LWxlbmd0aCcpOwogICAgICAgIGlmICghJGxlbmd0aCkgewogICAgICAgICAgICBpZiAoJGxlbmd0aCA9ICRzdHJlYW0tPmdldFNpemUoKSkgewogICAgICAgICAgICAgICAgJGhlYWRlcnNbJ0NvbnRlbnQtTGVuZ3RoJ10gPSAoc3RyaW5nKSAkbGVuZ3RoOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBTZXQgYSBkZWZhdWx0IENvbnRlbnQtVHlwZSBpZiBvbmUgd2FzIG5vdCBzdXBwbGllZAogICAgICAgICR0eXBlID0gc2VsZjo6Z2V0SGVhZGVyKCRoZWFkZXJzLCAnY29udGVudC10eXBlJyk7CiAgICAgICAgaWYgKCEkdHlwZSAmJiAoJGZpbGVuYW1lID09PSAnMCcgfHwgJGZpbGVuYW1lKSkgewogICAgICAgICAgICAkaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSBNaW1lVHlwZTo6ZnJvbUZpbGVuYW1lKCRmaWxlbmFtZSkgPz8gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWyRzdHJlYW0sICRoZWFkZXJzXTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIHN0cmluZz4gJGhlYWRlcnMKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0SGVhZGVyKGFycmF5ICRoZWFkZXJzLCBzdHJpbmcgJGtleSk6ID9zdHJpbmcKICAgIHsKICAgICAgICAkbG93ZXJjYXNlSGVhZGVyID0gc3RydG9sb3dlcigka2V5KTsKICAgICAgICBmb3JlYWNoICgkaGVhZGVycyBhcyAkayA9PiAkdikgewogICAgICAgICAgICBpZiAoc3RydG9sb3dlcigoc3RyaW5nKSAkaykgPT09ICRsb3dlcmNhc2VIZWFkZXIpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaXNWYWxpZEJvdW5kYXJ5KHN0cmluZyAkYm91bmRhcnkpOiBib29sCiAgICB7CiAgICAgICAgJGxlbmd0aCA9IHN0cmxlbigkYm91bmRhcnkpOwoKICAgICAgICBpZiAoJGxlbmd0aCA8IDEgfHwgJGxlbmd0aCA+IDcwIHx8ICRib3VuZGFyeVskbGVuZ3RoIC0gMV0gPT09ICcgJykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3Ryc3BuKCRib3VuZGFyeSwgc2VsZjo6Qk9VTkRBUllfQ0hBUlMpID09PSAkbGVuZ3RoOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PGFycmF5LWtleSwgbWl4ZWQ+ICRoZWFkZXJzCiAgICAgKgogICAgICogQHJldHVybiBhcnJheTxhcnJheS1rZXksIHN0cmluZz4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbm9ybWFsaXplUGFydEhlYWRlcnMoYXJyYXkgJGhlYWRlcnMpOiBhcnJheQogICAgewogICAgICAgICRub3JtYWxpemVkID0gW107CgogICAgICAgIGZvcmVhY2ggKCRoZWFkZXJzIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIHNlbGY6OmRlcHJlY2F0ZUludmFsaWRQYXJ0SGVhZGVyTmFtZSgoc3RyaW5nKSAka2V5KTsKCiAgICAgICAgICAgIGlmICghaXNfc3RyaW5nKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgIGlmICghaXNfc2NhbGFyKCR2YWx1ZSkgJiYgJHZhbHVlICE9PSBudWxsICYmICEoaXNfb2JqZWN0KCR2YWx1ZSkgJiYgbWV0aG9kX2V4aXN0cygkdmFsdWUsICdfX3RvU3RyaW5nJykpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgJ011bHRpcGFydCBwYXJ0IGhlYWRlciB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9yIHN0cmluZ2FibGUgdmFsdWUgYnV0ICVzIHByb3ZpZGVkLicsCiAgICAgICAgICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIGFzIGEgbXVsdGlwYXJ0IHBhcnQgaGVhZGVyIHZhbHVlIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgc3RyaW5nIG11bHRpcGFydCBwYXJ0IGhlYWRlciB2YWx1ZXMuJywKICAgICAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJHZhbHVlKQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHZhbHVlID0gKHN0cmluZykgJHZhbHVlOwoKICAgICAgICAgICAgc2VsZjo6ZGVwcmVjYXRlSW52YWxpZFBhcnRIZWFkZXJWYWx1ZSgkdmFsdWUpOwoKICAgICAgICAgICAgJG5vcm1hbGl6ZWRbJGtleV0gPSAkdmFsdWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG5vcm1hbGl6ZWQ7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZGVwcmVjYXRlSW52YWxpZFBhcnRIZWFkZXJOYW1lKHN0cmluZyAkbmFtZSk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy9eW2EtekEtWjAtOVwnYCMkJSYqKy5eX3x+IS1dKyQvRCcsICRuYW1lKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgYW4gaW52YWxpZCBtdWx0aXBhcnQgcGFydCBoZWFkZXIgbmFtZSB0byBNdWx0aXBhcnRTdHJlYW0gaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZWplY3RzIGludmFsaWQgbXVsdGlwYXJ0IHBhcnQgaGVhZGVyIG5hbWVzLicKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZGVwcmVjYXRlSW52YWxpZFBhcnRIZWFkZXJWYWx1ZShzdHJpbmcgJHZhbHVlKTogdm9pZAogICAgewogICAgICAgIGlmICghcHJlZ19tYXRjaCgnL15bXHgyMFx4MDlceDIxLVx4N0VceDgwLVx4RkZdKiQvRCcsICR2YWx1ZSkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nIGFuIGludmFsaWQgbXVsdGlwYXJ0IHBhcnQgaGVhZGVyIHZhbHVlIHRvIE11bHRpcGFydFN0cmVhbSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlamVjdHMgaW52YWxpZCBtdWx0aXBhcnQgcGFydCBoZWFkZXIgdmFsdWVzLicKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/NoSeekStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBTdHJlYW0gZGVjb3JhdG9yIHRoYXQgcHJldmVudHMgYSBzdHJlYW0gZnJvbSBiZWluZyBzZWVrZWQuCiAqLwpmaW5hbCBjbGFzcyBOb1NlZWtTdHJlYW0gaW1wbGVtZW50cyBTdHJlYW1JbnRlcmZhY2UKewogICAgdXNlIFN0cmVhbURlY29yYXRvclRyYWl0OwoKICAgIC8qKiBAdmFyIFN0cmVhbUludGVyZmFjZSAqLwogICAgcHJpdmF0ZSAkc3RyZWFtOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZWVrKCRvZmZzZXQsICR3aGVuY2UgPSBTRUVLX1NFVCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIVxpc19pbnQoJG9mZnNldCkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFN0cmVhbUludGVyZmFjZTo6c2VlaygpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgaW50IGZvciAkb2Zmc2V0LicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJG9mZnNldCkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICghXGlzX2ludCgkd2hlbmNlKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gU3RyZWFtSW50ZXJmYWNlOjpzZWVrKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZXF1aXJlcyBpbnQgZm9yICR3aGVuY2UuJywKICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkd2hlbmNlKQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDYW5ub3Qgc2VlayBhIE5vU2Vla1N0cmVhbScpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1NlZWthYmxlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/PumpStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBQcm92aWRlcyBhIHJlYWQgb25seSBzdHJlYW0gdGhhdCBwdW1wcyBkYXRhIGZyb20gYSBQSFAgY2FsbGFibGUuCiAqCiAqIFdoZW4gaW52b2tpbmcgdGhlIHByb3ZpZGVkIGNhbGxhYmxlLCB0aGUgUHVtcFN0cmVhbSB3aWxsIHBhc3MgdGhlIHN1Z2dlc3RlZAogKiBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCB0byB0aGUgY2FsbGFibGUuIFRoZSBjYWxsYWJsZSBjYW4gY2hvb3NlIHRvIGlnbm9yZQogKiB0aGlzIHZhbHVlIGFuZCByZXR1cm4gZmV3ZXIgb3IgbW9yZSBieXRlcyB0aGFuIHJlcXVlc3RlZC4gQW55IGV4dHJhIGRhdGEKICogcmV0dXJuZWQgYnkgdGhlIGNhbGxhYmxlIGlzIGJ1ZmZlcmVkIGludGVybmFsbHkgdW50aWwgZHJhaW5lZCB1c2luZyB0aGUKICogcmVhZCgpIGZ1bmN0aW9uIG9mIHRoZSBQdW1wU3RyZWFtLiBUaGUgY2FsbGFibGUgTVVTVCByZXR1cm4gZmFsc2Ugb3IgbnVsbAogKiB3aGVuIHRoZXJlIGlzIG5vIG1vcmUgZGF0YSB0byByZWFkLgogKgogKiBVc2VybGFuZCBjYWxsYWJsZXMgdGhhdCBkZWNsYXJlIG5vIHBhcmFtZXRlcnMgYXJlIHRvbGVyYXRlZCBieSBQSFAsIGJ1dAogKiBsZW5ndGgtYXdhcmUgY2FsbGFibGVzIHJlbWFpbiB0aGUgcmVjb21tZW5kZWQgZm9ybWFsIHNoYXBlLgogKi8KZmluYWwgY2xhc3MgUHVtcFN0cmVhbSBpbXBsZW1lbnRzIFN0cmVhbUludGVyZmFjZQp7CiAgICAvKiogQHZhciBjYWxsYWJsZXxudWxsICovCiAgICBwcml2YXRlICRzb3VyY2U7CgogICAgLyoqIEB2YXIgaW50fG51bGwgKi8KICAgIHByaXZhdGUgJHNpemU7CgogICAgLyoqIEB2YXIgaW50ICovCiAgICBwcml2YXRlICR0ZWxsUG9zID0gMDsKCiAgICAvKiogQHZhciBhcnJheSAqLwogICAgcHJpdmF0ZSAkbWV0YWRhdGE7CgogICAgLyoqIEB2YXIgQnVmZmVyU3RyZWFtICovCiAgICBwcml2YXRlICRidWZmZXI7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gKGNhbGxhYmxlKCk6IChzdHJpbmd8ZmFsc2V8bnVsbCkpfChjYWxsYWJsZShpbnQpOiAoc3RyaW5nfGZhbHNlfG51bGwpKSAkc291cmNlICBTb3VyY2Ugb2YgdGhlIHN0cmVhbSBkYXRhLiBUaGUgY2FsbGFibGUgcmVjZWl2ZXMKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdWdnZXN0ZWQgbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQsIG1heSBpZ25vcmUKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgdmFsdWUsIGFuZCBtYXkgcmV0dXJuIGZld2VyIG9yIG1vcmUgYnl0ZXMuCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRyYSBieXRlcyBhcmUgYnVmZmVyZWQuIFRoZSBjYWxsYWJsZSBNVVNUIHJldHVybgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBzdHJpbmcgd2hlbiBjYWxsZWQsIG9yIGZhbHNlfG51bGwgb24gZXJyb3Igb3IgRU9GLgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcmxhbmQgY2FsbGFibGVzIHRoYXQgZGVjbGFyZSBubyBwYXJhbWV0ZXJzIGFyZQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9sZXJhdGVkIGJ5IFBIUCwgYnV0IGxlbmd0aC1hd2FyZSBjYWxsYWJsZXMgcmVtYWluCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjb21tZW5kZWQgZm9ybWFsIHNoYXBlLgogICAgICogQHBhcmFtIGFycmF5e3NpemU/OiBpbnQsIG1ldGFkYXRhPzogYXJyYXl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnMgU3RyZWFtIG9wdGlvbnM6CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIG1ldGFkYXRhOiBIYXNoIG9mIG1ldGFkYXRhIHRvIHVzZSB3aXRoIHN0cmVhbS4KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gc2l6ZTogU2l6ZSBvZiB0aGUgc3RyZWFtLCBpZiBrbm93bi4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGNhbGxhYmxlICRzb3VyY2UsIGFycmF5ICRvcHRpb25zID0gW10pCiAgICB7CiAgICAgICAgJHRoaXMtPnNvdXJjZSA9ICRzb3VyY2U7CiAgICAgICAgJHRoaXMtPnNpemUgPSAkb3B0aW9uc1snc2l6ZSddID8/IG51bGw7CiAgICAgICAgJHRoaXMtPm1ldGFkYXRhID0gJG9wdGlvbnNbJ21ldGFkYXRhJ10gPz8gW107CiAgICAgICAgJHRoaXMtPmJ1ZmZlciA9IG5ldyBCdWZmZXJTdHJlYW0oKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gVXRpbHM6OmNvcHlUb1N0cmluZygkdGhpcyk7CiAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkZSkgewogICAgICAgICAgICBpZiAoXFBIUF9WRVJTSU9OX0lEID49IDcwNDAwKSB7CiAgICAgICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKHNwcmludGYoJyVzOjpfX3RvU3RyaW5nIGV4Y2VwdGlvbjogJXMnLCBzZWxmOjpjbGFzcywgKHN0cmluZykgJGUpLCBFX1VTRVJfRVJST1IpOwoKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xvc2UoKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5kZXRhY2goKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGV0YWNoKCkKICAgIHsKICAgICAgICAkdGhpcy0+dGVsbFBvcyA9IDA7CiAgICAgICAgJHRoaXMtPnNvdXJjZSA9IG51bGw7CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaXplKCk6ID9pbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNpemU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlbGwoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50ZWxsUG9zOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlb2YoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c291cmNlID09PSBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1NlZWthYmxlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJld2luZCgpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnNlZWsoMCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNlZWsoJG9mZnNldCwgJHdoZW5jZSA9IFNFRUtfU0VUKTogdm9pZAogICAgewogICAgICAgIGlmICghXGlzX2ludCgkb2Zmc2V0KSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gU3RyZWFtSW50ZXJmYWNlOjpzZWVrKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZXF1aXJlcyBpbnQgZm9yICRvZmZzZXQuJywKICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkb2Zmc2V0KQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFcaXNfaW50KCR3aGVuY2UpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyB0byBTdHJlYW1JbnRlcmZhY2U6OnNlZWsoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIGludCBmb3IgJHdoZW5jZS4nLAogICAgICAgICAgICAgICAgXGdldF9kZWJ1Z190eXBlKCR3aGVuY2UpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0Nhbm5vdCBzZWVrIGEgUHVtcFN0cmVhbScpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1dyaXRhYmxlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlKCRzdHJpbmcpOiBpbnQKICAgIHsKICAgICAgICBpZiAoIVxpc19zdHJpbmcoJHN0cmluZykpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFN0cmVhbUludGVyZmFjZTo6d3JpdGUoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIHN0cmluZyBmb3IgJHN0cmluZy4nLAogICAgICAgICAgICAgICAgXGdldF9kZWJ1Z190eXBlKCRzdHJpbmcpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0Nhbm5vdCB3cml0ZSB0byBhIFB1bXBTdHJlYW0nKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNSZWFkYWJsZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlYWQoJGxlbmd0aCk6IHN0cmluZwogICAgewogICAgICAgIGlmICghXGlzX2ludCgkbGVuZ3RoKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gU3RyZWFtSW50ZXJmYWNlOjpyZWFkKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZXF1aXJlcyBpbnQgZm9yICRsZW5ndGguJywKICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkbGVuZ3RoKQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJGRhdGEgPSAkdGhpcy0+YnVmZmVyLT5yZWFkKCRsZW5ndGgpOwogICAgICAgICRyZWFkTGVuID0gc3RybGVuKCRkYXRhKTsKICAgICAgICAkdGhpcy0+dGVsbFBvcyArPSAkcmVhZExlbjsKICAgICAgICAkcmVtYWluaW5nID0gJGxlbmd0aCAtICRyZWFkTGVuOwoKICAgICAgICBpZiAoJHJlbWFpbmluZykgewogICAgICAgICAgICAkdGhpcy0+cHVtcCgkcmVtYWluaW5nKTsKICAgICAgICAgICAgJGRhdGEgLj0gJHRoaXMtPmJ1ZmZlci0+cmVhZCgkcmVtYWluaW5nKTsKICAgICAgICAgICAgJHRoaXMtPnRlbGxQb3MgKz0gc3RybGVuKCRkYXRhKSAtICRyZWFkTGVuOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRkYXRhOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50cygpOiBzdHJpbmcKICAgIHsKICAgICAgICAkcmVzdWx0ID0gJyc7CiAgICAgICAgd2hpbGUgKCEkdGhpcy0+ZW9mKCkpIHsKICAgICAgICAgICAgJHJlc3VsdCAuPSAkdGhpcy0+cmVhZCgxMDAwMDAwKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWV0YWRhdGEoJGtleSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCRrZXkgIT09IG51bGwgJiYgIVxpc19zdHJpbmcoJGtleSkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFN0cmVhbUludGVyZmFjZTo6Z2V0TWV0YWRhdGEoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIHN0cmluZ3xudWxsIGZvciAka2V5LicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJGtleSkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICghJGtleSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPm1ldGFkYXRhOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5tZXRhZGF0YVska2V5XSA/PyBudWxsOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcHVtcChpbnQgJGxlbmd0aCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnNvdXJjZSAhPT0gbnVsbCkgewogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAkZGF0YSA9ICgkdGhpcy0+c291cmNlKSgkbGVuZ3RoKTsKICAgICAgICAgICAgICAgIGlmICgkZGF0YSA9PT0gZmFsc2UgfHwgJGRhdGEgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c291cmNlID0gbnVsbDsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJGRhdGEpOwogICAgICAgICAgICAgICAgJGxlbmd0aCAtPSBzdHJsZW4oJGRhdGEpOwogICAgICAgICAgICB9IHdoaWxlICgkbGVuZ3RoID4gMCk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Query.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCmZpbmFsIGNsYXNzIFF1ZXJ5CnsKICAgIC8qKgogICAgICogUGFyc2UgYSBxdWVyeSBzdHJpbmcgaW50byBhbiBhc3NvY2lhdGl2ZSBhcnJheS4KICAgICAqCiAgICAgKiBJZiBtdWx0aXBsZSB2YWx1ZXMgYXJlIGZvdW5kIGZvciB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSBvZiB0aGF0IGtleQogICAgICogdmFsdWUgcGFpciB3aWxsIGJlY29tZSBhbiBhcnJheS4gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBwYXJzZSBuZXN0ZWQKICAgICAqIFBIUCBzdHlsZSBhcnJheXMgaW50byBhbiBhc3NvY2lhdGl2ZSBhcnJheSAoZS5nLiwgYGZvb1thXT0xJmZvb1tiXT0yYAogICAgICogd2lsbCBiZSBwYXJzZWQgaW50byBgWydmb29bYV0nID0+ICcxJywgJ2Zvb1tiXScgPT4gJzInXSlgLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAkc3RyICAgICAgICAgUXVlcnkgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0gaW50fGJvb2wgJHVybEVuY29kaW5nIEhvdyB0aGUgcXVlcnkgc3RyaW5nIGlzIGVuY29kZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZShzdHJpbmcgJHN0ciwgJHVybEVuY29kaW5nID0gdHJ1ZSk6IGFycmF5CiAgICB7CiAgICAgICAgJHJlc3VsdCA9IFtdOwoKICAgICAgICBpZiAoJHN0ciA9PT0gJycpIHsKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHVybEVuY29kaW5nID09PSB0cnVlKSB7CiAgICAgICAgICAgICRkZWNvZGVyID0gZnVuY3Rpb24gKCR2YWx1ZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHJhd3VybGRlY29kZShzdHJfcmVwbGFjZSgnKycsICcgJywgKHN0cmluZykgJHZhbHVlKSk7CiAgICAgICAgICAgIH07CiAgICAgICAgfSBlbHNlaWYgKCR1cmxFbmNvZGluZyA9PT0gUEhQX1FVRVJZX1JGQzM5ODYpIHsKICAgICAgICAgICAgJGRlY29kZXIgPSAncmF3dXJsZGVjb2RlJzsKICAgICAgICB9IGVsc2VpZiAoJHVybEVuY29kaW5nID09PSBQSFBfUVVFUllfUkZDMTczOCkgewogICAgICAgICAgICAkZGVjb2RlciA9ICd1cmxkZWNvZGUnOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRkZWNvZGVyID0gZnVuY3Rpb24gKCRzdHIpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkc3RyOwogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoZXhwbG9kZSgnJicsICRzdHIpIGFzICRrdnApIHsKICAgICAgICAgICAgJHBhcnRzID0gZXhwbG9kZSgnPScsICRrdnAsIDIpOwogICAgICAgICAgICAka2V5ID0gJGRlY29kZXIoJHBhcnRzWzBdKTsKICAgICAgICAgICAgJHZhbHVlID0gaXNzZXQoJHBhcnRzWzFdKSA/ICRkZWNvZGVyKCRwYXJ0c1sxXSkgOiBudWxsOwogICAgICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJGtleSwgJHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICRyZXN1bHRbJGtleV0gPSAkdmFsdWU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoIWlzX2FycmF5KCRyZXN1bHRbJGtleV0pKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdFska2V5XSA9IFskcmVzdWx0WyRrZXldXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRyZXN1bHRbJGtleV1bXSA9ICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBCdWlsZCBhIHF1ZXJ5IHN0cmluZyBmcm9tIGFuIGFycmF5IG9mIGtleSB2YWx1ZSBwYWlycy4KICAgICAqCiAgICAgKiBUaGlzIGZ1bmN0aW9uIGNhbiB1c2UgdGhlIHJldHVybiB2YWx1ZSBvZiBgcGFyc2UoKWAgdG8gYnVpbGQgYSBxdWVyeQogICAgICogc3RyaW5nLiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IG1vZGlmeSB0aGUgcHJvdmlkZWQga2V5cyB3aGVuIGFuIGFycmF5IGlzCiAgICAgKiBlbmNvdW50ZXJlZCAobGlrZSBgaHR0cF9idWlsZF9xdWVyeSgpYCB3b3VsZCkuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgICAkcGFyYW1zICAgICAgICAgICBRdWVyeSBzdHJpbmcgcGFyYW1ldGVycy4KICAgICAqIEBwYXJhbSBpbnR8ZmFsc2UgJGVuY29kaW5nICAgICAgICAgU2V0IHRvIGZhbHNlIHRvIG5vdCBlbmNvZGUsCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBIUF9RVUVSWV9SRkMzOTg2IHRvIGVuY29kZSB1c2luZwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRkMzOTg2LCBvciBQSFBfUVVFUllfUkZDMTczOCB0bwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGUgdXNpbmcgUkZDMTczOC4KICAgICAqIEBwYXJhbSBib29sICAgICAgJHRyZWF0Qm9vbHNBc0ludHMgU2V0IHRvIHRydWUgdG8gZW5jb2RlIGFzIDAvMSwgYW5kCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIGFzIGZhbHNlL3RydWUuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYnVpbGQoYXJyYXkgJHBhcmFtcywgJGVuY29kaW5nID0gUEhQX1FVRVJZX1JGQzM5ODYsIGJvb2wgJHRyZWF0Qm9vbHNBc0ludHMgPSB0cnVlKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCEkcGFyYW1zKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgIGlmICgkZW5jb2RpbmcgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICRlbmNvZGVyID0gZnVuY3Rpb24gKHN0cmluZyAkc3RyKTogc3RyaW5nIHsKICAgICAgICAgICAgICAgIHJldHVybiAkc3RyOwogICAgICAgICAgICB9OwogICAgICAgIH0gZWxzZWlmICgkZW5jb2RpbmcgPT09IFBIUF9RVUVSWV9SRkMzOTg2KSB7CiAgICAgICAgICAgICRlbmNvZGVyID0gJ3Jhd3VybGVuY29kZSc7CiAgICAgICAgfSBlbHNlaWYgKCRlbmNvZGluZyA9PT0gUEhQX1FVRVJZX1JGQzE3MzgpIHsKICAgICAgICAgICAgJGVuY29kZXIgPSAndXJsZW5jb2RlJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCB0eXBlJyk7CiAgICAgICAgfQoKICAgICAgICAkY2FzdEJvb2wgPSAkdHJlYXRCb29sc0FzSW50cyA/IHN0YXRpYyBmdW5jdGlvbiAoJHYpIHsgcmV0dXJuIChpbnQpICR2OyB9IDogc3RhdGljIGZ1bmN0aW9uICgkdikgeyByZXR1cm4gJHYgPyAndHJ1ZScgOiAnZmFsc2UnOyB9OwoKICAgICAgICAkcXMgPSAnJzsKICAgICAgICBmb3JlYWNoICgkcGFyYW1zIGFzICRrID0+ICR2KSB7CiAgICAgICAgICAgICRrID0gJGVuY29kZXIoKHN0cmluZykgJGspOwogICAgICAgICAgICBpZiAoIWlzX2FycmF5KCR2KSkgewogICAgICAgICAgICAgICAgJHFzIC49ICRrOwogICAgICAgICAgICAgICAgJHYgPSBpc19ib29sKCR2KSA/ICRjYXN0Qm9vbCgkdikgOiBzZWxmOjpub3JtYWxpemVOb25GaW5pdGVGbG9hdCgkdik7CiAgICAgICAgICAgICAgICBpZiAoJHYgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAkcXMgLj0gJz0nLiRlbmNvZGVyKChzdHJpbmcpICR2KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRxcyAuPSAnJic7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdiBhcyAkdnYpIHsKICAgICAgICAgICAgICAgICAgICAkcXMgLj0gJGs7CiAgICAgICAgICAgICAgICAgICAgJHZ2ID0gaXNfYm9vbCgkdnYpID8gJGNhc3RCb29sKCR2dikgOiBzZWxmOjpub3JtYWxpemVOb25GaW5pdGVGbG9hdCgkdnYpOwogICAgICAgICAgICAgICAgICAgIGlmICgkdnYgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHFzIC49ICc9Jy4kZW5jb2Rlcigoc3RyaW5nKSAkdnYpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkcXMgLj0gJyYnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHFzID8gKHN0cmluZykgc3Vic3RyKCRxcywgMCwgLTEpIDogJyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBub24tZmluaXRlIGZsb2F0cyB0byB0aGUgc3RyaW5ncyBQSFAgY29lcmNlcyB0aGVtIHRvLCBhcwogICAgICogaW1wbGljaXQgY29lcmNpb24gb2YgTkFOIGVtaXRzIGEgd2FybmluZyBvbiBQSFAgOC41LgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZU5vbkZpbml0ZUZsb2F0KCR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoaXNfZmxvYXQoJHZhbHVlKSAmJiAhaXNfZmluaXRlKCR2YWx1ZSkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjEyJywKICAgICAgICAgICAgICAgICdQYXNzaW5nIGEgbm9uLWZpbml0ZSBmbG9hdCB0byBRdWVyeTo6YnVpbGQoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlamVjdHMgbm9uLWZpbml0ZSBmbG9hdHMuJwogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuIGlzX25hbigkdmFsdWUpID8gJ05BTicgOiAoJHZhbHVlID4gMCA/ICdJTkYnIDogJy1JTkYnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdmFsdWU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Request.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOwoKLyoqCiAqIFBTUi03IHJlcXVlc3QgaW1wbGVtZW50YXRpb24uCiAqLwpjbGFzcyBSZXF1ZXN0IGltcGxlbWVudHMgUmVxdWVzdEludGVyZmFjZQp7CiAgICB1c2UgTWVzc2FnZVRyYWl0OwoKICAgIC8qKiBAdmFyIHN0cmluZyAqLwogICAgcHJpdmF0ZSAkbWV0aG9kOwoKICAgIC8qKiBAdmFyIHN0cmluZ3xudWxsICovCiAgICBwcml2YXRlICRyZXF1ZXN0VGFyZ2V0OwoKICAgIC8qKiBAdmFyIFVyaUludGVyZmFjZSAqLwogICAgcHJpdmF0ZSAkdXJpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWV0aG9kICBIVFRQIG1ldGhvZAogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAkdXJpICAgICBVUkkKICAgICAqIEBwYXJhbSAoc3RyaW5nfHN0cmluZ1tdKVtdICAgICAgICAgICAgICAgICAgJGhlYWRlcnMgUmVxdWVzdCBoZWFkZXJzCiAgICAgKiBAcGFyYW0gc3RyaW5nfHJlc291cmNlfFN0cmVhbUludGVyZmFjZXxudWxsICRib2R5ICAgIFJlcXVlc3QgYm9keQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmVyc2lvbiBQcm90b2NvbCB2ZXJzaW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBzdHJpbmcgJG1ldGhvZCwKICAgICAgICAkdXJpLAogICAgICAgIGFycmF5ICRoZWFkZXJzID0gW10sCiAgICAgICAgJGJvZHkgPSBudWxsLAogICAgICAgIHN0cmluZyAkdmVyc2lvbiA9ICcxLjEnCiAgICApIHsKICAgICAgICAkdGhpcy0+YXNzZXJ0TWV0aG9kKCRtZXRob2QpOwogICAgICAgIGlmICghJHVyaSBpbnN0YW5jZW9mIFVyaUludGVyZmFjZSkgewogICAgICAgICAgICAkdXJpID0gbmV3IFVyaSgkdXJpKTsKICAgICAgICB9CgogICAgICAgIHNlbGY6Ondhcm5Pbk1ldGhvZENhc2luZ0NoYW5nZSgkbWV0aG9kKTsKICAgICAgICAkdGhpcy0+bWV0aG9kID0gc3RydG91cHBlcigkbWV0aG9kKTsKICAgICAgICAkdGhpcy0+dXJpID0gJHVyaTsKICAgICAgICAkdGhpcy0+c2V0SGVhZGVycygkaGVhZGVycyk7CiAgICAgICAgJHRoaXMtPnByb3RvY29sID0gJHZlcnNpb247CgogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmhlYWRlck5hbWVzWydob3N0J10pKSB7CiAgICAgICAgICAgICR0aGlzLT51cGRhdGVIb3N0RnJvbVVyaSgpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRib2R5ICE9PSAnJyAmJiAkYm9keSAhPT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+c3RyZWFtID0gVXRpbHM6OnN0cmVhbUZvcigkYm9keSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZXF1ZXN0VGFyZ2V0KCk6IHN0cmluZwogICAgewogICAgICAgIGlmICgkdGhpcy0+cmVxdWVzdFRhcmdldCAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3RUYXJnZXQ7CiAgICAgICAgfQoKICAgICAgICAkdGFyZ2V0ID0gJHRoaXMtPnVyaS0+Z2V0UGF0aCgpOwogICAgICAgIGlmICgkdGFyZ2V0ID09PSAnJykgewogICAgICAgICAgICAkdGFyZ2V0ID0gJy8nOwogICAgICAgIH0KICAgICAgICBpZiAoJHRoaXMtPnVyaS0+Z2V0UXVlcnkoKSAhPSAnJykgewogICAgICAgICAgICAkdGFyZ2V0IC49ICc/Jy4kdGhpcy0+dXJpLT5nZXRRdWVyeSgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0YXJnZXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhSZXF1ZXN0VGFyZ2V0KCRyZXF1ZXN0VGFyZ2V0KTogUmVxdWVzdEludGVyZmFjZQogICAgewogICAgICAgIGlmIChwcmVnX21hdGNoKCcjXHMjJywgJHJlcXVlc3RUYXJnZXQpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAnSW52YWxpZCByZXF1ZXN0IHRhcmdldCBwcm92aWRlZDsgY2Fubm90IGNvbnRhaW4gd2hpdGVzcGFjZScKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRuZXcgPSBjbG9uZSAkdGhpczsKICAgICAgICAkbmV3LT5yZXF1ZXN0VGFyZ2V0ID0gJHJlcXVlc3RUYXJnZXQ7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNZXRob2QoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5tZXRob2Q7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhNZXRob2QoJG1ldGhvZCk6IFJlcXVlc3RJbnRlcmZhY2UKICAgIHsKICAgICAgICAkdGhpcy0+YXNzZXJ0TWV0aG9kKCRtZXRob2QpOwogICAgICAgIHNlbGY6Ondhcm5Pbk1ldGhvZENhc2luZ0NoYW5nZSgkbWV0aG9kKTsKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+bWV0aG9kID0gc3RydG91cHBlcigkbWV0aG9kKTsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFVyaSgpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnVyaTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFVyaShVcmlJbnRlcmZhY2UgJHVyaSwgJHByZXNlcnZlSG9zdCA9IGZhbHNlKTogUmVxdWVzdEludGVyZmFjZQogICAgewogICAgICAgIGlmICghXGlzX2Jvb2woJHByZXNlcnZlSG9zdCkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFJlcXVlc3RJbnRlcmZhY2U6OndpdGhVcmkoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIGJvb2wgZm9yICRwcmVzZXJ2ZUhvc3QuJywKICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkcHJlc2VydmVIb3N0KQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR1cmkgPT09ICR0aGlzLT51cmkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPnVyaSA9ICR1cmk7CgogICAgICAgIGlmICghJHByZXNlcnZlSG9zdCB8fCAhaXNzZXQoJHRoaXMtPmhlYWRlck5hbWVzWydob3N0J10pKSB7CiAgICAgICAgICAgICRuZXctPnVwZGF0ZUhvc3RGcm9tVXJpKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHVwZGF0ZUhvc3RGcm9tVXJpKCk6IHZvaWQKICAgIHsKICAgICAgICAkaG9zdCA9ICR0aGlzLT51cmktPmdldEhvc3QoKTsKCiAgICAgICAgaWYgKCRob3N0ID09ICcnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIFVyaTo6YXNzZXJ0VmFsaWRIb3N0KCRob3N0KTsKCiAgICAgICAgaWYgKCgkcG9ydCA9ICR0aGlzLT51cmktPmdldFBvcnQoKSkgIT09IG51bGwpIHsKICAgICAgICAgICAgJGhvc3QgLj0gJzonLiRwb3J0OwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmFzc2VydFZhbHVlKCRob3N0KTsKCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5oZWFkZXJOYW1lc1snaG9zdCddKSkgewogICAgICAgICAgICAkaGVhZGVyID0gJHRoaXMtPmhlYWRlck5hbWVzWydob3N0J107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGhlYWRlciA9ICdIb3N0JzsKICAgICAgICAgICAgJHRoaXMtPmhlYWRlck5hbWVzWydob3N0J10gPSAnSG9zdCc7CiAgICAgICAgfQogICAgICAgIC8vIEVuc3VyZSBIb3N0IGlzIHRoZSBmaXJzdCBoZWFkZXIuCiAgICAgICAgLy8gU2VlOiBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzcyMzAjc2VjdGlvbi01LjQKICAgICAgICAkdGhpcy0+aGVhZGVycyA9IFskaGVhZGVyID0+IFskaG9zdF1dICsgJHRoaXMtPmhlYWRlcnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJG1ldGhvZAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFzc2VydE1ldGhvZCgkbWV0aG9kKTogdm9pZAogICAgewogICAgICAgIGlmICghaXNfc3RyaW5nKCRtZXRob2QpIHx8ICRtZXRob2QgPT09ICcnKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ01ldGhvZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy4nKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gd2Fybk9uTWV0aG9kQ2FzaW5nQ2hhbmdlKHN0cmluZyAkbWV0aG9kKTogdm9pZAogICAgewogICAgICAgIGlmICgkbWV0aG9kICE9PSBzdHJ0b3VwcGVyKCRtZXRob2QpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyBhIG5vbi11cHBlcmNhc2UgSFRUUCBtZXRob2QgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCBwcmVzZXJ2ZXMgbWV0aG9kIGNhc2luZyBhbmQgd2lsbCBubyBsb25nZXIgdXBwZXJjYXNlIGl0LiBOb3JtYWxpemUgdGhlIG1ldGhvZCBiZWZvcmUgY29uc3RydWN0aW5nIG9yIG1vZGlmeWluZyByZXF1ZXN0cyBpZiB1cHBlcmNhc2UgaXMgcmVxdWlyZWQuJwogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Response.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxTdHJlYW1JbnRlcmZhY2U7CgovKioKICogUFNSLTcgcmVzcG9uc2UgaW1wbGVtZW50YXRpb24uCiAqLwpjbGFzcyBSZXNwb25zZSBpbXBsZW1lbnRzIFJlc3BvbnNlSW50ZXJmYWNlCnsKICAgIHVzZSBNZXNzYWdlVHJhaXQ7CgogICAgLyoqIE1hcCBvZiBzdGFuZGFyZCBIVFRQIHN0YXR1cyBjb2RlL3JlYXNvbiBwaHJhc2VzICovCiAgICBwcml2YXRlIGNvbnN0IFBIUkFTRVMgPSBbCiAgICAgICAgMTAwID0+ICdDb250aW51ZScsCiAgICAgICAgMTAxID0+ICdTd2l0Y2hpbmcgUHJvdG9jb2xzJywKICAgICAgICAxMDIgPT4gJ1Byb2Nlc3NpbmcnLAogICAgICAgIDIwMCA9PiAnT0snLAogICAgICAgIDIwMSA9PiAnQ3JlYXRlZCcsCiAgICAgICAgMjAyID0+ICdBY2NlcHRlZCcsCiAgICAgICAgMjAzID0+ICdOb24tQXV0aG9yaXRhdGl2ZSBJbmZvcm1hdGlvbicsCiAgICAgICAgMjA0ID0+ICdObyBDb250ZW50JywKICAgICAgICAyMDUgPT4gJ1Jlc2V0IENvbnRlbnQnLAogICAgICAgIDIwNiA9PiAnUGFydGlhbCBDb250ZW50JywKICAgICAgICAyMDcgPT4gJ011bHRpLXN0YXR1cycsCiAgICAgICAgMjA4ID0+ICdBbHJlYWR5IFJlcG9ydGVkJywKICAgICAgICAzMDAgPT4gJ011bHRpcGxlIENob2ljZXMnLAogICAgICAgIDMwMSA9PiAnTW92ZWQgUGVybWFuZW50bHknLAogICAgICAgIDMwMiA9PiAnRm91bmQnLAogICAgICAgIDMwMyA9PiAnU2VlIE90aGVyJywKICAgICAgICAzMDQgPT4gJ05vdCBNb2RpZmllZCcsCiAgICAgICAgMzA1ID0+ICdVc2UgUHJveHknLAogICAgICAgIDMwNiA9PiAnU3dpdGNoIFByb3h5JywKICAgICAgICAzMDcgPT4gJ1RlbXBvcmFyeSBSZWRpcmVjdCcsCiAgICAgICAgMzA4ID0+ICdQZXJtYW5lbnQgUmVkaXJlY3QnLAogICAgICAgIDQwMCA9PiAnQmFkIFJlcXVlc3QnLAogICAgICAgIDQwMSA9PiAnVW5hdXRob3JpemVkJywKICAgICAgICA0MDIgPT4gJ1BheW1lbnQgUmVxdWlyZWQnLAogICAgICAgIDQwMyA9PiAnRm9yYmlkZGVuJywKICAgICAgICA0MDQgPT4gJ05vdCBGb3VuZCcsCiAgICAgICAgNDA1ID0+ICdNZXRob2QgTm90IEFsbG93ZWQnLAogICAgICAgIDQwNiA9PiAnTm90IEFjY2VwdGFibGUnLAogICAgICAgIDQwNyA9PiAnUHJveHkgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAogICAgICAgIDQwOCA9PiAnUmVxdWVzdCBUaW1lLW91dCcsCiAgICAgICAgNDA5ID0+ICdDb25mbGljdCcsCiAgICAgICAgNDEwID0+ICdHb25lJywKICAgICAgICA0MTEgPT4gJ0xlbmd0aCBSZXF1aXJlZCcsCiAgICAgICAgNDEyID0+ICdQcmVjb25kaXRpb24gRmFpbGVkJywKICAgICAgICA0MTMgPT4gJ1JlcXVlc3QgRW50aXR5IFRvbyBMYXJnZScsCiAgICAgICAgNDE0ID0+ICdSZXF1ZXN0LVVSSSBUb28gTGFyZ2UnLAogICAgICAgIDQxNSA9PiAnVW5zdXBwb3J0ZWQgTWVkaWEgVHlwZScsCiAgICAgICAgNDE2ID0+ICdSZXF1ZXN0ZWQgcmFuZ2Ugbm90IHNhdGlzZmlhYmxlJywKICAgICAgICA0MTcgPT4gJ0V4cGVjdGF0aW9uIEZhaWxlZCcsCiAgICAgICAgNDE4ID0+ICdJXCdtIGEgdGVhcG90JywKICAgICAgICA0MjIgPT4gJ1VucHJvY2Vzc2FibGUgRW50aXR5JywKICAgICAgICA0MjMgPT4gJ0xvY2tlZCcsCiAgICAgICAgNDI0ID0+ICdGYWlsZWQgRGVwZW5kZW5jeScsCiAgICAgICAgNDI1ID0+ICdVbm9yZGVyZWQgQ29sbGVjdGlvbicsCiAgICAgICAgNDI2ID0+ICdVcGdyYWRlIFJlcXVpcmVkJywKICAgICAgICA0MjggPT4gJ1ByZWNvbmRpdGlvbiBSZXF1aXJlZCcsCiAgICAgICAgNDI5ID0+ICdUb28gTWFueSBSZXF1ZXN0cycsCiAgICAgICAgNDMxID0+ICdSZXF1ZXN0IEhlYWRlciBGaWVsZHMgVG9vIExhcmdlJywKICAgICAgICA0NTEgPT4gJ1VuYXZhaWxhYmxlIEZvciBMZWdhbCBSZWFzb25zJywKICAgICAgICA1MDAgPT4gJ0ludGVybmFsIFNlcnZlciBFcnJvcicsCiAgICAgICAgNTAxID0+ICdOb3QgSW1wbGVtZW50ZWQnLAogICAgICAgIDUwMiA9PiAnQmFkIEdhdGV3YXknLAogICAgICAgIDUwMyA9PiAnU2VydmljZSBVbmF2YWlsYWJsZScsCiAgICAgICAgNTA0ID0+ICdHYXRld2F5IFRpbWUtb3V0JywKICAgICAgICA1MDUgPT4gJ0hUVFAgVmVyc2lvbiBub3Qgc3VwcG9ydGVkJywKICAgICAgICA1MDYgPT4gJ1ZhcmlhbnQgQWxzbyBOZWdvdGlhdGVzJywKICAgICAgICA1MDcgPT4gJ0luc3VmZmljaWVudCBTdG9yYWdlJywKICAgICAgICA1MDggPT4gJ0xvb3AgRGV0ZWN0ZWQnLAogICAgICAgIDUxMCA9PiAnTm90IEV4dGVuZGVkJywKICAgICAgICA1MTEgPT4gJ05ldHdvcmsgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAogICAgXTsKCiAgICAvKiogQHZhciBzdHJpbmcgKi8KICAgIHByaXZhdGUgJHJlYXNvblBocmFzZTsKCiAgICAvKiogQHZhciBpbnQgKi8KICAgIHByaXZhdGUgJHN0YXR1c0NvZGU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0dXMgIFN0YXR1cyBjb2RlCiAgICAgKiBAcGFyYW0gKHN0cmluZ3xzdHJpbmdbXSlbXSAgICAgICAgICAgICAgICAgICRoZWFkZXJzIFJlc3BvbnNlIGhlYWRlcnMKICAgICAqIEBwYXJhbSBzdHJpbmd8cmVzb3VyY2V8U3RyZWFtSW50ZXJmYWNlfG51bGwgJGJvZHkgICAgUmVzcG9uc2UgYm9keQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmVyc2lvbiBQcm90b2NvbCB2ZXJzaW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWFzb24gIFJlYXNvbiBwaHJhc2UgKHdoZW4gZW1wdHkgYSBkZWZhdWx0IHdpbGwgYmUgdXNlZCBiYXNlZCBvbiB0aGUgc3RhdHVzIGNvZGUpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBpbnQgJHN0YXR1cyA9IDIwMCwKICAgICAgICBhcnJheSAkaGVhZGVycyA9IFtdLAogICAgICAgICRib2R5ID0gbnVsbCwKICAgICAgICBzdHJpbmcgJHZlcnNpb24gPSAnMS4xJywKICAgICAgICA/c3RyaW5nICRyZWFzb24gPSBudWxsCiAgICApIHsKICAgICAgICAkdGhpcy0+YXNzZXJ0U3RhdHVzQ29kZVJhbmdlKCRzdGF0dXMpOwoKICAgICAgICAkdGhpcy0+c3RhdHVzQ29kZSA9ICRzdGF0dXM7CgogICAgICAgIGlmICgkYm9keSAhPT0gJycgJiYgJGJvZHkgIT09IG51bGwpIHsKICAgICAgICAgICAgJHRoaXMtPnN0cmVhbSA9IFV0aWxzOjpzdHJlYW1Gb3IoJGJvZHkpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNldEhlYWRlcnMoJGhlYWRlcnMpOwogICAgICAgIGlmICgkcmVhc29uID09ICcnICYmIGlzc2V0KHNlbGY6OlBIUkFTRVNbJHRoaXMtPnN0YXR1c0NvZGVdKSkgewogICAgICAgICAgICAkdGhpcy0+cmVhc29uUGhyYXNlID0gc2VsZjo6UEhSQVNFU1skdGhpcy0+c3RhdHVzQ29kZV07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnJlYXNvblBocmFzZSA9IChzdHJpbmcpICRyZWFzb247CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+cHJvdG9jb2wgPSAkdmVyc2lvbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3RhdHVzQ29kZSgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0YXR1c0NvZGU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlYXNvblBocmFzZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlYXNvblBocmFzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFN0YXR1cygkY29kZSwgJHJlYXNvblBocmFzZSA9ICcnKTogUmVzcG9uc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoIVxpc19pbnQoJGNvZGUpICYmIFxmaWx0ZXJfdmFyKCRjb2RlLCBcRklMVEVSX1ZBTElEQVRFX0lOVCkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyB0byBSZXNwb25zZUludGVyZmFjZTo6d2l0aFN0YXR1cygpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgaW50IGZvciAkY29kZS4nLAogICAgICAgICAgICAgICAgXGdldF9kZWJ1Z190eXBlKCRjb2RlKQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCRyZWFzb25QaHJhc2UpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyB0byBSZXNwb25zZUludGVyZmFjZTo6d2l0aFN0YXR1cygpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgc3RyaW5nIGZvciAkcmVhc29uUGhyYXNlLicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJHJlYXNvblBocmFzZSkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5hc3NlcnRTdGF0dXNDb2RlSXNJbnRlZ2VyKCRjb2RlKTsKICAgICAgICAkY29kZSA9IChpbnQpICRjb2RlOwogICAgICAgICR0aGlzLT5hc3NlcnRTdGF0dXNDb2RlUmFuZ2UoJGNvZGUpOwoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+c3RhdHVzQ29kZSA9ICRjb2RlOwogICAgICAgIGlmICgkcmVhc29uUGhyYXNlID09ICcnICYmIGlzc2V0KHNlbGY6OlBIUkFTRVNbJG5ldy0+c3RhdHVzQ29kZV0pKSB7CiAgICAgICAgICAgICRyZWFzb25QaHJhc2UgPSBzZWxmOjpQSFJBU0VTWyRuZXctPnN0YXR1c0NvZGVdOwogICAgICAgIH0KICAgICAgICAkbmV3LT5yZWFzb25QaHJhc2UgPSAoc3RyaW5nKSAkcmVhc29uUGhyYXNlOwoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkc3RhdHVzQ29kZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFzc2VydFN0YXR1c0NvZGVJc0ludGVnZXIoJHN0YXR1c0NvZGUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKGZpbHRlcl92YXIoJHN0YXR1c0NvZGUsIEZJTFRFUl9WQUxJREFURV9JTlQpID09PSBmYWxzZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignU3RhdHVzIGNvZGUgbXVzdCBiZSBhbiBpbnRlZ2VyIHZhbHVlLicpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFzc2VydFN0YXR1c0NvZGVSYW5nZShpbnQgJHN0YXR1c0NvZGUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCRzdGF0dXNDb2RlIDwgMTAwIHx8ICRzdGF0dXNDb2RlID49IDYwMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignU3RhdHVzIGNvZGUgbXVzdCBiZSBhbiBpbnRlZ2VyIHZhbHVlIGJldHdlZW4gMXh4IGFuZCA1eHguJyk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Rfc3986.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFJmYzM5ODYKewogICAgLyoqCiAgICAgKiBTdWItZGVsaW1zIGZvciB1c2UgaW4gYSByZWdleC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTIuMgogICAgICovCiAgICBwdWJsaWMgY29uc3QgQ0hBUl9TVUJfREVMSU1TID0gJyFcJCZcJ1woXClcKlwrLDs9JzsKCiAgICAvKioKICAgICAqIFVucmVzZXJ2ZWQgY2hhcmFjdGVycyBmb3IgdXNlIGluIGEgcmVnZXguCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi0yLjMKICAgICAqLwogICAgcHVibGljIGNvbnN0IENIQVJfVU5SRVNFUlZFRCA9ICdhLXpBLVowLTlfXC1cLn4nOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Rfc7230.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFJmYzcyMzAKewogICAgLyoqCiAgICAgKiBIZWFkZXIgcmVsYXRlZCByZWd1bGFyIGV4cHJlc3Npb25zIChiYXNlZCBvbiBhbXBocC9odHRwIHBhY2thZ2UpCiAgICAgKgogICAgICogTm90ZTogaGVhZGVyIGRlbGltaXRlciAoXHJcbikgaXMgbW9kaWZpZWQgdG8gXHI/XG4gdG8gYWNjZXB0IGxpbmUgZmVlZCBvbmx5IGRlbGltaXRlcnMgZm9yIEJDIHJlYXNvbnMuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vYW1waHAvaHR0cC9ibG9iL3YxLjAuMS9zcmMvUmZjNzIzMC5waHAjTDEyLUwxNQogICAgICoKICAgICAqIEBsaWNlbnNlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbXBocC9odHRwL2Jsb2IvdjEuMC4xL0xJQ0VOU0UKICAgICAqLwogICAgcHVibGljIGNvbnN0IEhFQURFUl9SRUdFWCA9ICIoXihbXigpPD5ALDs6XFxcIi9bXF0/PXt9XHgwMS1ceDIwXHg3Rl0rKyk6WyBcdF0qKygoPzpbIFx0XSorW1x4MjEtXHg3RVx4ODAtXHhGRl0rKykqKylbIFx0XSorXHI/XG4pbSI7CiAgICBwdWJsaWMgY29uc3QgSEVBREVSX0ZPTERfUkVHRVggPSAiKFxyP1xuWyBcdF0rKykiOwoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheXswOiBzdHJpbmcsIDE6IGludHxudWxsfXxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2VIb3N0SGVhZGVyKHN0cmluZyAkYXV0aG9yaXR5KTogP2FycmF5CiAgICB7CiAgICAgICAgaWYgKCRhdXRob3JpdHkgPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJGhvc3QgPSAkYXV0aG9yaXR5OwogICAgICAgICRwb3J0ID0gbnVsbDsKCiAgICAgICAgaWYgKCRhdXRob3JpdHlbMF0gPT09ICdbJykgewogICAgICAgICAgICAkY2xvc2luZ0JyYWNrZXQgPSBzdHJwb3MoJGF1dGhvcml0eSwgJ10nKTsKICAgICAgICAgICAgaWYgKCRjbG9zaW5nQnJhY2tldCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkaG9zdCA9IHN1YnN0cigkYXV0aG9yaXR5LCAwLCAkY2xvc2luZ0JyYWNrZXQgKyAxKTsKICAgICAgICAgICAgJHJlbWFpbmRlciA9IHN1YnN0cigkYXV0aG9yaXR5LCAkY2xvc2luZ0JyYWNrZXQgKyAxKTsKICAgICAgICAgICAgaWYgKCRyZW1haW5kZXIgIT09ICcnKSB7CiAgICAgICAgICAgICAgICBpZiAoJHJlbWFpbmRlclswXSAhPT0gJzonKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHBvcnQgPSBzZWxmOjpwYXJzZUF1dGhvcml0eVBvcnQoc3Vic3RyKCRyZW1haW5kZXIsIDEpKTsKICAgICAgICAgICAgICAgIGlmICgkcG9ydCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKGZhbHNlICE9PSAoJGNvbG9uID0gc3RycG9zKCRhdXRob3JpdHksICc6JykpKSB7CiAgICAgICAgICAgICRob3N0ID0gc3Vic3RyKCRhdXRob3JpdHksIDAsICRjb2xvbik7CiAgICAgICAgICAgICRwb3J0ID0gc2VsZjo6cGFyc2VBdXRob3JpdHlQb3J0KHN1YnN0cigkYXV0aG9yaXR5LCAkY29sb24gKyAxKSk7CiAgICAgICAgICAgIGlmICgkcG9ydCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkaG9zdCA9PT0gJycgfHwgIXNlbGY6OmlzVmFsaWRIb3N0SGVhZGVySG9zdCgkaG9zdCkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWyRob3N0LCAkcG9ydF07CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaXNWYWxpZEhvc3RIZWFkZXJIb3N0KHN0cmluZyAkaG9zdCk6IGJvb2wKICAgIHsKICAgICAgICBpZiAocHJlZ19tYXRjaCgnL1tceDAwLVx4MjBceDdGXC9cPyNAXFxcXF0vJywgJGhvc3QpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmIChzdHJwb3MoJGhvc3QsICdbJykgIT09IGZhbHNlIHx8IHN0cnBvcygkaG9zdCwgJ10nKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgaWYgKCRob3N0WzBdICE9PSAnWycgfHwgc3Vic3RyKCRob3N0LCAtMSkgIT09ICddJykgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYWRkcmVzcyA9IHN1YnN0cigkaG9zdCwgMSwgLTEpOwoKICAgICAgICAgICAgcmV0dXJuIGZpbHRlcl92YXIoJGFkZHJlc3MsIFxGSUxURVJfVkFMSURBVEVfSVAsIFxGSUxURVJfRkxBR19JUFY2KSAhPT0gZmFsc2UKICAgICAgICAgICAgICAgIHx8IHByZWdfbWF0Y2goJy9edlswLTlhLWZdK1wuWycuUmZjMzk4Njo6Q0hBUl9VTlJFU0VSVkVELlJmYzM5ODY6OkNIQVJfU1VCX0RFTElNUy4nOl0rJC9pRCcsICRhZGRyZXNzKSA9PT0gMTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzdHJwb3MoJGhvc3QsICc6JykgPT09IGZhbHNlOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHBhcnNlQXV0aG9yaXR5UG9ydChzdHJpbmcgJHBvcnQpOiA/aW50CiAgICB7CiAgICAgICAgaWYgKCRwb3J0ID09PSAnJyB8fCAhY3R5cGVfZGlnaXQoJHBvcnQpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJG5vcm1hbGl6ZWQgPSBsdHJpbSgkcG9ydCwgJzAnKTsKICAgICAgICBpZiAoJG5vcm1hbGl6ZWQgPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0cmxlbigkbm9ybWFsaXplZCkgPiA1IHx8IChpbnQpICRub3JtYWxpemVkID4gMHhGRkZGKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChpbnQpICRub3JtYWxpemVkOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/ServerRequest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFNlcnZlclJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXBsb2FkZWRGaWxlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U7CgovKioKICogU2VydmVyLXNpZGUgSFRUUCByZXF1ZXN0CiAqCiAqIEV4dGVuZHMgdGhlIFJlcXVlc3QgZGVmaW5pdGlvbiB0byBhZGQgbWV0aG9kcyBmb3IgYWNjZXNzaW5nIGluY29taW5nIGRhdGEsCiAqIHNwZWNpZmljYWxseSBzZXJ2ZXIgcGFyYW1ldGVycywgY29va2llcywgbWF0Y2hlZCBwYXRoIHBhcmFtZXRlcnMsIHF1ZXJ5CiAqIHN0cmluZyBhcmd1bWVudHMsIGJvZHkgcGFyYW1ldGVycywgYW5kIHVwbG9hZCBmaWxlIGluZm9ybWF0aW9uLgogKgogKiAiQXR0cmlidXRlcyIgYXJlIGRpc2NvdmVyZWQgdmlhIGRlY29tcG9zaW5nIHRoZSByZXF1ZXN0IChhbmQgdXN1YWxseQogKiBzcGVjaWZpY2FsbHkgdGhlIFVSSSBwYXRoKSwgYW5kIHR5cGljYWxseSB3aWxsIGJlIGluamVjdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KICoKICogUmVxdWVzdHMgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0IG1pZ2h0IGNoYW5nZSBzdGF0ZSBhcmUKICogaW1wbGVtZW50ZWQgc3VjaCB0aGF0IHRoZXkgcmV0YWluIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgY3VycmVudAogKiBtZXNzYWdlIGFuZCByZXR1cm4gYSBuZXcgaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgY2hhbmdlZCBzdGF0ZS4KICovCmNsYXNzIFNlcnZlclJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IGltcGxlbWVudHMgU2VydmVyUmVxdWVzdEludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkYXR0cmlidXRlcyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlICRjb29raWVQYXJhbXMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXl8b2JqZWN0fG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkcGFyc2VkQm9keTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkcXVlcnlQYXJhbXMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkc2VydmVyUGFyYW1zOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlICR1cGxvYWRlZEZpbGVzID0gW107CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtZXRob2QgICAgICAgSFRUUCBtZXRob2QKICAgICAqIEBwYXJhbSBzdHJpbmd8VXJpSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgJHVyaSAgICAgICAgICBVUkkKICAgICAqIEBwYXJhbSAoc3RyaW5nfHN0cmluZ1tdKVtdICAgICAgICAgICAgICAgICAgJGhlYWRlcnMgICAgICBSZXF1ZXN0IGhlYWRlcnMKICAgICAqIEBwYXJhbSBzdHJpbmd8cmVzb3VyY2V8U3RyZWFtSW50ZXJmYWNlfG51bGwgJGJvZHkgICAgICAgICBSZXF1ZXN0IGJvZHkKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZlcnNpb24gICAgICBQcm90b2NvbCB2ZXJzaW9uCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZXJ2ZXJQYXJhbXMgVHlwaWNhbGx5IHRoZSAkX1NFUlZFUiBzdXBlcmdsb2JhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgc3RyaW5nICRtZXRob2QsCiAgICAgICAgJHVyaSwKICAgICAgICBhcnJheSAkaGVhZGVycyA9IFtdLAogICAgICAgICRib2R5ID0gbnVsbCwKICAgICAgICBzdHJpbmcgJHZlcnNpb24gPSAnMS4xJywKICAgICAgICBhcnJheSAkc2VydmVyUGFyYW1zID0gW10KICAgICkgewogICAgICAgICR0aGlzLT5zZXJ2ZXJQYXJhbXMgPSAkc2VydmVyUGFyYW1zOwoKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtZXRob2QsICR1cmksICRoZWFkZXJzLCAkYm9keSwgJHZlcnNpb24pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIFVwbG9hZGVkRmlsZSBpbnN0YW5jZSBhcnJheS4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGZpbGVzIEFuIGFycmF5IHdoaWNoIHJlc3BlY3QgJF9GSUxFUyBzdHJ1Y3R1cmUKICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3IgdW5yZWNvZ25pemVkIHZhbHVlcwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZUZpbGVzKGFycmF5ICRmaWxlcyk6IGFycmF5CiAgICB7CiAgICAgICAgJG5vcm1hbGl6ZWQgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJGZpbGVzIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGVJbnRlcmZhY2UpIHsKICAgICAgICAgICAgICAgICRub3JtYWxpemVkWyRrZXldID0gJHZhbHVlOwogICAgICAgICAgICB9IGVsc2VpZiAoaXNfYXJyYXkoJHZhbHVlKSAmJiBpc3NldCgkdmFsdWVbJ3RtcF9uYW1lJ10pKSB7CiAgICAgICAgICAgICAgICAkbm9ybWFsaXplZFska2V5XSA9IHNlbGY6OmNyZWF0ZVVwbG9hZGVkRmlsZUZyb21TcGVjKCR2YWx1ZSk7CiAgICAgICAgICAgIH0gZWxzZWlmIChpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAkbm9ybWFsaXplZFska2V5XSA9IHNlbGY6Om5vcm1hbGl6ZUZpbGVzKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgdmFsdWUgaW4gZmlsZXMgc3BlY2lmaWNhdGlvbicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG5vcm1hbGl6ZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHJldHVybiBhbiBVcGxvYWRlZEZpbGUgaW5zdGFuY2UgZnJvbSBhICRfRklMRVMgc3BlY2lmaWNhdGlvbi4KICAgICAqCiAgICAgKiBJZiB0aGUgc3BlY2lmaWNhdGlvbiByZXByZXNlbnRzIGFuIGFycmF5IG9mIHZhbHVlcywgdGhpcyBtZXRob2Qgd2lsbAogICAgICogZGVsZWdhdGUgdG8gbm9ybWFsaXplTmVzdGVkRmlsZVNwZWMoKSBhbmQgcmV0dXJuIHRoYXQgcmV0dXJuIHZhbHVlLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWUgJF9GSUxFUyBzdHJ1Y3QKICAgICAqCiAgICAgKiBAcmV0dXJuIFVwbG9hZGVkRmlsZUludGVyZmFjZXxVcGxvYWRlZEZpbGVJbnRlcmZhY2VbXQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVVcGxvYWRlZEZpbGVGcm9tU3BlYyhhcnJheSAkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZVsndG1wX25hbWUnXSkpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6Om5vcm1hbGl6ZU5lc3RlZEZpbGVTcGVjKCR2YWx1ZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFVwbG9hZGVkRmlsZSgKICAgICAgICAgICAgJHZhbHVlWyd0bXBfbmFtZSddLAogICAgICAgICAgICAoaW50KSAkdmFsdWVbJ3NpemUnXSwKICAgICAgICAgICAgKGludCkgJHZhbHVlWydlcnJvciddLAogICAgICAgICAgICAkdmFsdWVbJ25hbWUnXSwKICAgICAgICAgICAgJHZhbHVlWyd0eXBlJ10KICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogTm9ybWFsaXplIGFuIGFycmF5IG9mIGZpbGUgc3BlY2lmaWNhdGlvbnMuCiAgICAgKgogICAgICogTG9vcHMgdGhyb3VnaCBhbGwgbmVzdGVkIGZpbGVzIGFuZCByZXR1cm5zIGEgbm9ybWFsaXplZCBhcnJheSBvZgogICAgICogVXBsb2FkZWRGaWxlSW50ZXJmYWNlIGluc3RhbmNlcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIFVwbG9hZGVkRmlsZUludGVyZmFjZVtdCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZU5lc3RlZEZpbGVTcGVjKGFycmF5ICRmaWxlcyA9IFtdKTogYXJyYXkKICAgIHsKICAgICAgICAkbm9ybWFsaXplZEZpbGVzID0gW107CgogICAgICAgIGZvcmVhY2ggKGFycmF5X2tleXMoJGZpbGVzWyd0bXBfbmFtZSddKSBhcyAka2V5KSB7CiAgICAgICAgICAgICRzcGVjID0gWwogICAgICAgICAgICAgICAgJ3RtcF9uYW1lJyA9PiAkZmlsZXNbJ3RtcF9uYW1lJ11bJGtleV0sCiAgICAgICAgICAgICAgICAnc2l6ZScgPT4gJGZpbGVzWydzaXplJ11bJGtleV0gPz8gbnVsbCwKICAgICAgICAgICAgICAgICdlcnJvcicgPT4gJGZpbGVzWydlcnJvciddWyRrZXldID8/IG51bGwsCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJGZpbGVzWyduYW1lJ11bJGtleV0gPz8gbnVsbCwKICAgICAgICAgICAgICAgICd0eXBlJyA9PiAkZmlsZXNbJ3R5cGUnXVska2V5XSA/PyBudWxsLAogICAgICAgICAgICBdOwogICAgICAgICAgICAkbm9ybWFsaXplZEZpbGVzWyRrZXldID0gc2VsZjo6Y3JlYXRlVXBsb2FkZWRGaWxlRnJvbVNwZWMoJHNwZWMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRub3JtYWxpemVkRmlsZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYSBTZXJ2ZXJSZXF1ZXN0IHBvcHVsYXRlZCB3aXRoIHN1cGVyZ2xvYmFsczoKICAgICAqICRfR0VUCiAgICAgKiAkX1BPU1QKICAgICAqICRfQ09PS0lFCiAgICAgKiAkX0ZJTEVTCiAgICAgKiAkX1NFUlZFUgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21HbG9iYWxzKCk6IFNlcnZlclJlcXVlc3RJbnRlcmZhY2UKICAgIHsKICAgICAgICAkbWV0aG9kID0gc3RydG91cHBlcihzZWxmOjpnZXRTZXJ2ZXJQYXJhbSgnUkVRVUVTVF9NRVRIT0QnKSA/PyAnR0VUJyk7CiAgICAgICAgJGhlYWRlcnMgPSBzZWxmOjpyZW1vdmVJbnZhbGlkSG9zdEhlYWRlcihzZWxmOjpnZXRBbGxIZWFkZXJzKCkpOwogICAgICAgICR1cmkgPSBzZWxmOjpnZXRVcmlGcm9tR2xvYmFscygpOwogICAgICAgICRib2R5ID0gbmV3IENhY2hpbmdTdHJlYW0obmV3IExhenlPcGVuU3RyZWFtKCdwaHA6Ly9pbnB1dCcsICdyKycpKTsKICAgICAgICAkc2VydmVyUHJvdG9jb2wgPSBzZWxmOjpnZXRTZXJ2ZXJQYXJhbSgnU0VSVkVSX1BST1RPQ09MJyk7CiAgICAgICAgJHByb3RvY29sID0gJHNlcnZlclByb3RvY29sICE9PSBudWxsID8gc3RyX3JlcGxhY2UoJ0hUVFAvJywgJycsICRzZXJ2ZXJQcm90b2NvbCkgOiAnMS4xJzsKCiAgICAgICAgJHNlcnZlclJlcXVlc3QgPSBuZXcgU2VydmVyUmVxdWVzdCgkbWV0aG9kLCAkdXJpLCAkaGVhZGVycywgJGJvZHksICRwcm90b2NvbCwgJF9TRVJWRVIpOwoKICAgICAgICByZXR1cm4gJHNlcnZlclJlcXVlc3QKICAgICAgICAgICAgLT53aXRoQ29va2llUGFyYW1zKCRfQ09PS0lFKQogICAgICAgICAgICAtPndpdGhRdWVyeVBhcmFtcygkX0dFVCkKICAgICAgICAgICAgLT53aXRoUGFyc2VkQm9keSgkX1BPU1QpCiAgICAgICAgICAgIC0+d2l0aFVwbG9hZGVkRmlsZXMoc2VsZjo6bm9ybWFsaXplRmlsZXMoJF9GSUxFUykpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxhcnJheS1rZXksIHN0cmluZz4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0QWxsSGVhZGVycygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpub3JtYWxpemVIZWFkZXJWYWx1ZXMoZ2V0YWxsaGVhZGVycygpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIG1peGVkPiAkaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXk8YXJyYXkta2V5LCBzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlclZhbHVlcyhhcnJheSAkaGVhZGVycyk6IGFycmF5CiAgICB7CiAgICAgICAgJG5vcm1hbGl6ZWQgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJGhlYWRlcnMgYXMgJG5hbWUgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGlmIChpc19zY2FsYXIoJHZhbHVlKSB8fCAoaXNfb2JqZWN0KCR2YWx1ZSkgJiYgbWV0aG9kX2V4aXN0cygkdmFsdWUsICdfX3RvU3RyaW5nJykpKSB7CiAgICAgICAgICAgICAgICAkbm9ybWFsaXplZFskbmFtZV0gPSAoc3RyaW5nKSAkdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkbm9ybWFsaXplZDsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRTZXJ2ZXJQYXJhbShzdHJpbmcgJGtleSk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gaXNzZXQoJF9TRVJWRVJbJGtleV0pICYmIGlzX3N0cmluZygkX1NFUlZFUlska2V5XSkgPyAkX1NFUlZFUlska2V5XSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBzdHJpbmc+ICRoZWFkZXJzCiAgICAgKgogICAgICogQHJldHVybiBhcnJheTxhcnJheS1rZXksIHN0cmluZz4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcmVtb3ZlSW52YWxpZEhvc3RIZWFkZXIoYXJyYXkgJGhlYWRlcnMpOiBhcnJheQogICAgewogICAgICAgIGZvcmVhY2ggKCRoZWFkZXJzIGFzICRuYW1lID0+ICR2YWx1ZSkgewogICAgICAgICAgICBpZiAoc3RydG9sb3dlcigoc3RyaW5nKSAkbmFtZSkgIT09ICdob3N0JykgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChSZmM3MjMwOjpwYXJzZUhvc3RIZWFkZXIoJHZhbHVlKSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgdW5zZXQoJGhlYWRlcnNbJG5hbWVdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRoZWFkZXJzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheXswOiBzdHJpbmd8bnVsbCwgMTogaW50fG51bGx9CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGV4dHJhY3RIb3N0QW5kUG9ydEZyb21BdXRob3JpdHkoc3RyaW5nICRhdXRob3JpdHkpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBSZmM3MjMwOjpwYXJzZUhvc3RIZWFkZXIoJGF1dGhvcml0eSkgPz8gW251bGwsIG51bGxdOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGEgVXJpIHBvcHVsYXRlZCB3aXRoIHZhbHVlcyBmcm9tICRfU0VSVkVSLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFVyaUZyb21HbG9iYWxzKCk6IFVyaUludGVyZmFjZQogICAgewogICAgICAgICR1cmkgPSBuZXcgVXJpKCcnKTsKCiAgICAgICAgJGh0dHBzID0gc2VsZjo6Z2V0U2VydmVyUGFyYW0oJ0hUVFBTJyk7CiAgICAgICAgJHVyaSA9ICR1cmktPndpdGhTY2hlbWUoIWVtcHR5KCRodHRwcykgJiYgJGh0dHBzICE9PSAnb2ZmJyA/ICdodHRwcycgOiAnaHR0cCcpOwoKICAgICAgICAkaGFzUG9ydCA9IGZhbHNlOwogICAgICAgICRhdXRob3JpdHkgPSBzZWxmOjpnZXRTZXJ2ZXJQYXJhbSgnSFRUUF9IT1NUJyk7CiAgICAgICAgaWYgKCRhdXRob3JpdHkgIT09IG51bGwpIHsKICAgICAgICAgICAgWyRob3N0LCAkcG9ydF0gPSBzZWxmOjpleHRyYWN0SG9zdEFuZFBvcnRGcm9tQXV0aG9yaXR5KCRhdXRob3JpdHkpOwogICAgICAgICAgICBpZiAoJGhvc3QgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoSG9zdCgkaG9zdCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkcG9ydCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJGhhc1BvcnQgPSB0cnVlOwogICAgICAgICAgICAgICAgJHVyaSA9ICR1cmktPndpdGhQb3J0KCRwb3J0KTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmICgoJHNlcnZlck5hbWUgPSBzZWxmOjpnZXRTZXJ2ZXJQYXJhbSgnU0VSVkVSX05BTUUnKSkgIT09IG51bGwpIHsKICAgICAgICAgICAgJHVyaSA9ICR1cmktPndpdGhIb3N0KCRzZXJ2ZXJOYW1lKTsKICAgICAgICB9IGVsc2VpZiAoKCRzZXJ2ZXJBZGRyID0gc2VsZjo6Z2V0U2VydmVyUGFyYW0oJ1NFUlZFUl9BRERSJykpICE9PSBudWxsKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoSG9zdCgkc2VydmVyQWRkcik7CiAgICAgICAgfQoKICAgICAgICAkc2VydmVyUG9ydCA9IHNlbGY6OmdldFNlcnZlclBhcmFtKCdTRVJWRVJfUE9SVCcpOwogICAgICAgIGlmICghJGhhc1BvcnQgJiYgJHNlcnZlclBvcnQgIT09IG51bGwgJiYgcHJlZ19tYXRjaCgnL15bKy1dP1xkKyQvJywgJHNlcnZlclBvcnQpID09PSAxKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoUG9ydCgoaW50KSAkc2VydmVyUG9ydCk7CiAgICAgICAgfQoKICAgICAgICAkaGFzUXVlcnkgPSBmYWxzZTsKICAgICAgICAkcmVxdWVzdFVyaSA9IHNlbGY6OmdldFNlcnZlclBhcmFtKCdSRVFVRVNUX1VSSScpOwogICAgICAgIGlmICgkcmVxdWVzdFVyaSAhPT0gbnVsbCkgewogICAgICAgICAgICAkcmVxdWVzdFVyaVBhcnRzID0gZXhwbG9kZSgnPycsICRyZXF1ZXN0VXJpLCAyKTsKICAgICAgICAgICAgJHVyaSA9ICR1cmktPndpdGhQYXRoKCRyZXF1ZXN0VXJpUGFydHNbMF0pOwogICAgICAgICAgICBpZiAoaXNzZXQoJHJlcXVlc3RVcmlQYXJ0c1sxXSkpIHsKICAgICAgICAgICAgICAgICRoYXNRdWVyeSA9IHRydWU7CiAgICAgICAgICAgICAgICAkdXJpID0gJHVyaS0+d2l0aFF1ZXJ5KCRyZXF1ZXN0VXJpUGFydHNbMV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcXVlcnlTdHJpbmcgPSBzZWxmOjpnZXRTZXJ2ZXJQYXJhbSgnUVVFUllfU1RSSU5HJyk7CiAgICAgICAgaWYgKCEkaGFzUXVlcnkgJiYgJHF1ZXJ5U3RyaW5nICE9PSBudWxsKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoUXVlcnkoJHF1ZXJ5U3RyaW5nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdXJpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTZXJ2ZXJQYXJhbXMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNlcnZlclBhcmFtczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXBsb2FkZWRGaWxlcygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dXBsb2FkZWRGaWxlczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFVwbG9hZGVkRmlsZXMoYXJyYXkgJHVwbG9hZGVkRmlsZXMpOiBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgJGludmFsaWRVcGxvYWRlZEZpbGVGb3VuZCA9IGZhbHNlOwogICAgICAgICRpbnZhbGlkVXBsb2FkZWRGaWxlID0gbnVsbDsKICAgICAgICAkc3RhY2sgPSBbJHVwbG9hZGVkRmlsZXNdOwoKICAgICAgICB3aGlsZSAoJHN0YWNrICE9PSBbXSkgewogICAgICAgICAgICBmb3JlYWNoIChcYXJyYXlfcG9wKCRzdGFjaykgYXMgJHVwbG9hZGVkRmlsZSkgewogICAgICAgICAgICAgICAgaWYgKCR1cGxvYWRlZEZpbGUgaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGVJbnRlcmZhY2UpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoXGlzX2FycmF5KCR1cGxvYWRlZEZpbGUpKSB7CiAgICAgICAgICAgICAgICAgICAgJHN0YWNrW10gPSAkdXBsb2FkZWRGaWxlOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRpbnZhbGlkVXBsb2FkZWRGaWxlRm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgJGludmFsaWRVcGxvYWRlZEZpbGUgPSAkdXBsb2FkZWRGaWxlOwoKICAgICAgICAgICAgICAgIGJyZWFrIDI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkaW52YWxpZFVwbG9hZGVkRmlsZUZvdW5kKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyBpbnNpZGUgU2VydmVyUmVxdWVzdEludGVyZmFjZTo6d2l0aFVwbG9hZGVkRmlsZXMoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIGFuIFVwbG9hZGVkRmlsZUludGVyZmFjZVtdIHRyZWUuJywKICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkaW52YWxpZFVwbG9hZGVkRmlsZSkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRuZXcgPSBjbG9uZSAkdGhpczsKICAgICAgICAkbmV3LT51cGxvYWRlZEZpbGVzID0gJHVwbG9hZGVkRmlsZXM7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb29raWVQYXJhbXMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvb2tpZVBhcmFtczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aENvb2tpZVBhcmFtcyhhcnJheSAkY29va2llcyk6IFNlcnZlclJlcXVlc3RJbnRlcmZhY2UKICAgIHsKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+Y29va2llUGFyYW1zID0gJGNvb2tpZXM7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRRdWVyeVBhcmFtcygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cXVlcnlQYXJhbXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhRdWVyeVBhcmFtcyhhcnJheSAkcXVlcnkpOiBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPnF1ZXJ5UGFyYW1zID0gJHF1ZXJ5OwoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXl8b2JqZWN0fG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhcnNlZEJvZHkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGFyc2VkQm9keTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFBhcnNlZEJvZHkoJGRhdGEpOiBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKCRkYXRhICE9PSBudWxsICYmICFcaXNfYXJyYXkoJGRhdGEpICYmICFcaXNfb2JqZWN0KCRkYXRhKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gU2VydmVyUmVxdWVzdEludGVyZmFjZTo6d2l0aFBhcnNlZEJvZHkoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIGFycmF5fG9iamVjdHxudWxsLicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJGRhdGEpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+cGFyc2VkQm9keSA9ICRkYXRhOwoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QXR0cmlidXRlcygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YXR0cmlidXRlczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEF0dHJpYnV0ZSgkYXR0cmlidXRlLCAkZGVmYXVsdCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCRhdHRyaWJ1dGUpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyB0byBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlOjpnZXRBdHRyaWJ1dGUoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIHN0cmluZyBmb3IgJGF0dHJpYnV0ZS4nLAogICAgICAgICAgICAgICAgXGdldF9kZWJ1Z190eXBlKCRhdHRyaWJ1dGUpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZmFsc2UgPT09IGFycmF5X2tleV9leGlzdHMoJGF0dHJpYnV0ZSwgJHRoaXMtPmF0dHJpYnV0ZXMpKSB7CiAgICAgICAgICAgIHJldHVybiAkZGVmYXVsdDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+YXR0cmlidXRlc1skYXR0cmlidXRlXTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEF0dHJpYnV0ZSgkYXR0cmlidXRlLCAkdmFsdWUpOiBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCRhdHRyaWJ1dGUpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyB0byBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlOjp3aXRoQXR0cmlidXRlKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZXF1aXJlcyBzdHJpbmcgZm9yICRhdHRyaWJ1dGUuJywKICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkYXR0cmlidXRlKQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPmF0dHJpYnV0ZXNbJGF0dHJpYnV0ZV0gPSAkdmFsdWU7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRob3V0QXR0cmlidXRlKCRhdHRyaWJ1dGUpOiBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCRhdHRyaWJ1dGUpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyB0byBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlOjp3aXRob3V0QXR0cmlidXRlKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZXF1aXJlcyBzdHJpbmcgZm9yICRhdHRyaWJ1dGUuJywKICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkYXR0cmlidXRlKQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKGZhbHNlID09PSBhcnJheV9rZXlfZXhpc3RzKCRhdHRyaWJ1dGUsICR0aGlzLT5hdHRyaWJ1dGVzKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgdW5zZXQoJG5ldy0+YXR0cmlidXRlc1skYXR0cmlidXRlXSk7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Stream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBQSFAgc3RyZWFtIGltcGxlbWVudGF0aW9uLgogKi8KY2xhc3MgU3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHNlZSBodHRwczovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5mb3Blbi5waHAKICAgICAqIEBzZWUgaHR0cHM6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24uZ3pvcGVuLnBocAogICAgICovCiAgICBwcml2YXRlIGNvbnN0IFJFQURBQkxFX01PREVTID0gJy9yfGFcK3xhYlwrfHdcK3x3YlwrfHhcK3x4YlwrfGNcK3xjYlwrLyc7CiAgICBwcml2YXRlIGNvbnN0IFdSSVRBQkxFX01PREVTID0gJy9hfHd8clwrfHJiXCt8cnd8eHxjLyc7CgogICAgLyoqIEB2YXIgcmVzb3VyY2UgKi8KICAgIHByaXZhdGUgJHN0cmVhbTsKICAgIC8qKiBAdmFyIGludHxudWxsICovCiAgICBwcml2YXRlICRzaXplOwogICAgLyoqIEB2YXIgYm9vbCAqLwogICAgcHJpdmF0ZSAkc2Vla2FibGU7CiAgICAvKiogQHZhciBib29sICovCiAgICBwcml2YXRlICRyZWFkYWJsZTsKICAgIC8qKiBAdmFyIGJvb2wgKi8KICAgIHByaXZhdGUgJHdyaXRhYmxlOwogICAgLyoqIEB2YXIgc3RyaW5nfG51bGwgKi8KICAgIHByaXZhdGUgJHVyaTsKICAgIC8qKiBAdmFyIG1peGVkW10gKi8KICAgIHByaXZhdGUgJGN1c3RvbU1ldGFkYXRhOwoKICAgIC8qKgogICAgICogVGhpcyBjb25zdHJ1Y3RvciBhY2NlcHRzIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIG9wdGlvbnMuCiAgICAgKgogICAgICogLSBzaXplOiAoaW50KSBJZiBhIHJlYWQgc3RyZWFtIHdvdWxkIG90aGVyd2lzZSBoYXZlIGFuIGluZGV0ZXJtaW5hdGUKICAgICAqICAgc2l6ZSwgYnV0IHRoZSBzaXplIGlzIGtub3duIGR1ZSB0byBmb3Jla25vd2xlZGdlLCB0aGVuIHlvdSBjYW4KICAgICAqICAgcHJvdmlkZSB0aGF0IHNpemUsIGluIGJ5dGVzLgogICAgICogLSBtZXRhZGF0YTogKGFycmF5KSBBbnkgYWRkaXRpb25hbCBtZXRhZGF0YSB0byByZXR1cm4gd2hlbiB0aGUgbWV0YWRhdGEKICAgICAqICAgb2YgdGhlIHN0cmVhbSBpcyBhY2Nlc3NlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0cmVhbSAgU3RyZWFtIHJlc291cmNlIHRvIHdyYXAuCiAgICAgKiBAcGFyYW0gYXJyYXl7c2l6ZT86IGludCwgbWV0YWRhdGE/OiBhcnJheX0gJG9wdGlvbnMgQXNzb2NpYXRpdmUgYXJyYXkgb2Ygb3B0aW9ucy4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHN0cmVhbSBpcyBub3QgYSBzdHJlYW0gcmVzb3VyY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzdHJlYW0sIGFycmF5ICRvcHRpb25zID0gW10pCiAgICB7CiAgICAgICAgaWYgKCFpc19yZXNvdXJjZSgkc3RyZWFtKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignU3RyZWFtIG11c3QgYmUgYSByZXNvdXJjZScpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydzaXplJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5zaXplID0gJG9wdGlvbnNbJ3NpemUnXTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jdXN0b21NZXRhZGF0YSA9ICRvcHRpb25zWydtZXRhZGF0YSddID8/IFtdOwogICAgICAgICR0aGlzLT5zdHJlYW0gPSAkc3RyZWFtOwogICAgICAgICRtZXRhID0gc3RyZWFtX2dldF9tZXRhX2RhdGEoJHRoaXMtPnN0cmVhbSk7CiAgICAgICAgJHRoaXMtPnNlZWthYmxlID0gJG1ldGFbJ3NlZWthYmxlJ107CiAgICAgICAgJHRoaXMtPnJlYWRhYmxlID0gKGJvb2wpIHByZWdfbWF0Y2goc2VsZjo6UkVBREFCTEVfTU9ERVMsICRtZXRhWydtb2RlJ10pOwogICAgICAgICR0aGlzLT53cml0YWJsZSA9IChib29sKSBwcmVnX21hdGNoKHNlbGY6OldSSVRBQkxFX01PREVTLCAkbWV0YVsnbW9kZSddKTsKICAgICAgICAkdGhpcy0+dXJpID0gJG1ldGFbJ3VyaSddID8/IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBDbG9zZXMgdGhlIHN0cmVhbSB3aGVuIHRoZSBkZXN0cnVjdGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2Rlc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+Y2xvc2UoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoJHRoaXMtPmlzU2Vla2FibGUoKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNlZWsoMCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q29udGVudHMoKTsKICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgIGlmIChcUEhQX1ZFUlNJT05fSUQgPj0gNzA0MDApIHsKICAgICAgICAgICAgICAgIHRocm93ICRlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRyaWdnZXJfZXJyb3Ioc3ByaW50ZignJXM6Ol9fdG9TdHJpbmcgZXhjZXB0aW9uOiAlcycsIHNlbGY6OmNsYXNzLCAoc3RyaW5nKSAkZSksIEVfVVNFUl9FUlJPUik7CgogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50cygpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5zdHJlYW0pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignU3RyZWFtIGlzIGRldGFjaGVkJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISR0aGlzLT5yZWFkYWJsZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0Nhbm5vdCByZWFkIGZyb20gbm9uLXJlYWRhYmxlIHN0cmVhbScpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFV0aWxzOjp0cnlHZXRDb250ZW50cygkdGhpcy0+c3RyZWFtKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xvc2UoKTogdm9pZAogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+c3RyZWFtKSkgewogICAgICAgICAgICBpZiAoaXNfcmVzb3VyY2UoJHRoaXMtPnN0cmVhbSkpIHsKICAgICAgICAgICAgICAgIGZjbG9zZSgkdGhpcy0+c3RyZWFtKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+ZGV0YWNoKCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZXRhY2goKQogICAgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnN0cmVhbSkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnN0cmVhbTsKICAgICAgICB1bnNldCgkdGhpcy0+c3RyZWFtKTsKICAgICAgICAkdGhpcy0+c2l6ZSA9ICR0aGlzLT51cmkgPSBudWxsOwogICAgICAgICR0aGlzLT5yZWFkYWJsZSA9ICR0aGlzLT53cml0YWJsZSA9ICR0aGlzLT5zZWVrYWJsZSA9IGZhbHNlOwoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2l6ZSgpOiA/aW50CiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5zaXplICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2l6ZTsKICAgICAgICB9CgogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnN0cmVhbSkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAvLyBDbGVhciB0aGUgc3RhdCBjYWNoZSBpZiB0aGUgc3RyZWFtIGhhcyBhIFVSSQogICAgICAgIGlmICgkdGhpcy0+dXJpKSB7CiAgICAgICAgICAgIGNsZWFyc3RhdGNhY2hlKHRydWUsICR0aGlzLT51cmkpOwogICAgICAgIH0KCiAgICAgICAgJHN0YXRzID0gZnN0YXQoJHRoaXMtPnN0cmVhbSk7CiAgICAgICAgaWYgKGlzX2FycmF5KCRzdGF0cykgJiYgaXNzZXQoJHN0YXRzWydzaXplJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5zaXplID0gJHN0YXRzWydzaXplJ107CgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNpemU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNSZWFkYWJsZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZWFkYWJsZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNXcml0YWJsZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT53cml0YWJsZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTZWVrYWJsZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZWVrYWJsZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZW9mKCk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5zdHJlYW0pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignU3RyZWFtIGlzIGRldGFjaGVkJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmVvZigkdGhpcy0+c3RyZWFtKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVsbCgpOiBpbnQKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5zdHJlYW0pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignU3RyZWFtIGlzIGRldGFjaGVkJyk7CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gZnRlbGwoJHRoaXMtPnN0cmVhbSk7CgogICAgICAgIGlmICgkcmVzdWx0ID09PSBmYWxzZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byBkZXRlcm1pbmUgc3RyZWFtIHBvc2l0aW9uJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmV3aW5kKCk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+c2VlaygwKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2Vlaygkb2Zmc2V0LCAkd2hlbmNlID0gU0VFS19TRVQpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFcaXNfaW50KCRvZmZzZXQpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyB0byBTdHJlYW1JbnRlcmZhY2U6OnNlZWsoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIGludCBmb3IgJG9mZnNldC4nLAogICAgICAgICAgICAgICAgXGdldF9kZWJ1Z190eXBlKCRvZmZzZXQpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIVxpc19pbnQoJHdoZW5jZSkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFN0cmVhbUludGVyZmFjZTo6c2VlaygpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgaW50IGZvciAkd2hlbmNlLicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJHdoZW5jZSkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICR3aGVuY2UgPSAoaW50KSAkd2hlbmNlOwoKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5zdHJlYW0pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignU3RyZWFtIGlzIGRldGFjaGVkJyk7CiAgICAgICAgfQogICAgICAgIGlmICghJHRoaXMtPnNlZWthYmxlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignU3RyZWFtIGlzIG5vdCBzZWVrYWJsZScpOwogICAgICAgIH0KICAgICAgICBpZiAoZnNlZWsoJHRoaXMtPnN0cmVhbSwgJG9mZnNldCwgJHdoZW5jZSkgPT09IC0xKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVW5hYmxlIHRvIHNlZWsgdG8gc3RyZWFtIHBvc2l0aW9uICcKICAgICAgICAgICAgICAgIC4kb2Zmc2V0Licgd2l0aCB3aGVuY2UgJy52YXJfZXhwb3J0KCR3aGVuY2UsIHRydWUpKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlYWQoJGxlbmd0aCk6IHN0cmluZwogICAgewogICAgICAgIGlmICghXGlzX2ludCgkbGVuZ3RoKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gU3RyZWFtSW50ZXJmYWNlOjpyZWFkKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZXF1aXJlcyBpbnQgZm9yICRsZW5ndGguJywKICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkbGVuZ3RoKQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+c3RyZWFtKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1N0cmVhbSBpcyBkZXRhY2hlZCcpOwogICAgICAgIH0KICAgICAgICBpZiAoISR0aGlzLT5yZWFkYWJsZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0Nhbm5vdCByZWFkIGZyb20gbm9uLXJlYWRhYmxlIHN0cmVhbScpOwogICAgICAgIH0KICAgICAgICBpZiAoJGxlbmd0aCA8IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdMZW5ndGggcGFyYW1ldGVyIGNhbm5vdCBiZSBuZWdhdGl2ZScpOwogICAgICAgIH0KCiAgICAgICAgaWYgKDAgPT09ICRsZW5ndGgpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHN0cmluZyA9IGZyZWFkKCR0aGlzLT5zdHJlYW0sICRsZW5ndGgpOwogICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdVbmFibGUgdG8gcmVhZCBmcm9tIHN0cmVhbScsIDAsICRlKTsKICAgICAgICB9CgogICAgICAgIGlmIChmYWxzZSA9PT0gJHN0cmluZykgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byByZWFkIGZyb20gc3RyZWFtJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHN0cmluZzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JpdGUoJHN0cmluZyk6IGludAogICAgewogICAgICAgIGlmICghXGlzX3N0cmluZygkc3RyaW5nKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gU3RyZWFtSW50ZXJmYWNlOjp3cml0ZSgpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgc3RyaW5nIGZvciAkc3RyaW5nLicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJHN0cmluZykKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnN0cmVhbSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdTdHJlYW0gaXMgZGV0YWNoZWQnKTsKICAgICAgICB9CiAgICAgICAgaWYgKCEkdGhpcy0+d3JpdGFibGUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDYW5ub3Qgd3JpdGUgdG8gYSBub24td3JpdGFibGUgc3RyZWFtJyk7CiAgICAgICAgfQoKICAgICAgICAvLyBXZSBjYW4ndCBrbm93IHRoZSBzaXplIGFmdGVyIHdyaXRpbmcgYW55dGhpbmcKICAgICAgICAkdGhpcy0+c2l6ZSA9IG51bGw7CiAgICAgICAgJHJlc3VsdCA9IGZ3cml0ZSgkdGhpcy0+c3RyZWFtLCAkc3RyaW5nKTsKCiAgICAgICAgaWYgKCRyZXN1bHQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVW5hYmxlIHRvIHdyaXRlIHRvIHN0cmVhbScpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNZXRhZGF0YSgka2V5ID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJGtleSAhPT0gbnVsbCAmJiAhXGlzX3N0cmluZygka2V5KSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gU3RyZWFtSW50ZXJmYWNlOjpnZXRNZXRhZGF0YSgpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgc3RyaW5nfG51bGwgZm9yICRrZXkuJywKICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgka2V5KQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+c3RyZWFtKSkgewogICAgICAgICAgICByZXR1cm4gJGtleSA/IG51bGwgOiBbXTsKICAgICAgICB9IGVsc2VpZiAoISRrZXkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jdXN0b21NZXRhZGF0YSArIHN0cmVhbV9nZXRfbWV0YV9kYXRhKCR0aGlzLT5zdHJlYW0pOwogICAgICAgIH0gZWxzZWlmIChpc3NldCgkdGhpcy0+Y3VzdG9tTWV0YWRhdGFbJGtleV0pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y3VzdG9tTWV0YWRhdGFbJGtleV07CiAgICAgICAgfQoKICAgICAgICAkbWV0YSA9IHN0cmVhbV9nZXRfbWV0YV9kYXRhKCR0aGlzLT5zdHJlYW0pOwoKICAgICAgICByZXR1cm4gJG1ldGFbJGtleV0gPz8gbnVsbDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBTdHJlYW0gZGVjb3JhdG9yIHRyYWl0CiAqCiAqIEBwcm9wZXJ0eSBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbQogKi8KdHJhaXQgU3RyZWFtRGVjb3JhdG9yVHJhaXQKewogICAgLyoqCiAgICAgKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0gU3RyZWFtIHRvIGRlY29yYXRlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSkKICAgIHsKICAgICAgICAkdGhpcy0+c3RyZWFtID0gJHN0cmVhbTsKICAgIH0KCiAgICAvKioKICAgICAqIE1hZ2ljIG1ldGhvZCB1c2VkIHRvIGNyZWF0ZSBhIG5ldyBzdHJlYW0gaWYgc3RyZWFtcyBhcmUgbm90IGFkZGVkIGluCiAgICAgKiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZWNvcmF0b3IgKGUuZy4sIExhenlPcGVuU3RyZWFtKS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFN0cmVhbUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoc3RyaW5nICRuYW1lKQogICAgewogICAgICAgIGlmICgkbmFtZSA9PT0gJ3N0cmVhbScpIHsKICAgICAgICAgICAgJHRoaXMtPnN0cmVhbSA9ICR0aGlzLT5jcmVhdGVTdHJlYW0oKTsKCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxVbmV4cGVjdGVkVmFsdWVFeGNlcHRpb24oIiRuYW1lIG5vdCBmb3VuZCBvbiBjbGFzcyIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+aXNTZWVrYWJsZSgpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2VlaygwKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDb250ZW50cygpOwogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgaWYgKFxQSFBfVkVSU0lPTl9JRCA+PSA3MDQwMCkgewogICAgICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJpZ2dlcl9lcnJvcihzcHJpbnRmKCclczo6X190b1N0cmluZyBleGNlcHRpb246ICVzJywgc2VsZjo6Y2xhc3MsIChzdHJpbmcpICRlKSwgRV9VU0VSX0VSUk9SKTsKCiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnRzKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBVdGlsczo6Y29weVRvU3RyaW5nKCR0aGlzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFsbG93IGRlY29yYXRvcnMgdG8gaW1wbGVtZW50IGN1c3RvbSBtZXRob2RzCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jYWxsKHN0cmluZyAkbWV0aG9kLCBhcnJheSAkYXJncykKICAgIHsKICAgICAgICAvKiogQHZhciBjYWxsYWJsZSAkY2FsbGFibGUgKi8KICAgICAgICAkY2FsbGFibGUgPSBbJHRoaXMtPnN0cmVhbSwgJG1ldGhvZF07CiAgICAgICAgJHJlc3VsdCA9ICgkY2FsbGFibGUpKC4uLiRhcmdzKTsKCiAgICAgICAgLy8gQWx3YXlzIHJldHVybiB0aGUgd3JhcHBlZCBvYmplY3QgaWYgdGhlIHJlc3VsdCBpcyBhIHJldHVybiAkdGhpcwogICAgICAgIHJldHVybiAkcmVzdWx0ID09PSAkdGhpcy0+c3RyZWFtID8gJHRoaXMgOiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjbG9zZSgpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnN0cmVhbS0+Y2xvc2UoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1ldGFkYXRhKCRrZXkgPSBudWxsKQogICAgewogICAgICAgIGlmICgka2V5ICE9PSBudWxsICYmICFcaXNfc3RyaW5nKCRrZXkpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyB0byBTdHJlYW1JbnRlcmZhY2U6OmdldE1ldGFkYXRhKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZXF1aXJlcyBzdHJpbmd8bnVsbCBmb3IgJGtleS4nLAogICAgICAgICAgICAgICAgXGdldF9kZWJ1Z190eXBlKCRrZXkpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+Z2V0TWV0YWRhdGEoJGtleSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRldGFjaCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPmRldGFjaCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaXplKCk6ID9pbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+Z2V0U2l6ZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlb2YoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT5lb2YoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVsbCgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+dGVsbCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1JlYWRhYmxlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+aXNSZWFkYWJsZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1dyaXRhYmxlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+aXNXcml0YWJsZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1NlZWthYmxlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+aXNTZWVrYWJsZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXdpbmQoKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5zZWVrKDApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZWVrKCRvZmZzZXQsICR3aGVuY2UgPSBTRUVLX1NFVCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIVxpc19pbnQoJG9mZnNldCkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFN0cmVhbUludGVyZmFjZTo6c2VlaygpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgaW50IGZvciAkb2Zmc2V0LicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJG9mZnNldCkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICghXGlzX2ludCgkd2hlbmNlKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gU3RyZWFtSW50ZXJmYWNlOjpzZWVrKCkgaXMgZGVwcmVjYXRlZDsgZ3V6emxlaHR0cC9wc3I3IDMuMCByZXF1aXJlcyBpbnQgZm9yICR3aGVuY2UuJywKICAgICAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkd2hlbmNlKQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnN0cmVhbS0+c2Vlaygkb2Zmc2V0LCAkd2hlbmNlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVhZCgkbGVuZ3RoKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCFcaXNfaW50KCRsZW5ndGgpKSB7CiAgICAgICAgICAgIFx0cmlnZ2VyX2RlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICAgICAnMi4xMScsCiAgICAgICAgICAgICAgICAnUGFzc2luZyAlcyB0byBTdHJlYW1JbnRlcmZhY2U6OnJlYWQoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIGludCBmb3IgJGxlbmd0aC4nLAogICAgICAgICAgICAgICAgXGdldF9kZWJ1Z190eXBlKCRsZW5ndGgpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+cmVhZCgkbGVuZ3RoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JpdGUoJHN0cmluZyk6IGludAogICAgewogICAgICAgIGlmICghXGlzX3N0cmluZygkc3RyaW5nKSkgewogICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICdndXp6bGVodHRwL3BzcjcnLAogICAgICAgICAgICAgICAgJzIuMTEnLAogICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gU3RyZWFtSW50ZXJmYWNlOjp3cml0ZSgpIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgc3RyaW5nIGZvciAkc3RyaW5nLicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJHN0cmluZykKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT53cml0ZSgkc3RyaW5nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEltcGxlbWVudCBpbiBzdWJjbGFzc2VzIHRvIGR5bmFtaWNhbGx5IGNyZWF0ZSBzdHJlYW1zIHdoZW4gcmVxdWVzdGVkLgogICAgICoKICAgICAqIEB0aHJvd3MgXEJhZE1ldGhvZENhbGxFeGNlcHRpb24KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNyZWF0ZVN0cmVhbSgpOiBTdHJlYW1JbnRlcmZhY2UKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXEJhZE1ldGhvZENhbGxFeGNlcHRpb24oJ05vdCBpbXBsZW1lbnRlZCcpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/StreamWrapper.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBDb252ZXJ0cyBHdXp6bGUgc3RyZWFtcyBpbnRvIFBIUCBzdHJlYW0gcmVzb3VyY2VzLgogKgogKiBAc2VlIGh0dHBzOi8vd3d3LnBocC5uZXQvc3RyZWFtd3JhcHBlcgogKi8KZmluYWwgY2xhc3MgU3RyZWFtV3JhcHBlcgp7CiAgICAvKiogQHZhciByZXNvdXJjZSAqLwogICAgcHVibGljICRjb250ZXh0OwoKICAgIC8qKiBAdmFyIFN0cmVhbUludGVyZmFjZSAqLwogICAgcHJpdmF0ZSAkc3RyZWFtOwoKICAgIC8qKiBAdmFyIHN0cmluZyByLCByKywgb3IgdyAqLwogICAgcHJpdmF0ZSAkbW9kZTsKCiAgICAvKioKICAgICAqIFJldHVybnMgYSByZXNvdXJjZSByZXByZXNlbnRpbmcgdGhlIHN0cmVhbS4KICAgICAqCiAgICAgKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0gVGhlIHN0cmVhbSB0byBnZXQgYSByZXNvdXJjZSBmb3IKICAgICAqCiAgICAgKiBAcmV0dXJuIHJlc291cmNlCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHN0cmVhbSBpcyBub3QgcmVhZGFibGUgb3Igd3JpdGFibGUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSZXNvdXJjZShTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSkKICAgIHsKICAgICAgICBzZWxmOjpyZWdpc3RlcigpOwoKICAgICAgICBpZiAoJHN0cmVhbS0+aXNSZWFkYWJsZSgpKSB7CiAgICAgICAgICAgICRtb2RlID0gJHN0cmVhbS0+aXNXcml0YWJsZSgpID8gJ3IrJyA6ICdyJzsKICAgICAgICB9IGVsc2VpZiAoJHN0cmVhbS0+aXNXcml0YWJsZSgpKSB7CiAgICAgICAgICAgICRtb2RlID0gJ3cnOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgc3RyZWFtIG11c3QgYmUgcmVhZGFibGUsICcKICAgICAgICAgICAgICAgIC4nd3JpdGFibGUsIG9yIGJvdGguJyk7CiAgICAgICAgfQoKICAgICAgICAkcmVzb3VyY2UgPSBAZm9wZW4oJ2d1enpsZTovL3N0cmVhbScsICRtb2RlLCBmYWxzZSwgc2VsZjo6Y3JlYXRlU3RyZWFtQ29udGV4dCgkc3RyZWFtKSk7CgogICAgICAgIGlmICgkcmVzb3VyY2UgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVW5hYmxlIHRvIGNyZWF0ZSBzdHJlYW0gcmVzb3VyY2UnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzb3VyY2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgc3RyZWFtIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBvcGVuIGEgc3RyZWFtIGFzIGEgcGhwIHN0cmVhbSByZXNvdXJjZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHJlc291cmNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlU3RyZWFtQ29udGV4dChTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSkKICAgIHsKICAgICAgICByZXR1cm4gc3RyZWFtX2NvbnRleHRfY3JlYXRlKFsKICAgICAgICAgICAgJ2d1enpsZScgPT4gWydzdHJlYW0nID0+ICRzdHJlYW1dLAogICAgICAgIF0pOwogICAgfQoKICAgIC8qKgogICAgICogUmVnaXN0ZXJzIHRoZSBzdHJlYW0gd3JhcHBlciBpZiBuZWVkZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWdpc3RlcigpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpbl9hcnJheSgnZ3V6emxlJywgc3RyZWFtX2dldF93cmFwcGVycygpKSkgewogICAgICAgICAgICBzdHJlYW1fd3JhcHBlcl9yZWdpc3RlcignZ3V6emxlJywgX19DTEFTU19fKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHN0cmVhbV9vcGVuKHN0cmluZyAkcGF0aCwgc3RyaW5nICRtb2RlLCBpbnQgJG9wdGlvbnMsID9zdHJpbmcgJiRvcGVuZWRfcGF0aCA9IG51bGwpOiBib29sCiAgICB7CiAgICAgICAgJG9wdGlvbnMgPSBzdHJlYW1fY29udGV4dF9nZXRfb3B0aW9ucygkdGhpcy0+Y29udGV4dCk7CgogICAgICAgIGlmICghaXNzZXQoJG9wdGlvbnNbJ2d1enpsZSddWydzdHJlYW0nXSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPm1vZGUgPSAkbW9kZTsKICAgICAgICAkdGhpcy0+c3RyZWFtID0gJG9wdGlvbnNbJ2d1enpsZSddWydzdHJlYW0nXTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHN0cmVhbV9yZWFkKGludCAkY291bnQpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+cmVhZCgkY291bnQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzdHJlYW1fd3JpdGUoc3RyaW5nICRkYXRhKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPndyaXRlKCRkYXRhKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3RyZWFtX3RlbGwoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPnRlbGwoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3RyZWFtX2VvZigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPmVvZigpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzdHJlYW1fc2VlayhpbnQgJG9mZnNldCwgaW50ICR3aGVuY2UpOiBib29sCiAgICB7CiAgICAgICAgJHRoaXMtPnN0cmVhbS0+c2Vlaygkb2Zmc2V0LCAkd2hlbmNlKTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHJlc291cmNlfGZhbHNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzdHJlYW1fY2FzdChpbnQgJGNhc3RfYXMpCiAgICB7CiAgICAgICAgJHN0cmVhbSA9IGNsb25lICR0aGlzLT5zdHJlYW07CiAgICAgICAgJHJlc291cmNlID0gJHN0cmVhbS0+ZGV0YWNoKCk7CgogICAgICAgIHJldHVybiAkcmVzb3VyY2UgPz8gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5ewogICAgICogICBkZXY6IGludCwKICAgICAqICAgaW5vOiBpbnQsCiAgICAgKiAgIG1vZGU6IGludCwKICAgICAqICAgbmxpbms6IGludCwKICAgICAqICAgdWlkOiBpbnQsCiAgICAgKiAgIGdpZDogaW50LAogICAgICogICByZGV2OiBpbnQsCiAgICAgKiAgIHNpemU6IGludCwKICAgICAqICAgYXRpbWU6IGludCwKICAgICAqICAgbXRpbWU6IGludCwKICAgICAqICAgY3RpbWU6IGludCwKICAgICAqICAgYmxrc2l6ZTogaW50LAogICAgICogICBibG9ja3M6IGludAogICAgICogfXxmYWxzZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3RyZWFtX3N0YXQoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+c3RyZWFtLT5nZXRTaXplKCkgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljICRtb2RlTWFwID0gWwogICAgICAgICAgICAncicgPT4gMzMwNjAsCiAgICAgICAgICAgICdyYicgPT4gMzMwNjAsCiAgICAgICAgICAgICdyKycgPT4gMzMyMDYsCiAgICAgICAgICAgICd3JyA9PiAzMzE4OCwKICAgICAgICAgICAgJ3diJyA9PiAzMzE4OCwKICAgICAgICBdOwoKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAnZGV2JyA9PiAwLAogICAgICAgICAgICAnaW5vJyA9PiAwLAogICAgICAgICAgICAnbW9kZScgPT4gJG1vZGVNYXBbJHRoaXMtPm1vZGVdLAogICAgICAgICAgICAnbmxpbmsnID0+IDAsCiAgICAgICAgICAgICd1aWQnID0+IDAsCiAgICAgICAgICAgICdnaWQnID0+IDAsCiAgICAgICAgICAgICdyZGV2JyA9PiAwLAogICAgICAgICAgICAnc2l6ZScgPT4gJHRoaXMtPnN0cmVhbS0+Z2V0U2l6ZSgpID86IDAsCiAgICAgICAgICAgICdhdGltZScgPT4gMCwKICAgICAgICAgICAgJ210aW1lJyA9PiAwLAogICAgICAgICAgICAnY3RpbWUnID0+IDAsCiAgICAgICAgICAgICdibGtzaXplJyA9PiAwLAogICAgICAgICAgICAnYmxvY2tzJyA9PiAwLAogICAgICAgIF07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5ewogICAgICogICBkZXY6IGludCwKICAgICAqICAgaW5vOiBpbnQsCiAgICAgKiAgIG1vZGU6IGludCwKICAgICAqICAgbmxpbms6IGludCwKICAgICAqICAgdWlkOiBpbnQsCiAgICAgKiAgIGdpZDogaW50LAogICAgICogICByZGV2OiBpbnQsCiAgICAgKiAgIHNpemU6IGludCwKICAgICAqICAgYXRpbWU6IGludCwKICAgICAqICAgbXRpbWU6IGludCwKICAgICAqICAgY3RpbWU6IGludCwKICAgICAqICAgYmxrc2l6ZTogaW50LAogICAgICogICBibG9ja3M6IGludAogICAgICogfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdXJsX3N0YXQoc3RyaW5nICRwYXRoLCBpbnQgJGZsYWdzKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAnZGV2JyA9PiAwLAogICAgICAgICAgICAnaW5vJyA9PiAwLAogICAgICAgICAgICAnbW9kZScgPT4gMCwKICAgICAgICAgICAgJ25saW5rJyA9PiAwLAogICAgICAgICAgICAndWlkJyA9PiAwLAogICAgICAgICAgICAnZ2lkJyA9PiAwLAogICAgICAgICAgICAncmRldicgPT4gMCwKICAgICAgICAgICAgJ3NpemUnID0+IDAsCiAgICAgICAgICAgICdhdGltZScgPT4gMCwKICAgICAgICAgICAgJ210aW1lJyA9PiAwLAogICAgICAgICAgICAnY3RpbWUnID0+IDAsCiAgICAgICAgICAgICdibGtzaXplJyA9PiAwLAogICAgICAgICAgICAnYmxvY2tzJyA9PiAwLAogICAgICAgIF07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/UploadedFile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXBsb2FkZWRGaWxlSW50ZXJmYWNlOwp1c2UgUnVudGltZUV4Y2VwdGlvbjsKCmNsYXNzIFVwbG9hZGVkRmlsZSBpbXBsZW1lbnRzIFVwbG9hZGVkRmlsZUludGVyZmFjZQp7CiAgICBwcml2YXRlIGNvbnN0IEVSUk9SX01BUCA9IFsKICAgICAgICBVUExPQURfRVJSX09LID0+ICdVUExPQURfRVJSX09LJywKICAgICAgICBVUExPQURfRVJSX0lOSV9TSVpFID0+ICdVUExPQURfRVJSX0lOSV9TSVpFJywKICAgICAgICBVUExPQURfRVJSX0ZPUk1fU0laRSA9PiAnVVBMT0FEX0VSUl9GT1JNX1NJWkUnLAogICAgICAgIFVQTE9BRF9FUlJfUEFSVElBTCA9PiAnVVBMT0FEX0VSUl9QQVJUSUFMJywKICAgICAgICBVUExPQURfRVJSX05PX0ZJTEUgPT4gJ1VQTE9BRF9FUlJfTk9fRklMRScsCiAgICAgICAgVVBMT0FEX0VSUl9OT19UTVBfRElSID0+ICdVUExPQURfRVJSX05PX1RNUF9ESVInLAogICAgICAgIFVQTE9BRF9FUlJfQ0FOVF9XUklURSA9PiAnVVBMT0FEX0VSUl9DQU5UX1dSSVRFJywKICAgICAgICBVUExPQURfRVJSX0VYVEVOU0lPTiA9PiAnVVBMT0FEX0VSUl9FWFRFTlNJT04nLAogICAgXTsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkY2xpZW50RmlsZW5hbWU7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGNsaWVudE1lZGlhVHlwZTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByaXZhdGUgJGVycm9yOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmd8bnVsbAogICAgICovCiAgICBwcml2YXRlICRmaWxlOwoKICAgIC8qKgogICAgICogQHZhciBib29sCiAgICAgKi8KICAgIHByaXZhdGUgJG1vdmVkID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIGludHxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJHNpemU7CgogICAgLyoqCiAgICAgKiBAdmFyIFN0cmVhbUludGVyZmFjZXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJHN0cmVhbTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2V8c3RyaW5nfHJlc291cmNlICRzdHJlYW1PckZpbGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgICRzdHJlYW1PckZpbGUsCiAgICAgICAgP2ludCAkc2l6ZSwKICAgICAgICBpbnQgJGVycm9yU3RhdHVzLAogICAgICAgID9zdHJpbmcgJGNsaWVudEZpbGVuYW1lID0gbnVsbCwKICAgICAgICA/c3RyaW5nICRjbGllbnRNZWRpYVR5cGUgPSBudWxsCiAgICApIHsKICAgICAgICAkdGhpcy0+c2V0RXJyb3IoJGVycm9yU3RhdHVzKTsKICAgICAgICAkdGhpcy0+c2l6ZSA9ICRzaXplOwogICAgICAgICR0aGlzLT5jbGllbnRGaWxlbmFtZSA9ICRjbGllbnRGaWxlbmFtZTsKICAgICAgICAkdGhpcy0+Y2xpZW50TWVkaWFUeXBlID0gJGNsaWVudE1lZGlhVHlwZTsKCiAgICAgICAgaWYgKCR0aGlzLT5pc09rKCkpIHsKICAgICAgICAgICAgJHRoaXMtPnNldFN0cmVhbU9yRmlsZSgkc3RyZWFtT3JGaWxlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBEZXBlbmRpbmcgb24gdGhlIHZhbHVlIHNldCBmaWxlIG9yIHN0cmVhbSB2YXJpYWJsZQogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2V8c3RyaW5nfHJlc291cmNlICRzdHJlYW1PckZpbGUKICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNldFN0cmVhbU9yRmlsZSgkc3RyZWFtT3JGaWxlKTogdm9pZAogICAgewogICAgICAgIGlmIChpc19zdHJpbmcoJHN0cmVhbU9yRmlsZSkpIHsKICAgICAgICAgICAgJHRoaXMtPmZpbGUgPSAkc3RyZWFtT3JGaWxlOwogICAgICAgIH0gZWxzZWlmIChpc19yZXNvdXJjZSgkc3RyZWFtT3JGaWxlKSkgewogICAgICAgICAgICAkdGhpcy0+c3RyZWFtID0gbmV3IFN0cmVhbSgkc3RyZWFtT3JGaWxlKTsKICAgICAgICB9IGVsc2VpZiAoJHN0cmVhbU9yRmlsZSBpbnN0YW5jZW9mIFN0cmVhbUludGVyZmFjZSkgewogICAgICAgICAgICAkdGhpcy0+c3RyZWFtID0gJHN0cmVhbU9yRmlsZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgJ0ludmFsaWQgc3RyZWFtIG9yIGZpbGUgcHJvdmlkZWQgZm9yIFVwbG9hZGVkRmlsZScKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNldEVycm9yKGludCAkZXJyb3IpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc3NldChVcGxvYWRlZEZpbGU6OkVSUk9SX01BUFskZXJyb3JdKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgJ0ludmFsaWQgZXJyb3Igc3RhdHVzIGZvciBVcGxvYWRlZEZpbGUnCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZXJyb3IgPSAkZXJyb3I7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaXNTdHJpbmdOb3RFbXB0eSgkcGFyYW0pOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIGlzX3N0cmluZygkcGFyYW0pICYmIGZhbHNlID09PSBlbXB0eSgkcGFyYW0pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgbm8gdXBsb2FkIGVycm9yCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gaXNPaygpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lcnJvciA9PT0gVVBMT0FEX0VSUl9PSzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNNb3ZlZCgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5tb3ZlZDsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbiBpZiBpcyBtb3ZlZCBvciBub3Qgb2sKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB2YWxpZGF0ZUFjdGl2ZSgpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKGZhbHNlID09PSAkdGhpcy0+aXNPaygpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKFxzcHJpbnRmKCdDYW5ub3QgcmV0cmlldmUgc3RyZWFtIGR1ZSB0byB1cGxvYWQgZXJyb3IgKCVzKScsIHNlbGY6OkVSUk9SX01BUFskdGhpcy0+ZXJyb3JdKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmlzTW92ZWQoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignQ2Fubm90IHJldHJpZXZlIHN0cmVhbSBhZnRlciBpdCBoYXMgYWxyZWFkeSBiZWVuIG1vdmVkJyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdHJlYW0oKTogU3RyZWFtSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbGlkYXRlQWN0aXZlKCk7CgogICAgICAgIGlmICgkdGhpcy0+c3RyZWFtIGluc3RhbmNlb2YgU3RyZWFtSW50ZXJmYWNlKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtOwogICAgICAgIH0KCiAgICAgICAgLyoqIEB2YXIgc3RyaW5nICRmaWxlICovCiAgICAgICAgJGZpbGUgPSAkdGhpcy0+ZmlsZTsKCiAgICAgICAgcmV0dXJuIG5ldyBMYXp5T3BlblN0cmVhbSgkZmlsZSwgJ3IrJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG1vdmVUbygkdGFyZ2V0UGF0aCk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+dmFsaWRhdGVBY3RpdmUoKTsKCiAgICAgICAgaWYgKGZhbHNlID09PSBzZWxmOjppc1N0cmluZ05vdEVtcHR5KCR0YXJnZXRQYXRoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgJ0ludmFsaWQgcGF0aCBwcm92aWRlZCBmb3IgbW92ZSBvcGVyYXRpb247IG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5maWxlKSB7CiAgICAgICAgICAgICR0aGlzLT5tb3ZlZCA9IFBIUF9TQVBJID09PSAnY2xpJwogICAgICAgICAgICAgICAgPyByZW5hbWUoJHRoaXMtPmZpbGUsICR0YXJnZXRQYXRoKQogICAgICAgICAgICAgICAgOiBtb3ZlX3VwbG9hZGVkX2ZpbGUoJHRoaXMtPmZpbGUsICR0YXJnZXRQYXRoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBVdGlsczo6Y29weVRvU3RyZWFtKAogICAgICAgICAgICAgICAgJHRoaXMtPmdldFN0cmVhbSgpLAogICAgICAgICAgICAgICAgbmV3IExhenlPcGVuU3RyZWFtKCR0YXJnZXRQYXRoLCAndycpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkdGhpcy0+bW92ZWQgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKGZhbHNlID09PSAkdGhpcy0+bW92ZWQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICBzcHJpbnRmKCdVcGxvYWRlZCBmaWxlIGNvdWxkIG5vdCBiZSBtb3ZlZCB0byAlcycsICR0YXJnZXRQYXRoKQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2l6ZSgpOiA/aW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zaXplOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFcnJvcigpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmVycm9yOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDbGllbnRGaWxlbmFtZSgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jbGllbnRGaWxlbmFtZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2xpZW50TWVkaWFUeXBlKCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNsaWVudE1lZGlhVHlwZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Uri.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBHdXp6bGVIdHRwXFBzcjdcRXhjZXB0aW9uXE1hbGZvcm1lZFVyaUV4Y2VwdGlvbjsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOwoKLyoqCiAqIFBTUi03IFVSSSBpbXBsZW1lbnRhdGlvbi4KICoKICogQGF1dGhvciBNaWNoYWVsIERvd2xpbmcKICogQGF1dGhvciBUb2JpYXMgU2NodWx0emUKICogQGF1dGhvciBNYXR0aGV3IFdlaWVyIE8nUGhpbm5leQogKi8KY2xhc3MgVXJpIGltcGxlbWVudHMgVXJpSW50ZXJmYWNlLCBcSnNvblNlcmlhbGl6YWJsZQp7CiAgICAvKioKICAgICAqIEFic29sdXRlIGh0dHAgYW5kIGh0dHBzIFVSSXMgcmVxdWlyZSBhIGhvc3QgcGVyIFJGQyA3MjMwIFNlY3Rpb24gMi43CiAgICAgKiBidXQgaW4gZ2VuZXJpYyBVUklzIHRoZSBob3N0IGNhbiBiZSBlbXB0eS4gU28gZm9yIGh0dHAocykgVVJJcwogICAgICogd2UgYXBwbHkgdGhpcyBkZWZhdWx0IGhvc3Qgd2hlbiBubyBob3N0IGlzIGdpdmVuIHlldCB0byBmb3JtIGEKICAgICAqIHZhbGlkIFVSSS4KICAgICAqLwogICAgcHJpdmF0ZSBjb25zdCBIVFRQX0RFRkFVTFRfSE9TVCA9ICdsb2NhbGhvc3QnOwoKICAgIHByaXZhdGUgY29uc3QgREVGQVVMVF9QT1JUUyA9IFsKICAgICAgICAnaHR0cCcgPT4gODAsCiAgICAgICAgJ2h0dHBzJyA9PiA0NDMsCiAgICAgICAgJ2Z0cCcgPT4gMjEsCiAgICAgICAgJ2dvcGhlcicgPT4gNzAsCiAgICAgICAgJ25udHAnID0+IDExOSwKICAgICAgICAnbmV3cycgPT4gMTE5LAogICAgICAgICd0ZWxuZXQnID0+IDIzLAogICAgICAgICd0bjMyNzAnID0+IDIzLAogICAgICAgICdpbWFwJyA9PiAxNDMsCiAgICAgICAgJ3BvcCcgPT4gMTEwLAogICAgICAgICdsZGFwJyA9PiAzODksCiAgICBdOwoKICAgIHByaXZhdGUgY29uc3QgUVVFUllfU0VQQVJBVE9SU19SRVBMQUNFTUVOVCA9IFsnPScgPT4gJyUzRCcsICcmJyA9PiAnJTI2JywgJysnID0+ICclMkInXTsKCiAgICAvKiogQHZhciBzdHJpbmcgVXJpIHNjaGVtZS4gKi8KICAgIHByaXZhdGUgJHNjaGVtZSA9ICcnOwoKICAgIC8qKiBAdmFyIHN0cmluZyBVcmkgdXNlciBpbmZvLiAqLwogICAgcHJpdmF0ZSAkdXNlckluZm8gPSAnJzsKCiAgICAvKiogQHZhciBzdHJpbmcgVXJpIGhvc3QuICovCiAgICBwcml2YXRlICRob3N0ID0gJyc7CgogICAgLyoqIEB2YXIgaW50fG51bGwgVXJpIHBvcnQuICovCiAgICBwcml2YXRlICRwb3J0OwoKICAgIC8qKiBAdmFyIHN0cmluZyBVcmkgcGF0aC4gKi8KICAgIHByaXZhdGUgJHBhdGggPSAnJzsKCiAgICAvKiogQHZhciBzdHJpbmcgVXJpIHF1ZXJ5IHN0cmluZy4gKi8KICAgIHByaXZhdGUgJHF1ZXJ5ID0gJyc7CgogICAgLyoqIEB2YXIgc3RyaW5nIFVyaSBmcmFnbWVudC4gKi8KICAgIHByaXZhdGUgJGZyYWdtZW50ID0gJyc7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkdXJpID0gJycpCiAgICB7CiAgICAgICAgaWYgKCR1cmkgIT09ICcnKSB7CiAgICAgICAgICAgICRwYXJ0cyA9IHNlbGY6OnBhcnNlKCR1cmkpOwogICAgICAgICAgICBpZiAoJHBhcnRzID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IE1hbGZvcm1lZFVyaUV4Y2VwdGlvbigiVW5hYmxlIHRvIHBhcnNlIFVSSTogJHVyaSIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YXBwbHlQYXJ0cygkcGFydHMpOwogICAgICAgICAgICB9IGNhdGNoIChNYWxmb3JtZWRVcmlFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgICAgIHRocm93ICRlOwogICAgICAgICAgICB9IGNhdGNoIChcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTWFsZm9ybWVkVXJpRXhjZXB0aW9uKCRlLT5nZXRNZXNzYWdlKCksIDAsICRlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFVURi04IGF3YXJlIFxwYXJzZV91cmwoKSByZXBsYWNlbWVudC4KICAgICAqCiAgICAgKiBUaGUgaW50ZXJuYWwgZnVuY3Rpb24gcHJvZHVjZXMgYnJva2VuIG91dHB1dCBmb3Igbm9uIEFTQ0lJIGRvbWFpbiBuYW1lcwogICAgICogKElETikgd2hlbiB1c2VkIHdpdGggbG9jYWxlcyBvdGhlciB0aGFuICJDIi4KICAgICAqCiAgICAgKiBPbiB0aGUgb3RoZXIgaGFuZCwgY1VSTCB1bmRlcnN0YW5kcyBJRE4gY29ycmVjdGx5IG9ubHkgd2hlbiBVVEYtOCBsb2NhbGUKICAgICAqIGlzIGNvbmZpZ3VyZWQgKCJDLlVURi04IiwgImVuX1VTLlVURi04IiwgZXRjLikuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2J1Z3MucGhwLm5ldC9idWcucGhwP2lkPTUyOTIzCiAgICAgKiBAc2VlIGh0dHBzOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLnBhcnNlLXVybC5waHAjMTE0ODE3CiAgICAgKiBAc2VlIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9DVVJMT1BUX1VSTC5odG1sI0VOQ09ESU5HCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxmYWxzZQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwYXJzZShzdHJpbmcgJHVybCkKICAgIHsKICAgICAgICBpZiAoc2VsZjo6aXNQYXRoTm9TY2hlbWVSZWZlcmVuY2UoJHVybCkpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OnBhcnNlUGF0aE5vU2NoZW1lUmVmZXJlbmNlKCR1cmwpOwogICAgICAgIH0KCiAgICAgICAgLy8gUHJlc2VydmUgYnJhY2tldGVkIElQdjYgbGl0ZXJhbHMgYmVmb3JlIGVuY29kaW5nLCBpbmNsdWRpbmcgZG90dGVkIElQdjQgdGFpbHMuCiAgICAgICAgJHByZWZpeCA9ICcnOwogICAgICAgIGlmIChwcmVnX21hdGNoKCclXihbMC05QS1aYS16Ky4tXSs6Ly9cW1swLTk6LmEtZkEtRl0rXF0pKC4qPykkJScsICR1cmwsICRtYXRjaGVzKSkgewogICAgICAgICAgICAvKiogQHZhciBhcnJheXswOnN0cmluZywgMTpzdHJpbmcsIDI6c3RyaW5nfSAkbWF0Y2hlcyAqLwogICAgICAgICAgICAkcHJlZml4ID0gJG1hdGNoZXNbMV07CiAgICAgICAgICAgICR1cmwgPSAkbWF0Y2hlc1syXTsKICAgICAgICB9CgogICAgICAgIC8qKiBAdmFyIHN0cmluZ3xudWxsICovCiAgICAgICAgJGVuY29kZWRVcmwgPSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soCiAgICAgICAgICAgICclW146L0A/Jj0jXSsldXNEJywKICAgICAgICAgICAgc3RhdGljIGZ1bmN0aW9uICgkbWF0Y2hlcykgewogICAgICAgICAgICAgICAgcmV0dXJuIHVybGVuY29kZSgkbWF0Y2hlc1swXSk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICR1cmwKICAgICAgICApOwoKICAgICAgICBpZiAoJGVuY29kZWRVcmwgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9IHBhcnNlX3VybCgkcHJlZml4LiRlbmNvZGVkVXJsKTsKCiAgICAgICAgaWYgKCRyZXN1bHQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBhcnJheV9tYXAoJ3VybGRlY29kZScsICRyZXN1bHQpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGlzUGF0aE5vU2NoZW1lUmVmZXJlbmNlKHN0cmluZyAkdXJsKTogYm9vbAogICAgewogICAgICAgIGlmICgkdXJsID09PSAnJyB8fCAkdXJsWzBdID09PSAnLycgfHwgJHVybFswXSA9PT0gJz8nIHx8ICR1cmxbMF0gPT09ICcjJykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkZmlyc3RTZWdtZW50ID0gc3Vic3RyKCR1cmwsIDAsIHN0cmNzcG4oJHVybCwgJy8/IycpKTsKCiAgICAgICAgcmV0dXJuIHN0cnBvcygkZmlyc3RTZWdtZW50LCAnOicpID09PSBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXl7cGF0aDogc3RyaW5nLCBxdWVyeT86IHN0cmluZywgZnJhZ21lbnQ/OiBzdHJpbmd9CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHBhcnNlUGF0aE5vU2NoZW1lUmVmZXJlbmNlKHN0cmluZyAkdXJsKTogYXJyYXkKICAgIHsKICAgICAgICAkcGFydHMgPSBbXTsKCiAgICAgICAgaWYgKGZhbHNlICE9PSAoJGZyYWdtZW50UG9zaXRpb24gPSBzdHJwb3MoJHVybCwgJyMnKSkpIHsKICAgICAgICAgICAgJHBhcnRzWydmcmFnbWVudCddID0gc3Vic3RyKCR1cmwsICRmcmFnbWVudFBvc2l0aW9uICsgMSk7CiAgICAgICAgICAgICR1cmwgPSBzdWJzdHIoJHVybCwgMCwgJGZyYWdtZW50UG9zaXRpb24pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGZhbHNlICE9PSAoJHF1ZXJ5UG9zaXRpb24gPSBzdHJwb3MoJHVybCwgJz8nKSkpIHsKICAgICAgICAgICAgJHBhcnRzWydxdWVyeSddID0gc3Vic3RyKCR1cmwsICRxdWVyeVBvc2l0aW9uICsgMSk7CiAgICAgICAgICAgICR1cmwgPSBzdWJzdHIoJHVybCwgMCwgJHF1ZXJ5UG9zaXRpb24pOwogICAgICAgIH0KCiAgICAgICAgJHBhcnRzWydwYXRoJ10gPSAkdXJsOwoKICAgICAgICByZXR1cm4gJHBhcnRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBzZWxmOjpjb21wb3NlQ29tcG9uZW50cygKICAgICAgICAgICAgJHRoaXMtPnNjaGVtZSwKICAgICAgICAgICAgJHRoaXMtPmdldEF1dGhvcml0eSgpLAogICAgICAgICAgICAkdGhpcy0+cGF0aCwKICAgICAgICAgICAgJHRoaXMtPnF1ZXJ5LAogICAgICAgICAgICAkdGhpcy0+ZnJhZ21lbnQKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcG9zZXMgYSBVUkkgcmVmZXJlbmNlIHN0cmluZyBmcm9tIGl0cyB2YXJpb3VzIGNvbXBvbmVudHMuCiAgICAgKgogICAgICogVXN1YWxseSB0aGlzIG1ldGhvZCBkb2VzIG5vdCBuZWVkIHRvIGJlIGNhbGxlZCBtYW51YWxseSBidXQgaW5zdGVhZCBpcyB1c2VkIGluZGlyZWN0bHkgdmlhCiAgICAgKiBgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U6Ol9fdG9TdHJpbmdgLgogICAgICoKICAgICAqIFBTUi03IFVyaUludGVyZmFjZSB0cmVhdHMgYW4gZW1wdHkgY29tcG9uZW50IHRoZSBzYW1lIGFzIGEgbWlzc2luZyBjb21wb25lbnQgYXMKICAgICAqIGdldFF1ZXJ5KCksIGdldEZyYWdtZW50KCkgZXRjLiBhbHdheXMgcmV0dXJuIGEgc3RyaW5nLiBUaGlzIGV4cGxhaW5zIHRoZSBzbGlnaHQKICAgICAqIGRpZmZlcmVuY2UgdG8gUkZDIDM5ODYgU2VjdGlvbiA1LjMuCiAgICAgKgogICAgICogQW5vdGhlciBhZGp1c3RtZW50IGlzIHRoYXQgdGhlIGF1dGhvcml0eSBzZXBhcmF0b3IgaXMgYWRkZWQgZXZlbiB3aGVuIHRoZSBhdXRob3JpdHkgaXMgbWlzc2luZy9lbXB0eQogICAgICogZm9yIHRoZSAiZmlsZSIgc2NoZW1lLiBUaGlzIGlzIGJlY2F1c2UgUEhQIHN0cmVhbSBmdW5jdGlvbnMgbGlrZSBgZmlsZV9nZXRfY29udGVudHNgIG9ubHkgd29yayB3aXRoCiAgICAgKiBgZmlsZTovLy9teWZpbGVgIGJ1dCBub3Qgd2l0aCBgZmlsZTovbXlmaWxlYCBhbHRob3VnaCB0aGV5IGFyZSBlcXVpdmFsZW50IGFjY29yZGluZyB0byBSRkMgMzk4Ni4gQnV0CiAgICAgKiBgZmlsZTovLy9gIGlzIHRoZSBtb3JlIGNvbW1vbiBzeW50YXggZm9yIHRoZSBmaWxlIHNjaGVtZSBhbnl3YXkgKENocm9tZSBmb3IgZXhhbXBsZSByZWRpcmVjdHMgdG8KICAgICAqIHRoYXQgZm9ybWF0KS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvbXBvc2VDb21wb25lbnRzKD9zdHJpbmcgJHNjaGVtZSwgP3N0cmluZyAkYXV0aG9yaXR5LCBzdHJpbmcgJHBhdGgsID9zdHJpbmcgJHF1ZXJ5LCA/c3RyaW5nICRmcmFnbWVudCk6IHN0cmluZwogICAgewogICAgICAgICR1cmkgPSAnJzsKCiAgICAgICAgLy8gd2VhayB0eXBlIGNoZWNrcyB0byBhbHNvIGFjY2VwdCBudWxsIHVudGlsIHdlIGNhbiBhZGQgc2NhbGFyIHR5cGUgaGludHMKICAgICAgICBpZiAoJHNjaGVtZSAhPSAnJykgewogICAgICAgICAgICAkdXJpIC49ICRzY2hlbWUuJzonOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRhdXRob3JpdHkgIT0gJycgfHwgJHNjaGVtZSA9PT0gJ2ZpbGUnKSB7CiAgICAgICAgICAgICR1cmkgLj0gJy8vJy4kYXV0aG9yaXR5OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRhdXRob3JpdHkgIT0gJycgJiYgJHBhdGggIT0gJycgJiYgJHBhdGhbMF0gIT0gJy8nKSB7CiAgICAgICAgICAgICRwYXRoID0gJy8nLiRwYXRoOwogICAgICAgIH0KCiAgICAgICAgJHVyaSAuPSAkcGF0aDsKCiAgICAgICAgaWYgKCRxdWVyeSAhPSAnJykgewogICAgICAgICAgICAkdXJpIC49ICc/Jy4kcXVlcnk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZyYWdtZW50ICE9ICcnKSB7CiAgICAgICAgICAgICR1cmkgLj0gJyMnLiRmcmFnbWVudDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdXJpOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGUgVVJJIGhhcyB0aGUgZGVmYXVsdCBwb3J0IG9mIHRoZSBjdXJyZW50IHNjaGVtZS4KICAgICAqCiAgICAgKiBgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U6OmdldFBvcnRgIG1heSByZXR1cm4gbnVsbCBvciB0aGUgc3RhbmRhcmQgcG9ydC4gVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQKICAgICAqIGluZGVwZW5kZW50bHkgb2YgdGhlIGltcGxlbWVudGF0aW9uLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzRGVmYXVsdFBvcnQoVXJpSW50ZXJmYWNlICR1cmkpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR1cmktPmdldFBvcnQoKSA9PT0gbnVsbAogICAgICAgICAgICB8fCAoaXNzZXQoc2VsZjo6REVGQVVMVF9QT1JUU1skdXJpLT5nZXRTY2hlbWUoKV0pICYmICR1cmktPmdldFBvcnQoKSA9PT0gc2VsZjo6REVGQVVMVF9QT1JUU1skdXJpLT5nZXRTY2hlbWUoKV0pOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGUgVVJJIGlzIGFic29sdXRlLCBpLmUuIGl0IGhhcyBhIHNjaGVtZS4KICAgICAqCiAgICAgKiBBbiBpbnN0YW5jZSBvZiBVcmlJbnRlcmZhY2UgY2FuIGVpdGhlciBiZSBhbiBhYnNvbHV0ZSBVUkkgb3IgYSByZWxhdGl2ZSByZWZlcmVuY2UuIFRoaXMgbWV0aG9kIHJldHVybnMgdHJ1ZQogICAgICogaWYgaXQgaXMgdGhlIGZvcm1lci4gQW4gYWJzb2x1dGUgVVJJIGhhcyBhIHNjaGVtZS4gQSByZWxhdGl2ZSByZWZlcmVuY2UgaXMgdXNlZCB0byBleHByZXNzIGEgVVJJIHJlbGF0aXZlCiAgICAgKiB0byBhbm90aGVyIFVSSSwgdGhlIGJhc2UgVVJJLiBSZWxhdGl2ZSByZWZlcmVuY2VzIGNhbiBiZSBkaXZpZGVkIGludG8gc2V2ZXJhbCBmb3JtczoKICAgICAqIC0gbmV0d29yay1wYXRoIHJlZmVyZW5jZXMsIGUuZy4gJy8vZXhhbXBsZS5jb20vcGF0aCcKICAgICAqIC0gYWJzb2x1dGUtcGF0aCByZWZlcmVuY2VzLCBlLmcuICcvcGF0aCcKICAgICAqIC0gcmVsYXRpdmUtcGF0aCByZWZlcmVuY2VzLCBlLmcuICdzdWJwYXRoJwogICAgICoKICAgICAqIEBzZWUgVXJpOjppc05ldHdvcmtQYXRoUmVmZXJlbmNlCiAgICAgKiBAc2VlIFVyaTo6aXNBYnNvbHV0ZVBhdGhSZWZlcmVuY2UKICAgICAqIEBzZWUgVXJpOjppc1JlbGF0aXZlUGF0aFJlZmVyZW5jZQogICAgICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi00CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNBYnNvbHV0ZShVcmlJbnRlcmZhY2UgJHVyaSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHVyaS0+Z2V0U2NoZW1lKCkgIT09ICcnOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGUgVVJJIGlzIGEgbmV0d29yay1wYXRoIHJlZmVyZW5jZS4KICAgICAqCiAgICAgKiBBIHJlbGF0aXZlIHJlZmVyZW5jZSB0aGF0IGJlZ2lucyB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzIGlzIHRlcm1lZCBhbiBuZXR3b3JrLXBhdGggcmVmZXJlbmNlLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNC4yCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNOZXR3b3JrUGF0aFJlZmVyZW5jZShVcmlJbnRlcmZhY2UgJHVyaSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHVyaS0+Z2V0U2NoZW1lKCkgPT09ICcnICYmICR1cmktPmdldEF1dGhvcml0eSgpICE9PSAnJzsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlIFVSSSBpcyBhIGFic29sdXRlLXBhdGggcmVmZXJlbmNlLgogICAgICoKICAgICAqIEEgcmVsYXRpdmUgcmVmZXJlbmNlIHRoYXQgYmVnaW5zIHdpdGggYSBzaW5nbGUgc2xhc2ggY2hhcmFjdGVyIGlzIHRlcm1lZCBhbiBhYnNvbHV0ZS1wYXRoIHJlZmVyZW5jZS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuMgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzQWJzb2x1dGVQYXRoUmVmZXJlbmNlKFVyaUludGVyZmFjZSAkdXJpKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdXJpLT5nZXRTY2hlbWUoKSA9PT0gJycKICAgICAgICAgICAgJiYgJHVyaS0+Z2V0QXV0aG9yaXR5KCkgPT09ICcnCiAgICAgICAgICAgICYmIGlzc2V0KCR1cmktPmdldFBhdGgoKVswXSkKICAgICAgICAgICAgJiYgJHVyaS0+Z2V0UGF0aCgpWzBdID09PSAnLyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoZSBVUkkgaXMgYSByZWxhdGl2ZS1wYXRoIHJlZmVyZW5jZS4KICAgICAqCiAgICAgKiBBIHJlbGF0aXZlIHJlZmVyZW5jZSB0aGF0IGRvZXMgbm90IGJlZ2luIHdpdGggYSBzbGFzaCBjaGFyYWN0ZXIgaXMgdGVybWVkIGEgcmVsYXRpdmUtcGF0aCByZWZlcmVuY2UuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi00LjIKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc1JlbGF0aXZlUGF0aFJlZmVyZW5jZShVcmlJbnRlcmZhY2UgJHVyaSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHVyaS0+Z2V0U2NoZW1lKCkgPT09ICcnCiAgICAgICAgICAgICYmICR1cmktPmdldEF1dGhvcml0eSgpID09PSAnJwogICAgICAgICAgICAmJiAoIWlzc2V0KCR1cmktPmdldFBhdGgoKVswXSkgfHwgJHVyaS0+Z2V0UGF0aCgpWzBdICE9PSAnLycpOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGUgVVJJIGlzIGEgc2FtZS1kb2N1bWVudCByZWZlcmVuY2UuCiAgICAgKgogICAgICogQSBzYW1lLWRvY3VtZW50IHJlZmVyZW5jZSByZWZlcnMgdG8gYSBVUkkgdGhhdCBpcywgYXNpZGUgZnJvbSBpdHMgZnJhZ21lbnQKICAgICAqIGNvbXBvbmVudCwgaWRlbnRpY2FsIHRvIHRoZSBiYXNlIFVSSS4gV2hlbiBubyBiYXNlIFVSSSBpcyBnaXZlbiwgb25seSBhbiBlbXB0eQogICAgICogVVJJIHJlZmVyZW5jZSAoYXBhcnQgZnJvbSBpdHMgZnJhZ21lbnQpIGlzIGNvbnNpZGVyZWQgYSBzYW1lLWRvY3VtZW50IHJlZmVyZW5jZS4KICAgICAqCiAgICAgKiBAcGFyYW0gVXJpSW50ZXJmYWNlICAgICAgJHVyaSAgVGhlIFVSSSB0byBjaGVjawogICAgICogQHBhcmFtIFVyaUludGVyZmFjZXxudWxsICRiYXNlIEFuIG9wdGlvbmFsIGJhc2UgVVJJIHRvIGNvbXBhcmUgYWdhaW5zdAogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNC40CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNTYW1lRG9jdW1lbnRSZWZlcmVuY2UoVXJpSW50ZXJmYWNlICR1cmksID9VcmlJbnRlcmZhY2UgJGJhc2UgPSBudWxsKTogYm9vbAogICAgewogICAgICAgIGlmICgkYmFzZSAhPT0gbnVsbCkgewogICAgICAgICAgICAkdXJpID0gVXJpUmVzb2x2ZXI6OnJlc29sdmUoJGJhc2UsICR1cmkpOwoKICAgICAgICAgICAgcmV0dXJuICgkdXJpLT5nZXRTY2hlbWUoKSA9PT0gJGJhc2UtPmdldFNjaGVtZSgpKQogICAgICAgICAgICAgICAgJiYgKCR1cmktPmdldEF1dGhvcml0eSgpID09PSAkYmFzZS0+Z2V0QXV0aG9yaXR5KCkpCiAgICAgICAgICAgICAgICAmJiAoJHVyaS0+Z2V0UGF0aCgpID09PSAkYmFzZS0+Z2V0UGF0aCgpKQogICAgICAgICAgICAgICAgJiYgKCR1cmktPmdldFF1ZXJ5KCkgPT09ICRiYXNlLT5nZXRRdWVyeSgpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdXJpLT5nZXRTY2hlbWUoKSA9PT0gJycgJiYgJHVyaS0+Z2V0QXV0aG9yaXR5KCkgPT09ICcnICYmICR1cmktPmdldFBhdGgoKSA9PT0gJycgJiYgJHVyaS0+Z2V0UXVlcnkoKSA9PT0gJyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbmV3IFVSSSB3aXRoIGEgc3BlY2lmaWMgcXVlcnkgc3RyaW5nIHZhbHVlIHJlbW92ZWQuCiAgICAgKgogICAgICogQW55IGV4aXN0aW5nIHF1ZXJ5IHN0cmluZyB2YWx1ZXMgdGhhdCBleGFjdGx5IG1hdGNoIHRoZSBwcm92aWRlZCBrZXkgYXJlCiAgICAgKiByZW1vdmVkLgogICAgICoKICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2UgJHVyaSBVUkkgdG8gdXNlIGFzIGEgYmFzZS4KICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgJGtleSBRdWVyeSBzdHJpbmcga2V5IHRvIHJlbW92ZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3aXRob3V0UXVlcnlWYWx1ZShVcmlJbnRlcmZhY2UgJHVyaSwgc3RyaW5nICRrZXkpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICAkcmVzdWx0ID0gc2VsZjo6Z2V0RmlsdGVyZWRRdWVyeVN0cmluZygkdXJpLCBbJGtleV0pOwoKICAgICAgICByZXR1cm4gJHVyaS0+d2l0aFF1ZXJ5KGltcGxvZGUoJyYnLCAkcmVzdWx0KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbmV3IFVSSSB3aXRoIGEgc3BlY2lmaWMgcXVlcnkgc3RyaW5nIHZhbHVlLgogICAgICoKICAgICAqIEFueSBleGlzdGluZyBxdWVyeSBzdHJpbmcgdmFsdWVzIHRoYXQgZXhhY3RseSBtYXRjaCB0aGUgcHJvdmlkZWQga2V5IGFyZQogICAgICogcmVtb3ZlZCBhbmQgcmVwbGFjZWQgd2l0aCB0aGUgZ2l2ZW4ga2V5IHZhbHVlIHBhaXIuCiAgICAgKgogICAgICogQSB2YWx1ZSBvZiBudWxsIHdpbGwgc2V0IHRoZSBxdWVyeSBzdHJpbmcga2V5IHdpdGhvdXQgYSB2YWx1ZSwgZS5nLiAia2V5IgogICAgICogaW5zdGVhZCBvZiAia2V5PXZhbHVlIi4KICAgICAqCiAgICAgKiBAcGFyYW0gVXJpSW50ZXJmYWNlICR1cmkgICBVUkkgdG8gdXNlIGFzIGEgYmFzZS4KICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgJGtleSAgIEtleSB0byBzZXQuCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICR2YWx1ZSBWYWx1ZSB0byBzZXQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3aXRoUXVlcnlWYWx1ZShVcmlJbnRlcmZhY2UgJHVyaSwgc3RyaW5nICRrZXksID9zdHJpbmcgJHZhbHVlKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJHJlc3VsdCA9IHNlbGY6OmdldEZpbHRlcmVkUXVlcnlTdHJpbmcoJHVyaSwgWyRrZXldKTsKCiAgICAgICAgJHJlc3VsdFtdID0gc2VsZjo6Z2VuZXJhdGVRdWVyeVN0cmluZygka2V5LCAkdmFsdWUpOwoKICAgICAgICByZXR1cm4gJHVyaS0+d2l0aFF1ZXJ5KGltcGxvZGUoJyYnLCAkcmVzdWx0KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbmV3IFVSSSB3aXRoIG11bHRpcGxlIHNwZWNpZmljIHF1ZXJ5IHN0cmluZyB2YWx1ZXMuCiAgICAgKgogICAgICogSXQgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIHdpdGhRdWVyeVZhbHVlKCkgYnV0IGZvciBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBrZXkgPT4gdmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAgICAkdXJpICAgICAgICAgICBVUkkgdG8gdXNlIGFzIGEgYmFzZS4KICAgICAqIEBwYXJhbSAoc3RyaW5nfG51bGwpW10gJGtleVZhbHVlQXJyYXkgQXNzb2NpYXRpdmUgYXJyYXkgb2Yga2V5IGFuZCB2YWx1ZXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3aXRoUXVlcnlWYWx1ZXMoVXJpSW50ZXJmYWNlICR1cmksIGFycmF5ICRrZXlWYWx1ZUFycmF5KTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJHJlc3VsdCA9IHNlbGY6OmdldEZpbHRlcmVkUXVlcnlTdHJpbmcoJHVyaSwgYXJyYXlfa2V5cygka2V5VmFsdWVBcnJheSkpOwoKICAgICAgICBmb3JlYWNoICgka2V5VmFsdWVBcnJheSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAkcmVzdWx0W10gPSBzZWxmOjpnZW5lcmF0ZVF1ZXJ5U3RyaW5nKChzdHJpbmcpICRrZXksICR2YWx1ZSAhPT0gbnVsbCA/IHNlbGY6OnN0cmluZ2lmeVF1ZXJ5VmFsdWUoJHZhbHVlKSA6IG51bGwpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR1cmktPndpdGhRdWVyeShpbXBsb2RlKCcmJywgJHJlc3VsdCkpOwogICAgfQoKICAgIC8qKgogICAgICogU3RyaW5naWZpZXMgYSBub24tbnVsbCBxdWVyeSB2YWx1ZSwgZGVwcmVjYXRpbmcgbm9uLXN0cmluZyB2YWx1ZXMgdGhhdAogICAgICogZ3V6emxlaHR0cC9wc3I3IDMuMCB3aWxsIHJlamVjdC4gTm9uLWZpbml0ZSBmbG9hdHMgYXJlIG5vcm1hbGl6ZWQgdG8gdGhlCiAgICAgKiBzdHJpbmdzIFBIUCBjb2VyY2VzIHRoZW0gdG8sIGFzIGltcGxpY2l0IGNvZXJjaW9uIG9mIE5BTiBlbWl0cyBhIHdhcm5pbmcKICAgICAqIG9uIFBIUCA4LjUuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBzdHJpbmdpZnlRdWVyeVZhbHVlKCR2YWx1ZSk6IHN0cmluZwogICAgewogICAgICAgIGlmICghaXNfc3RyaW5nKCR2YWx1ZSkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjEyJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFVyaTo6d2l0aFF1ZXJ5VmFsdWVzKCkgaXMgZGVwcmVjYXRlZDsgY2FzdCBpdCB0byBhIHN0cmluZy4gZ3V6emxlaHR0cC9wc3I3IDMuMCB3aWxsIG9ubHkgYWNjZXB0IHN0cmluZyBvciBudWxsIHF1ZXJ5IHZhbHVlcy4nLAogICAgICAgICAgICAgICAgXGdldHR5cGUoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKGlzX2Zsb2F0KCR2YWx1ZSkgJiYgIWlzX2Zpbml0ZSgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaXNfbmFuKCR2YWx1ZSkgPyAnTkFOJyA6ICgkdmFsdWUgPiAwID8gJ0lORicgOiAnLUlORicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKHN0cmluZykgJHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIFVSSSBmcm9tIGEgaGFzaCBvZiBgcGFyc2VfdXJsYCBjb21wb25lbnRzLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24ucGFyc2UtdXJsLnBocAogICAgICoKICAgICAqIEB0aHJvd3MgTWFsZm9ybWVkVXJpRXhjZXB0aW9uIElmIHRoZSBjb21wb25lbnRzIGRvIG5vdCBmb3JtIGEgdmFsaWQgVVJJLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21QYXJ0cyhhcnJheSAkcGFydHMpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICAkdXJpID0gbmV3IHNlbGYoKTsKICAgICAgICB0cnkgewogICAgICAgICAgICAkdXJpLT5hcHBseVBhcnRzKCRwYXJ0cyk7CiAgICAgICAgICAgICR1cmktPnZhbGlkYXRlU3RhdGUoKTsKICAgICAgICB9IGNhdGNoIChNYWxmb3JtZWRVcmlFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfSBjYXRjaCAoXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTWFsZm9ybWVkVXJpRXhjZXB0aW9uKCRlLT5nZXRNZXNzYWdlKCksIDAsICRlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdXJpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBob3N0IGlzIGludmFsaWQuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYXNzZXJ0VmFsaWRIb3N0KHN0cmluZyAkaG9zdCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJGhvc3QgPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmIChwcmVnX21hdGNoKCcvW1x4MDAtXHgyMFx4N0ZdLycsICRob3N0KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdJbnZhbGlkIGhvc3Q6ICIlcyInLCAkaG9zdCkpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2NoZW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2NoZW1lOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdXRob3JpdHkoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGF1dGhvcml0eSA9ICR0aGlzLT5ob3N0OwogICAgICAgIGlmICgkdGhpcy0+dXNlckluZm8gIT09ICcnKSB7CiAgICAgICAgICAgICRhdXRob3JpdHkgPSAkdGhpcy0+dXNlckluZm8uJ0AnLiRhdXRob3JpdHk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnBvcnQgIT09IG51bGwpIHsKICAgICAgICAgICAgJGF1dGhvcml0eSAuPSAnOicuJHRoaXMtPnBvcnQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGF1dGhvcml0eTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXNlckluZm8oKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51c2VySW5mbzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SG9zdCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmhvc3Q7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFBvcnQoKTogP2ludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cG9ydDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UGF0aCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnBhdGg7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFF1ZXJ5KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cXVlcnk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEZyYWdtZW50KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZnJhZ21lbnQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTY2hlbWUoJHNjaGVtZSk6IFVyaUludGVyZmFjZQogICAgewogICAgICAgICRzY2hlbWUgPSAkdGhpcy0+ZmlsdGVyU2NoZW1lKCRzY2hlbWUpOwoKICAgICAgICBpZiAoJHRoaXMtPnNjaGVtZSA9PT0gJHNjaGVtZSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+c2NoZW1lID0gJHNjaGVtZTsKICAgICAgICAkbmV3LT5yZW1vdmVEZWZhdWx0UG9ydCgpOwogICAgICAgICRuZXctPnZhbGlkYXRlU3RhdGUoKTsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhVc2VySW5mbygkdXNlciwgJHBhc3N3b3JkID0gbnVsbCk6IFVyaUludGVyZmFjZQogICAgewogICAgICAgICRpbmZvID0gJHRoaXMtPmZpbHRlclVzZXJJbmZvQ29tcG9uZW50KCR1c2VyKTsKICAgICAgICBpZiAoJHBhc3N3b3JkICE9PSBudWxsKSB7CiAgICAgICAgICAgICRpbmZvIC49ICc6Jy4kdGhpcy0+ZmlsdGVyVXNlckluZm9Db21wb25lbnQoJHBhc3N3b3JkKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+dXNlckluZm8gPT09ICRpbmZvKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgICRuZXcgPSBjbG9uZSAkdGhpczsKICAgICAgICAkbmV3LT51c2VySW5mbyA9ICRpbmZvOwogICAgICAgICRuZXctPnZhbGlkYXRlU3RhdGUoKTsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhIb3N0KCRob3N0KTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJGhvc3QgPSAkdGhpcy0+ZmlsdGVySG9zdCgkaG9zdCk7CgogICAgICAgIGlmICgkdGhpcy0+aG9zdCA9PT0gJGhvc3QpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPmhvc3QgPSAkaG9zdDsKICAgICAgICAkbmV3LT52YWxpZGF0ZVN0YXRlKCk7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUG9ydCgkcG9ydCk6IFVyaUludGVyZmFjZQogICAgewogICAgICAgIGlmICgkcG9ydCAhPT0gbnVsbCAmJiAhXGlzX2ludCgkcG9ydCkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICVzIHRvIFVyaUludGVyZmFjZTo6d2l0aFBvcnQoKSBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzIGludHxudWxsLicsCiAgICAgICAgICAgICAgICBcZ2V0X2RlYnVnX3R5cGUoJHBvcnQpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkcG9ydCA9ICR0aGlzLT5maWx0ZXJQb3J0KCRwb3J0KTsKCiAgICAgICAgaWYgKCR0aGlzLT5wb3J0ID09PSAkcG9ydCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+cG9ydCA9ICRwb3J0OwogICAgICAgICRuZXctPnJlbW92ZURlZmF1bHRQb3J0KCk7CiAgICAgICAgJG5ldy0+dmFsaWRhdGVTdGF0ZSgpOwoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFBhdGgoJHBhdGgpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICAkcGF0aCA9ICR0aGlzLT5maWx0ZXJQYXRoKCRwYXRoKTsKCiAgICAgICAgaWYgKCR0aGlzLT5wYXRoID09PSAkcGF0aCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+cGF0aCA9ICRwYXRoOwogICAgICAgICRuZXctPnZhbGlkYXRlU3RhdGUoKTsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhRdWVyeSgkcXVlcnkpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICAkcXVlcnkgPSAkdGhpcy0+ZmlsdGVyUXVlcnlBbmRGcmFnbWVudCgkcXVlcnkpOwoKICAgICAgICBpZiAoJHRoaXMtPnF1ZXJ5ID09PSAkcXVlcnkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPnF1ZXJ5ID0gJHF1ZXJ5OwoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEZyYWdtZW50KCRmcmFnbWVudCk6IFVyaUludGVyZmFjZQogICAgewogICAgICAgICRmcmFnbWVudCA9ICR0aGlzLT5maWx0ZXJRdWVyeUFuZEZyYWdtZW50KCRmcmFnbWVudCk7CgogICAgICAgIGlmICgkdGhpcy0+ZnJhZ21lbnQgPT09ICRmcmFnbWVudCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+ZnJhZ21lbnQgPSAkZnJhZ21lbnQ7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBqc29uU2VyaWFsaXplKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X190b1N0cmluZygpOwogICAgfQoKICAgIC8qKgogICAgICogQXBwbHkgcGFyc2VfdXJsIHBhcnRzIHRvIGEgVVJJLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkcGFydHMgQXJyYXkgb2YgcGFyc2VfdXJsIHBhcnRzIHRvIGFwcGx5LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFwcGx5UGFydHMoYXJyYXkgJHBhcnRzKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5zY2hlbWUgPSBpc3NldCgkcGFydHNbJ3NjaGVtZSddKQogICAgICAgICAgICA/ICR0aGlzLT5maWx0ZXJTY2hlbWUoJHBhcnRzWydzY2hlbWUnXSkKICAgICAgICAgICAgOiAnJzsKICAgICAgICAkdGhpcy0+dXNlckluZm8gPSBpc3NldCgkcGFydHNbJ3VzZXInXSkKICAgICAgICAgICAgPyAkdGhpcy0+ZmlsdGVyVXNlckluZm9Db21wb25lbnQoJHBhcnRzWyd1c2VyJ10pCiAgICAgICAgICAgIDogJyc7CiAgICAgICAgJHRoaXMtPmhvc3QgPSBpc3NldCgkcGFydHNbJ2hvc3QnXSkKICAgICAgICAgICAgPyAkdGhpcy0+ZmlsdGVySG9zdCgkcGFydHNbJ2hvc3QnXSkKICAgICAgICAgICAgOiAnJzsKICAgICAgICAkdGhpcy0+cG9ydCA9IGlzc2V0KCRwYXJ0c1sncG9ydCddKQogICAgICAgICAgICA/ICR0aGlzLT5maWx0ZXJQb3J0KCRwYXJ0c1sncG9ydCddKQogICAgICAgICAgICA6IG51bGw7CiAgICAgICAgJHRoaXMtPnBhdGggPSBpc3NldCgkcGFydHNbJ3BhdGgnXSkKICAgICAgICAgICAgPyAkdGhpcy0+ZmlsdGVyUGF0aCgkcGFydHNbJ3BhdGgnXSkKICAgICAgICAgICAgOiAnJzsKICAgICAgICAkdGhpcy0+cXVlcnkgPSBpc3NldCgkcGFydHNbJ3F1ZXJ5J10pCiAgICAgICAgICAgID8gJHRoaXMtPmZpbHRlclF1ZXJ5QW5kRnJhZ21lbnQoJHBhcnRzWydxdWVyeSddKQogICAgICAgICAgICA6ICcnOwogICAgICAgICR0aGlzLT5mcmFnbWVudCA9IGlzc2V0KCRwYXJ0c1snZnJhZ21lbnQnXSkKICAgICAgICAgICAgPyAkdGhpcy0+ZmlsdGVyUXVlcnlBbmRGcmFnbWVudCgkcGFydHNbJ2ZyYWdtZW50J10pCiAgICAgICAgICAgIDogJyc7CiAgICAgICAgaWYgKGlzc2V0KCRwYXJ0c1sncGFzcyddKSkgewogICAgICAgICAgICAkdGhpcy0+dXNlckluZm8gLj0gJzonLiR0aGlzLT5maWx0ZXJVc2VySW5mb0NvbXBvbmVudCgkcGFydHNbJ3Bhc3MnXSk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+cmVtb3ZlRGVmYXVsdFBvcnQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkc2NoZW1lCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBzY2hlbWUgaXMgaW52YWxpZC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaWx0ZXJTY2hlbWUoJHNjaGVtZSk6IHN0cmluZwogICAgewogICAgICAgIGlmICghaXNfc3RyaW5nKCRzY2hlbWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdTY2hlbWUgbXVzdCBiZSBhIHN0cmluZycpOwogICAgICAgIH0KCiAgICAgICAgJHNjaGVtZSA9IFxzdHJ0cigkc2NoZW1lLCAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonLCAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonKTsKCiAgICAgICAgaWYgKCRzY2hlbWUgIT09ICcnICYmICFwcmVnX21hdGNoKCcvXlthLXpdW2EtejAtOS4rLV0qJC9EJywgJHNjaGVtZSkpIHsKICAgICAgICAgICAgXHRyaWdnZXJfZGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgICAgICdQYXNzaW5nICIlcyIgYXMgYSBVUkkgc2NoZW1lIGlzIGRlcHJlY2F0ZWQ7IGd1enpsZWh0dHAvcHNyNyAzLjAgcmVxdWlyZXMgVVJJIHNjaGVtZXMgdG8gbWF0Y2ggUkZDIDM5ODYgc3ludGF4IGFuZCBiZWdpbiB3aXRoIGEgbGV0dGVyLicsCiAgICAgICAgICAgICAgICAkc2NoZW1lCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHNjaGVtZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkY29tcG9uZW50CiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSB1c2VyIGluZm8gaXMgaW52YWxpZC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaWx0ZXJVc2VySW5mb0NvbXBvbmVudCgkY29tcG9uZW50KTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJGNvbXBvbmVudCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VzZXIgaW5mbyBtdXN0IGJlIGEgc3RyaW5nJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKAogICAgICAgICAgICAnLyg/OlteJScuUmZjMzk4Njo6Q0hBUl9VTlJFU0VSVkVELlJmYzM5ODY6OkNIQVJfU1VCX0RFTElNUy4nXSt8JSg/IVtBLUZhLWYwLTldezJ9KSkvJywKICAgICAgICAgICAgWyR0aGlzLCAncmF3dXJsZW5jb2RlTWF0Y2haZXJvJ10sCiAgICAgICAgICAgICRjb21wb25lbnQKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICRob3N0CiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBob3N0IGlzIGludmFsaWQuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZmlsdGVySG9zdCgkaG9zdCk6IHN0cmluZwogICAgewogICAgICAgIGlmICghaXNfc3RyaW5nKCRob3N0KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSG9zdCBtdXN0IGJlIGEgc3RyaW5nJyk7CiAgICAgICAgfQoKICAgICAgICAkaG9zdCA9IFxzdHJ0cigkaG9zdCwgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJywgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Jyk7CiAgICAgICAgc2VsZjo6YXNzZXJ0VmFsaWRIb3N0KCRob3N0KTsKCiAgICAgICAgcmV0dXJuICRob3N0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICRwb3J0CiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBwb3J0IGlzIGludmFsaWQuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZmlsdGVyUG9ydCgkcG9ydCk6ID9pbnQKICAgIHsKICAgICAgICBpZiAoJHBvcnQgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkcG9ydCA9IChpbnQpICRwb3J0OwogICAgICAgIGlmICgwID4gJHBvcnQgfHwgMHhGRkZGIDwgJHBvcnQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICBzcHJpbnRmKCdJbnZhbGlkIHBvcnQ6ICVkLiBNdXN0IGJlIGJldHdlZW4gMCBhbmQgNjU1MzUnLCAkcG9ydCkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcG9ydDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAoc3RyaW5nfGludClbXSAka2V5cwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nW10KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0RmlsdGVyZWRRdWVyeVN0cmluZyhVcmlJbnRlcmZhY2UgJHVyaSwgYXJyYXkgJGtleXMpOiBhcnJheQogICAgewogICAgICAgICRjdXJyZW50ID0gJHVyaS0+Z2V0UXVlcnkoKTsKCiAgICAgICAgaWYgKCRjdXJyZW50ID09PSAnJykgewogICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgfQoKICAgICAgICAkZGVjb2RlZEtleXMgPSBhcnJheV9tYXAoZnVuY3Rpb24gKCRrKTogc3RyaW5nIHsKICAgICAgICAgICAgcmV0dXJuIHJhd3VybGRlY29kZSgoc3RyaW5nKSAkayk7CiAgICAgICAgfSwgJGtleXMpOwoKICAgICAgICByZXR1cm4gYXJyYXlfZmlsdGVyKGV4cGxvZGUoJyYnLCAkY3VycmVudCksIGZ1bmN0aW9uICgkcGFydCkgdXNlICgkZGVjb2RlZEtleXMpIHsKICAgICAgICAgICAgcmV0dXJuICFpbl9hcnJheShyYXd1cmxkZWNvZGUoZXhwbG9kZSgnPScsICRwYXJ0KVswXSksICRkZWNvZGVkS2V5cywgdHJ1ZSk7CiAgICAgICAgfSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2VuZXJhdGVRdWVyeVN0cmluZyhzdHJpbmcgJGtleSwgP3N0cmluZyAkdmFsdWUpOiBzdHJpbmcKICAgIHsKICAgICAgICAvLyBRdWVyeSBzdHJpbmcgc2VwYXJhdG9ycyAoIj0iLCAiJiIpIGFuZCBsaXRlcmFsIHBsdXMgc2lnbnMgKCIrIikgd2l0aGluIHRoZQogICAgICAgIC8vIGtleSBvciB2YWx1ZSBuZWVkIHRvIGJlIGVuY29kZWQKICAgICAgICAvLyAod2hpbGUgcHJldmVudGluZyBkb3VibGUtZW5jb2RpbmcpIGJlZm9yZSBzZXR0aW5nIHRoZSBxdWVyeSBzdHJpbmcuIEFsbCBvdGhlcgogICAgICAgIC8vIGNoYXJzIHRoYXQgbmVlZCBwZXJjZW50LWVuY29kaW5nIHdpbGwgYmUgZW5jb2RlZCBieSB3aXRoUXVlcnkoKS4KICAgICAgICAkcXVlcnlTdHJpbmcgPSBzdHJ0cigka2V5LCBzZWxmOjpRVUVSWV9TRVBBUkFUT1JTX1JFUExBQ0VNRU5UKTsKCiAgICAgICAgaWYgKCR2YWx1ZSAhPT0gbnVsbCkgewogICAgICAgICAgICAkcXVlcnlTdHJpbmcgLj0gJz0nLnN0cnRyKCR2YWx1ZSwgc2VsZjo6UVVFUllfU0VQQVJBVE9SU19SRVBMQUNFTUVOVCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHF1ZXJ5U3RyaW5nOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcmVtb3ZlRGVmYXVsdFBvcnQoKTogdm9pZAogICAgewogICAgICAgIGlmICgkdGhpcy0+cG9ydCAhPT0gbnVsbCAmJiBzZWxmOjppc0RlZmF1bHRQb3J0KCR0aGlzKSkgewogICAgICAgICAgICAkdGhpcy0+cG9ydCA9IG51bGw7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogRmlsdGVycyB0aGUgcGF0aCBvZiBhIFVSSQogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkcGF0aAogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgcGF0aCBpcyBpbnZhbGlkLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZpbHRlclBhdGgoJHBhdGgpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoIWlzX3N0cmluZygkcGF0aCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1BhdGggbXVzdCBiZSBhIHN0cmluZycpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHByZWdfcmVwbGFjZV9jYWxsYmFjaygKICAgICAgICAgICAgJy8oPzpbXicuUmZjMzk4Njo6Q0hBUl9VTlJFU0VSVkVELlJmYzM5ODY6OkNIQVJfU1VCX0RFTElNUy4nJTpAXC9dKyt8JSg/IVtBLUZhLWYwLTldezJ9KSkvJywKICAgICAgICAgICAgWyR0aGlzLCAncmF3dXJsZW5jb2RlTWF0Y2haZXJvJ10sCiAgICAgICAgICAgICRwYXRoCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbHRlcnMgdGhlIHF1ZXJ5IHN0cmluZyBvciBmcmFnbWVudCBvZiBhIFVSSS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHN0cgogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgcXVlcnkgb3IgZnJhZ21lbnQgaXMgaW52YWxpZC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaWx0ZXJRdWVyeUFuZEZyYWdtZW50KCRzdHIpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoIWlzX3N0cmluZygkc3RyKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignUXVlcnkgYW5kIGZyYWdtZW50IG11c3QgYmUgYSBzdHJpbmcnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwcmVnX3JlcGxhY2VfY2FsbGJhY2soCiAgICAgICAgICAgICcvKD86W14nLlJmYzM5ODY6OkNIQVJfVU5SRVNFUlZFRC5SZmMzOTg2OjpDSEFSX1NVQl9ERUxJTVMuJyU6QFwvXD9dKyt8JSg/IVtBLUZhLWYwLTldezJ9KSkvJywKICAgICAgICAgICAgWyR0aGlzLCAncmF3dXJsZW5jb2RlTWF0Y2haZXJvJ10sCiAgICAgICAgICAgICRzdHIKICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcmF3dXJsZW5jb2RlTWF0Y2haZXJvKGFycmF5ICRtYXRjaCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiByYXd1cmxlbmNvZGUoJG1hdGNoWzBdKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHZhbGlkYXRlU3RhdGUoKTogdm9pZAogICAgewogICAgICAgIGlmICgkdGhpcy0+aG9zdCA9PT0gJycgJiYgKCR0aGlzLT5zY2hlbWUgPT09ICdodHRwJyB8fCAkdGhpcy0+c2NoZW1lID09PSAnaHR0cHMnKSkgewogICAgICAgICAgICAkdGhpcy0+aG9zdCA9IHNlbGY6OkhUVFBfREVGQVVMVF9IT1NUOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5nZXRBdXRob3JpdHkoKSA9PT0gJycpIHsKICAgICAgICAgICAgaWYgKDAgPT09IHN0cnBvcygkdGhpcy0+cGF0aCwgJy8vJykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBNYWxmb3JtZWRVcmlFeGNlcHRpb24oJ1RoZSBwYXRoIG9mIGEgVVJJIHdpdGhvdXQgYW4gYXV0aG9yaXR5IG11c3Qgbm90IHN0YXJ0IHdpdGggdHdvIHNsYXNoZXMgIi8vIicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkdGhpcy0+c2NoZW1lID09PSAnJyAmJiBmYWxzZSAhPT0gc3RycG9zKGV4cGxvZGUoJy8nLCAkdGhpcy0+cGF0aCwgMilbMF0sICc6JykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBNYWxmb3JtZWRVcmlFeGNlcHRpb24oJ0EgcmVsYXRpdmUgVVJJIG11c3Qgbm90IGhhdmUgYSBwYXRoIGJlZ2lubmluZyB3aXRoIGEgc2VnbWVudCBjb250YWluaW5nIGEgY29sb24nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/UriComparator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCi8qKgogKiBQcm92aWRlcyBtZXRob2RzIHRvIGRldGVybWluZSBpZiBhIG1vZGlmaWVkIFVSTCBzaG91bGQgYmUgY29uc2lkZXJlZCBjcm9zcy1vcmlnaW4uCiAqCiAqIEBhdXRob3IgR3JhaGFtIENhbXBiZWxsCiAqLwpmaW5hbCBjbGFzcyBVcmlDb21wYXJhdG9yCnsKICAgIC8qKgogICAgICogRGV0ZXJtaW5lcyBpZiBhIG1vZGlmaWVkIFVSTCBzaG91bGQgYmUgY29uc2lkZXJlZCBjcm9zcy1vcmlnaW4gd2l0aAogICAgICogcmVzcGVjdCB0byBhbiBvcmlnaW5hbCBVUkwuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNDcm9zc09yaWdpbihVcmlJbnRlcmZhY2UgJG9yaWdpbmFsLCBVcmlJbnRlcmZhY2UgJG1vZGlmaWVkKTogYm9vbAogICAgewogICAgICAgIGlmIChcc3RyY2FzZWNtcCgkb3JpZ2luYWwtPmdldEhvc3QoKSwgJG1vZGlmaWVkLT5nZXRIb3N0KCkpICE9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRvcmlnaW5hbC0+Z2V0U2NoZW1lKCkgIT09ICRtb2RpZmllZC0+Z2V0U2NoZW1lKCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoc2VsZjo6Y29tcHV0ZVBvcnQoJG9yaWdpbmFsKSAhPT0gc2VsZjo6Y29tcHV0ZVBvcnQoJG1vZGlmaWVkKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjb21wdXRlUG9ydChVcmlJbnRlcmZhY2UgJHVyaSk6ID9pbnQKICAgIHsKICAgICAgICAkcG9ydCA9ICR1cmktPmdldFBvcnQoKTsKCiAgICAgICAgaWYgKG51bGwgIT09ICRwb3J0KSB7CiAgICAgICAgICAgIHJldHVybiAkcG9ydDsKICAgICAgICB9CgogICAgICAgIGlmICgnaHR0cCcgPT09ICR1cmktPmdldFNjaGVtZSgpKSB7CiAgICAgICAgICAgIHJldHVybiA4MDsKICAgICAgICB9CgogICAgICAgIGlmICgnaHR0cHMnID09PSAkdXJpLT5nZXRTY2hlbWUoKSkgewogICAgICAgICAgICByZXR1cm4gNDQzOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgLy8gY2Fubm90IGJlIGluc3RhbnRpYXRlZAogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/UriNormalizer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCi8qKgogKiBQcm92aWRlcyBtZXRob2RzIHRvIG5vcm1hbGl6ZSBhbmQgY29tcGFyZSBVUklzLgogKgogKiBAYXV0aG9yIFRvYmlhcyBTY2h1bHR6ZQogKgogKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTYKICovCmZpbmFsIGNsYXNzIFVyaU5vcm1hbGl6ZXIKewogICAgLyoqCiAgICAgKiBEZWZhdWx0IG5vcm1hbGl6YXRpb25zIHdoaWNoIG9ubHkgaW5jbHVkZSB0aGUgb25lcyB0aGF0IHByZXNlcnZlIHNlbWFudGljcy4KICAgICAqLwogICAgcHVibGljIGNvbnN0IFBSRVNFUlZJTkdfTk9STUFMSVpBVElPTlMgPQogICAgICAgIHNlbGY6OkNBUElUQUxJWkVfUEVSQ0VOVF9FTkNPRElORyB8CiAgICAgICAgc2VsZjo6REVDT0RFX1VOUkVTRVJWRURfQ0hBUkFDVEVSUyB8CiAgICAgICAgc2VsZjo6Q09OVkVSVF9FTVBUWV9QQVRIIHwKICAgICAgICBzZWxmOjpSRU1PVkVfREVGQVVMVF9IT1NUIHwKICAgICAgICBzZWxmOjpSRU1PVkVfREVGQVVMVF9QT1JUIHwKICAgICAgICBzZWxmOjpSRU1PVkVfRE9UX1NFR01FTlRTOwoKICAgIC8qKgogICAgICogQWxsIGxldHRlcnMgd2l0aGluIGEgcGVyY2VudC1lbmNvZGluZyB0cmlwbGV0IChlLmcuLCAiJTNBIikgYXJlIGNhc2UtaW5zZW5zaXRpdmUsIGFuZCBzaG91bGQgYmUgY2FwaXRhbGl6ZWQuCiAgICAgKgogICAgICogRXhhbXBsZTogaHR0cDovL2V4YW1wbGUub3JnL2ElYzIlYjFiIOKGkiBodHRwOi8vZXhhbXBsZS5vcmcvYSVDMiVCMWIKICAgICAqLwogICAgcHVibGljIGNvbnN0IENBUElUQUxJWkVfUEVSQ0VOVF9FTkNPRElORyA9IDE7CgogICAgLyoqCiAgICAgKiBEZWNvZGVzIHBlcmNlbnQtZW5jb2RlZCBvY3RldHMgb2YgdW5yZXNlcnZlZCBjaGFyYWN0ZXJzLgogICAgICoKICAgICAqIEZvciBjb25zaXN0ZW5jeSwgcGVyY2VudC1lbmNvZGVkIG9jdGV0cyBpbiB0aGUgcmFuZ2VzIG9mIEFMUEhBICglNDHigJMlNUEgYW5kICU2MeKAkyU3QSksIERJR0lUICglMzDigJMlMzkpLAogICAgICogaHlwaGVuICglMkQpLCBwZXJpb2QgKCUyRSksIHVuZGVyc2NvcmUgKCU1RiksIG9yIHRpbGRlICglN0UpIHNob3VsZCBub3QgYmUgY3JlYXRlZCBieSBVUkkgcHJvZHVjZXJzIGFuZCwKICAgICAqIHdoZW4gZm91bmQgaW4gYSBVUkksIHNob3VsZCBiZSBkZWNvZGVkIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgdW5yZXNlcnZlZCBjaGFyYWN0ZXJzIGJ5IFVSSSBub3JtYWxpemVycy4KICAgICAqCiAgICAgKiBFeGFtcGxlOiBodHRwOi8vZXhhbXBsZS5vcmcvJTdFdXNlcm4lNjFtZS8g4oaSIGh0dHA6Ly9leGFtcGxlLm9yZy9+dXNlcm5hbWUvCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBERUNPREVfVU5SRVNFUlZFRF9DSEFSQUNURVJTID0gMjsKCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBlbXB0eSBwYXRoIHRvICIvIiBmb3IgaHR0cCBhbmQgaHR0cHMgVVJJcy4KICAgICAqCiAgICAgKiBFeGFtcGxlOiBodHRwOi8vZXhhbXBsZS5vcmcg4oaSIGh0dHA6Ly9leGFtcGxlLm9yZy8KICAgICAqLwogICAgcHVibGljIGNvbnN0IENPTlZFUlRfRU1QVFlfUEFUSCA9IDQ7CgogICAgLyoqCiAgICAgKiBSZW1vdmVzIHRoZSBkZWZhdWx0IGhvc3Qgb2YgdGhlIGdpdmVuIFVSSSBzY2hlbWUgZnJvbSB0aGUgVVJJLgogICAgICoKICAgICAqIE9ubHkgdGhlICJmaWxlIiBzY2hlbWUgZGVmaW5lcyB0aGUgZGVmYXVsdCBob3N0ICJsb2NhbGhvc3QiLgogICAgICogQWxsIG9mIGBmaWxlOi9teWZpbGVgLCBgZmlsZTovLy9teWZpbGVgLCBhbmQgYGZpbGU6Ly9sb2NhbGhvc3QvbXlmaWxlYAogICAgICogYXJlIGVxdWl2YWxlbnQgYWNjb3JkaW5nIHRvIFJGQyAzOTg2LiBUaGUgZmlyc3QgZm9ybWF0IGlzIG5vdCBhY2NlcHRlZAogICAgICogYnkgUEhQcyBzdHJlYW0gZnVuY3Rpb25zIGFuZCB0aHVzIGFscmVhZHkgbm9ybWFsaXplZCBpbXBsaWNpdGx5IHRvIHRoZQogICAgICogc2Vjb25kIGZvcm1hdCBpbiB0aGUgVXJpIGNsYXNzLiBTZWUgYEd1enpsZUh0dHBcUHNyN1xVcmk6OmNvbXBvc2VDb21wb25lbnRzYC4KICAgICAqCiAgICAgKiBFeGFtcGxlOiBmaWxlOi8vbG9jYWxob3N0L215ZmlsZSDihpIgZmlsZTovLy9teWZpbGUKICAgICAqLwogICAgcHVibGljIGNvbnN0IFJFTU9WRV9ERUZBVUxUX0hPU1QgPSA4OwoKICAgIC8qKgogICAgICogUmVtb3ZlcyB0aGUgZGVmYXVsdCBwb3J0IG9mIHRoZSBnaXZlbiBVUkkgc2NoZW1lIGZyb20gdGhlIFVSSS4KICAgICAqCiAgICAgKiBFeGFtcGxlOiBodHRwOi8vZXhhbXBsZS5vcmc6ODAvIOKGkiBodHRwOi8vZXhhbXBsZS5vcmcvCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBSRU1PVkVfREVGQVVMVF9QT1JUID0gMTY7CgogICAgLyoqCiAgICAgKiBSZW1vdmVzIHVubmVjZXNzYXJ5IGRvdC1zZWdtZW50cy4KICAgICAqCiAgICAgKiBEb3Qtc2VnbWVudHMgaW4gcmVsYXRpdmUtcGF0aCByZWZlcmVuY2VzIGFyZSBub3QgcmVtb3ZlZCBhcyBpdCB3b3VsZAogICAgICogY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIFVSSSByZWZlcmVuY2UuCiAgICAgKgogICAgICogRXhhbXBsZTogaHR0cDovL2V4YW1wbGUub3JnLy4uL2EvYi8uLi9jLy4vZC5odG1sIOKGkiBodHRwOi8vZXhhbXBsZS5vcmcvYS9jL2QuaHRtbAogICAgICovCiAgICBwdWJsaWMgY29uc3QgUkVNT1ZFX0RPVF9TRUdNRU5UUyA9IDMyOwoKICAgIC8qKgogICAgICogUGF0aHMgd2hpY2ggaW5jbHVkZSB0d28gb3IgbW9yZSBhZGphY2VudCBzbGFzaGVzIGFyZSBjb252ZXJ0ZWQgdG8gb25lLgogICAgICoKICAgICAqIFdlYnNlcnZlcnMgdXN1YWxseSBpZ25vcmUgZHVwbGljYXRlIHNsYXNoZXMgYW5kIHRyZWF0IHRob3NlIFVSSXMgZXF1aXZhbGVudC4KICAgICAqIEJ1dCBpbiB0aGVvcnkgdGhvc2UgVVJJcyBkbyBub3QgbmVlZCB0byBiZSBlcXVpdmFsZW50LiBTbyB0aGlzIG5vcm1hbGl6YXRpb24KICAgICAqIG1heSBjaGFuZ2UgdGhlIHNlbWFudGljcy4gRW5jb2RlZCBzbGFzaGVzICglMkYpIGFyZSBub3QgcmVtb3ZlZC4KICAgICAqCiAgICAgKiBFeGFtcGxlOiBodHRwOi8vZXhhbXBsZS5vcmcvL2Zvby8vL2Jhci5odG1sIOKGkiBodHRwOi8vZXhhbXBsZS5vcmcvZm9vL2Jhci5odG1sCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBSRU1PVkVfRFVQTElDQVRFX1NMQVNIRVMgPSA2NDsKCiAgICAvKioKICAgICAqIFNvcnQgcXVlcnkgcGFyYW1ldGVycyB3aXRoIHRoZWlyIHZhbHVlcyBpbiBhbHBoYWJldGljYWwgb3JkZXIuCiAgICAgKgogICAgICogSG93ZXZlciwgdGhlIG9yZGVyIG9mIHBhcmFtZXRlcnMgaW4gYSBVUkkgbWF5IGJlIHNpZ25pZmljYW50ICh0aGlzIGlzIG5vdCBkZWZpbmVkIGJ5IHRoZSBzdGFuZGFyZCkuCiAgICAgKiBTbyB0aGlzIG5vcm1hbGl6YXRpb24gaXMgbm90IHNhZmUgYW5kIG1heSBjaGFuZ2UgdGhlIHNlbWFudGljcyBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIEV4YW1wbGU6ID9sYW5nPWVuJmFydGljbGU9ZnJlZCDihpIgP2FydGljbGU9ZnJlZCZsYW5nPWVuCiAgICAgKgogICAgICogTm90ZTogVGhlIHNvcnRpbmcgaXMgbmVpdGhlciBsb2NhbGUgbm9yIFVuaWNvZGUgYXdhcmUgKHRoZSBVUkkgcXVlcnkgZG9lcyBub3QgZ2V0IGRlY29kZWQgYXQgYWxsKSBhcyB0aGUKICAgICAqIHB1cnBvc2UgaXMgdG8gYmUgYWJsZSB0byBjb21wYXJlIFVSSXMgaW4gYSByZXByb2R1Y2libGUgd2F5LCBub3QgdG8gaGF2ZSB0aGUgcGFyYW1zIHNvcnRlZCBwZXJmZWN0bHkuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBTT1JUX1FVRVJZX1BBUkFNRVRFUlMgPSAxMjg7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgbm9ybWFsaXplZCBVUkkuCiAgICAgKgogICAgICogVGhlIHNjaGVtZSBhbmQgaG9zdCBjb21wb25lbnQgYXJlIGFscmVhZHkgbm9ybWFsaXplZCB0byBsb3dlcmNhc2UgcGVyIFBTUi03IFVyaUludGVyZmFjZS4KICAgICAqIFRoaXMgbWV0aG9kcyBhZGRzIGFkZGl0aW9uYWwgbm9ybWFsaXphdGlvbnMgdGhhdCBjYW4gYmUgY29uZmlndXJlZCB3aXRoIHRoZSAkZmxhZ3MgcGFyYW1ldGVyLgogICAgICoKICAgICAqIFBTUi03IFVyaUludGVyZmFjZSBjYW5ub3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiBhbiBlbXB0eSBjb21wb25lbnQgYW5kIGEgbWlzc2luZyBjb21wb25lbnQgYXMKICAgICAqIGdldFF1ZXJ5KCksIGdldEZyYWdtZW50KCkgZXRjLiBhbHdheXMgcmV0dXJuIGEgc3RyaW5nLiBUaGlzIG1lYW5zIHRoZSBVUklzICIvPyMiIGFuZCAiLyIgYXJlCiAgICAgKiB0cmVhdGVkIGVxdWl2YWxlbnQgd2hpY2ggaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUgYWNjb3JkaW5nIHRvIFJGQyAzOTg2LiBCdXQgdGhhdCBkaWZmZXJlbmNlCiAgICAgKiBpcyBoaWdobHkgdW5jb21tb24gaW4gcmVhbGl0eS4gU28gdGhpcyBwb3RlbnRpYWwgbm9ybWFsaXphdGlvbiBpcyBpbXBsaWVkIGluIFBTUi03IGFzIHdlbGwuCiAgICAgKgogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAkdXJpICAgVGhlIFVSSSB0byBub3JtYWxpemUKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgJGZsYWdzIEEgYml0bWFzayBvZiBub3JtYWxpemF0aW9ucyB0byBhcHBseSwgc2VlIGNvbnN0YW50cwogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNi4yCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbm9ybWFsaXplKFVyaUludGVyZmFjZSAkdXJpLCBpbnQgJGZsYWdzID0gc2VsZjo6UFJFU0VSVklOR19OT1JNQUxJWkFUSU9OUyk6IFVyaUludGVyZmFjZQogICAgewogICAgICAgIGlmICgkZmxhZ3MgJiBzZWxmOjpDQVBJVEFMSVpFX1BFUkNFTlRfRU5DT0RJTkcpIHsKICAgICAgICAgICAgJHVyaSA9IHNlbGY6OmNhcGl0YWxpemVQZXJjZW50RW5jb2RpbmcoJHVyaSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZsYWdzICYgc2VsZjo6REVDT0RFX1VOUkVTRVJWRURfQ0hBUkFDVEVSUykgewogICAgICAgICAgICAkdXJpID0gc2VsZjo6ZGVjb2RlVW5yZXNlcnZlZENoYXJhY3RlcnMoJHVyaSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZsYWdzICYgc2VsZjo6Q09OVkVSVF9FTVBUWV9QQVRIICYmICR1cmktPmdldFBhdGgoKSA9PT0gJycKICAgICAgICAgICAgJiYgKCR1cmktPmdldFNjaGVtZSgpID09PSAnaHR0cCcgfHwgJHVyaS0+Z2V0U2NoZW1lKCkgPT09ICdodHRwcycpCiAgICAgICAgKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoUGF0aCgnLycpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRmbGFncyAmIHNlbGY6OlJFTU9WRV9ERUZBVUxUX0hPU1QgJiYgJHVyaS0+Z2V0U2NoZW1lKCkgPT09ICdmaWxlJyAmJiAkdXJpLT5nZXRIb3N0KCkgPT09ICdsb2NhbGhvc3QnKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoSG9zdCgnJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZsYWdzICYgc2VsZjo6UkVNT1ZFX0RFRkFVTFRfUE9SVCAmJiAkdXJpLT5nZXRQb3J0KCkgIT09IG51bGwgJiYgVXJpOjppc0RlZmF1bHRQb3J0KCR1cmkpKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoUG9ydChudWxsKTsKICAgICAgICB9CgogICAgICAgIGlmICgkZmxhZ3MgJiBzZWxmOjpSRU1PVkVfRE9UX1NFR01FTlRTICYmICFVcmk6OmlzUmVsYXRpdmVQYXRoUmVmZXJlbmNlKCR1cmkpKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoUGF0aChVcmlSZXNvbHZlcjo6cmVtb3ZlRG90U2VnbWVudHMoJHVyaS0+Z2V0UGF0aCgpKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZsYWdzICYgc2VsZjo6UkVNT1ZFX0RVUExJQ0FURV9TTEFTSEVTKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoUGF0aChwcmVnX3JlcGxhY2UoJyMvLysrIycsICcvJywgJHVyaS0+Z2V0UGF0aCgpKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZsYWdzICYgc2VsZjo6U09SVF9RVUVSWV9QQVJBTUVURVJTICYmICR1cmktPmdldFF1ZXJ5KCkgIT09ICcnKSB7CiAgICAgICAgICAgICRxdWVyeUtleVZhbHVlcyA9IGV4cGxvZGUoJyYnLCAkdXJpLT5nZXRRdWVyeSgpKTsKICAgICAgICAgICAgc29ydCgkcXVlcnlLZXlWYWx1ZXMpOwogICAgICAgICAgICAkdXJpID0gJHVyaS0+d2l0aFF1ZXJ5KGltcGxvZGUoJyYnLCAkcXVlcnlLZXlWYWx1ZXMpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdXJpOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0d28gVVJJcyBjYW4gYmUgY29uc2lkZXJlZCBlcXVpdmFsZW50LgogICAgICoKICAgICAqIEJvdGggVVJJcyBhcmUgbm9ybWFsaXplZCBhdXRvbWF0aWNhbGx5IGJlZm9yZSBjb21wYXJpc29uIHdpdGggdGhlIGdpdmVuICRub3JtYWxpemF0aW9ucyBiaXRtYXNrLiBUaGUgbWV0aG9kIGFsc28KICAgICAqIGFjY2VwdHMgcmVsYXRpdmUgVVJJIHJlZmVyZW5jZXMgYW5kIHJldHVybnMgdHJ1ZSB3aGVuIHRoZXkgYXJlIGVxdWl2YWxlbnQuIFRoaXMgb2YgY291cnNlIGFzc3VtZXMgdGhleSB3aWxsIGJlCiAgICAgKiByZXNvbHZlZCBhZ2FpbnN0IHRoZSBzYW1lIGJhc2UgVVJJLiBJZiB0aGlzIGlzIG5vdCB0aGUgY2FzZSwgZGV0ZXJtaW5hdGlvbiBvZiBlcXVpdmFsZW5jZSBvciBkaWZmZXJlbmNlIG9mCiAgICAgKiByZWxhdGl2ZSByZWZlcmVuY2VzIGRvZXMgbm90IG1lYW4gYW55dGhpbmcuCiAgICAgKgogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAkdXJpMSAgICAgICAgICAgQW4gVVJJIHRvIGNvbXBhcmUKICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2UgJHVyaTIgICAgICAgICAgIEFuIFVSSSB0byBjb21wYXJlCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICRub3JtYWxpemF0aW9ucyBBIGJpdG1hc2sgb2Ygbm9ybWFsaXphdGlvbnMgdG8gYXBwbHksIHNlZSBjb25zdGFudHMKICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTYuMQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzRXF1aXZhbGVudChVcmlJbnRlcmZhY2UgJHVyaTEsIFVyaUludGVyZmFjZSAkdXJpMiwgaW50ICRub3JtYWxpemF0aW9ucyA9IHNlbGY6OlBSRVNFUlZJTkdfTk9STUFMSVpBVElPTlMpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIChzdHJpbmcpIHNlbGY6Om5vcm1hbGl6ZSgkdXJpMSwgJG5vcm1hbGl6YXRpb25zKSA9PT0gKHN0cmluZykgc2VsZjo6bm9ybWFsaXplKCR1cmkyLCAkbm9ybWFsaXphdGlvbnMpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNhcGl0YWxpemVQZXJjZW50RW5jb2RpbmcoVXJpSW50ZXJmYWNlICR1cmkpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICAkcmVnZXggPSAnLyg/OiVbQS1GYS1mMC05XXsyfSkrKy8nOwoKICAgICAgICAkY2FsbGJhY2sgPSBmdW5jdGlvbiAoYXJyYXkgJG1hdGNoKTogc3RyaW5nIHsKICAgICAgICAgICAgcmV0dXJuIHN0cnRvdXBwZXIoJG1hdGNoWzBdKTsKICAgICAgICB9OwoKICAgICAgICByZXR1cm4gJHVyaQogICAgICAgICAgICAtPndpdGhQYXRoKHNlbGY6Om5vcm1hbGl6ZVBlcmNlbnRFbmNvZGluZ0luQ29tcG9uZW50KCR1cmktPmdldFBhdGgoKSwgJHJlZ2V4LCAkY2FsbGJhY2spKQogICAgICAgICAgICAtPndpdGhRdWVyeShzZWxmOjpub3JtYWxpemVQZXJjZW50RW5jb2RpbmdJbkNvbXBvbmVudCgkdXJpLT5nZXRRdWVyeSgpLCAkcmVnZXgsICRjYWxsYmFjaykpCiAgICAgICAgICAgIC0+d2l0aEZyYWdtZW50KHNlbGY6Om5vcm1hbGl6ZVBlcmNlbnRFbmNvZGluZ0luQ29tcG9uZW50KCR1cmktPmdldEZyYWdtZW50KCksICRyZWdleCwgJGNhbGxiYWNrKSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZGVjb2RlVW5yZXNlcnZlZENoYXJhY3RlcnMoVXJpSW50ZXJmYWNlICR1cmkpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICAkcmVnZXggPSAnLyUoPzoyRHwyRXw1Rnw3RXwzWzAtOV18WzQ2XVsxLTlBLUZdfFs1N11bMC05QV0pL2knOwoKICAgICAgICAkY2FsbGJhY2sgPSBmdW5jdGlvbiAoYXJyYXkgJG1hdGNoKTogc3RyaW5nIHsKICAgICAgICAgICAgcmV0dXJuIHJhd3VybGRlY29kZSgkbWF0Y2hbMF0pOwogICAgICAgIH07CgogICAgICAgIHJldHVybiAkdXJpCiAgICAgICAgICAgIC0+d2l0aFBhdGgoc2VsZjo6bm9ybWFsaXplUGVyY2VudEVuY29kaW5nSW5Db21wb25lbnQoJHVyaS0+Z2V0UGF0aCgpLCAkcmVnZXgsICRjYWxsYmFjaykpCiAgICAgICAgICAgIC0+d2l0aFF1ZXJ5KHNlbGY6Om5vcm1hbGl6ZVBlcmNlbnRFbmNvZGluZ0luQ29tcG9uZW50KCR1cmktPmdldFF1ZXJ5KCksICRyZWdleCwgJGNhbGxiYWNrKSkKICAgICAgICAgICAgLT53aXRoRnJhZ21lbnQoc2VsZjo6bm9ybWFsaXplUGVyY2VudEVuY29kaW5nSW5Db21wb25lbnQoJHVyaS0+Z2V0RnJhZ21lbnQoKSwgJHJlZ2V4LCAkY2FsbGJhY2spKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBjYWxsYWJsZShhcnJheSk6IHN0cmluZyAkY2FsbGJhY2sKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbm9ybWFsaXplUGVyY2VudEVuY29kaW5nSW5Db21wb25lbnQoc3RyaW5nICRjb21wb25lbnQsIHN0cmluZyAkcmVnZXgsIGNhbGxhYmxlICRjYWxsYmFjayk6IHN0cmluZwogICAgewogICAgICAgICRub3JtYWxpemVkID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCRyZWdleCwgJGNhbGxiYWNrLCAkY29tcG9uZW50KTsKCiAgICAgICAgaWYgKCRub3JtYWxpemVkID09PSBudWxsKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVW5hYmxlIHRvIG5vcm1hbGl6ZSBVUkkgY29tcG9uZW50IHBlcmNlbnQtZW5jb2RpbmcnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbm9ybWFsaXplZDsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAvLyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/UriResolver.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCi8qKgogKiBSZXNvbHZlcyBhIFVSSSByZWZlcmVuY2UgaW4gdGhlIGNvbnRleHQgb2YgYSBiYXNlIFVSSSBhbmQgdGhlIG9wcG9zaXRlIHdheS4KICoKICogQGF1dGhvciBUb2JpYXMgU2NodWx0emUKICoKICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi01CiAqLwpmaW5hbCBjbGFzcyBVcmlSZXNvbHZlcgp7CiAgICAvKioKICAgICAqIFJlbW92ZXMgZG90IHNlZ21lbnRzIGZyb20gYSBwYXRoIGFuZCByZXR1cm5zIHRoZSBuZXcgcGF0aC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi40CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVtb3ZlRG90U2VnbWVudHMoc3RyaW5nICRwYXRoKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRwYXRoID09PSAnJyB8fCAkcGF0aCA9PT0gJy8nKSB7CiAgICAgICAgICAgIHJldHVybiAkcGF0aDsKICAgICAgICB9CgogICAgICAgICRyZXN1bHRzID0gW107CiAgICAgICAgJHNlZ21lbnRzID0gZXhwbG9kZSgnLycsICRwYXRoKTsKICAgICAgICBmb3JlYWNoICgkc2VnbWVudHMgYXMgJHNlZ21lbnQpIHsKICAgICAgICAgICAgaWYgKCRzZWdtZW50ID09PSAnLi4nKSB7CiAgICAgICAgICAgICAgICBhcnJheV9wb3AoJHJlc3VsdHMpOwogICAgICAgICAgICB9IGVsc2VpZiAoJHNlZ21lbnQgIT09ICcuJykgewogICAgICAgICAgICAgICAgJHJlc3VsdHNbXSA9ICRzZWdtZW50OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkbmV3UGF0aCA9IGltcGxvZGUoJy8nLCAkcmVzdWx0cyk7CgogICAgICAgIGlmICgkcGF0aFswXSA9PT0gJy8nICYmICghaXNzZXQoJG5ld1BhdGhbMF0pIHx8ICRuZXdQYXRoWzBdICE9PSAnLycpKSB7CiAgICAgICAgICAgIC8vIFJlLWFkZCB0aGUgbGVhZGluZyBzbGFzaCBpZiBuZWNlc3NhcnkgZm9yIGNhc2VzIGxpa2UgIi8uLiIKICAgICAgICAgICAgJG5ld1BhdGggPSAnLycuJG5ld1BhdGg7CiAgICAgICAgfSBlbHNlaWYgKCRuZXdQYXRoICE9PSAnJyAmJiAoJHNlZ21lbnQgPT09ICcuJyB8fCAkc2VnbWVudCA9PT0gJy4uJykpIHsKICAgICAgICAgICAgLy8gQWRkIHRoZSB0cmFpbGluZyBzbGFzaCBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgLy8gSWYgbmV3UGF0aCBpcyBub3QgZW1wdHksIHRoZW4gJHNlZ21lbnQgbXVzdCBiZSBzZXQgYW5kIGlzIHRoZSBsYXN0IHNlZ21lbnQgZnJvbSB0aGUgZm9yZWFjaAogICAgICAgICAgICAkbmV3UGF0aCAuPSAnLyc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG5ld1BhdGg7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyB0aGUgcmVsYXRpdmUgVVJJIGludG8gYSBuZXcgVVJJIHRoYXQgaXMgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgYmFzZSBVUkkuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXNvbHZlKFVyaUludGVyZmFjZSAkYmFzZSwgVXJpSW50ZXJmYWNlICRyZWwpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoKHN0cmluZykgJHJlbCA9PT0gJycpIHsKICAgICAgICAgICAgLy8gd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHNhbWUgYmFzZSBVUkkgaW5zdGFuY2UgZm9yIHRoaXMgc2FtZS1kb2N1bWVudCByZWZlcmVuY2UKICAgICAgICAgICAgcmV0dXJuICRiYXNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRyZWwtPmdldFNjaGVtZSgpICE9ICcnKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVsLT53aXRoUGF0aChzZWxmOjpyZW1vdmVEb3RTZWdtZW50cygkcmVsLT5nZXRQYXRoKCkpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkcmVsLT5nZXRBdXRob3JpdHkoKSAhPSAnJykgewogICAgICAgICAgICByZXR1cm4gJHJlbAogICAgICAgICAgICAgICAgLT53aXRoU2NoZW1lKCRiYXNlLT5nZXRTY2hlbWUoKSkKICAgICAgICAgICAgICAgIC0+d2l0aFBhdGgoc2VsZjo6cmVtb3ZlRG90U2VnbWVudHMoJHJlbC0+Z2V0UGF0aCgpKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHJlbC0+Z2V0UGF0aCgpID09PSAnJykgewogICAgICAgICAgICAkdGFyZ2V0UGF0aCA9ICRiYXNlLT5nZXRQYXRoKCk7CiAgICAgICAgICAgICR0YXJnZXRRdWVyeSA9ICRyZWwtPmdldFF1ZXJ5KCkgIT0gJycgPyAkcmVsLT5nZXRRdWVyeSgpIDogJGJhc2UtPmdldFF1ZXJ5KCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCRyZWwtPmdldFBhdGgoKVswXSA9PT0gJy8nKSB7CiAgICAgICAgICAgICAgICAkdGFyZ2V0UGF0aCA9ICRyZWwtPmdldFBhdGgoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICgkYmFzZS0+Z2V0QXV0aG9yaXR5KCkgIT0gJycgJiYgJGJhc2UtPmdldFBhdGgoKSA9PT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0UGF0aCA9ICcvJy4kcmVsLT5nZXRQYXRoKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRsYXN0U2xhc2hQb3MgPSBzdHJycG9zKCRiYXNlLT5nZXRQYXRoKCksICcvJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRsYXN0U2xhc2hQb3MgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXRQYXRoID0gJHJlbC0+Z2V0UGF0aCgpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXRQYXRoID0gc3Vic3RyKCRiYXNlLT5nZXRQYXRoKCksIDAsICRsYXN0U2xhc2hQb3MgKyAxKS4kcmVsLT5nZXRQYXRoKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICR0YXJnZXRQYXRoID0gc2VsZjo6cmVtb3ZlRG90U2VnbWVudHMoJHRhcmdldFBhdGgpOwogICAgICAgICAgICAkdGFyZ2V0UXVlcnkgPSAkcmVsLT5nZXRRdWVyeSgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRiYXNlCiAgICAgICAgICAgIC0+d2l0aFBhdGgoJHRhcmdldFBhdGgpCiAgICAgICAgICAgIC0+d2l0aFF1ZXJ5KCR0YXJnZXRRdWVyeSkKICAgICAgICAgICAgLT53aXRoRnJhZ21lbnQoJHJlbC0+Z2V0RnJhZ21lbnQoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSB0YXJnZXQgVVJJIGFzIGEgcmVsYXRpdmUgcmVmZXJlbmNlIGZyb20gdGhlIGJhc2UgVVJJLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGlzIHRoZSBjb3VudGVycGFydCB0byByZXNvbHZlKCk6CiAgICAgKgogICAgICogICAgKHN0cmluZykgJHRhcmdldCA9PT0gKHN0cmluZykgVXJpUmVzb2x2ZXI6OnJlc29sdmUoJGJhc2UsIFVyaVJlc29sdmVyOjpyZWxhdGl2aXplKCRiYXNlLCAkdGFyZ2V0KSkKICAgICAqCiAgICAgKiBPbmUgdXNlLWNhc2UgaXMgdG8gdXNlIHRoZSBjdXJyZW50IHJlcXVlc3QgVVJJIGFzIGJhc2UgVVJJIGFuZCB0aGVuIGdlbmVyYXRlIHJlbGF0aXZlIGxpbmtzIGluIHlvdXIgZG9jdW1lbnRzCiAgICAgKiB0byByZWR1Y2UgdGhlIGRvY3VtZW50IHNpemUgb3Igb2ZmZXIgc2VsZi1jb250YWluZWQgZG93bmxvYWRhYmxlIGRvY3VtZW50IGFyY2hpdmVzLgogICAgICoKICAgICAqICAgICRiYXNlID0gbmV3IFVyaSgnaHR0cDovL2V4YW1wbGUuY29tL2EvYi8nKTsKICAgICAqICAgIGVjaG8gVXJpUmVzb2x2ZXI6OnJlbGF0aXZpemUoJGJhc2UsIG5ldyBVcmkoJ2h0dHA6Ly9leGFtcGxlLmNvbS9hL2IvYycpKTsgIC8vIHByaW50cyAnYycuCiAgICAgKiAgICBlY2hvIFVyaVJlc29sdmVyOjpyZWxhdGl2aXplKCRiYXNlLCBuZXcgVXJpKCdodHRwOi8vZXhhbXBsZS5jb20vYS94L3knKSk7ICAvLyBwcmludHMgJy4uL3gveScuCiAgICAgKiAgICBlY2hvIFVyaVJlc29sdmVyOjpyZWxhdGl2aXplKCRiYXNlLCBuZXcgVXJpKCdodHRwOi8vZXhhbXBsZS5jb20vYS9iLz9xJykpOyAvLyBwcmludHMgJz9xJy4KICAgICAqICAgIGVjaG8gVXJpUmVzb2x2ZXI6OnJlbGF0aXZpemUoJGJhc2UsIG5ldyBVcmkoJ2h0dHA6Ly9leGFtcGxlLm9yZy9hL2IvJykpOyAgIC8vIHByaW50cyAnLy9leGFtcGxlLm9yZy9hL2IvJy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBhbHNvIGFjY2VwdHMgYSB0YXJnZXQgdGhhdCBpcyBhbHJlYWR5IHJlbGF0aXZlIGFuZCB3aWxsIHRyeSB0byByZWxhdGl2aXplIGl0IGZ1cnRoZXIuIE9ubHkgYQogICAgICogcmVsYXRpdmUtcGF0aCByZWZlcmVuY2Ugd2lsbCBiZSByZXR1cm5lZCBhcy1pcy4KICAgICAqCiAgICAgKiAgICBlY2hvIFVyaVJlc29sdmVyOjpyZWxhdGl2aXplKCRiYXNlLCBuZXcgVXJpKCcvYS9iL2MnKSk7ICAvLyBwcmludHMgJ2MnIGFzIHdlbGwKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWxhdGl2aXplKFVyaUludGVyZmFjZSAkYmFzZSwgVXJpSW50ZXJmYWNlICR0YXJnZXQpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoJHRhcmdldC0+Z2V0U2NoZW1lKCkgIT09ICcnCiAgICAgICAgICAgICYmICgkYmFzZS0+Z2V0U2NoZW1lKCkgIT09ICR0YXJnZXQtPmdldFNjaGVtZSgpIHx8ICR0YXJnZXQtPmdldEF1dGhvcml0eSgpID09PSAnJyAmJiAkYmFzZS0+Z2V0QXV0aG9yaXR5KCkgIT09ICcnKQogICAgICAgICkgewogICAgICAgICAgICByZXR1cm4gJHRhcmdldDsKICAgICAgICB9CgogICAgICAgIGlmIChVcmk6OmlzUmVsYXRpdmVQYXRoUmVmZXJlbmNlKCR0YXJnZXQpKSB7CiAgICAgICAgICAgIC8vIEFzIHRoZSB0YXJnZXQgaXMgYWxyZWFkeSBoaWdobHkgcmVsYXRpdmUgd2UgcmV0dXJuIGl0IGFzLWlzLiBJdCB3b3VsZCBiZSBwb3NzaWJsZSB0byByZXNvbHZlCiAgICAgICAgICAgIC8vIHRoZSB0YXJnZXQgd2l0aCBgJHRhcmdldCA9IHNlbGY6OnJlc29sdmUoJGJhc2UsICR0YXJnZXQpO2AgYW5kIHRoZW4gdHJ5IG1ha2UgaXQgbW9yZSByZWxhdGl2ZQogICAgICAgICAgICAvLyBieSByZW1vdmluZyBhIGR1cGxpY2F0ZSBxdWVyeS4gQnV0IGxldCdzIG5vdCBkbyB0aGF0IGF1dG9tYXRpY2FsbHkuCiAgICAgICAgICAgIHJldHVybiAkdGFyZ2V0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0YXJnZXQtPmdldEF1dGhvcml0eSgpICE9PSAnJyAmJiAkYmFzZS0+Z2V0QXV0aG9yaXR5KCkgIT09ICR0YXJnZXQtPmdldEF1dGhvcml0eSgpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGFyZ2V0LT53aXRoU2NoZW1lKCcnKTsKICAgICAgICB9CgogICAgICAgIC8vIFdlIG11c3QgcmVtb3ZlIHRoZSBwYXRoIGJlZm9yZSByZW1vdmluZyB0aGUgYXV0aG9yaXR5IGJlY2F1c2UgaWYgdGhlIHBhdGggc3RhcnRzIHdpdGggdHdvIHNsYXNoZXMsIHRoZSBVUkkKICAgICAgICAvLyB3b3VsZCB0dXJuIGludmFsaWQuIEFuZCB3ZSBhbHNvIGNhbm5vdCBzZXQgYSByZWxhdGl2ZSBwYXRoIGJlZm9yZSByZW1vdmluZyB0aGUgYXV0aG9yaXR5LCBhcyB0aGF0IGlzIGFsc28KICAgICAgICAvLyBpbnZhbGlkLgogICAgICAgICRlbXB0eVBhdGhVcmkgPSAkdGFyZ2V0LT53aXRoU2NoZW1lKCcnKS0+d2l0aFBhdGgoJycpLT53aXRoVXNlckluZm8oJycpLT53aXRoUG9ydChudWxsKS0+d2l0aEhvc3QoJycpOwoKICAgICAgICBpZiAoJGJhc2UtPmdldFBhdGgoKSAhPT0gJHRhcmdldC0+Z2V0UGF0aCgpKSB7CiAgICAgICAgICAgIHJldHVybiAkZW1wdHlQYXRoVXJpLT53aXRoUGF0aChzZWxmOjpnZXRSZWxhdGl2ZVBhdGgoJGJhc2UsICR0YXJnZXQpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYmFzZS0+Z2V0UXVlcnkoKSA9PT0gJHRhcmdldC0+Z2V0UXVlcnkoKSkgewogICAgICAgICAgICAvLyBPbmx5IHRoZSB0YXJnZXQgZnJhZ21lbnQgaXMgbGVmdC4gQW5kIGl0IG11c3QgYmUgcmV0dXJuZWQgZXZlbiBpZiBiYXNlIGFuZCB0YXJnZXQgZnJhZ21lbnQgYXJlIHRoZSBzYW1lLgogICAgICAgICAgICByZXR1cm4gJGVtcHR5UGF0aFVyaS0+d2l0aFF1ZXJ5KCcnKTsKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBiYXNlIFVSSSBoYXMgYSBxdWVyeSBidXQgdGhlIHRhcmdldCBoYXMgbm9uZSwgd2UgY2Fubm90IHJldHVybiBhbiBlbXB0eSBwYXRoIHJlZmVyZW5jZSBhcyBpdCB3b3VsZAogICAgICAgIC8vIGluaGVyaXQgdGhlIGJhc2UgcXVlcnkgY29tcG9uZW50IHdoZW4gcmVzb2x2aW5nLgogICAgICAgIGlmICgkdGFyZ2V0LT5nZXRRdWVyeSgpID09PSAnJykgewogICAgICAgICAgICAkc2VnbWVudHMgPSBleHBsb2RlKCcvJywgJHRhcmdldC0+Z2V0UGF0aCgpKTsKICAgICAgICAgICAgLyoqIEB2YXIgc3RyaW5nICRsYXN0U2VnbWVudCAqLwogICAgICAgICAgICAkbGFzdFNlZ21lbnQgPSBlbmQoJHNlZ21lbnRzKTsKCiAgICAgICAgICAgIHJldHVybiAkZW1wdHlQYXRoVXJpLT53aXRoUGF0aCgkbGFzdFNlZ21lbnQgPT09ICcnID8gJy4vJyA6ICRsYXN0U2VnbWVudCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGVtcHR5UGF0aFVyaTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRSZWxhdGl2ZVBhdGgoVXJpSW50ZXJmYWNlICRiYXNlLCBVcmlJbnRlcmZhY2UgJHRhcmdldCk6IHN0cmluZwogICAgewogICAgICAgICRzb3VyY2VTZWdtZW50cyA9IGV4cGxvZGUoJy8nLCAkYmFzZS0+Z2V0UGF0aCgpKTsKICAgICAgICAkdGFyZ2V0U2VnbWVudHMgPSBleHBsb2RlKCcvJywgJHRhcmdldC0+Z2V0UGF0aCgpKTsKICAgICAgICBhcnJheV9wb3AoJHNvdXJjZVNlZ21lbnRzKTsKICAgICAgICAkdGFyZ2V0TGFzdFNlZ21lbnQgPSBhcnJheV9wb3AoJHRhcmdldFNlZ21lbnRzKTsKICAgICAgICBmb3JlYWNoICgkc291cmNlU2VnbWVudHMgYXMgJGkgPT4gJHNlZ21lbnQpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCR0YXJnZXRTZWdtZW50c1skaV0pICYmICRzZWdtZW50ID09PSAkdGFyZ2V0U2VnbWVudHNbJGldKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkc291cmNlU2VnbWVudHNbJGldLCAkdGFyZ2V0U2VnbWVudHNbJGldKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICR0YXJnZXRTZWdtZW50c1tdID0gJHRhcmdldExhc3RTZWdtZW50OwogICAgICAgICRyZWxhdGl2ZVBhdGggPSBzdHJfcmVwZWF0KCcuLi8nLCBjb3VudCgkc291cmNlU2VnbWVudHMpKS5pbXBsb2RlKCcvJywgJHRhcmdldFNlZ21lbnRzKTsKCiAgICAgICAgLy8gQSByZWZlcmVuY2UgdG8gYW0gZW1wdHkgbGFzdCBzZWdtZW50IG9yIGFuIGVtcHR5IGZpcnN0IHN1Yi1zZWdtZW50IG11c3QgYmUgcHJlZml4ZWQgd2l0aCAiLi8iLgogICAgICAgIC8vIFRoaXMgYWxzbyBhcHBsaWVzIHRvIGEgc2VnbWVudCB3aXRoIGEgY29sb24gY2hhcmFjdGVyIChlLmcuLCAiZmlsZTpjb2xvbiIpIHRoYXQgY2Fubm90IGJlIHVzZWQKICAgICAgICAvLyBhcyB0aGUgZmlyc3Qgc2VnbWVudCBvZiBhIHJlbGF0aXZlLXBhdGggcmVmZXJlbmNlLCBhcyBpdCB3b3VsZCBiZSBtaXN0YWtlbiBmb3IgYSBzY2hlbWUgbmFtZS4KICAgICAgICBpZiAoJycgPT09ICRyZWxhdGl2ZVBhdGggfHwgZmFsc2UgIT09IHN0cnBvcyhleHBsb2RlKCcvJywgJHJlbGF0aXZlUGF0aCwgMilbMF0sICc6JykpIHsKICAgICAgICAgICAgJHJlbGF0aXZlUGF0aCA9ICIuLyRyZWxhdGl2ZVBhdGgiOwogICAgICAgIH0gZWxzZWlmICgnLycgPT09ICRyZWxhdGl2ZVBhdGhbMF0pIHsKICAgICAgICAgICAgaWYgKCRiYXNlLT5nZXRBdXRob3JpdHkoKSAhPSAnJyAmJiAkYmFzZS0+Z2V0UGF0aCgpID09PSAnJykgewogICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIGFuIGV4dHJhIHNsYXNoIGlzIGFkZGVkIGJ5IHJlc29sdmUoKSBhdXRvbWF0aWNhbGx5LiBTbyB3ZSBtdXN0IG5vdCBhZGQgb25lIGhlcmUuCiAgICAgICAgICAgICAgICAkcmVsYXRpdmVQYXRoID0gIi4kcmVsYXRpdmVQYXRoIjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRyZWxhdGl2ZVBhdGggPSAiLi8kcmVsYXRpdmVQYXRoIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZWxhdGl2ZVBhdGg7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgLy8gY2Fubm90IGJlIGluc3RhbnRpYXRlZAogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOwoKZmluYWwgY2xhc3MgVXRpbHMKewogICAgLyoqCiAgICAgKiBSZW1vdmUgdGhlIGl0ZW1zIGdpdmVuIGJ5IHRoZSBrZXlzLCBjYXNlIGluc2Vuc2l0aXZlbHkgZnJvbSB0aGUgZGF0YS4KICAgICAqCiAgICAgKiBAcGFyYW0gKHN0cmluZ3xpbnQpW10gJGtleXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjYXNlbGVzc1JlbW92ZShhcnJheSAka2V5cywgYXJyYXkgJGRhdGEpOiBhcnJheQogICAgewogICAgICAgICRyZXN1bHQgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJGtleXMgYXMgJiRrZXkpIHsKICAgICAgICAgICAgJGtleSA9IHN0cnRvbG93ZXIoKHN0cmluZykgJGtleSk7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkZGF0YSBhcyAkayA9PiAkdikgewogICAgICAgICAgICBpZiAoIWluX2FycmF5KHN0cnRvbG93ZXIoKHN0cmluZykgJGspLCAka2V5cykpIHsKICAgICAgICAgICAgICAgICRyZXN1bHRbJGtdID0gJHY7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQ29weSB0aGUgY29udGVudHMgb2YgYSBzdHJlYW0gaW50byBhbm90aGVyIHN0cmVhbSB1bnRpbCB0aGUgZ2l2ZW4gbnVtYmVyCiAgICAgKiBvZiBieXRlcyBoYXZlIGJlZW4gcmVhZC4KICAgICAqCiAgICAgKiBUaGUgY29weSBzdG9wcyBpZiB0aGUgZGVzdGluYXRpb24gd3JpdGUgcmV0dXJucyAwLCBmb3IgZXhhbXBsZSBhCiAgICAgKiBCdWZmZXJTdHJlYW0gYXQgaXRzIGhpZ2ggd2F0ZXIgbWFyayBvciBhIGZ1bGwgRHJvcHBpbmdTdHJlYW0uIEZvciBhCiAgICAgKiBndWFyYW50ZWVkIGZ1bGwgY29weSB1c2UgYSBub3JtYWwgd3JpdGFibGUgc3RyZWFtIHN1Y2ggYXMgYSBmaWxlIG9yCiAgICAgKiBwaHA6Ly90ZW1wIHN0cmVhbS4KICAgICAqCiAgICAgKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlICRzb3VyY2UgU3RyZWFtIHRvIHJlYWQgZnJvbQogICAgICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAkZGVzdCAgIFN0cmVhbSB0byB3cml0ZSB0bwogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAkbWF4TGVuIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQuIFBhc3MgLTEKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byByZWFkIHRoZSBlbnRpcmUgc3RyZWFtLgogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gb24gZXJyb3IuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29weVRvU3RyZWFtKFN0cmVhbUludGVyZmFjZSAkc291cmNlLCBTdHJlYW1JbnRlcmZhY2UgJGRlc3QsIGludCAkbWF4TGVuID0gLTEpOiB2b2lkCiAgICB7CiAgICAgICAgJGJ1ZmZlclNpemUgPSA4MTkyOwoKICAgICAgICBpZiAoJG1heExlbiA9PT0gLTEpIHsKICAgICAgICAgICAgd2hpbGUgKCEkc291cmNlLT5lb2YoKSkgewogICAgICAgICAgICAgICAgJGJ1ZiA9ICRzb3VyY2UtPnJlYWQoJGJ1ZmZlclNpemUpOwogICAgICAgICAgICAgICAgaWYgKCRidWYgPT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFzZWxmOjp3cml0ZUFsbCgkZGVzdCwgJGJ1ZikpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRyZW1haW5pbmcgPSAkbWF4TGVuOwogICAgICAgICAgICB3aGlsZSAoJHJlbWFpbmluZyA+IDAgJiYgISRzb3VyY2UtPmVvZigpKSB7CiAgICAgICAgICAgICAgICAkYnVmID0gJHNvdXJjZS0+cmVhZChtaW4oJGJ1ZmZlclNpemUsICRyZW1haW5pbmcpKTsKICAgICAgICAgICAgICAgICRsZW4gPSBzdHJsZW4oJGJ1Zik7CiAgICAgICAgICAgICAgICBpZiAoISRsZW4pIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRyZW1haW5pbmcgLT0gJGxlbjsKICAgICAgICAgICAgICAgIGlmICghc2VsZjo6d3JpdGVBbGwoJGRlc3QsICRidWYpKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBXcml0ZXMgdGhlIGZ1bGwgYnVmZmVyIHRvIHRoZSBkZXN0aW5hdGlvbiwgcmV0cnlpbmcgc2hvcnQgd3JpdGVzLgogICAgICoKICAgICAqIFJldHVybnMgZmFsc2Ugd2hlbiB0aGUgZGVzdGluYXRpb24gd3JpdGUgcmV0dXJucyAwIG9yIGxlc3MuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHdyaXRlQWxsKFN0cmVhbUludGVyZmFjZSAkZGVzdCwgc3RyaW5nICRidWYpOiBib29sCiAgICB7CiAgICAgICAgJHdyaXR0ZW4gPSAwOwogICAgICAgICRsZW4gPSBzdHJsZW4oJGJ1Zik7CgogICAgICAgIHdoaWxlICgkd3JpdHRlbiA8ICRsZW4pIHsKICAgICAgICAgICAgJHJlc3VsdCA9ICRkZXN0LT53cml0ZShzdWJzdHIoJGJ1ZiwgJHdyaXR0ZW4pKTsKICAgICAgICAgICAgaWYgKCRyZXN1bHQgPD0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkd3JpdHRlbiArPSAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb3B5IHRoZSBjb250ZW50cyBvZiBhIHN0cmVhbSBpbnRvIGEgc3RyaW5nIHVudGlsIHRoZSBnaXZlbiBudW1iZXIgb2YKICAgICAqIGJ5dGVzIGhhdmUgYmVlbiByZWFkLgogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSBTdHJlYW0gdG8gcmVhZAogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAkbWF4TGVuIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQuIFBhc3MgLTEKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byByZWFkIHRoZSBlbnRpcmUgc3RyZWFtLgogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gb24gZXJyb3IuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29weVRvU3RyaW5nKFN0cmVhbUludGVyZmFjZSAkc3RyZWFtLCBpbnQgJG1heExlbiA9IC0xKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGJ1ZmZlciA9ICcnOwoKICAgICAgICBpZiAoJG1heExlbiA9PT0gLTEpIHsKICAgICAgICAgICAgd2hpbGUgKCEkc3RyZWFtLT5lb2YoKSkgewogICAgICAgICAgICAgICAgJGJ1ZiA9ICRzdHJlYW0tPnJlYWQoMTA0ODU3Nik7CiAgICAgICAgICAgICAgICBpZiAoJGJ1ZiA9PT0gJycpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRidWZmZXIgLj0gJGJ1ZjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRidWZmZXI7CiAgICAgICAgfQoKICAgICAgICAkbGVuID0gMDsKICAgICAgICB3aGlsZSAoISRzdHJlYW0tPmVvZigpICYmICRsZW4gPCAkbWF4TGVuKSB7CiAgICAgICAgICAgICRidWYgPSAkc3RyZWFtLT5yZWFkKCRtYXhMZW4gLSAkbGVuKTsKICAgICAgICAgICAgaWYgKCRidWYgPT09ICcnKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICAkYnVmZmVyIC49ICRidWY7CiAgICAgICAgICAgICRsZW4gPSBzdHJsZW4oJGJ1ZmZlcik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGJ1ZmZlcjsKICAgIH0KCiAgICAvKioKICAgICAqIENhbGN1bGF0ZSBhIGhhc2ggb2YgYSBzdHJlYW0uCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgcmVhZHMgdGhlIGVudGlyZSBzdHJlYW0gdG8gY2FsY3VsYXRlIGEgcm9sbGluZyBoYXNoLCBiYXNlZAogICAgICogb24gUEhQJ3MgYGhhc2hfaW5pdGAgZnVuY3Rpb25zLgogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSAgICBTdHJlYW0gdG8gY2FsY3VsYXRlIHRoZSBoYXNoIGZvcgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAkYWxnbyAgICAgIEhhc2ggYWxnb3JpdGhtIChlLmcuIG1kNSwgY3JjMzIsIGV0YykKICAgICAqIEBwYXJhbSBib29sICAgICAgICAgICAgJHJhd091dHB1dCBXaGV0aGVyIG9yIG5vdCB0byB1c2UgcmF3IG91dHB1dAogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gb24gZXJyb3IuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaGFzaChTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgc3RyaW5nICRhbGdvLCBib29sICRyYXdPdXRwdXQgPSBmYWxzZSk6IHN0cmluZwogICAgewogICAgICAgICRwb3MgPSAkc3RyZWFtLT50ZWxsKCk7CgogICAgICAgIGlmICgkcG9zID4gMCkgewogICAgICAgICAgICAkc3RyZWFtLT5yZXdpbmQoKTsKICAgICAgICB9CgogICAgICAgICRjdHggPSBoYXNoX2luaXQoJGFsZ28pOwogICAgICAgIHdoaWxlICghJHN0cmVhbS0+ZW9mKCkpIHsKICAgICAgICAgICAgaGFzaF91cGRhdGUoJGN0eCwgJHN0cmVhbS0+cmVhZCgxMDQ4NTc2KSk7CiAgICAgICAgfQoKICAgICAgICAkb3V0ID0gaGFzaF9maW5hbCgkY3R4LCAkcmF3T3V0cHV0KTsKICAgICAgICAkc3RyZWFtLT5zZWVrKCRwb3MpOwoKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvKioKICAgICAqIENsb25lIGFuZCBtb2RpZnkgYSByZXF1ZXN0IHdpdGggdGhlIGdpdmVuIGNoYW5nZXMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvciByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGNsb25lcyBuZWVkZWQgdG8gbXV0YXRlCiAgICAgKiBhIG1lc3NhZ2UuCiAgICAgKgogICAgICogVGhlIGNoYW5nZXMgY2FuIGJlIG9uZSBvZjoKICAgICAqIC0gbWV0aG9kOiAoc3RyaW5nKSBDaGFuZ2VzIHRoZSBIVFRQIG1ldGhvZC4KICAgICAqIC0gc2V0X2hlYWRlcnM6IChhcnJheSkgU2V0cyB0aGUgZ2l2ZW4gaGVhZGVycy4gVmFsdWVzIG11c3QgYmUgc3RyaW5ncwogICAgICogICBvciBub24tZW1wdHkgYXJyYXlzIG9mIHN0cmluZ3MuCiAgICAgKiAtIHJlbW92ZV9oZWFkZXJzOiAoYXJyYXkpIFJlbW92ZSB0aGUgZ2l2ZW4gaGVhZGVycy4gVmFsdWVzIG1heSBiZQogICAgICogICBzdHJpbmdzIG9yIGludGVnZXJzLgogICAgICogLSBib2R5OiAobWl4ZWQpIFNldHMgdGhlIGdpdmVuIGJvZHkuIFByZXNlbnQgbm9uLW51bGwgdmFsdWVzIGFyZSBjb252ZXJ0ZWQKICAgICAqICAgd2l0aCBzZWxmOjpzdHJlYW1Gb3IoKSwgaW5jbHVkaW5nIHNjYWxhciB2YWx1ZXMsIHJlc291cmNlcywgc3RyZWFtcywKICAgICAqICAgaXRlcmF0b3JzLCBjYWxsYWJsZSBhcnJheXMsIGNsb3N1cmVzLCBpbnZva2FibGUgb2JqZWN0cywgYW5kIG9iamVjdHMKICAgICAqICAgd2l0aCBfX3RvU3RyaW5nKCkuIFN0cmluZyBpbnB1dHMgcmVtYWluIGxpdGVyYWwgYm9kaWVzLgogICAgICogLSB1cmk6IChVcmlJbnRlcmZhY2UpIFNldCB0aGUgVVJJLgogICAgICogLSBxdWVyeTogKHN0cmluZykgU2V0IHRoZSBxdWVyeSBzdHJpbmcgdmFsdWUgb2YgdGhlIFVSSS4KICAgICAqIC0gdmVyc2lvbjogKHN0cmluZykgU2V0IHRoZSBwcm90b2NvbCB2ZXJzaW9uLgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0IFJlcXVlc3QgdG8gY2xvbmUgYW5kIG1vZGlmeS4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICRjaGFuZ2VzIENoYW5nZXMgdG8gYXBwbHkuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbW9kaWZ5UmVxdWVzdChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkY2hhbmdlcyk6IFJlcXVlc3RJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoISRjaGFuZ2VzKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVxdWVzdDsKICAgICAgICB9CgogICAgICAgIHNlbGY6Ondhcm5PbkludmFsaWRNb2RpZnlSZXF1ZXN0Q2hhbmdlcygkY2hhbmdlcyk7CgogICAgICAgICRoZWFkZXJzID0gJHJlcXVlc3QtPmdldEhlYWRlcnMoKTsKCiAgICAgICAgaWYgKCFpc3NldCgkY2hhbmdlc1sndXJpJ10pKSB7CiAgICAgICAgICAgICR1cmkgPSAkcmVxdWVzdC0+Z2V0VXJpKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBob3N0IGhlYWRlciBpZiBvbmUgaXMgb24gdGhlIFVSSQogICAgICAgICAgICAkaG9zdCA9ICRjaGFuZ2VzWyd1cmknXS0+Z2V0SG9zdCgpOwogICAgICAgICAgICBpZiAoJGhvc3QgIT09ICcnKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGNoYW5nZXNbJ3NldF9oZWFkZXJzJ10pICYmIGlzX2FycmF5KCRjaGFuZ2VzWydzZXRfaGVhZGVycyddKSkgewogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X2tleXMoJGNoYW5nZXNbJ3NldF9oZWFkZXJzJ10pIGFzICRoZWFkZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnRvbG93ZXIoKHN0cmluZykgJGhlYWRlcikgPT09ICdob3N0JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBtb2RpZnkgcmVxdWVzdCB3aXRoIGJvdGggYSBVUkkgY29udGFpbmluZyBhIGhvc3QgYW5kIGFuIGV4cGxpY2l0IEhvc3QgaGVhZGVyLicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGNoYW5nZXNbJ3NldF9oZWFkZXJzJ11bJ0hvc3QnXSA9ICRob3N0OwoKICAgICAgICAgICAgICAgIGlmICgkcG9ydCA9ICRjaGFuZ2VzWyd1cmknXS0+Z2V0UG9ydCgpKSB7CiAgICAgICAgICAgICAgICAgICAgJHN0YW5kYXJkUG9ydHMgPSBbJ2h0dHAnID0+IDgwLCAnaHR0cHMnID0+IDQ0M107CiAgICAgICAgICAgICAgICAgICAgJHNjaGVtZSA9ICRjaGFuZ2VzWyd1cmknXS0+Z2V0U2NoZW1lKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRzdGFuZGFyZFBvcnRzWyRzY2hlbWVdKSAmJiAkcG9ydCAhPSAkc3RhbmRhcmRQb3J0c1skc2NoZW1lXSkgewogICAgICAgICAgICAgICAgICAgICAgICAkY2hhbmdlc1snc2V0X2hlYWRlcnMnXVsnSG9zdCddIC49ICc6Jy4kcG9ydDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHVyaSA9ICRjaGFuZ2VzWyd1cmknXTsKICAgICAgICB9CgogICAgICAgIGlmICghZW1wdHkoJGNoYW5nZXNbJ3JlbW92ZV9oZWFkZXJzJ10pKSB7CiAgICAgICAgICAgICRoZWFkZXJzID0gc2VsZjo6Y2FzZWxlc3NSZW1vdmUoJGNoYW5nZXNbJ3JlbW92ZV9oZWFkZXJzJ10sICRoZWFkZXJzKTsKICAgICAgICB9CgogICAgICAgIGlmICghZW1wdHkoJGNoYW5nZXNbJ3NldF9oZWFkZXJzJ10pKSB7CiAgICAgICAgICAgICRoZWFkZXJzID0gc2VsZjo6Y2FzZWxlc3NSZW1vdmUoYXJyYXlfa2V5cygkY2hhbmdlc1snc2V0X2hlYWRlcnMnXSksICRoZWFkZXJzKTsKICAgICAgICAgICAgJGhlYWRlcnMgPSAkY2hhbmdlc1snc2V0X2hlYWRlcnMnXSArICRoZWFkZXJzOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRjaGFuZ2VzWydxdWVyeSddKSkgewogICAgICAgICAgICAkdXJpID0gJHVyaS0+d2l0aFF1ZXJ5KCRjaGFuZ2VzWydxdWVyeSddKTsKICAgICAgICB9CgogICAgICAgICRoYXNIb3N0ID0gZmFsc2U7CiAgICAgICAgZm9yZWFjaCAoYXJyYXlfa2V5cygkaGVhZGVycykgYXMgJGhlYWRlcikgewogICAgICAgICAgICBpZiAoc3RydG9sb3dlcigoc3RyaW5nKSAkaGVhZGVyKSA9PT0gJ2hvc3QnKSB7CiAgICAgICAgICAgICAgICAkaGFzSG9zdCA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gTWF0Y2ggUmVxdWVzdDo6X19jb25zdHJ1Y3QoKSBieSBhZGRpbmcgYSBIb3N0IGhlYWRlciB3aGVuIG9uZSBpcyBub3QgcHJvdmlkZWQuCiAgICAgICAgaWYgKCEkaGFzSG9zdCAmJiAkdXJpLT5nZXRIb3N0KCkgIT09ICcnKSB7CiAgICAgICAgICAgICRob3N0ID0gJHVyaS0+Z2V0SG9zdCgpOwoKICAgICAgICAgICAgaWYgKCgkcG9ydCA9ICR1cmktPmdldFBvcnQoKSkgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRob3N0IC49ICc6Jy4kcG9ydDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGhlYWRlcnMgPSBbJ0hvc3QnID0+IFskaG9zdF1dICsgJGhlYWRlcnM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gJHJlcXVlc3Q7CgogICAgICAgIGlmIChpc3NldCgkY2hhbmdlc1snbWV0aG9kJ10pKSB7CiAgICAgICAgICAgICRuZXcgPSAkbmV3LT53aXRoTWV0aG9kKCRjaGFuZ2VzWydtZXRob2QnXSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJGNoYW5nZXNbJ3VyaSddKSB8fCBpc3NldCgkY2hhbmdlc1sncXVlcnknXSkpIHsKICAgICAgICAgICAgJG5ldyA9ICRuZXctPndpdGhVcmkoJHVyaSwgdHJ1ZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGhlYWRlcnMgIT09ICRuZXctPmdldEhlYWRlcnMoKSkgewogICAgICAgICAgICBmb3JlYWNoIChhcnJheV9rZXlzKCRuZXctPmdldEhlYWRlcnMoKSkgYXMgJGhlYWRlcikgewogICAgICAgICAgICAgICAgLyoqIEB2YXIgUmVxdWVzdEludGVyZmFjZSAqLwogICAgICAgICAgICAgICAgJG5ldyA9ICRuZXctPndpdGhvdXRIZWFkZXIoKHN0cmluZykgJGhlYWRlcik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRhZGRlZEhlYWRlcnMgPSBbXTsKICAgICAgICAgICAgZm9yZWFjaCAoJGhlYWRlcnMgYXMgJGhlYWRlciA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgICAgICRoZWFkZXIgPSAoc3RyaW5nKSAkaGVhZGVyOwogICAgICAgICAgICAgICAgJG5vcm1hbGl6ZWQgPSBzdHJ0b2xvd2VyKCRoZWFkZXIpOwoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkYWRkZWRIZWFkZXJzWyRub3JtYWxpemVkXSkpIHsKICAgICAgICAgICAgICAgICAgICAvKiogQHZhciBSZXF1ZXN0SW50ZXJmYWNlICovCiAgICAgICAgICAgICAgICAgICAgJG5ldyA9ICRuZXctPndpdGhBZGRlZEhlYWRlcigkYWRkZWRIZWFkZXJzWyRub3JtYWxpemVkXSwgJHZhbHVlKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLyoqIEB2YXIgUmVxdWVzdEludGVyZmFjZSAqLwogICAgICAgICAgICAgICAgICAgICRuZXcgPSAkbmV3LT53aXRoSGVhZGVyKCRoZWFkZXIsICR2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgJGFkZGVkSGVhZGVyc1skbm9ybWFsaXplZF0gPSAkaGVhZGVyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJGNoYW5nZXNbJ2JvZHknXSkpIHsKICAgICAgICAgICAgLyoqIEB2YXIgUmVxdWVzdEludGVyZmFjZSAqLwogICAgICAgICAgICAkbmV3ID0gJG5ldy0+d2l0aEJvZHkoc2VsZjo6c3RyZWFtRm9yKCRjaGFuZ2VzWydib2R5J10pKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkY2hhbmdlc1sndmVyc2lvbiddKSkgewogICAgICAgICAgICAvKiogQHZhciBSZXF1ZXN0SW50ZXJmYWNlICovCiAgICAgICAgICAgICRuZXcgPSAkbmV3LT53aXRoUHJvdG9jb2xWZXJzaW9uKCRjaGFuZ2VzWyd2ZXJzaW9uJ10pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJGNoYW5nZXMKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gd2Fybk9uSW52YWxpZE1vZGlmeVJlcXVlc3RDaGFuZ2VzKGFycmF5ICRjaGFuZ2VzKTogdm9pZAogICAgewogICAgICAgIGZvcmVhY2ggKFsnbWV0aG9kJywgJ3F1ZXJ5JywgJ3ZlcnNpb24nXSBhcyAka2V5KSB7CiAgICAgICAgICAgIGlmIChcYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkY2hhbmdlcykgJiYgIVxpc19zdHJpbmcoJGNoYW5nZXNbJGtleV0pKSB7CiAgICAgICAgICAgICAgICBzZWxmOjp3YXJuT25JbnZhbGlkTW9kaWZ5UmVxdWVzdENoYW5nZSgka2V5LCAnc3RyaW5nJywgJGNoYW5nZXNbJGtleV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoXGFycmF5X2tleV9leGlzdHMoJ3VyaScsICRjaGFuZ2VzKSAmJiAhJGNoYW5nZXNbJ3VyaSddIGluc3RhbmNlb2YgVXJpSW50ZXJmYWNlKSB7CiAgICAgICAgICAgIHNlbGY6Ondhcm5PbkludmFsaWRNb2RpZnlSZXF1ZXN0Q2hhbmdlKCd1cmknLCAnVXJpSW50ZXJmYWNlJywgJGNoYW5nZXNbJ3VyaSddKTsKICAgICAgICB9CgogICAgICAgIGlmIChcYXJyYXlfa2V5X2V4aXN0cygnYm9keScsICRjaGFuZ2VzKSAmJiAkY2hhbmdlc1snYm9keSddID09PSBudWxsKSB7CiAgICAgICAgICAgIHNlbGY6Ondhcm5PbkludmFsaWRNb2RpZnlSZXF1ZXN0Q2hhbmdlKCdib2R5JywgJ3Jlc291cmNlfHN0cmluZ3xpbnR8ZmxvYXR8Ym9vbHxTdHJlYW1JbnRlcmZhY2V8Y2FsbGFibGV8XEl0ZXJhdG9yfFxTdHJpbmdhYmxlJywgJGNoYW5nZXNbJ2JvZHknXSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGFycmF5X2tleV9leGlzdHMoJ3NldF9oZWFkZXJzJywgJGNoYW5nZXMpKSB7CiAgICAgICAgICAgIGlmICghXGlzX2FycmF5KCRjaGFuZ2VzWydzZXRfaGVhZGVycyddKSkgewogICAgICAgICAgICAgICAgc2VsZjo6d2Fybk9uSW52YWxpZE1vZGlmeVJlcXVlc3RDaGFuZ2UoJ3NldF9oZWFkZXJzJywgJ2FycmF5PGFycmF5LWtleSwgc3RyaW5nfG5vbi1lbXB0eS1hcnJheTxhcnJheS1rZXksIHN0cmluZz4+JywgJGNoYW5nZXNbJ3NldF9oZWFkZXJzJ10pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNoYW5nZXNbJ3NldF9oZWFkZXJzJ10gYXMgJGhlYWRlciA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAkaGVhZGVyUGF0aCA9IFxzcHJpbnRmKCdzZXRfaGVhZGVycy4lcycsIChzdHJpbmcpICRoZWFkZXIpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoXGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR2YWx1ZSA9PT0gW10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGY6Ondhcm5PbkludmFsaWRNb2RpZnlSZXF1ZXN0Q2hhbmdlKCRoZWFkZXJQYXRoLCAnc3RyaW5nfG5vbi1lbXB0eS1hcnJheTxhcnJheS1rZXksIHN0cmluZz4nLCAkdmFsdWUpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkdmFsdWUgYXMgJGluZGV4ID0+ICRpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVxpc19zdHJpbmcoJGl0ZW0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZjo6d2Fybk9uSW52YWxpZE1vZGlmeVJlcXVlc3RDaGFuZ2UoXHNwcmludGYoJyVzLiVzJywgJGhlYWRlclBhdGgsIChzdHJpbmcpICRpbmRleCksICdzdHJpbmcnLCAkaXRlbSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoIVxpc19zdHJpbmcoJHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICBzZWxmOjp3YXJuT25JbnZhbGlkTW9kaWZ5UmVxdWVzdENoYW5nZSgkaGVhZGVyUGF0aCwgJ3N0cmluZ3xub24tZW1wdHktYXJyYXk8YXJyYXkta2V5LCBzdHJpbmc+JywgJHZhbHVlKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCFcYXJyYXlfa2V5X2V4aXN0cygncmVtb3ZlX2hlYWRlcnMnLCAkY2hhbmdlcykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFcaXNfYXJyYXkoJGNoYW5nZXNbJ3JlbW92ZV9oZWFkZXJzJ10pKSB7CiAgICAgICAgICAgIHNlbGY6Ondhcm5PbkludmFsaWRNb2RpZnlSZXF1ZXN0Q2hhbmdlKCdyZW1vdmVfaGVhZGVycycsICdhcnJheTxhcnJheS1rZXksIHN0cmluZ3xpbnQ+JywgJGNoYW5nZXNbJ3JlbW92ZV9oZWFkZXJzJ10pOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJGNoYW5nZXNbJ3JlbW92ZV9oZWFkZXJzJ10gYXMgJGluZGV4ID0+ICRoZWFkZXIpIHsKICAgICAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCRoZWFkZXIpICYmICFcaXNfaW50KCRoZWFkZXIpKSB7CiAgICAgICAgICAgICAgICBzZWxmOjp3YXJuT25JbnZhbGlkTW9kaWZ5UmVxdWVzdENoYW5nZShcc3ByaW50ZigncmVtb3ZlX2hlYWRlcnMuJXMnLCAoc3RyaW5nKSAkaW5kZXgpLCAnc3RyaW5nfGludCcsICRoZWFkZXIpOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gd2Fybk9uSW52YWxpZE1vZGlmeVJlcXVlc3RDaGFuZ2Uoc3RyaW5nICRrZXksIHN0cmluZyAkZXhwZWN0ZWQsICR2YWx1ZSk6IHZvaWQKICAgIHsKICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgJ2d1enpsZWh0dHAvcHNyNycsCiAgICAgICAgICAgICcyLjExJywKICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gVXRpbHM6Om1vZGlmeVJlcXVlc3QoKSBjaGFuZ2UgIiVzIiBpcyBkZXByZWNhdGVkOyBndXp6bGVodHRwL3BzcjcgMy4wIHJlcXVpcmVzICVzLicsCiAgICAgICAgICAgIFxnZXRfZGVidWdfdHlwZSgkdmFsdWUpLAogICAgICAgICAgICAka2V5LAogICAgICAgICAgICAkZXhwZWN0ZWQKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUmVhZCBhIGxpbmUgZnJvbSB0aGUgc3RyZWFtIHVwIHRvIHRoZSBtYXhpbXVtIGFsbG93ZWQgYnVmZmVyIGxlbmd0aC4KICAgICAqCiAgICAgKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0gICAgU3RyZWFtIHRvIHJlYWQgZnJvbQogICAgICogQHBhcmFtIGludHxudWxsICAgICAgICAkbWF4TGVuZ3RoIE1heGltdW0gYnVmZmVyIGxlbmd0aAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlYWRMaW5lKFN0cmVhbUludGVyZmFjZSAkc3RyZWFtLCA/aW50ICRtYXhMZW5ndGggPSBudWxsKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGJ1ZmZlciA9ICcnOwogICAgICAgICRzaXplID0gMDsKCiAgICAgICAgd2hpbGUgKCEkc3RyZWFtLT5lb2YoKSkgewogICAgICAgICAgICBpZiAoJycgPT09ICgkYnl0ZSA9ICRzdHJlYW0tPnJlYWQoMSkpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGJ1ZmZlcjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkYnVmZmVyIC49ICRieXRlOwogICAgICAgICAgICAvLyBCcmVhayB3aGVuIGEgbmV3IGxpbmUgaXMgZm91bmQgb3IgdGhlIG1heCBsZW5ndGggLSAxIGlzIHJlYWNoZWQKICAgICAgICAgICAgaWYgKCRieXRlID09PSAiXG4iIHx8ICsrJHNpemUgPT09ICRtYXhMZW5ndGggLSAxKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRidWZmZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWRhY3QgdGhlIHBhc3N3b3JkIGluIHRoZSB1c2VyIGluZm8gcGFydCBvZiBhIFVSSS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWRhY3RVc2VySW5mbyhVcmlJbnRlcmZhY2UgJHVyaSk6IFVyaUludGVyZmFjZQogICAgewogICAgICAgICR1c2VySW5mbyA9ICR1cmktPmdldFVzZXJJbmZvKCk7CgogICAgICAgIGlmIChmYWxzZSAhPT0gKCRwb3MgPSBcc3RycG9zKCR1c2VySW5mbywgJzonKSkpIHsKICAgICAgICAgICAgcmV0dXJuICR1cmktPndpdGhVc2VySW5mbyhcc3Vic3RyKCR1c2VySW5mbywgMCwgJHBvcyksICcqKionKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdXJpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IHN0cmVhbSBiYXNlZCBvbiB0aGUgaW5wdXQgdHlwZS4KICAgICAqCiAgICAgKiBPcHRpb25zIGlzIGFuIGFzc29jaWF0aXZlIGFycmF5IHRoYXQgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBrZXlzOgogICAgICogLSBtZXRhZGF0YTogQXJyYXkgb2YgY3VzdG9tIG1ldGFkYXRhLgogICAgICogLSBzaXplOiBTaXplIG9mIHRoZSBzdHJlYW0uCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGAkcmVzb3VyY2VgIHR5cGVzOgogICAgICogLSBgUHNyXEh0dHBcTWVzc2FnZVxTdHJlYW1JbnRlcmZhY2VgOiBSZXR1cm5zIHRoZSB2YWx1ZSBhcy1pcy4KICAgICAqIC0gYHN0cmluZ2A6IENyZWF0ZXMgYSBzdHJlYW0gb2JqZWN0IHRoYXQgdXNlcyB0aGUgZ2l2ZW4gc3RyaW5nIGFzIHRoZSBjb250ZW50cy4KICAgICAqIC0gYHJlc291cmNlYDogQ3JlYXRlcyBhIHN0cmVhbSBvYmplY3QgdGhhdCB3cmFwcyB0aGUgZ2l2ZW4gUEhQIHN0cmVhbSByZXNvdXJjZS4KICAgICAqIC0gYEl0ZXJhdG9yYDogSWYgdGhlIHByb3ZpZGVkIHZhbHVlIGltcGxlbWVudHMgYEl0ZXJhdG9yYCwgdGhlbiBhIHJlYWQtb25seQogICAgICogICBzdHJlYW0gb2JqZWN0IHdpbGwgYmUgY3JlYXRlZCB0aGF0IHdyYXBzIHRoZSBnaXZlbiBpdGVyYWJsZS4gRWFjaCB0aW1lIHRoZQogICAgICogICBzdHJlYW0gaXMgcmVhZCBmcm9tLCBkYXRhIGZyb20gdGhlIGl0ZXJhdG9yIHdpbGwgZmlsbCBhIGJ1ZmZlciBhbmQgd2lsbCBiZQogICAgICogICBjb250aW51b3VzbHkgY2FsbGVkIHVudGlsIHRoZSBidWZmZXIgaXMgZXF1YWwgdG8gdGhlIHJlcXVlc3RlZCByZWFkIHNpemUuCiAgICAgKiAgIFN1YnNlcXVlbnQgcmVhZCBjYWxscyB3aWxsIGZpcnN0IHJlYWQgZnJvbSB0aGUgYnVmZmVyIGFuZCB0aGVuIGNhbGwgYG5leHRgCiAgICAgKiAgIG9uIHRoZSB1bmRlcmx5aW5nIGl0ZXJhdG9yIHVudGlsIGl0IGlzIGV4aGF1c3RlZC4KICAgICAqIC0gYG9iamVjdGAgd2l0aCBgX190b1N0cmluZygpYDogSWYgdGhlIG9iamVjdCBoYXMgdGhlIGBfX3RvU3RyaW5nKClgIG1ldGhvZCwKICAgICAqICAgdGhlIG9iamVjdCB3aWxsIGJlIGNhc3QgdG8gYSBzdHJpbmcgYW5kIHRoZW4gYSBzdHJlYW0gd2lsbCBiZSByZXR1cm5lZCB0aGF0CiAgICAgKiAgIHVzZXMgdGhlIHN0cmluZyB2YWx1ZS4KICAgICAqIC0gYE5VTExgOiBXaGVuIGBudWxsYCBpcyBwYXNzZWQsIGFuIGVtcHR5IHN0cmVhbSBvYmplY3QgaXMgcmV0dXJuZWQuCiAgICAgKiAtIGBjYWxsYWJsZWA6IFdoZW4gYSBjYWxsYWJsZSBhcnJheSwgY2xvc3VyZSwgb3IgaW52b2thYmxlIG9iamVjdCBpcyBwYXNzZWQKICAgICAqICAgYW5kIG5vIGVhcmxpZXIgcmVzb3VyY2Ugb3Igb2JqZWN0IHJ1bGUgYXBwbGllcywgYSByZWFkLW9ubHkgc3RyZWFtIG9iamVjdAogICAgICogICB3aWxsIGJlIGNyZWF0ZWQgdGhhdCBpbnZva2VzIHRoZSBnaXZlbiBjYWxsYWJsZS4gVGhlIGNhbGxhYmxlIGlzIGludm9rZWQKICAgICAqICAgd2l0aCB0aGUgc3VnZ2VzdGVkIG51bWJlciBvZiBieXRlcyB0byByZWFkLiBUaGUgY2FsbGFibGUgY2FuIHJldHVybiBmZXdlcgogICAgICogICBvciBtb3JlIGJ5dGVzIHRoYW4gcmVxdWVzdGVkLCBidXQgTVVTVCByZXR1cm4gYGZhbHNlYCBvciBgbnVsbGAgd2hlbiB0aGVyZQogICAgICogICBpcyBubyBtb3JlIGRhdGEgdG8gcmV0dXJuLiBBbnkgYWRkaXRpb25hbCBieXRlcyB3aWxsIGJlIGJ1ZmZlcmVkIGFuZCB1c2VkCiAgICAgKiAgIGluIHN1YnNlcXVlbnQgcmVhZHMuIFN0cmluZyBpbnB1dHMgYXJlIGFsd2F5cyB0cmVhdGVkIGFzIHN0cmluZyBib2RpZXMsCiAgICAgKiAgIGV2ZW4gd2hlbiB0aGV5IG5hbWUgY2FsbGFibGUgZnVuY3Rpb25zLgogICAgICoKICAgICAqIFBhc3NpbmcgYSBub24tc3RyaW5nIHNjYWxhciAoYGludGAsIGBmbG9hdGAsIG9yIGBib29sYCkgaXMgZGVwcmVjYXRlZDsgY2FzdAogICAgICogaXQgdG8gYSBzdHJpbmcgaW5zdGVhZC4gZ3V6emxlaHR0cC9wc3I3IDMuMCB3aWxsIHJlamVjdCBub24tc3RyaW5nIHNjYWxhcnMuCiAgICAgKgogICAgICogQHBhcmFtIHJlc291cmNlfHN0cmluZ3xpbnR8ZmxvYXR8Ym9vbHxTdHJlYW1JbnRlcmZhY2V8Y2FsbGFibGV8XEl0ZXJhdG9yfG51bGwgJHJlc291cmNlIEVudGl0eSBib2R5IGRhdGEKICAgICAqIEBwYXJhbSBhcnJheXtzaXplPzogaW50LCBtZXRhZGF0YT86IGFycmF5fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcHRpb25zICBBZGRpdGlvbmFsIG9wdGlvbnMKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlICRyZXNvdXJjZSBhcmcgaXMgbm90IHZhbGlkLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHN0cmVhbUZvcigkcmVzb3VyY2UgPSAnJywgYXJyYXkgJG9wdGlvbnMgPSBbXSk6IFN0cmVhbUludGVyZmFjZQogICAgewogICAgICAgIGlmIChpc19zY2FsYXIoJHJlc291cmNlKSkgewogICAgICAgICAgICBpZiAoIWlzX3N0cmluZygkcmVzb3VyY2UpKSB7CiAgICAgICAgICAgICAgICBcdHJpZ2dlcl9kZXByZWNhdGlvbigKICAgICAgICAgICAgICAgICAgICAnZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgICAgICAgICAnMi4xMicsCiAgICAgICAgICAgICAgICAgICAgJ1Bhc3NpbmcgJXMgdG8gVXRpbHM6OnN0cmVhbUZvcigpIGlzIGRlcHJlY2F0ZWQ7IGNhc3QgaXQgdG8gYSBzdHJpbmcuIGd1enpsZWh0dHAvcHNyNyAzLjAgd2lsbCBvbmx5IGFjY2VwdCBzdHJpbmcsIHJlc291cmNlLCBTdHJlYW1JbnRlcmZhY2UsIFN0cmluZ2FibGUsIEl0ZXJhdG9yLCBjYWxsYWJsZSwgb3IgbnVsbC4nLAogICAgICAgICAgICAgICAgICAgIFxnZXR0eXBlKCRyZXNvdXJjZSkKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKGlzX2Zsb2F0KCRyZXNvdXJjZSkgJiYgIWlzX2Zpbml0ZSgkcmVzb3VyY2UpKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gTm9ybWFsaXplZCBvbmx5IHRvIGF2b2lkIFBIUCA4LjUncyAoc3RyaW5nKSBOQU4gd2FybmluZwogICAgICAgICAgICAgICAgICAgIC8vIHdoaWxlIGRlcHJlY2F0ZWQ7IDMuMCByZWplY3RzIG5vbi1maW5pdGUgZmxvYXRzIHdpdGggZXZlcnkKICAgICAgICAgICAgICAgICAgICAvLyBvdGhlciBub24tc3RyaW5nIHNjYWxhci4KICAgICAgICAgICAgICAgICAgICAkcmVzb3VyY2UgPSBpc19uYW4oJHJlc291cmNlKSA/ICdOQU4nIDogKCRyZXNvdXJjZSA+IDAgPyAnSU5GJyA6ICctSU5GJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzdHJlYW0gPSBzZWxmOjp0cnlGb3BlbigncGhwOi8vdGVtcCcsICdyKycpOwogICAgICAgICAgICBpZiAoJHJlc291cmNlICE9PSAnJykgewogICAgICAgICAgICAgICAgZndyaXRlKCRzdHJlYW0sIChzdHJpbmcpICRyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICBmc2Vlaygkc3RyZWFtLCAwKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW0oJHN0cmVhbSwgJG9wdGlvbnMpOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoIChnZXR0eXBlKCRyZXNvdXJjZSkpIHsKICAgICAgICAgICAgY2FzZSAncmVzb3VyY2UnOgogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAqIFRoZSAncGhwOi8vaW5wdXQnIGlzIGEgc3BlY2lhbCBzdHJlYW0gd2l0aCBxdWlya3MgYW5kIGluY29uc2lzdGVuY2llcy4KICAgICAgICAgICAgICAgICAqIFdlIGF2b2lkIHVzaW5nIHRoYXQgc3RyZWFtIGJ5IHJlYWRpbmcgaXQgaW50byBwaHA6Ly90ZW1wCiAgICAgICAgICAgICAgICAgKi8KCiAgICAgICAgICAgICAgICAvKiogQHZhciByZXNvdXJjZSAkcmVzb3VyY2UgKi8KICAgICAgICAgICAgICAgIGlmICgoXHN0cmVhbV9nZXRfbWV0YV9kYXRhKCRyZXNvdXJjZSlbJ3VyaSddID8/ICcnKSA9PT0gJ3BocDovL2lucHV0JykgewogICAgICAgICAgICAgICAgICAgICRzdHJlYW0gPSBzZWxmOjp0cnlGb3BlbigncGhwOi8vdGVtcCcsICd3KycpOwogICAgICAgICAgICAgICAgICAgIHN0cmVhbV9jb3B5X3RvX3N0cmVhbSgkcmVzb3VyY2UsICRzdHJlYW0pOwogICAgICAgICAgICAgICAgICAgIGZzZWVrKCRzdHJlYW0sIDApOwogICAgICAgICAgICAgICAgICAgICRyZXNvdXJjZSA9ICRzdHJlYW07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW0oJHJlc291cmNlLCAkb3B0aW9ucyk7CiAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6CiAgICAgICAgICAgICAgICAvKiogQHZhciBvYmplY3QgJHJlc291cmNlICovCiAgICAgICAgICAgICAgICBpZiAoJHJlc291cmNlIGluc3RhbmNlb2YgU3RyZWFtSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXNvdXJjZTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkcmVzb3VyY2UgaW5zdGFuY2VvZiBcSXRlcmF0b3IpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFB1bXBTdHJlYW0oZnVuY3Rpb24gKCkgdXNlICgkcmVzb3VyY2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkcmVzb3VyY2UtPnZhbGlkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlc291cmNlLT5jdXJyZW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXNvdXJjZS0+bmV4dCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgfSwgJG9wdGlvbnMpOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKG1ldGhvZF9leGlzdHMoJHJlc291cmNlLCAnX190b1N0cmluZycpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6OnN0cmVhbUZvcigoc3RyaW5nKSAkcmVzb3VyY2UsICRvcHRpb25zKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdOVUxMJzoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZWFtKHNlbGY6OnRyeUZvcGVuKCdwaHA6Ly90ZW1wJywgJ3IrJyksICRvcHRpb25zKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc19jYWxsYWJsZSgkcmVzb3VyY2UpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgUHVtcFN0cmVhbSgkcmVzb3VyY2UsICRvcHRpb25zKTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIHJlc291cmNlIHR5cGU6ICcuZ2V0dHlwZSgkcmVzb3VyY2UpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNhZmVseSBvcGVucyBhIFBIUCBzdHJlYW0gcmVzb3VyY2UgdXNpbmcgYSBmaWxlbmFtZS4KICAgICAqCiAgICAgKiBXaGVuIGZvcGVuIGZhaWxzLCBQSFAgbm9ybWFsbHkgcmFpc2VzIGEgd2FybmluZy4gVGhpcyBmdW5jdGlvbiBhZGRzIGFuCiAgICAgKiBlcnJvciBoYW5kbGVyIHRoYXQgY2hlY2tzIGZvciBlcnJvcnMgYW5kIHRocm93cyBhbiBleGNlcHRpb24gaW5zdGVhZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZSBGaWxlIHRvIG9wZW4KICAgICAqIEBwYXJhbSBzdHJpbmcgJG1vZGUgICAgIE1vZGUgdXNlZCB0byBvcGVuIHRoZSBmaWxlCiAgICAgKgogICAgICogQHJldHVybiByZXNvdXJjZQogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIGZpbGUgY2Fubm90IGJlIG9wZW5lZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRyeUZvcGVuKHN0cmluZyAkZmlsZW5hbWUsIHN0cmluZyAkbW9kZSkKICAgIHsKICAgICAgICAkZXggPSBudWxsOwogICAgICAgIHNldF9lcnJvcl9oYW5kbGVyKHN0YXRpYyBmdW5jdGlvbiAoaW50ICRlcnJubywgc3RyaW5nICRlcnJzdHIpIHVzZSAoJGZpbGVuYW1lLCAkbW9kZSwgJiRleCk6IGJvb2wgewogICAgICAgICAgICAkZXggPSBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oc3ByaW50ZigKICAgICAgICAgICAgICAgICdVbmFibGUgdG8gb3BlbiAiJXMiIHVzaW5nIG1vZGUgIiVzIjogJXMnLAogICAgICAgICAgICAgICAgJGZpbGVuYW1lLAogICAgICAgICAgICAgICAgJG1vZGUsCiAgICAgICAgICAgICAgICAkZXJyc3RyCiAgICAgICAgICAgICkpOwoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSk7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIC8qKiBAdmFyIHJlc291cmNlICRoYW5kbGUgKi8KICAgICAgICAgICAgJGhhbmRsZSA9IGZvcGVuKCRmaWxlbmFtZSwgJG1vZGUpOwogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgJGV4ID0gbmV3IFxSdW50aW1lRXhjZXB0aW9uKHNwcmludGYoCiAgICAgICAgICAgICAgICAnVW5hYmxlIHRvIG9wZW4gIiVzIiB1c2luZyBtb2RlICIlcyI6ICVzJywKICAgICAgICAgICAgICAgICRmaWxlbmFtZSwKICAgICAgICAgICAgICAgICRtb2RlLAogICAgICAgICAgICAgICAgJGUtPmdldE1lc3NhZ2UoKQogICAgICAgICAgICApLCAwLCAkZSk7CiAgICAgICAgfQoKICAgICAgICByZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsKCiAgICAgICAgaWYgKCRleCkgewogICAgICAgICAgICAvKiogQHZhciBcUnVudGltZUV4Y2VwdGlvbiAkZXggKi8KICAgICAgICAgICAgdGhyb3cgJGV4OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRoYW5kbGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBTYWZlbHkgZ2V0cyB0aGUgY29udGVudHMgb2YgYSBnaXZlbiBzdHJlYW0uCiAgICAgKgogICAgICogV2hlbiBzdHJlYW1fZ2V0X2NvbnRlbnRzIGZhaWxzLCBQSFAgbm9ybWFsbHkgcmFpc2VzIGEgd2FybmluZy4gVGhpcwogICAgICogZnVuY3Rpb24gYWRkcyBhbiBlcnJvciBoYW5kbGVyIHRoYXQgY2hlY2tzIGZvciBlcnJvcnMgYW5kIHRocm93cyBhbgogICAgICogZXhjZXB0aW9uIGluc3RlYWQuCiAgICAgKgogICAgICogQHBhcmFtIHJlc291cmNlICRzdHJlYW0KICAgICAqCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBzdHJlYW0gY2Fubm90IGJlIHJlYWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0cnlHZXRDb250ZW50cygkc3RyZWFtKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGV4ID0gbnVsbDsKICAgICAgICBzZXRfZXJyb3JfaGFuZGxlcihzdGF0aWMgZnVuY3Rpb24gKGludCAkZXJybm8sIHN0cmluZyAkZXJyc3RyKSB1c2UgKCYkZXgpOiBib29sIHsKICAgICAgICAgICAgJGV4ID0gbmV3IFxSdW50aW1lRXhjZXB0aW9uKHNwcmludGYoCiAgICAgICAgICAgICAgICAnVW5hYmxlIHRvIHJlYWQgc3RyZWFtIGNvbnRlbnRzOiAlcycsCiAgICAgICAgICAgICAgICAkZXJyc3RyCiAgICAgICAgICAgICkpOwoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSk7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIC8qKiBAdmFyIHN0cmluZ3xmYWxzZSAkY29udGVudHMgKi8KICAgICAgICAgICAgJGNvbnRlbnRzID0gc3RyZWFtX2dldF9jb250ZW50cygkc3RyZWFtKTsKCiAgICAgICAgICAgIGlmICgkY29udGVudHMgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkZXggPSBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byByZWFkIHN0cmVhbSBjb250ZW50cycpOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkZSkgewogICAgICAgICAgICAkZXggPSBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oc3ByaW50ZigKICAgICAgICAgICAgICAgICdVbmFibGUgdG8gcmVhZCBzdHJlYW0gY29udGVudHM6ICVzJywKICAgICAgICAgICAgICAgICRlLT5nZXRNZXNzYWdlKCkKICAgICAgICAgICAgKSwgMCwgJGUpOwogICAgICAgIH0KCiAgICAgICAgcmVzdG9yZV9lcnJvcl9oYW5kbGVyKCk7CgogICAgICAgIGlmICgkZXgpIHsKICAgICAgICAgICAgLyoqIEB2YXIgXFJ1bnRpbWVFeGNlcHRpb24gJGV4ICovCiAgICAgICAgICAgIHRocm93ICRleDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY29udGVudHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgVXJpSW50ZXJmYWNlIGZvciB0aGUgZ2l2ZW4gdmFsdWUuCiAgICAgKgogICAgICogVGhpcyBmdW5jdGlvbiBhY2NlcHRzIGEgc3RyaW5nIG9yIFVyaUludGVyZmFjZSBhbmQgcmV0dXJucyBhCiAgICAgKiBVcmlJbnRlcmZhY2UgZm9yIHRoZSBnaXZlbiB2YWx1ZS4gSWYgdGhlIHZhbHVlIGlzIGFscmVhZHkgYQogICAgICogVXJpSW50ZXJmYWNlLCBpdCBpcyByZXR1cm5lZCBhcy1pcy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdXJpRm9yKCR1cmkpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoJHVyaSBpbnN0YW5jZW9mIFVyaUludGVyZmFjZSkgewogICAgICAgICAgICByZXR1cm4gJHVyaTsKICAgICAgICB9CgogICAgICAgIGlmIChpc19zdHJpbmcoJHVyaSkpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBVcmkoJHVyaSk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVVJJIG11c3QgYmUgYSBzdHJpbmcgb3IgVXJpSW50ZXJmYWNlJyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/UPGRADING.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R3V6emxlIFBTUi03IFVwZ3JhZGUgR3VpZGUKPT09PT09PT09PT09PT09PT09PT09PT09PT0KCjEueCB0byAyLjAKLS0tLS0tLS0tLQoKR3V6emxlIFBTUi03IDIuMCBpcyBhIG1ham9yIHJlbGVhc2UgdGhhdCByZW1vdmVzIGRlcHJlY2F0ZWQgQVBJcywgcmFpc2VzIHRoZQptaW5pbXVtIFBIUCB2ZXJzaW9uLCBhbmQgYWRkcyBQSFAgNyBwYXJhbWV0ZXIgYW5kIHJldHVybiB0eXBlcy4gQXBwbGljYXRpb25zIHRoYXQKb25seSBkZXBlbmQgb24gUFNSLTcgaW50ZXJmYWNlcyBzaG91bGQgdXN1YWxseSBuZWVkIHNtYWxsIGNoYW5nZXMuIEFwcGxpY2F0aW9ucwp0aGF0IGNhbGwgaGVscGVyIGZ1bmN0aW9ucywgZXh0ZW5kIHBhY2thZ2UgY2xhc3Nlcywgb3IgcGFzcyBpbnZhbGlkIGFyZ3VtZW50CnR5cGVzIG5lZWQgY2xvc2VyIHJldmlldy4KCiMjIyMgUEhQIFZlcnNpb24gYW5kIERlcGVuZGVuY2llcwoKR3V6emxlIFBTUi03IDIuMCByZXF1aXJlcyBQSFAgYF43LjIuNSB8fCBeOC4wYC4gR3V6emxlIFBTUi03IDEueCBzdXBwb3J0ZWQgUEhQCmA+PTUuNC4wYC4KCkNvbXBvc2VyIGRlcGVuZGVuY3kgY2hhbmdlcyB0aGF0IGNhbiBhZmZlY3QgdXBncmFkZXM6CgotIGByYWxvdXBoaWUvZ2V0YWxsaGVhZGVyc2AgdjIgc3VwcG9ydCB3YXMgZHJvcHBlZDsgMi4wIHJlcXVpcmVzIGBeMy4wYC4KLSBgcHNyL2h0dHAtZmFjdG9yeTpeMS4wYCBpcyByZXF1aXJlZCBiZWNhdXNlIDIuMCBzaGlwcyBQU1ItMTcgZmFjdG9yaWVzIHRocm91Z2ggYEd1enpsZUh0dHBcUHNyN1xIdHRwRmFjdG9yeWAuCgojIyMjIFBIUCA3IFR5cGUgSGludHMgYW5kIFJldHVybiBUeXBlcwoKVHlwZSBoaW50cyBhbmQgcmV0dXJuIHR5cGVzIHdlcmUgYWRkZWQgd2hlcmV2ZXIgcG9zc2libGUuIFBsZWFzZSBtYWtlIHN1cmU6CgotIFlvdSBwYXNzIHZhbHVlcyBvZiB0aGUgZG9jdW1lbnRlZCB0eXBlIHdoZW4gY2FsbGluZyBtZXRob2RzIGFuZCBmdW5jdGlvbnMuCi0gQ2xhc3NlcyB0aGF0IGV4dGVuZCBHdXp6bGUgUFNSLTcgY2xhc3NlcyB1cGRhdGUgYW55IG92ZXJyaWRkZW4gbWV0aG9kIHNpZ25hdHVyZXMgdG8gcmVtYWluIGNvbXBhdGlibGUuCi0gQ29kZSB0aGF0IGV4cGVjdGVkIHBhY2thZ2Utc3BlY2lmaWMgYEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbmAgZXhjZXB0aW9ucyBmb3IgaW52YWxpZCBhcmd1bWVudCB0eXBlcyBtYXkgbm93IHJlY2VpdmUgUEhQIGBUeXBlRXJyb3JgIGV4Y2VwdGlvbnMgaW5zdGVhZC4KCkNvbW1vbiBleGFtcGxlcyBpbmNsdWRlIHBhc3NpbmcgYSByZWFsIGludGVnZXIgc3RhdHVzIGNvZGUgdG8gYFJlc3BvbnNlOjpfX2NvbnN0cnVjdCgpYCBhbmQgcGFzc2luZyBhIHN0cmluZyBtZXRob2QgdG8gYFJlcXVlc3Q6Ol9fY29uc3RydWN0KClgLgoKIyMjIyBSZW1vdmVkIEZ1bmN0aW9uIEFQSQoKVGhlIHN0YXRpYyBBUEkgd2FzIGludHJvZHVjZWQgaW4gMS43LjAgdG8gbWl0aWdhdGUgcHJvYmxlbXMgd2l0aCBmdW5jdGlvbnMKY29uZmxpY3RpbmcgYmV0d2VlbiBnbG9iYWwgYW5kIGxvY2FsIGNvcGllcyBvZiB0aGUgcGFja2FnZS4gVGhlIGZ1bmN0aW9uIEFQSSB3YXMKcmVtb3ZlZCBpbiAyLjAuMCwgYWxvbmcgd2l0aCB0aGUgQ29tcG9zZXIgYGZpbGVzYCBhdXRvbG9hZCBlbnRyeSB0aGF0IGxvYWRlZApgc3JjL2Z1bmN0aW9uc19pbmNsdWRlLnBocGAuCgpSZXBsYWNlIG5hbWVzcGFjZWQgZnVuY3Rpb24gY2FsbHMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBzdGF0aWMgbWV0aG9kcyBpbiB0aGUKYEd1enpsZUh0dHBcUHNyN2AgbmFtZXNwYWNlOgoKYGBgcGhwCi8vIEJlZm9yZToKdXNlIGZ1bmN0aW9uIEd1enpsZUh0dHBcUHNyN1xzdHJlYW1fZm9yOwoKJHN0cmVhbSA9IHN0cmVhbV9mb3IoJ2JvZHknKTsKCi8vIEFmdGVyOgp1c2UgR3V6emxlSHR0cFxQc3I3XFV0aWxzOwoKJHN0cmVhbSA9IFV0aWxzOjpzdHJlYW1Gb3IoJ2JvZHknKTsKYGBgCgp8IE9yaWdpbmFsIEZ1bmN0aW9uIHwgUmVwbGFjZW1lbnQgTWV0aG9kIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYHN0cmAgfCBgTWVzc2FnZTo6dG9TdHJpbmdgIHwKfCBgdXJpX2ZvcmAgfCBgVXRpbHM6OnVyaUZvcmAgfAp8IGBzdHJlYW1fZm9yYCB8IGBVdGlsczo6c3RyZWFtRm9yYCB8CnwgYHBhcnNlX2hlYWRlcmAgfCBgSGVhZGVyOjpwYXJzZWAgfAp8IGBub3JtYWxpemVfaGVhZGVyYCB8IGBIZWFkZXI6Om5vcm1hbGl6ZWAgfAp8IGBtb2RpZnlfcmVxdWVzdGAgfCBgVXRpbHM6Om1vZGlmeVJlcXVlc3RgIHwKfCBgcmV3aW5kX2JvZHlgIHwgYE1lc3NhZ2U6OnJld2luZEJvZHlgIHwKfCBgdHJ5X2ZvcGVuYCB8IGBVdGlsczo6dHJ5Rm9wZW5gIHwKfCBgY29weV90b19zdHJpbmdgIHwgYFV0aWxzOjpjb3B5VG9TdHJpbmdgIHwKfCBgY29weV90b19zdHJlYW1gIHwgYFV0aWxzOjpjb3B5VG9TdHJlYW1gIHwKfCBgaGFzaGAgfCBgVXRpbHM6Omhhc2hgIHwKfCBgcmVhZGxpbmVgIHwgYFV0aWxzOjpyZWFkTGluZWAgfAp8IGBwYXJzZV9yZXF1ZXN0YCB8IGBNZXNzYWdlOjpwYXJzZVJlcXVlc3RgIHwKfCBgcGFyc2VfcmVzcG9uc2VgIHwgYE1lc3NhZ2U6OnBhcnNlUmVzcG9uc2VgIHwKfCBgcGFyc2VfcXVlcnlgIHwgYFF1ZXJ5OjpwYXJzZWAgfAp8IGBidWlsZF9xdWVyeWAgfCBgUXVlcnk6OmJ1aWxkYCB8CnwgYG1pbWV0eXBlX2Zyb21fZmlsZW5hbWVgIHwgYE1pbWVUeXBlOjpmcm9tRmlsZW5hbWVgIHwKfCBgbWltZXR5cGVfZnJvbV9leHRlbnNpb25gIHwgYE1pbWVUeXBlOjpmcm9tRXh0ZW5zaW9uYCB8CnwgYF9wYXJzZV9tZXNzYWdlYCB8IGBNZXNzYWdlOjpwYXJzZU1lc3NhZ2VgIHwKfCBgX3BhcnNlX3JlcXVlc3RfdXJpYCB8IGBNZXNzYWdlOjpwYXJzZVJlcXVlc3RVcmlgIHwKfCBgZ2V0X21lc3NhZ2VfYm9keV9zdW1tYXJ5YCB8IGBNZXNzYWdlOjpib2R5U3VtbWFyeWAgfAp8IGBfY2FzZWxlc3NfcmVtb3ZlYCB8IGBVdGlsczo6Y2FzZWxlc3NSZW1vdmVgIHwKCmBIZWFkZXI6Om5vcm1hbGl6ZSgpYCByZW1haW5zIHRoZSBkaXJlY3QgMi4wIHJlcGxhY2VtZW50IGZvcgpgbm9ybWFsaXplX2hlYWRlcigpYC4gSW4gbmV3ZXIgMi54IHZlcnNpb25zLCBwcmVmZXIgYEhlYWRlcjo6c3BsaXRMaXN0KClgIGZvcgpuZXcgY29kZS4KCiMjIyMgRGVwcmVjYXRlZCBVUkkgTWV0aG9kcyBSZW1vdmVkCgpUaGUgZGVwcmVjYXRlZCBgVXJpOjpyZXNvbHZlKClgIGFuZCBgVXJpOjpyZW1vdmVEb3RTZWdtZW50cygpYCBtZXRob2RzIHdlcmUKcmVtb3ZlZC4gVXNlIGBVcmlSZXNvbHZlcmAgaW5zdGVhZC4KCmBgYHBocAovLyBCZWZvcmU6CiRyZXNvbHZlZCA9IFVyaTo6cmVzb2x2ZSgkYmFzZSwgJy4uL3BhdGgnKTsKJHBhdGggPSBVcmk6OnJlbW92ZURvdFNlZ21lbnRzKCcvYS8uLi9iJyk7CgovLyBBZnRlcjoKdXNlIEd1enpsZUh0dHBcUHNyN1xVcmlSZXNvbHZlcjsKdXNlIEd1enpsZUh0dHBcUHNyN1xVdGlsczsKCiRyZXNvbHZlZCA9IFVyaVJlc29sdmVyOjpyZXNvbHZlKCRiYXNlLCBVdGlsczo6dXJpRm9yKCcuLi9wYXRoJykpOwokcGF0aCA9IFVyaVJlc29sdmVyOjpyZW1vdmVEb3RTZWdtZW50cygnL2EvLi4vYicpOwpgYGAKCiMjIyMgU3RyaWN0ZXIgVVJJIFZhbGlkYXRpb24KCkd1enpsZSBQU1ItNyAxLnggYXV0b21hdGljYWxseSBmaXhlZCBhIFVSSSB0aGF0IGNvbWJpbmVkIGFuIGF1dGhvcml0eSB3aXRoIGEKcmVsYXRpdmUgcGF0aCBieSBwcmVwZW5kaW5nIGAvYCB0byB0aGUgcGF0aC4gVGhhdCBkZXByZWNhdGVkIGJlaGF2aW9yIHdhcyByZW1vdmVkCmluIDIuMC4gU3VjaCBVUklzIG5vdyB0aHJvdyBgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uYC4KCmBgYHBocAovLyBCZWZvcmU6IGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIC8vZXhhbXBsZS5jb20vZm9vLgokdXJpID0gKG5ldyBVcmkoKSktPndpdGhIb3N0KCdleGFtcGxlLmNvbScpLT53aXRoUGF0aCgnZm9vJyk7CgovLyBBZnRlcjogbWFrZSB0aGUgYWJzb2x1dGUgcGF0aCBleHBsaWNpdC4KJHVyaSA9IChuZXcgVXJpKCkpLT53aXRoSG9zdCgnZXhhbXBsZS5jb20nKS0+d2l0aFBhdGgoJy9mb28nKTsKYGBgCgojIyMjIEhlYWRlciBWYWxpZGF0aW9uCgpIZWFkZXIgbmFtZXMgYXJlIHZhbGlkYXRlZCBtb3JlIHN0cmljdGx5IGFjY29yZGluZyB0byBSRkMgNzIzMCB0b2tlbiBzeW50YXguCk5hbWVzIGNvbnRhaW5pbmcgd2hpdGVzcGFjZSwgYC9gLCBgKGAsIGApYCwgYFxcYCwgb3Igb3RoZXIgaW52YWxpZCBjaGFyYWN0ZXJzIGFyZQpyZWplY3RlZC4KCklmIHlvdSBjb25zdHJ1Y3QgbWVzc2FnZXMgZnJvbSB1bnRydXN0ZWQgb3Igbm9uLXN0YW5kYXJkIGlucHV0LCBub3JtYWxpemUgb3IKcmVqZWN0IGludmFsaWQgaGVhZGVyIG5hbWVzIGJlZm9yZSBjb25zdHJ1Y3RpbmcgYFJlcXVlc3RgLCBgUmVzcG9uc2VgLCBvcgpgU2VydmVyUmVxdWVzdGAgaW5zdGFuY2VzLgoKIyMjIyBRdWVyeSBTdHJpbmcgQm9vbGVhbiBTZXJpYWxpemF0aW9uCgpgUXVlcnk6OmJ1aWxkKClgIG5vdyBzZXJpYWxpemVzIGJvb2xlYW5zIGFzIGAxYCBhbmQgYDBgLCBtYXRjaGluZwpgaHR0cF9idWlsZF9xdWVyeSgpYCBiZWhhdmlvci4KCmBgYHBocApRdWVyeTo6YnVpbGQoWydlbmFibGVkJyA9PiB0cnVlLCAnZGlzYWJsZWQnID0+IGZhbHNlXSk7Ci8vIGVuYWJsZWQ9MSZkaXNhYmxlZD0wCmBgYAoKSW4gY3VycmVudCAyLnggdmVyc2lvbnMsIHBhc3MgYGZhbHNlYCBhcyB0aGUgdGhpcmQgYXJndW1lbnQgaWYgeW91IG5lZWQgdGV4dHVhbApib29sZWFuIHZhbHVlczoKCmBgYHBocApRdWVyeTo6YnVpbGQoWydlbmFibGVkJyA9PiB0cnVlLCAnZGlzYWJsZWQnID0+IGZhbHNlXSwgUEhQX1FVRVJZX1JGQzM5ODYsIGZhbHNlKTsKLy8gZW5hYmxlZD10cnVlJmRpc2FibGVkPWZhbHNlCmBgYAoKIyMjIyBGaW5hbCBTdHJlYW0gYW5kIERlY29yYXRvciBDbGFzc2VzCgpTZXZlcmFsIGNsYXNzZXMgdGhhdCB3ZXJlIGFubm90YXRlZCB3aXRoIGBAZmluYWxgIGluIDEueCBhcmUgZGVjbGFyZWQgYGZpbmFsYCBpbgoyLjA6CgotIGBBcHBlbmRTdHJlYW1gCi0gYEJ1ZmZlclN0cmVhbWAKLSBgQ2FjaGluZ1N0cmVhbWAKLSBgRHJvcHBpbmdTdHJlYW1gCi0gYEZuU3RyZWFtYAotIGBJbmZsYXRlU3RyZWFtYAotIGBMYXp5T3BlblN0cmVhbWAKLSBgTGltaXRTdHJlYW1gCi0gYE11bHRpcGFydFN0cmVhbWAKLSBgTm9TZWVrU3RyZWFtYAotIGBQdW1wU3RyZWFtYAotIGBTdHJlYW1XcmFwcGVyYAoKSWYgeW91ciBjb2RlIGV4dGVuZHMgb25lIG9mIHRoZXNlIGNsYXNzZXMsIHJlcGxhY2UgaW5oZXJpdGFuY2Ugd2l0aCBjb21wb3NpdGlvbi4KRm9yIGN1c3RvbSBzdHJlYW1zLCBpbXBsZW1lbnQgYFBzclxIdHRwXE1lc3NhZ2VcU3RyZWFtSW50ZXJmYWNlYCBkaXJlY3RseSBvciB1c2UKYEd1enpsZUh0dHBcUHNyN1xTdHJlYW1EZWNvcmF0b3JUcmFpdGAgaW4geW91ciBvd24gY2xhc3MuCgpgUmVxdWVzdGAsIGBSZXNwb25zZWAsIGBTZXJ2ZXJSZXF1ZXN0YCwgYFN0cmVhbWAsIGBVcGxvYWRlZEZpbGVgLCBhbmQgYFVyaWAgcmVtYWluCmV4dGVuZGFibGUgaW4gMi4wLCBidXQgb3ZlcnJpZGRlbiBtZXRob2RzIG11c3QgaGF2ZSBjb21wYXRpYmxlIHNpZ25hdHVyZXMuCgojIyMjIFB1YmxpYyBDb25zdGFudHMgYW5kIEludGVybmFsIERldGFpbHMKClNvbWUgY29uc3RhbnRzIHRoYXQgd2VyZSBwdWJsaWMgaW4gMS54IGFyZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGluIDIuMDoKCi0gYFN0cmVhbTo6UkVBREFCTEVfTU9ERVNgCi0gYFN0cmVhbTo6V1JJVEFCTEVfTU9ERVNgCi0gYFVyaTo6SFRUUF9ERUZBVUxUX0hPU1RgCgpJZiB5b3VyIGNvZGUgdXNlZCB0aGVzZSBjb25zdGFudHMsIGRlZmluZSBhcHBsaWNhdGlvbi1zcGVjaWZpYyBjb25zdGFudHMgaW5zdGVhZApvZiBkZXBlbmRpbmcgb24gcGFja2FnZSBpbnRlcm5hbHMuCgojIyMjIFN0cmVhbSBCZWhhdmlvciBDaGFuZ2VzCgpgQnVmZmVyU3RyZWFtOjp3cml0ZSgpYCByZXR1cm5zIGAwYCBpbnN0ZWFkIG9mIGBmYWxzZWAgd2hlbiB0aGUgYnVmZmVyIGV4Y2VlZHMKaXRzIGhpZ2gtd2F0ZXIgbWFyay4gVGhpcyBrZWVwcyB0aGUgbWV0aG9kIGNvbXBhdGlibGUgd2l0aCB0aGUgYGludGAgcmV0dXJuIHR5cGUKZnJvbSBgU3RyZWFtSW50ZXJmYWNlOjp3cml0ZSgpYC4KClNldmVyYWwgc3RyZWFtIGBfX3RvU3RyaW5nKClgIGltcGxlbWVudGF0aW9ucyBub3cgY2F0Y2ggYFRocm93YWJsZWAuIE9uIFBIUCA3LjQKYW5kIG5ld2VyLCBleGNlcHRpb25zIHRocm93biBkdXJpbmcgc3RyaW5naWZpY2F0aW9uIGFyZSByZXRocm93bi4gQXZvaWQgcmVseWluZwpvbiBgKHN0cmluZykgJHN0cmVhbWAgdG8gaGlkZSByZWFkIGZhaWx1cmVzOyBjYWxsIGBnZXRDb250ZW50cygpYCBvciBgcmVhZCgpYCBhbmQKaGFuZGxlIGV4Y2VwdGlvbnMgd2hlbiBmYWlsdXJlcyBhcmUgcG9zc2libGUuCgojIyMjIFBTUi0xNyBGYWN0b3JpZXMKCkd1enpsZSBQU1ItNyAyLjAgYWRkcyBgR3V6emxlSHR0cFxQc3I3XEh0dHBGYWN0b3J5YCwgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlClBTUi0xNyBmYWN0b3J5IGludGVyZmFjZXMgZnJvbSBgcHNyL2h0dHAtZmFjdG9yeWAuIFRoaXMgaXMgYWRkaXRpdmUsIGJ1dCBpdCBpcwp0aGUgcmVhc29uIGZvciB0aGUgbmV3IHJlcXVpcmVkIGRlcGVuZGVuY3kuCgpGb3IgdGhlIGZ1bGwgMi4wIGRpZmYsIHNlZQpodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3BzcjcvY29tcGFyZS8xLjguMS4uLjIuMC4wLgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICJuYW1lIjogIm1pbmlzaGxpbmsvd2ViLXB1c2giLAogICJ0eXBlIjogImxpYnJhcnkiLAogICJkZXNjcmlwdGlvbiI6ICJXZWIgUHVzaCBsaWJyYXJ5IGZvciBQSFAiLAogICJrZXl3b3JkcyI6IFsicHVzaCIsICJub3RpZmljYXRpb25zIiwgIndlYiIsICJXZWJQdXNoIiwgIlB1c2ggQVBJIl0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocCIsCiAgImxpY2Vuc2UiOiAiTUlUIiwKICAiYXV0aG9ycyI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiTG91aXMgTGFncmFuZ2UiLAogICAgICAiZW1haWwiOiAibGFncmFuZ2UubG91aXNAZ21haWwuY29tIiwKICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NaW5pc2hsaW5rIgogICAgfQogIF0sCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdDp1bml0IjogIi4vdmVuZG9yL2Jpbi9waHB1bml0IC0tY29sb3IiLAogICAgInRlc3Q6dHlwaW5nIjogIi4vdmVuZG9yL2Jpbi9waHBzdGFuIGFuYWx5c2UiLAogICAgInRlc3Q6c3ludGF4IjogIi4vdmVuZG9yL2Jpbi9waHAtY3MtZml4ZXIgZml4IC4vc3JjIC0tZHJ5LXJ1biAtLXN0b3Atb24tdmlvbGF0aW9uIC0tdXNpbmctY2FjaGU9bm8iCiAgfSwKICAicmVxdWlyZSI6IHsKICAgICJwaHAiOiAiPj03LjIiLAogICAgImV4dC1jdXJsIjogIioiLAogICAgImV4dC1qc29uIjogIioiLAogICAgImV4dC1tYnN0cmluZyI6ICIqIiwKICAgICJleHQtb3BlbnNzbCI6ICIqIiwKICAgICJndXp6bGVodHRwL2d1enpsZSI6ICJeNy4wLjF8XjYuMiIsCiAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUiOiAiXjIuMCIsCiAgICAid2ViLXRva2VuL2p3dC1rZXktbWdtdCI6ICJeMi4wIiwKICAgICJ3ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZWNkc2EiOiAiXjIuMCIsCiAgICAid2ViLXRva2VuL2p3dC11dGlsLWVjYyI6ICJeMi4wIgogIH0sCiAgInJlcXVpcmUtZGV2IjogewogICAgInBocHVuaXQvcGhwdW5pdCI6ICJeOC4wfF45LjAiLAogICAgInBocHN0YW4vcGhwc3RhbiI6ICJeMC4xMXxeMC4xMiIsCiAgICAiZnJpZW5kc29mcGhwL3BocC1jcy1maXhlciI6ICJeMi4xNCIKICB9LAogICJhdXRvbG9hZCI6IHsKICAgICJwc3ItNCIgOiB7CiAgICAgICJNaW5pc2hsaW5rXFxXZWJQdXNoXFwiIDogInNyYyIKICAgIH0KICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE1IExvdWlzIExhZ3JhbmdlCgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbApjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/phpstan.neon</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[cGFyYW1ldGVyczoKICAgIGxldmVsOiA3CiAgICBwYXRoczoKICAgICAgICAtIHNyYwogICAgY2hlY2tNaXNzaW5nSXRlcmFibGVWYWx1ZVR5cGU6IGZhbHNlCiAgICBpZ25vcmVFcnJvcnM6CiAgICAgICAgLSAnI1VucmVhY2hhYmxlIHN0YXRlbWVudCBcLSBjb2RlIGFib3ZlIGFsd2F5cyB0ZXJtaW5hdGVzXC4jJw==]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/Encryption.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYlB1c2ggbGlicmFyeS4KICoKICogKGMpIExvdWlzIExhZ3JhbmdlIDxsYWdyYW5nZS5sb3Vpc0BnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBNaW5pc2hsaW5rXFdlYlB1c2g7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEJyaWNrXE1hdGhcQmlnSW50ZWdlcjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEVjY1xOaXN0Q3VydmU7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXFV0aWxcRWNjXFByaXZhdGVLZXk7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXFV0aWxcRUNLZXk7CgpjbGFzcyBFbmNyeXB0aW9uCnsKICAgIHB1YmxpYyBjb25zdCBNQVhfUEFZTE9BRF9MRU5HVEggPSA0MDc4OwogICAgcHVibGljIGNvbnN0IE1BWF9DT01QQVRJQklMSVRZX1BBWUxPQURfTEVOR1RIID0gMzA1MjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBheWxvYWQKICAgICAqIEBwYXJhbSBpbnQgJG1heExlbmd0aFRvUGFkCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50RW5jb2RpbmcKICAgICAqIEByZXR1cm4gc3RyaW5nIHBhZGRlZCBwYXlsb2FkIChwbGFpbnRleHQpCiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhZFBheWxvYWQoc3RyaW5nICRwYXlsb2FkLCBpbnQgJG1heExlbmd0aFRvUGFkLCBzdHJpbmcgJGNvbnRlbnRFbmNvZGluZyk6IHN0cmluZwogICAgewogICAgICAgICRwYXlsb2FkTGVuID0gVXRpbHM6OnNhZmVTdHJsZW4oJHBheWxvYWQpOwogICAgICAgICRwYWRMZW4gPSAkbWF4TGVuZ3RoVG9QYWQgPyAkbWF4TGVuZ3RoVG9QYWQgLSAkcGF5bG9hZExlbiA6IDA7CgogICAgICAgIGlmICgkY29udGVudEVuY29kaW5nID09PSAiYWVzZ2NtIikgewogICAgICAgICAgICByZXR1cm4gcGFjaygnbionLCAkcGFkTGVuKS5zdHJfcGFkKCRwYXlsb2FkLCAkcGFkTGVuICsgJHBheWxvYWRMZW4sIGNocigwKSwgU1RSX1BBRF9MRUZUKTsKICAgICAgICB9IGVsc2VpZiAoJGNvbnRlbnRFbmNvZGluZyA9PT0gImFlczEyOGdjbSIpIHsKICAgICAgICAgICAgcmV0dXJuIHN0cl9wYWQoJHBheWxvYWQuY2hyKDIpLCAkcGFkTGVuICsgJHBheWxvYWRMZW4sIGNocigwKSwgU1RSX1BBRF9SSUdIVCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbigiVGhpcyBjb250ZW50IGVuY29kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXlsb2FkIFdpdGggcGFkZGluZwogICAgICogQHBhcmFtIHN0cmluZyAkdXNlclB1YmxpY0tleSBCYXNlIDY0IGVuY29kZWQgKE1JTUUgb3IgVVJMLXNhZmUpCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1c2VyQXV0aFRva2VuIEJhc2UgNjQgZW5jb2RlZCAoTUlNRSBvciBVUkwtc2FmZSkKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbnRlbnRFbmNvZGluZwogICAgICogQHJldHVybiBhcnJheQogICAgICoKICAgICAqIEB0aHJvd3MgXEVycm9yRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZW5jcnlwdChzdHJpbmcgJHBheWxvYWQsIHN0cmluZyAkdXNlclB1YmxpY0tleSwgc3RyaW5nICR1c2VyQXV0aFRva2VuLCBzdHJpbmcgJGNvbnRlbnRFbmNvZGluZyk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmRldGVybWluaXN0aWNFbmNyeXB0KAogICAgICAgICAgICAkcGF5bG9hZCwKICAgICAgICAgICAgJHVzZXJQdWJsaWNLZXksCiAgICAgICAgICAgICR1c2VyQXV0aFRva2VuLAogICAgICAgICAgICAkY29udGVudEVuY29kaW5nLAogICAgICAgICAgICBzZWxmOjpjcmVhdGVMb2NhbEtleU9iamVjdCgpLAogICAgICAgICAgICByYW5kb21fYnl0ZXMoMTYpCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBheWxvYWQKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVzZXJQdWJsaWNLZXkKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVzZXJBdXRoVG9rZW4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbnRlbnRFbmNvZGluZwogICAgICogQHBhcmFtIGFycmF5ICRsb2NhbEtleU9iamVjdAogICAgICogQHBhcmFtIHN0cmluZyAkc2FsdAogICAgICogQHJldHVybiBhcnJheQogICAgICoKICAgICAqIEB0aHJvd3MgXEVycm9yRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGV0ZXJtaW5pc3RpY0VuY3J5cHQoc3RyaW5nICRwYXlsb2FkLCBzdHJpbmcgJHVzZXJQdWJsaWNLZXksIHN0cmluZyAkdXNlckF1dGhUb2tlbiwgc3RyaW5nICRjb250ZW50RW5jb2RpbmcsIGFycmF5ICRsb2NhbEtleU9iamVjdCwgc3RyaW5nICRzYWx0KTogYXJyYXkKICAgIHsKICAgICAgICAkdXNlclB1YmxpY0tleSA9IEJhc2U2NFVybDo6ZGVjb2RlKCR1c2VyUHVibGljS2V5KTsKICAgICAgICAkdXNlckF1dGhUb2tlbiA9IEJhc2U2NFVybDo6ZGVjb2RlKCR1c2VyQXV0aFRva2VuKTsKCiAgICAgICAgLy8gZ2V0IGxvY2FsIGtleSBwYWlyCiAgICAgICAgaWYgKGNvdW50KCRsb2NhbEtleU9iamVjdCkgPT09IDEpIHsKICAgICAgICAgICAgLyoqIEB2YXIgSldLICRsb2NhbEp3ayAqLwogICAgICAgICAgICAkbG9jYWxKd2sgPSBjdXJyZW50KCRsb2NhbEtleU9iamVjdCk7CiAgICAgICAgICAgICRsb2NhbFB1YmxpY0tleSA9IGhleDJiaW4oVXRpbHM6OnNlcmlhbGl6ZVB1YmxpY0tleUZyb21KV0soJGxvY2FsSndrKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLyoqIEB2YXIgUHJpdmF0ZUtleSAkbG9jYWxQcml2YXRlS2V5T2JqZWN0ICovCiAgICAgICAgICAgIGxpc3QoJGxvY2FsUHVibGljS2V5T2JqZWN0LCAkbG9jYWxQcml2YXRlS2V5T2JqZWN0KSA9ICRsb2NhbEtleU9iamVjdDsKICAgICAgICAgICAgJGxvY2FsUHVibGljS2V5ID0gaGV4MmJpbihVdGlsczo6c2VyaWFsaXplUHVibGljS2V5KCRsb2NhbFB1YmxpY0tleU9iamVjdCkpOwogICAgICAgICAgICAkbG9jYWxKd2sgPSBuZXcgSldLKFsKICAgICAgICAgICAgICAgICdrdHknID0+ICdFQycsCiAgICAgICAgICAgICAgICAnY3J2JyA9PiAnUC0yNTYnLAogICAgICAgICAgICAgICAgJ2QnID0+IEJhc2U2NFVybDo6ZW5jb2RlKCRsb2NhbFByaXZhdGVLZXlPYmplY3QtPmdldFNlY3JldCgpLT50b0J5dGVzKGZhbHNlKSksCiAgICAgICAgICAgICAgICAneCcgPT4gQmFzZTY0VXJsOjplbmNvZGUoJGxvY2FsUHVibGljS2V5T2JqZWN0WzBdKSwKICAgICAgICAgICAgICAgICd5JyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkbG9jYWxQdWJsaWNLZXlPYmplY3RbMV0pLAogICAgICAgICAgICBdKTsKICAgICAgICB9CiAgICAgICAgaWYgKCEkbG9jYWxQdWJsaWNLZXkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignRmFpbGVkIHRvIGNvbnZlcnQgbG9jYWwgcHVibGljIGtleSBmcm9tIGhleGFkZWNpbWFsIHRvIGJpbmFyeScpOwogICAgICAgIH0KCiAgICAgICAgLy8gZ2V0IHVzZXIgcHVibGljIGtleSBvYmplY3QKICAgICAgICBbJHVzZXJQdWJsaWNLZXlPYmplY3RYLCAkdXNlclB1YmxpY0tleU9iamVjdFldID0gVXRpbHM6OnVuc2VyaWFsaXplUHVibGljS2V5KCR1c2VyUHVibGljS2V5KTsKICAgICAgICAkdXNlckp3ayA9IG5ldyBKV0soWwogICAgICAgICAgICAna3R5JyA9PiAnRUMnLAogICAgICAgICAgICAnY3J2JyA9PiAnUC0yNTYnLAogICAgICAgICAgICAneCcgPT4gQmFzZTY0VXJsOjplbmNvZGUoJHVzZXJQdWJsaWNLZXlPYmplY3RYKSwKICAgICAgICAgICAgJ3knID0+IEJhc2U2NFVybDo6ZW5jb2RlKCR1c2VyUHVibGljS2V5T2JqZWN0WSksCiAgICAgICAgXSk7CgogICAgICAgIC8vIGdldCBzaGFyZWQgc2VjcmV0IGZyb20gdXNlciBwdWJsaWMga2V5IGFuZCBsb2NhbCBwcml2YXRlIGtleQoKICAgICAgICAkc2hhcmVkU2VjcmV0ID0gc2VsZjo6Y2FsY3VsYXRlQWdyZWVtZW50S2V5KCRsb2NhbEp3aywgJHVzZXJKd2spOwoKICAgICAgICAkc2hhcmVkU2VjcmV0ID0gc3RyX3BhZCgkc2hhcmVkU2VjcmV0LCAzMiwgY2hyKDApLCBTVFJfUEFEX0xFRlQpOwogICAgICAgIGlmICghJHNoYXJlZFNlY3JldCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yRXhjZXB0aW9uKCdGYWlsZWQgdG8gY29udmVydCBzaGFyZWQgc2VjcmV0IGZyb20gaGV4YWRlY2ltYWwgdG8gYmluYXJ5Jyk7CiAgICAgICAgfQoKICAgICAgICAvLyBzZWN0aW9uIDQuMwogICAgICAgICRpa20gPSBzZWxmOjpnZXRJS00oJHVzZXJBdXRoVG9rZW4sICR1c2VyUHVibGljS2V5LCAkbG9jYWxQdWJsaWNLZXksICRzaGFyZWRTZWNyZXQsICRjb250ZW50RW5jb2RpbmcpOwoKICAgICAgICAvLyBzZWN0aW9uIDQuMgogICAgICAgICRjb250ZXh0ID0gc2VsZjo6Y3JlYXRlQ29udGV4dCgkdXNlclB1YmxpY0tleSwgJGxvY2FsUHVibGljS2V5LCAkY29udGVudEVuY29kaW5nKTsKCiAgICAgICAgLy8gZGVyaXZlIHRoZSBDb250ZW50IEVuY3J5cHRpb24gS2V5CiAgICAgICAgJGNvbnRlbnRFbmNyeXB0aW9uS2V5SW5mbyA9IHNlbGY6OmNyZWF0ZUluZm8oJGNvbnRlbnRFbmNvZGluZywgJGNvbnRleHQsICRjb250ZW50RW5jb2RpbmcpOwogICAgICAgICRjb250ZW50RW5jcnlwdGlvbktleSA9IHNlbGY6OmhrZGYoJHNhbHQsICRpa20sICRjb250ZW50RW5jcnlwdGlvbktleUluZm8sIDE2KTsKCiAgICAgICAgLy8gc2VjdGlvbiAzLjMsIGRlcml2ZSB0aGUgbm9uY2UKICAgICAgICAkbm9uY2VJbmZvID0gc2VsZjo6Y3JlYXRlSW5mbygnbm9uY2UnLCAkY29udGV4dCwgJGNvbnRlbnRFbmNvZGluZyk7CiAgICAgICAgJG5vbmNlID0gc2VsZjo6aGtkZigkc2FsdCwgJGlrbSwgJG5vbmNlSW5mbywgMTIpOwoKICAgICAgICAvLyBlbmNyeXB0CiAgICAgICAgLy8gIlRoZSBhZGRpdGlvbmFsIGRhdGEgcGFzc2VkIHRvIGVhY2ggaW52b2NhdGlvbiBvZiBBRUFEX0FFU18xMjhfR0NNIGlzIGEgemVyby1sZW5ndGggb2N0ZXQgc2VxdWVuY2UuIgogICAgICAgICR0YWcgPSAnJzsKICAgICAgICAkZW5jcnlwdGVkVGV4dCA9IG9wZW5zc2xfZW5jcnlwdCgkcGF5bG9hZCwgJ2Flcy0xMjgtZ2NtJywgJGNvbnRlbnRFbmNyeXB0aW9uS2V5LCBPUEVOU1NMX1JBV19EQVRBLCAkbm9uY2UsICR0YWcpOwoKICAgICAgICAvLyByZXR1cm4gdmFsdWVzIGluIHVybCBzYWZlIGJhc2U2NAogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICdsb2NhbFB1YmxpY0tleScgPT4gJGxvY2FsUHVibGljS2V5LAogICAgICAgICAgICAnc2FsdCcgPT4gJHNhbHQsCiAgICAgICAgICAgICdjaXBoZXJUZXh0JyA9PiAkZW5jcnlwdGVkVGV4dC4kdGFnLAogICAgICAgIF07CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRDb250ZW50Q29kaW5nSGVhZGVyKHN0cmluZyAkc2FsdCwgc3RyaW5nICRsb2NhbFB1YmxpY0tleSwgc3RyaW5nICRjb250ZW50RW5jb2RpbmcpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJGNvbnRlbnRFbmNvZGluZyA9PT0gImFlczEyOGdjbSIpIHsKICAgICAgICAgICAgcmV0dXJuICRzYWx0CiAgICAgICAgICAgICAgICAucGFjaygnTionLCA0MDk2KQogICAgICAgICAgICAgICAgLnBhY2soJ0MqJywgVXRpbHM6OnNhZmVTdHJsZW4oJGxvY2FsUHVibGljS2V5KSkKICAgICAgICAgICAgICAgIC4kbG9jYWxQdWJsaWNLZXk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gIiI7CiAgICB9CgogICAgLyoqCiAgICAgKiBITUFDLWJhc2VkIEV4dHJhY3QtYW5kLUV4cGFuZCBLZXkgRGVyaXZhdGlvbiBGdW5jdGlvbiAoSEtERikuCiAgICAgKgogICAgICogVGhpcyBpcyB1c2VkIHRvIGRlcml2ZSBhIHNlY3VyZSBlbmNyeXB0aW9uIGtleSBmcm9tIGEgbW9zdGx5LXNlY3VyZSBzaGFyZWQKICAgICAqIHNlY3JldC4KICAgICAqCiAgICAgKiBUaGlzIGlzIGEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBIS0RGIHRhaWxvcmVkIHRvIG91ciBzcGVjaWZpYyBwdXJwb3Nlcy4KICAgICAqIEluIHBhcnRpY3VsYXIsIGZvciB1cyB0aGUgdmFsdWUgb2YgTiB3aWxsIGFsd2F5cyBiZSAxLCBhbmQgdGh1cyBUIGFsd2F5cwogICAgICogZXF1YWxzIEhNQUMtSGFzaChQUkssIGluZm8gfCAweDAxKS4KICAgICAqCiAgICAgKiBTZWUge0BsaW5rIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM1ODY5LnR4dH0KICAgICAqIEZyb20ge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWUvcHVzaC1lbmNyeXB0aW9uLW5vZGUvYmxvYi9tYXN0ZXIvc3JjL2VuY3J5cHQuanN9CiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc2FsdCAgIEEgbm9uLXNlY3JldCByYW5kb20gdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmcgJGlrbSAgICBJbnB1dCBrZXlpbmcgbWF0ZXJpYWwKICAgICAqIEBwYXJhbSBzdHJpbmcgJGluZm8gICBBcHBsaWNhdGlvbi1zcGVjaWZpYyBjb250ZXh0CiAgICAgKiBAcGFyYW0gaW50ICAgICRsZW5ndGggVGhlIGxlbmd0aCAoaW4gYnl0ZXMpIG9mIHRoZSByZXF1aXJlZCBvdXRwdXQga2V5CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaGtkZihzdHJpbmcgJHNhbHQsIHN0cmluZyAkaWttLCBzdHJpbmcgJGluZm8sIGludCAkbGVuZ3RoKTogc3RyaW5nCiAgICB7CiAgICAgICAgLy8gZXh0cmFjdAogICAgICAgICRwcmsgPSBoYXNoX2htYWMoJ3NoYTI1NicsICRpa20sICRzYWx0LCB0cnVlKTsKCiAgICAgICAgLy8gZXhwYW5kCiAgICAgICAgcmV0dXJuIG1iX3N1YnN0cihoYXNoX2htYWMoJ3NoYTI1NicsICRpbmZvLmNocigxKSwgJHByaywgdHJ1ZSksIDAsICRsZW5ndGgsICc4Yml0Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgY29udGV4dCBmb3IgZGVyaXZpbmcgZW5jcnlwdGlvbiBwYXJhbWV0ZXJzLgogICAgICogU2VlIHNlY3Rpb24gNC4yIG9mCiAgICAgKiB7QGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHR0cGJpcy1lbmNyeXB0aW9uLWVuY29kaW5nLTAwfQogICAgICogRnJvbSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0dvb2dsZUNocm9tZS9wdXNoLWVuY3J5cHRpb24tbm9kZS9ibG9iL21hc3Rlci9zcmMvZW5jcnlwdC5qc30uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkY2xpZW50UHVibGljS2V5IFRoZSBjbGllbnQncyBwdWJsaWMga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRzZXJ2ZXJQdWJsaWNLZXkgT3VyIHB1YmxpYyBrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIG51bGx8c3RyaW5nCiAgICAgKgogICAgICogQHRocm93cyBcRXJyb3JFeGNlcHRpb24KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlQ29udGV4dChzdHJpbmcgJGNsaWVudFB1YmxpY0tleSwgc3RyaW5nICRzZXJ2ZXJQdWJsaWNLZXksIHN0cmluZyAkY29udGVudEVuY29kaW5nKTogP3N0cmluZwogICAgewogICAgICAgIGlmICgkY29udGVudEVuY29kaW5nID09PSAiYWVzMTI4Z2NtIikgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmIChVdGlsczo6c2FmZVN0cmxlbigkY2xpZW50UHVibGljS2V5KSAhPT0gNjUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignSW52YWxpZCBjbGllbnQgcHVibGljIGtleSBsZW5ndGgnKTsKICAgICAgICB9CgogICAgICAgIC8vIFRoaXMgb25lIHNob3VsZCBuZXZlciBoYXBwZW4sIGJlY2F1c2UgaXQncyBvdXIgY29kZSB0aGF0IGdlbmVyYXRlcyB0aGUga2V5CiAgICAgICAgaWYgKFV0aWxzOjpzYWZlU3RybGVuKCRzZXJ2ZXJQdWJsaWNLZXkpICE9PSA2NSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yRXhjZXB0aW9uKCdJbnZhbGlkIHNlcnZlciBwdWJsaWMga2V5IGxlbmd0aCcpOwogICAgICAgIH0KCiAgICAgICAgJGxlbiA9IGNocigwKS4nQSc7IC8vIDY1IGFzIFVpbnQxNkJFCgogICAgICAgIHJldHVybiBjaHIoMCkuJGxlbi4kY2xpZW50UHVibGljS2V5LiRsZW4uJHNlcnZlclB1YmxpY0tleTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gaW5mbyByZWNvcmQuIFNlZSBzZWN0aW9ucyAzLjIgYW5kIDMuMyBvZgogICAgICoge0BsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWh0dHBiaXMtZW5jcnlwdGlvbi1lbmNvZGluZy0wMH0KICAgICAqIEZyb20ge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWUvcHVzaC1lbmNyeXB0aW9uLW5vZGUvYmxvYi9tYXN0ZXIvc3JjL2VuY3J5cHQuanN9LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgVGhlIHR5cGUgb2YgdGhlIGluZm8gcmVjb3JkCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGNvbnRleHQgVGhlIGNvbnRleHQgZm9yIHRoZSByZWNvcmQKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbnRlbnRFbmNvZGluZwogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVJbmZvKHN0cmluZyAkdHlwZSwgP3N0cmluZyAkY29udGV4dCwgc3RyaW5nICRjb250ZW50RW5jb2RpbmcpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJGNvbnRlbnRFbmNvZGluZyA9PT0gImFlc2djbSIpIHsKICAgICAgICAgICAgaWYgKCEkY29udGV4dCkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignQ29udGV4dCBtdXN0IGV4aXN0Jyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChVdGlsczo6c2FmZVN0cmxlbigkY29udGV4dCkgIT09IDEzNSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignQ29udGV4dCBhcmd1bWVudCBoYXMgaW52YWxpZCBzaXplJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAnQ29udGVudC1FbmNvZGluZzogJy4kdHlwZS5jaHIoMCkuJ1AtMjU2Jy4kY29udGV4dDsKICAgICAgICB9IGVsc2VpZiAoJGNvbnRlbnRFbmNvZGluZyA9PT0gImFlczEyOGdjbSIpIHsKICAgICAgICAgICAgcmV0dXJuICdDb250ZW50LUVuY29kaW5nOiAnLiR0eXBlLmNocigwKTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ1RoaXMgY29udGVudCBlbmNvZGluZyBpcyBub3Qgc3VwcG9ydGVkLicpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVMb2NhbEtleU9iamVjdCgpOiBhcnJheQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVMb2NhbEtleU9iamVjdFVzaW5nT3BlblNTTCgpOwogICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZUxvY2FsS2V5T2JqZWN0VXNpbmdQdXJlUGhwTWV0aG9kKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVMb2NhbEtleU9iamVjdFVzaW5nUHVyZVBocE1ldGhvZCgpOiBhcnJheQogICAgewogICAgICAgICRjdXJ2ZSA9IE5pc3RDdXJ2ZTo6Y3VydmUyNTYoKTsKICAgICAgICAkcHJpdmF0ZUtleSA9ICRjdXJ2ZS0+Y3JlYXRlUHJpdmF0ZUtleSgpOwogICAgICAgICRwdWJsaWNLZXkgPSAkY3VydmUtPmNyZWF0ZVB1YmxpY0tleSgkcHJpdmF0ZUtleSk7CgogICAgICAgIGlmICgkcHVibGljS2V5LT5nZXRQb2ludCgpLT5nZXRYKCkgaW5zdGFuY2VvZiBCaWdJbnRlZ2VyKSB7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICBuZXcgSldLKFsKICAgICAgICAgICAgICAgICAgICAna3R5JyA9PiAnRUMnLAogICAgICAgICAgICAgICAgICAgICdjcnYnID0+ICdQLTI1NicsCiAgICAgICAgICAgICAgICAgICAgJ3gnID0+IEJhc2U2NFVybDo6ZW5jb2RlKHNlbGY6OmFkZE51bGxQYWRkaW5nKCRwdWJsaWNLZXktPmdldFBvaW50KCktPmdldFgoKS0+dG9CeXRlcyhmYWxzZSkpKSwKICAgICAgICAgICAgICAgICAgICAneScgPT4gQmFzZTY0VXJsOjplbmNvZGUoc2VsZjo6YWRkTnVsbFBhZGRpbmcoJHB1YmxpY0tleS0+Z2V0UG9pbnQoKS0+Z2V0WSgpLT50b0J5dGVzKGZhbHNlKSkpLAogICAgICAgICAgICAgICAgICAgICdkJyA9PiBCYXNlNjRVcmw6OmVuY29kZShzZWxmOjphZGROdWxsUGFkZGluZygkcHJpdmF0ZUtleS0+Z2V0U2VjcmV0KCktPnRvQnl0ZXMoZmFsc2UpKSksCiAgICAgICAgICAgICAgICBdKQogICAgICAgICAgICBdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgbmV3IEpXSyhbCiAgICAgICAgICAgICAgICAna3R5JyA9PiAnRUMnLAogICAgICAgICAgICAgICAgJ2NydicgPT4gJ1AtMjU2JywKICAgICAgICAgICAgICAgICd4JyA9PiBCYXNlNjRVcmw6OmVuY29kZShzZWxmOjphZGROdWxsUGFkZGluZyhoZXgyYmluKGdtcF9zdHJ2YWwoJHB1YmxpY0tleS0+Z2V0UG9pbnQoKS0+Z2V0WCgpLCAxNikpKSksCiAgICAgICAgICAgICAgICAneScgPT4gQmFzZTY0VXJsOjplbmNvZGUoc2VsZjo6YWRkTnVsbFBhZGRpbmcoaGV4MmJpbihnbXBfc3RydmFsKCRwdWJsaWNLZXktPmdldFBvaW50KCktPmdldFkoKSwgMTYpKSkpLAogICAgICAgICAgICAgICAgJ2QnID0+IEJhc2U2NFVybDo6ZW5jb2RlKHNlbGY6OmFkZE51bGxQYWRkaW5nKGhleDJiaW4oZ21wX3N0cnZhbCgkcHJpdmF0ZUtleS0+Z2V0U2VjcmV0KCksIDE2KSkpKSwKICAgICAgICAgICAgXSkKICAgICAgICBdOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVMb2NhbEtleU9iamVjdFVzaW5nT3BlblNTTCgpOiBhcnJheQogICAgewogICAgICAgICRrZXlSZXNvdXJjZSA9IG9wZW5zc2xfcGtleV9uZXcoWwogICAgICAgICAgICAnY3VydmVfbmFtZScgICAgICAgPT4gJ3ByaW1lMjU2djEnLAogICAgICAgICAgICAncHJpdmF0ZV9rZXlfdHlwZScgPT4gT1BFTlNTTF9LRVlUWVBFX0VDLAogICAgICAgIF0pOwoKICAgICAgICBpZiAoISRrZXlSZXNvdXJjZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byBjcmVhdGUgdGhlIGtleScpOwogICAgICAgIH0KCiAgICAgICAgJGRldGFpbHMgPSBvcGVuc3NsX3BrZXlfZ2V0X2RldGFpbHMoJGtleVJlc291cmNlKTsKICAgICAgICBpZiAoUEhQX01BSk9SX1ZFUlNJT04gPCA4KSB7CiAgICAgICAgICAgIG9wZW5zc2xfcGtleV9mcmVlKCRrZXlSZXNvdXJjZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISRkZXRhaWxzKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVW5hYmxlIHRvIGdldCB0aGUga2V5IGRldGFpbHMnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgIG5ldyBKV0soWwogICAgICAgICAgICAgICAgJ2t0eScgPT4gJ0VDJywKICAgICAgICAgICAgICAgICdjcnYnID0+ICdQLTI1NicsCiAgICAgICAgICAgICAgICAneCcgPT4gQmFzZTY0VXJsOjplbmNvZGUoc2VsZjo6YWRkTnVsbFBhZGRpbmcoJGRldGFpbHNbJ2VjJ11bJ3gnXSkpLAogICAgICAgICAgICAgICAgJ3knID0+IEJhc2U2NFVybDo6ZW5jb2RlKHNlbGY6OmFkZE51bGxQYWRkaW5nKCRkZXRhaWxzWydlYyddWyd5J10pKSwKICAgICAgICAgICAgICAgICdkJyA9PiBCYXNlNjRVcmw6OmVuY29kZShzZWxmOjphZGROdWxsUGFkZGluZygkZGV0YWlsc1snZWMnXVsnZCddKSksCiAgICAgICAgICAgIF0pCiAgICAgICAgXTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVzZXJBdXRoVG9rZW4KICAgICAqIEBwYXJhbSBzdHJpbmcgJHVzZXJQdWJsaWNLZXkKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxvY2FsUHVibGljS2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRzaGFyZWRTZWNyZXQKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbnRlbnRFbmNvZGluZwogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqIEB0aHJvd3MgXEVycm9yRXhjZXB0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldElLTShzdHJpbmcgJHVzZXJBdXRoVG9rZW4sIHN0cmluZyAkdXNlclB1YmxpY0tleSwgc3RyaW5nICRsb2NhbFB1YmxpY0tleSwgc3RyaW5nICRzaGFyZWRTZWNyZXQsIHN0cmluZyAkY29udGVudEVuY29kaW5nKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCFlbXB0eSgkdXNlckF1dGhUb2tlbikpIHsKICAgICAgICAgICAgaWYgKCRjb250ZW50RW5jb2RpbmcgPT09ICJhZXNnY20iKSB7CiAgICAgICAgICAgICAgICAkaW5mbyA9ICdDb250ZW50LUVuY29kaW5nOiBhdXRoJy5jaHIoMCk7CiAgICAgICAgICAgIH0gZWxzZWlmICgkY29udGVudEVuY29kaW5nID09PSAiYWVzMTI4Z2NtIikgewogICAgICAgICAgICAgICAgJGluZm8gPSAiV2ViUHVzaDogaW5mbyIuY2hyKDApLiR1c2VyUHVibGljS2V5LiRsb2NhbFB1YmxpY0tleTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oIlRoaXMgY29udGVudCBlbmNvZGluZyBpcyBub3Qgc3VwcG9ydGVkIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBzZWxmOjpoa2RmKCR1c2VyQXV0aFRva2VuLCAkc2hhcmVkU2VjcmV0LCAkaW5mbywgMzIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzaGFyZWRTZWNyZXQ7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY2FsY3VsYXRlQWdyZWVtZW50S2V5KEpXSyAkcHJpdmF0ZV9rZXksIEpXSyAkcHVibGljX2tleSk6IHN0cmluZwogICAgewogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ29wZW5zc2xfcGtleV9kZXJpdmUnKSkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJHB1YmxpY1BlbSA9IEVDS2V5Ojpjb252ZXJ0UHVibGljS2V5VG9QRU0oJHB1YmxpY19rZXkpOwogICAgICAgICAgICAgICAgJHByaXZhdGVQZW0gPSBFQ0tleTo6Y29udmVydFByaXZhdGVLZXlUb1BFTSgkcHJpdmF0ZV9rZXkpOwoKICAgICAgICAgICAgICAgICRyZXN1bHQgPSBvcGVuc3NsX3BrZXlfZGVyaXZlKCRwdWJsaWNQZW0sICRwcml2YXRlUGVtLCAyNTYpOyAvLyBAcGhwc3Rhbi1pZ25vcmUtbGluZQogICAgICAgICAgICAgICAgaWYgKCRyZXN1bHQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1VuYWJsZSB0byBjb21wdXRlIHRoZSBhZ3JlZW1lbnQga2V5Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkdGhyb3dhYmxlKSB7CiAgICAgICAgZXJyb3JfbG9nKCdbTUFTXSAnIC4gJGUtPmdldE1lc3NhZ2UoKSk7CiAgICB9CiAgICAgICAgfQoKCiAgICAgICAgJGN1cnZlID0gTmlzdEN1cnZlOjpjdXJ2ZTI1NigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRyZWNfeCA9IHNlbGY6OmNvbnZlcnRCYXNlNjRUb0JpZ0ludGVnZXIoJHB1YmxpY19rZXktPmdldCgneCcpKTsKICAgICAgICAgICAgJHJlY195ID0gc2VsZjo6Y29udmVydEJhc2U2NFRvQmlnSW50ZWdlcigkcHVibGljX2tleS0+Z2V0KCd5JykpOwogICAgICAgICAgICAkc2VuX2QgPSBzZWxmOjpjb252ZXJ0QmFzZTY0VG9CaWdJbnRlZ2VyKCRwcml2YXRlX2tleS0+Z2V0KCdkJykpOwogICAgICAgICAgICAkcHJpdl9rZXkgPSBQcml2YXRlS2V5OjpjcmVhdGUoJHNlbl9kKTsKICAgICAgICAgICAgJHB1Yl9rZXkgPSAkY3VydmUtPmdldFB1YmxpY0tleUZyb20oJHJlY194LCAkcmVjX3kpOwoKICAgICAgICAgICAgcmV0dXJuIGhleDJiaW4oc3RyX3BhZCgkY3VydmUtPm11bCgkcHViX2tleS0+Z2V0UG9pbnQoKSwgJHByaXZfa2V5LT5nZXRTZWNyZXQoKSktPmdldFgoKS0+dG9CYXNlKDE2KSwgNjQsICcwJywgU1RSX1BBRF9MRUZUKSk7IC8vIEBwaHBzdGFuLWlnbm9yZS1saW5lCiAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkZSkgewogICAgICAgICAgICAkcmVjX3ggPSBzZWxmOjpjb252ZXJ0QmFzZTY0VG9HTVAoJHB1YmxpY19rZXktPmdldCgneCcpKTsKICAgICAgICAgICAgJHJlY195ID0gc2VsZjo6Y29udmVydEJhc2U2NFRvR01QKCRwdWJsaWNfa2V5LT5nZXQoJ3knKSk7CiAgICAgICAgICAgICRzZW5fZCA9IHNlbGY6OmNvbnZlcnRCYXNlNjRUb0dNUCgkcHJpdmF0ZV9rZXktPmdldCgnZCcpKTsKICAgICAgICAgICAgJHByaXZfa2V5ID0gUHJpdmF0ZUtleTo6Y3JlYXRlKCRzZW5fZCk7IC8vIEBwaHBzdGFuLWlnbm9yZS1saW5lCiAgICAgICAgICAgICRwdWJfa2V5ID0gJGN1cnZlLT5nZXRQdWJsaWNLZXlGcm9tKCRyZWNfeCwgJHJlY195KTsgLy8gQHBocHN0YW4taWdub3JlLWxpbmUKCiAgICAgICAgICAgIHJldHVybiBoZXgyYmluKGdtcF9zdHJ2YWwoJGN1cnZlLT5tdWwoJHB1Yl9rZXktPmdldFBvaW50KCksICRwcml2X2tleS0+Z2V0U2VjcmV0KCkpLT5nZXRYKCksIDE2KSk7IC8vIEBwaHBzdGFuLWlnbm9yZS1saW5lCiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjb252ZXJ0QmFzZTY0VG9CaWdJbnRlZ2VyKHN0cmluZyAkdmFsdWUpOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJHZhbHVlID0gdW5wYWNrKCdIKicsIEJhc2U2NFVybDo6ZGVjb2RlKCR2YWx1ZSkpOwoKICAgICAgICByZXR1cm4gQmlnSW50ZWdlcjo6ZnJvbUJhc2UoJHZhbHVlWzFdLCAxNik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNvbnZlcnRCYXNlNjRUb0dNUChzdHJpbmcgJHZhbHVlKTogXEdNUAogICAgewogICAgICAgICR2YWx1ZSA9IHVucGFjaygnSConLCBCYXNlNjRVcmw6OmRlY29kZSgkdmFsdWUpKTsKCiAgICAgICAgcmV0dXJuIGdtcF9pbml0KCR2YWx1ZVsxXSwgMTYpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGFkZE51bGxQYWRkaW5nKHN0cmluZyAkZGF0YSk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBzdHJfcGFkKCRkYXRhLCAzMiwgY2hyKDApLCBTVFJfUEFEX0xFRlQpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/MessageSentReport.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBhdXRob3IgSWdvciBUaW1vc2hlbmtvdiBbaXRAY2FtcG9pbnQubmV0XQogKiBAc3RhcnRlZDogMDMuMDkuMjAxOCA5OjIxCiAqLwoKbmFtZXNwYWNlIE1pbmlzaGxpbmtcV2ViUHVzaDsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwoKLyoqCiAqIFN0YW5kYXJkaXplZCByZXNwb25zZSBmcm9tIHNlbmRpbmcgYSBtZXNzYWdlCiAqLwpjbGFzcyBNZXNzYWdlU2VudFJlcG9ydCBpbXBsZW1lbnRzIFxKc29uU2VyaWFsaXphYmxlCnsKCiAgICAvKioKICAgICAqIEB2YXIgYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgJHN1Y2Nlc3M7CgogICAgLyoqCiAgICAgKiBAdmFyIFJlcXVlc3RJbnRlcmZhY2UKICAgICAqLwogICAgcHJvdGVjdGVkICRyZXF1ZXN0OwoKICAgIC8qKgogICAgICogQHZhciBSZXNwb25zZUludGVyZmFjZSB8IG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkICRyZXNwb25zZTsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCAkcmVhc29uOwoKICAgIC8qKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgICRyZXF1ZXN0CiAgICAgKiBAcGFyYW0gUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgICAgICAgJHN1Y2Nlc3MKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAkcmVhc29uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCA/UmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlID0gbnVsbCwgYm9vbCAkc3VjY2VzcyA9IHRydWUsICRyZWFzb24gPSAnT0snKQogICAgewogICAgICAgICR0aGlzLT5yZXF1ZXN0ICA9ICRyZXF1ZXN0OwogICAgICAgICR0aGlzLT5yZXNwb25zZSA9ICRyZXNwb25zZTsKICAgICAgICAkdGhpcy0+c3VjY2VzcyAgPSAkc3VjY2VzczsKICAgICAgICAkdGhpcy0+cmVhc29uICAgPSAkcmVhc29uOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1N1Y2Nlc3MoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3VjY2VzczsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBib29sICRzdWNjZXNzCiAgICAgKgogICAgICogQHJldHVybiBNZXNzYWdlU2VudFJlcG9ydAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U3VjY2Vzcyhib29sICRzdWNjZXNzKTogTWVzc2FnZVNlbnRSZXBvcnQKICAgIHsKICAgICAgICAkdGhpcy0+c3VjY2VzcyA9ICRzdWNjZXNzOwogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gUmVxdWVzdEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVxdWVzdCgpOiBSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXF1ZXN0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QKICAgICAqCiAgICAgKiBAcmV0dXJuIE1lc3NhZ2VTZW50UmVwb3J0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRSZXF1ZXN0KFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QpOiBNZXNzYWdlU2VudFJlcG9ydAogICAgewogICAgICAgICR0aGlzLT5yZXF1ZXN0ID0gJHJlcXVlc3Q7CiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBSZXNwb25zZUludGVyZmFjZSB8IG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlc3BvbnNlKCk6ID9SZXNwb25zZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVzcG9uc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlCiAgICAgKgogICAgICogQHJldHVybiBNZXNzYWdlU2VudFJlcG9ydAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0UmVzcG9uc2UoUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlKTogTWVzc2FnZVNlbnRSZXBvcnQKICAgIHsKICAgICAgICAkdGhpcy0+cmVzcG9uc2UgPSAkcmVzcG9uc2U7CiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEVuZHBvaW50KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdC0+Z2V0VXJpKCktPl9fdG9TdHJpbmcoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTdWJzY3JpcHRpb25FeHBpcmVkKCk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5yZXNwb25zZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXGluX2FycmF5KCR0aGlzLT5yZXNwb25zZS0+Z2V0U3RhdHVzQ29kZSgpLCBbNDA0LCA0MTBdLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZWFzb24oKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZWFzb247CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRyZWFzb24KICAgICAqCiAgICAgKiBAcmV0dXJuIE1lc3NhZ2VTZW50UmVwb3J0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRSZWFzb24oc3RyaW5nICRyZWFzb24pOiBNZXNzYWdlU2VudFJlcG9ydAogICAgewogICAgICAgICR0aGlzLT5yZWFzb24gPSAkcmVhc29uOwogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZXF1ZXN0UGF5bG9hZCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3QtPmdldEJvZHkoKS0+Z2V0Q29udGVudHMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nIHwgbnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVzcG9uc2VDb250ZW50KCk6ID9zdHJpbmcKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5yZXNwb25zZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+cmVzcG9uc2UtPmdldEJvZHkoKS0+Z2V0Q29udGVudHMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGpzb25TZXJpYWxpemUoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAnc3VjY2VzcycgID0+ICR0aGlzLT5pc1N1Y2Nlc3MoKSwKICAgICAgICAgICAgJ2V4cGlyZWQnICA9PiAkdGhpcy0+aXNTdWJzY3JpcHRpb25FeHBpcmVkKCksCiAgICAgICAgICAgICdyZWFzb24nICAgPT4gJHRoaXMtPnJlYXNvbiwKICAgICAgICAgICAgJ2VuZHBvaW50JyA9PiAkdGhpcy0+Z2V0RW5kcG9pbnQoKSwKICAgICAgICAgICAgJ3BheWxvYWQnICA9PiAkdGhpcy0+cmVxdWVzdC0+Z2V0Qm9keSgpLT5nZXRDb250ZW50cygpLAogICAgICAgIF07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/Notification.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYlB1c2ggbGlicmFyeS4KICoKICogKGMpIExvdWlzIExhZ3JhbmdlIDxsYWdyYW5nZS5sb3Vpc0BnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBNaW5pc2hsaW5rXFdlYlB1c2g7CgpjbGFzcyBOb3RpZmljYXRpb24KewogICAgLyoqIEB2YXIgU3Vic2NyaXB0aW9uSW50ZXJmYWNlICovCiAgICBwcml2YXRlICRzdWJzY3JpcHRpb247CgogICAgLyoqIEB2YXIgbnVsbHxzdHJpbmcgKi8KICAgIHByaXZhdGUgJHBheWxvYWQ7CgogICAgLyoqIEB2YXIgYXJyYXkgT3B0aW9ucyA6IFRUTCwgdXJnZW5jeSwgdG9waWMgKi8KICAgIHByaXZhdGUgJG9wdGlvbnM7CgogICAgLyoqIEB2YXIgYXJyYXkgQXV0aCBkZXRhaWxzIDogVkFQSUQgKi8KICAgIHByaXZhdGUgJGF1dGg7CgogICAgLyoqCiAgICAgKiBOb3RpZmljYXRpb24gY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIFN1YnNjcmlwdGlvbkludGVyZmFjZSAkc3Vic2NyaXB0aW9uCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHBheWxvYWQKICAgICAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucwogICAgICogQHBhcmFtIGFycmF5ICRhdXRoCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChTdWJzY3JpcHRpb25JbnRlcmZhY2UgJHN1YnNjcmlwdGlvbiwgP3N0cmluZyAkcGF5bG9hZCwgYXJyYXkgJG9wdGlvbnMsIGFycmF5ICRhdXRoKQogICAgewogICAgICAgICR0aGlzLT5zdWJzY3JpcHRpb24gPSAkc3Vic2NyaXB0aW9uOwogICAgICAgICR0aGlzLT5wYXlsb2FkID0gJHBheWxvYWQ7CiAgICAgICAgJHRoaXMtPm9wdGlvbnMgPSAkb3B0aW9uczsKICAgICAgICAkdGhpcy0+YXV0aCA9ICRhdXRoOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBTdWJzY3JpcHRpb25JbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFN1YnNjcmlwdGlvbigpOiBTdWJzY3JpcHRpb25JbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN1YnNjcmlwdGlvbjsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbnVsbHxzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBheWxvYWQoKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGF5bG9hZDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkZGVmYXVsdE9wdGlvbnMKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcHRpb25zKGFycmF5ICRkZWZhdWx0T3B0aW9ucyA9IFtdKTogYXJyYXkKICAgIHsKICAgICAgICAkb3B0aW9ucyA9ICR0aGlzLT5vcHRpb25zOwogICAgICAgICRvcHRpb25zWydUVEwnXSA9IGFycmF5X2tleV9leGlzdHMoJ1RUTCcsICRvcHRpb25zKSA/ICRvcHRpb25zWydUVEwnXSA6ICRkZWZhdWx0T3B0aW9uc1snVFRMJ107CiAgICAgICAgJG9wdGlvbnNbJ3VyZ2VuY3knXSA9IGFycmF5X2tleV9leGlzdHMoJ3VyZ2VuY3knLCAkb3B0aW9ucykgPyAkb3B0aW9uc1sndXJnZW5jeSddIDogJGRlZmF1bHRPcHRpb25zWyd1cmdlbmN5J107CiAgICAgICAgJG9wdGlvbnNbJ3RvcGljJ10gPSBhcnJheV9rZXlfZXhpc3RzKCd0b3BpYycsICRvcHRpb25zKSA/ICRvcHRpb25zWyd0b3BpYyddIDogJGRlZmF1bHRPcHRpb25zWyd0b3BpYyddOwoKICAgICAgICByZXR1cm4gJG9wdGlvbnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGRlZmF1bHRBdXRoCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QXV0aChhcnJheSAkZGVmYXVsdEF1dGgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBjb3VudCgkdGhpcy0+YXV0aCkgPiAwID8gJHRoaXMtPmF1dGggOiAkZGVmYXVsdEF1dGg7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/Subscription.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYlB1c2ggbGlicmFyeS4KICoKICogKGMpIExvdWlzIExhZ3JhbmdlIDxsYWdyYW5nZS5sb3Vpc0BnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBNaW5pc2hsaW5rXFdlYlB1c2g7CgpjbGFzcyBTdWJzY3JpcHRpb24gaW1wbGVtZW50cyBTdWJzY3JpcHRpb25JbnRlcmZhY2UKewogICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICBwcml2YXRlICRlbmRwb2ludDsKCiAgICAvKiogQHZhciBudWxsfHN0cmluZyAqLwogICAgcHJpdmF0ZSAkcHVibGljS2V5OwoKICAgIC8qKiBAdmFyIG51bGx8c3RyaW5nICovCiAgICBwcml2YXRlICRhdXRoVG9rZW47CgogICAgLyoqIEB2YXIgbnVsbHxzdHJpbmcgKi8KICAgIHByaXZhdGUgJGNvbnRlbnRFbmNvZGluZzsKCiAgICAvKioKICAgICAqIFN1YnNjcmlwdGlvbiBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRlbmRwb2ludAogICAgICogQHBhcmFtIG51bGx8c3RyaW5nICRwdWJsaWNLZXkKICAgICAqIEBwYXJhbSBudWxsfHN0cmluZyAkYXV0aFRva2VuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50RW5jb2RpbmcgKE9wdGlvbmFsKSBNdXN0IGJlICJhZXNnY20iCiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgc3RyaW5nICRlbmRwb2ludCwKICAgICAgICA/c3RyaW5nICRwdWJsaWNLZXkgPSBudWxsLAogICAgICAgID9zdHJpbmcgJGF1dGhUb2tlbiA9IG51bGwsCiAgICAgICAgP3N0cmluZyAkY29udGVudEVuY29kaW5nID0gbnVsbAogICAgKSB7CiAgICAgICAgJHRoaXMtPmVuZHBvaW50ID0gJGVuZHBvaW50OwoKICAgICAgICBpZiAoJHB1YmxpY0tleSB8fCAkYXV0aFRva2VuIHx8ICRjb250ZW50RW5jb2RpbmcpIHsKICAgICAgICAgICAgJHN1cHBvcnRlZENvbnRlbnRFbmNvZGluZ3MgPSBbJ2Flc2djbScsICdhZXMxMjhnY20nXTsKICAgICAgICAgICAgaWYgKCRjb250ZW50RW5jb2RpbmcgJiYgIWluX2FycmF5KCRjb250ZW50RW5jb2RpbmcsICRzdXBwb3J0ZWRDb250ZW50RW5jb2RpbmdzKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignVGhpcyBjb250ZW50IGVuY29kaW5nICgnLiRjb250ZW50RW5jb2RpbmcuJykgaXMgbm90IHN1cHBvcnRlZC4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnB1YmxpY0tleSA9ICRwdWJsaWNLZXk7CiAgICAgICAgICAgICR0aGlzLT5hdXRoVG9rZW4gPSAkYXV0aFRva2VuOwogICAgICAgICAgICAkdGhpcy0+Y29udGVudEVuY29kaW5nID0gJGNvbnRlbnRFbmNvZGluZyA/OiAiYWVzZ2NtIjsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBTdWJzY3JpcHRpb24gZmFjdG9yeS4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGFzc29jaWF0aXZlQXJyYXkgKHdpdGgga2V5cyBlbmRwb2ludCwgcHVibGljS2V5LCBhdXRoVG9rZW4sIGNvbnRlbnRFbmNvZGluZykKICAgICAqIEByZXR1cm4gc2VsZgogICAgICogQHRocm93cyBcRXJyb3JFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGUoYXJyYXkgJGFzc29jaWF0aXZlQXJyYXkpOiBzZWxmCiAgICB7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2tleXMnLCAkYXNzb2NpYXRpdmVBcnJheSkgJiYgaXNfYXJyYXkoJGFzc29jaWF0aXZlQXJyYXlbJ2tleXMnXSkpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBzZWxmKAogICAgICAgICAgICAgICAgJGFzc29jaWF0aXZlQXJyYXlbJ2VuZHBvaW50J10sCiAgICAgICAgICAgICAgICAkYXNzb2NpYXRpdmVBcnJheVsna2V5cyddWydwMjU2ZGgnXSA/PyBudWxsLAogICAgICAgICAgICAgICAgJGFzc29jaWF0aXZlQXJyYXlbJ2tleXMnXVsnYXV0aCddID8/IG51bGwsCiAgICAgICAgICAgICAgICAkYXNzb2NpYXRpdmVBcnJheVsnY29udGVudEVuY29kaW5nJ10gPz8gImFlc2djbSIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdwdWJsaWNLZXknLCAkYXNzb2NpYXRpdmVBcnJheSkgfHwgYXJyYXlfa2V5X2V4aXN0cygnYXV0aFRva2VuJywgJGFzc29jaWF0aXZlQXJyYXkpIHx8IGFycmF5X2tleV9leGlzdHMoJ2NvbnRlbnRFbmNvZGluZycsICRhc3NvY2lhdGl2ZUFycmF5KSkgewogICAgICAgICAgICByZXR1cm4gbmV3IHNlbGYoCiAgICAgICAgICAgICAgICAkYXNzb2NpYXRpdmVBcnJheVsnZW5kcG9pbnQnXSwKICAgICAgICAgICAgICAgICRhc3NvY2lhdGl2ZUFycmF5WydwdWJsaWNLZXknXSA/PyBudWxsLAogICAgICAgICAgICAgICAgJGFzc29jaWF0aXZlQXJyYXlbJ2F1dGhUb2tlbiddID8/IG51bGwsCiAgICAgICAgICAgICAgICAkYXNzb2NpYXRpdmVBcnJheVsnY29udGVudEVuY29kaW5nJ10gPz8gImFlc2djbSIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgc2VsZigKICAgICAgICAgICAgJGFzc29jaWF0aXZlQXJyYXlbJ2VuZHBvaW50J10KICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RW5kcG9pbnQoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lbmRwb2ludDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFB1YmxpY0tleSgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wdWJsaWNLZXk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdXRoVG9rZW4oKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YXV0aFRva2VuOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudEVuY29kaW5nKCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbnRlbnRFbmNvZGluZzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/SubscriptionInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYlB1c2ggbGlicmFyeS4KICoKICogKGMpIExvdWlzIExhZ3JhbmdlIDxsYWdyYW5nZS5sb3Vpc0BnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBNaW5pc2hsaW5rXFdlYlB1c2g7CgovKioKICogQGF1dGhvciBTZXJnaWkgQm9uZGFyZW5rbyA8c2JAZmlyc3R2ZWN0b3Iub3JnPgogKi8KaW50ZXJmYWNlIFN1YnNjcmlwdGlvbkludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbmRwb2ludCgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIG51bGx8c3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQdWJsaWNLZXkoKTogP3N0cmluZzsKCiAgICAvKioKICAgICAqIEByZXR1cm4gbnVsbHxzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEF1dGhUb2tlbigpOiA/c3RyaW5nOwoKICAgIC8qKgogICAgICogQHJldHVybiBudWxsfHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudEVuY29kaW5nKCk6ID9zdHJpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/Utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYlB1c2ggbGlicmFyeS4KICoKICogKGMpIExvdWlzIExhZ3JhbmdlIDxsYWdyYW5nZS5sb3Vpc0BnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBNaW5pc2hsaW5rXFdlYlB1c2g7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEJyaWNrXE1hdGhcQmlnSW50ZWdlcjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEVjY1xQdWJsaWNLZXk7CgpjbGFzcyBVdGlscwp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzYWZlU3RybGVuKHN0cmluZyAkdmFsdWUpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gbWJfc3RybGVuKCR2YWx1ZSwgJzhiaXQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBQdWJsaWNLZXkgJHB1YmxpY0tleQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2VyaWFsaXplUHVibGljS2V5KFB1YmxpY0tleSAkcHVibGljS2V5KTogc3RyaW5nCiAgICB7CiAgICAgICAgJGhleFN0cmluZyA9ICcwNCc7CiAgICAgICAgJHBvaW50ID0gJHB1YmxpY0tleS0+Z2V0UG9pbnQoKTsKICAgICAgICBpZiAoJHBvaW50LT5nZXRYKCkgaW5zdGFuY2VvZiBCaWdJbnRlZ2VyKSB7CiAgICAgICAgICAgICRoZXhTdHJpbmcgLj0gc3RyX3BhZCgkcG9pbnQtPmdldFgoKS0+dG9CYXNlKDE2KSwgNjQsICcwJywgU1RSX1BBRF9MRUZUKTsKICAgICAgICAgICAgJGhleFN0cmluZyAuPSBzdHJfcGFkKCRwb2ludC0+Z2V0WSgpLT50b0Jhc2UoMTYpLCA2NCwgJzAnLCBTVFJfUEFEX0xFRlQpOwogICAgICAgIH0gZWxzZSB7IC8vIEBwaHBzdGFuLWlnbm9yZS1saW5lCiAgICAgICAgICAgICRoZXhTdHJpbmcgLj0gc3RyX3BhZChnbXBfc3RydmFsKCRwb2ludC0+Z2V0WCgpLCAxNiksIDY0LCAnMCcsIFNUUl9QQURfTEVGVCk7CiAgICAgICAgICAgICRoZXhTdHJpbmcgLj0gc3RyX3BhZChnbXBfc3RydmFsKCRwb2ludC0+Z2V0WSgpLCAxNiksIDY0LCAnMCcsIFNUUl9QQURfTEVGVCk7IC8vIEBwaHBzdGFuLWlnbm9yZS1saW5lCiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGhleFN0cmluZzsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBKV0sgJGp3awogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2VyaWFsaXplUHVibGljS2V5RnJvbUpXSyhKV0sgJGp3ayk6IHN0cmluZwogICAgewogICAgICAgICRoZXhTdHJpbmcgPSAnMDQnOwogICAgICAgICRoZXhTdHJpbmcgLj0gc3RyX3BhZChiaW4yaGV4KEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgneCcpKSksIDY0LCAnMCcsIFNUUl9QQURfTEVGVCk7CiAgICAgICAgJGhleFN0cmluZyAuPSBzdHJfcGFkKGJpbjJoZXgoQmFzZTY0VXJsOjpkZWNvZGUoJGp3ay0+Z2V0KCd5JykpKSwgNjQsICcwJywgU1RSX1BBRF9MRUZUKTsKCiAgICAgICAgcmV0dXJuICRoZXhTdHJpbmc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkYXRhCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVuc2VyaWFsaXplUHVibGljS2V5KHN0cmluZyAkZGF0YSk6IGFycmF5CiAgICB7CiAgICAgICAgJGRhdGEgPSBiaW4yaGV4KCRkYXRhKTsKICAgICAgICBpZiAobWJfc3Vic3RyKCRkYXRhLCAwLCAyLCAnOGJpdCcpICE9PSAnMDQnKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGRhdGE6IG9ubHkgdW5jb21wcmVzc2VkIGtleXMgYXJlIHN1cHBvcnRlZC4nKTsKICAgICAgICB9CiAgICAgICAgJGRhdGEgPSBtYl9zdWJzdHIoJGRhdGEsIDIsIG51bGwsICc4Yml0Jyk7CiAgICAgICAgJGRhdGFMZW5ndGggPSBzZWxmOjpzYWZlU3RybGVuKCRkYXRhKTsKCiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgaGV4MmJpbihtYl9zdWJzdHIoJGRhdGEsIDAsICRkYXRhTGVuZ3RoIC8gMiwgJzhiaXQnKSksCiAgICAgICAgICAgIGhleDJiaW4obWJfc3Vic3RyKCRkYXRhLCAkZGF0YUxlbmd0aCAvIDIsIG51bGwsICc4Yml0JykpLAogICAgICAgIF07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/VAPID.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYlB1c2ggbGlicmFyeS4KICoKICogKGMpIExvdWlzIExhZ3JhbmdlIDxsYWdyYW5nZS5sb3Vpc0BnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBNaW5pc2hsaW5rXFdlYlB1c2g7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcQWxnb3JpdGhtTWFuYWdlcjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwp1c2UgSm9zZVxDb21wb25lbnRcS2V5TWFuYWdlbWVudFxKV0tGYWN0b3J5Owp1c2UgSm9zZVxDb21wb25lbnRcU2lnbmF0dXJlXEFsZ29yaXRobVxFUzI1NjsKdXNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxKV1NCdWlsZGVyOwp1c2UgSm9zZVxDb21wb25lbnRcU2lnbmF0dXJlXFNlcmlhbGl6ZXJcQ29tcGFjdFNlcmlhbGl6ZXI7CgpjbGFzcyBWQVBJRAp7CiAgICBwcml2YXRlIGNvbnN0IFBVQkxJQ19LRVlfTEVOR1RIID0gNjU7CiAgICBwcml2YXRlIGNvbnN0IFBSSVZBVEVfS0VZX0xFTkdUSCA9IDMyOwoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICR2YXBpZAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHZhbGlkYXRlKGFycmF5ICR2YXBpZCk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkdmFwaWRbJ3N1YmplY3QnXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignW1ZBUElEXSBZb3UgbXVzdCBwcm92aWRlIGEgc3ViamVjdCB0aGF0IGlzIGVpdGhlciBhIG1haWx0bzogb3IgYSBVUkwuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJHZhcGlkWydwZW1GaWxlJ10pKSB7CiAgICAgICAgICAgICR2YXBpZFsncGVtJ10gPSBmaWxlX2dldF9jb250ZW50cygkdmFwaWRbJ3BlbUZpbGUnXSk7CgogICAgICAgICAgICBpZiAoISR2YXBpZFsncGVtJ10pIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ0Vycm9yIGxvYWRpbmcgUEVNIGZpbGUuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkdmFwaWRbJ3BlbSddKSkgewogICAgICAgICAgICAkandrID0gSldLRmFjdG9yeTo6Y3JlYXRlRnJvbUtleSgkdmFwaWRbJ3BlbSddKTsKICAgICAgICAgICAgaWYgKCRqd2stPmdldCgna3R5JykgIT09ICdFQycgfHwgISRqd2stPmhhcygnZCcpIHx8ICEkandrLT5oYXMoJ3gnKSB8fCAhJGp3ay0+aGFzKCd5JykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ0ludmFsaWQgUEVNIGRhdGEuJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRiaW5hcnlQdWJsaWNLZXkgPSBoZXgyYmluKFV0aWxzOjpzZXJpYWxpemVQdWJsaWNLZXlGcm9tSldLKCRqd2spKTsKICAgICAgICAgICAgaWYgKCEkYmluYXJ5UHVibGljS2V5KSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yRXhjZXB0aW9uKCdGYWlsZWQgdG8gY29udmVydCBWQVBJRCBwdWJsaWMga2V5IGZyb20gaGV4YWRlY2ltYWwgdG8gYmluYXJ5Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHZhcGlkWydwdWJsaWNLZXknXSA9IGJhc2U2NF9lbmNvZGUoJGJpbmFyeVB1YmxpY0tleSk7CiAgICAgICAgICAgICR2YXBpZFsncHJpdmF0ZUtleSddID0gYmFzZTY0X2VuY29kZShzdHJfcGFkKEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgnZCcpKSwgMiAqIHNlbGY6OlBSSVZBVEVfS0VZX0xFTkdUSCwgJzAnLCBTVFJfUEFEX0xFRlQpKTsKICAgICAgICB9CgogICAgICAgIGlmICghaXNzZXQoJHZhcGlkWydwdWJsaWNLZXknXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignW1ZBUElEXSBZb3UgbXVzdCBwcm92aWRlIGEgcHVibGljIGtleS4nKTsKICAgICAgICB9CgogICAgICAgICRwdWJsaWNLZXkgPSBCYXNlNjRVcmw6OmRlY29kZSgkdmFwaWRbJ3B1YmxpY0tleSddKTsKCiAgICAgICAgaWYgKFV0aWxzOjpzYWZlU3RybGVuKCRwdWJsaWNLZXkpICE9PSBzZWxmOjpQVUJMSUNfS0VZX0xFTkdUSCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yRXhjZXB0aW9uKCdbVkFQSURdIFB1YmxpYyBrZXkgc2hvdWxkIGJlIDY1IGJ5dGVzIGxvbmcgd2hlbiBkZWNvZGVkLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc3NldCgkdmFwaWRbJ3ByaXZhdGVLZXknXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignW1ZBUElEXSBZb3UgbXVzdCBwcm92aWRlIGEgcHJpdmF0ZSBrZXkuJyk7CiAgICAgICAgfQoKICAgICAgICAkcHJpdmF0ZUtleSA9IEJhc2U2NFVybDo6ZGVjb2RlKCR2YXBpZFsncHJpdmF0ZUtleSddKTsKCiAgICAgICAgaWYgKFV0aWxzOjpzYWZlU3RybGVuKCRwcml2YXRlS2V5KSAhPT0gc2VsZjo6UFJJVkFURV9LRVlfTEVOR1RIKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ1tWQVBJRF0gUHJpdmF0ZSBrZXkgc2hvdWxkIGJlIDMyIGJ5dGVzIGxvbmcgd2hlbiBkZWNvZGVkLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ3N1YmplY3QnID0+ICR2YXBpZFsnc3ViamVjdCddLAogICAgICAgICAgICAncHVibGljS2V5JyA9PiAkcHVibGljS2V5LAogICAgICAgICAgICAncHJpdmF0ZUtleScgPT4gJHByaXZhdGVLZXksCiAgICAgICAgXTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIHRha2VzIHRoZSByZXF1aXJlZCBWQVBJRCBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIHRoZSByZXF1aXJlZAogICAgICogaGVhZGVyIHRvIGJlIGFkZGVkIHRvIGEgV2ViIFB1c2ggUHJvdG9jb2wgUmVxdWVzdC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhdWRpZW5jZSBUaGlzIG11c3QgYmUgdGhlIG9yaWdpbiBvZiB0aGUgcHVzaCBzZXJ2aWNlCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdWJqZWN0IFRoaXMgc2hvdWxkIGJlIGEgVVJMIG9yIGEgJ21haWx0bzonIGVtYWlsIGFkZHJlc3MKICAgICAqIEBwYXJhbSBzdHJpbmcgJHB1YmxpY0tleSBUaGUgZGVjb2RlZCBWQVBJRCBwdWJsaWMga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRwcml2YXRlS2V5IFRoZSBkZWNvZGVkIFZBUElEIHByaXZhdGUga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50RW5jb2RpbmcKICAgICAqIEBwYXJhbSBudWxsfGludCAkZXhwaXJhdGlvbiBUaGUgZXhwaXJhdGlvbiBvZiB0aGUgVkFQSUQgSldULiAoVU5JWCB0aW1lc3RhbXApCiAgICAgKgogICAgICogQHJldHVybiBhcnJheSBSZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlICdBdXRob3JpemF0aW9uJyBhbmQgJ0NyeXB0by1LZXknIHZhbHVlcyB0byBiZSB1c2VkIGFzIGhlYWRlcnMKICAgICAqIEB0aHJvd3MgXEVycm9yRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0VmFwaWRIZWFkZXJzKHN0cmluZyAkYXVkaWVuY2UsIHN0cmluZyAkc3ViamVjdCwgc3RyaW5nICRwdWJsaWNLZXksIHN0cmluZyAkcHJpdmF0ZUtleSwgc3RyaW5nICRjb250ZW50RW5jb2RpbmcsID9pbnQgJGV4cGlyYXRpb24gPSBudWxsKQogICAgewogICAgICAgICRleHBpcmF0aW9uTGltaXQgPSB0aW1lKCkgKyA0MzIwMDsgLy8gZXF1YWwgbWFyZ2luIG9mIGVycm9yIGJldHdlZW4gMCBhbmQgMjRoCiAgICAgICAgaWYgKG51bGwgPT09ICRleHBpcmF0aW9uIHx8ICRleHBpcmF0aW9uID4gJGV4cGlyYXRpb25MaW1pdCkgewogICAgICAgICAgICAkZXhwaXJhdGlvbiA9ICRleHBpcmF0aW9uTGltaXQ7CiAgICAgICAgfQoKICAgICAgICAkaGVhZGVyID0gWwogICAgICAgICAgICAndHlwJyA9PiAnSldUJywKICAgICAgICAgICAgJ2FsZycgPT4gJ0VTMjU2JywKICAgICAgICBdOwoKICAgICAgICAkand0UGF5bG9hZCA9IGpzb25fZW5jb2RlKFsKICAgICAgICAgICAgJ2F1ZCcgPT4gJGF1ZGllbmNlLAogICAgICAgICAgICAnZXhwJyA9PiAkZXhwaXJhdGlvbiwKICAgICAgICAgICAgJ3N1YicgPT4gJHN1YmplY3QsCiAgICAgICAgXSwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUyB8IEpTT05fTlVNRVJJQ19DSEVDSyk7CiAgICAgICAgaWYgKCEkand0UGF5bG9hZCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yRXhjZXB0aW9uKCdGYWlsZWQgdG8gZW5jb2RlIEpXVCBwYXlsb2FkIGluIEpTT04nKTsKICAgICAgICB9CgogICAgICAgIGxpc3QoJHgsICR5KSA9IFV0aWxzOjp1bnNlcmlhbGl6ZVB1YmxpY0tleSgkcHVibGljS2V5KTsKICAgICAgICAkandrID0gbmV3IEpXSyhbCiAgICAgICAgICAgICdrdHknID0+ICdFQycsCiAgICAgICAgICAgICdjcnYnID0+ICdQLTI1NicsCiAgICAgICAgICAgICd4JyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkeCksCiAgICAgICAgICAgICd5JyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkeSksCiAgICAgICAgICAgICdkJyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkcHJpdmF0ZUtleSksCiAgICAgICAgXSk7CgogICAgICAgICRqd3NDb21wYWN0U2VyaWFsaXplciA9IG5ldyBDb21wYWN0U2VyaWFsaXplcigpOwogICAgICAgICRqd3NCdWlsZGVyID0gbmV3IEpXU0J1aWxkZXIobmV3IEFsZ29yaXRobU1hbmFnZXIoW25ldyBFUzI1NigpXSkpOwogICAgICAgICRqd3MgPSAkandzQnVpbGRlcgogICAgICAgICAgICAtPmNyZWF0ZSgpCiAgICAgICAgICAgIC0+d2l0aFBheWxvYWQoJGp3dFBheWxvYWQpCiAgICAgICAgICAgIC0+YWRkU2lnbmF0dXJlKCRqd2ssICRoZWFkZXIpCiAgICAgICAgICAgIC0+YnVpbGQoKTsKCiAgICAgICAgJGp3dCA9ICRqd3NDb21wYWN0U2VyaWFsaXplci0+c2VyaWFsaXplKCRqd3MsIDApOwogICAgICAgICRlbmNvZGVkUHVibGljS2V5ID0gQmFzZTY0VXJsOjplbmNvZGUoJHB1YmxpY0tleSk7CgogICAgICAgIGlmICgkY29udGVudEVuY29kaW5nID09PSAiYWVzZ2NtIikgewogICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nID0+ICdXZWJQdXNoICcuJGp3dCwKICAgICAgICAgICAgICAgICdDcnlwdG8tS2V5JyA9PiAncDI1NmVjZHNhPScuJGVuY29kZWRQdWJsaWNLZXksCiAgICAgICAgICAgIF07CiAgICAgICAgfSBlbHNlaWYgKCRjb250ZW50RW5jb2RpbmcgPT09ICdhZXMxMjhnY20nKSB7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbicgPT4gJ3ZhcGlkIHQ9Jy4kand0LicsIGs9Jy4kZW5jb2RlZFB1YmxpY0tleSwKICAgICAgICAgICAgXTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ1RoaXMgY29udGVudCBlbmNvZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIFZBUElEIGtleXMgaW4gY2FzZSB5b3Ugd291bGQgbm90IGJlIGFibGUgdG8gaGF2ZSBhIExpbnV4IGJhc2guCiAgICAgKiBETyBOT1QgY3JlYXRlIGtleXMgYXQgZWFjaCBpbml0aWFsaXphdGlvbiEgU2F2ZSB0aG9zZSBrZXlzIGFuZCByZXVzZSB0aGVtLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqIEB0aHJvd3MgXEVycm9yRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlVmFwaWRLZXlzKCk6IGFycmF5CiAgICB7CiAgICAgICAgJGp3ayA9IEpXS0ZhY3Rvcnk6OmNyZWF0ZUVDS2V5KCdQLTI1NicpOwoKICAgICAgICAkYmluYXJ5UHVibGljS2V5ID0gaGV4MmJpbihVdGlsczo6c2VyaWFsaXplUHVibGljS2V5RnJvbUpXSygkandrKSk7CiAgICAgICAgaWYgKCEkYmluYXJ5UHVibGljS2V5KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ0ZhaWxlZCB0byBjb252ZXJ0IFZBUElEIHB1YmxpYyBrZXkgZnJvbSBoZXhhZGVjaW1hbCB0byBiaW5hcnknKTsKICAgICAgICB9CgogICAgICAgICRiaW5hcnlQcml2YXRlS2V5ID0gaGV4MmJpbihzdHJfcGFkKGJpbjJoZXgoQmFzZTY0VXJsOjpkZWNvZGUoJGp3ay0+Z2V0KCdkJykpKSwgMiAqIHNlbGY6OlBSSVZBVEVfS0VZX0xFTkdUSCwgJzAnLCBTVFJfUEFEX0xFRlQpKTsKICAgICAgICBpZiAoISRiaW5hcnlQcml2YXRlS2V5KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ0ZhaWxlZCB0byBjb252ZXJ0IFZBUElEIHByaXZhdGUga2V5IGZyb20gaGV4YWRlY2ltYWwgdG8gYmluYXJ5Jyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAncHVibGljS2V5JyAgPT4gQmFzZTY0VXJsOjplbmNvZGUoJGJpbmFyeVB1YmxpY0tleSksCiAgICAgICAgICAgICdwcml2YXRlS2V5JyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkYmluYXJ5UHJpdmF0ZUtleSkKICAgICAgICBdOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/WebPush.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYlB1c2ggbGlicmFyeS4KICoKICogKGMpIExvdWlzIExhZ3JhbmdlIDxsYWdyYW5nZS5sb3Vpc0BnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBNaW5pc2hsaW5rXFdlYlB1c2g7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEd1enpsZUh0dHBcQ2xpZW50Owp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cUmVxdWVzdEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcUHNyN1xSZXF1ZXN0Owp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKCmNsYXNzIFdlYlB1c2gKewogICAgLyoqCiAgICAgKiBAdmFyIENsaWVudAogICAgICovCiAgICBwcm90ZWN0ZWQgJGNsaWVudDsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkICRhdXRoOwoKICAgIC8qKgogICAgICogQHZhciBudWxsfGFycmF5IEFycmF5IG9mIGFycmF5IG9mIE5vdGlmaWNhdGlvbnMKICAgICAqLwogICAgcHJvdGVjdGVkICRub3RpZmljYXRpb25zOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheSBEZWZhdWx0IG9wdGlvbnMgOiBUVEwsIHVyZ2VuY3ksIHRvcGljLCBiYXRjaFNpemUKICAgICAqLwogICAgcHJvdGVjdGVkICRkZWZhdWx0T3B0aW9uczsKCiAgICAvKioKICAgICAqIEB2YXIgaW50IEF1dG9tYXRpYyBwYWRkaW5nIG9mIHBheWxvYWRzLCBpZiBkaXNhYmxlZCwgdHJhZGUgc2VjdXJpdHkgZm9yIGJhbmR3aWR0aAogICAgICovCiAgICBwcm90ZWN0ZWQgJGF1dG9tYXRpY1BhZGRpbmcgPSBFbmNyeXB0aW9uOjpNQVhfQ09NUEFUSUJJTElUWV9QQVlMT0FEX0xFTkdUSDsKCiAgICAvKioKICAgICAqIEB2YXIgYm9vbCBSZXVzZSBWQVBJRCBoZWFkZXJzIGluIHRoZSBzYW1lIGZsdXNoIHNlc3Npb24gdG8gaW1wcm92ZSBwZXJmb3JtYW5jZQogICAgICovCiAgICBwcm90ZWN0ZWQgJHJldXNlVkFQSURIZWFkZXJzID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5IERpY3Rpb25hcnkgZm9yIFZBUElEIGhlYWRlcnMgY2FjaGUKICAgICAqLwogICAgcHJvdGVjdGVkICR2YXBpZEhlYWRlcnMgPSBbXTsKCiAgICAvKioKICAgICAqIFdlYlB1c2ggY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgICRhdXRoICAgICAgICAgICBTb21lIHNlcnZlcnMgbmVlZHMgYXV0aGVudGljYXRpb24KICAgICAqIEBwYXJhbSBhcnJheSAgICAkZGVmYXVsdE9wdGlvbnMgVFRMLCB1cmdlbmN5LCB0b3BpYywgYmF0Y2hTaXplCiAgICAgKiBAcGFyYW0gaW50fG51bGwgJHRpbWVvdXQgICAgICAgIFRpbWVvdXQgb2YgUE9TVCByZXF1ZXN0CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgJGNsaWVudE9wdGlvbnMKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGF1dGggPSBbXSwgYXJyYXkgJGRlZmF1bHRPcHRpb25zID0gW10sID9pbnQgJHRpbWVvdXQgPSAzMCwgYXJyYXkgJGNsaWVudE9wdGlvbnMgPSBbXSkKICAgIHsKICAgICAgICAkZXh0ZW5zaW9ucyA9IFsKICAgICAgICAgICAgJ2N1cmwnID0+ICdbV2ViUHVzaF0gY3VybCBleHRlbnNpb24gaXMgbm90IGxvYWRlZCBidXQgaXMgcmVxdWlyZWQuIFlvdSBjYW4gZml4IHRoaXMgaW4geW91ciBwaHAuaW5pLicsCiAgICAgICAgICAgICdnbXAnID0+ICdbV2ViUHVzaF0gZ21wIGV4dGVuc2lvbiBpcyBub3QgbG9hZGVkIGJ1dCBpcyByZXF1aXJlZCBmb3Igc2VuZGluZyBwdXNoIG5vdGlmaWNhdGlvbnMgd2l0aCBwYXlsb2FkIG9yIGZvciBWQVBJRCBhdXRoZW50aWNhdGlvbi4gWW91IGNhbiBmaXggdGhpcyBpbiB5b3VyIHBocC5pbmkuJywKICAgICAgICAgICAgJ21ic3RyaW5nJyA9PiAnW1dlYlB1c2hdIG1ic3RyaW5nIGV4dGVuc2lvbiBpcyBub3QgbG9hZGVkIGJ1dCBpcyByZXF1aXJlZCBmb3Igc2VuZGluZyBwdXNoIG5vdGlmaWNhdGlvbnMgd2l0aCBwYXlsb2FkIG9yIGZvciBWQVBJRCBhdXRoZW50aWNhdGlvbi4gWW91IGNhbiBmaXggdGhpcyBpbiB5b3VyIHBocC5pbmkuJywKICAgICAgICAgICAgJ29wZW5zc2wnID0+ICdbV2ViUHVzaF0gb3BlbnNzbCBleHRlbnNpb24gaXMgbm90IGxvYWRlZCBidXQgaXMgcmVxdWlyZWQgZm9yIHNlbmRpbmcgcHVzaCBub3RpZmljYXRpb25zIHdpdGggcGF5bG9hZCBvciBmb3IgVkFQSUQgYXV0aGVudGljYXRpb24uIFlvdSBjYW4gZml4IHRoaXMgaW4geW91ciBwaHAuaW5pLicsCiAgICAgICAgXTsKICAgICAgICBmb3JlYWNoICgkZXh0ZW5zaW9ucyBhcyAkZXh0ZW5zaW9uID0+ICRtZXNzYWdlKSB7CiAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uX2xvYWRlZCgkZXh0ZW5zaW9uKSkgewogICAgICAgICAgICAgICAgdHJpZ2dlcl9lcnJvcigkbWVzc2FnZSwgRV9VU0VSX1dBUk5JTkcpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaW5pX2dldCgnbWJzdHJpbmcuZnVuY19vdmVybG9hZCcpID49IDIpIHsKICAgICAgICAgICAgdHJpZ2dlcl9lcnJvcigiW1dlYlB1c2hdIG1ic3RyaW5nLmZ1bmNfb3ZlcmxvYWQgaXMgZW5hYmxlZCBmb3Igc3RyKiBmdW5jdGlvbnMuIFlvdSBtdXN0IGRpc2FibGUgaXQgaWYgeW91IHdhbnQgdG8gc2VuZCBwdXNoIG5vdGlmaWNhdGlvbnMgd2l0aCBwYXlsb2FkIG9yIHVzZSBWQVBJRC4gWW91IGNhbiBmaXggdGhpcyBpbiB5b3VyIHBocC5pbmkuIiwgRV9VU0VSX05PVElDRSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJGF1dGhbJ1ZBUElEJ10pKSB7CiAgICAgICAgICAgICRhdXRoWydWQVBJRCddID0gVkFQSUQ6OnZhbGlkYXRlKCRhdXRoWydWQVBJRCddKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5hdXRoID0gJGF1dGg7CgogICAgICAgICR0aGlzLT5zZXREZWZhdWx0T3B0aW9ucygkZGVmYXVsdE9wdGlvbnMpOwoKICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJ3RpbWVvdXQnLCAkY2xpZW50T3B0aW9ucykgJiYgaXNzZXQoJHRpbWVvdXQpKSB7CiAgICAgICAgICAgICRjbGllbnRPcHRpb25zWyd0aW1lb3V0J10gPSAkdGltZW91dDsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPmNsaWVudCA9IG5ldyBDbGllbnQoJGNsaWVudE9wdGlvbnMpOwogICAgfQoKICAgIC8qKgogICAgICogUXVldWUgYSBub3RpZmljYXRpb24uIFdpbGwgYmUgc2VudCB3aGVuIGZsdXNoKCkgaXMgY2FsbGVkLgogICAgICoKICAgICAqIEBwYXJhbSBTdWJzY3JpcHRpb25JbnRlcmZhY2UgJHN1YnNjcmlwdGlvbgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRwYXlsb2FkIElmIHlvdSB3YW50IHRvIHNlbmQgYW4gYXJyYXkgb3Igb2JqZWN0LCBqc29uX2VuY29kZSBpdAogICAgICogQHBhcmFtIGFycmF5ICRvcHRpb25zIEFycmF5IHdpdGggc2V2ZXJhbCBvcHRpb25zIHRpZWQgdG8gdGhpcyBub3RpZmljYXRpb24uIElmIG5vdCBzZXQsIHdpbGwgdXNlIHRoZSBkZWZhdWx0IG9wdGlvbnMgdGhhdCB5b3UgY2FuIHNldCBpbiB0aGUgV2ViUHVzaCBvYmplY3QKICAgICAqIEBwYXJhbSBhcnJheSAkYXV0aCBVc2UgdGhpcyBhdXRoIGRldGFpbHMgaW5zdGVhZCBvZiB3aGF0IHlvdSBwcm92aWRlZCB3aGVuIGNyZWF0aW5nIFdlYlB1c2gKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcXVldWVOb3RpZmljYXRpb24oU3Vic2NyaXB0aW9uSW50ZXJmYWNlICRzdWJzY3JpcHRpb24sID9zdHJpbmcgJHBheWxvYWQgPSBudWxsLCBhcnJheSAkb3B0aW9ucyA9IFtdLCBhcnJheSAkYXV0aCA9IFtdKTogdm9pZAogICAgewogICAgICAgIGlmIChpc3NldCgkcGF5bG9hZCkpIHsKICAgICAgICAgICAgaWYgKFV0aWxzOjpzYWZlU3RybGVuKCRwYXlsb2FkKSA+IEVuY3J5cHRpb246Ok1BWF9QQVlMT0FEX0xFTkdUSCkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignU2l6ZSBvZiBwYXlsb2FkIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiAnLkVuY3J5cHRpb246Ok1BWF9QQVlMT0FEX0xFTkdUSC4nIG9jdGV0cy4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGNvbnRlbnRFbmNvZGluZyA9ICRzdWJzY3JpcHRpb24tPmdldENvbnRlbnRFbmNvZGluZygpOwogICAgICAgICAgICBpZiAoISRjb250ZW50RW5jb2RpbmcpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ1N1YnNjcmlwdGlvbiBzaG91bGQgaGF2ZSBhIGNvbnRlbnQgZW5jb2RpbmcnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHBheWxvYWQgPSBFbmNyeXB0aW9uOjpwYWRQYXlsb2FkKCRwYXlsb2FkLCAkdGhpcy0+YXV0b21hdGljUGFkZGluZywgJGNvbnRlbnRFbmNvZGluZyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnVkFQSUQnLCAkYXV0aCkpIHsKICAgICAgICAgICAgJGF1dGhbJ1ZBUElEJ10gPSBWQVBJRDo6dmFsaWRhdGUoJGF1dGhbJ1ZBUElEJ10pOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPm5vdGlmaWNhdGlvbnNbXSA9IG5ldyBOb3RpZmljYXRpb24oJHN1YnNjcmlwdGlvbiwgJHBheWxvYWQsICRvcHRpb25zLCAkYXV0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gU3Vic2NyaXB0aW9uSW50ZXJmYWNlICRzdWJzY3JpcHRpb24KICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkcGF5bG9hZCBJZiB5b3Ugd2FudCB0byBzZW5kIGFuIGFycmF5IG9yIG9iamVjdCwganNvbl9lbmNvZGUgaXQKICAgICAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucyBBcnJheSB3aXRoIHNldmVyYWwgb3B0aW9ucyB0aWVkIHRvIHRoaXMgbm90aWZpY2F0aW9uLiBJZiBub3Qgc2V0LCB3aWxsIHVzZSB0aGUgZGVmYXVsdCBvcHRpb25zIHRoYXQgeW91IGNhbiBzZXQgaW4gdGhlIFdlYlB1c2ggb2JqZWN0CiAgICAgKiBAcGFyYW0gYXJyYXkgJGF1dGggVXNlIHRoaXMgYXV0aCBkZXRhaWxzIGluc3RlYWQgb2Ygd2hhdCB5b3UgcHJvdmlkZWQgd2hlbiBjcmVhdGluZyBXZWJQdXNoCiAgICAgKiBAcmV0dXJuIE1lc3NhZ2VTZW50UmVwb3J0CiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZE9uZU5vdGlmaWNhdGlvbihTdWJzY3JpcHRpb25JbnRlcmZhY2UgJHN1YnNjcmlwdGlvbiwgP3N0cmluZyAkcGF5bG9hZCA9IG51bGwsIGFycmF5ICRvcHRpb25zID0gW10sIGFycmF5ICRhdXRoID0gW10pOiBNZXNzYWdlU2VudFJlcG9ydAogICAgewogICAgICAgICR0aGlzLT5xdWV1ZU5vdGlmaWNhdGlvbigkc3Vic2NyaXB0aW9uLCAkcGF5bG9hZCwgJG9wdGlvbnMsICRhdXRoKTsKICAgICAgICByZXR1cm4gJHRoaXMtPmZsdXNoKCktPmN1cnJlbnQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZsdXNoIG5vdGlmaWNhdGlvbnMuIFRyaWdnZXJzIHRoZSByZXF1ZXN0cy4KICAgICAqCiAgICAgKiBAcGFyYW0gbnVsbHxpbnQgJGJhdGNoU2l6ZSBEZWZhdWx0cyB0aGUgdmFsdWUgZGVmaW5lZCBpbiBkZWZhdWx0T3B0aW9ucyBkdXJpbmcgaW5zdGFudGlhdGlvbiAod2hpY2ggZGVmYXVsdHMgdG8gMTAwMCkuCiAgICAgKgogICAgICogQHJldHVybiBcR2VuZXJhdG9yfE1lc3NhZ2VTZW50UmVwb3J0W10KICAgICAqIEB0aHJvd3MgXEVycm9yRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmbHVzaCg/aW50ICRiYXRjaFNpemUgPSBudWxsKTogXEdlbmVyYXRvcgogICAgewogICAgICAgIGlmIChudWxsID09PSAkdGhpcy0+bm90aWZpY2F0aW9ucyB8fCBlbXB0eSgkdGhpcy0+bm90aWZpY2F0aW9ucykpIHsKICAgICAgICAgICAgeWllbGQgZnJvbSBbXTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgPT09ICRiYXRjaFNpemUpIHsKICAgICAgICAgICAgJGJhdGNoU2l6ZSA9ICR0aGlzLT5kZWZhdWx0T3B0aW9uc1snYmF0Y2hTaXplJ107CiAgICAgICAgfQoKICAgICAgICAkYmF0Y2hlcyA9IGFycmF5X2NodW5rKCR0aGlzLT5ub3RpZmljYXRpb25zLCAkYmF0Y2hTaXplKTsKCiAgICAgICAgLy8gcmVzZXQgcXVldWUKICAgICAgICAkdGhpcy0+bm90aWZpY2F0aW9ucyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkYmF0Y2hlcyBhcyAkYmF0Y2gpIHsKICAgICAgICAgICAgLy8gZm9yIGVhY2ggZW5kcG9pbnQgc2VydmVyIHR5cGUKICAgICAgICAgICAgJHJlcXVlc3RzID0gJHRoaXMtPnByZXBhcmUoJGJhdGNoKTsKCiAgICAgICAgICAgICRwcm9taXNlcyA9IFtdOwoKICAgICAgICAgICAgZm9yZWFjaCAoJHJlcXVlc3RzIGFzICRyZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAkcHJvbWlzZXNbXSA9ICR0aGlzLT5jbGllbnQtPnNlbmRBc3luYygkcmVxdWVzdCkKICAgICAgICAgICAgICAgICAgICAtPnRoZW4oZnVuY3Rpb24gKCRyZXNwb25zZSkgdXNlICgkcmVxdWVzdCkgewogICAgICAgICAgICAgICAgICAgICAgICAvKiogQHZhciBSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UgKiAqLwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE1lc3NhZ2VTZW50UmVwb3J0KCRyZXF1ZXN0LCAkcmVzcG9uc2UpOwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgLT5vdGhlcndpc2UoZnVuY3Rpb24gKCRyZWFzb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB2YXIgUmVxdWVzdEV4Y2VwdGlvbiAkcmVhc29uICoqLwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygkcmVhc29uLCAnZ2V0UmVzcG9uc2UnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3BvbnNlID0gJHJlYXNvbi0+Z2V0UmVzcG9uc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXNwb25zZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNZXNzYWdlU2VudFJlcG9ydCgkcmVhc29uLT5nZXRSZXF1ZXN0KCksICRyZXNwb25zZSwgZmFsc2UsICRyZWFzb24tPmdldE1lc3NhZ2UoKSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvcmVhY2ggKCRwcm9taXNlcyBhcyAkcHJvbWlzZSkgewogICAgICAgICAgICAgICAgeWllbGQgJHByb21pc2UtPndhaXQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5yZXVzZVZBUElESGVhZGVycykgewogICAgICAgICAgICAkdGhpcy0+dmFwaWRIZWFkZXJzID0gW107CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRub3RpZmljYXRpb25zCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICoKICAgICAqIEB0aHJvd3MgXEVycm9yRXhjZXB0aW9uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwcmVwYXJlKGFycmF5ICRub3RpZmljYXRpb25zKTogYXJyYXkKICAgIHsKICAgICAgICAkcmVxdWVzdHMgPSBbXTsKICAgICAgICBmb3JlYWNoICgkbm90aWZpY2F0aW9ucyBhcyAkbm90aWZpY2F0aW9uKSB7CiAgICAgICAgICAgIFxhc3NlcnQoJG5vdGlmaWNhdGlvbiBpbnN0YW5jZW9mIE5vdGlmaWNhdGlvbik7CiAgICAgICAgICAgICRzdWJzY3JpcHRpb24gPSAkbm90aWZpY2F0aW9uLT5nZXRTdWJzY3JpcHRpb24oKTsKICAgICAgICAgICAgJGVuZHBvaW50ID0gJHN1YnNjcmlwdGlvbi0+Z2V0RW5kcG9pbnQoKTsKICAgICAgICAgICAgJHVzZXJQdWJsaWNLZXkgPSAkc3Vic2NyaXB0aW9uLT5nZXRQdWJsaWNLZXkoKTsKICAgICAgICAgICAgJHVzZXJBdXRoVG9rZW4gPSAkc3Vic2NyaXB0aW9uLT5nZXRBdXRoVG9rZW4oKTsKICAgICAgICAgICAgJGNvbnRlbnRFbmNvZGluZyA9ICRzdWJzY3JpcHRpb24tPmdldENvbnRlbnRFbmNvZGluZygpOwogICAgICAgICAgICAkcGF5bG9hZCA9ICRub3RpZmljYXRpb24tPmdldFBheWxvYWQoKTsKICAgICAgICAgICAgJG9wdGlvbnMgPSAkbm90aWZpY2F0aW9uLT5nZXRPcHRpb25zKCR0aGlzLT5nZXREZWZhdWx0T3B0aW9ucygpKTsKICAgICAgICAgICAgJGF1dGggPSAkbm90aWZpY2F0aW9uLT5nZXRBdXRoKCR0aGlzLT5hdXRoKTsKCiAgICAgICAgICAgIGlmICghZW1wdHkoJHBheWxvYWQpICYmICFlbXB0eSgkdXNlclB1YmxpY0tleSkgJiYgIWVtcHR5KCR1c2VyQXV0aFRva2VuKSkgewogICAgICAgICAgICAgICAgaWYgKCEkY29udGVudEVuY29kaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignU3Vic2NyaXB0aW9uIHNob3VsZCBoYXZlIGEgY29udGVudCBlbmNvZGluZycpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRlbmNyeXB0ZWQgPSBFbmNyeXB0aW9uOjplbmNyeXB0KCRwYXlsb2FkLCAkdXNlclB1YmxpY0tleSwgJHVzZXJBdXRoVG9rZW4sICRjb250ZW50RW5jb2RpbmcpOwogICAgICAgICAgICAgICAgJGNpcGhlclRleHQgPSAkZW5jcnlwdGVkWydjaXBoZXJUZXh0J107CiAgICAgICAgICAgICAgICAkc2FsdCA9ICRlbmNyeXB0ZWRbJ3NhbHQnXTsKICAgICAgICAgICAgICAgICRsb2NhbFB1YmxpY0tleSA9ICRlbmNyeXB0ZWRbJ2xvY2FsUHVibGljS2V5J107CgogICAgICAgICAgICAgICAgJGhlYWRlcnMgPSBbCiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZScgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtRW5jb2RpbmcnID0+ICRjb250ZW50RW5jb2RpbmcsCiAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgIGlmICgkY29udGVudEVuY29kaW5nID09PSAiYWVzZ2NtIikgewogICAgICAgICAgICAgICAgICAgICRoZWFkZXJzWydFbmNyeXB0aW9uJ10gPSAnc2FsdD0nLkJhc2U2NFVybDo6ZW5jb2RlKCRzYWx0KTsKICAgICAgICAgICAgICAgICAgICAkaGVhZGVyc1snQ3J5cHRvLUtleSddID0gJ2RoPScuQmFzZTY0VXJsOjplbmNvZGUoJGxvY2FsUHVibGljS2V5KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZW5jcnlwdGlvbkNvbnRlbnRDb2RpbmdIZWFkZXIgPSBFbmNyeXB0aW9uOjpnZXRDb250ZW50Q29kaW5nSGVhZGVyKCRzYWx0LCAkbG9jYWxQdWJsaWNLZXksICRjb250ZW50RW5jb2RpbmcpOwogICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkZW5jcnlwdGlvbkNvbnRlbnRDb2RpbmdIZWFkZXIuJGNpcGhlclRleHQ7CgogICAgICAgICAgICAgICAgJGhlYWRlcnNbJ0NvbnRlbnQtTGVuZ3RoJ10gPSBVdGlsczo6c2FmZVN0cmxlbigkY29udGVudCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkaGVhZGVycyA9IFsKICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1MZW5ndGgnID0+IDAsCiAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgICRjb250ZW50ID0gJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRoZWFkZXJzWydUVEwnXSA9ICRvcHRpb25zWydUVEwnXTsKCiAgICAgICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1sndXJnZW5jeSddKSkgewogICAgICAgICAgICAgICAgJGhlYWRlcnNbJ1VyZ2VuY3knXSA9ICRvcHRpb25zWyd1cmdlbmN5J107CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1sndG9waWMnXSkpIHsKICAgICAgICAgICAgICAgICRoZWFkZXJzWydUb3BpYyddID0gJG9wdGlvbnNbJ3RvcGljJ107CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdWQVBJRCcsICRhdXRoKSAmJiAkY29udGVudEVuY29kaW5nKSB7CiAgICAgICAgICAgICAgICAkYXVkaWVuY2UgPSBwYXJzZV91cmwoJGVuZHBvaW50LCBQSFBfVVJMX1NDSEVNRSkuJzovLycucGFyc2VfdXJsKCRlbmRwb2ludCwgUEhQX1VSTF9IT1NUKTsKICAgICAgICAgICAgICAgIGlmICghcGFyc2VfdXJsKCRhdWRpZW5jZSkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yRXhjZXB0aW9uKCdBdWRpZW5jZSAiJy4kYXVkaWVuY2UuJyIiIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQuJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHZhcGlkSGVhZGVycyA9ICR0aGlzLT5nZXRWQVBJREhlYWRlcnMoJGF1ZGllbmNlLCAkY29udGVudEVuY29kaW5nLCAkYXV0aFsnVkFQSUQnXSk7CgogICAgICAgICAgICAgICAgJGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9ICR2YXBpZEhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXTsKCiAgICAgICAgICAgICAgICBpZiAoJGNvbnRlbnRFbmNvZGluZyA9PT0gJ2Flc2djbScpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnQ3J5cHRvLUtleScsICRoZWFkZXJzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkaGVhZGVyc1snQ3J5cHRvLUtleSddIC49ICc7Jy4kdmFwaWRIZWFkZXJzWydDcnlwdG8tS2V5J107CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGhlYWRlcnNbJ0NyeXB0by1LZXknXSA9ICR2YXBpZEhlYWRlcnNbJ0NyeXB0by1LZXknXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyZXF1ZXN0c1tdID0gbmV3IFJlcXVlc3QoJ1BPU1QnLCAkZW5kcG9pbnQsICRoZWFkZXJzLCAkY29udGVudCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlcXVlc3RzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0F1dG9tYXRpY1BhZGRpbmcoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YXV0b21hdGljUGFkZGluZyAhPT0gMDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdXRvbWF0aWNQYWRkaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmF1dG9tYXRpY1BhZGRpbmc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50fGJvb2wgJGF1dG9tYXRpY1BhZGRpbmcgTWF4IHBhZGRpbmcgbGVuZ3RoCiAgICAgKgogICAgICogQHJldHVybiBXZWJQdXNoCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRBdXRvbWF0aWNQYWRkaW5nKCRhdXRvbWF0aWNQYWRkaW5nKTogV2ViUHVzaAogICAgewogICAgICAgIGlmICgkYXV0b21hdGljUGFkZGluZyA+IEVuY3J5cHRpb246Ok1BWF9QQVlMT0FEX0xFTkdUSCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEV4Y2VwdGlvbignQXV0b21hdGljIHBhZGRpbmcgaXMgdG9vIGxhcmdlLiBNYXggaXMgJy5FbmNyeXB0aW9uOjpNQVhfUEFZTE9BRF9MRU5HVEguJy4gUmVjb21tZW5kZWQgbWF4IGlzICcuRW5jcnlwdGlvbjo6TUFYX0NPTVBBVElCSUxJVFlfUEFZTE9BRF9MRU5HVEguJyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zIChzZWUgUkVBRE1FKS4nKTsKICAgICAgICB9IGVsc2VpZiAoJGF1dG9tYXRpY1BhZGRpbmcgPCAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdQYWRkaW5nIGxlbmd0aCBzaG91bGQgYmUgcG9zaXRpdmUgb3IgemVyby4nKTsKICAgICAgICB9IGVsc2VpZiAoJGF1dG9tYXRpY1BhZGRpbmcgPT09IHRydWUpIHsKICAgICAgICAgICAgJHRoaXMtPmF1dG9tYXRpY1BhZGRpbmcgPSBFbmNyeXB0aW9uOjpNQVhfQ09NUEFUSUJJTElUWV9QQVlMT0FEX0xFTkdUSDsKICAgICAgICB9IGVsc2VpZiAoJGF1dG9tYXRpY1BhZGRpbmcgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICR0aGlzLT5hdXRvbWF0aWNQYWRkaW5nID0gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+YXV0b21hdGljUGFkZGluZyA9ICRhdXRvbWF0aWNQYWRkaW5nOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZXVzZVZBUElESGVhZGVycygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXVzZVZBUElESGVhZGVyczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldXNlIFZBUElEIGhlYWRlcnMgaW4gdGhlIHNhbWUgZmx1c2ggc2Vzc2lvbiB0byBpbXByb3ZlIHBlcmZvcm1hbmNlCiAgICAgKiBAcGFyYW0gYm9vbCAkZW5hYmxlZAogICAgICoKICAgICAqIEByZXR1cm4gV2ViUHVzaAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0UmV1c2VWQVBJREhlYWRlcnMoYm9vbCAkZW5hYmxlZCkKICAgIHsKICAgICAgICAkdGhpcy0+cmV1c2VWQVBJREhlYWRlcnMgPSAkZW5hYmxlZDsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGVmYXVsdE9wdGlvbnMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRlZmF1bHRPcHRpb25zOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRkZWZhdWx0T3B0aW9ucyBLZXlzICdUVEwnIChUaW1lIFRvIExpdmUsIGRlZmF1bHRzIDQgd2Vla3MpLCAndXJnZW5jeScsICd0b3BpYycsICdiYXRjaFNpemUnCiAgICAgKgogICAgICogQHJldHVybiBXZWJQdXNoCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXREZWZhdWx0T3B0aW9ucyhhcnJheSAkZGVmYXVsdE9wdGlvbnMpCiAgICB7CiAgICAgICAgJHRoaXMtPmRlZmF1bHRPcHRpb25zWydUVEwnXSA9IGlzc2V0KCRkZWZhdWx0T3B0aW9uc1snVFRMJ10pID8gJGRlZmF1bHRPcHRpb25zWydUVEwnXSA6IDI0MTkyMDA7CiAgICAgICAgJHRoaXMtPmRlZmF1bHRPcHRpb25zWyd1cmdlbmN5J10gPSBpc3NldCgkZGVmYXVsdE9wdGlvbnNbJ3VyZ2VuY3knXSkgPyAkZGVmYXVsdE9wdGlvbnNbJ3VyZ2VuY3knXSA6IG51bGw7CiAgICAgICAgJHRoaXMtPmRlZmF1bHRPcHRpb25zWyd0b3BpYyddID0gaXNzZXQoJGRlZmF1bHRPcHRpb25zWyd0b3BpYyddKSA/ICRkZWZhdWx0T3B0aW9uc1sndG9waWMnXSA6IG51bGw7CiAgICAgICAgJHRoaXMtPmRlZmF1bHRPcHRpb25zWydiYXRjaFNpemUnXSA9IGlzc2V0KCRkZWZhdWx0T3B0aW9uc1snYmF0Y2hTaXplJ10pID8gJGRlZmF1bHRPcHRpb25zWydiYXRjaFNpemUnXSA6IDEwMDA7CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb3VudFBlbmRpbmdOb3RpZmljYXRpb25zKCk6IGludAogICAgewogICAgICAgIHJldHVybiBudWxsICE9PSAkdGhpcy0+bm90aWZpY2F0aW9ucyA/IGNvdW50KCR0aGlzLT5ub3RpZmljYXRpb25zKSA6IDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhdWRpZW5jZQogICAgICogQHBhcmFtIHN0cmluZyAkY29udGVudEVuY29kaW5nCiAgICAgKiBAcGFyYW0gYXJyYXkgJHZhcGlkCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0VkFQSURIZWFkZXJzKHN0cmluZyAkYXVkaWVuY2UsIHN0cmluZyAkY29udGVudEVuY29kaW5nLCBhcnJheSAkdmFwaWQpCiAgICB7CiAgICAgICAgJHZhcGlkSGVhZGVycyA9IG51bGw7CgogICAgICAgICRjYWNoZV9rZXkgPSBudWxsOwogICAgICAgIGlmICgkdGhpcy0+cmV1c2VWQVBJREhlYWRlcnMpIHsKICAgICAgICAgICAgJGNhY2hlX2tleSA9IGltcGxvZGUoJyMnLCBbJGF1ZGllbmNlLCAkY29udGVudEVuY29kaW5nLCBjcmMzMihzZXJpYWxpemUoJHZhcGlkKSldKTsKICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGNhY2hlX2tleSwgJHRoaXMtPnZhcGlkSGVhZGVycykpIHsKICAgICAgICAgICAgICAgICR2YXBpZEhlYWRlcnMgPSAkdGhpcy0+dmFwaWRIZWFkZXJzWyRjYWNoZV9rZXldOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoISR2YXBpZEhlYWRlcnMpIHsKICAgICAgICAgICAgJHZhcGlkSGVhZGVycyA9IFZBUElEOjpnZXRWYXBpZEhlYWRlcnMoJGF1ZGllbmNlLCAkdmFwaWRbJ3N1YmplY3QnXSwgJHZhcGlkWydwdWJsaWNLZXknXSwgJHZhcGlkWydwcml2YXRlS2V5J10sICRjb250ZW50RW5jb2RpbmcpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5yZXVzZVZBUElESGVhZGVycykgewogICAgICAgICAgICAkdGhpcy0+dmFwaWRIZWFkZXJzWyRjYWNoZV9rZXldID0gJHZhcGlkSGVhZGVyczsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdmFwaWRIZWFkZXJzOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDaGFuZ2Vsb2cKCkFsbCBub3RhYmxlIGNoYW5nZXMgdG8gdGhpcyBwcm9qZWN0IHdpbGwgYmUgZG9jdW1lbnRlZCBpbiB0aGlzIGZpbGUsIGluIHJldmVyc2UgY2hyb25vbG9naWNhbCBvcmRlciBieSByZWxlYXNlLgoKIyMgMS4wLjMKCkFkZCBgc291cmNlYCBsaW5rIGluIGNvbXBvc2VyLmpzb24uIE5vIGNvZGUgY2hhbmdlcy4KCiMjIDEuMC4yCgpBbGxvdyBQU1ItNyAocHNyL2h0dHAtbWVzc2FnZSkgMi4wLiBObyBjb2RlIGNoYW5nZXMuCgojIyAxLjAuMQoKQWxsb3cgaW5zdGFsbGF0aW9uIHdpdGggUEhQIDguIE5vIGNvZGUgY2hhbmdlcy4KCiMjIDEuMC4wCgpGaXJzdCBzdGFibGUgcmVsZWFzZS4gTm8gY2hhbmdlcyBzaW5jZSAwLjMuMC4KCiMjIDAuMy4wCgpBZGRlZCBJbnRlcmZhY2Ugc3VmZml4IG9uIGV4Y2VwdGlvbnMKIAojIyAwLjIuMCAKCkFsbCBleGNlcHRpb25zIGFyZSBpbiBgUHNyXEh0dHBcQ2xpZW50YCBuYW1lc3BhY2UKCiMjIDAuMS4wCgpGaXJzdCByZWxlYXNlCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAicHNyL2h0dHAtY2xpZW50IiwKICAgICJkZXNjcmlwdGlvbiI6ICJDb21tb24gaW50ZXJmYWNlIGZvciBIVFRQIGNsaWVudHMiLAogICAgImtleXdvcmRzIjogWyJwc3IiLCAicHNyLTE4IiwgImh0dHAiLCAiaHR0cC1jbGllbnQiXSwKICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLWNsaWVudCIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJQSFAtRklHIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vd3d3LnBocC1maWcub3JnLyIKICAgICAgICB9CiAgICBdLAogICAgInN1cHBvcnQiOiB7CiAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLWNsaWVudCIKICAgIH0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIl43LjAgfHwgXjguMCIsCiAgICAgICAgInBzci9odHRwLW1lc3NhZ2UiOiAiXjEuMCB8fCBeMi4wIgogICAgfSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJQc3JcXEh0dHBcXENsaWVudFxcIjogInNyYy8iCiAgICAgICAgfQogICAgfSwKICAgICJleHRyYSI6IHsKICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE3IFBIUCBGcmFtZXdvcmsgSW50ZXJvcGVyYWJpbGl0eSBHcm91cAoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSAKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyAKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIApmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gCmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KVEhFIFNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[SFRUUCBDbGllbnQKPT09PT09PT09PT0KClRoaXMgcmVwb3NpdG9yeSBob2xkcyBhbGwgdGhlIGNvbW1vbiBjb2RlIHJlbGF0ZWQgdG8gW1BTUi0xOCAoSFRUUCBDbGllbnQpXVtwc3ItdXJsXS4KCk5vdGUgdGhhdCB0aGlzIGlzIG5vdCBhIEhUVFAgQ2xpZW50IGltcGxlbWVudGF0aW9uIG9mIGl0cyBvd24uIEl0IGlzIG1lcmVseSBhYnN0cmFjdGlvbnMgdGhhdCBkZXNjcmliZSB0aGUgY29tcG9uZW50cyBvZiBhIEhUVFAgQ2xpZW50LgoKVGhlIGluc3RhbGxhYmxlIFtwYWNrYWdlXVtwYWNrYWdlLXVybF0gYW5kIFtpbXBsZW1lbnRhdGlvbnNdW2ltcGxlbWVudGF0aW9uLXVybF0gYXJlIGxpc3RlZCBvbiBQYWNrYWdpc3QuCgpbcHNyLXVybF06IGh0dHBzOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItMTgKW3BhY2thZ2UtdXJsXTogaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL3Bzci9odHRwLWNsaWVudApbaW1wbGVtZW50YXRpb24tdXJsXTogaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3Byb3ZpZGVycy9wc3IvaHR0cC1jbGllbnQtaW1wbGVtZW50YXRpb24K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/src/ClientExceptionInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxDbGllbnQ7CgovKioKICogRXZlcnkgSFRUUCBjbGllbnQgcmVsYXRlZCBleGNlcHRpb24gTVVTVCBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UuCiAqLwppbnRlcmZhY2UgQ2xpZW50RXhjZXB0aW9uSW50ZXJmYWNlIGV4dGVuZHMgXFRocm93YWJsZQp7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/src/ClientInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxDbGllbnQ7Cgp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKCmludGVyZmFjZSBDbGllbnRJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBTZW5kcyBhIFBTUi03IHJlcXVlc3QgYW5kIHJldHVybnMgYSBQU1ItNyByZXNwb25zZS4KICAgICAqCiAgICAgKiBAcGFyYW0gUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdAogICAgICoKICAgICAqIEByZXR1cm4gUmVzcG9uc2VJbnRlcmZhY2UKICAgICAqCiAgICAgKiBAdGhyb3dzIFxQc3JcSHR0cFxDbGllbnRcQ2xpZW50RXhjZXB0aW9uSW50ZXJmYWNlIElmIGFuIGVycm9yIGhhcHBlbnMgd2hpbGUgcHJvY2Vzc2luZyB0aGUgcmVxdWVzdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlbmRSZXF1ZXN0KFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QpOiBSZXNwb25zZUludGVyZmFjZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/src/NetworkExceptionInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxDbGllbnQ7Cgp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwoKLyoqCiAqIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBjb21wbGV0ZWQgYmVjYXVzZSBvZiBuZXR3b3JrIGlzc3Vlcy4KICoKICogVGhlcmUgaXMgbm8gcmVzcG9uc2Ugb2JqZWN0IGFzIHRoaXMgZXhjZXB0aW9uIGlzIHRocm93biB3aGVuIG5vIHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkLgogKgogKiBFeGFtcGxlOiB0aGUgdGFyZ2V0IGhvc3QgbmFtZSBjYW4gbm90IGJlIHJlc29sdmVkIG9yIHRoZSBjb25uZWN0aW9uIGZhaWxlZC4KICovCmludGVyZmFjZSBOZXR3b3JrRXhjZXB0aW9uSW50ZXJmYWNlIGV4dGVuZHMgQ2xpZW50RXhjZXB0aW9uSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVxdWVzdC4KICAgICAqCiAgICAgKiBUaGUgcmVxdWVzdCBvYmplY3QgTUFZIGJlIGEgZGlmZmVyZW50IG9iamVjdCBmcm9tIHRoZSBvbmUgcGFzc2VkIHRvIENsaWVudEludGVyZmFjZTo6c2VuZFJlcXVlc3QoKQogICAgICoKICAgICAqIEByZXR1cm4gUmVxdWVzdEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVxdWVzdCgpOiBSZXF1ZXN0SW50ZXJmYWNlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/src/RequestExceptionInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxDbGllbnQ7Cgp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwoKLyoqCiAqIEV4Y2VwdGlvbiBmb3Igd2hlbiBhIHJlcXVlc3QgZmFpbGVkLgogKgogKiBFeGFtcGxlczoKICogICAgICAtIFJlcXVlc3QgaXMgaW52YWxpZCAoZS5nLiBtZXRob2QgaXMgbWlzc2luZykKICogICAgICAtIFJ1bnRpbWUgcmVxdWVzdCBlcnJvcnMgKGUuZy4gdGhlIGJvZHkgc3RyZWFtIGlzIG5vdCBzZWVrYWJsZSkKICovCmludGVyZmFjZSBSZXF1ZXN0RXhjZXB0aW9uSW50ZXJmYWNlIGV4dGVuZHMgQ2xpZW50RXhjZXB0aW9uSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVxdWVzdC4KICAgICAqCiAgICAgKiBUaGUgcmVxdWVzdCBvYmplY3QgTUFZIGJlIGEgZGlmZmVyZW50IG9iamVjdCBmcm9tIHRoZSBvbmUgcGFzc2VkIHRvIENsaWVudEludGVyZmFjZTo6c2VuZFJlcXVlc3QoKQogICAgICoKICAgICAqIEByZXR1cm4gUmVxdWVzdEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVxdWVzdCgpOiBSZXF1ZXN0SW50ZXJmYWNlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAicHNyL2h0dHAtZmFjdG9yeSIsCiAgICAiZGVzY3JpcHRpb24iOiAiUFNSLTE3OiBDb21tb24gaW50ZXJmYWNlcyBmb3IgUFNSLTcgSFRUUCBtZXNzYWdlIGZhY3RvcmllcyIsCiAgICAia2V5d29yZHMiOiBbCiAgICAgICAgInBzciIsCiAgICAgICAgInBzci03IiwKICAgICAgICAicHNyLTE3IiwKICAgICAgICAiaHR0cCIsCiAgICAgICAgImZhY3RvcnkiLAogICAgICAgICJtZXNzYWdlIiwKICAgICAgICAicmVxdWVzdCIsCiAgICAgICAgInJlc3BvbnNlIgogICAgXSwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlBIUC1GSUciLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgIH0KICAgIF0sCiAgICAic3VwcG9ydCI6IHsKICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtZmFjdG9yeSIKICAgIH0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIj49Ny4xIiwKICAgICAgICAicHNyL2h0dHAtbWVzc2FnZSI6ICJeMS4wIHx8IF4yLjAiCiAgICB9LAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIlBzclxcSHR0cFxcTWVzc2FnZVxcIjogInNyYy8iCiAgICAgICAgfQogICAgfSwKICAgICJleHRyYSI6IHsKICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TUlUIExpY2Vuc2UKCkNvcHlyaWdodCAoYykgMjAxOCBQSFAtRklHCgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbApjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbApjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFClNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[SFRUUCBGYWN0b3JpZXMKPT09PT09PT09PT09PT0KClRoaXMgcmVwb3NpdG9yeSBob2xkcyBhbGwgaW50ZXJmYWNlcyByZWxhdGVkIHRvIFtQU1ItMTcgKEhUVFAgRmFjdG9yaWVzKV1bcHNyLXVybF0uCgpOb3RlIHRoYXQgdGhpcyBpcyBub3QgYSBIVFRQIEZhY3RvcnkgaW1wbGVtZW50YXRpb24gb2YgaXRzIG93bi4gSXQgaXMgbWVyZWx5IGludGVyZmFjZXMgdGhhdCBkZXNjcmliZSB0aGUgY29tcG9uZW50cyBvZiBhIEhUVFAgRmFjdG9yeS4KClRoZSBpbnN0YWxsYWJsZSBbcGFja2FnZV1bcGFja2FnZS11cmxdIGFuZCBbaW1wbGVtZW50YXRpb25zXVtpbXBsZW1lbnRhdGlvbi11cmxdIGFyZSBsaXN0ZWQgb24gUGFja2FnaXN0LgoKW3Bzci11cmxdOiBodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTE3LwpbcGFja2FnZS11cmxdOiBodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvcHNyL2h0dHAtZmFjdG9yeQpbaW1wbGVtZW50YXRpb24tdXJsXTogaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3Byb3ZpZGVycy9wc3IvaHR0cC1mYWN0b3J5LWltcGxlbWVudGF0aW9uCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/src/RequestFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IHJlcXVlc3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbWV0aG9kIFRoZSBIVFRQIG1ldGhvZCBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3QuCiAgICAgKiBAcGFyYW0gVXJpSW50ZXJmYWNlfHN0cmluZyAkdXJpIFRoZSBVUkkgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXF1ZXN0LiBJZgogICAgICogICAgIHRoZSB2YWx1ZSBpcyBhIHN0cmluZywgdGhlIGZhY3RvcnkgTVVTVCBjcmVhdGUgYSBVcmlJbnRlcmZhY2UKICAgICAqICAgICBpbnN0YW5jZSBiYXNlZCBvbiBpdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIFJlcXVlc3RJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3Qoc3RyaW5nICRtZXRob2QsICR1cmkpOiBSZXF1ZXN0SW50ZXJmYWNlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/src/ResponseFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFJlc3BvbnNlRmFjdG9yeUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyByZXNwb25zZS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRjb2RlIEhUVFAgc3RhdHVzIGNvZGU7IGRlZmF1bHRzIHRvIDIwMAogICAgICogQHBhcmFtIHN0cmluZyAkcmVhc29uUGhyYXNlIFJlYXNvbiBwaHJhc2UgdG8gYXNzb2NpYXRlIHdpdGggc3RhdHVzIGNvZGUKICAgICAqICAgICBpbiBnZW5lcmF0ZWQgcmVzcG9uc2U7IGlmIG5vbmUgaXMgcHJvdmlkZWQgaW1wbGVtZW50YXRpb25zIE1BWSB1c2UKICAgICAqICAgICB0aGUgZGVmYXVsdHMgYXMgc3VnZ2VzdGVkIGluIHRoZSBIVFRQIHNwZWNpZmljYXRpb24uCiAgICAgKgogICAgICogQHJldHVybiBSZXNwb25zZUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlUmVzcG9uc2UoaW50ICRjb2RlID0gMjAwLCBzdHJpbmcgJHJlYXNvblBocmFzZSA9ICcnKTogUmVzcG9uc2VJbnRlcmZhY2U7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/src/ServerRequestFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFNlcnZlclJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IHNlcnZlciByZXF1ZXN0LgogICAgICoKICAgICAqIE5vdGUgdGhhdCBzZXJ2ZXItcGFyYW1zIGFyZSB0YWtlbiBwcmVjaXNlbHkgYXMgZ2l2ZW4gLSBubyBwYXJzaW5nL3Byb2Nlc3NpbmcKICAgICAqIG9mIHRoZSBnaXZlbiB2YWx1ZXMgaXMgcGVyZm9ybWVkLCBhbmQsIGluIHBhcnRpY3VsYXIsIG5vIGF0dGVtcHQgaXMgbWFkZSB0bwogICAgICogZGV0ZXJtaW5lIHRoZSBIVFRQIG1ldGhvZCBvciBVUkksIHdoaWNoIG11c3QgYmUgcHJvdmlkZWQgZXhwbGljaXRseS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtZXRob2QgVGhlIEhUVFAgbWV0aG9kIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVxdWVzdC4KICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2V8c3RyaW5nICR1cmkgVGhlIFVSSSBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3QuIElmCiAgICAgKiAgICAgdGhlIHZhbHVlIGlzIGEgc3RyaW5nLCB0aGUgZmFjdG9yeSBNVVNUIGNyZWF0ZSBhIFVyaUludGVyZmFjZQogICAgICogICAgIGluc3RhbmNlIGJhc2VkIG9uIGl0LgogICAgICogQHBhcmFtIGFycmF5ICRzZXJ2ZXJQYXJhbXMgQXJyYXkgb2YgU0FQSSBwYXJhbWV0ZXJzIHdpdGggd2hpY2ggdG8gc2VlZAogICAgICogICAgIHRoZSBnZW5lcmF0ZWQgcmVxdWVzdCBpbnN0YW5jZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFNlcnZlclJlcXVlc3RJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVNlcnZlclJlcXVlc3Qoc3RyaW5nICRtZXRob2QsICR1cmksIGFycmF5ICRzZXJ2ZXJQYXJhbXMgPSBbXSk6IFNlcnZlclJlcXVlc3RJbnRlcmZhY2U7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/src/StreamFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFN0cmVhbUZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgc3RyZWFtIGZyb20gYSBzdHJpbmcuCiAgICAgKgogICAgICogVGhlIHN0cmVhbSBTSE9VTEQgYmUgY3JlYXRlZCB3aXRoIGEgdGVtcG9yYXJ5IHJlc291cmNlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbnRlbnQgU3RyaW5nIGNvbnRlbnQgd2l0aCB3aGljaCB0byBwb3B1bGF0ZSB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIEByZXR1cm4gU3RyZWFtSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVTdHJlYW0oc3RyaW5nICRjb250ZW50ID0gJycpOiBTdHJlYW1JbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBzdHJlYW0gZnJvbSBhbiBleGlzdGluZyBmaWxlLgogICAgICoKICAgICAqIFRoZSBmaWxlIE1VU1QgYmUgb3BlbmVkIHVzaW5nIHRoZSBnaXZlbiBtb2RlLCB3aGljaCBtYXkgYmUgYW55IG1vZGUKICAgICAqIHN1cHBvcnRlZCBieSB0aGUgYGZvcGVuYCBmdW5jdGlvbi4KICAgICAqCiAgICAgKiBUaGUgYCRmaWxlbmFtZWAgTUFZIGJlIGFueSBzdHJpbmcgc3VwcG9ydGVkIGJ5IGBmb3BlbigpYC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZSBGaWxlbmFtZSBvciBzdHJlYW0gVVJJIHRvIHVzZSBhcyBiYXNpcyBvZiBzdHJlYW0uCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtb2RlIE1vZGUgd2l0aCB3aGljaCB0byBvcGVuIHRoZSB1bmRlcmx5aW5nIGZpbGVuYW1lL3N0cmVhbS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFN0cmVhbUludGVyZmFjZQogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBJZiB0aGUgZmlsZSBjYW5ub3QgYmUgb3BlbmVkLgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBtb2RlIGlzIGludmFsaWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVTdHJlYW1Gcm9tRmlsZShzdHJpbmcgJGZpbGVuYW1lLCBzdHJpbmcgJG1vZGUgPSAncicpOiBTdHJlYW1JbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgc3RyZWFtIGZyb20gYW4gZXhpc3RpbmcgcmVzb3VyY2UuCiAgICAgKgogICAgICogVGhlIHN0cmVhbSBNVVNUIGJlIHJlYWRhYmxlIGFuZCBtYXkgYmUgd3JpdGFibGUuCiAgICAgKgogICAgICogQHBhcmFtIHJlc291cmNlICRyZXNvdXJjZSBQSFAgcmVzb3VyY2UgdG8gdXNlIGFzIGJhc2lzIG9mIHN0cmVhbS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFN0cmVhbUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlU3RyZWFtRnJvbVJlc291cmNlKCRyZXNvdXJjZSk6IFN0cmVhbUludGVyZmFjZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/src/UploadedFileFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFVwbG9hZGVkRmlsZUZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgdXBsb2FkZWQgZmlsZS4KICAgICAqCiAgICAgKiBJZiBhIHNpemUgaXMgbm90IHByb3ZpZGVkIGl0IHdpbGwgYmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGUgc2l6ZSBvZgogICAgICogdGhlIGZpbGUuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vcGhwLm5ldC9tYW51YWwvZmVhdHVyZXMuZmlsZS11cGxvYWQucG9zdC1tZXRob2QucGhwCiAgICAgKiBAc2VlIGh0dHA6Ly9waHAubmV0L21hbnVhbC9mZWF0dXJlcy5maWxlLXVwbG9hZC5lcnJvcnMucGhwCiAgICAgKgogICAgICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAkc3RyZWFtIFVuZGVybHlpbmcgc3RyZWFtIHJlcHJlc2VudGluZyB0aGUKICAgICAqICAgICB1cGxvYWRlZCBmaWxlIGNvbnRlbnQuCiAgICAgKiBAcGFyYW0gaW50fG51bGwgJHNpemUgaW4gYnl0ZXMKICAgICAqIEBwYXJhbSBpbnQgJGVycm9yIFBIUCBmaWxlIHVwbG9hZCBlcnJvcgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRjbGllbnRGaWxlbmFtZSBGaWxlbmFtZSBhcyBwcm92aWRlZCBieSB0aGUgY2xpZW50LCBpZiBhbnkuCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGNsaWVudE1lZGlhVHlwZSBNZWRpYSB0eXBlIGFzIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQsIGlmIGFueS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFVwbG9hZGVkRmlsZUludGVyZmFjZQogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgZmlsZSByZXNvdXJjZSBpcyBub3QgcmVhZGFibGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVVcGxvYWRlZEZpbGUoCiAgICAgICAgU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0sCiAgICAgICAgP2ludCAkc2l6ZSA9IG51bGwsCiAgICAgICAgaW50ICRlcnJvciA9IFxVUExPQURfRVJSX09LLAogICAgICAgID9zdHJpbmcgJGNsaWVudEZpbGVuYW1lID0gbnVsbCwKICAgICAgICA/c3RyaW5nICRjbGllbnRNZWRpYVR5cGUgPSBudWxsCiAgICApOiBVcGxvYWRlZEZpbGVJbnRlcmZhY2U7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/src/UriFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFVyaUZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgVVJJLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVyaQogICAgICoKICAgICAqIEByZXR1cm4gVXJpSW50ZXJmYWNlCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBnaXZlbiBVUkkgY2Fubm90IGJlIHBhcnNlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVVyaShzdHJpbmcgJHVyaSA9ICcnKTogVXJpSW50ZXJmYWNlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDaGFuZ2Vsb2cKCkFsbCBub3RhYmxlIGNoYW5nZXMgdG8gdGhpcyBwcm9qZWN0IHdpbGwgYmUgZG9jdW1lbnRlZCBpbiB0aGlzIGZpbGUsIGluIHJldmVyc2UgY2hyb25vbG9naWNhbCBvcmRlciBieSByZWxlYXNlLgoKIyMgMS4wLjEgLSAyMDE2LTA4LTA2CgojIyMgQWRkZWQKCi0gTm90aGluZy4KCiMjIyBEZXByZWNhdGVkCgotIE5vdGhpbmcuCgojIyMgUmVtb3ZlZAoKLSBOb3RoaW5nLgoKIyMjIEZpeGVkCgotIFVwZGF0ZWQgYWxsIGBAcmV0dXJuIHNlbGZgIGFubm90YXRpb24gcmVmZXJlbmNlcyBpbiBpbnRlcmZhY2VzIHRvIHVzZQogIGBAcmV0dXJuIHN0YXRpY2AsIHdoaWNoIG1vcmUgY2xvc2VsbHkgZm9sbG93cyB0aGUgc2VtYW50aWNzIG9mIHRoZQogIHNwZWNpZmljYXRpb24uCi0gVXBkYXRlZCB0aGUgYE1lc3NhZ2VJbnRlcmZhY2U6OmdldEhlYWRlcnMoKWAgcmV0dXJuIGFubm90YXRpb24gdG8gdXNlIHRoZQogIHZhbHVlIGBzdHJpbmdbXVtdYCwgaW5kaWNhdGluZyB0aGUgZm9ybWF0IGlzIGEgbmVzdGVkIGFycmF5IG9mIHN0cmluZ3MuCi0gVXBkYXRlZCB0aGUgYEBsaW5rYCBhbm5vdGF0aW9uIGZvciBgUmVxdWVzdEludGVyZmFjZTo6d2l0aFJlcXVlc3RUYXJnZXQoKWAKICB0byBwb2ludCB0byB0aGUgY29ycmVjdCBzZWN0aW9uIG9mIFJGQyA3MjMwLgotIFVwZGF0ZWQgdGhlIGBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlOjp3aXRoVXBsb2FkZWRGaWxlcygpYCBwYXJhbWV0ZXIgYW5ub3RhdGlvbgogIHRvIGFkZCB0aGUgcGFyYW1ldGVyIG5hbWUgKGAkdXBsb2FkZWRGaWxlc2ApLgotIFVwZGF0ZWQgYSBgQHRocm93c2AgYW5ub3RhdGlvbiBmb3IgdGhlIGBVcGxvYWRlZEZpbGVJbnRlcmZhY2U6Om1vdmVUbygpYAogIG1ldGhvZCB0byBjb3JyZWN0bHkgcmVmZXJlbmNlIHRoZSBtZXRob2QgcGFyYW1ldGVyIChpdCB3YXMgcmVmZXJlbmNpbmcgYW4KICBpbmNvcnJlY3QgcGFyYW1ldGVyIG5hbWUgcHJldmlvdXNseSkuCgojIyAxLjAuMCAtIDIwMTYtMDUtMTgKCkluaXRpYWwgc3RhYmxlIHJlbGVhc2U7IHJlZmxlY3RzIGFjY2VwdGVkIFBTUi03IHNwZWNpZmljYXRpb24uCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAicHNyL2h0dHAtbWVzc2FnZSIsCiAgICAiZGVzY3JpcHRpb24iOiAiQ29tbW9uIGludGVyZmFjZSBmb3IgSFRUUCBtZXNzYWdlcyIsCiAgICAia2V5d29yZHMiOiBbInBzciIsICJwc3ItNyIsICJodHRwIiwgImh0dHAtbWVzc2FnZSIsICJyZXF1ZXN0IiwgInJlc3BvbnNlIl0sCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1tZXNzYWdlIiwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlBIUC1GSUciLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgIH0KICAgIF0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIl43LjIgfHwgXjguMCIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiUHNyXFxIdHRwXFxNZXNzYWdlXFwiOiAic3JjLyIKICAgICAgICB9CiAgICB9LAogICAgImV4dHJhIjogewogICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjIuMC54LWRldiIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/docs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/docs/PSR7-Interfaces.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBJbnRlcmZhY2VzCgpUaGUgcHVycG9zZSBvZiB0aGlzIGxpc3QgaXMgdG8gaGVscCBpbiBmaW5kaW5nIHRoZSBtZXRob2RzIHdoZW4gd29ya2luZyB3aXRoIFBTUi03LiBUaGlzIGNhbiBiZSBjb25zaWRlcmVkIGFzIGEgY2hlYXRzaGVldCBmb3IgUFNSLTcgaW50ZXJmYWNlcy4KClRoZSBpbnRlcmZhY2VzIGRlZmluZWQgaW4gUFNSLTcgYXJlIHRoZSBmb2xsb3dpbmc6Cgp8IENsYXNzIE5hbWUgfCBEZXNjcmlwdGlvbiB8CnwtLS18LS0tfAp8IFtQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2VdKGh0dHA6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LyNwc3JodHRwbWVzc2FnZW1lc3NhZ2VpbnRlcmZhY2UpIHwgUmVwcmVzZW50YXRpb24gb2YgYSBIVFRQIG1lc3NhZ2UgfAp8IFtQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2VdKGh0dHA6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LyNwc3JodHRwbWVzc2FnZXJlcXVlc3RpbnRlcmZhY2UpIHwgUmVwcmVzZW50YXRpb24gb2YgYW4gb3V0Z29pbmcsIGNsaWVudC1zaWRlIHJlcXVlc3QuIHwKfCBbUHNyXEh0dHBcTWVzc2FnZVxTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlXShodHRwOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItNy8jcHNyaHR0cG1lc3NhZ2VzZXJ2ZXJyZXF1ZXN0aW50ZXJmYWNlKSB8IFJlcHJlc2VudGF0aW9uIG9mIGFuIGluY29taW5nLCBzZXJ2ZXItc2lkZSBIVFRQIHJlcXVlc3QuIHwgCnwgW1BzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2VdKGh0dHA6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LyNwc3JodHRwbWVzc2FnZXJlc3BvbnNlaW50ZXJmYWNlKSB8IFJlcHJlc2VudGF0aW9uIG9mIGFuIG91dGdvaW5nLCBzZXJ2ZXItc2lkZSByZXNwb25zZS4gfAp8IFtQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZV0oaHR0cDovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTcvI3Bzcmh0dHBtZXNzYWdlc3RyZWFtaW50ZXJmYWNlKSB8IERlc2NyaWJlcyBhIGRhdGEgc3RyZWFtIHwKfCBbUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2VdKGh0dHA6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LyNwc3JodHRwbWVzc2FnZXVyaWludGVyZmFjZSkgfCBWYWx1ZSBvYmplY3QgcmVwcmVzZW50aW5nIGEgVVJJLiB8CnwgW1BzclxIdHRwXE1lc3NhZ2VcVXBsb2FkZWRGaWxlSW50ZXJmYWNlXShodHRwOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItNy8jcHNyaHR0cG1lc3NhZ2V1cGxvYWRlZGZpbGVpbnRlcmZhY2UpIHwgVmFsdWUgb2JqZWN0IHJlcHJlc2VudGluZyBhIGZpbGUgdXBsb2FkZWQgdGhyb3VnaCBhbiBIVFRQIHJlcXVlc3QuIHwKCiMjIGBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2VgIE1ldGhvZHMKCnwgTWV0aG9kIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uIHwgTm90ZXMgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAtLS0tLS0tLS0tLSB8IC0tLS0tIHwKfCBgZ2V0UHJvdG9jb2xWZXJzaW9uKClgICAgICAgICAgICAgIHwgUmV0cmlldmUgSFRUUCBwcm90b2NvbCB2ZXJzaW9uICAgICAgICAgIHwgIDEuMCBvciAxLjEgfAp8IGB3aXRoUHJvdG9jb2xWZXJzaW9uKCR2ZXJzaW9uKWAgICAgfCBSZXR1cm5zIG5ldyBtZXNzYWdlIGluc3RhbmNlIHdpdGggZ2l2ZW4gSFRUUCBwcm90b2NvbCB2ZXJzaW9uICAgICAgICAgIHwgICAgICB8CnwgYGdldEhlYWRlcnMoKWAgICAgICAgICAgICAgICAgICAgICB8IFJldHJpZXZlIGFsbCBIVFRQIEhlYWRlcnMgICAgICAgICAgICAgICB8IFtSZXF1ZXN0IEhlYWRlciBMaXN0XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX0hUVFBfaGVhZGVyX2ZpZWxkcyNSZXF1ZXN0X2ZpZWxkcyksIFtSZXNwb25zZSBIZWFkZXIgTGlzdF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl9IVFRQX2hlYWRlcl9maWVsZHMjUmVzcG9uc2VfZmllbGRzKSAgICAgIHwKfCBgaGFzSGVhZGVyKCRuYW1lKWAgICAgICAgICAgICAgICAgIHwgQ2hlY2tzIGlmIEhUVFAgSGVhZGVyIHdpdGggZ2l2ZW4gbmFtZSBleGlzdHMgIHwgfAp8IGBnZXRIZWFkZXIoJG5hbWUpYCAgICAgICAgICAgICAgICAgfCBSZXRyaWV2ZXMgYSBhcnJheSB3aXRoIHRoZSB2YWx1ZXMgZm9yIGEgc2luZ2xlIGhlYWRlciB8IHwKfCBgZ2V0SGVhZGVyTGluZSgkbmFtZSlgICAgICAgICAgICAgIHwgUmV0cmlldmVzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyBvZiB0aGUgdmFsdWVzIGZvciBhIHNpbmdsZSBoZWFkZXIgfCAgfAp8IGB3aXRoSGVhZGVyKCRuYW1lLCAkdmFsdWUpYCAgICAgICAgfCBSZXR1cm5zIG5ldyBtZXNzYWdlIGluc3RhbmNlIHdpdGggZ2l2ZW4gSFRUUCBIZWFkZXIgfCBpZiB0aGUgaGVhZGVyIGV4aXN0ZWQgaW4gdGhlIG9yaWdpbmFsIGluc3RhbmNlLCByZXBsYWNlcyB0aGUgaGVhZGVyIHZhbHVlIGZyb20gdGhlIG9yaWdpbmFsIG1lc3NhZ2Ugd2l0aCB0aGUgdmFsdWUgcHJvdmlkZWQgd2hlbiBjcmVhdGluZyB0aGUgbmV3IGluc3RhbmNlLiB8CnwgYHdpdGhBZGRlZEhlYWRlcigkbmFtZSwgJHZhbHVlKWAgICB8IFJldHVybnMgbmV3IG1lc3NhZ2UgaW5zdGFuY2Ugd2l0aCBhcHBlbmRlZCB2YWx1ZSB0byBnaXZlbiBoZWFkZXIgfCBJZiBoZWFkZXIgYWxyZWFkeSBleGlzdHMgdmFsdWUgd2lsbCBiZSBhcHBlbmRlZCwgaWYgbm90IGEgbmV3IGhlYWRlciB3aWxsIGJlIGNyZWF0ZWQgfAp8IGB3aXRob3V0SGVhZGVyKCRuYW1lKWAgICAgICAgICAgICAgfCBSZW1vdmVzIEhUVFAgSGVhZGVyIHdpdGggZ2l2ZW4gbmFtZXwgfAp8IGBnZXRCb2R5KClgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZXRyaWV2ZXMgdGhlIEhUVFAgTWVzc2FnZSBCb2R5IHwgUmV0dXJucyBvYmplY3QgaW1wbGVtZW50aW5nIGBTdHJlYW1JbnRlcmZhY2VgfAp8IGB3aXRoQm9keShTdHJlYW1JbnRlcmZhY2UgJGJvZHkpYCAgfCBSZXR1cm5zIG5ldyBtZXNzYWdlIGluc3RhbmNlIHdpdGggZ2l2ZW4gSFRUUCBNZXNzYWdlIEJvZHkgfCB8CgoKIyMgYFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZWAgTWV0aG9kcwoKU2FtZSBtZXRob2RzIGFzIGBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2VgICArIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKCnwgTWV0aG9kIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uIHwgTm90ZXMgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAtLS0tLS0tLS0tLSB8IC0tLS0tIHwKfCBgZ2V0UmVxdWVzdFRhcmdldCgpYCAgICAgICAgICAgICAgICB8IFJldHJpZXZlcyB0aGUgbWVzc2FnZSdzIHJlcXVlc3QgdGFyZ2V0ICAgICAgICAgICAgICB8IG9yaWdpbi1mb3JtLCBhYnNvbHV0ZS1mb3JtLCBhdXRob3JpdHktZm9ybSwgYXN0ZXJpc2stZm9ybSAoW1JGQzcyMzBdKGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM3MjMwLnR4dCkpIHwKfCBgd2l0aFJlcXVlc3RUYXJnZXQoJHJlcXVlc3RUYXJnZXQpYCB8IFJldHVybiBhIG5ldyBtZXNzYWdlIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmljIHJlcXVlc3QtdGFyZ2V0IHwgICAgICB8CnwgYGdldE1ldGhvZCgpYCAgICAgICAgICAgICAgICAgICAgICAgfCBSZXRyaWV2ZXMgdGhlIEhUVFAgbWV0aG9kIG9mIHRoZSByZXF1ZXN0LiAgfCAgR0VULCBIRUFELCBQT1NULCBQVVQsIERFTEVURSwgQ09OTkVDVCwgT1BUSU9OUywgVFJBQ0UgKGRlZmluZWQgaW4gW1JGQzcyMzFdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxKSksIFBBVENIIChkZWZpbmVkIGluIFtSRkM1Nzg5XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTc4OSkpIHwKfCBgd2l0aE1ldGhvZCgkbWV0aG9kKWAgICAgICAgICAgICAgICB8IFJldHVybnMgYSBuZXcgbWVzc2FnZSBpbnN0YW5jZSB3aXRoIHRoZSBwcm92aWRlZCBIVFRQIG1ldGhvZCAgfCB8CnwgYGdldFVyaSgpYCAgICAgICAgICAgICAgICAgfCBSZXRyaWV2ZXMgdGhlIFVSSSBpbnN0YW5jZSB8IHwKfCBgd2l0aFVyaShVcmlJbnRlcmZhY2UgJHVyaSwgJHByZXNlcnZlSG9zdCA9IGZhbHNlKWAgfCBSZXR1cm5zIGEgbmV3IG1lc3NhZ2UgaW5zdGFuY2Ugd2l0aCB0aGUgcHJvdmlkZWQgVVJJIHwgIHwKCgojIyBgUHNyXEh0dHBcTWVzc2FnZVxTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlYCBNZXRob2RzCgpTYW1lIG1ldGhvZHMgYXMgYFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZWAgICsgdGhlIGZvbGxvd2luZyBtZXRob2RzOgoKfCBNZXRob2QgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gfCBOb3RlcyB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IC0tLS0tLS0tLS0tIHwgLS0tLS0gfAp8IGBnZXRTZXJ2ZXJQYXJhbXMoKSBgICAgICAgICAgICAgICAgfCBSZXRyaWV2ZSBzZXJ2ZXIgcGFyYW1ldGVycyAgfCBUeXBpY2FsbHkgZGVyaXZlZCBmcm9tIGAkX1NFUlZFUmAgIHwKfCBgZ2V0Q29va2llUGFyYW1zKClgICAgICAgICAgICAgICAgIHwgUmV0cmlldmVzIGNvb2tpZXMgc2VudCBieSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIuIHwgVHlwaWNhbGx5IGRlcml2ZWQgZnJvbSBgJF9DT09LSUVTYCB8CnwgYHdpdGhDb29raWVQYXJhbXMoYXJyYXkgJGNvb2tpZXMpYCB8ICBSZXR1cm5zIGEgbmV3IHJlcXVlc3QgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGNvb2tpZXMgICAgICB8ICAgfCAKfCBgd2l0aFF1ZXJ5UGFyYW1zKGFycmF5ICRxdWVyeSlgIHwgUmV0dXJucyBhIG5ldyByZXF1ZXN0IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBxdWVyeSBzdHJpbmcgYXJndW1lbnRzICB8ICB8CnwgYGdldFVwbG9hZGVkRmlsZXMoKWAgfCBSZXRyaWV2ZSBub3JtYWxpemVkIGZpbGUgdXBsb2FkIGRhdGEgIHwgIHwKfCBgd2l0aFVwbG9hZGVkRmlsZXMoYXJyYXkgJHVwbG9hZGVkRmlsZXMpYCB8IFJldHVybnMgYSBuZXcgcmVxdWVzdCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgdXBsb2FkZWQgZmlsZXMgIHwgIHwKfCBgZ2V0UGFyc2VkQm9keSgpYCB8IFJldHJpZXZlIGFueSBwYXJhbWV0ZXJzIHByb3ZpZGVkIGluIHRoZSByZXF1ZXN0IGJvZHkgIHwgIHwKfCBgd2l0aFBhcnNlZEJvZHkoJGRhdGEpYCB8IFJldHVybnMgYSBuZXcgcmVxdWVzdCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgYm9keSBwYXJhbWV0ZXJzICB8ICB8CnwgYGdldEF0dHJpYnV0ZXMoKWAgfCBSZXRyaWV2ZSBhdHRyaWJ1dGVzIGRlcml2ZWQgZnJvbSB0aGUgcmVxdWVzdCAgfCAgfAp8IGBnZXRBdHRyaWJ1dGUoJG5hbWUsICRkZWZhdWx0ID0gbnVsbClgIHwgUmV0cmlldmUgYSBzaW5nbGUgZGVyaXZlZCByZXF1ZXN0IGF0dHJpYnV0ZSAgfCAgfAp8IGB3aXRoQXR0cmlidXRlKCRuYW1lLCAkdmFsdWUpYCB8IFJldHVybnMgYSBuZXcgcmVxdWVzdCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZGVyaXZlZCByZXF1ZXN0IGF0dHJpYnV0ZSAgfCAgfAp8IGB3aXRob3V0QXR0cmlidXRlKCRuYW1lKWAgfCBSZXR1cm5zIGEgbmV3IHJlcXVlc3QgaW5zdGFuY2UgdGhhdCB3aXRob3V0IHRoZSBzcGVjaWZpZWQgZGVyaXZlZCByZXF1ZXN0IGF0dHJpYnV0ZSAgfCAgfAoKIyMgYFBzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2VgIE1ldGhvZHM6CgpTYW1lIG1ldGhvZHMgYXMgYFBzclxIdHRwXE1lc3NhZ2VcTWVzc2FnZUludGVyZmFjZWAgICsgdGhlIGZvbGxvd2luZyBtZXRob2RzOgoKfCBNZXRob2QgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gfCBOb3RlcyB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IC0tLS0tLS0tLS0tIHwgLS0tLS0gfAp8IGBnZXRTdGF0dXNDb2RlKClgIHwgR2V0cyB0aGUgcmVzcG9uc2Ugc3RhdHVzIGNvZGUuIHwgfAp8IGB3aXRoU3RhdHVzKCRjb2RlLCAkcmVhc29uUGhyYXNlID0gJycpYCB8IFJldHVybnMgYSBuZXcgcmVzcG9uc2UgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHN0YXR1cyBjb2RlIGFuZCwgb3B0aW9uYWxseSwgcmVhc29uIHBocmFzZS4gfCB8CnwgYGdldFJlYXNvblBocmFzZSgpYCB8IEdldHMgdGhlIHJlc3BvbnNlIHJlYXNvbiBwaHJhc2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdGF0dXMgY29kZS4gfCB8CgojIyAgYFBzclxIdHRwXE1lc3NhZ2VcU3RyZWFtSW50ZXJmYWNlYCBNZXRob2RzCgp8IE1ldGhvZCBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiB8IE5vdGVzIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgLS0tLS0tLS0tLS0gfCAtLS0tLSB8CnwgYF9fdG9TdHJpbmcoKWAgfCBSZWFkcyBhbGwgZGF0YSBmcm9tIHRoZSBzdHJlYW0gaW50byBhIHN0cmluZywgZnJvbSB0aGUgYmVnaW5uaW5nIHRvIGVuZC4gfCB8CnwgYGNsb3NlKClgIHwgQ2xvc2VzIHRoZSBzdHJlYW0gYW5kIGFueSB1bmRlcmx5aW5nIHJlc291cmNlcy4gfCB8CnwgYGRldGFjaCgpYCB8IFNlcGFyYXRlcyBhbnkgdW5kZXJseWluZyByZXNvdXJjZXMgZnJvbSB0aGUgc3RyZWFtLiB8IHwKfCBgZ2V0U2l6ZSgpYCB8IEdldCB0aGUgc2l6ZSBvZiB0aGUgc3RyZWFtIGlmIGtub3duLiB8IHwKfCBgZW9mKClgIHwgUmV0dXJucyB0cnVlIGlmIHRoZSBzdHJlYW0gaXMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLnwgfAp8IGBpc1NlZWthYmxlKClgIHwgIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmVhbSBpcyBzZWVrYWJsZS4gfCB8CnwgYHNlZWsoJG9mZnNldCwgJHdoZW5jZSA9IFNFRUtfU0VUKWAgfCBTZWVrIHRvIGEgcG9zaXRpb24gaW4gdGhlIHN0cmVhbS4gfCB8CnwgYHJld2luZCgpYCB8IFNlZWsgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyZWFtLiB8IHwKfCBgaXNXcml0YWJsZSgpYCB8IFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmVhbSBpcyB3cml0YWJsZS4gfCB8CnwgYHdyaXRlKCRzdHJpbmcpYCB8IFdyaXRlIGRhdGEgdG8gdGhlIHN0cmVhbS4gfCB8CnwgYGlzUmVhZGFibGUoKWAgfCBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJlYW0gaXMgcmVhZGFibGUuIHwgfAp8IGByZWFkKCRsZW5ndGgpYCB8IFJlYWQgZGF0YSBmcm9tIHRoZSBzdHJlYW0uIHwgfAp8IGBnZXRDb250ZW50cygpYCB8IFJldHVybnMgdGhlIHJlbWFpbmluZyBjb250ZW50cyBpbiBhIHN0cmluZyB8IHwKfCBgZ2V0TWV0YWRhdGEoJGtleSA9IG51bGwpKClgIHwgR2V0IHN0cmVhbSBtZXRhZGF0YSBhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvciByZXRyaWV2ZSBhIHNwZWNpZmljIGtleS4gfCB8CgojIyBgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2VgIE1ldGhvZHMKCnwgTWV0aG9kIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uIHwgTm90ZXMgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAtLS0tLS0tLS0tLSB8IC0tLS0tIHwKfCBgZ2V0U2NoZW1lKClgIHwgUmV0cmlldmUgdGhlIHNjaGVtZSBjb21wb25lbnQgb2YgdGhlIFVSSS4gfCB8CnwgYGdldEF1dGhvcml0eSgpYCB8IFJldHJpZXZlIHRoZSBhdXRob3JpdHkgY29tcG9uZW50IG9mIHRoZSBVUkkuIHwgfAp8IGBnZXRVc2VySW5mbygpYCB8IFJldHJpZXZlIHRoZSB1c2VyIGluZm9ybWF0aW9uIGNvbXBvbmVudCBvZiB0aGUgVVJJLiB8IHwKfCBgZ2V0SG9zdCgpYCB8IFJldHJpZXZlIHRoZSBob3N0IGNvbXBvbmVudCBvZiB0aGUgVVJJLiB8IHwKfCBgZ2V0UG9ydCgpYCB8IFJldHJpZXZlIHRoZSBwb3J0IGNvbXBvbmVudCBvZiB0aGUgVVJJLiB8IHwKfCBgZ2V0UGF0aCgpYCB8IFJldHJpZXZlIHRoZSBwYXRoIGNvbXBvbmVudCBvZiB0aGUgVVJJLiB8IHwKfCBgZ2V0UXVlcnkoKWAgfCBSZXRyaWV2ZSB0aGUgcXVlcnkgc3RyaW5nIG9mIHRoZSBVUkkuIHwgfAp8IGBnZXRGcmFnbWVudCgpYCB8IFJldHJpZXZlIHRoZSBmcmFnbWVudCBjb21wb25lbnQgb2YgdGhlIFVSSS4gfCB8CnwgYHdpdGhTY2hlbWUoJHNjaGVtZSlgIHwgUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBzY2hlbWUuIHwgfAp8IGB3aXRoVXNlckluZm8oJHVzZXIsICRwYXNzd29yZCA9IG51bGwpYCB8IFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgdXNlciBpbmZvcm1hdGlvbi4gfCB8CnwgYHdpdGhIb3N0KCRob3N0KWAgfCBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGhvc3QuIHwgfAp8IGB3aXRoUG9ydCgkcG9ydClgIHwgUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBwb3J0LiB8IHwKfCBgd2l0aFBhdGgoJHBhdGgpYCB8IFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0aC4gfCB8CnwgYHdpdGhRdWVyeSgkcXVlcnkpYCB8IFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcXVlcnkgc3RyaW5nLiB8IHwKfCBgd2l0aEZyYWdtZW50KCRmcmFnbWVudClgIHwgUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBVUkkgZnJhZ21lbnQuIHwgfAp8IGBfX3RvU3RyaW5nKClgIHwgUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gYXMgYSBVUkkgcmVmZXJlbmNlLiB8IHwKCiMjIGBQc3JcSHR0cFxNZXNzYWdlXFVwbG9hZGVkRmlsZUludGVyZmFjZWAgTWV0aG9kcwoKfCBNZXRob2QgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gfCBOb3RlcyB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IC0tLS0tLS0tLS0tIHwgLS0tLS0gfAp8IGBnZXRTdHJlYW0oKWAgfCBSZXRyaWV2ZSBhIHN0cmVhbSByZXByZXNlbnRpbmcgdGhlIHVwbG9hZGVkIGZpbGUuIHwgfAp8IGBtb3ZlVG8oJHRhcmdldFBhdGgpYCB8IE1vdmUgdGhlIHVwbG9hZGVkIGZpbGUgdG8gYSBuZXcgbG9jYXRpb24uIHwgfAp8IGBnZXRTaXplKClgIHwgUmV0cmlldmUgdGhlIGZpbGUgc2l6ZS4gfCB8CnwgYGdldEVycm9yKClgIHwgUmV0cmlldmUgdGhlIGVycm9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXBsb2FkZWQgZmlsZS4gfCB8CnwgYGdldENsaWVudEZpbGVuYW1lKClgIHwgUmV0cmlldmUgdGhlIGZpbGVuYW1lIHNlbnQgYnkgdGhlIGNsaWVudC4gfCB8CnwgYGdldENsaWVudE1lZGlhVHlwZSgpYCB8IFJldHJpZXZlIHRoZSBtZWRpYSB0eXBlIHNlbnQgYnkgdGhlIGNsaWVudC4gfCB8Cgo+IGBSZXF1ZXN0SW50ZXJmYWNlYCwgYFNlcnZlclJlcXVlc3RJbnRlcmZhY2VgLCBgUmVzcG9uc2VJbnRlcmZhY2VgIGV4dGVuZCBgTWVzc2FnZUludGVyZmFjZWAgIGJlY2F1c2UgdGhlIGBSZXF1ZXN0YCBhbmQgdGhlIGBSZXNwb25zZWAgYXJlIGBIVFRQIE1lc3NhZ2VzYC4KPiBXaGVuIHVzaW5nIGBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlYCwgYm90aCBgUmVxdWVzdEludGVyZmFjZWAgYW5kIGBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2VgIG1ldGhvZHMgYXJlIGNvbnNpZGVyZWQuCgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/docs/PSR7-Usage.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyMjIFBTUi03IFVzYWdlCgpBbGwgUFNSLTcgYXBwbGljYXRpb25zIGNvbXBseSB3aXRoIHRoZXNlIGludGVyZmFjZXMgClRoZXkgd2VyZSBjcmVhdGVkIHRvIGVzdGFibGlzaCBhIHN0YW5kYXJkIGJldHdlZW4gbWlkZGxld2FyZSBpbXBsZW1lbnRhdGlvbnMuCgo+IGBSZXF1ZXN0SW50ZXJmYWNlYCwgYFNlcnZlclJlcXVlc3RJbnRlcmZhY2VgLCBgUmVzcG9uc2VJbnRlcmZhY2VgIGV4dGVuZCBgTWVzc2FnZUludGVyZmFjZWAgIGJlY2F1c2UgdGhlIGBSZXF1ZXN0YCBhbmQgdGhlIGBSZXNwb25zZWAgYXJlIGBIVFRQIE1lc3NhZ2VzYC4KPiBXaGVuIHVzaW5nIGBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlYCwgYm90aCBgUmVxdWVzdEludGVyZmFjZWAgYW5kIGBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2VgIG1ldGhvZHMgYXJlIGNvbnNpZGVyZWQuCgoKVGhlIGZvbGxvd2luZyBleGFtcGxlcyB3aWxsIGlsbHVzdHJhdGUgaG93IGJhc2ljIG9wZXJhdGlvbnMgYXJlIGRvbmUgaW4gUFNSLTcuCgojIyMjIyBFeGFtcGxlcwoKCkZvciB0aGlzIGV4YW1wbGVzIHRvIHdvcmsgKGF0IGxlYXN0KSBhIFBTUi03IGltcGxlbWVudGF0aW9uIHBhY2thZ2UgaXMgcmVxdWlyZWQuIChlZzogemVuZGZyYW1ld29yay96ZW5kLWRpYWN0b3JvcywgZ3V6emxlaHR0cC9wc3I3LCBzbGltL3NsaW0sIGV0YykKQWxsIFBTUi03IGltcGxlbWVudGF0aW9ucyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBiZWhhdmlvdXIuCgpUaGUgZm9sbG93aW5nIHdpbGwgYmUgYXNzdW1lZDogCmAkcmVxdWVzdGAgaXMgYW4gb2JqZWN0IG9mIGBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2VgIGFuZAoKYCRyZXNwb25zZWAgaXMgYW4gb2JqZWN0IGltcGxlbWVudGluZyBgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlYAoKCiMjIyBXb3JraW5nIHdpdGggSFRUUCBIZWFkZXJzCgojIyMjIEFkZGluZyBoZWFkZXJzIHRvIHJlc3BvbnNlOgoKYGBgcGhwCiRyZXNwb25zZS0+d2l0aEhlYWRlcignTXktQ3VzdG9tLUhlYWRlcicsICdNeSBDdXN0b20gTWVzc2FnZScpOwpgYGAKCiMjIyMgQXBwZW5kaW5nIHZhbHVlcyB0byBoZWFkZXJzCgpgYGBwaHAKJHJlc3BvbnNlLT53aXRoQWRkZWRIZWFkZXIoJ015LUN1c3RvbS1IZWFkZXInLCAnVGhlIHNlY29uZCBtZXNzYWdlJyk7CmBgYAoKIyMjIyBDaGVja2luZyBpZiBoZWFkZXIgZXhpc3RzOgoKYGBgcGhwCiRyZXF1ZXN0LT5oYXNIZWFkZXIoJ015LUN1c3RvbS1IZWFkZXInKTsgLy8gd2lsbCByZXR1cm4gZmFsc2UKJHJlc3BvbnNlLT5oYXNIZWFkZXIoJ015LUN1c3RvbS1IZWFkZXInKTsgLy8gd2lsbCByZXR1cm4gdHJ1ZQpgYGAKCj4gTm90ZTogTXktQ3VzdG9tLUhlYWRlciB3YXMgb25seSBhZGRlZCBpbiB0aGUgUmVzcG9uc2UKCiMjIyMgR2V0dGluZyBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzIGZyb20gYSBoZWFkZXIgKGFsc28gYXBwbGllcyB0byByZXF1ZXN0KQoKYGBgcGhwCi8vIGdldHRpbmcgdmFsdWUgZnJvbSByZXF1ZXN0IGhlYWRlcnMKJHJlcXVlc3QtPmdldEhlYWRlckxpbmUoJ0NvbnRlbnQtVHlwZScpOyAvLyB3aWxsIHJldHVybjogInRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIKLy8gZ2V0dGluZyB2YWx1ZSBmcm9tIHJlc3BvbnNlIGhlYWRlcnMKJHJlc3BvbnNlLT5nZXRIZWFkZXJMaW5lKCdNeS1DdXN0b20tSGVhZGVyJyk7IC8vIHdpbGwgcmV0dXJuOiAgIk15IEN1c3RvbSBNZXNzYWdlOyBUaGUgc2Vjb25kIG1lc3NhZ2UiCmBgYAoKIyMjIyBHZXR0aW5nIGFycmF5IG9mIHZhbHVlIGZyb20gYSBoZWFkZXIgKGFsc28gYXBwbGllcyB0byByZXF1ZXN0KQpgYGBwaHAKLy8gZ2V0dGluZyB2YWx1ZSBmcm9tIHJlcXVlc3QgaGVhZGVycwokcmVxdWVzdC0+Z2V0SGVhZGVyKCdDb250ZW50LVR5cGUnKTsgLy8gd2lsbCByZXR1cm46IFsidGV4dC9odG1sIiwgImNoYXJzZXQ9VVRGLTgiXQovLyBnZXR0aW5nIHZhbHVlIGZyb20gcmVzcG9uc2UgaGVhZGVycwokcmVzcG9uc2UtPmdldEhlYWRlcignTXktQ3VzdG9tLUhlYWRlcicpOyAvLyB3aWxsIHJldHVybjogIFsiTXkgQ3VzdG9tIE1lc3NhZ2UiLCAgIlRoZSBzZWNvbmQgbWVzc2FnZSJdCmBgYAoKIyMjIyBSZW1vdmluZyBoZWFkZXJzIGZyb20gSFRUUCBNZXNzYWdlcwpgYGBwaHAKLy8gcmVtb3ZpbmcgYSBoZWFkZXIgZnJvbSBSZXF1ZXN0LCByZW1vdmluZyBkZXByZWNhdGVkICJDb250ZW50LU1ENSIgaGVhZGVyCiRyZXF1ZXN0LT53aXRob3V0SGVhZGVyKCdDb250ZW50LU1ENScpOyAKCi8vIHJlbW92aW5nIGEgaGVhZGVyIGZyb20gUmVzcG9uc2UKLy8gZWZmZWN0OiB0aGUgYnJvd3NlciB3b24ndCBrbm93IHRoZSBzaXplIG9mIHRoZSBzdHJlYW0KLy8gdGhlIGJyb3dzZXIgd2lsbCBkb3dubG9hZCB0aGUgc3RyZWFtIHRpbGwgaXQgZW5kcwokcmVzcG9uc2UtPndpdGhvdXRIZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJyk7CmBgYAoKIyMjIFdvcmtpbmcgd2l0aCBIVFRQIE1lc3NhZ2UgQm9keQoKV2hlbiB3b3JraW5nIHdpdGggdGhlIFBTUi03IHRoZXJlIGFyZSB0d28gbWV0aG9kcyBvZiBpbXBsZW1lbnRhdGlvbjoKIyMjIyAxLiBHZXR0aW5nIHRoZSBib2R5IHNlcGFyYXRlbHkKCj4gVGhpcyBtZXRob2QgbWFrZXMgdGhlIGJvZHkgaGFuZGxpbmcgZWFzaWVyIHRvIHVuZGVyc3RhbmQgYW5kIGlzIHVzZWZ1bCB3aGVuIHJlcGVhdGVkbHkgY2FsbGluZyBib2R5IG1ldGhvZHMuIChZb3Ugb25seSBjYWxsIGBnZXRCb2R5KClgIG9uY2UpLiBVc2luZyB0aGlzIG1ldGhvZCBtaXN0YWtlcyBsaWtlIGAkcmVzcG9uc2UtPndyaXRlKClgIGFyZSBhbHNvIHByZXZlbnRlZC4KCmBgYHBocAokYm9keSA9ICRyZXNwb25zZS0+Z2V0Qm9keSgpOwovLyBvcGVyYXRpb25zIG9uIGJvZHksIGVnLiByZWFkLCB3cml0ZSwgc2VlawovLyAuLi4KLy8gcmVwbGFjaW5nIHRoZSBvbGQgYm9keQokcmVzcG9uc2UtPndpdGhCb2R5KCRib2R5KTsgCi8vIHRoaXMgbGFzdCBzdGF0ZW1lbnQgaXMgb3B0aW9uYWwgYXMgd2Ugd29ya2luZyB3aXRoIG9iamVjdHMKLy8gaW4gdGhpcyBjYXNlIHRoZSAibmV3IiBib2R5IGlzIHNhbWUgd2l0aCB0aGUgIm9sZCIgb25lCi8vIHRoZSAkYm9keSB2YXJpYWJsZSBoYXMgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIG9uZSBpbiAkcmVxdWVzdCwgb25seSB0aGUgcmVmZXJlbmNlIGlzIHBhc3NlZApgYGAKCiMjIyMgMi4gV29ya2luZyBkaXJlY3RseSBvbiByZXNwb25zZQoKPiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgd2hlbiBvbmx5IHBlcmZvcm1pbmcgZmV3IG9wZXJhdGlvbnMgYXMgdGhlIGAkcmVxdWVzdC0+Z2V0Qm9keSgpYCBzdGF0ZW1lbnQgZnJhZ21lbnQgaXMgcmVxdWlyZWQKCmBgYHBocAokcmVzcG9uc2UtPmdldEJvZHkoKS0+d3JpdGUoJ2hlbGxvJyk7CmBgYAoKIyMjIEdldHRpbmcgdGhlIGJvZHkgY29udGVudHMKClRoZSBmb2xsb3dpbmcgc25pcHBldCBnZXRzIHRoZSBjb250ZW50cyBvZiBhIHN0cmVhbSBjb250ZW50cy4KPiBOb3RlOiBTdHJlYW1zIG11c3QgYmUgcmV3aW5kZWQsIGlmIGNvbnRlbnQgd2FzIHdyaXR0ZW4gaW50byBzdHJlYW1zLCBpdCB3aWxsIGJlIGlnbm9yZWQgd2hlbiBjYWxsaW5nIGBnZXRDb250ZW50cygpYCBiZWNhdXNlIHRoZSBzdHJlYW0gcG9pbnRlciBpcyBzZXQgdG8gdGhlIGxhc3QgY2hhcmFjdGVyLCB3aGljaCBpcyBgXDBgIC0gbWVhbmluZyBlbmQgb2Ygc3RyZWFtLgpgYGBwaHAgCiRib2R5ID0gJHJlc3BvbnNlLT5nZXRCb2R5KCk7CiRib2R5LT5yZXdpbmQoKTsgLy8gb3IgJGJvZHktPnNlZWsoMCk7CiRib2R5VGV4dCA9ICRib2R5LT5nZXRDb250ZW50cygpOwpgYGAKPiBOb3RlOiBJZiBgJGJvZHktPnNlZWsoMSlgIGlzIGNhbGxlZCBiZWZvcmUgYCRib2R5LT5nZXRDb250ZW50cygpYCwgdGhlIGZpcnN0IGNoYXJhY3RlciB3aWxsIGJlIG9tbWl0ZWQgYXMgdGhlIHN0YXJ0aW5nIHBvaW50ZXIgaXMgc2V0IHRvIGAxYCwgbm90IGAwYC4gVGhpcyBpcyB3aHkgdXNpbmcgYCRib2R5LT5yZXdpbmQoKWAgaXMgcmVjb21tZW5kZWQuCgojIyMgQXBwZW5kIHRvIGJvZHkKCmBgYHBocAokcmVzcG9uc2UtPmdldEJvZHkoKS0+d3JpdGUoJ0hlbGxvJyk7IC8vIHdyaXRpbmcgZGlyZWN0bHkKJGJvZHkgPSAkcmVxdWVzdC0+Z2V0Qm9keSgpOyAvLyB3aGljaCBpcyBhIGBTdHJlYW1JbnRlcmZhY2VgCiRib2R5LT53cml0ZSgneHh4eHgnKTsKYGBgCgojIyMgUHJlcGVuZCB0byBib2R5ClByZXBlbmRpbmcgaXMgZGlmZmVyZW50IHdoZW4gaXQgY29tZXMgdG8gc3RyZWFtcy4gVGhlIGNvbnRlbnQgbXVzdCBiZSBjb3BpZWQgYmVmb3JlIHdyaXRpbmcgdGhlIGNvbnRlbnQgdG8gYmUgcHJlcGVuZGVkLgpUaGUgZm9sbG93aW5nIGV4YW1wbGUgd2lsbCBleHBsYWluIHRoZSBiZWhhdmlvdXIgb2Ygc3RyZWFtcy4KCmBgYHBocAovLyBhc3N1bWluZyBvdXIgcmVzcG9uc2UgaXMgaW5pdGlhbGx5IGVtcHR5CiRib2R5ID0gJHJlcHNvbnNlLT5nZXRCb2R5KCk7Ci8vIHdyaXRpbmcgdGhlIHN0cmluZyAiYWJjZCIKJGJvZHktPndyaXRlKCdhYmNkJyk7CgovLyBzZWVraW5nIHRvIHN0YXJ0IG9mIHN0cmVhbQokYm9keS0+c2VlaygwKTsKLy8gd3JpdGluZyAnZWYnCiRib2R5LT53cml0ZSgnZWYnKTsgLy8gYXQgdGhpcyBwb2ludCB0aGUgc3RyZWFtIGNvbnRhaW5zICJlZmNkIgpgYGAKCiMjIyMgUHJlcGVuZGluZyBieSByZXdyaXRpbmcgc2VwYXJhdGVseQoKYGBgcGhwCi8vIGFzc3VtaW5nIG91ciByZXNwb25zZSBib2R5IHN0cmVhbSBvbmx5IGNvbnRhaW5zOiAiYWJjZCIKJGJvZHkgPSAkcmVzcG9uc2UtPmdldEJvZHkoKTsKJGJvZHktPnJld2luZCgpOwokY29udGVudHMgPSAkYm9keS0+Z2V0Q29udGVudHMoKTsgLy8gYWJjZAovLyBzZWVraW5nIHRoZSBzdHJlYW0gdG8gYmVnaW5uaW5nCiRib2R5LT5yZXdpbmQoKTsKJGJvZHktPndyaXRlKCdlZicpOyAvLyBzdHJlYW0gY29udGFpbnMgImVmY2QiCiRib2R5LT53cml0ZSgkY29udGVudHMpOyAvLyBzdHJlYW0gY29udGFpbnMgImVmYWJjZCIKYGBgCgo+IE5vdGU6IGBnZXRDb250ZW50cygpYCBzZWVrcyB0aGUgc3RyZWFtIHdoaWxlIHJlYWRpbmcgaXQsIHRoZXJlZm9yZSBpZiB0aGUgc2Vjb25kIGByZXdpbmQoKWAgbWV0aG9kIGNhbGwgd2FzIG5vdCBwcmVzZW50IHRoZSBzdHJlYW0gd291bGQgaGF2ZSByZXN1bHRlZCBpbiBgYWJjZGVmYWJjZGAgYmVjYXVzZSB0aGUgYHdyaXRlKClgIG1ldGhvZCBhcHBlbmRzIHRvIHN0cmVhbSBpZiBub3QgcHJlY2VlZGVkIGJ5IGByZXdpbmQoKWAgb3IgYHNlZWsoMClgLgoKIyMjIyBQcmVwZW5kaW5nIGJ5IHVzaW5nIGNvbnRlbnRzIGFzIGEgc3RyaW5nCmBgYHBocAokYm9keSA9ICRyZXNwb25zZS0+Z2V0Qm9keSgpOwokYm9keS0+cmV3aW5kKCk7CiRjb250ZW50cyA9ICRib2R5LT5nZXRDb250ZW50cygpOyAvLyBlZmFiY2QKJGNvbnRlbnRzID0gJ2VmJy4kY29udGVudHM7CiRib2R5LT5yZXdpbmQoKTsKJGJvZHktPndyaXRlKCRjb250ZW50cyk7CmBgYAo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE0IFBIUCBGcmFtZXdvcmsgSW50ZXJvcGVyYWJpbGl0eSBHcm91cAoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSAKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyAKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIApmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gCmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KVEhFIFNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UFNSIEh0dHAgTWVzc2FnZQo9PT09PT09PT09PT09PT09CgpUaGlzIHJlcG9zaXRvcnkgaG9sZHMgYWxsIGludGVyZmFjZXMvY2xhc3Nlcy90cmFpdHMgcmVsYXRlZCB0bwpbUFNSLTddKGh0dHA6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LykuCgpOb3RlIHRoYXQgdGhpcyBpcyBub3QgYSBIVFRQIG1lc3NhZ2UgaW1wbGVtZW50YXRpb24gb2YgaXRzIG93bi4gSXQgaXMgbWVyZWx5IGFuCmludGVyZmFjZSB0aGF0IGRlc2NyaWJlcyBhIEhUVFAgbWVzc2FnZS4gU2VlIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuCgpVc2FnZQotLS0tLQoKQmVmb3JlIHJlYWRpbmcgdGhlIHVzYWdlIGd1aWRlIHdlIHJlY29tbWVuZCByZWFkaW5nIHRoZSBQU1ItNyBpbnRlcmZhY2VzIG1ldGhvZCBsaXN0OgoKKiBbYFBTUi03IEludGVyZmFjZXMgTWV0aG9kIExpc3RgXShkb2NzL1BTUjctSW50ZXJmYWNlcy5tZCkKKiBbYFBTUi03IFVzYWdlIEd1aWRlYF0oZG9jcy9QU1I3LVVzYWdlLm1kKQ==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/MessageInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIEhUVFAgbWVzc2FnZXMgY29uc2lzdCBvZiByZXF1ZXN0cyBmcm9tIGEgY2xpZW50IHRvIGEgc2VydmVyIGFuZCByZXNwb25zZXMKICogZnJvbSBhIHNlcnZlciB0byBhIGNsaWVudC4gVGhpcyBpbnRlcmZhY2UgZGVmaW5lcyB0aGUgbWV0aG9kcyBjb21tb24gdG8KICogZWFjaC4KICoKICogTWVzc2FnZXMgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0IG1pZ2h0IGNoYW5nZSBzdGF0ZSBNVVNUCiAqIGJlIGltcGxlbWVudGVkIHN1Y2ggdGhhdCB0aGV5IHJldGFpbiB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGN1cnJlbnQKICogbWVzc2FnZSBhbmQgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIGNoYW5nZWQgc3RhdGUuCiAqCiAqIEBsaW5rIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzcyMzAudHh0CiAqIEBsaW5rIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzcyMzEudHh0CiAqLwppbnRlcmZhY2UgTWVzc2FnZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHJpZXZlcyB0aGUgSFRUUCBwcm90b2NvbCB2ZXJzaW9uIGFzIGEgc3RyaW5nLgogICAgICoKICAgICAqIFRoZSBzdHJpbmcgTVVTVCBjb250YWluIG9ubHkgdGhlIEhUVFAgdmVyc2lvbiBudW1iZXIgKGUuZy4sICIxLjEiLCAiMS4wIikuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgSFRUUCBwcm90b2NvbCB2ZXJzaW9uLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJvdG9jb2xWZXJzaW9uKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgSFRUUCBwcm90b2NvbCB2ZXJzaW9uLgogICAgICoKICAgICAqIFRoZSB2ZXJzaW9uIHN0cmluZyBNVVNUIGNvbnRhaW4gb25seSB0aGUgSFRUUCB2ZXJzaW9uIG51bWJlciAoZS5nLiwKICAgICAqICIxLjEiLCAiMS4wIikuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogbmV3IHByb3RvY29sIHZlcnNpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmVyc2lvbiBIVFRQIHByb3RvY29sIHZlcnNpb24KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUHJvdG9jb2xWZXJzaW9uKHN0cmluZyAkdmVyc2lvbik6IE1lc3NhZ2VJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZXMgYWxsIG1lc3NhZ2UgaGVhZGVyIHZhbHVlcy4KICAgICAqCiAgICAgKiBUaGUga2V5cyByZXByZXNlbnQgdGhlIGhlYWRlciBuYW1lIGFzIGl0IHdpbGwgYmUgc2VudCBvdmVyIHRoZSB3aXJlLCBhbmQKICAgICAqIGVhY2ggdmFsdWUgaXMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBhc3NvY2lhdGVkIHdpdGggdGhlIGhlYWRlci4KICAgICAqCiAgICAgKiAgICAgLy8gUmVwcmVzZW50IHRoZSBoZWFkZXJzIGFzIGEgc3RyaW5nCiAgICAgKiAgICAgZm9yZWFjaCAoJG1lc3NhZ2UtPmdldEhlYWRlcnMoKSBhcyAkbmFtZSA9PiAkdmFsdWVzKSB7CiAgICAgKiAgICAgICAgIGVjaG8gJG5hbWUgLiAiOiAiIC4gaW1wbG9kZSgiLCAiLCAkdmFsdWVzKTsKICAgICAqICAgICB9CiAgICAgKgogICAgICogICAgIC8vIEVtaXQgaGVhZGVycyBpdGVyYXRpdmVseToKICAgICAqICAgICBmb3JlYWNoICgkbWVzc2FnZS0+Z2V0SGVhZGVycygpIGFzICRuYW1lID0+ICR2YWx1ZXMpIHsKICAgICAqICAgICAgICAgZm9yZWFjaCAoJHZhbHVlcyBhcyAkdmFsdWUpIHsKICAgICAqICAgICAgICAgICAgIGhlYWRlcihzcHJpbnRmKCclczogJXMnLCAkbmFtZSwgJHZhbHVlKSwgZmFsc2UpOwogICAgICogICAgICAgICB9CiAgICAgKiAgICAgfQogICAgICoKICAgICAqIFdoaWxlIGhlYWRlciBuYW1lcyBhcmUgbm90IGNhc2Utc2Vuc2l0aXZlLCBnZXRIZWFkZXJzKCkgd2lsbCBwcmVzZXJ2ZSB0aGUKICAgICAqIGV4YWN0IGNhc2UgaW4gd2hpY2ggaGVhZGVycyB3ZXJlIG9yaWdpbmFsbHkgc3BlY2lmaWVkLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nW11bXSBSZXR1cm5zIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIHRoZSBtZXNzYWdlJ3MgaGVhZGVycy4gRWFjaAogICAgICogICAgIGtleSBNVVNUIGJlIGEgaGVhZGVyIG5hbWUsIGFuZCBlYWNoIHZhbHVlIE1VU1QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncwogICAgICogICAgIGZvciB0aGF0IGhlYWRlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcnMoKTogYXJyYXk7CgogICAgLyoqCiAgICAgKiBDaGVja3MgaWYgYSBoZWFkZXIgZXhpc3RzIGJ5IHRoZSBnaXZlbiBjYXNlLWluc2Vuc2l0aXZlIG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBDYXNlLWluc2Vuc2l0aXZlIGhlYWRlciBmaWVsZCBuYW1lLgogICAgICogQHJldHVybiBib29sIFJldHVybnMgdHJ1ZSBpZiBhbnkgaGVhZGVyIG5hbWVzIG1hdGNoIHRoZSBnaXZlbiBoZWFkZXIKICAgICAqICAgICBuYW1lIHVzaW5nIGEgY2FzZS1pbnNlbnNpdGl2ZSBzdHJpbmcgY29tcGFyaXNvbi4gUmV0dXJucyBmYWxzZSBpZgogICAgICogICAgIG5vIG1hdGNoaW5nIGhlYWRlciBuYW1lIGlzIGZvdW5kIGluIHRoZSBtZXNzYWdlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzSGVhZGVyKHN0cmluZyAkbmFtZSk6IGJvb2w7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZXMgYSBtZXNzYWdlIGhlYWRlciB2YWx1ZSBieSB0aGUgZ2l2ZW4gY2FzZS1pbnNlbnNpdGl2ZSBuYW1lLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHRoZSBoZWFkZXIgdmFsdWVzIG9mIHRoZSBnaXZlbgogICAgICogY2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgbmFtZS4KICAgICAqCiAgICAgKiBJZiB0aGUgaGVhZGVyIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgbWVzc2FnZSwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYW4KICAgICAqIGVtcHR5IGFycmF5LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgQ2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgZmllbGQgbmFtZS4KICAgICAqIEByZXR1cm4gc3RyaW5nW10gQW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcyBhcyBwcm92aWRlZCBmb3IgdGhlIGdpdmVuCiAgICAgKiAgICBoZWFkZXIuIElmIHRoZSBoZWFkZXIgZG9lcyBub3QgYXBwZWFyIGluIHRoZSBtZXNzYWdlLCB0aGlzIG1ldGhvZCBNVVNUCiAgICAgKiAgICByZXR1cm4gYW4gZW1wdHkgYXJyYXkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIZWFkZXIoc3RyaW5nICRuYW1lKTogYXJyYXk7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZXMgYSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nIG9mIHRoZSB2YWx1ZXMgZm9yIGEgc2luZ2xlIGhlYWRlci4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGFsbCBvZiB0aGUgaGVhZGVyIHZhbHVlcyBvZiB0aGUgZ2l2ZW4KICAgICAqIGNhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIG5hbWUgYXMgYSBzdHJpbmcgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIHVzaW5nCiAgICAgKiBhIGNvbW1hLgogICAgICoKICAgICAqIE5PVEU6IE5vdCBhbGwgaGVhZGVyIHZhbHVlcyBtYXkgYmUgYXBwcm9wcmlhdGVseSByZXByZXNlbnRlZCB1c2luZwogICAgICogY29tbWEgY29uY2F0ZW5hdGlvbi4gRm9yIHN1Y2ggaGVhZGVycywgdXNlIGdldEhlYWRlcigpIGluc3RlYWQKICAgICAqIGFuZCBzdXBwbHkgeW91ciBvd24gZGVsaW1pdGVyIHdoZW4gY29uY2F0ZW5hdGluZy4KICAgICAqCiAgICAgKiBJZiB0aGUgaGVhZGVyIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgbWVzc2FnZSwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4KICAgICAqIGFuIGVtcHR5IHN0cmluZy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIENhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIGZpZWxkIG5hbWUuCiAgICAgKiBAcmV0dXJuIHN0cmluZyBBIHN0cmluZyBvZiB2YWx1ZXMgYXMgcHJvdmlkZWQgZm9yIHRoZSBnaXZlbiBoZWFkZXIKICAgICAqICAgIGNvbmNhdGVuYXRlZCB0b2dldGhlciB1c2luZyBhIGNvbW1hLiBJZiB0aGUgaGVhZGVyIGRvZXMgbm90IGFwcGVhciBpbgogICAgICogICAgdGhlIG1lc3NhZ2UsIHRoaXMgbWV0aG9kIE1VU1QgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlckxpbmUoc3RyaW5nICRuYW1lKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlIHJlcGxhY2luZyB0aGUgc3BlY2lmaWVkIGhlYWRlci4KICAgICAqCiAgICAgKiBXaGlsZSBoZWFkZXIgbmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUsIHRoZSBjYXNpbmcgb2YgdGhlIGhlYWRlciB3aWxsCiAgICAgKiBiZSBwcmVzZXJ2ZWQgYnkgdGhpcyBmdW5jdGlvbiwgYW5kIHJldHVybmVkIGZyb20gZ2V0SGVhZGVycygpLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGhhcyB0aGUKICAgICAqIG5ldyBhbmQvb3IgdXBkYXRlZCBoZWFkZXIgYW5kIHZhbHVlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgQ2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgZmllbGQgbmFtZS4KICAgICAqIEBwYXJhbSBzdHJpbmd8c3RyaW5nW10gJHZhbHVlIEhlYWRlciB2YWx1ZShzKS4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9yIGludmFsaWQgaGVhZGVyIG5hbWVzIG9yIHZhbHVlcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhIZWFkZXIoc3RyaW5nICRuYW1lLCAkdmFsdWUpOiBNZXNzYWdlSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBoZWFkZXIgYXBwZW5kZWQgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuCiAgICAgKgogICAgICogRXhpc3RpbmcgdmFsdWVzIGZvciB0aGUgc3BlY2lmaWVkIGhlYWRlciB3aWxsIGJlIG1haW50YWluZWQuIFRoZSBuZXcKICAgICAqIHZhbHVlKHMpIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIGV4aXN0aW5nIGxpc3QuIElmIHRoZSBoZWFkZXIgZGlkIG5vdAogICAgICogZXhpc3QgcHJldmlvdXNseSwgaXQgd2lsbCBiZSBhZGRlZC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmV0YWluIHRoZQogICAgICogaW1tdXRhYmlsaXR5IG9mIHRoZSBtZXNzYWdlLCBhbmQgTVVTVCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBoYXMgdGhlCiAgICAgKiBuZXcgaGVhZGVyIGFuZC9vciB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIENhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIGZpZWxkIG5hbWUgdG8gYWRkLgogICAgICogQHBhcmFtIHN0cmluZ3xzdHJpbmdbXSAkdmFsdWUgSGVhZGVyIHZhbHVlKHMpLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3IgaW52YWxpZCBoZWFkZXIgbmFtZXMgb3IgdmFsdWVzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEFkZGVkSGVhZGVyKHN0cmluZyAkbmFtZSwgJHZhbHVlKTogTWVzc2FnZUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRob3V0IHRoZSBzcGVjaWZpZWQgaGVhZGVyLgogICAgICoKICAgICAqIEhlYWRlciByZXNvbHV0aW9uIE1VU1QgYmUgZG9uZSB3aXRob3V0IGNhc2Utc2Vuc2l0aXZpdHkuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgcmVtb3ZlcwogICAgICogdGhlIG5hbWVkIGhlYWRlci4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIENhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIGZpZWxkIG5hbWUgdG8gcmVtb3ZlLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhvdXRIZWFkZXIoc3RyaW5nICRuYW1lKTogTWVzc2FnZUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIEdldHMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UuCiAgICAgKgogICAgICogQHJldHVybiBTdHJlYW1JbnRlcmZhY2UgUmV0dXJucyB0aGUgYm9keSBhcyBhIHN0cmVhbS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEJvZHkoKTogU3RyZWFtSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBtZXNzYWdlIGJvZHkuCiAgICAgKgogICAgICogVGhlIGJvZHkgTVVTVCBiZSBhIFN0cmVhbUludGVyZmFjZSBvYmplY3QuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGEgbmV3IGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogbmV3IGJvZHkgc3RyZWFtLgogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJGJvZHkgQm9keS4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gV2hlbiB0aGUgYm9keSBpcyBub3QgdmFsaWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQm9keShTdHJlYW1JbnRlcmZhY2UgJGJvZHkpOiBNZXNzYWdlSW50ZXJmYWNlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/RequestInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFJlcHJlc2VudGF0aW9uIG9mIGFuIG91dGdvaW5nLCBjbGllbnQtc2lkZSByZXF1ZXN0LgogKgogKiBQZXIgdGhlIEhUVFAgc3BlY2lmaWNhdGlvbiwgdGhpcyBpbnRlcmZhY2UgaW5jbHVkZXMgcHJvcGVydGllcyBmb3IKICogZWFjaCBvZiB0aGUgZm9sbG93aW5nOgogKgogKiAtIFByb3RvY29sIHZlcnNpb24KICogLSBIVFRQIG1ldGhvZAogKiAtIFVSSQogKiAtIEhlYWRlcnMKICogLSBNZXNzYWdlIGJvZHkKICoKICogRHVyaW5nIGNvbnN0cnVjdGlvbiwgaW1wbGVtZW50YXRpb25zIE1VU1QgYXR0ZW1wdCB0byBzZXQgdGhlIEhvc3QgaGVhZGVyIGZyb20KICogYSBwcm92aWRlZCBVUkkgaWYgbm8gSG9zdCBoZWFkZXIgaXMgcHJvdmlkZWQuCiAqCiAqIFJlcXVlc3RzIGFyZSBjb25zaWRlcmVkIGltbXV0YWJsZTsgYWxsIG1ldGhvZHMgdGhhdCBtaWdodCBjaGFuZ2Ugc3RhdGUgTVVTVAogKiBiZSBpbXBsZW1lbnRlZCBzdWNoIHRoYXQgdGhleSByZXRhaW4gdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBjdXJyZW50CiAqIG1lc3NhZ2UgYW5kIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBjaGFuZ2VkIHN0YXRlLgogKi8KaW50ZXJmYWNlIFJlcXVlc3RJbnRlcmZhY2UgZXh0ZW5kcyBNZXNzYWdlSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0cmlldmVzIHRoZSBtZXNzYWdlJ3MgcmVxdWVzdCB0YXJnZXQuCiAgICAgKgogICAgICogUmV0cmlldmVzIHRoZSBtZXNzYWdlJ3MgcmVxdWVzdC10YXJnZXQgZWl0aGVyIGFzIGl0IHdpbGwgYXBwZWFyIChmb3IKICAgICAqIGNsaWVudHMpLCBhcyBpdCBhcHBlYXJlZCBhdCByZXF1ZXN0IChmb3Igc2VydmVycyksIG9yIGFzIGl0IHdhcwogICAgICogc3BlY2lmaWVkIGZvciB0aGUgaW5zdGFuY2UgKHNlZSB3aXRoUmVxdWVzdFRhcmdldCgpKS4KICAgICAqCiAgICAgKiBJbiBtb3N0IGNhc2VzLCB0aGlzIHdpbGwgYmUgdGhlIG9yaWdpbi1mb3JtIG9mIHRoZSBjb21wb3NlZCBVUkksCiAgICAgKiB1bmxlc3MgYSB2YWx1ZSB3YXMgcHJvdmlkZWQgdG8gdGhlIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIChzZWUKICAgICAqIHdpdGhSZXF1ZXN0VGFyZ2V0KCkgYmVsb3cpLgogICAgICoKICAgICAqIElmIG5vIFVSSSBpcyBhdmFpbGFibGUsIGFuZCBubyByZXF1ZXN0LXRhcmdldCBoYXMgYmVlbiBzcGVjaWZpY2FsbHkKICAgICAqIHByb3ZpZGVkLCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiB0aGUgc3RyaW5nICIvIi4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVxdWVzdFRhcmdldCgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWMgcmVxdWVzdC10YXJnZXQuCiAgICAgKgogICAgICogSWYgdGhlIHJlcXVlc3QgbmVlZHMgYSBub24tb3JpZ2luLWZvcm0gcmVxdWVzdC10YXJnZXQg4oCUIGUuZy4sIGZvcgogICAgICogc3BlY2lmeWluZyBhbiBhYnNvbHV0ZS1mb3JtLCBhdXRob3JpdHktZm9ybSwgb3IgYXN0ZXJpc2stZm9ybSDigJQKICAgICAqIHRoaXMgbWV0aG9kIG1heSBiZSB1c2VkIHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQKICAgICAqIHJlcXVlc3QtdGFyZ2V0LCB2ZXJiYXRpbS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmV0YWluIHRoZQogICAgICogaW1tdXRhYmlsaXR5IG9mIHRoZSBtZXNzYWdlLCBhbmQgTVVTVCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBoYXMgdGhlCiAgICAgKiBjaGFuZ2VkIHJlcXVlc3QgdGFyZ2V0LgogICAgICoKICAgICAqIEBsaW5rIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi01LjMgKGZvciB0aGUgdmFyaW91cwogICAgICogICAgIHJlcXVlc3QtdGFyZ2V0IGZvcm1zIGFsbG93ZWQgaW4gcmVxdWVzdCBtZXNzYWdlcykKICAgICAqIEBwYXJhbSBzdHJpbmcgJHJlcXVlc3RUYXJnZXQKICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUmVxdWVzdFRhcmdldChzdHJpbmcgJHJlcXVlc3RUYXJnZXQpOiBSZXF1ZXN0SW50ZXJmYWNlOwoKCiAgICAvKioKICAgICAqIFJldHJpZXZlcyB0aGUgSFRUUCBtZXRob2Qgb2YgdGhlIHJlcXVlc3QuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgUmV0dXJucyB0aGUgcmVxdWVzdCBtZXRob2QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNZXRob2QoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHByb3ZpZGVkIEhUVFAgbWV0aG9kLgogICAgICoKICAgICAqIFdoaWxlIEhUVFAgbWV0aG9kIG5hbWVzIGFyZSB0eXBpY2FsbHkgYWxsIHVwcGVyY2FzZSBjaGFyYWN0ZXJzLCBIVFRQCiAgICAgKiBtZXRob2QgbmFtZXMgYXJlIGNhc2Utc2Vuc2l0aXZlIGFuZCB0aHVzIGltcGxlbWVudGF0aW9ucyBTSE9VTEQgTk9UCiAgICAgKiBtb2RpZnkgdGhlIGdpdmVuIHN0cmluZy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmV0YWluIHRoZQogICAgICogaW1tdXRhYmlsaXR5IG9mIHRoZSBtZXNzYWdlLCBhbmQgTVVTVCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBoYXMgdGhlCiAgICAgKiBjaGFuZ2VkIHJlcXVlc3QgbWV0aG9kLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG1ldGhvZCBDYXNlLXNlbnNpdGl2ZSBtZXRob2QuCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvciBpbnZhbGlkIEhUVFAgbWV0aG9kcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhNZXRob2Qoc3RyaW5nICRtZXRob2QpOiBSZXF1ZXN0SW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0cmlldmVzIHRoZSBVUkkgaW5zdGFuY2UuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYSBVcmlJbnRlcmZhY2UgaW5zdGFuY2UuCiAgICAgKgogICAgICogQGxpbmsgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuMwogICAgICogQHJldHVybiBVcmlJbnRlcmZhY2UgUmV0dXJucyBhIFVyaUludGVyZmFjZSBpbnN0YW5jZQogICAgICogICAgIHJlcHJlc2VudGluZyB0aGUgVVJJIG9mIHRoZSByZXF1ZXN0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXJpKCk6IFVyaUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gaW5zdGFuY2Ugd2l0aCB0aGUgcHJvdmlkZWQgVVJJLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgdXBkYXRlIHRoZSBIb3N0IGhlYWRlciBvZiB0aGUgcmV0dXJuZWQgcmVxdWVzdCBieQogICAgICogZGVmYXVsdCBpZiB0aGUgVVJJIGNvbnRhaW5zIGEgaG9zdCBjb21wb25lbnQuIElmIHRoZSBVUkkgZG9lcyBub3QKICAgICAqIGNvbnRhaW4gYSBob3N0IGNvbXBvbmVudCwgYW55IHByZS1leGlzdGluZyBIb3N0IGhlYWRlciBNVVNUIGJlIGNhcnJpZWQKICAgICAqIG92ZXIgdG8gdGhlIHJldHVybmVkIHJlcXVlc3QuCiAgICAgKgogICAgICogWW91IGNhbiBvcHQtaW4gdG8gcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgc3RhdGUgb2YgdGhlIEhvc3QgaGVhZGVyIGJ5CiAgICAgKiBzZXR0aW5nIGAkcHJlc2VydmVIb3N0YCB0byBgdHJ1ZWAuIFdoZW4gYCRwcmVzZXJ2ZUhvc3RgIGlzIHNldCB0bwogICAgICogYHRydWVgLCB0aGlzIG1ldGhvZCBpbnRlcmFjdHMgd2l0aCB0aGUgSG9zdCBoZWFkZXIgaW4gdGhlIGZvbGxvd2luZyB3YXlzOgogICAgICoKICAgICAqIC0gSWYgdGhlIEhvc3QgaGVhZGVyIGlzIG1pc3Npbmcgb3IgZW1wdHksIGFuZCB0aGUgbmV3IFVSSSBjb250YWlucwogICAgICogICBhIGhvc3QgY29tcG9uZW50LCB0aGlzIG1ldGhvZCBNVVNUIHVwZGF0ZSB0aGUgSG9zdCBoZWFkZXIgaW4gdGhlIHJldHVybmVkCiAgICAgKiAgIHJlcXVlc3QuCiAgICAgKiAtIElmIHRoZSBIb3N0IGhlYWRlciBpcyBtaXNzaW5nIG9yIGVtcHR5LCBhbmQgdGhlIG5ldyBVUkkgZG9lcyBub3QgY29udGFpbiBhCiAgICAgKiAgIGhvc3QgY29tcG9uZW50LCB0aGlzIG1ldGhvZCBNVVNUIE5PVCB1cGRhdGUgdGhlIEhvc3QgaGVhZGVyIGluIHRoZSByZXR1cm5lZAogICAgICogICByZXF1ZXN0LgogICAgICogLSBJZiBhIEhvc3QgaGVhZGVyIGlzIHByZXNlbnQgYW5kIG5vbi1lbXB0eSwgdGhpcyBtZXRob2QgTVVTVCBOT1QgdXBkYXRlCiAgICAgKiAgIHRoZSBIb3N0IGhlYWRlciBpbiB0aGUgcmV0dXJuZWQgcmVxdWVzdC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmV0YWluIHRoZQogICAgICogaW1tdXRhYmlsaXR5IG9mIHRoZSBtZXNzYWdlLCBhbmQgTVVTVCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBoYXMgdGhlCiAgICAgKiBuZXcgVXJpSW50ZXJmYWNlIGluc3RhbmNlLgogICAgICoKICAgICAqIEBsaW5rIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi00LjMKICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2UgJHVyaSBOZXcgcmVxdWVzdCBVUkkgdG8gdXNlLgogICAgICogQHBhcmFtIGJvb2wgJHByZXNlcnZlSG9zdCBQcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgc3RhdGUgb2YgdGhlIEhvc3QgaGVhZGVyLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhVcmkoVXJpSW50ZXJmYWNlICR1cmksIGJvb2wgJHByZXNlcnZlSG9zdCA9IGZhbHNlKTogUmVxdWVzdEludGVyZmFjZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/ResponseInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFJlcHJlc2VudGF0aW9uIG9mIGFuIG91dGdvaW5nLCBzZXJ2ZXItc2lkZSByZXNwb25zZS4KICoKICogUGVyIHRoZSBIVFRQIHNwZWNpZmljYXRpb24sIHRoaXMgaW50ZXJmYWNlIGluY2x1ZGVzIHByb3BlcnRpZXMgZm9yCiAqIGVhY2ggb2YgdGhlIGZvbGxvd2luZzoKICoKICogLSBQcm90b2NvbCB2ZXJzaW9uCiAqIC0gU3RhdHVzIGNvZGUgYW5kIHJlYXNvbiBwaHJhc2UKICogLSBIZWFkZXJzCiAqIC0gTWVzc2FnZSBib2R5CiAqCiAqIFJlc3BvbnNlcyBhcmUgY29uc2lkZXJlZCBpbW11dGFibGU7IGFsbCBtZXRob2RzIHRoYXQgbWlnaHQgY2hhbmdlIHN0YXRlIE1VU1QKICogYmUgaW1wbGVtZW50ZWQgc3VjaCB0aGF0IHRoZXkgcmV0YWluIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgY3VycmVudAogKiBtZXNzYWdlIGFuZCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgY2hhbmdlZCBzdGF0ZS4KICovCmludGVyZmFjZSBSZXNwb25zZUludGVyZmFjZSBleHRlbmRzIE1lc3NhZ2VJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBHZXRzIHRoZSByZXNwb25zZSBzdGF0dXMgY29kZS4KICAgICAqCiAgICAgKiBUaGUgc3RhdHVzIGNvZGUgaXMgYSAzLWRpZ2l0IGludGVnZXIgcmVzdWx0IGNvZGUgb2YgdGhlIHNlcnZlcidzIGF0dGVtcHQKICAgICAqIHRvIHVuZGVyc3RhbmQgYW5kIHNhdGlzZnkgdGhlIHJlcXVlc3QuCiAgICAgKgogICAgICogQHJldHVybiBpbnQgU3RhdHVzIGNvZGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGF0dXNDb2RlKCk6IGludDsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgc3RhdHVzIGNvZGUgYW5kLCBvcHRpb25hbGx5LCByZWFzb24gcGhyYXNlLgogICAgICoKICAgICAqIElmIG5vIHJlYXNvbiBwaHJhc2UgaXMgc3BlY2lmaWVkLCBpbXBsZW1lbnRhdGlvbnMgTUFZIGNob29zZSB0byBkZWZhdWx0CiAgICAgKiB0byB0aGUgUkZDIDcyMzEgb3IgSUFOQSByZWNvbW1lbmRlZCByZWFzb24gcGhyYXNlIGZvciB0aGUgcmVzcG9uc2UncwogICAgICogc3RhdHVzIGNvZGUuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogdXBkYXRlZCBzdGF0dXMgYW5kIHJlYXNvbiBwaHJhc2UuCiAgICAgKgogICAgICogQGxpbmsgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvaHR0cC1zdGF0dXMtY29kZXMvaHR0cC1zdGF0dXMtY29kZXMueGh0bWwKICAgICAqIEBwYXJhbSBpbnQgJGNvZGUgVGhlIDMtZGlnaXQgaW50ZWdlciByZXN1bHQgY29kZSB0byBzZXQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRyZWFzb25QaHJhc2UgVGhlIHJlYXNvbiBwaHJhc2UgdG8gdXNlIHdpdGggdGhlCiAgICAgKiAgICAgcHJvdmlkZWQgc3RhdHVzIGNvZGU7IGlmIG5vbmUgaXMgcHJvdmlkZWQsIGltcGxlbWVudGF0aW9ucyBNQVkKICAgICAqICAgICB1c2UgdGhlIGRlZmF1bHRzIGFzIHN1Z2dlc3RlZCBpbiB0aGUgSFRUUCBzcGVjaWZpY2F0aW9uLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBGb3IgaW52YWxpZCBzdGF0dXMgY29kZSBhcmd1bWVudHMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoU3RhdHVzKGludCAkY29kZSwgc3RyaW5nICRyZWFzb25QaHJhc2UgPSAnJyk6IFJlc3BvbnNlSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogR2V0cyB0aGUgcmVzcG9uc2UgcmVhc29uIHBocmFzZSBhc3NvY2lhdGVkIHdpdGggdGhlIHN0YXR1cyBjb2RlLgogICAgICoKICAgICAqIEJlY2F1c2UgYSByZWFzb24gcGhyYXNlIGlzIG5vdCBhIHJlcXVpcmVkIGVsZW1lbnQgaW4gYSByZXNwb25zZQogICAgICogc3RhdHVzIGxpbmUsIHRoZSByZWFzb24gcGhyYXNlIHZhbHVlIE1BWSBiZSBudWxsLiBJbXBsZW1lbnRhdGlvbnMgTUFZCiAgICAgKiBjaG9vc2UgdG8gcmV0dXJuIHRoZSBkZWZhdWx0IFJGQyA3MjMxIHJlY29tbWVuZGVkIHJlYXNvbiBwaHJhc2UgKG9yIHRob3NlCiAgICAgKiBsaXN0ZWQgaW4gdGhlIElBTkEgSFRUUCBTdGF0dXMgQ29kZSBSZWdpc3RyeSkgZm9yIHRoZSByZXNwb25zZSdzCiAgICAgKiBzdGF0dXMgY29kZS4KICAgICAqCiAgICAgKiBAbGluayBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNgogICAgICogQGxpbmsgaHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9odHRwLXN0YXR1cy1jb2Rlcy9odHRwLXN0YXR1cy1jb2Rlcy54aHRtbAogICAgICogQHJldHVybiBzdHJpbmcgUmVhc29uIHBocmFzZTsgbXVzdCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGlmIG5vbmUgcHJlc2VudC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlYXNvblBocmFzZSgpOiBzdHJpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/ServerRequestInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFJlcHJlc2VudGF0aW9uIG9mIGFuIGluY29taW5nLCBzZXJ2ZXItc2lkZSBIVFRQIHJlcXVlc3QuCiAqCiAqIFBlciB0aGUgSFRUUCBzcGVjaWZpY2F0aW9uLCB0aGlzIGludGVyZmFjZSBpbmNsdWRlcyBwcm9wZXJ0aWVzIGZvcgogKiBlYWNoIG9mIHRoZSBmb2xsb3dpbmc6CiAqCiAqIC0gUHJvdG9jb2wgdmVyc2lvbgogKiAtIEhUVFAgbWV0aG9kCiAqIC0gVVJJCiAqIC0gSGVhZGVycwogKiAtIE1lc3NhZ2UgYm9keQogKgogKiBBZGRpdGlvbmFsbHksIGl0IGVuY2Fwc3VsYXRlcyBhbGwgZGF0YSBhcyBpdCBoYXMgYXJyaXZlZCB0byB0aGUKICogYXBwbGljYXRpb24gZnJvbSB0aGUgQ0dJIGFuZC9vciBQSFAgZW52aXJvbm1lbnQsIGluY2x1ZGluZzoKICoKICogLSBUaGUgdmFsdWVzIHJlcHJlc2VudGVkIGluICRfU0VSVkVSLgogKiAtIEFueSBjb29raWVzIHByb3ZpZGVkIChnZW5lcmFsbHkgdmlhICRfQ09PS0lFKQogKiAtIFF1ZXJ5IHN0cmluZyBhcmd1bWVudHMgKGdlbmVyYWxseSB2aWEgJF9HRVQsIG9yIGFzIHBhcnNlZCB2aWEgcGFyc2Vfc3RyKCkpCiAqIC0gVXBsb2FkIGZpbGVzLCBpZiBhbnkgKGFzIHJlcHJlc2VudGVkIGJ5ICRfRklMRVMpCiAqIC0gRGVzZXJpYWxpemVkIGJvZHkgcGFyYW1ldGVycyAoZ2VuZXJhbGx5IGZyb20gJF9QT1NUKQogKgogKiAkX1NFUlZFUiB2YWx1ZXMgTVVTVCBiZSB0cmVhdGVkIGFzIGltbXV0YWJsZSwgYXMgdGhleSByZXByZXNlbnQgYXBwbGljYXRpb24KICogc3RhdGUgYXQgdGhlIHRpbWUgb2YgcmVxdWVzdDsgYXMgc3VjaCwgbm8gbWV0aG9kcyBhcmUgcHJvdmlkZWQgdG8gYWxsb3cKICogbW9kaWZpY2F0aW9uIG9mIHRob3NlIHZhbHVlcy4gVGhlIG90aGVyIHZhbHVlcyBwcm92aWRlIHN1Y2ggbWV0aG9kcywgYXMgdGhleQogKiBjYW4gYmUgcmVzdG9yZWQgZnJvbSAkX1NFUlZFUiBvciB0aGUgcmVxdWVzdCBib2R5LCBhbmQgbWF5IG5lZWQgdHJlYXRtZW50CiAqIGR1cmluZyB0aGUgYXBwbGljYXRpb24gKGUuZy4sIGJvZHkgcGFyYW1ldGVycyBtYXkgYmUgZGVzZXJpYWxpemVkIGJhc2VkIG9uCiAqIGNvbnRlbnQgdHlwZSkuCiAqCiAqIEFkZGl0aW9uYWxseSwgdGhpcyBpbnRlcmZhY2UgcmVjb2duaXplcyB0aGUgdXRpbGl0eSBvZiBpbnRyb3NwZWN0aW5nIGEKICogcmVxdWVzdCB0byBkZXJpdmUgYW5kIG1hdGNoIGFkZGl0aW9uYWwgcGFyYW1ldGVycyAoZS5nLiwgdmlhIFVSSSBwYXRoCiAqIG1hdGNoaW5nLCBkZWNyeXB0aW5nIGNvb2tpZSB2YWx1ZXMsIGRlc2VyaWFsaXppbmcgbm9uLWZvcm0tZW5jb2RlZCBib2R5CiAqIGNvbnRlbnQsIG1hdGNoaW5nIGF1dGhvcml6YXRpb24gaGVhZGVycyB0byB1c2VycywgZXRjKS4gVGhlc2UgcGFyYW1ldGVycwogKiBhcmUgc3RvcmVkIGluIGFuICJhdHRyaWJ1dGVzIiBwcm9wZXJ0eS4KICoKICogUmVxdWVzdHMgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0IG1pZ2h0IGNoYW5nZSBzdGF0ZSBNVVNUCiAqIGJlIGltcGxlbWVudGVkIHN1Y2ggdGhhdCB0aGV5IHJldGFpbiB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGN1cnJlbnQKICogbWVzc2FnZSBhbmQgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIGNoYW5nZWQgc3RhdGUuCiAqLwppbnRlcmZhY2UgU2VydmVyUmVxdWVzdEludGVyZmFjZSBleHRlbmRzIFJlcXVlc3RJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBzZXJ2ZXIgcGFyYW1ldGVycy4KICAgICAqCiAgICAgKiBSZXRyaWV2ZXMgZGF0YSByZWxhdGVkIHRvIHRoZSBpbmNvbWluZyByZXF1ZXN0IGVudmlyb25tZW50LAogICAgICogdHlwaWNhbGx5IGRlcml2ZWQgZnJvbSBQSFAncyAkX1NFUlZFUiBzdXBlcmdsb2JhbC4gVGhlIGRhdGEgSVMgTk9UCiAgICAgKiBSRVFVSVJFRCB0byBvcmlnaW5hdGUgZnJvbSAkX1NFUlZFUi4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTZXJ2ZXJQYXJhbXMoKTogYXJyYXk7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBjb29raWVzLgogICAgICoKICAgICAqIFJldHJpZXZlcyBjb29raWVzIHNlbnQgYnkgdGhlIGNsaWVudCB0byB0aGUgc2VydmVyLgogICAgICoKICAgICAqIFRoZSBkYXRhIE1VU1QgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlICRfQ09PS0lFCiAgICAgKiBzdXBlcmdsb2JhbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb29raWVQYXJhbXMoKTogYXJyYXk7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGNvb2tpZXMuCiAgICAgKgogICAgICogVGhlIGRhdGEgSVMgTk9UIFJFUVVJUkVEIHRvIGNvbWUgZnJvbSB0aGUgJF9DT09LSUUgc3VwZXJnbG9iYWwsIGJ1dCBNVVNUCiAgICAgKiBiZSBjb21wYXRpYmxlIHdpdGggdGhlIHN0cnVjdHVyZSBvZiAkX0NPT0tJRS4gVHlwaWNhbGx5LCB0aGlzIGRhdGEgd2lsbAogICAgICogYmUgaW5qZWN0ZWQgYXQgaW5zdGFudGlhdGlvbi4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIE5PVCB1cGRhdGUgdGhlIHJlbGF0ZWQgQ29va2llIGhlYWRlciBvZiB0aGUgcmVxdWVzdAogICAgICogaW5zdGFuY2UsIG5vciByZWxhdGVkIHZhbHVlcyBpbiB0aGUgc2VydmVyIHBhcmFtcy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmV0YWluIHRoZQogICAgICogaW1tdXRhYmlsaXR5IG9mIHRoZSBtZXNzYWdlLCBhbmQgTVVTVCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBoYXMgdGhlCiAgICAgKiB1cGRhdGVkIGNvb2tpZSB2YWx1ZXMuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRjb29raWVzIEFycmF5IG9mIGtleS92YWx1ZSBwYWlycyByZXByZXNlbnRpbmcgY29va2llcy4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQ29va2llUGFyYW1zKGFycmF5ICRjb29raWVzKTogU2VydmVyUmVxdWVzdEludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHF1ZXJ5IHN0cmluZyBhcmd1bWVudHMuCiAgICAgKgogICAgICogUmV0cmlldmVzIHRoZSBkZXNlcmlhbGl6ZWQgcXVlcnkgc3RyaW5nIGFyZ3VtZW50cywgaWYgYW55LgogICAgICoKICAgICAqIE5vdGU6IHRoZSBxdWVyeSBwYXJhbXMgbWlnaHQgbm90IGJlIGluIHN5bmMgd2l0aCB0aGUgVVJJIG9yIHNlcnZlcgogICAgICogcGFyYW1zLiBJZiB5b3UgbmVlZCB0byBlbnN1cmUgeW91IGFyZSBvbmx5IGdldHRpbmcgdGhlIG9yaWdpbmFsCiAgICAgKiB2YWx1ZXMsIHlvdSBtYXkgbmVlZCB0byBwYXJzZSB0aGUgcXVlcnkgc3RyaW5nIGZyb20gYGdldFVyaSgpLT5nZXRRdWVyeSgpYAogICAgICogb3IgZnJvbSB0aGUgYFFVRVJZX1NUUklOR2Agc2VydmVyIHBhcmFtLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFF1ZXJ5UGFyYW1zKCk6IGFycmF5OwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBxdWVyeSBzdHJpbmcgYXJndW1lbnRzLgogICAgICoKICAgICAqIFRoZXNlIHZhbHVlcyBTSE9VTEQgcmVtYWluIGltbXV0YWJsZSBvdmVyIHRoZSBjb3Vyc2Ugb2YgdGhlIGluY29taW5nCiAgICAgKiByZXF1ZXN0LiBUaGV5IE1BWSBiZSBpbmplY3RlZCBkdXJpbmcgaW5zdGFudGlhdGlvbiwgc3VjaCBhcyBmcm9tIFBIUCdzCiAgICAgKiAkX0dFVCBzdXBlcmdsb2JhbCwgb3IgTUFZIGJlIGRlcml2ZWQgZnJvbSBzb21lIG90aGVyIHZhbHVlIHN1Y2ggYXMgdGhlCiAgICAgKiBVUkkuIEluIGNhc2VzIHdoZXJlIHRoZSBhcmd1bWVudHMgYXJlIHBhcnNlZCBmcm9tIHRoZSBVUkksIHRoZSBkYXRhCiAgICAgKiBNVVNUIGJlIGNvbXBhdGlibGUgd2l0aCB3aGF0IFBIUCdzIHBhcnNlX3N0cigpIHdvdWxkIHJldHVybiBmb3IKICAgICAqIHB1cnBvc2VzIG9mIGhvdyBkdXBsaWNhdGUgcXVlcnkgcGFyYW1ldGVycyBhcmUgaGFuZGxlZCwgYW5kIGhvdyBuZXN0ZWQKICAgICAqIHNldHMgYXJlIGhhbmRsZWQuCiAgICAgKgogICAgICogU2V0dGluZyBxdWVyeSBzdHJpbmcgYXJndW1lbnRzIE1VU1QgTk9UIGNoYW5nZSB0aGUgVVJJIHN0b3JlZCBieSB0aGUKICAgICAqIHJlcXVlc3QsIG5vciB0aGUgdmFsdWVzIGluIHRoZSBzZXJ2ZXIgcGFyYW1zLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGhhcyB0aGUKICAgICAqIHVwZGF0ZWQgcXVlcnkgc3RyaW5nIGFyZ3VtZW50cy4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHF1ZXJ5IEFycmF5IG9mIHF1ZXJ5IHN0cmluZyBhcmd1bWVudHMsIHR5cGljYWxseSBmcm9tCiAgICAgKiAgICAgJF9HRVQuCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFF1ZXJ5UGFyYW1zKGFycmF5ICRxdWVyeSk6IFNlcnZlclJlcXVlc3RJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBub3JtYWxpemVkIGZpbGUgdXBsb2FkIGRhdGEuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB1cGxvYWQgbWV0YWRhdGEgaW4gYSBub3JtYWxpemVkIHRyZWUsIHdpdGggZWFjaCBsZWFmCiAgICAgKiBhbiBpbnN0YW5jZSBvZiBQc3JcSHR0cFxNZXNzYWdlXFVwbG9hZGVkRmlsZUludGVyZmFjZS4KICAgICAqCiAgICAgKiBUaGVzZSB2YWx1ZXMgTUFZIGJlIHByZXBhcmVkIGZyb20gJF9GSUxFUyBvciB0aGUgbWVzc2FnZSBib2R5IGR1cmluZwogICAgICogaW5zdGFudGlhdGlvbiwgb3IgTUFZIGJlIGluamVjdGVkIHZpYSB3aXRoVXBsb2FkZWRGaWxlcygpLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgQW4gYXJyYXkgdHJlZSBvZiBVcGxvYWRlZEZpbGVJbnRlcmZhY2UgaW5zdGFuY2VzOyBhbiBlbXB0eQogICAgICogICAgIGFycmF5IE1VU1QgYmUgcmV0dXJuZWQgaWYgbm8gZGF0YSBpcyBwcmVzZW50LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXBsb2FkZWRGaWxlcygpOiBhcnJheTsKCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgdXBsb2FkZWQgZmlsZXMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogdXBkYXRlZCBib2R5IHBhcmFtZXRlcnMuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICR1cGxvYWRlZEZpbGVzIEFuIGFycmF5IHRyZWUgb2YgVXBsb2FkZWRGaWxlSW50ZXJmYWNlIGluc3RhbmNlcy4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgYW4gaW52YWxpZCBzdHJ1Y3R1cmUgaXMgcHJvdmlkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoVXBsb2FkZWRGaWxlcyhhcnJheSAkdXBsb2FkZWRGaWxlcyk6IFNlcnZlclJlcXVlc3RJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBhbnkgcGFyYW1ldGVycyBwcm92aWRlZCBpbiB0aGUgcmVxdWVzdCBib2R5LgogICAgICoKICAgICAqIElmIHRoZSByZXF1ZXN0IENvbnRlbnQtVHlwZSBpcyBlaXRoZXIgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkCiAgICAgKiBvciBtdWx0aXBhcnQvZm9ybS1kYXRhLCBhbmQgdGhlIHJlcXVlc3QgbWV0aG9kIGlzIFBPU1QsIHRoaXMgbWV0aG9kIE1VU1QKICAgICAqIHJldHVybiB0aGUgY29udGVudHMgb2YgJF9QT1NULgogICAgICoKICAgICAqIE90aGVyd2lzZSwgdGhpcyBtZXRob2QgbWF5IHJldHVybiBhbnkgcmVzdWx0cyBvZiBkZXNlcmlhbGl6aW5nCiAgICAgKiB0aGUgcmVxdWVzdCBib2R5IGNvbnRlbnQ7IGFzIHBhcnNpbmcgcmV0dXJucyBzdHJ1Y3R1cmVkIGNvbnRlbnQsIHRoZQogICAgICogcG90ZW50aWFsIHR5cGVzIE1VU1QgYmUgYXJyYXlzIG9yIG9iamVjdHMgb25seS4gQSBudWxsIHZhbHVlIGluZGljYXRlcwogICAgICogdGhlIGFic2VuY2Ugb2YgYm9keSBjb250ZW50LgogICAgICoKICAgICAqIEByZXR1cm4gbnVsbHxhcnJheXxvYmplY3QgVGhlIGRlc2VyaWFsaXplZCBib2R5IHBhcmFtZXRlcnMsIGlmIGFueS4KICAgICAqICAgICBUaGVzZSB3aWxsIHR5cGljYWxseSBiZSBhbiBhcnJheSBvciBvYmplY3QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQYXJzZWRCb2R5KCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGJvZHkgcGFyYW1ldGVycy4KICAgICAqCiAgICAgKiBUaGVzZSBNQVkgYmUgaW5qZWN0ZWQgZHVyaW5nIGluc3RhbnRpYXRpb24uCiAgICAgKgogICAgICogSWYgdGhlIHJlcXVlc3QgQ29udGVudC1UeXBlIGlzIGVpdGhlciBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQKICAgICAqIG9yIG11bHRpcGFydC9mb3JtLWRhdGEsIGFuZCB0aGUgcmVxdWVzdCBtZXRob2QgaXMgUE9TVCwgdXNlIHRoaXMgbWV0aG9kCiAgICAgKiBPTkxZIHRvIGluamVjdCB0aGUgY29udGVudHMgb2YgJF9QT1NULgogICAgICoKICAgICAqIFRoZSBkYXRhIElTIE5PVCBSRVFVSVJFRCB0byBjb21lIGZyb20gJF9QT1NULCBidXQgTVVTVCBiZSB0aGUgcmVzdWx0cyBvZgogICAgICogZGVzZXJpYWxpemluZyB0aGUgcmVxdWVzdCBib2R5IGNvbnRlbnQuIERlc2VyaWFsaXphdGlvbi9wYXJzaW5nIHJldHVybnMKICAgICAqIHN0cnVjdHVyZWQgZGF0YSwgYW5kLCBhcyBzdWNoLCB0aGlzIG1ldGhvZCBPTkxZIGFjY2VwdHMgYXJyYXlzIG9yIG9iamVjdHMsCiAgICAgKiBvciBhIG51bGwgdmFsdWUgaWYgbm90aGluZyB3YXMgYXZhaWxhYmxlIHRvIHBhcnNlLgogICAgICoKICAgICAqIEFzIGFuIGV4YW1wbGUsIGlmIGNvbnRlbnQgbmVnb3RpYXRpb24gZGV0ZXJtaW5lcyB0aGF0IHRoZSByZXF1ZXN0IGRhdGEKICAgICAqIGlzIGEgSlNPTiBwYXlsb2FkLCB0aGlzIG1ldGhvZCBjb3VsZCBiZSB1c2VkIHRvIGNyZWF0ZSBhIHJlcXVlc3QKICAgICAqIGluc3RhbmNlIHdpdGggdGhlIGRlc2VyaWFsaXplZCBwYXJhbWV0ZXJzLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGhhcyB0aGUKICAgICAqIHVwZGF0ZWQgYm9keSBwYXJhbWV0ZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBudWxsfGFycmF5fG9iamVjdCAkZGF0YSBUaGUgZGVzZXJpYWxpemVkIGJvZHkgZGF0YS4gVGhpcyB3aWxsCiAgICAgKiAgICAgdHlwaWNhbGx5IGJlIGluIGFuIGFycmF5IG9yIG9iamVjdC4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgYW4gdW5zdXBwb3J0ZWQgYXJndW1lbnQgdHlwZSBpcwogICAgICogICAgIHByb3ZpZGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFBhcnNlZEJvZHkoJGRhdGEpOiBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0cmlldmUgYXR0cmlidXRlcyBkZXJpdmVkIGZyb20gdGhlIHJlcXVlc3QuCiAgICAgKgogICAgICogVGhlIHJlcXVlc3QgImF0dHJpYnV0ZXMiIG1heSBiZSB1c2VkIHRvIGFsbG93IGluamVjdGlvbiBvZiBhbnkKICAgICAqIHBhcmFtZXRlcnMgZGVyaXZlZCBmcm9tIHRoZSByZXF1ZXN0OiBlLmcuLCB0aGUgcmVzdWx0cyBvZiBwYXRoCiAgICAgKiBtYXRjaCBvcGVyYXRpb25zOyB0aGUgcmVzdWx0cyBvZiBkZWNyeXB0aW5nIGNvb2tpZXM7IHRoZSByZXN1bHRzIG9mCiAgICAgKiBkZXNlcmlhbGl6aW5nIG5vbi1mb3JtLWVuY29kZWQgbWVzc2FnZSBib2RpZXM7IGV0Yy4gQXR0cmlidXRlcwogICAgICogd2lsbCBiZSBhcHBsaWNhdGlvbiBhbmQgcmVxdWVzdCBzcGVjaWZpYywgYW5kIENBTiBiZSBtdXRhYmxlLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgQXR0cmlidXRlcyBkZXJpdmVkIGZyb20gdGhlIHJlcXVlc3QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdHRyaWJ1dGVzKCk6IGFycmF5OwoKICAgIC8qKgogICAgICogUmV0cmlldmUgYSBzaW5nbGUgZGVyaXZlZCByZXF1ZXN0IGF0dHJpYnV0ZS4KICAgICAqCiAgICAgKiBSZXRyaWV2ZXMgYSBzaW5nbGUgZGVyaXZlZCByZXF1ZXN0IGF0dHJpYnV0ZSBhcyBkZXNjcmliZWQgaW4KICAgICAqIGdldEF0dHJpYnV0ZXMoKS4gSWYgdGhlIGF0dHJpYnV0ZSBoYXMgbm90IGJlZW4gcHJldmlvdXNseSBzZXQsIHJldHVybnMKICAgICAqIHRoZSBkZWZhdWx0IHZhbHVlIGFzIHByb3ZpZGVkLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIG9idmlhdGVzIHRoZSBuZWVkIGZvciBhIGhhc0F0dHJpYnV0ZSgpIG1ldGhvZCwgYXMgaXQgYWxsb3dzCiAgICAgKiBzcGVjaWZ5aW5nIGEgZGVmYXVsdCB2YWx1ZSB0byByZXR1cm4gaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQuCiAgICAgKgogICAgICogQHNlZSBnZXRBdHRyaWJ1dGVzKCkKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIGF0dHJpYnV0ZSBuYW1lLgogICAgICogQHBhcmFtIG1peGVkICRkZWZhdWx0IERlZmF1bHQgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QuCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdHRyaWJ1dGUoc3RyaW5nICRuYW1lLCAkZGVmYXVsdCA9IG51bGwpOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBkZXJpdmVkIHJlcXVlc3QgYXR0cmlidXRlLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGFsbG93cyBzZXR0aW5nIGEgc2luZ2xlIGRlcml2ZWQgcmVxdWVzdCBhdHRyaWJ1dGUgYXMKICAgICAqIGRlc2NyaWJlZCBpbiBnZXRBdHRyaWJ1dGVzKCkuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogdXBkYXRlZCBhdHRyaWJ1dGUuCiAgICAgKgogICAgICogQHNlZSBnZXRBdHRyaWJ1dGVzKCkKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIGF0dHJpYnV0ZSBuYW1lLgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZS4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQXR0cmlidXRlKHN0cmluZyAkbmFtZSwgJHZhbHVlKTogU2VydmVyUmVxdWVzdEludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB0aGF0IHJlbW92ZXMgdGhlIHNwZWNpZmllZCBkZXJpdmVkIHJlcXVlc3QgYXR0cmlidXRlLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGFsbG93cyByZW1vdmluZyBhIHNpbmdsZSBkZXJpdmVkIHJlcXVlc3QgYXR0cmlidXRlIGFzCiAgICAgKiBkZXNjcmliZWQgaW4gZ2V0QXR0cmlidXRlcygpLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IHJlbW92ZXMKICAgICAqIHRoZSBhdHRyaWJ1dGUuCiAgICAgKgogICAgICogQHNlZSBnZXRBdHRyaWJ1dGVzKCkKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIGF0dHJpYnV0ZSBuYW1lLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhvdXRBdHRyaWJ1dGUoc3RyaW5nICRuYW1lKTogU2VydmVyUmVxdWVzdEludGVyZmFjZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/StreamInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIERlc2NyaWJlcyBhIGRhdGEgc3RyZWFtLgogKgogKiBUeXBpY2FsbHksIGFuIGluc3RhbmNlIHdpbGwgd3JhcCBhIFBIUCBzdHJlYW07IHRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzCiAqIGEgd3JhcHBlciBhcm91bmQgdGhlIG1vc3QgY29tbW9uIG9wZXJhdGlvbnMsIGluY2x1ZGluZyBzZXJpYWxpemF0aW9uIG9mCiAqIHRoZSBlbnRpcmUgc3RyZWFtIHRvIGEgc3RyaW5nLgogKi8KaW50ZXJmYWNlIFN0cmVhbUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJlYWRzIGFsbCBkYXRhIGZyb20gdGhlIHN0cmVhbSBpbnRvIGEgc3RyaW5nLCBmcm9tIHRoZSBiZWdpbm5pbmcgdG8gZW5kLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYXR0ZW1wdCB0byBzZWVrIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmVhbSBiZWZvcmUKICAgICAqIHJlYWRpbmcgZGF0YSBhbmQgcmVhZCB0aGUgc3RyZWFtIHVudGlsIHRoZSBlbmQgaXMgcmVhY2hlZC4KICAgICAqCiAgICAgKiBXYXJuaW5nOiBUaGlzIGNvdWxkIGF0dGVtcHQgdG8gbG9hZCBhIGxhcmdlIGFtb3VudCBvZiBkYXRhIGludG8gbWVtb3J5LgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgTk9UIHJhaXNlIGFuIGV4Y2VwdGlvbiBpbiBvcmRlciB0byBjb25mb3JtIHdpdGggUEhQJ3MKICAgICAqIHN0cmluZyBjYXN0aW5nIG9wZXJhdGlvbnMuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5tYWdpYy5waHAjb2JqZWN0LnRvc3RyaW5nCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBDbG9zZXMgdGhlIHN0cmVhbSBhbmQgYW55IHVuZGVybHlpbmcgcmVzb3VyY2VzLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xvc2UoKTogdm9pZDsKCiAgICAvKioKICAgICAqIFNlcGFyYXRlcyBhbnkgdW5kZXJseWluZyByZXNvdXJjZXMgZnJvbSB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIEFmdGVyIHRoZSBzdHJlYW0gaGFzIGJlZW4gZGV0YWNoZWQsIHRoZSBzdHJlYW0gaXMgaW4gYW4gdW51c2FibGUgc3RhdGUuCiAgICAgKgogICAgICogQHJldHVybiByZXNvdXJjZXxudWxsIFVuZGVybHlpbmcgUEhQIHN0cmVhbSwgaWYgYW55CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZXRhY2goKTsKCiAgICAvKioKICAgICAqIEdldCB0aGUgc2l6ZSBvZiB0aGUgc3RyZWFtIGlmIGtub3duLgogICAgICoKICAgICAqIEByZXR1cm4gaW50fG51bGwgUmV0dXJucyB0aGUgc2l6ZSBpbiBieXRlcyBpZiBrbm93biwgb3IgbnVsbCBpZiB1bmtub3duLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2l6ZSgpOiA/aW50OwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgZmlsZSByZWFkL3dyaXRlIHBvaW50ZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIGludCBQb3NpdGlvbiBvZiB0aGUgZmlsZSBwb2ludGVyCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIG9uIGVycm9yLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVsbCgpOiBpbnQ7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHN0cmVhbSBpcyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0uCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlb2YoKTogYm9vbDsKCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmVhbSBpcyBzZWVrYWJsZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzU2Vla2FibGUoKTogYm9vbDsKCiAgICAvKioKICAgICAqIFNlZWsgdG8gYSBwb3NpdGlvbiBpbiB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24uZnNlZWsucGhwCiAgICAgKiBAcGFyYW0gaW50ICRvZmZzZXQgU3RyZWFtIG9mZnNldAogICAgICogQHBhcmFtIGludCAkd2hlbmNlIFNwZWNpZmllcyBob3cgdGhlIGN1cnNvciBwb3NpdGlvbiB3aWxsIGJlIGNhbGN1bGF0ZWQKICAgICAqICAgICBiYXNlZCBvbiB0aGUgc2VlayBvZmZzZXQuIFZhbGlkIHZhbHVlcyBhcmUgaWRlbnRpY2FsIHRvIHRoZSBidWlsdC1pbgogICAgICogICAgIFBIUCAkd2hlbmNlIHZhbHVlcyBmb3IgYGZzZWVrKClgLiAgU0VFS19TRVQ6IFNldCBwb3NpdGlvbiBlcXVhbCB0bwogICAgICogICAgIG9mZnNldCBieXRlcyBTRUVLX0NVUjogU2V0IHBvc2l0aW9uIHRvIGN1cnJlbnQgbG9jYXRpb24gcGx1cyBvZmZzZXQKICAgICAqICAgICBTRUVLX0VORDogU2V0IHBvc2l0aW9uIHRvIGVuZC1vZi1zdHJlYW0gcGx1cyBvZmZzZXQuCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIG9uIGZhaWx1cmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZWVrKGludCAkb2Zmc2V0LCBpbnQgJHdoZW5jZSA9IFNFRUtfU0VUKTogdm9pZDsKCiAgICAvKioKICAgICAqIFNlZWsgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIElmIHRoZSBzdHJlYW0gaXMgbm90IHNlZWthYmxlLCB0aGlzIG1ldGhvZCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbjsKICAgICAqIG90aGVyd2lzZSwgaXQgd2lsbCBwZXJmb3JtIGEgc2VlaygwKS4KICAgICAqCiAgICAgKiBAc2VlIHNlZWsoKQogICAgICogQGxpbmsgaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5mc2Vlay5waHAKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gb24gZmFpbHVyZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJld2luZCgpOiB2b2lkOwoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyZWFtIGlzIHdyaXRhYmxlLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNXcml0YWJsZSgpOiBib29sOwoKICAgIC8qKgogICAgICogV3JpdGUgZGF0YSB0byB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZyBUaGUgc3RyaW5nIHRoYXQgaXMgdG8gYmUgd3JpdHRlbi4KICAgICAqIEByZXR1cm4gaW50IFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0uCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIG9uIGZhaWx1cmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3cml0ZShzdHJpbmcgJHN0cmluZyk6IGludDsKCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmVhbSBpcyByZWFkYWJsZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUmVhZGFibGUoKTogYm9vbDsKCiAgICAvKioKICAgICAqIFJlYWQgZGF0YSBmcm9tIHRoZSBzdHJlYW0uCiAgICAgKgogICAgICogQHBhcmFtIGludCAkbGVuZ3RoIFJlYWQgdXAgdG8gJGxlbmd0aCBieXRlcyBmcm9tIHRoZSBvYmplY3QgYW5kIHJldHVybgogICAgICogICAgIHRoZW0uIEZld2VyIHRoYW4gJGxlbmd0aCBieXRlcyBtYXkgYmUgcmV0dXJuZWQgaWYgdW5kZXJseWluZyBzdHJlYW0KICAgICAqICAgICBjYWxsIHJldHVybnMgZmV3ZXIgYnl0ZXMuCiAgICAgKiBAcmV0dXJuIHN0cmluZyBSZXR1cm5zIHRoZSBkYXRhIHJlYWQgZnJvbSB0aGUgc3RyZWFtLCBvciBhbiBlbXB0eSBzdHJpbmcKICAgICAqICAgICBpZiBubyBieXRlcyBhcmUgYXZhaWxhYmxlLgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiBhbiBlcnJvciBvY2N1cnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKGludCAkbGVuZ3RoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVtYWluaW5nIGNvbnRlbnRzIGluIGEgc3RyaW5nCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgdW5hYmxlIHRvIHJlYWQgb3IgYW4gZXJyb3Igb2NjdXJzIHdoaWxlCiAgICAgKiAgICAgcmVhZGluZy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnRzKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIEdldCBzdHJlYW0gbWV0YWRhdGEgYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgb3IgcmV0cmlldmUgYSBzcGVjaWZpYyBrZXkuCiAgICAgKgogICAgICogVGhlIGtleXMgcmV0dXJuZWQgYXJlIGlkZW50aWNhbCB0byB0aGUga2V5cyByZXR1cm5lZCBmcm9tIFBIUCdzCiAgICAgKiBzdHJlYW1fZ2V0X21ldGFfZGF0YSgpIGZ1bmN0aW9uLgogICAgICoKICAgICAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5zdHJlYW0tZ2V0LW1ldGEtZGF0YS5waHAKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAka2V5IFNwZWNpZmljIG1ldGFkYXRhIHRvIHJldHJpZXZlLgogICAgICogQHJldHVybiBhcnJheXxtaXhlZHxudWxsIFJldHVybnMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgaWYgbm8ga2V5IGlzCiAgICAgKiAgICAgcHJvdmlkZWQuIFJldHVybnMgYSBzcGVjaWZpYyBrZXkgdmFsdWUgaWYgYSBrZXkgaXMgcHJvdmlkZWQgYW5kIHRoZQogICAgICogICAgIHZhbHVlIGlzIGZvdW5kLCBvciBudWxsIGlmIHRoZSBrZXkgaXMgbm90IGZvdW5kLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWV0YWRhdGEoP3N0cmluZyAka2V5ID0gbnVsbCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/UploadedFileInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFZhbHVlIG9iamVjdCByZXByZXNlbnRpbmcgYSBmaWxlIHVwbG9hZGVkIHRocm91Z2ggYW4gSFRUUCByZXF1ZXN0LgogKgogKiBJbnN0YW5jZXMgb2YgdGhpcyBpbnRlcmZhY2UgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0CiAqIG1pZ2h0IGNoYW5nZSBzdGF0ZSBNVVNUIGJlIGltcGxlbWVudGVkIHN1Y2ggdGhhdCB0aGV5IHJldGFpbiB0aGUgaW50ZXJuYWwKICogc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UgYW5kIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZQogKiBjaGFuZ2VkIHN0YXRlLgogKi8KaW50ZXJmYWNlIFVwbG9hZGVkRmlsZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHJpZXZlIGEgc3RyZWFtIHJlcHJlc2VudGluZyB0aGUgdXBsb2FkZWQgZmlsZS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldHVybiBhIFN0cmVhbUludGVyZmFjZSBpbnN0YW5jZSwgcmVwcmVzZW50aW5nIHRoZQogICAgICogdXBsb2FkZWQgZmlsZS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gYWxsb3cgdXRpbGl6aW5nIG5hdGl2ZSBQSFAKICAgICAqIHN0cmVhbSBmdW5jdGlvbmFsaXR5IHRvIG1hbmlwdWxhdGUgdGhlIGZpbGUgdXBsb2FkLCBzdWNoIGFzCiAgICAgKiBzdHJlYW1fY29weV90b19zdHJlYW0oKSAodGhvdWdoIHRoZSByZXN1bHQgd2lsbCBuZWVkIHRvIGJlIGRlY29yYXRlZCBpbiBhCiAgICAgKiBuYXRpdmUgUEhQIHN0cmVhbSB3cmFwcGVyIHRvIHdvcmsgd2l0aCBzdWNoIGZ1bmN0aW9ucykuCiAgICAgKgogICAgICogSWYgdGhlIG1vdmVUbygpIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQgcHJldmlvdXNseSwgdGhpcyBtZXRob2QgTVVTVCByYWlzZQogICAgICogYW4gZXhjZXB0aW9uLgogICAgICoKICAgICAqIEByZXR1cm4gU3RyZWFtSW50ZXJmYWNlIFN0cmVhbSByZXByZXNlbnRhdGlvbiBvZiB0aGUgdXBsb2FkZWQgZmlsZS4KICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaW4gY2FzZXMgd2hlbiBubyBzdHJlYW0gaXMgYXZhaWxhYmxlIG9yIGNhbiBiZQogICAgICogICAgIGNyZWF0ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdHJlYW0oKTogU3RyZWFtSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogTW92ZSB0aGUgdXBsb2FkZWQgZmlsZSB0byBhIG5ldyBsb2NhdGlvbi4KICAgICAqCiAgICAgKiBVc2UgdGhpcyBtZXRob2QgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gbW92ZV91cGxvYWRlZF9maWxlKCkuIFRoaXMgbWV0aG9kIGlzCiAgICAgKiBndWFyYW50ZWVkIHRvIHdvcmsgaW4gYm90aCBTQVBJIGFuZCBub24tU0FQSSBlbnZpcm9ubWVudHMuCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgbXVzdCBkZXRlcm1pbmUgd2hpY2ggZW52aXJvbm1lbnQgdGhleSBhcmUgaW4sIGFuZCB1c2UgdGhlCiAgICAgKiBhcHByb3ByaWF0ZSBtZXRob2QgKG1vdmVfdXBsb2FkZWRfZmlsZSgpLCByZW5hbWUoKSwgb3IgYSBzdHJlYW0KICAgICAqIG9wZXJhdGlvbikgdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLgogICAgICoKICAgICAqICR0YXJnZXRQYXRoIG1heSBiZSBhbiBhYnNvbHV0ZSBwYXRoLCBvciBhIHJlbGF0aXZlIHBhdGguIElmIGl0IGlzIGEKICAgICAqIHJlbGF0aXZlIHBhdGgsIHJlc29sdXRpb24gc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHVzZWQgYnkgUEhQJ3MgcmVuYW1lKCkKICAgICAqIGZ1bmN0aW9uLgogICAgICoKICAgICAqIFRoZSBvcmlnaW5hbCBmaWxlIG9yIHN0cmVhbSBNVVNUIGJlIHJlbW92ZWQgb24gY29tcGxldGlvbi4KICAgICAqCiAgICAgKiBJZiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgbW9yZSB0aGFuIG9uY2UsIGFueSBzdWJzZXF1ZW50IGNhbGxzIE1VU1QgcmFpc2UKICAgICAqIGFuIGV4Y2VwdGlvbi4KICAgICAqCiAgICAgKiBXaGVuIHVzZWQgaW4gYW4gU0FQSSBlbnZpcm9ubWVudCB3aGVyZSAkX0ZJTEVTIGlzIHBvcHVsYXRlZCwgd2hlbiB3cml0aW5nCiAgICAgKiBmaWxlcyB2aWEgbW92ZVRvKCksIGlzX3VwbG9hZGVkX2ZpbGUoKSBhbmQgbW92ZV91cGxvYWRlZF9maWxlKCkgU0hPVUxEIGJlCiAgICAgKiB1c2VkIHRvIGVuc3VyZSBwZXJtaXNzaW9ucyBhbmQgdXBsb2FkIHN0YXR1cyBhcmUgdmVyaWZpZWQgY29ycmVjdGx5LgogICAgICoKICAgICAqIElmIHlvdSB3aXNoIHRvIG1vdmUgdG8gYSBzdHJlYW0sIHVzZSBnZXRTdHJlYW0oKSwgYXMgU0FQSSBvcGVyYXRpb25zCiAgICAgKiBjYW5ub3QgZ3VhcmFudGVlIHdyaXRpbmcgdG8gc3RyZWFtIGRlc3RpbmF0aW9ucy4KICAgICAqCiAgICAgKiBAc2VlIGh0dHA6Ly9waHAubmV0L2lzX3VwbG9hZGVkX2ZpbGUKICAgICAqIEBzZWUgaHR0cDovL3BocC5uZXQvbW92ZV91cGxvYWRlZF9maWxlCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0YXJnZXRQYXRoIFBhdGggdG8gd2hpY2ggdG8gbW92ZSB0aGUgdXBsb2FkZWQgZmlsZS4KICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgJHRhcmdldFBhdGggc3BlY2lmaWVkIGlzIGludmFsaWQuCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIG9uIGFueSBlcnJvciBkdXJpbmcgdGhlIG1vdmUgb3BlcmF0aW9uLCBvciBvbgogICAgICogICAgIHRoZSBzZWNvbmQgb3Igc3Vic2VxdWVudCBjYWxsIHRvIHRoZSBtZXRob2QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb3ZlVG8oc3RyaW5nICR0YXJnZXRQYXRoKTogdm9pZDsKICAgIAogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgZmlsZSBzaXplLgogICAgICoKICAgICAqIEltcGxlbWVudGF0aW9ucyBTSE9VTEQgcmV0dXJuIHRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhlICJzaXplIiBrZXkgb2YKICAgICAqIHRoZSBmaWxlIGluIHRoZSAkX0ZJTEVTIGFycmF5IGlmIGF2YWlsYWJsZSwgYXMgUEhQIGNhbGN1bGF0ZXMgdGhpcyBiYXNlZAogICAgICogb24gdGhlIGFjdHVhbCBzaXplIHRyYW5zbWl0dGVkLgogICAgICoKICAgICAqIEByZXR1cm4gaW50fG51bGwgVGhlIGZpbGUgc2l6ZSBpbiBieXRlcyBvciBudWxsIGlmIHVua25vd24uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaXplKCk6ID9pbnQ7CiAgICAKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIGVycm9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXBsb2FkZWQgZmlsZS4KICAgICAqCiAgICAgKiBUaGUgcmV0dXJuIHZhbHVlIE1VU1QgYmUgb25lIG9mIFBIUCdzIFVQTE9BRF9FUlJfWFhYIGNvbnN0YW50cy4KICAgICAqCiAgICAgKiBJZiB0aGUgZmlsZSB3YXMgdXBsb2FkZWQgc3VjY2Vzc2Z1bGx5LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybgogICAgICogVVBMT0FEX0VSUl9PSy4KICAgICAqCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgU0hPVUxEIHJldHVybiB0aGUgdmFsdWUgc3RvcmVkIGluIHRoZSAiZXJyb3IiIGtleSBvZgogICAgICogdGhlIGZpbGUgaW4gdGhlICRfRklMRVMgYXJyYXkuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vZmVhdHVyZXMuZmlsZS11cGxvYWQuZXJyb3JzLnBocAogICAgICogQHJldHVybiBpbnQgT25lIG9mIFBIUCdzIFVQTE9BRF9FUlJfWFhYIGNvbnN0YW50cy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEVycm9yKCk6IGludDsKICAgIAogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgZmlsZW5hbWUgc2VudCBieSB0aGUgY2xpZW50LgogICAgICoKICAgICAqIERvIG5vdCB0cnVzdCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2QuIEEgY2xpZW50IGNvdWxkIHNlbmQKICAgICAqIGEgbWFsaWNpb3VzIGZpbGVuYW1lIHdpdGggdGhlIGludGVudGlvbiB0byBjb3JydXB0IG9yIGhhY2sgeW91cgogICAgICogYXBwbGljYXRpb24uCiAgICAgKgogICAgICogSW1wbGVtZW50YXRpb25zIFNIT1VMRCByZXR1cm4gdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgIm5hbWUiIGtleSBvZgogICAgICogdGhlIGZpbGUgaW4gdGhlICRfRklMRVMgYXJyYXkuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbCBUaGUgZmlsZW5hbWUgc2VudCBieSB0aGUgY2xpZW50IG9yIG51bGwgaWYgbm9uZQogICAgICogICAgIHdhcyBwcm92aWRlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENsaWVudEZpbGVuYW1lKCk6ID9zdHJpbmc7CiAgICAKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIG1lZGlhIHR5cGUgc2VudCBieSB0aGUgY2xpZW50LgogICAgICoKICAgICAqIERvIG5vdCB0cnVzdCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2QuIEEgY2xpZW50IGNvdWxkIHNlbmQKICAgICAqIGEgbWFsaWNpb3VzIG1lZGlhIHR5cGUgd2l0aCB0aGUgaW50ZW50aW9uIHRvIGNvcnJ1cHQgb3IgaGFjayB5b3VyCiAgICAgKiBhcHBsaWNhdGlvbi4KICAgICAqCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgU0hPVUxEIHJldHVybiB0aGUgdmFsdWUgc3RvcmVkIGluIHRoZSAidHlwZSIga2V5IG9mCiAgICAgKiB0aGUgZmlsZSBpbiB0aGUgJF9GSUxFUyBhcnJheS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsIFRoZSBtZWRpYSB0eXBlIHNlbnQgYnkgdGhlIGNsaWVudCBvciBudWxsIGlmIG5vbmUKICAgICAqICAgICB3YXMgcHJvdmlkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDbGllbnRNZWRpYVR5cGUoKTogP3N0cmluZzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/UriInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFZhbHVlIG9iamVjdCByZXByZXNlbnRpbmcgYSBVUkkuCiAqCiAqIFRoaXMgaW50ZXJmYWNlIGlzIG1lYW50IHRvIHJlcHJlc2VudCBVUklzIGFjY29yZGluZyB0byBSRkMgMzk4NiBhbmQgdG8KICogcHJvdmlkZSBtZXRob2RzIGZvciBtb3N0IGNvbW1vbiBvcGVyYXRpb25zLiBBZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkgZm9yCiAqIHdvcmtpbmcgd2l0aCBVUklzIGNhbiBiZSBwcm92aWRlZCBvbiB0b3Agb2YgdGhlIGludGVyZmFjZSBvciBleHRlcm5hbGx5LgogKiBJdHMgcHJpbWFyeSB1c2UgaXMgZm9yIEhUVFAgcmVxdWVzdHMsIGJ1dCBtYXkgYWxzbyBiZSB1c2VkIGluIG90aGVyCiAqIGNvbnRleHRzLgogKgogKiBJbnN0YW5jZXMgb2YgdGhpcyBpbnRlcmZhY2UgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0CiAqIG1pZ2h0IGNoYW5nZSBzdGF0ZSBNVVNUIGJlIGltcGxlbWVudGVkIHN1Y2ggdGhhdCB0aGV5IHJldGFpbiB0aGUgaW50ZXJuYWwKICogc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UgYW5kIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZQogKiBjaGFuZ2VkIHN0YXRlLgogKgogKiBUeXBpY2FsbHkgdGhlIEhvc3QgaGVhZGVyIHdpbGwgYmUgYWxzbyBiZSBwcmVzZW50IGluIHRoZSByZXF1ZXN0IG1lc3NhZ2UuCiAqIEZvciBzZXJ2ZXItc2lkZSByZXF1ZXN0cywgdGhlIHNjaGVtZSB3aWxsIHR5cGljYWxseSBiZSBkaXNjb3ZlcmFibGUgaW4gdGhlCiAqIHNlcnZlciBwYXJhbWV0ZXJzLgogKgogKiBAbGluayBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2ICh0aGUgVVJJIHNwZWNpZmljYXRpb24pCiAqLwppbnRlcmZhY2UgVXJpSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIHNjaGVtZSBjb21wb25lbnQgb2YgdGhlIFVSSS4KICAgICAqCiAgICAgKiBJZiBubyBzY2hlbWUgaXMgcHJlc2VudCwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLgogICAgICoKICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBNVVNUIGJlIG5vcm1hbGl6ZWQgdG8gbG93ZXJjYXNlLCBwZXIgUkZDIDM5ODYKICAgICAqIFNlY3Rpb24gMy4xLgogICAgICoKICAgICAqIFRoZSB0cmFpbGluZyAiOiIgY2hhcmFjdGVyIGlzIG5vdCBwYXJ0IG9mIHRoZSBzY2hlbWUgYW5kIE1VU1QgTk9UIGJlCiAgICAgKiBhZGRlZC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4xCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIHNjaGVtZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNjaGVtZSgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgYXV0aG9yaXR5IGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIElmIG5vIGF1dGhvcml0eSBpbmZvcm1hdGlvbiBpcyBwcmVzZW50LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBhbiBlbXB0eQogICAgICogc3RyaW5nLgogICAgICoKICAgICAqIFRoZSBhdXRob3JpdHkgc3ludGF4IG9mIHRoZSBVUkkgaXM6CiAgICAgKgogICAgICogPHByZT4KICAgICAqIFt1c2VyLWluZm9AXWhvc3RbOnBvcnRdCiAgICAgKiA8L3ByZT4KICAgICAqCiAgICAgKiBJZiB0aGUgcG9ydCBjb21wb25lbnQgaXMgbm90IHNldCBvciBpcyB0aGUgc3RhbmRhcmQgcG9ydCBmb3IgdGhlIGN1cnJlbnQKICAgICAqIHNjaGVtZSwgaXQgU0hPVUxEIE5PVCBiZSBpbmNsdWRlZC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4yCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIGF1dGhvcml0eSwgaW4gIlt1c2VyLWluZm9AXWhvc3RbOnBvcnRdIiBmb3JtYXQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdXRob3JpdHkoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIHVzZXIgaW5mb3JtYXRpb24gY29tcG9uZW50IG9mIHRoZSBVUkkuCiAgICAgKgogICAgICogSWYgbm8gdXNlciBpbmZvcm1hdGlvbiBpcyBwcmVzZW50LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBhbiBlbXB0eQogICAgICogc3RyaW5nLgogICAgICoKICAgICAqIElmIGEgdXNlciBpcyBwcmVzZW50IGluIHRoZSBVUkksIHRoaXMgd2lsbCByZXR1cm4gdGhhdCB2YWx1ZTsKICAgICAqIGFkZGl0aW9uYWxseSwgaWYgdGhlIHBhc3N3b3JkIGlzIGFsc28gcHJlc2VudCwgaXQgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUKICAgICAqIHVzZXIgdmFsdWUsIHdpdGggYSBjb2xvbiAoIjoiKSBzZXBhcmF0aW5nIHRoZSB2YWx1ZXMuCiAgICAgKgogICAgICogVGhlIHRyYWlsaW5nICJAIiBjaGFyYWN0ZXIgaXMgbm90IHBhcnQgb2YgdGhlIHVzZXIgaW5mb3JtYXRpb24gYW5kIE1VU1QKICAgICAqIE5PVCBiZSBhZGRlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIHVzZXIgaW5mb3JtYXRpb24sIGluICJ1c2VybmFtZVs6cGFzc3dvcmRdIiBmb3JtYXQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVc2VySW5mbygpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgaG9zdCBjb21wb25lbnQgb2YgdGhlIFVSSS4KICAgICAqCiAgICAgKiBJZiBubyBob3N0IGlzIHByZXNlbnQsIHRoaXMgbWV0aG9kIE1VU1QgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy4KICAgICAqCiAgICAgKiBUaGUgdmFsdWUgcmV0dXJuZWQgTVVTVCBiZSBub3JtYWxpemVkIHRvIGxvd2VyY2FzZSwgcGVyIFJGQyAzOTg2CiAgICAgKiBTZWN0aW9uIDMuMi4yLgogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMi4yCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIGhvc3QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIb3N0KCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBwb3J0IGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIElmIGEgcG9ydCBpcyBwcmVzZW50LCBhbmQgaXQgaXMgbm9uLXN0YW5kYXJkIGZvciB0aGUgY3VycmVudCBzY2hlbWUsCiAgICAgKiB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBpdCBhcyBhbiBpbnRlZ2VyLiBJZiB0aGUgcG9ydCBpcyB0aGUgc3RhbmRhcmQgcG9ydAogICAgICogdXNlZCB3aXRoIHRoZSBjdXJyZW50IHNjaGVtZSwgdGhpcyBtZXRob2QgU0hPVUxEIHJldHVybiBudWxsLgogICAgICoKICAgICAqIElmIG5vIHBvcnQgaXMgcHJlc2VudCwgYW5kIG5vIHNjaGVtZSBpcyBwcmVzZW50LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybgogICAgICogYSBudWxsIHZhbHVlLgogICAgICoKICAgICAqIElmIG5vIHBvcnQgaXMgcHJlc2VudCwgYnV0IGEgc2NoZW1lIGlzIHByZXNlbnQsIHRoaXMgbWV0aG9kIE1BWSByZXR1cm4KICAgICAqIHRoZSBzdGFuZGFyZCBwb3J0IGZvciB0aGF0IHNjaGVtZSwgYnV0IFNIT1VMRCByZXR1cm4gbnVsbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIG51bGx8aW50IFRoZSBVUkkgcG9ydC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBvcnQoKTogP2ludDsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBwYXRoIGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIFRoZSBwYXRoIGNhbiBlaXRoZXIgYmUgZW1wdHkgb3IgYWJzb2x1dGUgKHN0YXJ0aW5nIHdpdGggYSBzbGFzaCkgb3IKICAgICAqIHJvb3RsZXNzIChub3Qgc3RhcnRpbmcgd2l0aCBhIHNsYXNoKS4gSW1wbGVtZW50YXRpb25zIE1VU1Qgc3VwcG9ydCBhbGwKICAgICAqIHRocmVlIHN5bnRheGVzLgogICAgICoKICAgICAqIE5vcm1hbGx5LCB0aGUgZW1wdHkgcGF0aCAiIiBhbmQgYWJzb2x1dGUgcGF0aCAiLyIgYXJlIGNvbnNpZGVyZWQgZXF1YWwgYXMKICAgICAqIGRlZmluZWQgaW4gUkZDIDcyMzAgU2VjdGlvbiAyLjcuMy4gQnV0IHRoaXMgbWV0aG9kIE1VU1QgTk9UIGF1dG9tYXRpY2FsbHkKICAgICAqIGRvIHRoaXMgbm9ybWFsaXphdGlvbiBiZWNhdXNlIGluIGNvbnRleHRzIHdpdGggYSB0cmltbWVkIGJhc2UgcGF0aCwgZS5nLgogICAgICogdGhlIGZyb250IGNvbnRyb2xsZXIsIHRoaXMgZGlmZmVyZW5jZSBiZWNvbWVzIHNpZ25pZmljYW50LiBJdCdzIHRoZSB0YXNrCiAgICAgKiBvZiB0aGUgdXNlciB0byBoYW5kbGUgYm90aCAiIiBhbmQgIi8iLgogICAgICoKICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBNVVNUIGJlIHBlcmNlbnQtZW5jb2RlZCwgYnV0IE1VU1QgTk9UIGRvdWJsZS1lbmNvZGUKICAgICAqIGFueSBjaGFyYWN0ZXJzLiBUbyBkZXRlcm1pbmUgd2hhdCBjaGFyYWN0ZXJzIHRvIGVuY29kZSwgcGxlYXNlIHJlZmVyIHRvCiAgICAgKiBSRkMgMzk4NiwgU2VjdGlvbnMgMiBhbmQgMy4zLgogICAgICoKICAgICAqIEFzIGFuIGV4YW1wbGUsIGlmIHRoZSB2YWx1ZSBzaG91bGQgaW5jbHVkZSBhIHNsYXNoICgiLyIpIG5vdCBpbnRlbmRlZCBhcwogICAgICogZGVsaW1pdGVyIGJldHdlZW4gcGF0aCBzZWdtZW50cywgdGhhdCB2YWx1ZSBNVVNUIGJlIHBhc3NlZCBpbiBlbmNvZGVkCiAgICAgKiBmb3JtIChlLmcuLCAiJTJGIikgdG8gdGhlIGluc3RhbmNlLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0yCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4zCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIHBhdGguCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQYXRoKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBxdWVyeSBzdHJpbmcgb2YgdGhlIFVSSS4KICAgICAqCiAgICAgKiBJZiBubyBxdWVyeSBzdHJpbmcgaXMgcHJlc2VudCwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLgogICAgICoKICAgICAqIFRoZSBsZWFkaW5nICI/IiBjaGFyYWN0ZXIgaXMgbm90IHBhcnQgb2YgdGhlIHF1ZXJ5IGFuZCBNVVNUIE5PVCBiZQogICAgICogYWRkZWQuCiAgICAgKgogICAgICogVGhlIHZhbHVlIHJldHVybmVkIE1VU1QgYmUgcGVyY2VudC1lbmNvZGVkLCBidXQgTVVTVCBOT1QgZG91YmxlLWVuY29kZQogICAgICogYW55IGNoYXJhY3RlcnMuIFRvIGRldGVybWluZSB3aGF0IGNoYXJhY3RlcnMgdG8gZW5jb2RlLCBwbGVhc2UgcmVmZXIgdG8KICAgICAqIFJGQyAzOTg2LCBTZWN0aW9ucyAyIGFuZCAzLjQuCiAgICAgKgogICAgICogQXMgYW4gZXhhbXBsZSwgaWYgYSB2YWx1ZSBpbiBhIGtleS92YWx1ZSBwYWlyIG9mIHRoZSBxdWVyeSBzdHJpbmcgc2hvdWxkCiAgICAgKiBpbmNsdWRlIGFuIGFtcGVyc2FuZCAoIiYiKSBub3QgaW50ZW5kZWQgYXMgYSBkZWxpbWl0ZXIgYmV0d2VlbiB2YWx1ZXMsCiAgICAgKiB0aGF0IHZhbHVlIE1VU1QgYmUgcGFzc2VkIGluIGVuY29kZWQgZm9ybSAoZS5nLiwgIiUyNiIpIHRvIHRoZSBpbnN0YW5jZS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMgogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuNAogICAgICogQHJldHVybiBzdHJpbmcgVGhlIFVSSSBxdWVyeSBzdHJpbmcuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRRdWVyeSgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgZnJhZ21lbnQgY29tcG9uZW50IG9mIHRoZSBVUkkuCiAgICAgKgogICAgICogSWYgbm8gZnJhZ21lbnQgaXMgcHJlc2VudCwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLgogICAgICoKICAgICAqIFRoZSBsZWFkaW5nICIjIiBjaGFyYWN0ZXIgaXMgbm90IHBhcnQgb2YgdGhlIGZyYWdtZW50IGFuZCBNVVNUIE5PVCBiZQogICAgICogYWRkZWQuCiAgICAgKgogICAgICogVGhlIHZhbHVlIHJldHVybmVkIE1VU1QgYmUgcGVyY2VudC1lbmNvZGVkLCBidXQgTVVTVCBOT1QgZG91YmxlLWVuY29kZQogICAgICogYW55IGNoYXJhY3RlcnMuIFRvIGRldGVybWluZSB3aGF0IGNoYXJhY3RlcnMgdG8gZW5jb2RlLCBwbGVhc2UgcmVmZXIgdG8KICAgICAqIFJGQyAzOTg2LCBTZWN0aW9ucyAyIGFuZCAzLjUuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTIKICAgICAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjUKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBVUkkgZnJhZ21lbnQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGcmFnbWVudCgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHNjaGVtZS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBzY2hlbWUuCiAgICAgKgogICAgICogSW1wbGVtZW50YXRpb25zIE1VU1Qgc3VwcG9ydCB0aGUgc2NoZW1lcyAiaHR0cCIgYW5kICJodHRwcyIgY2FzZQogICAgICogaW5zZW5zaXRpdmVseSwgYW5kIE1BWSBhY2NvbW1vZGF0ZSBvdGhlciBzY2hlbWVzIGlmIHJlcXVpcmVkLgogICAgICoKICAgICAqIEFuIGVtcHR5IHNjaGVtZSBpcyBlcXVpdmFsZW50IHRvIHJlbW92aW5nIHRoZSBzY2hlbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc2NoZW1lIFRoZSBzY2hlbWUgdG8gdXNlIHdpdGggdGhlIG5ldyBpbnN0YW5jZS4KICAgICAqIEByZXR1cm4gc3RhdGljIEEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBzY2hlbWUuCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9yIGludmFsaWQgb3IgdW5zdXBwb3J0ZWQgc2NoZW1lcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTY2hlbWUoc3RyaW5nICRzY2hlbWUpOiBVcmlJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHVzZXIgaW5mb3JtYXRpb24uCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgdXNlciBpbmZvcm1hdGlvbi4KICAgICAqCiAgICAgKiBQYXNzd29yZCBpcyBvcHRpb25hbCwgYnV0IHRoZSB1c2VyIGluZm9ybWF0aW9uIE1VU1QgaW5jbHVkZSB0aGUKICAgICAqIHVzZXI7IGFuIGVtcHR5IHN0cmluZyBmb3IgdGhlIHVzZXIgaXMgZXF1aXZhbGVudCB0byByZW1vdmluZyB1c2VyCiAgICAgKiBpbmZvcm1hdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1c2VyIFRoZSB1c2VyIG5hbWUgdG8gdXNlIGZvciBhdXRob3JpdHkuCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHBhc3N3b3JkIFRoZSBwYXNzd29yZCBhc3NvY2lhdGVkIHdpdGggJHVzZXIuCiAgICAgKiBAcmV0dXJuIHN0YXRpYyBBIG5ldyBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgdXNlciBpbmZvcm1hdGlvbi4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhVc2VySW5mbyhzdHJpbmcgJHVzZXIsID9zdHJpbmcgJHBhc3N3b3JkID0gbnVsbCk6IFVyaUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgaG9zdC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBob3N0LgogICAgICoKICAgICAqIEFuIGVtcHR5IGhvc3QgdmFsdWUgaXMgZXF1aXZhbGVudCB0byByZW1vdmluZyB0aGUgaG9zdC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRob3N0IFRoZSBob3N0bmFtZSB0byB1c2Ugd2l0aCB0aGUgbmV3IGluc3RhbmNlLgogICAgICogQHJldHVybiBzdGF0aWMgQSBuZXcgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGhvc3QuCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9yIGludmFsaWQgaG9zdG5hbWVzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEhvc3Qoc3RyaW5nICRob3N0KTogVXJpSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBwb3J0LgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgc3BlY2lmaWVkIHBvcnQuCiAgICAgKgogICAgICogSW1wbGVtZW50YXRpb25zIE1VU1QgcmFpc2UgYW4gZXhjZXB0aW9uIGZvciBwb3J0cyBvdXRzaWRlIHRoZQogICAgICogZXN0YWJsaXNoZWQgVENQIGFuZCBVRFAgcG9ydCByYW5nZXMuCiAgICAgKgogICAgICogQSBudWxsIHZhbHVlIHByb3ZpZGVkIGZvciB0aGUgcG9ydCBpcyBlcXVpdmFsZW50IHRvIHJlbW92aW5nIHRoZSBwb3J0CiAgICAgKiBpbmZvcm1hdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gbnVsbHxpbnQgJHBvcnQgVGhlIHBvcnQgdG8gdXNlIHdpdGggdGhlIG5ldyBpbnN0YW5jZTsgYSBudWxsIHZhbHVlCiAgICAgKiAgICAgcmVtb3ZlcyB0aGUgcG9ydCBpbmZvcm1hdGlvbi4KICAgICAqIEByZXR1cm4gc3RhdGljIEEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBwb3J0LgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvciBpbnZhbGlkIHBvcnRzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFBvcnQoP2ludCAkcG9ydCk6IFVyaUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0aC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBwYXRoLgogICAgICoKICAgICAqIFRoZSBwYXRoIGNhbiBlaXRoZXIgYmUgZW1wdHkgb3IgYWJzb2x1dGUgKHN0YXJ0aW5nIHdpdGggYSBzbGFzaCkgb3IKICAgICAqIHJvb3RsZXNzIChub3Qgc3RhcnRpbmcgd2l0aCBhIHNsYXNoKS4gSW1wbGVtZW50YXRpb25zIE1VU1Qgc3VwcG9ydCBhbGwKICAgICAqIHRocmVlIHN5bnRheGVzLgogICAgICoKICAgICAqIElmIHRoZSBwYXRoIGlzIGludGVuZGVkIHRvIGJlIGRvbWFpbi1yZWxhdGl2ZSByYXRoZXIgdGhhbiBwYXRoIHJlbGF0aXZlIHRoZW4KICAgICAqIGl0IG11c3QgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpLiBQYXRocyBub3Qgc3RhcnRpbmcgd2l0aCBhIHNsYXNoICgiLyIpCiAgICAgKiBhcmUgYXNzdW1lZCB0byBiZSByZWxhdGl2ZSB0byBzb21lIGJhc2UgcGF0aCBrbm93biB0byB0aGUgYXBwbGljYXRpb24gb3IKICAgICAqIGNvbnN1bWVyLgogICAgICoKICAgICAqIFVzZXJzIGNhbiBwcm92aWRlIGJvdGggZW5jb2RlZCBhbmQgZGVjb2RlZCBwYXRoIGNoYXJhY3RlcnMuCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgZW5zdXJlIHRoZSBjb3JyZWN0IGVuY29kaW5nIGFzIG91dGxpbmVkIGluIGdldFBhdGgoKS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoIFRoZSBwYXRoIHRvIHVzZSB3aXRoIHRoZSBuZXcgaW5zdGFuY2UuCiAgICAgKiBAcmV0dXJuIHN0YXRpYyBBIG5ldyBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0aC4KICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3IgaW52YWxpZCBwYXRocy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhQYXRoKHN0cmluZyAkcGF0aCk6IFVyaUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcXVlcnkgc3RyaW5nLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgc3BlY2lmaWVkIHF1ZXJ5IHN0cmluZy4KICAgICAqCiAgICAgKiBVc2VycyBjYW4gcHJvdmlkZSBib3RoIGVuY29kZWQgYW5kIGRlY29kZWQgcXVlcnkgY2hhcmFjdGVycy4KICAgICAqIEltcGxlbWVudGF0aW9ucyBlbnN1cmUgdGhlIGNvcnJlY3QgZW5jb2RpbmcgYXMgb3V0bGluZWQgaW4gZ2V0UXVlcnkoKS4KICAgICAqCiAgICAgKiBBbiBlbXB0eSBxdWVyeSBzdHJpbmcgdmFsdWUgaXMgZXF1aXZhbGVudCB0byByZW1vdmluZyB0aGUgcXVlcnkgc3RyaW5nLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHF1ZXJ5IFRoZSBxdWVyeSBzdHJpbmcgdG8gdXNlIHdpdGggdGhlIG5ldyBpbnN0YW5jZS4KICAgICAqIEByZXR1cm4gc3RhdGljIEEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBxdWVyeSBzdHJpbmcuCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9yIGludmFsaWQgcXVlcnkgc3RyaW5ncy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhRdWVyeShzdHJpbmcgJHF1ZXJ5KTogVXJpSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBVUkkgZnJhZ21lbnQuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgVVJJIGZyYWdtZW50LgogICAgICoKICAgICAqIFVzZXJzIGNhbiBwcm92aWRlIGJvdGggZW5jb2RlZCBhbmQgZGVjb2RlZCBmcmFnbWVudCBjaGFyYWN0ZXJzLgogICAgICogSW1wbGVtZW50YXRpb25zIGVuc3VyZSB0aGUgY29ycmVjdCBlbmNvZGluZyBhcyBvdXRsaW5lZCBpbiBnZXRGcmFnbWVudCgpLgogICAgICoKICAgICAqIEFuIGVtcHR5IGZyYWdtZW50IHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8gcmVtb3ZpbmcgdGhlIGZyYWdtZW50LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZyYWdtZW50IFRoZSBmcmFnbWVudCB0byB1c2Ugd2l0aCB0aGUgbmV3IGluc3RhbmNlLgogICAgICogQHJldHVybiBzdGF0aWMgQSBuZXcgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGZyYWdtZW50LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEZyYWdtZW50KHN0cmluZyAkZnJhZ21lbnQpOiBVcmlJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBhcyBhIFVSSSByZWZlcmVuY2UuCiAgICAgKgogICAgICogRGVwZW5kaW5nIG9uIHdoaWNoIGNvbXBvbmVudHMgb2YgdGhlIFVSSSBhcmUgcHJlc2VudCwgdGhlIHJlc3VsdGluZwogICAgICogc3RyaW5nIGlzIGVpdGhlciBhIGZ1bGwgVVJJIG9yIHJlbGF0aXZlIHJlZmVyZW5jZSBhY2NvcmRpbmcgdG8gUkZDIDM5ODYsCiAgICAgKiBTZWN0aW9uIDQuMS4gVGhlIG1ldGhvZCBjb25jYXRlbmF0ZXMgdGhlIHZhcmlvdXMgY29tcG9uZW50cyBvZiB0aGUgVVJJLAogICAgICogdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGRlbGltaXRlcnM6CiAgICAgKgogICAgICogLSBJZiBhIHNjaGVtZSBpcyBwcmVzZW50LCBpdCBNVVNUIGJlIHN1ZmZpeGVkIGJ5ICI6Ii4KICAgICAqIC0gSWYgYW4gYXV0aG9yaXR5IGlzIHByZXNlbnQsIGl0IE1VU1QgYmUgcHJlZml4ZWQgYnkgIi8vIi4KICAgICAqIC0gVGhlIHBhdGggY2FuIGJlIGNvbmNhdGVuYXRlZCB3aXRob3V0IGRlbGltaXRlcnMuIEJ1dCB0aGVyZSBhcmUgdHdvCiAgICAgKiAgIGNhc2VzIHdoZXJlIHRoZSBwYXRoIGhhcyB0byBiZSBhZGp1c3RlZCB0byBtYWtlIHRoZSBVUkkgcmVmZXJlbmNlCiAgICAgKiAgIHZhbGlkIGFzIFBIUCBkb2VzIG5vdCBhbGxvdyB0byB0aHJvdyBhbiBleGNlcHRpb24gaW4gX190b1N0cmluZygpOgogICAgICogICAgIC0gSWYgdGhlIHBhdGggaXMgcm9vdGxlc3MgYW5kIGFuIGF1dGhvcml0eSBpcyBwcmVzZW50LCB0aGUgcGF0aCBNVVNUCiAgICAgKiAgICAgICBiZSBwcmVmaXhlZCBieSAiLyIuCiAgICAgKiAgICAgLSBJZiB0aGUgcGF0aCBpcyBzdGFydGluZyB3aXRoIG1vcmUgdGhhbiBvbmUgIi8iIGFuZCBubyBhdXRob3JpdHkgaXMKICAgICAqICAgICAgIHByZXNlbnQsIHRoZSBzdGFydGluZyBzbGFzaGVzIE1VU1QgYmUgcmVkdWNlZCB0byBvbmUuCiAgICAgKiAtIElmIGEgcXVlcnkgaXMgcHJlc2VudCwgaXQgTVVTVCBiZSBwcmVmaXhlZCBieSAiPyIuCiAgICAgKiAtIElmIGEgZnJhZ21lbnQgaXMgcHJlc2VudCwgaXQgTVVTVCBiZSBwcmVmaXhlZCBieSAiIyIuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNC4xCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/ralouphie/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/ralouphie/getallheaders/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/ralouphie/getallheaders/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewoJIm5hbWUiOiAicmFsb3VwaGllL2dldGFsbGhlYWRlcnMiLAoJImRlc2NyaXB0aW9uIjogIkEgcG9seWZpbGwgZm9yIGdldGFsbGhlYWRlcnMuIiwKCSJsaWNlbnNlIjogIk1JVCIsCgkiYXV0aG9ycyI6IFsKCQl7CgkJCSJuYW1lIjogIlJhbHBoIEtoYXR0YXIiLAoJCQkiZW1haWwiOiAicmFscGgua2hhdHRhckBnbWFpbC5jb20iCgkJfQoJXSwKCSJyZXF1aXJlIjogewoJCSJwaHAiOiAiPj01LjYiCgl9LAoJInJlcXVpcmUtZGV2IjogewoJCSJwaHB1bml0L3BocHVuaXQiOiAiXjUgfHwgXjYuNSIsCgkJInBocC1jb3ZlcmFsbHMvcGhwLWNvdmVyYWxscyI6ICJeMi4xIgoJfSwKCSJhdXRvbG9hZCI6IHsKCQkiZmlsZXMiOiBbInNyYy9nZXRhbGxoZWFkZXJzLnBocCJdCgl9LAoJImF1dG9sb2FkLWRldiI6IHsKCQkicHNyLTQiOiB7CgkJCSJnZXRhbGxoZWFkZXJzXFxUZXN0c1xcIjogInRlc3RzLyIKCQl9Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/ralouphie/getallheaders/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQgUmFscGggS2hhdHRhcgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/ralouphie/getallheaders/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Z2V0YWxsaGVhZGVycwo9PT09PT09PT09PT09CgpQSFAgYGdldGFsbGhlYWRlcnMoKWAgcG9seWZpbGwuIENvbXBhdGlibGUgd2l0aCBQSFAgPj0gNS4zLgoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvcmFsb3VwaGllL2dldGFsbGhlYWRlcnMuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcvcmFsb3VwaGllL2dldGFsbGhlYWRlcnMpClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvcmFsb3VwaGllL2dldGFsbGhlYWRlcnMvYmFkZ2UucG5nP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL2NvdmVyYWxscy5pby9yL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzP2JyYW5jaD1tYXN0ZXIpClshW0xhdGVzdCBTdGFibGUgVmVyc2lvbl0oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9yYWxvdXBoaWUvZ2V0YWxsaGVhZGVycy92L3N0YWJsZS5wbmcpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvcmFsb3VwaGllL2dldGFsbGhlYWRlcnMpClshW0xhdGVzdCBVbnN0YWJsZSBWZXJzaW9uXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzL3YvdW5zdGFibGUucG5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzKQpbIVtMaWNlbnNlXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzL2xpY2Vuc2UucG5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzKQoKClRoaXMgaXMgYSBzaW1wbGUgcG9seWZpbGwgZm9yIFtgZ2V0YWxsaGVhZGVycygpYF0oaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5nZXRhbGxoZWFkZXJzLnBocCkuCgojIyBJbnN0YWxsCgpGb3IgUEhQIHZlcnNpb24gKipgPj0gNS42YCoqOgoKYGBgCmNvbXBvc2VyIHJlcXVpcmUgcmFsb3VwaGllL2dldGFsbGhlYWRlcnMKYGBgCgpGb3IgUEhQIHZlcnNpb24gKipgPCA1LjZgKio6CgpgYGAKY29tcG9zZXIgcmVxdWlyZSByYWxvdXBoaWUvZ2V0YWxsaGVhZGVycyAiXjIiCmBgYAo=]]></data>
	</file>
	<file>
	  <filename>/vendor/ralouphie/getallheaders/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/ralouphie/getallheaders/src/getallheaders.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghZnVuY3Rpb25fZXhpc3RzKCdnZXRhbGxoZWFkZXJzJykpIHsKCiAgICAvKioKICAgICAqIEdldCBhbGwgSFRUUCBoZWFkZXIga2V5L3ZhbHVlcyBhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBmb3IgdGhlIGN1cnJlbnQgcmVxdWVzdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tzdHJpbmddIFRoZSBIVFRQIGhlYWRlciBrZXkvdmFsdWUgcGFpcnMuCiAgICAgKi8KICAgIGZ1bmN0aW9uIGdldGFsbGhlYWRlcnMoKQogICAgewogICAgICAgICRoZWFkZXJzID0gYXJyYXkoKTsKCiAgICAgICAgJGNvcHlfc2VydmVyID0gYXJyYXkoCiAgICAgICAgICAgICdDT05URU5UX1RZUEUnICAgPT4gJ0NvbnRlbnQtVHlwZScsCiAgICAgICAgICAgICdDT05URU5UX0xFTkdUSCcgPT4gJ0NvbnRlbnQtTGVuZ3RoJywKICAgICAgICAgICAgJ0NPTlRFTlRfTUQ1JyAgICA9PiAnQ29udGVudC1NZDUnLAogICAgICAgICk7CgogICAgICAgIGZvcmVhY2ggKCRfU0VSVkVSIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGlmIChzdWJzdHIoJGtleSwgMCwgNSkgPT09ICdIVFRQXycpIHsKICAgICAgICAgICAgICAgICRrZXkgPSBzdWJzdHIoJGtleSwgNSk7CiAgICAgICAgICAgICAgICBpZiAoIWlzc2V0KCRjb3B5X3NlcnZlclska2V5XSkgfHwgIWlzc2V0KCRfU0VSVkVSWyRrZXldKSkgewogICAgICAgICAgICAgICAgICAgICRrZXkgPSBzdHJfcmVwbGFjZSgnICcsICctJywgdWN3b3JkcyhzdHJ0b2xvd2VyKHN0cl9yZXBsYWNlKCdfJywgJyAnLCAka2V5KSkpKTsKICAgICAgICAgICAgICAgICAgICAkaGVhZGVyc1ska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRjb3B5X3NlcnZlclska2V5XSkpIHsKICAgICAgICAgICAgICAgICRoZWFkZXJzWyRjb3B5X3NlcnZlclska2V5XV0gPSAkdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghaXNzZXQoJGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSkpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCRfU0VSVkVSWydSRURJUkVDVF9IVFRQX0FVVEhPUklaQVRJT04nXSkpIHsKICAgICAgICAgICAgICAgICRoZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSAkX1NFUlZFUlsnUkVESVJFQ1RfSFRUUF9BVVRIT1JJWkFUSU9OJ107CiAgICAgICAgICAgIH0gZWxzZWlmIChpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSkgewogICAgICAgICAgICAgICAgJGJhc2ljX3Bhc3MgPSBpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSkgPyAkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSA6ICcnOwogICAgICAgICAgICAgICAgJGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9ICdCYXNpYyAnIC4gYmFzZTY0X2VuY29kZSgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddIC4gJzonIC4gJGJhc2ljX3Bhc3MpOwogICAgICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJF9TRVJWRVJbJ1BIUF9BVVRIX0RJR0VTVCddKSkgewogICAgICAgICAgICAgICAgJGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9ICRfU0VSVkVSWydQSFBfQVVUSF9ESUdFU1QnXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRoZWFkZXJzOwogICAgfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/base64url/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/base64url/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvYmFzZTY0dXJsIiwKICAgICJkZXNjcmlwdGlvbiI6ICJCYXNlIDY0IFVSTCBTYWZlIEVuY29kaW5nL0RlY29kaW5nIFBIUCBMaWJyYXJ5IiwKICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgICJrZXl3b3JkcyI6IFsiQmFzZTY0IiwgIlVSTCIsICJTYWZlIiwgIlJGQzQ2NDgiXSwKICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsIiwKICAgICJhdXRob3JzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsL2NvbnRyaWJ1dG9ycyIKICAgICAgICB9CiAgICBdLAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkJhc2U2NFVybFxcIjogICJzcmMvIgogICAgICAgIH0KICAgIH0sCiAgICAiYXV0b2xvYWQtZGV2IjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkJhc2U2NFVybFxcVGVzdFxcIjogICJ0ZXN0cy8iCiAgICAgICAgfQogICAgfSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiPj03LjEiCiAgICB9LAogICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICJwaHBzdGFuL2V4dGVuc2lvbi1pbnN0YWxsZXIiOiAiXjEuMCIsCiAgICAgICAgInBocHN0YW4vcGhwc3RhbiI6ICJeMC4xMXxeMC4xMiIsCiAgICAgICAgInBocHN0YW4vcGhwc3Rhbi1iZWJlcmxlaS1hc3NlcnQiOiAiXjAuMTF8XjAuMTIiLAogICAgICAgICJwaHBzdGFuL3BocHN0YW4tZGVwcmVjYXRpb24tcnVsZXMiOiAiXjAuMTF8XjAuMTIiLAogICAgICAgICJwaHBzdGFuL3BocHN0YW4tcGhwdW5pdCI6ICJeMC4xMXxeMC4xMiIsCiAgICAgICAgInBocHN0YW4vcGhwc3Rhbi1zdHJpY3QtcnVsZXMiOiAiXjAuMTF8XjAuMTIiCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/base64url/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4KCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/base64url/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/base64url/src/Base64Url.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEJhc2U2NFVybDsKCnVzZSBmdW5jdGlvbiBiYXNlNjRfZGVjb2RlOwp1c2UgZnVuY3Rpb24gYmFzZTY0X2VuY29kZTsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIGZ1bmN0aW9uIHJ0cmltOwp1c2UgZnVuY3Rpb24gc3RydHI7CgovKioKICogRW5jb2RlIGFuZCBkZWNvZGUgZGF0YSBpbnRvIEJhc2U2NCBVcmwgU2FmZS4KICovCmZpbmFsIGNsYXNzIEJhc2U2NFVybAp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRhdGEgICAgICAgVGhlIGRhdGEgdG8gZW5jb2RlCiAgICAgKiBAcGFyYW0gYm9vbCAgICR1c2VQYWRkaW5nIElmIHRydWUsIHRoZSAiPSIgcGFkZGluZyBhdCBlbmQgb2YgdGhlIGVuY29kZWQgdmFsdWUgYXJlIGtlcHQsIGVsc2UgaXQgaXMgcmVtb3ZlZAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBkYXRhIGVuY29kZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlbmNvZGUoc3RyaW5nICRkYXRhLCBib29sICR1c2VQYWRkaW5nID0gZmFsc2UpOiBzdHJpbmcKICAgIHsKICAgICAgICAkZW5jb2RlZCA9IHN0cnRyKGJhc2U2NF9lbmNvZGUoJGRhdGEpLCAnKy8nLCAnLV8nKTsKCiAgICAgICAgcmV0dXJuIHRydWUgPT09ICR1c2VQYWRkaW5nID8gJGVuY29kZWQgOiBydHJpbSgkZW5jb2RlZCwgJz0nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRhdGEgVGhlIGRhdGEgdG8gZGVjb2RlCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgZGF0YSBkZWNvZGVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVjb2RlKHN0cmluZyAkZGF0YSk6IHN0cmluZwogICAgewogICAgICAgICRkZWNvZGVkID0gYmFzZTY0X2RlY29kZShzdHJ0cigkZGF0YSwgJy1fJywgJysvJyksIHRydWUpOwogICAgICAgIGlmIChmYWxzZSA9PT0gJGRlY29kZWQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBkYXRhIHByb3ZpZGVkJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGRlY29kZWQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/symfony/deprecation-contracts/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/symfony/deprecation-contracts/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q0hBTkdFTE9HCj09PT09PT09PQoKVGhlIGNoYW5nZWxvZyBpcyBtYWludGFpbmVkIGZvciBhbGwgU3ltZm9ueSBjb250cmFjdHMgYXQgdGhlIGZvbGxvd2luZyBVUkw6Cmh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L2NvbnRyYWN0cy9ibG9iL21haW4vQ0hBTkdFTE9HLm1kCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/deprecation-contracts/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic3ltZm9ueS9kZXByZWNhdGlvbi1jb250cmFjdHMiLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAiZGVzY3JpcHRpb24iOiAiQSBnZW5lcmljIGZ1bmN0aW9uIGFuZCBjb252ZW50aW9uIHRvIHRyaWdnZXIgZGVwcmVjYXRpb24gbm90aWNlcyIsCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJOaWNvbGFzIEdyZWthcyIsCiAgICAgICAgICAgICJlbWFpbCI6ICJwQHRjaHdvcmsuY29tIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJTeW1mb255IENvbW11bml0eSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tL2NvbnRyaWJ1dG9ycyIKICAgICAgICB9CiAgICBdLAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInBocCI6ICI+PTcuMSIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAiZnVuY3Rpb24ucGhwIgogICAgICAgIF0KICAgIH0sCiAgICAibWluaW11bS1zdGFiaWxpdHkiOiAiZGV2IiwKICAgICJleHRyYSI6IHsKICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAiZGV2LW1haW4iOiAiMi41LWRldiIKICAgICAgICB9LAogICAgICAgICJ0aGFua3MiOiB7CiAgICAgICAgICAgICJuYW1lIjogInN5bWZvbnkvY29udHJhY3RzIiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9jb250cmFjdHMiCiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/deprecation-contracts/function.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmlmICghZnVuY3Rpb25fZXhpc3RzKCd0cmlnZ2VyX2RlcHJlY2F0aW9uJykpIHsKICAgIC8qKgogICAgICogVHJpZ2dlcnMgYSBzaWxlbmNlZCBkZXByZWNhdGlvbiBub3RpY2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkcGFja2FnZSBUaGUgbmFtZSBvZiB0aGUgQ29tcG9zZXIgcGFja2FnZSB0aGF0IGlzIHRyaWdnZXJpbmcgdGhlIGRlcHJlY2F0aW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2ZXJzaW9uIFRoZSB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlIHRoYXQgaW50cm9kdWNlZCB0aGUgZGVwcmVjYXRpb24KICAgICAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UgVGhlIG1lc3NhZ2Ugb2YgdGhlIGRlcHJlY2F0aW9uCiAgICAgKiBAcGFyYW0gbWl4ZWQgIC4uLiRhcmdzIFZhbHVlcyB0byBpbnNlcnQgaW4gdGhlIG1lc3NhZ2UgdXNpbmcgcHJpbnRmKCkgZm9ybWF0dGluZwogICAgICoKICAgICAqIEBhdXRob3IgTmljb2xhcyBHcmVrYXMgPHBAdGNod29yay5jb20+CiAgICAgKi8KICAgIGZ1bmN0aW9uIHRyaWdnZXJfZGVwcmVjYXRpb24oc3RyaW5nICRwYWNrYWdlLCBzdHJpbmcgJHZlcnNpb24sIHN0cmluZyAkbWVzc2FnZSwgLi4uJGFyZ3MpOiB2b2lkCiAgICB7CiAgICAgICAgQHRyaWdnZXJfZXJyb3IoKCRwYWNrYWdlIHx8ICR2ZXJzaW9uID8gIlNpbmNlICRwYWNrYWdlICR2ZXJzaW9uOiAiIDogJycpLigkYXJncyA/IHZzcHJpbnRmKCRtZXNzYWdlLCAkYXJncykgOiAkbWVzc2FnZSksIFxFX1VTRVJfREVQUkVDQVRFRCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/deprecation-contracts/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDIwLXByZXNlbnQgRmFiaWVuIFBvdGVuY2llcgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZAp0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/deprecation-contracts/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ltZm9ueSBEZXByZWNhdGlvbiBDb250cmFjdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkEgZ2VuZXJpYyBmdW5jdGlvbiBhbmQgY29udmVudGlvbiB0byB0cmlnZ2VyIGRlcHJlY2F0aW9uIG5vdGljZXMuCgpUaGlzIHBhY2thZ2UgcHJvdmlkZXMgYSBzaW5nbGUgZ2xvYmFsIGZ1bmN0aW9uIG5hbWVkIGB0cmlnZ2VyX2RlcHJlY2F0aW9uKClgIHRoYXQgdHJpZ2dlcnMgc2lsZW5jZWQgZGVwcmVjYXRpb24gbm90aWNlcy4KCkJ5IHVzaW5nIGEgY3VzdG9tIFBIUCBlcnJvciBoYW5kbGVyIHN1Y2ggYXMgdGhlIG9uZSBwcm92aWRlZCBieSB0aGUgU3ltZm9ueSBFcnJvckhhbmRsZXIgY29tcG9uZW50LAp0aGUgdHJpZ2dlcmVkIGRlcHJlY2F0aW9ucyBjYW4gYmUgY2F1Z2h0IGFuZCBsb2dnZWQgZm9yIGxhdGVyIGRpc2NvdmVyeSwgYm90aCBvbiBkZXYgYW5kIHByb2QgZW52aXJvbm1lbnRzLgoKVGhlIGZ1bmN0aW9uIHJlcXVpcmVzIGF0IGxlYXN0IDMgYXJndW1lbnRzOgogLSB0aGUgbmFtZSBvZiB0aGUgQ29tcG9zZXIgcGFja2FnZSB0aGF0IGlzIHRyaWdnZXJpbmcgdGhlIGRlcHJlY2F0aW9uCiAtIHRoZSB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlIHRoYXQgaW50cm9kdWNlZCB0aGUgZGVwcmVjYXRpb24KIC0gdGhlIG1lc3NhZ2Ugb2YgdGhlIGRlcHJlY2F0aW9uCiAtIG1vcmUgYXJndW1lbnRzIGNhbiBiZSBwcm92aWRlZDogdGhleSB3aWxsIGJlIGluc2VydGVkIGluIHRoZSBtZXNzYWdlIHVzaW5nIGBwcmludGYoKWAgZm9ybWF0dGluZwoKRXhhbXBsZToKYGBgcGhwCnRyaWdnZXJfZGVwcmVjYXRpb24oJ3N5bWZvbnkvYmxvY2tjaGFpbicsICc4LjknLCAnVXNpbmcgIiVzIiBpcyBkZXByZWNhdGVkLCB1c2UgIiVzIiBpbnN0ZWFkLicsICdiaXRjb2luJywgJ2ZhYmNvaW4nKTsKYGBgCgpUaGlzIHdpbGwgZ2VuZXJhdGUgdGhlIGZvbGxvd2luZyBtZXNzYWdlOgpgU2luY2Ugc3ltZm9ueS9ibG9ja2NoYWluIDguOTogVXNpbmcgImJpdGNvaW4iIGlzIGRlcHJlY2F0ZWQsIHVzZSAiZmFiY29pbiIgaW5zdGVhZC5gCgpXaGlsZSBub3QgbmVjZXNzYXJpbHkgcmVjb21tZW5kZWQsIHRoZSBkZXByZWNhdGlvbiBub3RpY2VzIGNhbiBiZSBjb21wbGV0ZWx5IGlnbm9yZWQgYnkgZGVjbGFyaW5nIGFuIGVtcHR5CmBmdW5jdGlvbiB0cmlnZ2VyX2RlcHJlY2F0aW9uKCkge31gIGluIHlvdXIgYXBwbGljYXRpb24uCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php80/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php80/bootstrap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCnVzZSBTeW1mb255XFBvbHlmaWxsXFBocDgwIGFzIHA7CgppZiAoXFBIUF9WRVJTSU9OX0lEID49IDgwMDAwKSB7CiAgICByZXR1cm47Cn0KCmlmICghZGVmaW5lZCgnRklMVEVSX1ZBTElEQVRFX0JPT0wnKSAmJiBkZWZpbmVkKCdGSUxURVJfVkFMSURBVEVfQk9PTEVBTicpKSB7CiAgICBkZWZpbmUoJ0ZJTFRFUl9WQUxJREFURV9CT09MJywgXEZJTFRFUl9WQUxJREFURV9CT09MRUFOKTsKfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2ZkaXYnKSkgewogICAgZnVuY3Rpb24gZmRpdihmbG9hdCAkbnVtMSwgZmxvYXQgJG51bTIpOiBmbG9hdCB7IHJldHVybiBwXFBocDgwOjpmZGl2KCRudW0xLCAkbnVtMik7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygncHJlZ19sYXN0X2Vycm9yX21zZycpKSB7CiAgICBmdW5jdGlvbiBwcmVnX2xhc3RfZXJyb3JfbXNnKCk6IHN0cmluZyB7IHJldHVybiBwXFBocDgwOjpwcmVnX2xhc3RfZXJyb3JfbXNnKCk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnc3RyX2NvbnRhaW5zJykpIHsKICAgIGZ1bmN0aW9uIHN0cl9jb250YWlucyg/c3RyaW5nICRoYXlzdGFjaywgP3N0cmluZyAkbmVlZGxlKTogYm9vbCB7IHJldHVybiBwXFBocDgwOjpzdHJfY29udGFpbnMoJGhheXN0YWNrID8/ICcnLCAkbmVlZGxlID8/ICcnKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdzdHJfc3RhcnRzX3dpdGgnKSkgewogICAgZnVuY3Rpb24gc3RyX3N0YXJ0c193aXRoKD9zdHJpbmcgJGhheXN0YWNrLCA/c3RyaW5nICRuZWVkbGUpOiBib29sIHsgcmV0dXJuIHBcUGhwODA6OnN0cl9zdGFydHNfd2l0aCgkaGF5c3RhY2sgPz8gJycsICRuZWVkbGUgPz8gJycpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ3N0cl9lbmRzX3dpdGgnKSkgewogICAgZnVuY3Rpb24gc3RyX2VuZHNfd2l0aCg/c3RyaW5nICRoYXlzdGFjaywgP3N0cmluZyAkbmVlZGxlKTogYm9vbCB7IHJldHVybiBwXFBocDgwOjpzdHJfZW5kc193aXRoKCRoYXlzdGFjayA/PyAnJywgJG5lZWRsZSA/PyAnJyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnZ2V0X2RlYnVnX3R5cGUnKSkgewogICAgZnVuY3Rpb24gZ2V0X2RlYnVnX3R5cGUoJHZhbHVlKTogc3RyaW5nIHsgcmV0dXJuIHBcUGhwODA6OmdldF9kZWJ1Z190eXBlKCR2YWx1ZSk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnZ2V0X3Jlc291cmNlX2lkJykpIHsKICAgIGZ1bmN0aW9uIGdldF9yZXNvdXJjZV9pZCgkcmVzb3VyY2UpOiBpbnQgeyByZXR1cm4gcFxQaHA4MDo6Z2V0X3Jlc291cmNlX2lkKCRyZXNvdXJjZSk7IH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php80/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic3ltZm9ueS9wb2x5ZmlsbC1waHA4MCIsCiAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICJkZXNjcmlwdGlvbiI6ICJTeW1mb255IHBvbHlmaWxsIGJhY2twb3J0aW5nIHNvbWUgUEhQIDguMCsgZmVhdHVyZXMgdG8gbG93ZXIgUEhQIHZlcnNpb25zIiwKICAgICJrZXl3b3JkcyI6IFsicG9seWZpbGwiLCAic2hpbSIsICJjb21wYXRpYmlsaXR5IiwgInBvcnRhYmxlIl0sCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJJb24gQmF6YW4iLAogICAgICAgICAgICAiZW1haWwiOiAiaW9uLmJhemFuQGdtYWlsLmNvbSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiTmljb2xhcyBHcmVrYXMiLAogICAgICAgICAgICAiZW1haWwiOiAicEB0Y2h3b3JrLmNvbSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9jb250cmlidXRvcnMiCiAgICAgICAgfQogICAgXSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiPj03LjIiCiAgICB9LAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsgIlN5bWZvbnlcXFBvbHlmaWxsXFxQaHA4MFxcIjogIiIgfSwKICAgICAgICAiZmlsZXMiOiBbICJib290c3RyYXAucGhwIiBdLAogICAgICAgICJjbGFzc21hcCI6IFsgIlJlc291cmNlcy9zdHVicyIgXQogICAgfSwKICAgICJtaW5pbXVtLXN0YWJpbGl0eSI6ICJkZXYiLAogICAgImV4dHJhIjogewogICAgICAgICJ0aGFua3MiOiB7CiAgICAgICAgICAgICJuYW1lIjogInN5bWZvbnkvcG9seWZpbGwiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L3BvbHlmaWxsIgogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php80/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDIwLXByZXNlbnQgRmFiaWVuIFBvdGVuY2llcgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZAp0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php80/Php80.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XFBvbHlmaWxsXFBocDgwOwoKLyoqCiAqIEBhdXRob3IgSW9uIEJhemFuIDxpb24uYmF6YW5AZ21haWwuY29tPgogKiBAYXV0aG9yIE5pY28gT2VsZ2FydCA8bmljb3N3ZEBnbWFpbC5jb20+CiAqIEBhdXRob3IgTmljb2xhcyBHcmVrYXMgPHBAdGNod29yay5jb20+CiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgUGhwODAKewogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmZGl2KGZsb2F0ICRkaXZpZGVuZCwgZmxvYXQgJGRpdmlzb3IpOiBmbG9hdAogICAgewogICAgICAgIHJldHVybiBAKCRkaXZpZGVuZCAvICRkaXZpc29yKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9kZWJ1Z190eXBlKCR2YWx1ZSk6IHN0cmluZwogICAgewogICAgICAgIHN3aXRjaCAodHJ1ZSkgewogICAgICAgICAgICBjYXNlIG51bGwgPT09ICR2YWx1ZTogcmV0dXJuICdudWxsJzsKICAgICAgICAgICAgY2FzZSBcaXNfYm9vbCgkdmFsdWUpOiByZXR1cm4gJ2Jvb2wnOwogICAgICAgICAgICBjYXNlIFxpc19zdHJpbmcoJHZhbHVlKTogcmV0dXJuICdzdHJpbmcnOwogICAgICAgICAgICBjYXNlIFxpc19hcnJheSgkdmFsdWUpOiByZXR1cm4gJ2FycmF5JzsKICAgICAgICAgICAgY2FzZSBcaXNfaW50KCR2YWx1ZSk6IHJldHVybiAnaW50JzsKICAgICAgICAgICAgY2FzZSBcaXNfZmxvYXQoJHZhbHVlKTogcmV0dXJuICdmbG9hdCc7CiAgICAgICAgICAgIGNhc2UgXGlzX29iamVjdCgkdmFsdWUpOiBicmVhazsKICAgICAgICAgICAgY2FzZSAkdmFsdWUgaW5zdGFuY2VvZiBcX19QSFBfSW5jb21wbGV0ZV9DbGFzczogcmV0dXJuICdfX1BIUF9JbmNvbXBsZXRlX0NsYXNzJzsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSAkdHlwZSA9IEBnZXRfcmVzb3VyY2VfdHlwZSgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd1bmtub3duJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJ1Vua25vd24nID09PSAkdHlwZSkgewogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ2Nsb3NlZCc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICJyZXNvdXJjZSAoJHR5cGUpIjsKICAgICAgICB9CgogICAgICAgICRjbGFzcyA9IFxnZXRfY2xhc3MoJHZhbHVlKTsKCiAgICAgICAgaWYgKGZhbHNlID09PSBzdHJwb3MoJGNsYXNzLCAnQCcpKSB7CiAgICAgICAgICAgIHJldHVybiAkY2xhc3M7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKGdldF9wYXJlbnRfY2xhc3MoJGNsYXNzKSA/OiBrZXkoY2xhc3NfaW1wbGVtZW50cygkY2xhc3MpKSA/OiAnY2xhc3MnKS4nQGFub255bW91cyc7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfcmVzb3VyY2VfaWQoJHJlcyk6IGludAogICAgewogICAgICAgIGlmICghXGlzX3Jlc291cmNlKCRyZXMpICYmIG51bGwgPT09IEBnZXRfcmVzb3VyY2VfdHlwZSgkcmVzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFR5cGVFcnJvcihcc3ByaW50ZignQXJndW1lbnQgMSBwYXNzZWQgdG8gZ2V0X3Jlc291cmNlX2lkKCkgbXVzdCBiZSBvZiB0aGUgdHlwZSByZXNvdXJjZSwgJXMgZ2l2ZW4nLCBnZXRfZGVidWdfdHlwZSgkcmVzKSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChpbnQpICRyZXM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcmVnX2xhc3RfZXJyb3JfbXNnKCk6IHN0cmluZwogICAgewogICAgICAgIHN3aXRjaCAocHJlZ19sYXN0X2Vycm9yKCkpIHsKICAgICAgICAgICAgY2FzZSBcUFJFR19JTlRFUk5BTF9FUlJPUjoKICAgICAgICAgICAgICAgIHJldHVybiAnSW50ZXJuYWwgZXJyb3InOwogICAgICAgICAgICBjYXNlIFxQUkVHX0JBRF9VVEY4X0VSUk9SOgogICAgICAgICAgICAgICAgcmV0dXJuICdNYWxmb3JtZWQgVVRGLTggY2hhcmFjdGVycywgcG9zc2libHkgaW5jb3JyZWN0bHkgZW5jb2RlZCc7CiAgICAgICAgICAgIGNhc2UgXFBSRUdfQkFEX1VURjhfT0ZGU0VUX0VSUk9SOgogICAgICAgICAgICAgICAgcmV0dXJuICdUaGUgb2Zmc2V0IGRpZCBub3QgY29ycmVzcG9uZCB0byB0aGUgYmVnaW5uaW5nIG9mIGEgdmFsaWQgVVRGLTggY29kZSBwb2ludCc7CiAgICAgICAgICAgIGNhc2UgXFBSRUdfQkFDS1RSQUNLX0xJTUlUX0VSUk9SOgogICAgICAgICAgICAgICAgcmV0dXJuICdCYWNrdHJhY2sgbGltaXQgZXhoYXVzdGVkJzsKICAgICAgICAgICAgY2FzZSBcUFJFR19SRUNVUlNJT05fTElNSVRfRVJST1I6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1JlY3Vyc2lvbiBsaW1pdCBleGhhdXN0ZWQnOwogICAgICAgICAgICBjYXNlIFxQUkVHX0pJVF9TVEFDS0xJTUlUX0VSUk9SOgogICAgICAgICAgICAgICAgcmV0dXJuICdKSVQgc3RhY2sgbGltaXQgZXhoYXVzdGVkJzsKICAgICAgICAgICAgY2FzZSBcUFJFR19OT19FUlJPUjoKICAgICAgICAgICAgICAgIHJldHVybiAnTm8gZXJyb3InOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcmV0dXJuICdVbmtub3duIGVycm9yJzsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdHJfY29udGFpbnMoc3RyaW5nICRoYXlzdGFjaywgc3RyaW5nICRuZWVkbGUpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICcnID09PSAkbmVlZGxlIHx8IGZhbHNlICE9PSBzdHJwb3MoJGhheXN0YWNrLCAkbmVlZGxlKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHN0cl9zdGFydHNfd2l0aChzdHJpbmcgJGhheXN0YWNrLCBzdHJpbmcgJG5lZWRsZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gMCA9PT0gc3RybmNtcCgkaGF5c3RhY2ssICRuZWVkbGUsIFxzdHJsZW4oJG5lZWRsZSkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc3RyX2VuZHNfd2l0aChzdHJpbmcgJGhheXN0YWNrLCBzdHJpbmcgJG5lZWRsZSk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoJycgPT09ICRuZWVkbGUgfHwgJG5lZWRsZSA9PT0gJGhheXN0YWNrKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCcnID09PSAkaGF5c3RhY2spIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJG5lZWRsZUxlbmd0aCA9IFxzdHJsZW4oJG5lZWRsZSk7CgogICAgICAgIHJldHVybiAkbmVlZGxlTGVuZ3RoIDw9IFxzdHJsZW4oJGhheXN0YWNrKSAmJiAwID09PSBzdWJzdHJfY29tcGFyZSgkaGF5c3RhY2ssICRuZWVkbGUsIC0kbmVlZGxlTGVuZ3RoKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php80/PhpToken.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XFBvbHlmaWxsXFBocDgwOwoKLyoqCiAqIEBhdXRob3IgRmVkb255dWsgQW50b24gPGluZm9AZW5zb3N0dWRpby5ydT4KICoKICogQGludGVybmFsCiAqLwpjbGFzcyBQaHBUb2tlbiBpbXBsZW1lbnRzIFxTdHJpbmdhYmxlCnsKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHVibGljICRpZDsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkdGV4dDsKCiAgICAvKioKICAgICAqIEB2YXIgLTF8cG9zaXRpdmUtaW50CiAgICAgKi8KICAgIHB1YmxpYyAkbGluZTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHB1YmxpYyAkcG9zOwoKICAgIC8qKgogICAgICogQHBhcmFtIC0xfHBvc2l0aXZlLWludCAkbGluZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoaW50ICRpZCwgc3RyaW5nICR0ZXh0LCBpbnQgJGxpbmUgPSAtMSwgaW50ICRwb3NpdGlvbiA9IC0xKQogICAgewogICAgICAgICR0aGlzLT5pZCA9ICRpZDsKICAgICAgICAkdGhpcy0+dGV4dCA9ICR0ZXh0OwogICAgICAgICR0aGlzLT5saW5lID0gJGxpbmU7CiAgICAgICAgJHRoaXMtPnBvcyA9ICRwb3NpdGlvbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VG9rZW5OYW1lKCk6ID9zdHJpbmcKICAgIHsKICAgICAgICBpZiAoJ1VOS05PV04nID09PSAkbmFtZSA9IHRva2VuX25hbWUoJHRoaXMtPmlkKSkgewogICAgICAgICAgICAkbmFtZSA9IFxzdHJsZW4oJHRoaXMtPnRleHQpID4gMSB8fCBcb3JkKCR0aGlzLT50ZXh0KSA8IDMyID8gbnVsbCA6ICR0aGlzLT50ZXh0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRuYW1lOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGludHxzdHJpbmd8YXJyYXkgJGtpbmQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzKCRraW5kKTogYm9vbAogICAgewogICAgICAgIGZvcmVhY2ggKChhcnJheSkgJGtpbmQgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgIGlmIChcaW5fYXJyYXkoJHZhbHVlLCBbJHRoaXMtPmlkLCAkdGhpcy0+dGV4dF0sIHRydWUpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0lnbm9yYWJsZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIFxpbl9hcnJheSgkdGhpcy0+aWQsIFtcVF9XSElURVNQQUNFLCBcVF9DT01NRU5ULCBcVF9ET0NfQ09NTUVOVCwgXFRfT1BFTl9UQUddLCB0cnVlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gKHN0cmluZykgJHRoaXMtPnRleHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGxpc3Q8c3RhdGljPgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRva2VuaXplKHN0cmluZyAkY29kZSwgaW50ICRmbGFncyA9IDApOiBhcnJheQogICAgewogICAgICAgICRsaW5lID0gMTsKICAgICAgICAkcG9zaXRpb24gPSAwOwogICAgICAgICR0b2tlbnMgPSB0b2tlbl9nZXRfYWxsKCRjb2RlLCAkZmxhZ3MpOwogICAgICAgIGZvcmVhY2ggKCR0b2tlbnMgYXMgJGluZGV4ID0+ICR0b2tlbikgewogICAgICAgICAgICBpZiAoXGlzX3N0cmluZygkdG9rZW4pKSB7CiAgICAgICAgICAgICAgICAkaWQgPSBcb3JkKCR0b2tlbik7CiAgICAgICAgICAgICAgICAkdGV4dCA9ICR0b2tlbjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIFskaWQsICR0ZXh0LCAkbGluZV0gPSAkdG9rZW47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRva2Vuc1skaW5kZXhdID0gbmV3IHN0YXRpYygkaWQsICR0ZXh0LCAkbGluZSwgJHBvc2l0aW9uKTsKICAgICAgICAgICAgJHBvc2l0aW9uICs9IFxzdHJsZW4oJHRleHQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0b2tlbnM7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php80/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ltZm9ueSBQb2x5ZmlsbCAvIFBocDgwCj09PT09PT09PT09PT09PT09PT09PT09PQoKVGhpcyBjb21wb25lbnQgcHJvdmlkZXMgZmVhdHVyZXMgYWRkZWQgdG8gUEhQIDguMCBjb3JlOgoKLSBbYFN0cmluZ2FibGVgXShodHRwczovL3BocC5uZXQvc3RyaW5nYWJsZSkgaW50ZXJmYWNlCi0gW2BmZGl2YF0oaHR0cHM6Ly9waHAubmV0L2ZkaXYpCi0gW2BWYWx1ZUVycm9yYF0oaHR0cHM6Ly9waHAubmV0L3ZhbHVlZXJyb3IpIGNsYXNzCi0gW2BVbmhhbmRsZWRNYXRjaEVycm9yYF0oaHR0cHM6Ly9waHAubmV0L3VuaGFuZGxlZG1hdGNoZXJyb3IpIGNsYXNzCi0gYEZJTFRFUl9WQUxJREFURV9CT09MYCBjb25zdGFudAotIFtgZ2V0X2RlYnVnX3R5cGVgXShodHRwczovL3BocC5uZXQvZ2V0X2RlYnVnX3R5cGUpCi0gW2BQaHBUb2tlbmBdKGh0dHBzOi8vcGhwLm5ldC9waHB0b2tlbikgY2xhc3MKLSBbYHByZWdfbGFzdF9lcnJvcl9tc2dgXShodHRwczovL3BocC5uZXQvcHJlZ19sYXN0X2Vycm9yX21zZykKLSBbYHN0cl9jb250YWluc2BdKGh0dHBzOi8vcGhwLm5ldC9zdHJfY29udGFpbnMpCi0gW2BzdHJfc3RhcnRzX3dpdGhgXShodHRwczovL3BocC5uZXQvc3RyX3N0YXJ0c193aXRoKQotIFtgc3RyX2VuZHNfd2l0aGBdKGh0dHBzOi8vcGhwLm5ldC9zdHJfZW5kc193aXRoKQotIFtgZ2V0X3Jlc291cmNlX2lkYF0oaHR0cHM6Ly9waHAubmV0L2dldF9yZXNvdXJjZV9pZCkKCk1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZQpbbWFpbiBQb2x5ZmlsbCBSRUFETUVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L3BvbHlmaWxsL2Jsb2IvbWFpbi9SRUFETUUubWQpLgoKTGljZW5zZQo9PT09PT09CgpUaGlzIGxpYnJhcnkgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFtNSVQgbGljZW5zZV0oTElDRU5TRSkuCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php80/Resources/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php80/Resources/stubs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCiNbQXR0cmlidXRlKEF0dHJpYnV0ZTo6VEFSR0VUX0NMQVNTKV0KZmluYWwgY2xhc3MgQXR0cmlidXRlCnsKICAgIHB1YmxpYyBjb25zdCBUQVJHRVRfQ0xBU1MgPSAxOwogICAgcHVibGljIGNvbnN0IFRBUkdFVF9GVU5DVElPTiA9IDI7CiAgICBwdWJsaWMgY29uc3QgVEFSR0VUX01FVEhPRCA9IDQ7CiAgICBwdWJsaWMgY29uc3QgVEFSR0VUX1BST1BFUlRZID0gODsKICAgIHB1YmxpYyBjb25zdCBUQVJHRVRfQ0xBU1NfQ09OU1RBTlQgPSAxNjsKICAgIHB1YmxpYyBjb25zdCBUQVJHRVRfUEFSQU1FVEVSID0gMzI7CiAgICBwdWJsaWMgY29uc3QgVEFSR0VUX0FMTCA9IDYzOwogICAgcHVibGljIGNvbnN0IElTX1JFUEVBVEFCTEUgPSA2NDsKCiAgICAvKiogQHZhciBpbnQgKi8KICAgIHB1YmxpYyAkZmxhZ3M7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGludCAkZmxhZ3MgPSBzZWxmOjpUQVJHRVRfQUxMKQogICAgewogICAgICAgICR0aGlzLT5mbGFncyA9ICRmbGFnczsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmlmIChcUEhQX1ZFUlNJT05fSUQgPCA4MDAwMCAmJiBleHRlbnNpb25fbG9hZGVkKCd0b2tlbml6ZXInKSkgewogICAgY2xhc3MgUGhwVG9rZW4gZXh0ZW5kcyBTeW1mb255XFBvbHlmaWxsXFBocDgwXFBocFRva2VuCiAgICB7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmlmIChcUEhQX1ZFUlNJT05fSUQgPCA4MDAwMCkgewogICAgaW50ZXJmYWNlIFN0cmluZ2FibGUKICAgIHsKICAgICAgICAvKioKICAgICAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICAgICAqLwogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmlmIChcUEhQX1ZFUlNJT05fSUQgPCA4MDAwMCkgewogICAgY2xhc3MgVW5oYW5kbGVkTWF0Y2hFcnJvciBleHRlbmRzIEVycm9yCiAgICB7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmlmIChcUEhQX1ZFUlNJT05fSUQgPCA4MDAwMCkgewogICAgY2xhc3MgVmFsdWVFcnJvciBleHRlbmRzIEVycm9yCiAgICB7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Algorithm.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmU7CgppbnRlcmZhY2UgQWxnb3JpdGhtCnsKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgYWxnb3JpdGhtLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbmFtZSgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBrZXkgdHlwZXMgc3VpdGFibGUgZm9yIHRoaXMgYWxnb3JpdGhtIChlLmcuICJvY3QiLCAiUlNBIi4uLikuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWxsb3dlZEtleVR5cGVzKCk6IGFycmF5Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/AlgorithmManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmU7Cgp1c2UgZnVuY3Rpb24gYXJyYXlfa2V5X2V4aXN0czsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKCmNsYXNzIEFsZ29yaXRobU1hbmFnZXIKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGFsZ29yaXRobXMgPSBbXTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBBbGdvcml0aG1bXSAkYWxnb3JpdGhtcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGFsZ29yaXRobXMpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJGFsZ29yaXRobXMgYXMgJGFsZ29yaXRobSkgewogICAgICAgICAgICAkdGhpcy0+YWRkKCRhbGdvcml0aG0pOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgYWxnb3JpdGhtIGlzIHN1cHBvcnRlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhbGdvcml0aG0gVGhlIGFsZ29yaXRobQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzKHN0cmluZyAkYWxnb3JpdGhtKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBhcnJheV9rZXlfZXhpc3RzKCRhbGdvcml0aG0sICR0aGlzLT5hbGdvcml0aG1zKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGxpc3Qgb2YgbmFtZXMgb2Ygc3VwcG9ydGVkIGFsZ29yaXRobXMuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbGlzdCgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBhcnJheV9rZXlzKCR0aGlzLT5hbGdvcml0aG1zKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGFsZ29yaXRobSBpZiBzdXBwb3J0ZWQsIG90aGVyd2lzZSB0aHJvdyBhbiBleGNlcHRpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYWxnb3JpdGhtIFRoZSBhbGdvcml0aG0KICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgYWxnb3JpdGhtIGlzIG5vdCBzdXBwb3J0ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldChzdHJpbmcgJGFsZ29yaXRobSk6IEFsZ29yaXRobQogICAgewogICAgICAgIGlmICghJHRoaXMtPmhhcygkYWxnb3JpdGhtKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBhbGdvcml0aG0gIiVzIiBpcyBub3Qgc3VwcG9ydGVkLicsICRhbGdvcml0aG0pKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+YWxnb3JpdGhtc1skYWxnb3JpdGhtXTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZHMgYW4gYWxnb3JpdGhtIHRvIHRoZSBtYW5hZ2VyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKEFsZ29yaXRobSAkYWxnb3JpdGhtKTogdm9pZAogICAgewogICAgICAgICRuYW1lID0gJGFsZ29yaXRobS0+bmFtZSgpOwogICAgICAgICR0aGlzLT5hbGdvcml0aG1zWyRuYW1lXSA9ICRhbGdvcml0aG07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/AlgorithmManagerFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmU7Cgp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgZnVuY3Rpb24gaXNfc3RyaW5nOwoKY2xhc3MgQWxnb3JpdGhtTWFuYWdlckZhY3RvcnkKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGFsZ29yaXRobXMgPSBbXTsKCiAgICAvKioKICAgICAqIEFkZHMgYW4gYWxnb3JpdGhtLgogICAgICoKICAgICAqIEVhY2ggYWxnb3JpdGhtIGlzIGlkZW50aWZpZWQgYnkgYW4gYWxpYXMgaGVuY2UgaXQgaXMgYWxsb3dlZCB0byBoYXZlIHRoZSBzYW1lIGFsZ29yaXRobSB0d2ljZSAob3IgbW9yZSkuCiAgICAgKiBUaGlzIGNhbiBiZSBoZWxwZnVsIHdoZW4gYW4gYWxnb3JpdGhtIGhhdmUgc2V2ZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoc3RyaW5nICRhbGlhcywgQWxnb3JpdGhtICRhbGdvcml0aG0pOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmFsZ29yaXRobXNbJGFsaWFzXSA9ICRhbGdvcml0aG07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsaWFzZXMuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWxpYXNlcygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBhcnJheV9rZXlzKCR0aGlzLT5hbGdvcml0aG1zKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYWxsIGFsZ29yaXRobXMgc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeS4KICAgICAqIFRoaXMgaXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkuIEtleXMgYXJlIHRoZSBhbGlhc2VzIG9mIHRoZSBhbGdvcml0aG1zLgogICAgICoKICAgICAqIEByZXR1cm4gQWxnb3JpdGhtW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFsbCgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWxnb3JpdGhtczsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBhbGdvcml0aG0gbWFuYWdlciB1c2luZyB0aGUgZ2l2ZW4gYWxpYXNlcy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJGFsaWFzZXMKICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgYWxpYXMgaXMgaW52YWxpZCBvciBpcyBub3Qgc3VwcG9ydGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGUoYXJyYXkgJGFsaWFzZXMpOiBBbGdvcml0aG1NYW5hZ2VyCiAgICB7CiAgICAgICAgJGFsZ29yaXRobXMgPSBbXTsKICAgICAgICBmb3JlYWNoICgkYWxpYXNlcyBhcyAkYWxpYXMpIHsKICAgICAgICAgICAgaWYgKCFpc19zdHJpbmcoJGFsaWFzKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBhbGlhcycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmFsZ29yaXRobXNbJGFsaWFzXSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVGhlIGFsZ29yaXRobSB3aXRoIHRoZSBhbGlhcyAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQuJywgJGFsaWFzKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGFsZ29yaXRobXNbXSA9ICR0aGlzLT5hbGdvcml0aG1zWyRhbGlhc107CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEFsZ29yaXRobU1hbmFnZXIoJGFsZ29yaXRobXMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAid2ViLXRva2VuL2p3dC1jb3JlIiwKICAgICJkZXNjcmlwdGlvbiI6ICJDb3JlIGNvbXBvbmVudCBvZiB0aGUgSldUIEZyYW1ld29yay4iLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImtleXdvcmRzIjogWyJKV1MiLCAiSldUIiwgIkpXRSIsICJKV0EiLCAiSldLIiwgIkpXS1NldCIsICJKb3QiLCAiSm9zZSIsICJSRkM3NTE1IiwgIlJGQzc1MTYiLCAiUkZDNzUxNyIsICJSRkM3NTE4IiwgIlJGQzc1MTkiLCAiUkZDNzUyMCIsICJCdW5kbGUiLCAiU3ltZm9ueSJdLAogICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4iLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgfSx7CiAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3QtZnJhbWV3b3JrL2NvbnRyaWJ1dG9ycyIKICAgICAgICB9CiAgICBdLAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkpvc2VcXENvbXBvbmVudFxcQ29yZVxcIjogICIiCiAgICAgICAgfQogICAgfSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiPj03LjIiLAogICAgICAgICJleHQtanNvbiI6ICIqIiwKICAgICAgICAiZXh0LW1ic3RyaW5nIjogIioiLAogICAgICAgICJicmljay9tYXRoIjogIl4wLjguMTd8XjAuOSIsCiAgICAgICAgImZncm9zc2UvcGhwYXNuMSI6ICJeMi4wIiwKICAgICAgICAic3BvbWt5LWxhYnMvYmFzZTY0dXJsIjogIl4xLjB8XjIuMCIKICAgIH0sCiAgICAiY29uZmxpY3QiOiB7CiAgICAgICAgInNwb21reS1sYWJzL2pvc2UiOiAiKiIKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/JWK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmU7Cgp1c2UgZnVuY3Rpb24gYXJyYXlfa2V5X2V4aXN0czsKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBmdW5jdGlvbiBpbl9hcnJheTsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIGZ1bmN0aW9uIGlzX2FycmF5Owp1c2UgSnNvblNlcmlhbGl6YWJsZTsKCmNsYXNzIEpXSyBpbXBsZW1lbnRzIEpzb25TZXJpYWxpemFibGUKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJHZhbHVlcyA9IFtdOwoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIEpXSyBvYmplY3QgdXNpbmcgdGhlIGdpdmVuIHZhbHVlcy4KICAgICAqIFRoZSBtZW1iZXIgImt0eSIgaXMgbWFuZGF0b3J5LiBPdGhlciBtZW1iZXJzIGFyZSBOT1QgY2hlY2tlZC4KICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUga2V5IHBhcmFtZXRlciAia3R5IiBpcyBtaXNzaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkdmFsdWVzKQogICAgewogICAgICAgIGlmICghaXNzZXQoJHZhbHVlc1sna3R5J10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBwYXJhbWV0ZXIgImt0eSIgaXMgbWFuZGF0b3J5LicpOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+dmFsdWVzID0gJHZhbHVlczsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBKV0sgb2JqZWN0IHVzaW5nIHRoZSBnaXZlbiBKc29uIHN0cmluZy4KICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgZGF0YSBpcyBub3QgdmFsaWQKICAgICAqCiAgICAgKiBAcmV0dXJuIEpXSwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21Kc29uKHN0cmluZyAkanNvbik6IHNlbGYKICAgIHsKICAgICAgICAkZGF0YSA9IGpzb25fZGVjb2RlKCRqc29uLCB0cnVlKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRkYXRhKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGFyZ3VtZW50LicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCRkYXRhKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHZhbHVlcyB0byBiZSBzZXJpYWxpemVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24ganNvblNlcmlhbGl6ZSgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWVzOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSB3aXRoIGEgc3BlY2lmaWMga2V5LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtleSBUaGUga2V5CiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdAogICAgICoKICAgICAqIEByZXR1cm4gbnVsbHxtaXhlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0KHN0cmluZyAka2V5KQogICAgewogICAgICAgIGlmICghJHRoaXMtPmhhcygka2V5KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSB2YWx1ZSBpZGVudGlmaWVkIGJ5ICIlcyIgZG9lcyBub3QgZXhpc3QuJywgJGtleSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXNbJGtleV07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIEpXSyBoYXMgdGhlIHZhbHVlIGlkZW50aWZpZWQgYnkuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhcyhzdHJpbmcgJGtleSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkdGhpcy0+dmFsdWVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBhbGwgdmFsdWVzIHN0b3JlZCBpbiB0aGUgSldLIG9iamVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5IFZhbHVlcyBvZiB0aGUgSldLIG9iamVjdAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWxsKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSB0aHVtYnByaW50IG9mIHRoZSBrZXkuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzYzOAogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBoYXNoaW5nIGZ1bmN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRodW1icHJpbnQoc3RyaW5nICRoYXNoX2FsZ29yaXRobSk6IHN0cmluZwogICAgewogICAgICAgIGlmICghaW5fYXJyYXkoJGhhc2hfYWxnb3JpdGhtLCBoYXNoX2FsZ29zKCksIHRydWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVGhlIGhhc2ggYWxnb3JpdGhtICIlcyIgaXMgbm90IHN1cHBvcnRlZC4nLCAkaGFzaF9hbGdvcml0aG0pKTsKICAgICAgICB9CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X2ludGVyc2VjdF9rZXkoJHRoaXMtPnZhbHVlcywgYXJyYXlfZmxpcChbJ2t0eScsICduJywgJ2UnLCAnY3J2JywgJ3gnLCAneScsICdrJ10pKTsKICAgICAgICBrc29ydCgkdmFsdWVzKTsKICAgICAgICAkaW5wdXQgPSBqc29uX2VuY29kZSgkdmFsdWVzLCBKU09OX1VORVNDQVBFRF9TTEFTSEVTIHwgSlNPTl9VTkVTQ0FQRURfVU5JQ09ERSk7CiAgICAgICAgaWYgKGZhbHNlID09PSAkaW5wdXQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGNvbXB1dGUgdGhlIGtleSB0aHVtYnByaW50Jyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gQmFzZTY0VXJsOjplbmNvZGUoaGFzaCgkaGFzaF9hbGdvcml0aG0sICRpbnB1dCwgdHJ1ZSkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgYXNzb2NpYXRlZCBwdWJsaWMga2V5LgogICAgICogVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBmb3I6CiAgICAgKiAtIHB1YmxpYyBrZXlzCiAgICAgKiAtIHNoYXJlZCBrZXlzCiAgICAgKiAtIHVua25vd24ga2V5cy4KICAgICAqCiAgICAgKiBLbm93biBrZXlzIGFyZSAib2N0IiwgIlJTQSIsICJFQyIgYW5kICJPS1AiLgogICAgICoKICAgICAqIEByZXR1cm4gSldLCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b1B1YmxpYygpOiBzZWxmCiAgICB7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X2RpZmZfa2V5KCR0aGlzLT52YWx1ZXMsIGFycmF5X2ZsaXAoWydwJywgJ2QnLCAncScsICdkcCcsICdkcScsICdxaSddKSk7CgogICAgICAgIHJldHVybiBuZXcgc2VsZigkdmFsdWVzKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/JWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmU7Cgp1c2UgZnVuY3Rpb24gYXJyYXlfa2V5X2V4aXN0czsKdXNlIEFycmF5SXRlcmF0b3I7CnVzZSBmdW5jdGlvbiBjb3VudDsKdXNlIENvdW50YWJsZTsKdXNlIGZ1bmN0aW9uIGluX2FycmF5Owp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgZnVuY3Rpb24gaXNfYXJyYXk7CnVzZSBJdGVyYXRvckFnZ3JlZ2F0ZTsKdXNlIEpzb25TZXJpYWxpemFibGU7CnVzZSBUcmF2ZXJzYWJsZTsKCmNsYXNzIEpXS1NldCBpbXBsZW1lbnRzIENvdW50YWJsZSwgSXRlcmF0b3JBZ2dyZWdhdGUsIEpzb25TZXJpYWxpemFibGUKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGtleXMgPSBbXTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBKV0tbXSAka2V5cwogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBsaXN0IGlzIGludmFsaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRrZXlzKQogICAgewogICAgICAgIGZvcmVhY2ggKCRrZXlzIGFzICRrID0+ICRrZXkpIHsKICAgICAgICAgICAgaWYgKCEka2V5IGluc3RhbmNlb2YgSldLKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGxpc3QuIFNob3VsZCBvbmx5IGNvbnRhaW5zIEpXSyBvYmplY3RzJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgka2V5LT5oYXMoJ2tpZCcpKSB7CiAgICAgICAgICAgICAgICB1bnNldCgka2V5c1ska10pOwogICAgICAgICAgICAgICAgJHRoaXMtPmtleXNbJGtleS0+Z2V0KCdraWQnKV0gPSAka2V5OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPmtleXNbXSA9ICRrZXk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgSldLU2V0IG9iamVjdCB1c2luZyB0aGUgZ2l2ZW4gdmFsdWVzLgogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXlzZXQgaXMgbm90IHZhbGlkCiAgICAgKgogICAgICogQHJldHVybiBKV0tTZXQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tS2V5RGF0YShhcnJheSAkZGF0YSk6IHNlbGYKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCRkYXRhWydrZXlzJ10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgZGF0YS4nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFpc19hcnJheSgkZGF0YVsna2V5cyddKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGRhdGEuJyk7CiAgICAgICAgfQoKICAgICAgICAkandrc2V0ID0gbmV3IHNlbGYoW10pOwogICAgICAgIGZvcmVhY2ggKCRkYXRhWydrZXlzJ10gYXMgJGtleSkgewogICAgICAgICAgICAkandrID0gbmV3IEpXSygka2V5KTsKICAgICAgICAgICAgaWYgKCRqd2stPmhhcygna2lkJykpIHsKICAgICAgICAgICAgICAgICRqd2tzZXQtPmtleXNbJGp3ay0+Z2V0KCdraWQnKV0gPSAkandrOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGp3a3NldC0+a2V5c1tdID0gJGp3azsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRqd2tzZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgSldLU2V0IG9iamVjdCB1c2luZyB0aGUgZ2l2ZW4gSnNvbiBzdHJpbmcuCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGRhdGEgaXMgbm90IHZhbGlkCiAgICAgKgogICAgICogQHJldHVybiBKV0tTZXQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tSnNvbihzdHJpbmcgJGpzb24pOiBzZWxmCiAgICB7CiAgICAgICAgJGRhdGEgPSBqc29uX2RlY29kZSgkanNvbiwgdHJ1ZSk7CiAgICAgICAgaWYgKCFpc19hcnJheSgkZGF0YSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBhcmd1bWVudC4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVGcm9tS2V5RGF0YSgkZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGtleXMgc3RvcmVkIGluIHRoZSBrZXkgc2V0LgogICAgICoKICAgICAqIEByZXR1cm4gSldLW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFsbCgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+a2V5czsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZCBrZXkgdG8gc3RvcmUgaW4gdGhlIGtleSBzZXQuCiAgICAgKiBUaGlzIG1ldGhvZCBpcyBpbW11dGFibGUgYW5kIHdpbGwgcmV0dXJuIGEgbmV3IG9iamVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEpXS1NldAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aChKV0sgJGp3ayk6IHNlbGYKICAgIHsKICAgICAgICAkY2xvbmUgPSBjbG9uZSAkdGhpczsKCiAgICAgICAgaWYgKCRqd2stPmhhcygna2lkJykpIHsKICAgICAgICAgICAgJGNsb25lLT5rZXlzWyRqd2stPmdldCgna2lkJyldID0gJGp3azsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY2xvbmUtPmtleXNbXSA9ICRqd2s7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNsb25lOwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGtleSBmcm9tIHRoZSBrZXkgc2V0LgogICAgICogVGhpcyBtZXRob2QgaXMgaW1tdXRhYmxlIGFuZCB3aWxsIHJldHVybiBhIG5ldyBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIGludHxzdHJpbmcgJGtleSBLZXkgdG8gcmVtb3ZlIGZyb20gdGhlIGtleSBzZXQKICAgICAqCiAgICAgKiBAcmV0dXJuIEpXS1NldAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aG91dCgka2V5KTogc2VsZgogICAgewogICAgICAgIGlmICghJHRoaXMtPmhhcygka2V5KSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkY2xvbmUgPSBjbG9uZSAkdGhpczsKICAgICAgICB1bnNldCgkY2xvbmUtPmtleXNbJGtleV0pOwoKICAgICAgICByZXR1cm4gJGNsb25lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBrZXkgc2V0IGNvbnRhaW5zIGEga2V5IHdpdGggdGhlIGdpdmVuIGluZGV4LgogICAgICoKICAgICAqIEBwYXJhbSBpbnR8c3RyaW5nICRpbmRleAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzKCRpbmRleCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygkaW5kZXgsICR0aGlzLT5rZXlzKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGtleSB3aXRoIHRoZSBnaXZlbiBpbmRleC4gVGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiB0aGUgaW5kZXggaXMgbm90IHByZXNlbnQgaW4gdGhlIGtleSBzdG9yZS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50fHN0cmluZyAkaW5kZXgKICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgaW5kZXggaXMgbm90IGRlZmluZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldCgkaW5kZXgpOiBKV0sKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5oYXMoJGluZGV4KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmRlZmluZWQgaW5kZXguJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmtleXNbJGluZGV4XTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHZhbHVlcyB0byBiZSBzZXJpYWxpemVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24ganNvblNlcmlhbGl6ZSgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBbJ2tleXMnID0+IGFycmF5X3ZhbHVlcygkdGhpcy0+a2V5cyldOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGtleXMgaW4gdGhlIGtleSBzZXQuCiAgICAgKgogICAgICogQHBhcmFtIGludCAkbW9kZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnQoJG1vZGUgPSBDT1VOVF9OT1JNQUwpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gY291bnQoJHRoaXMtPmtleXMsICRtb2RlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRyeSB0byBmaW5kIGEga2V5IHRoYXQgZml0cyBvbiB0aGUgc2VsZWN0ZWQgcmVxdWlyZW1lbnRzLgogICAgICogUmV0dXJucyBudWxsIGlmIG5vdCBmb3VuZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgJHR5cGUgICAgICAgICBNdXN0IGJlICdzaWcnIChzaWduYXR1cmUpIG9yICdlbmMnIChlbmNyeXB0aW9uKQogICAgICogQHBhcmFtIG51bGx8QWxnb3JpdGhtICRhbGdvcml0aG0gICAgU3BlY2lmaWVzIHRoZSBhbGdvcml0aG0gdG8gYmUgdXNlZAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICRyZXN0cmljdGlvbnMgTW9yZSByZXN0cmljdGlvbnMgc3VjaCBhcyAna2lkJyBvciAna3R5JwogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgdHlwZSBpcyBub3QgdmFsaWQgKG11c3QgYmUgInNpZyIgb3IgImVuYyIpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZWxlY3RLZXkoc3RyaW5nICR0eXBlLCA/QWxnb3JpdGhtICRhbGdvcml0aG0gPSBudWxsLCBhcnJheSAkcmVzdHJpY3Rpb25zID0gW10pOiA/SldLCiAgICB7CiAgICAgICAgaWYgKCFpbl9hcnJheSgkdHlwZSwgWydlbmMnLCAnc2lnJ10sIHRydWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0FsbG93ZWQga2V5IHR5cGVzIGFyZSAic2lnIiBvciAiZW5jIi4nKTsKICAgICAgICB9CgogICAgICAgICRyZXN1bHQgPSBbXTsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+a2V5cyBhcyAka2V5KSB7CiAgICAgICAgICAgICRpbmQgPSAwOwoKICAgICAgICAgICAgJGNhbl91c2UgPSAkdGhpcy0+Y2FuS2V5QmVVc2VkRm9yKCR0eXBlLCAka2V5KTsKICAgICAgICAgICAgaWYgKGZhbHNlID09PSAkY2FuX3VzZSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGluZCArPSAkY2FuX3VzZTsKCiAgICAgICAgICAgICRhbGcgPSAkdGhpcy0+Y2FuS2V5QmVVc2VkV2l0aEFsZ29yaXRobSgkYWxnb3JpdGhtLCAka2V5KTsKICAgICAgICAgICAgaWYgKGZhbHNlID09PSAkYWxnKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkaW5kICs9ICRhbGc7CgogICAgICAgICAgICBpZiAoZmFsc2UgPT09ICR0aGlzLT5kb2VzS2V5U2F0aXNmeVJlc3RyaWN0aW9ucygkcmVzdHJpY3Rpb25zLCAka2V5KSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyZXN1bHRbXSA9IFsna2V5JyA9PiAka2V5LCAnaW5kJyA9PiAkaW5kXTsKICAgICAgICB9CgogICAgICAgIGlmICgwID09PSBjb3VudCgkcmVzdWx0KSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHVzb3J0KCRyZXN1bHQsIFskdGhpcywgJ3NvcnRLZXlzJ10pOwoKICAgICAgICByZXR1cm4gJHJlc3VsdFswXVsna2V5J107CiAgICB9CgogICAgLyoqCiAgICAgKiBJbnRlcm5hbCBtZXRob2Qgb25seS4gU2hvdWxkIG5vdCBiZSB1c2VkLgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc29ydEtleXMoYXJyYXkgJGEsIGFycmF5ICRiKTogaW50CiAgICB7CiAgICAgICAgaWYgKCRhWydpbmQnXSA9PT0gJGJbJ2luZCddKSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICgkYVsnaW5kJ10gPiAkYlsnaW5kJ10pID8gLTEgOiAxOwogICAgfQoKICAgIC8qKgogICAgICogSW50ZXJuYWwgbWV0aG9kIG9ubHkuIFNob3VsZCBub3QgYmUgdXNlZC4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEl0ZXJhdG9yKCk6IFRyYXZlcnNhYmxlCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBBcnJheUl0ZXJhdG9yKCR0aGlzLT5rZXlzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgZG9lcyBub3QgZnVsZmlsbCB3aXRoIHRoZSAia2V5X29wcyIgY29uc3RyYWludAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbHxpbnQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjYW5LZXlCZVVzZWRGb3Ioc3RyaW5nICR0eXBlLCBKV0sgJGtleSkKICAgIHsKICAgICAgICBpZiAoJGtleS0+aGFzKCd1c2UnKSkgewogICAgICAgICAgICByZXR1cm4gJHR5cGUgPT09ICRrZXktPmdldCgndXNlJykgPyAxIDogZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmICgka2V5LT5oYXMoJ2tleV9vcHMnKSkgewogICAgICAgICAgICAka2V5X29wcyA9ICRrZXktPmdldCgna2V5X29wcycpOwogICAgICAgICAgICBpZiAoIWlzX2FycmF5KCRrZXlfb3BzKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBrZXkgcGFyYW1ldGVyICJrZXlfb3BzIi4gU2hvdWxkIGJlIGEgbGlzdCBvZiBrZXkgb3BlcmF0aW9ucycpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHR5cGUgPT09IHNlbGY6OmNvbnZlcnRLZXlPcHNUb0tleVVzZSgka2V5X29wcykgPyAxIDogZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbHxpbnQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjYW5LZXlCZVVzZWRXaXRoQWxnb3JpdGhtKD9BbGdvcml0aG0gJGFsZ29yaXRobSwgSldLICRrZXkpCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09ICRhbGdvcml0aG0pIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICAgIGlmICghaW5fYXJyYXkoJGtleS0+Z2V0KCdrdHknKSwgJGFsZ29yaXRobS0+YWxsb3dlZEtleVR5cGVzKCksIHRydWUpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKCRrZXktPmhhcygnYWxnJykpIHsKICAgICAgICAgICAgcmV0dXJuICRhbGdvcml0aG0tPm5hbWUoKSA9PT0gJGtleS0+Z2V0KCdhbGcnKSA/IDIgOiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZG9lc0tleVNhdGlzZnlSZXN0cmljdGlvbnMoYXJyYXkgJHJlc3RyaWN0aW9ucywgSldLICRrZXkpOiBib29sCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHJlc3RyaWN0aW9ucyBhcyAkayA9PiAkdikgewogICAgICAgICAgICBpZiAoISRrZXktPmhhcygkaykgfHwgJHYgIT09ICRrZXktPmdldCgkaykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUga2V5IG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNvbnZlcnRLZXlPcHNUb0tleVVzZShhcnJheSAka2V5X29wcyk6IHN0cmluZwogICAgewogICAgICAgIHN3aXRjaCAodHJ1ZSkgewogICAgICAgICAgICBjYXNlIGluX2FycmF5KCd2ZXJpZnknLCAka2V5X29wcywgdHJ1ZSk6CiAgICAgICAgICAgIGNhc2UgaW5fYXJyYXkoJ3NpZ24nLCAka2V5X29wcywgdHJ1ZSk6CiAgICAgICAgICAgICAgICByZXR1cm4gJ3NpZyc7CgogICAgICAgICAgICBjYXNlIGluX2FycmF5KCdlbmNyeXB0JywgJGtleV9vcHMsIHRydWUpOgogICAgICAgICAgICBjYXNlIGluX2FycmF5KCdkZWNyeXB0JywgJGtleV9vcHMsIHRydWUpOgogICAgICAgICAgICBjYXNlIGluX2FycmF5KCd3cmFwS2V5JywgJGtleV9vcHMsIHRydWUpOgogICAgICAgICAgICBjYXNlIGluX2FycmF5KCd1bndyYXBLZXknLCAka2V5X29wcywgdHJ1ZSk6CiAgICAgICAgICAgIGNhc2UgaW5fYXJyYXkoJ2Rlcml2ZUtleScsICRrZXlfb3BzLCB0cnVlKToKICAgICAgICAgICAgY2FzZSBpbl9hcnJheSgnZGVyaXZlQml0cycsICRrZXlfb3BzLCB0cnVlKToKICAgICAgICAgICAgICAgIHJldHVybiAnZW5jJzsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1Vuc3VwcG9ydGVkIGtleSBvcGVyYXRpb24gdmFsdWUgIiVzIicsIGltcGxvZGUoJywgJywgJGtleV9vcHMpKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/JWT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmU7CgppbnRlcmZhY2UgSldUCnsKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcGF5bG9hZCBvZiB0aGUgSldULgogICAgICogbnVsbCBpcyBhIHZhbGlkIHBheWxvYWQgKGUuZy4gSldTIHdpdGggZGV0YWNoZWQgcGF5bG9hZCkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQYXlsb2FkKCk6ID9zdHJpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOSBTcG9ta3ktTGFicwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UEhQIEpXVCBDb3JlIENvbXBvbmVudAo9PT09PT09PT09PT09PT09PT09PT09CgpUaGlzIHJlcG9zaXRvcnkgaXMgYSBzdWIgcmVwb3NpdG9yeSBvZiBbdGhlIEpXVCBGcmFtZXdvcmtdKGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWZyYW1ld29yaykgcHJvamVjdCBhbmQgaXMgUkVBRCBPTkxZLgoKKipQbGVhc2UgZG8gbm90IHN1Ym1pdCBhbnkgUHVsbCBSZXF1ZXN0IGhlcmUuKioKWW91IHNob3VsZCBnbyB0byBbdGhlIG1haW4gcmVwb3NpdG9yeV0oaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3QtZnJhbWV3b3JrKSBpbnN0ZWFkLgoKIyBEb2N1bWVudGF0aW9uCgpUaGUgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgYXMgaHR0cHM6Ly93ZWItdG9rZW4uc3BvbWt5LWxhYnMuY29tLyAKCiMgTGljZW5jZQoKVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlIHVuZGVyIFtNSVQgbGljZW5jZV0oTElDRU5TRSkuCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Util/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Util/BigInteger.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbDsKCnVzZSBCcmlja1xNYXRoXEJpZ0ludGVnZXIgYXMgQnJpY2tCaWdJbnRlZ2VyOwp1c2UgZnVuY3Rpb24gY2hyOwp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgQmlnSW50ZWdlcgp7CiAgICAvKioKICAgICAqIEhvbGRzIHRoZSBCaWdJbnRlZ2VyJ3MgdmFsdWUuCiAgICAgKgogICAgICogQHZhciBCcmlja0JpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkdmFsdWU7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdChCcmlja0JpZ0ludGVnZXIgJHZhbHVlKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21CaW5hcnlTdHJpbmcoc3RyaW5nICR2YWx1ZSk6IHNlbGYKICAgIHsKICAgICAgICAkcmVzID0gdW5wYWNrKCdIKicsICR2YWx1ZSk7CiAgICAgICAgaWYgKGZhbHNlID09PSAkcmVzKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBjb252ZXJ0IHRoZSB2YWx1ZScpOwogICAgICAgIH0KICAgICAgICAkZGF0YSA9IGN1cnJlbnQoJHJlcyk7CgogICAgICAgIHJldHVybiBuZXcgc2VsZihCcmlja0JpZ0ludGVnZXI6OmZyb21CYXNlKCRkYXRhLCAxNikpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbURlY2ltYWwoaW50ICR2YWx1ZSk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoQnJpY2tCaWdJbnRlZ2VyOjpvZigkdmFsdWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21CaWdJbnRlZ2VyKEJyaWNrQmlnSW50ZWdlciAkdmFsdWUpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhIEJpZ0ludGVnZXIgdG8gYSBiaW5hcnkgc3RyaW5nLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9CeXRlcygpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnZhbHVlLT5pc0VxdWFsVG8oQnJpY2tCaWdJbnRlZ2VyOjp6ZXJvKCkpKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgICR0ZW1wID0gJHRoaXMtPnZhbHVlLT50b0Jhc2UoMTYpOwogICAgICAgICR0ZW1wID0gMCAhPT0gKG1iX3N0cmxlbigkdGVtcCwgJzhiaXQnKSAmIDEpID8gJzAnLiR0ZW1wIDogJHRlbXA7CiAgICAgICAgJHRlbXAgPSBoZXgyYmluKCR0ZW1wKTsKICAgICAgICBpZiAoZmFsc2UgPT09ICR0ZW1wKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBjb252ZXJ0IHRoZSB2YWx1ZSBpbnRvIGJ5dGVzJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbHRyaW0oJHRlbXAsIGNocigwKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGRzIHR3byBCaWdJbnRlZ2Vycy4KICAgICAqCiAgICAgKiAgQHBhcmFtIEJpZ0ludGVnZXIgJHkKICAgICAqCiAgICAgKiAgQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoc2VsZiAkeSk6IHNlbGYKICAgIHsKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+dmFsdWUtPnBsdXMoJHktPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdHMgdHdvIEJpZ0ludGVnZXJzLgogICAgICoKICAgICAqICBAcGFyYW0gQmlnSW50ZWdlciAkeQogICAgICoKICAgICAqICBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHN1YnRyYWN0KHNlbGYgJHkpOiBzZWxmCiAgICB7CiAgICAgICAgJHZhbHVlID0gJHRoaXMtPnZhbHVlLT5taW51cygkeS0+dmFsdWUpOwoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIE11bHRpcGxpZXMgdHdvIEJpZ0ludGVnZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR4CiAgICAgKgogICAgICogIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbXVsdGlwbHkoc2VsZiAkeCk6IHNlbGYKICAgIHsKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+dmFsdWUtPm11bHRpcGxpZWRCeSgkeC0+dmFsdWUpOwoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIERpdmlkZXMgdHdvIEJpZ0ludGVnZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR4CiAgICAgKgogICAgICogIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2aWRlKHNlbGYgJHgpOiBzZWxmCiAgICB7CiAgICAgICAgJHZhbHVlID0gJHRoaXMtPnZhbHVlLT5kaXZpZGVkQnkoJHgtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBQZXJmb3JtcyBtb2R1bGFyIGV4cG9uZW50aWF0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICRlCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlciAkbgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbW9kUG93KHNlbGYgJGUsIHNlbGYgJG4pOiBzZWxmCiAgICB7CiAgICAgICAgJHZhbHVlID0gJHRoaXMtPnZhbHVlLT5tb2RQb3coJGUtPnZhbHVlLCAkbi0+dmFsdWUpOwoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFBlcmZvcm1zIG1vZHVsYXIgZXhwb25lbnRpYXRpb24uCiAgICAgKgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJGQKICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1vZChzZWxmICRkKTogc2VsZgogICAgewogICAgICAgICR2YWx1ZSA9ICR0aGlzLT52YWx1ZS0+bW9kKCRkLT52YWx1ZSk7CgogICAgICAgIHJldHVybiBuZXcgc2VsZigkdmFsdWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtb2RJbnZlcnNlKEJpZ0ludGVnZXIgJG0pOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCR0aGlzLT52YWx1ZS0+bW9kSW52ZXJzZSgkbS0+dmFsdWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBhcmVzIHR3byBudW1iZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wYXJlKHNlbGYgJHkpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlLT5jb21wYXJlVG8oJHktPnZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHMoc2VsZiAkeSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlLT5pc0VxdWFsVG8oJHktPnZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR5CiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmFuZG9tKHNlbGYgJHkpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKEJyaWNrQmlnSW50ZWdlcjo6cmFuZG9tUmFuZ2UoMCwgJHktPnZhbHVlKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlciAkeQogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2NkKHNlbGYgJHkpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCR0aGlzLT52YWx1ZS0+Z2NkKCR5LT52YWx1ZSkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJHkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxvd2VyVGhhbihzZWxmICR5KTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWUtPmlzTGVzc1RoYW4oJHktPnZhbHVlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFdmVuKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlLT5pc0V2ZW4oKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0KCk6IEJyaWNrQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Util/ECKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbDsKCnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgZnVuY3Rpb24gZXh0ZW5zaW9uX2xvYWRlZDsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIGZ1bmN0aW9uIGlzX2FycmF5Owp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgRUNLZXkKewogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb252ZXJ0VG9QRU0oSldLICRqd2spOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJGp3ay0+aGFzKCdkJykpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmNvbnZlcnRQcml2YXRlS2V5VG9QRU0oJGp3ayk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6Y29udmVydFB1YmxpY0tleVRvUEVNKCRqd2spOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGN1cnZlIGlzIG5vdCBzdXBwb3J0ZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb252ZXJ0UHVibGljS2V5VG9QRU0oSldLICRqd2spOiBzdHJpbmcKICAgIHsKICAgICAgICBzd2l0Y2ggKCRqd2stPmdldCgnY3J2JykpIHsKICAgICAgICAgICAgY2FzZSAnUC0yNTYnOgogICAgICAgICAgICAgICAgJGRlciA9IHNlbGY6OnAyNTZQdWJsaWNLZXkoKTsKCiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ3NlY3AyNTZrMSc6CiAgICAgICAgICAgICAgICAkZGVyID0gc2VsZjo6cDI1NktQdWJsaWNLZXkoKTsKCiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ1AtMzg0JzoKICAgICAgICAgICAgICAgICRkZXIgPSBzZWxmOjpwMzg0UHVibGljS2V5KCk7CgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdQLTUyMSc6CiAgICAgICAgICAgICAgICAkZGVyID0gc2VsZjo6cDUyMVB1YmxpY0tleSgpOwoKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGN1cnZlLicpOwogICAgICAgIH0KICAgICAgICAkZGVyIC49IHNlbGY6OmdldEtleSgkandrKTsKICAgICAgICAkcGVtID0gJy0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tJy5QSFBfRU9MOwogICAgICAgICRwZW0gLj0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkZGVyKSwgNjQsIFBIUF9FT0wpOwogICAgICAgICRwZW0gLj0gJy0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLScuUEhQX0VPTDsKCiAgICAgICAgcmV0dXJuICRwZW07CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgY3VydmUgaXMgbm90IHN1cHBvcnRlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvbnZlcnRQcml2YXRlS2V5VG9QRU0oSldLICRqd2spOiBzdHJpbmcKICAgIHsKICAgICAgICBzd2l0Y2ggKCRqd2stPmdldCgnY3J2JykpIHsKICAgICAgICAgICAgY2FzZSAnUC0yNTYnOgogICAgICAgICAgICAgICAgJGRlciA9IHNlbGY6OnAyNTZQcml2YXRlS2V5KCRqd2spOwoKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnc2VjcDI1NmsxJzoKICAgICAgICAgICAgICAgICRkZXIgPSBzZWxmOjpwMjU2S1ByaXZhdGVLZXkoJGp3ayk7CgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdQLTM4NCc6CiAgICAgICAgICAgICAgICAkZGVyID0gc2VsZjo6cDM4NFByaXZhdGVLZXkoJGp3ayk7CgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdQLTUyMSc6CiAgICAgICAgICAgICAgICAkZGVyID0gc2VsZjo6cDUyMVByaXZhdGVLZXkoJGp3ayk7CgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQgY3VydmUuJyk7CiAgICAgICAgfQogICAgICAgICRkZXIgLj0gc2VsZjo6Z2V0S2V5KCRqd2spOwogICAgICAgICRwZW0gPSAnLS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tJy5QSFBfRU9MOwogICAgICAgICRwZW0gLj0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkZGVyKSwgNjQsIFBIUF9FT0wpOwogICAgICAgICRwZW0gLj0gJy0tLS0tRU5EIEVDIFBSSVZBVEUgS0VZLS0tLS0nLlBIUF9FT0w7CgogICAgICAgIHJldHVybiAkcGVtOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIEVDIGtleSB3aXRoIHRoZSBnaXZlbiBjdXJ2ZSBhbmQgYWRkaXRpb25hbCB2YWx1ZXMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkY3VydmUgIFRoZSBjdXJ2ZQogICAgICogQHBhcmFtIGFycmF5ICAkdmFsdWVzIHZhbHVlcyB0byBjb25maWd1cmUgdGhlIGtleQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUVDS2V5KHN0cmluZyAkY3VydmUsIGFycmF5ICR2YWx1ZXMgPSBbXSk6IEpXSwogICAgewogICAgICAgICRqd2sgPSBzZWxmOjpjcmVhdGVFQ0tleVVzaW5nT3BlblNTTCgkY3VydmUpOwogICAgICAgICR2YWx1ZXMgPSBhcnJheV9tZXJnZSgkdmFsdWVzLCAkandrKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgY3VydmUgaXMgbm90IHN1cHBvcnRlZAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXROaXN0Q3VydmVTaXplKHN0cmluZyAkY3VydmUpOiBpbnQKICAgIHsKICAgICAgICBzd2l0Y2ggKCRjdXJ2ZSkgewogICAgICAgICAgICBjYXNlICdQLTI1Nic6CiAgICAgICAgICAgIGNhc2UgJ3NlY3AyNTZrMSc6CiAgICAgICAgICAgICAgICByZXR1cm4gMjU2OwoKICAgICAgICAgICAgY2FzZSAnUC0zODQnOgogICAgICAgICAgICAgICAgcmV0dXJuIDM4NDsKCiAgICAgICAgICAgIGNhc2UgJ1AtNTIxJzoKICAgICAgICAgICAgICAgIHJldHVybiA1MjE7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgY3VydmUgIiVzIiBpcyBub3Qgc3VwcG9ydGVkLicsICRjdXJ2ZSkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbiBpZiB0aGUgZXh0ZW5zaW9uIE9wZW5TU0wgaXMgbm90IGF2YWlsYWJsZQogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBrZXkgY2Fubm90IGJlIGNyZWF0ZWQKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRUNLZXlVc2luZ09wZW5TU0woc3RyaW5nICRjdXJ2ZSk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCFleHRlbnNpb25fbG9hZGVkKCdvcGVuc3NsJykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1BsZWFzZSBpbnN0YWxsIHRoZSBPcGVuU1NMIGV4dGVuc2lvbicpOwogICAgICAgIH0KICAgICAgICAka2V5ID0gb3BlbnNzbF9wa2V5X25ldyhbCiAgICAgICAgICAgICdjdXJ2ZV9uYW1lJyA9PiBzZWxmOjpnZXRPcGVuc3NsQ3VydmVOYW1lKCRjdXJ2ZSksCiAgICAgICAgICAgICdwcml2YXRlX2tleV90eXBlJyA9PiBPUEVOU1NMX0tFWVRZUEVfRUMsCiAgICAgICAgXSk7CiAgICAgICAgaWYgKGZhbHNlID09PSAka2V5KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdVbmFibGUgdG8gY3JlYXRlIHRoZSBrZXknKTsKICAgICAgICB9CiAgICAgICAgJHJlc3VsdCA9IG9wZW5zc2xfcGtleV9leHBvcnQoJGtleSwgJG91dCk7CiAgICAgICAgaWYgKGZhbHNlID09PSAkcmVzdWx0KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdVbmFibGUgdG8gY3JlYXRlIHRoZSBrZXknKTsKICAgICAgICB9CiAgICAgICAgJHJlcyA9IG9wZW5zc2xfcGtleV9nZXRfcHJpdmF0ZSgkb3V0KTsKICAgICAgICBpZiAoZmFsc2UgPT09ICRyZXMpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byBjcmVhdGUgdGhlIGtleScpOwogICAgICAgIH0KICAgICAgICAkZGV0YWlscyA9IG9wZW5zc2xfcGtleV9nZXRfZGV0YWlscygkcmVzKTsKICAgICAgICBpZiAoZmFsc2UgPT09ICRkZXRhaWxzKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBnZXQgdGhlIGtleSBkZXRhaWxzJyk7CiAgICAgICAgfQogICAgICAgICRuaXN0Q3VydmVTaXplID0gc2VsZjo6Z2V0TmlzdEN1cnZlU2l6ZSgkY3VydmUpOwoKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAna3R5JyA9PiAnRUMnLAogICAgICAgICAgICAnY3J2JyA9PiAkY3VydmUsCiAgICAgICAgICAgICdkJyA9PiBCYXNlNjRVcmw6OmVuY29kZShzdHJfcGFkKCRkZXRhaWxzWydlYyddWydkJ10sIChpbnQpIGNlaWwoJG5pc3RDdXJ2ZVNpemUgLyA4KSwgIlwwIiwgU1RSX1BBRF9MRUZUKSksCiAgICAgICAgICAgICd4JyA9PiBCYXNlNjRVcmw6OmVuY29kZShzdHJfcGFkKCRkZXRhaWxzWydlYyddWyd4J10sIChpbnQpIGNlaWwoJG5pc3RDdXJ2ZVNpemUgLyA4KSwgIlwwIiwgU1RSX1BBRF9MRUZUKSksCiAgICAgICAgICAgICd5JyA9PiBCYXNlNjRVcmw6OmVuY29kZShzdHJfcGFkKCRkZXRhaWxzWydlYyddWyd5J10sIChpbnQpIGNlaWwoJG5pc3RDdXJ2ZVNpemUgLyA4KSwgIlwwIiwgU1RSX1BBRF9MRUZUKSksCiAgICAgICAgXTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBjdXJ2ZSBpcyBub3Qgc3VwcG9ydGVkCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldE9wZW5zc2xDdXJ2ZU5hbWUoc3RyaW5nICRjdXJ2ZSk6IHN0cmluZwogICAgewogICAgICAgIHN3aXRjaCAoJGN1cnZlKSB7CiAgICAgICAgICAgIGNhc2UgJ1AtMjU2JzoKICAgICAgICAgICAgICAgIHJldHVybiAncHJpbWUyNTZ2MSc7CgogICAgICAgICAgICBjYXNlICdzZWNwMjU2azEnOgogICAgICAgICAgICAgICAgcmV0dXJuICdzZWNwMjU2azEnOwoKICAgICAgICAgICAgY2FzZSAnUC0zODQnOgogICAgICAgICAgICAgICAgcmV0dXJuICdzZWNwMzg0cjEnOwoKICAgICAgICAgICAgY2FzZSAnUC01MjEnOgogICAgICAgICAgICAgICAgcmV0dXJuICdzZWNwNTIxcjEnOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVGhlIGN1cnZlICIlcyIgaXMgbm90IHN1cHBvcnRlZC4nLCAkY3VydmUpKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcDI1NlB1YmxpY0tleSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gcGFjaygKICAgICAgICAgICAgJ0gqJywKICAgICAgICAgICAgJzMwNTknIC8vIFNFUVVFTkNFLCBsZW5ndGggODkKICAgICAgICAgICAgICAgIC4nMzAxMycgLy8gU0VRVUVOQ0UsIGxlbmd0aCAxOQogICAgICAgICAgICAgICAgICAgIC4nMDYwNycgLy8gT0lELCBsZW5ndGggNwogICAgICAgICAgICAgICAgICAgICAgICAuJzJhODY0OGNlM2QwMjAxJyAvLyAxLjIuODQwLjEwMDQ1LjIuMSA9IEVDIFB1YmxpYyBLZXkKICAgICAgICAgICAgICAgICAgICAuJzA2MDgnIC8vIE9JRCwgbGVuZ3RoIDgKICAgICAgICAgICAgICAgICAgICAgICAgLicyYTg2NDhjZTNkMDMwMTA3JyAvLyAxLjIuODQwLjEwMDQ1LjMuMS43ID0gUC0yNTYgQ3VydmUKICAgICAgICAgICAgICAgIC4nMDM0MicgLy8gQklUIFNUUklORywgbGVuZ3RoIDY2CiAgICAgICAgICAgICAgICAgICAgLicwMCcgLy8gcHJlcGVuZCB3aXRoIE5VTCAtIHB1YmtleSB3aWxsIGZvbGxvdwogICAgICAgICk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcDI1NktQdWJsaWNLZXkoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHBhY2soCiAgICAgICAgICAgICdIKicsCiAgICAgICAgICAgICczMDU2JyAvLyBTRVFVRU5DRSwgbGVuZ3RoIDg2CiAgICAgICAgICAgICAgICAuJzMwMTAnIC8vIFNFUVVFTkNFLCBsZW5ndGggMTYKICAgICAgICAgICAgICAgICAgICAuJzA2MDcnIC8vIE9JRCwgbGVuZ3RoIDcKICAgICAgICAgICAgICAgICAgICAgICAgLicyYTg2NDhjZTNkMDIwMScgLy8gMS4yLjg0MC4xMDA0NS4yLjEgPSBFQyBQdWJsaWMgS2V5CiAgICAgICAgICAgICAgICAgICAgLicwNjA1JyAvLyBPSUQsIGxlbmd0aCA4CiAgICAgICAgICAgICAgICAgICAgICAgIC4nMkI4MTA0MDAwQScgLy8gMS4zLjEzMi4wLjEwIHNlY3AyNTZrMQogICAgICAgICAgICAgICAgLicwMzQyJyAvLyBCSVQgU1RSSU5HLCBsZW5ndGggNjYKICAgICAgICAgICAgICAgICAgICAuJzAwJyAvLyBwcmVwZW5kIHdpdGggTlVMIC0gcHVia2V5IHdpbGwgZm9sbG93CiAgICAgICAgKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwMzg0UHVibGljS2V5KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBwYWNrKAogICAgICAgICAgICAnSConLAogICAgICAgICAgICAnMzA3NicgLy8gU0VRVUVOQ0UsIGxlbmd0aCAxMTgKICAgICAgICAgICAgICAgIC4nMzAxMCcgLy8gU0VRVUVOQ0UsIGxlbmd0aCAxNgogICAgICAgICAgICAgICAgICAgIC4nMDYwNycgLy8gT0lELCBsZW5ndGggNwogICAgICAgICAgICAgICAgICAgICAgICAuJzJhODY0OGNlM2QwMjAxJyAvLyAxLjIuODQwLjEwMDQ1LjIuMSA9IEVDIFB1YmxpYyBLZXkKICAgICAgICAgICAgICAgICAgICAuJzA2MDUnIC8vIE9JRCwgbGVuZ3RoIDUKICAgICAgICAgICAgICAgICAgICAgICAgLicyYjgxMDQwMDIyJyAvLyAxLjMuMTMyLjAuMzQgPSBQLTM4NCBDdXJ2ZQogICAgICAgICAgICAgICAgLicwMzYyJyAvLyBCSVQgU1RSSU5HLCBsZW5ndGggOTgKICAgICAgICAgICAgICAgICAgICAuJzAwJyAvLyBwcmVwZW5kIHdpdGggTlVMIC0gcHVia2V5IHdpbGwgZm9sbG93CiAgICAgICAgKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwNTIxUHVibGljS2V5KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBwYWNrKAogICAgICAgICAgICAnSConLAogICAgICAgICAgICAnMzA4MTliJyAvLyBTRVFVRU5DRSwgbGVuZ3RoIDE1NAogICAgICAgICAgICAgICAgLiczMDEwJyAvLyBTRVFVRU5DRSwgbGVuZ3RoIDE2CiAgICAgICAgICAgICAgICAgICAgLicwNjA3JyAvLyBPSUQsIGxlbmd0aCA3CiAgICAgICAgICAgICAgICAgICAgICAgIC4nMmE4NjQ4Y2UzZDAyMDEnIC8vIDEuMi44NDAuMTAwNDUuMi4xID0gRUMgUHVibGljIEtleQogICAgICAgICAgICAgICAgICAgIC4nMDYwNScgLy8gT0lELCBsZW5ndGggNQogICAgICAgICAgICAgICAgICAgICAgICAuJzJiODEwNDAwMjMnIC8vIDEuMy4xMzIuMC4zNSA9IFAtNTIxIEN1cnZlCiAgICAgICAgICAgICAgICAuJzAzODE4NicgLy8gQklUIFNUUklORywgbGVuZ3RoIDEzNAogICAgICAgICAgICAgICAgICAgIC4nMDAnIC8vIHByZXBlbmQgd2l0aCBOVUwgLSBwdWJrZXkgd2lsbCBmb2xsb3cKICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHAyNTZQcml2YXRlS2V5KEpXSyAkandrKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGQgPSB1bnBhY2soJ0gqJywgc3RyX3BhZChCYXNlNjRVcmw6OmRlY29kZSgkandrLT5nZXQoJ2QnKSksIDMyLCAiXDAiLCBTVFJfUEFEX0xFRlQpKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRkKSB8fCAhaXNzZXQoJGRbMV0pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBnZXQgdGhlIHByaXZhdGUga2V5Jyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcGFjaygKICAgICAgICAgICAgJ0gqJywKICAgICAgICAgICAgJzMwNzcnIC8vIFNFUVVFTkNFLCBsZW5ndGggODcrbGVuZ3RoKCRkKT0zMgogICAgICAgICAgICAgICAgLicwMjAxMDEnIC8vIElOVEVHRVIsIDEKICAgICAgICAgICAgICAgIC4nMDQyMCcgICAvLyBPQ1RFVCBTVFJJTkcsIGxlbmd0aCgkZCkgPSAzMgogICAgICAgICAgICAgICAgICAgIC4kZFsxXQogICAgICAgICAgICAgICAgLidhMDBhJyAvLyBUQUdHRUQgT0JKRUNUICMwLCBsZW5ndGggMTAKICAgICAgICAgICAgICAgICAgICAuJzA2MDgnIC8vIE9JRCwgbGVuZ3RoIDgKICAgICAgICAgICAgICAgICAgICAgICAgLicyYTg2NDhjZTNkMDMwMTA3JyAvLyAxLjMuMTMyLjAuMzQgPSBQLTI1NiBDdXJ2ZQogICAgICAgICAgICAgICAgLidhMTQ0JyAvLyAgVEFHR0VEIE9CSkVDVCAjMSwgbGVuZ3RoIDY4CiAgICAgICAgICAgICAgICAgICAgLicwMzQyJyAvLyBCSVQgU1RSSU5HLCBsZW5ndGggNjYKICAgICAgICAgICAgICAgICAgICAuJzAwJyAvLyBwcmVwZW5kIHdpdGggTlVMIC0gcHVia2V5IHdpbGwgZm9sbG93CiAgICAgICAgKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwMjU2S1ByaXZhdGVLZXkoSldLICRqd2spOiBzdHJpbmcKICAgIHsKICAgICAgICAkZCA9IHVucGFjaygnSConLCBzdHJfcGFkKEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgnZCcpKSwgMzIsICJcMCIsIFNUUl9QQURfTEVGVCkpOwogICAgICAgIGlmICghaXNfYXJyYXkoJGQpIHx8ICFpc3NldCgkZFsxXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGdldCB0aGUgcHJpdmF0ZSBrZXknKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwYWNrKAogICAgICAgICAgICAnSConLAogICAgICAgICAgICAnMzA3NCcgLy8gU0VRVUVOQ0UsIGxlbmd0aCA4NCtsZW5ndGgoJGQpPTMyCiAgICAgICAgICAgICAgICAuJzAyMDEwMScgLy8gSU5URUdFUiwgMQogICAgICAgICAgICAgICAgLicwNDIwJyAgIC8vIE9DVEVUIFNUUklORywgbGVuZ3RoKCRkKSA9IDMyCiAgICAgICAgICAgICAgICAgICAgLiRkWzFdCiAgICAgICAgICAgICAgICAuJ2EwMDcnIC8vIFRBR0dFRCBPQkpFQ1QgIzAsIGxlbmd0aCA3CiAgICAgICAgICAgICAgICAgICAgLicwNjA1JyAvLyBPSUQsIGxlbmd0aCA1CiAgICAgICAgICAgICAgICAgICAgICAgIC4nMmI4MTA0MDAwYScgLy8gIDEuMy4xMzIuMC4xMCBzZWNwMjU2azEKICAgICAgICAgICAgICAgIC4nYTE0NCcgLy8gIFRBR0dFRCBPQkpFQ1QgIzEsIGxlbmd0aCA2OAogICAgICAgICAgICAgICAgICAgIC4nMDM0MicgLy8gQklUIFNUUklORywgbGVuZ3RoIDY2CiAgICAgICAgICAgICAgICAgICAgLicwMCcgLy8gcHJlcGVuZCB3aXRoIE5VTCAtIHB1YmtleSB3aWxsIGZvbGxvdwogICAgICAgICk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcDM4NFByaXZhdGVLZXkoSldLICRqd2spOiBzdHJpbmcKICAgIHsKICAgICAgICAkZCA9IHVucGFjaygnSConLCBzdHJfcGFkKEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgnZCcpKSwgNDgsICJcMCIsIFNUUl9QQURfTEVGVCkpOwogICAgICAgIGlmICghaXNfYXJyYXkoJGQpIHx8ICFpc3NldCgkZFsxXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGdldCB0aGUgcHJpdmF0ZSBrZXknKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwYWNrKAogICAgICAgICAgICAnSConLAogICAgICAgICAgICAnMzA4MWE0JyAvLyBTRVFVRU5DRSwgbGVuZ3RoIDExNiArIGxlbmd0aCgkZCk9NDgKICAgICAgICAgICAgICAgIC4nMDIwMTAxJyAvLyBJTlRFR0VSLCAxCiAgICAgICAgICAgICAgICAuJzA0MzAnICAgLy8gT0NURVQgU1RSSU5HLCBsZW5ndGgoJGQpID0gMzAKICAgICAgICAgICAgICAgICAgICAuJGRbMV0KICAgICAgICAgICAgICAgIC4nYTAwNycgLy8gVEFHR0VEIE9CSkVDVCAjMCwgbGVuZ3RoIDcKICAgICAgICAgICAgICAgICAgICAuJzA2MDUnIC8vIE9JRCwgbGVuZ3RoIDUKICAgICAgICAgICAgICAgICAgICAgICAgLicyYjgxMDQwMDIyJyAvLyAxLjMuMTMyLjAuMzQgPSBQLTM4NCBDdXJ2ZQogICAgICAgICAgICAgICAgLidhMTY0JyAvLyAgVEFHR0VEIE9CSkVDVCAjMSwgbGVuZ3RoIDEwMAogICAgICAgICAgICAgICAgICAgIC4nMDM2MicgLy8gQklUIFNUUklORywgbGVuZ3RoIDk4CiAgICAgICAgICAgICAgICAgICAgLicwMCcgLy8gcHJlcGVuZCB3aXRoIE5VTCAtIHB1YmtleSB3aWxsIGZvbGxvdwogICAgICAgICk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcDUyMVByaXZhdGVLZXkoSldLICRqd2spOiBzdHJpbmcKICAgIHsKICAgICAgICAkZCA9IHVucGFjaygnSConLCBzdHJfcGFkKEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgnZCcpKSwgNjYsICJcMCIsIFNUUl9QQURfTEVGVCkpOwogICAgICAgIGlmICghaXNfYXJyYXkoJGQpIHx8ICFpc3NldCgkZFsxXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGdldCB0aGUgcHJpdmF0ZSBrZXknKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwYWNrKAogICAgICAgICAgICAnSConLAogICAgICAgICAgICAnMzA4MWRjJyAvLyBTRVFVRU5DRSwgbGVuZ3RoIDE1NCArIGxlbmd0aCgkZCk9NjYKICAgICAgICAgICAgICAgIC4nMDIwMTAxJyAvLyBJTlRFR0VSLCAxCiAgICAgICAgICAgICAgICAuJzA0NDInICAgLy8gT0NURVQgU1RSSU5HLCBsZW5ndGgoZCkgPSA2NgogICAgICAgICAgICAgICAgICAgIC4kZFsxXQogICAgICAgICAgICAgICAgLidhMDA3JyAvLyBUQUdHRUQgT0JKRUNUICMwLCBsZW5ndGggNwogICAgICAgICAgICAgICAgICAgIC4nMDYwNScgLy8gT0lELCBsZW5ndGggNQogICAgICAgICAgICAgICAgICAgICAgICAuJzJiODEwNDAwMjMnIC8vIDEuMy4xMzIuMC4zNSA9IFAtNTIxIEN1cnZlCiAgICAgICAgICAgICAgICAuJ2ExODE4OScgLy8gIFRBR0dFRCBPQkpFQ1QgIzEsIGxlbmd0aCAxMzcKICAgICAgICAgICAgICAgICAgICAuJzAzODE4NicgLy8gQklUIFNUUklORywgbGVuZ3RoIDEzNAogICAgICAgICAgICAgICAgICAgIC4nMDAnIC8vIHByZXBlbmQgd2l0aCBOVUwgLSBwdWJrZXkgd2lsbCBmb2xsb3cKICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldEtleShKV0sgJGp3ayk6IHN0cmluZwogICAgewogICAgICAgICRuaXN0Q3VydmVTaXplID0gc2VsZjo6Z2V0TmlzdEN1cnZlU2l6ZSgkandrLT5nZXQoJ2NydicpKTsKICAgICAgICAkbGVuZ3RoID0gKGludCkgY2VpbCgkbmlzdEN1cnZlU2l6ZSAvIDgpOwoKICAgICAgICByZXR1cm4KICAgICAgICAgICAgIlwwNCIKICAgICAgICAgICAgLnN0cl9wYWQoQmFzZTY0VXJsOjpkZWNvZGUoJGp3ay0+Z2V0KCd4JykpLCAkbGVuZ3RoLCAiXDAiLCBTVFJfUEFEX0xFRlQpCiAgICAgICAgICAgIC5zdHJfcGFkKEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgneScpKSwgJGxlbmd0aCwgIlwwIiwgU1RSX1BBRF9MRUZUKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Util/ECSignature.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbDsKCnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBmdW5jdGlvbiBpc19zdHJpbmc7CnVzZSBjb25zdCBTVFJfUEFEX0xFRlQ7CgovKioKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBFQ1NpZ25hdHVyZQp7CiAgICBwcml2YXRlIGNvbnN0IEFTTjFfU0VRVUVOQ0UgPSAnMzAnOwogICAgcHJpdmF0ZSBjb25zdCBBU04xX0lOVEVHRVIgPSAnMDInOwogICAgcHJpdmF0ZSBjb25zdCBBU04xX01BWF9TSU5HTEVfQllURSA9IDEyODsKICAgIHByaXZhdGUgY29uc3QgQVNOMV9MRU5HVEhfMkJZVEVTID0gJzgxJzsKICAgIHByaXZhdGUgY29uc3QgQVNOMV9CSUdfSU5URUdFUl9MSU1JVCA9ICc3Zic7CiAgICBwcml2YXRlIGNvbnN0IEFTTjFfTkVHQVRJVkVfSU5URUdFUiA9ICcwMCc7CiAgICBwcml2YXRlIGNvbnN0IEJZVEVfU0laRSA9IDI7CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgbGVuZ3RoIG9mIHRoZSBzaWduYXR1cmUgaXMgaW52YWxpZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvQXNuMShzdHJpbmcgJHNpZ25hdHVyZSwgaW50ICRsZW5ndGgpOiBzdHJpbmcKICAgIHsKICAgICAgICAkc2lnbmF0dXJlID0gYmluMmhleCgkc2lnbmF0dXJlKTsKCiAgICAgICAgaWYgKHNlbGY6Om9jdGV0TGVuZ3RoKCRzaWduYXR1cmUpICE9PSAkbGVuZ3RoKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgc2lnbmF0dXJlIGxlbmd0aC4nKTsKICAgICAgICB9CgogICAgICAgICRwb2ludFIgPSBzZWxmOjpwcmVwYXJlUG9zaXRpdmVJbnRlZ2VyKG1iX3N1YnN0cigkc2lnbmF0dXJlLCAwLCAkbGVuZ3RoLCAnOGJpdCcpKTsKICAgICAgICAkcG9pbnRTID0gc2VsZjo6cHJlcGFyZVBvc2l0aXZlSW50ZWdlcihtYl9zdWJzdHIoJHNpZ25hdHVyZSwgJGxlbmd0aCwgbnVsbCwgJzhiaXQnKSk7CgogICAgICAgICRsZW5ndGhSID0gc2VsZjo6b2N0ZXRMZW5ndGgoJHBvaW50Uik7CiAgICAgICAgJGxlbmd0aFMgPSBzZWxmOjpvY3RldExlbmd0aCgkcG9pbnRTKTsKCiAgICAgICAgJHRvdGFsTGVuZ3RoID0gJGxlbmd0aFIgKyAkbGVuZ3RoUyArIHNlbGY6OkJZVEVfU0laRSArIHNlbGY6OkJZVEVfU0laRTsKICAgICAgICAkbGVuZ3RoUHJlZml4ID0gJHRvdGFsTGVuZ3RoID4gc2VsZjo6QVNOMV9NQVhfU0lOR0xFX0JZVEUgPyBzZWxmOjpBU04xX0xFTkdUSF8yQllURVMgOiAnJzsKCiAgICAgICAgJGJpbiA9IGhleDJiaW4oCiAgICAgICAgICAgIHNlbGY6OkFTTjFfU0VRVUVOQ0UKICAgICAgICAgICAgLiRsZW5ndGhQcmVmaXguZGVjaGV4KCR0b3RhbExlbmd0aCkKICAgICAgICAgICAgLnNlbGY6OkFTTjFfSU5URUdFUi5kZWNoZXgoJGxlbmd0aFIpLiRwb2ludFIKICAgICAgICAgICAgLnNlbGY6OkFTTjFfSU5URUdFUi5kZWNoZXgoJGxlbmd0aFMpLiRwb2ludFMKICAgICAgICApOwogICAgICAgIGlmICghaXNfc3RyaW5nKCRiaW4pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBwYXJzZSB0aGUgZGF0YScpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRiaW47CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgc2lnbmF0dXJlIGlzIG5vdCBhbiBBU04uMSBzZXF1ZW5jZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21Bc24xKHN0cmluZyAkc2lnbmF0dXJlLCBpbnQgJGxlbmd0aCk6IHN0cmluZwogICAgewogICAgICAgICRtZXNzYWdlID0gYmluMmhleCgkc2lnbmF0dXJlKTsKICAgICAgICAkcG9zaXRpb24gPSAwOwoKICAgICAgICBpZiAoc2VsZjo6QVNOMV9TRVFVRU5DRSAhPT0gc2VsZjo6cmVhZEFzbjFDb250ZW50KCRtZXNzYWdlLCAkcG9zaXRpb24sIHNlbGY6OkJZVEVfU0laRSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBkYXRhLiBTaG91bGQgc3RhcnQgd2l0aCBhIHNlcXVlbmNlLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHNlbGY6OkFTTjFfTEVOR1RIXzJCWVRFUyA9PT0gc2VsZjo6cmVhZEFzbjFDb250ZW50KCRtZXNzYWdlLCAkcG9zaXRpb24sIHNlbGY6OkJZVEVfU0laRSkpIHsKICAgICAgICAgICAgJHBvc2l0aW9uICs9IHNlbGY6OkJZVEVfU0laRTsKICAgICAgICB9CgogICAgICAgICRwb2ludFIgPSBzZWxmOjpyZXRyaWV2ZVBvc2l0aXZlSW50ZWdlcihzZWxmOjpyZWFkQXNuMUludGVnZXIoJG1lc3NhZ2UsICRwb3NpdGlvbikpOwogICAgICAgICRwb2ludFMgPSBzZWxmOjpyZXRyaWV2ZVBvc2l0aXZlSW50ZWdlcihzZWxmOjpyZWFkQXNuMUludGVnZXIoJG1lc3NhZ2UsICRwb3NpdGlvbikpOwoKICAgICAgICAkYmluID0gaGV4MmJpbihzdHJfcGFkKCRwb2ludFIsICRsZW5ndGgsICcwJywgU1RSX1BBRF9MRUZUKS5zdHJfcGFkKCRwb2ludFMsICRsZW5ndGgsICcwJywgU1RSX1BBRF9MRUZUKSk7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJGJpbikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIHBhcnNlIHRoZSBkYXRhJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGJpbjsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBvY3RldExlbmd0aChzdHJpbmcgJGRhdGEpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gKGludCkgKG1iX3N0cmxlbigkZGF0YSwgJzhiaXQnKSAvIHNlbGY6OkJZVEVfU0laRSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcHJlcGFyZVBvc2l0aXZlSW50ZWdlcihzdHJpbmcgJGRhdGEpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAobWJfc3Vic3RyKCRkYXRhLCAwLCBzZWxmOjpCWVRFX1NJWkUsICc4Yml0JykgPiBzZWxmOjpBU04xX0JJR19JTlRFR0VSX0xJTUlUKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpBU04xX05FR0FUSVZFX0lOVEVHRVIuJGRhdGE7CiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoMCA9PT0gbWJfc3RycG9zKCRkYXRhLCBzZWxmOjpBU04xX05FR0FUSVZFX0lOVEVHRVIsIDAsICc4Yml0JykKICAgICAgICAgICAgJiYgbWJfc3Vic3RyKCRkYXRhLCAyLCBzZWxmOjpCWVRFX1NJWkUsICc4Yml0JykgPD0gc2VsZjo6QVNOMV9CSUdfSU5URUdFUl9MSU1JVCkgewogICAgICAgICAgICAkZGF0YSA9IG1iX3N1YnN0cigkZGF0YSwgMiwgbnVsbCwgJzhiaXQnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZGF0YTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiByZWFkQXNuMUNvbnRlbnQoc3RyaW5nICRtZXNzYWdlLCBpbnQgJiRwb3NpdGlvbiwgaW50ICRsZW5ndGgpOiBzdHJpbmcKICAgIHsKICAgICAgICAkY29udGVudCA9IG1iX3N1YnN0cigkbWVzc2FnZSwgJHBvc2l0aW9uLCAkbGVuZ3RoLCAnOGJpdCcpOwogICAgICAgICRwb3NpdGlvbiArPSAkbGVuZ3RoOwoKICAgICAgICByZXR1cm4gJGNvbnRlbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgZGF0YSBpcyBub3QgYW4gaW50ZWdlcgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiByZWFkQXNuMUludGVnZXIoc3RyaW5nICRtZXNzYWdlLCBpbnQgJiRwb3NpdGlvbik6IHN0cmluZwogICAgewogICAgICAgIGlmIChzZWxmOjpBU04xX0lOVEVHRVIgIT09IHNlbGY6OnJlYWRBc24xQ29udGVudCgkbWVzc2FnZSwgJHBvc2l0aW9uLCBzZWxmOjpCWVRFX1NJWkUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgZGF0YS4gU2hvdWxkIGNvbnRhaW4gYW4gaW50ZWdlci4nKTsKICAgICAgICB9CgogICAgICAgICRsZW5ndGggPSAoaW50KSBoZXhkZWMoc2VsZjo6cmVhZEFzbjFDb250ZW50KCRtZXNzYWdlLCAkcG9zaXRpb24sIHNlbGY6OkJZVEVfU0laRSkpOwoKICAgICAgICByZXR1cm4gc2VsZjo6cmVhZEFzbjFDb250ZW50KCRtZXNzYWdlLCAkcG9zaXRpb24sICRsZW5ndGggKiBzZWxmOjpCWVRFX1NJWkUpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHJldHJpZXZlUG9zaXRpdmVJbnRlZ2VyKHN0cmluZyAkZGF0YSk6IHN0cmluZwogICAgewogICAgICAgIHdoaWxlICgwID09PSBtYl9zdHJwb3MoJGRhdGEsIHNlbGY6OkFTTjFfTkVHQVRJVkVfSU5URUdFUiwgMCwgJzhiaXQnKQogICAgICAgICAgICAmJiBtYl9zdWJzdHIoJGRhdGEsIDIsIHNlbGY6OkJZVEVfU0laRSwgJzhiaXQnKSA+IHNlbGY6OkFTTjFfQklHX0lOVEVHRVJfTElNSVQpIHsKICAgICAgICAgICAgJGRhdGEgPSBtYl9zdWJzdHIoJGRhdGEsIDIsIG51bGwsICc4Yml0Jyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGRhdGE7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Util/Hash.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbDsKCi8qKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIEhhc2gKewogICAgLyoqCiAgICAgKiBIYXNoIFBhcmFtZXRlci4KICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRoYXNoOwoKICAgIC8qKgogICAgICogREVSIGVuY29kaW5nIFQuCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkdDsKCiAgICAvKioKICAgICAqIEhhc2ggTGVuZ3RoLgogICAgICoKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByaXZhdGUgJGxlbmd0aDsKCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkaGFzaCwgaW50ICRsZW5ndGgsIHN0cmluZyAkdCkKICAgIHsKICAgICAgICAkdGhpcy0+aGFzaCA9ICRoYXNoOwogICAgICAgICR0aGlzLT5sZW5ndGggPSAkbGVuZ3RoOwogICAgICAgICR0aGlzLT50ID0gJHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIEhhc2gKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaGExKCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJ3NoYTEnLCAyMCwgIlx4MzBceDIxXHgzMFx4MDlceDA2XHgwNVx4MmJceDBlXHgwM1x4MDJceDFhXHgwNVx4MDBceDA0XHgxNCIpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBIYXNoCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2hhMjU2KCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJ3NoYTI1NicsIDMyLCAiXHgzMFx4MzFceDMwXHgwZFx4MDZceDA5XHg2MFx4ODZceDQ4XHgwMVx4NjVceDAzXHgwNFx4MDJceDAxXHgwNVx4MDBceDA0XHgyMCIpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBIYXNoCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2hhMzg0KCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJ3NoYTM4NCcsIDQ4LCAiXHgzMFx4NDFceDMwXHgwZFx4MDZceDA5XHg2MFx4ODZceDQ4XHgwMVx4NjVceDAzXHgwNFx4MDJceDAyXHgwNVx4MDBceDA0XHgzMCIpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBIYXNoCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2hhNTEyKCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJ3NoYTUxMicsIDY0LCAiXHgzMFx4NTFceDMwXHgwZFx4MDZceDA5XHg2MFx4ODZceDQ4XHgwMVx4NjVceDAzXHgwNFx4MDJceDAzXHgwNVx4MDBceDA0XHg0MCIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMZW5ndGgoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5sZW5ndGg7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21wdXRlIHRoZSBITUFDLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzaChzdHJpbmcgJHRleHQpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gaGFzaCgkdGhpcy0+aGFzaCwgJHRleHQsIHRydWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBuYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aGFzaDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Util/JsonConverter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbDsKCnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBmdW5jdGlvbiBpc19zdHJpbmc7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwp1c2UgVGhyb3dhYmxlOwoKZmluYWwgY2xhc3MgSnNvbkNvbnZlcnRlcgp7CiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkcGF5bG9hZAogICAgICoKICAgICAqIEB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbiBpZiB0aGUgcGF5bG9hZCBjYW5ub3QgYmUgZW5jb2RlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY29kZSgkcGF5bG9hZCk6IHN0cmluZwogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRkYXRhID0ganNvbl9lbmNvZGUoJHBheWxvYWQsIEpTT05fVU5FU0NBUEVEX1NMQVNIRVMgfCBKU09OX1VORVNDQVBFRF9VTklDT0RFKTsKICAgICAgICAgICAgaWYgKCFpc19zdHJpbmcoJGRhdGEpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gZW5jb2RlIHRoZSBkYXRhJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkZGF0YTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJHRocm93YWJsZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignSW52YWxpZCBjb250ZW50LicsICR0aHJvd2FibGUtPmdldENvZGUoKSwgJHRocm93YWJsZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBwYXlsb2FkIGNhbm5vdCBiZSBkZWNvZGVkCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlY29kZShzdHJpbmcgJHBheWxvYWQpCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIGpzb25fZGVjb2RlKCRwYXlsb2FkLCB0cnVlLCA1MTIsIEpTT05fVU5FU0NBUEVEX1NMQVNIRVMgfCBKU09OX1VORVNDQVBFRF9VTklDT0RFKTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJHRocm93YWJsZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignSW52YWxpZCBjb250ZW50LicsICR0aHJvd2FibGUtPmdldENvZGUoKSwgJHRocm93YWJsZSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Util/KeyChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbDsKCnVzZSBmdW5jdGlvbiBpbl9hcnJheTsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIGZ1bmN0aW9uIGlzX2FycmF5Owp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CgovKioKICogQGludGVybmFsCiAqLwpjbGFzcyBLZXlDaGVja2VyCnsKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hlY2tLZXlVc2FnZShKV0sgJGtleSwgc3RyaW5nICR1c2FnZSk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJGtleS0+aGFzKCd1c2UnKSkgewogICAgICAgICAgICBzZWxmOjpjaGVja1VzYWdlKCRrZXksICR1c2FnZSk7CiAgICAgICAgfQogICAgICAgIGlmICgka2V5LT5oYXMoJ2tleV9vcHMnKSkgewogICAgICAgICAgICBzZWxmOjpjaGVja09wZXJhdGlvbigka2V5LCAkdXNhZ2UpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgaXMgbm90IHN1aXRhYmxlIGZvciB0aGUgc2VsZWN0ZWQgYWxnb3JpdGhtCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hlY2tLZXlBbGdvcml0aG0oSldLICRrZXksIHN0cmluZyAkYWxnb3JpdGhtKTogdm9pZAogICAgewogICAgICAgIGlmICghJGtleS0+aGFzKCdhbGcnKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICgka2V5LT5nZXQoJ2FsZycpICE9PSAkYWxnb3JpdGhtKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignS2V5IGlzIG9ubHkgYWxsb3dlZCBmb3IgYWxnb3JpdGhtICIlcyIuJywgJGtleS0+Z2V0KCdhbGcnKSkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgaXMgbm90IHN1aXRhYmxlIGZvciB0aGUgc2VsZWN0ZWQgb3BlcmF0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNoZWNrT3BlcmF0aW9uKEpXSyAka2V5LCBzdHJpbmcgJHVzYWdlKTogdm9pZAogICAgewogICAgICAgICRvcHMgPSAka2V5LT5nZXQoJ2tleV9vcHMnKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRvcHMpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQga2V5IHBhcmFtZXRlciAia2V5X29wcyIuIFNob3VsZCBiZSBhIGxpc3Qgb2Yga2V5IG9wZXJhdGlvbnMnKTsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCAoJHVzYWdlKSB7CiAgICAgICAgICAgIGNhc2UgJ3ZlcmlmaWNhdGlvbic6CiAgICAgICAgICAgICAgICBpZiAoIWluX2FycmF5KCd2ZXJpZnknLCAkb3BzLCB0cnVlKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0tleSBjYW5ub3QgYmUgdXNlZCB0byB2ZXJpZnkgYSBzaWduYXR1cmUnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ3NpZ25hdHVyZSc6CiAgICAgICAgICAgICAgICBpZiAoIWluX2FycmF5KCdzaWduJywgJG9wcywgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdLZXkgY2Fubm90IGJlIHVzZWQgdG8gc2lnbicpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnZW5jcnlwdGlvbic6CiAgICAgICAgICAgICAgICBpZiAoIWluX2FycmF5KCdlbmNyeXB0JywgJG9wcywgdHJ1ZSkgJiYgIWluX2FycmF5KCd3cmFwS2V5JywgJG9wcywgdHJ1ZSkgJiYgIWluX2FycmF5KCdkZXJpdmVLZXknLCAkb3BzLCB0cnVlKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0tleSBjYW5ub3QgYmUgdXNlZCB0byBlbmNyeXB0Jyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdkZWNyeXB0aW9uJzoKICAgICAgICAgICAgICAgIGlmICghaW5fYXJyYXkoJ2RlY3J5cHQnLCAkb3BzLCB0cnVlKSAmJiAhaW5fYXJyYXkoJ3Vud3JhcEtleScsICRvcHMsIHRydWUpICYmICFpbl9hcnJheSgnZGVyaXZlQml0cycsICRvcHMsIHRydWUpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignS2V5IGNhbm5vdCBiZSB1c2VkIHRvIGRlY3J5cHQnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBrZXkgdXNhZ2UuJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBpcyBub3Qgc3VpdGFibGUgZm9yIHRoZSBzZWxlY3RlZCBvcGVyYXRpb24KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY2hlY2tVc2FnZShKV0sgJGtleSwgc3RyaW5nICR1c2FnZSk6IHZvaWQKICAgIHsKICAgICAgICAkdXNlID0gJGtleS0+Z2V0KCd1c2UnKTsKCiAgICAgICAgc3dpdGNoICgkdXNhZ2UpIHsKICAgICAgICAgICAgY2FzZSAndmVyaWZpY2F0aW9uJzoKICAgICAgICAgICAgY2FzZSAnc2lnbmF0dXJlJzoKICAgICAgICAgICAgICAgIGlmICgnc2lnJyAhPT0gJHVzZSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0tleSBjYW5ub3QgYmUgdXNlZCB0byBzaWduIG9yIHZlcmlmeSBhIHNpZ25hdHVyZS4nKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ2VuY3J5cHRpb24nOgogICAgICAgICAgICBjYXNlICdkZWNyeXB0aW9uJzoKICAgICAgICAgICAgICAgIGlmICgnZW5jJyAhPT0gJHVzZSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0tleSBjYW5ub3QgYmUgdXNlZCB0byBlbmNyeXB0IG9yIGRlY3J5cHQuJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQga2V5IHVzYWdlLicpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Util/RSAKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbDsKCnVzZSBmdW5jdGlvbiBhcnJheV9rZXlfZXhpc3RzOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIGZ1bmN0aW9uIGNvdW50Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcQml0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSW50ZWdlcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE51bGxPYmplY3Q7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2N0ZXRTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIGZ1bmN0aW9uIGlzX2FycmF5Owp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgUlNBS2V5CnsKICAgIC8qKgogICAgICogQHZhciBTZXF1ZW5jZQogICAgICovCiAgICBwcml2YXRlICRzZXF1ZW5jZTsKCiAgICAvKioKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwcml2YXRlICRwcml2YXRlOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlICR2YWx1ZXM7CgogICAgLyoqCiAgICAgKiBAdmFyIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkbW9kdWx1czsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByaXZhdGUgJG1vZHVsdXNfbGVuZ3RoOwoKICAgIC8qKgogICAgICogQHZhciBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgJHB1YmxpY19leHBvbmVudDsKCiAgICAvKioKICAgICAqIEB2YXIgbnVsbHxCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgJHByaXZhdGVfZXhwb25lbnQ7CgogICAgLyoqCiAgICAgKiBAdmFyIEJpZ0ludGVnZXJbXQogICAgICovCiAgICBwcml2YXRlICRwcmltZXMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgQmlnSW50ZWdlcltdCiAgICAgKi8KICAgIHByaXZhdGUgJGV4cG9uZW50cyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBudWxsfEJpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkY29lZmZpY2llbnQ7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdChKV0sgJGRhdGEpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlcyA9ICRkYXRhLT5hbGwoKTsKICAgICAgICAkdGhpcy0+cG9wdWxhdGVCaWdJbnRlZ2VycygpOwogICAgICAgICR0aGlzLT5wcml2YXRlID0gYXJyYXlfa2V5X2V4aXN0cygnZCcsICR0aGlzLT52YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBSU0FLZXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tSldLKEpXSyAkandrKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZigkandrKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TW9kdWx1cygpOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5tb2R1bHVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNb2R1bHVzTGVuZ3RoKCk6IGludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bW9kdWx1c19sZW5ndGg7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEV4cG9uZW50KCk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICAkZCA9ICR0aGlzLT5nZXRQcml2YXRlRXhwb25lbnQoKTsKICAgICAgICBpZiAobnVsbCAhPT0gJGQpIHsKICAgICAgICAgICAgcmV0dXJuICRkOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRQdWJsaWNFeHBvbmVudCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQdWJsaWNFeHBvbmVudCgpOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wdWJsaWNfZXhwb25lbnQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFByaXZhdGVFeHBvbmVudCgpOiA/QmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cHJpdmF0ZV9leHBvbmVudDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcltdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcmltZXMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByaW1lczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcltdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFeHBvbmVudHMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmV4cG9uZW50czsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29lZmZpY2llbnQoKTogP0JpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvZWZmaWNpZW50OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1B1YmxpYygpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICFhcnJheV9rZXlfZXhpc3RzKCdkJywgJHRoaXMtPnZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUlNBS2V5ICRwcml2YXRlCiAgICAgKgogICAgICogQHJldHVybiBSU0FLZXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0b1B1YmxpYyhzZWxmICRwcml2YXRlKTogc2VsZgogICAgewogICAgICAgICRkYXRhID0gJHByaXZhdGUtPnRvQXJyYXkoKTsKICAgICAgICAka2V5cyA9IFsncCcsICdkJywgJ3EnLCAnZHAnLCAnZHEnLCAncWknXTsKICAgICAgICBmb3JlYWNoICgka2V5cyBhcyAka2V5KSB7CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRrZXksICRkYXRhKSkgewogICAgICAgICAgICAgICAgdW5zZXQoJGRhdGFbJGtleV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IHNlbGYobmV3IEpXSygkZGF0YSkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0b0FycmF5KCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRvUEVNKCk6IHN0cmluZwogICAgewogICAgICAgIGlmIChudWxsID09PSAkdGhpcy0+c2VxdWVuY2UpIHsKICAgICAgICAgICAgJHRoaXMtPnNlcXVlbmNlID0gbmV3IFNlcXVlbmNlKCk7CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdkJywgJHRoaXMtPnZhbHVlcykpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5pbml0UHJpdmF0ZUtleSgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPmluaXRQdWJsaWNLZXkoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkcmVzdWx0ID0gJy0tLS0tQkVHSU4gJy4oJHRoaXMtPnByaXZhdGUgPyAnUlNBIFBSSVZBVEUnIDogJ1BVQkxJQycpLicgS0VZLS0tLS0nLlBIUF9FT0w7CiAgICAgICAgJHJlc3VsdCAuPSBjaHVua19zcGxpdChiYXNlNjRfZW5jb2RlKCR0aGlzLT5zZXF1ZW5jZS0+Z2V0QmluYXJ5KCkpLCA2NCwgUEhQX0VPTCk7CiAgICAgICAgJHJlc3VsdCAuPSAnLS0tLS1FTkQgJy4oJHRoaXMtPnByaXZhdGUgPyAnUlNBIFBSSVZBVEUnIDogJ1BVQkxJQycpLicgS0VZLS0tLS0nLlBIUF9FT0w7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogRXhwb25lbnRpYXRlIHdpdGggb3Igd2l0aG91dCBDaGluZXNlIFJlbWFpbmRlciBUaGVvcmVtLgogICAgICogT3BlcmF0aW9uIHdpdGggcHJpbWVzICdwJyBhbmQgJ3EnIGlzIGFwcG94LiAyeCBmYXN0ZXIuCiAgICAgKgogICAgICogQHBhcmFtIFJTQUtleSAka2V5CiAgICAgKgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBleHBvbmVudGlhdGlvbiBjYW5ub3QgYmUgYWNoaWV2ZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBleHBvbmVudGlhdGUoc2VsZiAka2V5LCBCaWdJbnRlZ2VyICRjKTogQmlnSW50ZWdlcgogICAgewogICAgICAgIGlmICgkYy0+Y29tcGFyZShCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tRGVjaW1hbCgwKSkgPCAwIHx8ICRjLT5jb21wYXJlKCRrZXktPmdldE1vZHVsdXMoKSkgPiAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCk7CiAgICAgICAgfQogICAgICAgIGlmICgka2V5LT5pc1B1YmxpYygpIHx8IG51bGwgPT09ICRrZXktPmdldENvZWZmaWNpZW50KCkgfHwgMCA9PT0gY291bnQoJGtleS0+Z2V0UHJpbWVzKCkpIHx8IDAgPT09IGNvdW50KCRrZXktPmdldEV4cG9uZW50cygpKSkgewogICAgICAgICAgICByZXR1cm4gJGMtPm1vZFBvdygka2V5LT5nZXRFeHBvbmVudCgpLCAka2V5LT5nZXRNb2R1bHVzKCkpOwogICAgICAgIH0KCiAgICAgICAgJHAgPSAka2V5LT5nZXRQcmltZXMoKVswXTsKICAgICAgICAkcSA9ICRrZXktPmdldFByaW1lcygpWzFdOwogICAgICAgICRkUCA9ICRrZXktPmdldEV4cG9uZW50cygpWzBdOwogICAgICAgICRkUSA9ICRrZXktPmdldEV4cG9uZW50cygpWzFdOwogICAgICAgICRxSW52ID0gJGtleS0+Z2V0Q29lZmZpY2llbnQoKTsKCiAgICAgICAgJG0xID0gJGMtPm1vZFBvdygkZFAsICRwKTsKICAgICAgICAkbTIgPSAkYy0+bW9kUG93KCRkUSwgJHEpOwogICAgICAgICRoID0gJHFJbnYtPm11bHRpcGx5KCRtMS0+c3VidHJhY3QoJG0yKS0+YWRkKCRwKSktPm1vZCgkcCk7CgogICAgICAgIHJldHVybiAkbTItPmFkZCgkaC0+bXVsdGlwbHkoJHEpKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHBvcHVsYXRlQmlnSW50ZWdlcnMoKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5tb2R1bHVzID0gJHRoaXMtPmNvbnZlcnRCYXNlNjRTdHJpbmdUb0JpZ0ludGVnZXIoJHRoaXMtPnZhbHVlc1snbiddKTsKICAgICAgICAkdGhpcy0+bW9kdWx1c19sZW5ndGggPSBtYl9zdHJsZW4oJHRoaXMtPmdldE1vZHVsdXMoKS0+dG9CeXRlcygpLCAnOGJpdCcpOwogICAgICAgICR0aGlzLT5wdWJsaWNfZXhwb25lbnQgPSAkdGhpcy0+Y29udmVydEJhc2U2NFN0cmluZ1RvQmlnSW50ZWdlcigkdGhpcy0+dmFsdWVzWydlJ10pOwoKICAgICAgICBpZiAoISR0aGlzLT5pc1B1YmxpYygpKSB7CiAgICAgICAgICAgICR0aGlzLT5wcml2YXRlX2V4cG9uZW50ID0gJHRoaXMtPmNvbnZlcnRCYXNlNjRTdHJpbmdUb0JpZ0ludGVnZXIoJHRoaXMtPnZhbHVlc1snZCddKTsKCiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdwJywgJHRoaXMtPnZhbHVlcykgJiYgYXJyYXlfa2V5X2V4aXN0cygncScsICR0aGlzLT52YWx1ZXMpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+cHJpbWVzID0gWwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5jb252ZXJ0QmFzZTY0U3RyaW5nVG9CaWdJbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ3AnXSksCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvbnZlcnRCYXNlNjRTdHJpbmdUb0JpZ0ludGVnZXIoJHRoaXMtPnZhbHVlc1sncSddKSwKICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnZHAnLCAkdGhpcy0+dmFsdWVzKSAmJiBhcnJheV9rZXlfZXhpc3RzKCdkcScsICR0aGlzLT52YWx1ZXMpICYmIGFycmF5X2tleV9leGlzdHMoJ3FpJywgJHRoaXMtPnZhbHVlcykpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZXhwb25lbnRzID0gWwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y29udmVydEJhc2U2NFN0cmluZ1RvQmlnSW50ZWdlcigkdGhpcy0+dmFsdWVzWydkcCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvbnZlcnRCYXNlNjRTdHJpbmdUb0JpZ0ludGVnZXIoJHRoaXMtPnZhbHVlc1snZHEnXSksCiAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y29lZmZpY2llbnQgPSAkdGhpcy0+Y29udmVydEJhc2U2NFN0cmluZ1RvQmlnSW50ZWdlcigkdGhpcy0+dmFsdWVzWydxaSddKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNvbnZlcnRCYXNlNjRTdHJpbmdUb0JpZ0ludGVnZXIoc3RyaW5nICR2YWx1ZSk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbUJpbmFyeVN0cmluZyhCYXNlNjRVcmw6OmRlY29kZSgkdmFsdWUpKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGluaXRQdWJsaWNLZXkoKTogdm9pZAogICAgewogICAgICAgICRvaWRfc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoKTsKICAgICAgICAkb2lkX3NlcXVlbmNlLT5hZGRDaGlsZChuZXcgT2JqZWN0SWRlbnRpZmllcignMS4yLjg0MC4xMTM1NDkuMS4xLjEnKSk7CiAgICAgICAgJG9pZF9zZXF1ZW5jZS0+YWRkQ2hpbGQobmV3IE51bGxPYmplY3QoKSk7CiAgICAgICAgJHRoaXMtPnNlcXVlbmNlLT5hZGRDaGlsZCgkb2lkX3NlcXVlbmNlKTsKICAgICAgICAkbiA9IG5ldyBJbnRlZ2VyKCR0aGlzLT5mcm9tQmFzZTY0VG9JbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ24nXSkpOwogICAgICAgICRlID0gbmV3IEludGVnZXIoJHRoaXMtPmZyb21CYXNlNjRUb0ludGVnZXIoJHRoaXMtPnZhbHVlc1snZSddKSk7CiAgICAgICAgJGtleV9zZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZSgpOwogICAgICAgICRrZXlfc2VxdWVuY2UtPmFkZENoaWxkKCRuKTsKICAgICAgICAka2V5X3NlcXVlbmNlLT5hZGRDaGlsZCgkZSk7CiAgICAgICAgJGtleV9iaXRfc3RyaW5nID0gbmV3IEJpdFN0cmluZyhiaW4yaGV4KCRrZXlfc2VxdWVuY2UtPmdldEJpbmFyeSgpKSk7CiAgICAgICAgJHRoaXMtPnNlcXVlbmNlLT5hZGRDaGlsZCgka2V5X2JpdF9zdHJpbmcpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gaW5pdFByaXZhdGVLZXkoKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5zZXF1ZW5jZS0+YWRkQ2hpbGQobmV3IEludGVnZXIoMCkpOwogICAgICAgICRvaWRfc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoKTsKICAgICAgICAkb2lkX3NlcXVlbmNlLT5hZGRDaGlsZChuZXcgT2JqZWN0SWRlbnRpZmllcignMS4yLjg0MC4xMTM1NDkuMS4xLjEnKSk7CiAgICAgICAgJG9pZF9zZXF1ZW5jZS0+YWRkQ2hpbGQobmV3IE51bGxPYmplY3QoKSk7CiAgICAgICAgJHRoaXMtPnNlcXVlbmNlLT5hZGRDaGlsZCgkb2lkX3NlcXVlbmNlKTsKICAgICAgICAkdiA9IG5ldyBJbnRlZ2VyKDApOwogICAgICAgICRuID0gbmV3IEludGVnZXIoJHRoaXMtPmZyb21CYXNlNjRUb0ludGVnZXIoJHRoaXMtPnZhbHVlc1snbiddKSk7CiAgICAgICAgJGUgPSBuZXcgSW50ZWdlcigkdGhpcy0+ZnJvbUJhc2U2NFRvSW50ZWdlcigkdGhpcy0+dmFsdWVzWydlJ10pKTsKICAgICAgICAkZCA9IG5ldyBJbnRlZ2VyKCR0aGlzLT5mcm9tQmFzZTY0VG9JbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ2QnXSkpOwogICAgICAgICRwID0gbmV3IEludGVnZXIoJHRoaXMtPmZyb21CYXNlNjRUb0ludGVnZXIoJHRoaXMtPnZhbHVlc1sncCddKSk7CiAgICAgICAgJHEgPSBuZXcgSW50ZWdlcigkdGhpcy0+ZnJvbUJhc2U2NFRvSW50ZWdlcigkdGhpcy0+dmFsdWVzWydxJ10pKTsKICAgICAgICAkZHAgPSBhcnJheV9rZXlfZXhpc3RzKCdkcCcsICR0aGlzLT52YWx1ZXMpID8gbmV3IEludGVnZXIoJHRoaXMtPmZyb21CYXNlNjRUb0ludGVnZXIoJHRoaXMtPnZhbHVlc1snZHAnXSkpIDogbmV3IEludGVnZXIoMCk7CiAgICAgICAgJGRxID0gYXJyYXlfa2V5X2V4aXN0cygnZHEnLCAkdGhpcy0+dmFsdWVzKSA/IG5ldyBJbnRlZ2VyKCR0aGlzLT5mcm9tQmFzZTY0VG9JbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ2RxJ10pKSA6IG5ldyBJbnRlZ2VyKDApOwogICAgICAgICRxaSA9IGFycmF5X2tleV9leGlzdHMoJ3FpJywgJHRoaXMtPnZhbHVlcykgPyBuZXcgSW50ZWdlcigkdGhpcy0+ZnJvbUJhc2U2NFRvSW50ZWdlcigkdGhpcy0+dmFsdWVzWydxaSddKSkgOiBuZXcgSW50ZWdlcigwKTsKICAgICAgICAka2V5X3NlcXVlbmNlID0gbmV3IFNlcXVlbmNlKCk7CiAgICAgICAgJGtleV9zZXF1ZW5jZS0+YWRkQ2hpbGQoJHYpOwogICAgICAgICRrZXlfc2VxdWVuY2UtPmFkZENoaWxkKCRuKTsKICAgICAgICAka2V5X3NlcXVlbmNlLT5hZGRDaGlsZCgkZSk7CiAgICAgICAgJGtleV9zZXF1ZW5jZS0+YWRkQ2hpbGQoJGQpOwogICAgICAgICRrZXlfc2VxdWVuY2UtPmFkZENoaWxkKCRwKTsKICAgICAgICAka2V5X3NlcXVlbmNlLT5hZGRDaGlsZCgkcSk7CiAgICAgICAgJGtleV9zZXF1ZW5jZS0+YWRkQ2hpbGQoJGRwKTsKICAgICAgICAka2V5X3NlcXVlbmNlLT5hZGRDaGlsZCgkZHEpOwogICAgICAgICRrZXlfc2VxdWVuY2UtPmFkZENoaWxkKCRxaSk7CiAgICAgICAgJGtleV9vY3RldF9zdHJpbmcgPSBuZXcgT2N0ZXRTdHJpbmcoYmluMmhleCgka2V5X3NlcXVlbmNlLT5nZXRCaW5hcnkoKSkpOwogICAgICAgICR0aGlzLT5zZXF1ZW5jZS0+YWRkQ2hpbGQoJGtleV9vY3RldF9zdHJpbmcpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZyb21CYXNlNjRUb0ludGVnZXIoJHZhbHVlKQogICAgewogICAgICAgICR1bnBhY2tlZCA9IHVucGFjaygnSConLCBCYXNlNjRVcmw6OmRlY29kZSgkdmFsdWUpKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCR1bnBhY2tlZCkgfHwgMCA9PT0gY291bnQoJHVucGFja2VkKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gZ2V0IHRoZSBwcml2YXRlIGtleScpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFxCcmlja1xNYXRoXEJpZ0ludGVnZXI6OmZyb21CYXNlKGN1cnJlbnQoJHVucGFja2VkKSwgMTYpLT50b0Jhc2UoMTApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/AlgorithmAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CgpmaW5hbCBjbGFzcyBBbGdvcml0aG1BbmFseXplciBpbXBsZW1lbnRzIEtleUFuYWx5emVyCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBhbmFseXplKEpXSyAkandrLCBNZXNzYWdlQmFnICRiYWcpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCEkandrLT5oYXMoJ2FsZycpKSB7CiAgICAgICAgICAgICRiYWctPmFkZChNZXNzYWdlOjptZWRpdW0oJ1RoZSBwYXJhbWV0ZXIgImFsZyIgc2hvdWxkIGJlIGFkZGVkLicpKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/ES256KeyAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEJyaWNrXE1hdGhcQmlnSW50ZWdlcjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEVjY1xOaXN0Q3VydmU7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwoKZmluYWwgY2xhc3MgRVMyNTZLZXlBbmFseXplciBpbXBsZW1lbnRzIEtleUFuYWx5emVyCnsKICAgIC8qKgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBjb21wb25lbnQgIndlYi10b2tlbi9qd3QtdXRpbC1lY2MiIGlzIG1pc3NpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICBpZiAoIWNsYXNzX2V4aXN0cyhOaXN0Q3VydmU6OmNsYXNzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignUGxlYXNlIGluc3RhbGwgd2ViLXRva2VuL2p3dC11dGlsLWVjYyB0byB1c2UgdGhpcyBrZXkgYW5hbHl6ZXInKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFuYWx5emUoSldLICRqd2ssIE1lc3NhZ2VCYWcgJGJhZyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJ0VDJyAhPT0gJGp3ay0+Z2V0KCdrdHknKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICghJGp3ay0+aGFzKCdjcnYnKSkgewogICAgICAgICAgICAkYmFnLT5hZGQoTWVzc2FnZTo6aGlnaCgnSW52YWxpZCBrZXkuIFRoZSBjb21wb25lbnRzICJjcnYiIGlzIG1pc3NpbmcuJykpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoJ1AtMjU2JyAhPT0gJGp3ay0+Z2V0KCdjcnYnKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICR4ID0gQmFzZTY0VXJsOjpkZWNvZGUoJGp3ay0+Z2V0KCd4JykpOwogICAgICAgICR4TGVuZ3RoID0gOCAqIG1iX3N0cmxlbigkeCwgJzhiaXQnKTsKICAgICAgICAkeSA9IEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgneScpKTsKICAgICAgICAkeUxlbmd0aCA9IDggKiBtYl9zdHJsZW4oJHksICc4Yml0Jyk7CiAgICAgICAgaWYgKCR5TGVuZ3RoICE9PSAkeExlbmd0aCB8fCAyNTYgIT09ICR5TGVuZ3RoKSB7CiAgICAgICAgICAgICRiYWctPmFkZChNZXNzYWdlOjpoaWdoKCdJbnZhbGlkIGtleS4gVGhlIGNvbXBvbmVudHMgIngiIGFuZCAieSIgc2l6ZSBzaGFsbCBiZSAyNTYgYml0cy4nKSk7CiAgICAgICAgfQogICAgICAgICR4QkkgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZShiaW4yaGV4KCR4KSwgMTYpOwogICAgICAgICR5QkkgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZShiaW4yaGV4KCR5KSwgMTYpOwogICAgICAgICRjdXJ2ZSA9IE5pc3RDdXJ2ZTo6Y3VydmUyNTYoKTsKICAgICAgICBpZiAoISRjdXJ2ZS0+Y29udGFpbnMoJHhCSSwgJHlCSSkpIHsKICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goJ0ludmFsaWQga2V5LiBUaGUgcG9pbnQgaXMgbm90IG9uIHRoZSBjdXJ2ZS4nKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/ES384KeyAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEJyaWNrXE1hdGhcQmlnSW50ZWdlcjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEVjY1xOaXN0Q3VydmU7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwoKZmluYWwgY2xhc3MgRVMzODRLZXlBbmFseXplciBpbXBsZW1lbnRzIEtleUFuYWx5emVyCnsKICAgIC8qKgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBjb21wb25lbnQgIndlYi10b2tlbi9qd3QtdXRpbC1lY2MiIGlzIG1pc3NpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICBpZiAoIWNsYXNzX2V4aXN0cyhOaXN0Q3VydmU6OmNsYXNzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignUGxlYXNlIGluc3RhbGwgd2ViLXRva2VuL2p3dC11dGlsLWVjYyB0byB1c2UgdGhpcyBrZXkgYW5hbHl6ZXInKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFuYWx5emUoSldLICRqd2ssIE1lc3NhZ2VCYWcgJGJhZyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJ0VDJyAhPT0gJGp3ay0+Z2V0KCdrdHknKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICghJGp3ay0+aGFzKCdjcnYnKSkgewogICAgICAgICAgICAkYmFnLT5hZGQoTWVzc2FnZTo6aGlnaCgnSW52YWxpZCBrZXkuIFRoZSBjb21wb25lbnRzICJjcnYiIGlzIG1pc3NpbmcuJykpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoJ1AtMzg0JyAhPT0gJGp3ay0+Z2V0KCdjcnYnKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICR4ID0gQmFzZTY0VXJsOjpkZWNvZGUoJGp3ay0+Z2V0KCd4JykpOwogICAgICAgICR4TGVuZ3RoID0gOCAqIG1iX3N0cmxlbigkeCwgJzhiaXQnKTsKICAgICAgICAkeSA9IEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgneScpKTsKICAgICAgICAkeUxlbmd0aCA9IDggKiBtYl9zdHJsZW4oJHksICc4Yml0Jyk7CiAgICAgICAgaWYgKCR5TGVuZ3RoICE9PSAkeExlbmd0aCB8fCAzODQgIT09ICR5TGVuZ3RoKSB7CiAgICAgICAgICAgICRiYWctPmFkZChNZXNzYWdlOjpoaWdoKCdJbnZhbGlkIGtleS4gVGhlIGNvbXBvbmVudHMgIngiIGFuZCAieSIgc2l6ZSBzaGFsbCBiZSAzODQgYml0cy4nKSk7CiAgICAgICAgfQogICAgICAgICR4QkkgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZShiaW4yaGV4KCR4KSwgMTYpOwogICAgICAgICR5QkkgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZShiaW4yaGV4KCR5KSwgMTYpOwogICAgICAgICRjdXJ2ZSA9IE5pc3RDdXJ2ZTo6Y3VydmUzODQoKTsKICAgICAgICBpZiAoISRjdXJ2ZS0+Y29udGFpbnMoJHhCSSwgJHlCSSkpIHsKICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goJ0ludmFsaWQga2V5LiBUaGUgcG9pbnQgaXMgbm90IG9uIHRoZSBjdXJ2ZS4nKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/ES512KeyAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEJyaWNrXE1hdGhcQmlnSW50ZWdlcjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEVjY1xOaXN0Q3VydmU7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwoKZmluYWwgY2xhc3MgRVM1MTJLZXlBbmFseXplciBpbXBsZW1lbnRzIEtleUFuYWx5emVyCnsKICAgIC8qKgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBjb21wb25lbnQgIndlYi10b2tlbi9qd3QtdXRpbC1lY2MiIGlzIG1pc3NpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICBpZiAoIWNsYXNzX2V4aXN0cyhOaXN0Q3VydmU6OmNsYXNzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignUGxlYXNlIGluc3RhbGwgd2ViLXRva2VuL2p3dC11dGlsLWVjYyB0byB1c2UgdGhpcyBrZXkgYW5hbHl6ZXInKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFuYWx5emUoSldLICRqd2ssIE1lc3NhZ2VCYWcgJGJhZyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJ0VDJyAhPT0gJGp3ay0+Z2V0KCdrdHknKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICghJGp3ay0+aGFzKCdjcnYnKSkgewogICAgICAgICAgICAkYmFnLT5hZGQoTWVzc2FnZTo6aGlnaCgnSW52YWxpZCBrZXkuIFRoZSBjb21wb25lbnRzICJjcnYiIGlzIG1pc3NpbmcuJykpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoJ1AtNTIxJyAhPT0gJGp3ay0+Z2V0KCdjcnYnKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICR4ID0gQmFzZTY0VXJsOjpkZWNvZGUoJGp3ay0+Z2V0KCd4JykpOwogICAgICAgICR4TGVuZ3RoID0gOCAqIG1iX3N0cmxlbigkeCwgJzhiaXQnKTsKICAgICAgICAkeSA9IEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgneScpKTsKICAgICAgICAkeUxlbmd0aCA9IDggKiBtYl9zdHJsZW4oJHksICc4Yml0Jyk7CiAgICAgICAgaWYgKCR5TGVuZ3RoICE9PSAkeExlbmd0aCB8fCA1MjggIT09ICR5TGVuZ3RoKSB7CiAgICAgICAgICAgICRiYWctPmFkZChNZXNzYWdlOjpoaWdoKCdJbnZhbGlkIGtleS4gVGhlIGNvbXBvbmVudHMgIngiIGFuZCAieSIgc2l6ZSBzaGFsbCBiZSA1MjggYml0cy4nKSk7CiAgICAgICAgfQogICAgICAgICR4QkkgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZShiaW4yaGV4KCR4KSwgMTYpOwogICAgICAgICR5QkkgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZShiaW4yaGV4KCR5KSwgMTYpOwogICAgICAgICRjdXJ2ZSA9IE5pc3RDdXJ2ZTo6Y3VydmU1MjEoKTsKICAgICAgICBpZiAoISRjdXJ2ZS0+Y29udGFpbnMoJHhCSSwgJHlCSSkpIHsKICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goJ0ludmFsaWQga2V5LiBUaGUgcG9pbnQgaXMgbm90IG9uIHRoZSBjdXJ2ZS4nKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/HS256KeyAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwoKZmluYWwgY2xhc3MgSFMyNTZLZXlBbmFseXplciBpbXBsZW1lbnRzIEtleUFuYWx5emVyCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBhbmFseXplKEpXSyAkandrLCBNZXNzYWdlQmFnICRiYWcpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCdvY3QnICE9PSAkandrLT5nZXQoJ2t0eScpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKCEkandrLT5oYXMoJ2FsZycpIHx8ICdIUzI1NicgIT09ICRqd2stPmdldCgnYWxnJykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkayA9IEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgnaycpKTsKICAgICAgICAka0xlbmd0aCA9IDggKiBtYl9zdHJsZW4oJGssICc4Yml0Jyk7CiAgICAgICAgaWYgKCRrTGVuZ3RoIDwgMjU2KSB7CiAgICAgICAgICAgICRiYWctPmFkZChNZXNzYWdlOjpoaWdoKCdIUzI1NiBhbGdvcml0aG0gcmVxdWlyZXMgYXQgbGVhc3QgMjU2IGJpdHMga2V5IGxlbmd0aC4nKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/HS384KeyAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwoKZmluYWwgY2xhc3MgSFMzODRLZXlBbmFseXplciBpbXBsZW1lbnRzIEtleUFuYWx5emVyCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBhbmFseXplKEpXSyAkandrLCBNZXNzYWdlQmFnICRiYWcpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCdvY3QnICE9PSAkandrLT5nZXQoJ2t0eScpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKCEkandrLT5oYXMoJ2FsZycpIHx8ICdIUzM4NCcgIT09ICRqd2stPmdldCgnYWxnJykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkayA9IEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgnaycpKTsKICAgICAgICAka0xlbmd0aCA9IDggKiBtYl9zdHJsZW4oJGssICc4Yml0Jyk7CiAgICAgICAgaWYgKCRrTGVuZ3RoIDwgMzg0KSB7CiAgICAgICAgICAgICRiYWctPmFkZChNZXNzYWdlOjpoaWdoKCdIUzM4NCBhbGdvcml0aG0gcmVxdWlyZXMgYXQgbGVhc3QgMzg0IGJpdHMga2V5IGxlbmd0aC4nKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/HS512KeyAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwoKZmluYWwgY2xhc3MgSFM1MTJLZXlBbmFseXplciBpbXBsZW1lbnRzIEtleUFuYWx5emVyCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBhbmFseXplKEpXSyAkandrLCBNZXNzYWdlQmFnICRiYWcpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCdvY3QnICE9PSAkandrLT5nZXQoJ2t0eScpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKCEkandrLT5oYXMoJ2FsZycpIHx8ICdIUzUxMicgIT09ICRqd2stPmdldCgnYWxnJykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkayA9IEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgnaycpKTsKICAgICAgICAka0xlbmd0aCA9IDggKiBtYl9zdHJsZW4oJGssICc4Yml0Jyk7CiAgICAgICAgaWYgKCRrTGVuZ3RoIDwgNTEyKSB7CiAgICAgICAgICAgICRiYWctPmFkZChNZXNzYWdlOjpoaWdoKCdIUzUxMiBhbGdvcml0aG0gcmVxdWlyZXMgYXQgbGVhc3QgNTEyIGJpdHMga2V5IGxlbmd0aC4nKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/KeyAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CgppbnRlcmZhY2UgS2V5QW5hbHl6ZXIKewogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGFuYWx5c2UgdGhlIGtleSBhbmQgYWRkIG1lc3NhZ2VzIHRvIHRoZSBtZXNzYWdlIGJhZyBpZiBuZWVkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhbmFseXplKEpXSyAkandrLCBNZXNzYWdlQmFnICRiYWcpOiB2b2lkOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/KeyAnalyzerManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CgpjbGFzcyBLZXlBbmFseXplck1hbmFnZXIKewogICAgLyoqCiAgICAgKiBAdmFyIEtleUFuYWx5emVyW10KICAgICAqLwogICAgcHJpdmF0ZSAkYW5hbHl6ZXJzID0gW107CgogICAgLyoqCiAgICAgKiBBZGRzIGEgS2V5IEFuYWx5emVyIHRvIHRoZSBtYW5hZ2VyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKEtleUFuYWx5emVyICRhbmFseXplcik6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+YW5hbHl6ZXJzW10gPSAkYW5hbHl6ZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGFuYWx5emUgdGhlIEpXSyBvYmplY3QgdXNpbmcgYWxsIGFuYWx5emVycy4KICAgICAqIEl0IHJldHVybnMgYSBtZXNzYWdlIGJhZyB0aGF0IG1heSBjb250YWlucyBtZXNzYWdlcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFuYWx5emUoSldLICRqd2spOiBNZXNzYWdlQmFnCiAgICB7CiAgICAgICAgJGJhZyA9IG5ldyBNZXNzYWdlQmFnKCk7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmFuYWx5emVycyBhcyAkYW5hbHl6ZXIpIHsKICAgICAgICAgICAgJGFuYWx5emVyLT5hbmFseXplKCRqd2ssICRiYWcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRiYWc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/KeyIdentifierAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CgpmaW5hbCBjbGFzcyBLZXlJZGVudGlmaWVyQW5hbHl6ZXIgaW1wbGVtZW50cyBLZXlBbmFseXplcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gYW5hbHl6ZShKV0sgJGp3aywgTWVzc2FnZUJhZyAkYmFnKTogdm9pZAogICAgewogICAgICAgIGlmICghJGp3ay0+aGFzKCdraWQnKSkgewogICAgICAgICAgICAkYmFnLT5hZGQoTWVzc2FnZTo6bWVkaXVtKCdUaGUgcGFyYW1ldGVyICJraWQiIHNob3VsZCBiZSBhZGRlZC4nKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/KeysetAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0tTZXQ7CgppbnRlcmZhY2UgS2V5c2V0QW5hbHl6ZXIKewogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGFuYWx5c2UgdGhlIGtleSBzZXQgYW5kIGFkZCBtZXNzYWdlcyB0byB0aGUgbWVzc2FnZSBiYWcgaWYgbmVlZGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYW5hbHl6ZShKV0tTZXQgJEpXS1NldCwgTWVzc2FnZUJhZyAkYmFnKTogdm9pZDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/KeysetAnalyzerManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0tTZXQ7CgpjbGFzcyBLZXlzZXRBbmFseXplck1hbmFnZXIKewogICAgLyoqCiAgICAgKiBAdmFyIEtleXNldEFuYWx5emVyW10KICAgICAqLwogICAgcHJpdmF0ZSAkYW5hbHl6ZXJzID0gW107CgogICAgLyoqCiAgICAgKiBBZGRzIGEgS2V5c2V0IEFuYWx5emVyIHRvIHRoZSBtYW5hZ2VyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKEtleXNldEFuYWx5emVyICRhbmFseXplcik6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+YW5hbHl6ZXJzW10gPSAkYW5hbHl6ZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGFuYWx5emUgdGhlIEpXS1NldCBvYmplY3QgdXNpbmcgYWxsIGFuYWx5emVycy4KICAgICAqIEl0IHJldHVybnMgYSBtZXNzYWdlIGJhZyB0aGF0IG1heSBjb250YWlucyBtZXNzYWdlcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFuYWx5emUoSldLU2V0ICRqd2tzZXQpOiBNZXNzYWdlQmFnCiAgICB7CiAgICAgICAgJGJhZyA9IG5ldyBNZXNzYWdlQmFnKCk7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmFuYWx5emVycyBhcyAkYW5hbHl6ZXIpIHsKICAgICAgICAgICAgJGFuYWx5emVyLT5hbmFseXplKCRqd2tzZXQsICRiYWcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRiYWc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/Message.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSnNvblNlcmlhbGl6YWJsZTsKCmNsYXNzIE1lc3NhZ2UgaW1wbGVtZW50cyBKc29uU2VyaWFsaXphYmxlCnsKICAgIHB1YmxpYyBjb25zdCBTRVZFUklUWV9MT1cgPSAnbG93JzsKCiAgICBwdWJsaWMgY29uc3QgU0VWRVJJVFlfTUVESVVNID0gJ21lZGl1bSc7CgogICAgcHVibGljIGNvbnN0IFNFVkVSSVRZX0hJR0ggPSAnaGlnaCc7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJG1lc3NhZ2U7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRzZXZlcml0eTsKCiAgICAvKioKICAgICAqIE1lc3NhZ2UgY29uc3RydWN0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICRtZXNzYWdlLCBzdHJpbmcgJHNldmVyaXR5KQogICAgewogICAgICAgICR0aGlzLT5tZXNzYWdlID0gJG1lc3NhZ2U7CiAgICAgICAgJHRoaXMtPnNldmVyaXR5ID0gJHNldmVyaXR5OwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIG1lc3NhZ2Ugd2l0aCBzZXZlcml0eT1sb3cuCiAgICAgKgogICAgICogQHJldHVybiBNZXNzYWdlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG93KHN0cmluZyAkbWVzc2FnZSk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJG1lc3NhZ2UsIHNlbGY6OlNFVkVSSVRZX0xPVyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbWVzc2FnZSB3aXRoIHNldmVyaXR5PW1lZGl1bS4KICAgICAqCiAgICAgKiBAcmV0dXJuIE1lc3NhZ2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtZWRpdW0oc3RyaW5nICRtZXNzYWdlKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZigkbWVzc2FnZSwgc2VsZjo6U0VWRVJJVFlfTUVESVVNKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBtZXNzYWdlIHdpdGggc2V2ZXJpdHk9aGlnaC4KICAgICAqCiAgICAgKiBAcmV0dXJuIE1lc3NhZ2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBoaWdoKHN0cmluZyAkbWVzc2FnZSk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJG1lc3NhZ2UsIHNlbGY6OlNFVkVSSVRZX0hJR0gpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbWVzc2FnZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1lc3NhZ2UoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5tZXNzYWdlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc2V2ZXJpdHkgb2YgdGhlIG1lc3NhZ2UuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTZXZlcml0eSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNldmVyaXR5OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBqc29uU2VyaWFsaXplKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ21lc3NhZ2UnID0+ICR0aGlzLT5tZXNzYWdlLAogICAgICAgICAgICAnc2V2ZXJpdHknID0+ICR0aGlzLT5zZXZlcml0eSwKICAgICAgICBdOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/MessageBag.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQXJyYXlJdGVyYXRvcjsKdXNlIGZ1bmN0aW9uIGNvdW50Owp1c2UgQ291bnRhYmxlOwp1c2UgSXRlcmF0b3JBZ2dyZWdhdGU7CnVzZSBKc29uU2VyaWFsaXphYmxlOwp1c2UgVHJhdmVyc2FibGU7CgpjbGFzcyBNZXNzYWdlQmFnIGltcGxlbWVudHMgSnNvblNlcmlhbGl6YWJsZSwgSXRlcmF0b3JBZ2dyZWdhdGUsIENvdW50YWJsZQp7CiAgICAvKioKICAgICAqIEB2YXIgTWVzc2FnZVtdCiAgICAgKi8KICAgIHByaXZhdGUgJG1lc3NhZ2VzID0gW107CgogICAgLyoqCiAgICAgKiBBZGRzIGEgbWVzc2FnZSB0byB0aGUgbWVzc2FnZSBiYWcuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoTWVzc2FnZSAkbWVzc2FnZSk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+bWVzc2FnZXNbXSA9ICRtZXNzYWdlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbGwgbWVzc2FnZXMuCiAgICAgKgogICAgICogQHJldHVybiBNZXNzYWdlW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFsbCgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bWVzc2FnZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBqc29uU2VyaWFsaXplKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X3ZhbHVlcygkdGhpcy0+bWVzc2FnZXMpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnQoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuIGNvdW50KCR0aGlzLT5tZXNzYWdlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJdGVyYXRvcigpOiBUcmF2ZXJzYWJsZQogICAgewogICAgICAgIHJldHVybiBuZXcgQXJyYXlJdGVyYXRvcigkdGhpcy0+bWVzc2FnZXMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/MixedKeyTypes.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0tTZXQ7CgpmaW5hbCBjbGFzcyBNaXhlZEtleVR5cGVzIGltcGxlbWVudHMgS2V5c2V0QW5hbHl6ZXIKewogICAgcHVibGljIGZ1bmN0aW9uIGFuYWx5emUoSldLU2V0ICRqd2tzZXQsIE1lc3NhZ2VCYWcgJGJhZyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoMCA9PT0gJGp3a3NldC0+Y291bnQoKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkaGFzU3ltbWV0cmljS2V5cyA9IGZhbHNlOwogICAgICAgICRoYXNBc3ltbWV0cmljS2V5cyA9IGZhbHNlOwoKICAgICAgICBmb3JlYWNoICgkandrc2V0IGFzICRqd2spIHsKICAgICAgICAgICAgc3dpdGNoICgkandrLT5nZXQoJ2t0eScpKSB7CiAgICAgICAgICAgICAgICBjYXNlICdvY3QnOgogICAgICAgICAgICAgICAgICAgICRoYXNTeW1tZXRyaWNLZXlzID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnT0tQJzoKICAgICAgICAgICAgICAgIGNhc2UgJ1JTQSc6CiAgICAgICAgICAgICAgICBjYXNlICdFQyc6CiAgICAgICAgICAgICAgICAgICAgJGhhc0FzeW1tZXRyaWNLZXlzID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkaGFzQXN5bW1ldHJpY0tleXMgJiYgJGhhc1N5bW1ldHJpY0tleXMpIHsKICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6Om1lZGl1bSgnVGhpcyBrZXkgc2V0IG1peGVzIHN5bW1ldHJpYyBhbmQgYXNzeW1ldHJpYyBrZXlzLicpKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/MixedPublicAndPrivateKeys.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0tTZXQ7CgpmaW5hbCBjbGFzcyBNaXhlZFB1YmxpY0FuZFByaXZhdGVLZXlzIGltcGxlbWVudHMgS2V5c2V0QW5hbHl6ZXIKewogICAgcHVibGljIGZ1bmN0aW9uIGFuYWx5emUoSldLU2V0ICRqd2tzZXQsIE1lc3NhZ2VCYWcgJGJhZyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoMCA9PT0gJGp3a3NldC0+Y291bnQoKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkaGFzUHVibGljS2V5cyA9IGZhbHNlOwogICAgICAgICRoYXNQcml2YXRlS2V5cyA9IGZhbHNlOwoKICAgICAgICBmb3JlYWNoICgkandrc2V0IGFzICRqd2spIHsKICAgICAgICAgICAgc3dpdGNoICgkandrLT5nZXQoJ2t0eScpKSB7CiAgICAgICAgICAgICAgICBjYXNlICdPS1AnOgogICAgICAgICAgICAgICAgY2FzZSAnUlNBJzoKICAgICAgICAgICAgICAgIGNhc2UgJ0VDJzoKICAgICAgICAgICAgICAgICAgICBpZiAoJGp3ay0+aGFzKCdkJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGhhc1ByaXZhdGVLZXlzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkaGFzUHVibGljS2V5cyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRoYXNQcml2YXRlS2V5cyAmJiAkaGFzUHVibGljS2V5cykgewogICAgICAgICAgICAkYmFnLT5hZGQoTWVzc2FnZTo6aGlnaCgnVGhpcyBrZXkgc2V0IG1peGVzIHB1YmxpYyBhbmQgcHJpdmF0ZSBrZXlzLicpKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/NoneAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CgpmaW5hbCBjbGFzcyBOb25lQW5hbHl6ZXIgaW1wbGVtZW50cyBLZXlBbmFseXplcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gYW5hbHl6ZShKV0sgJGp3aywgTWVzc2FnZUJhZyAkYmFnKTogdm9pZAogICAgewogICAgICAgIGlmICgnbm9uZScgIT09ICRqd2stPmdldCgna3R5JykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goJ1RoaXMga2V5IGlzIGEgbWVhbnQgdG8gYmUgdXNlZCB3aXRoIHRoZSBhbGdvcml0aG0gIm5vbmUiLiBUaGlzIGFsZ29yaXRobSBpcyBub3Qgc2VjdXJlZCBhbmQgc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXJlLicpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/OctAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwoKZmluYWwgY2xhc3MgT2N0QW5hbHl6ZXIgaW1wbGVtZW50cyBLZXlBbmFseXplcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gYW5hbHl6ZShKV0sgJGp3aywgTWVzc2FnZUJhZyAkYmFnKTogdm9pZAogICAgewogICAgICAgIGlmICgnb2N0JyAhPT0gJGp3ay0+Z2V0KCdrdHknKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICRrID0gQmFzZTY0VXJsOjpkZWNvZGUoJGp3ay0+Z2V0KCdrJykpOwogICAgICAgICRrTGVuZ3RoID0gOCAqIG1iX3N0cmxlbigkaywgJzhiaXQnKTsKICAgICAgICBpZiAoJGtMZW5ndGggPCAxMjgpIHsKICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goJ1RoZSBrZXkgbGVuZ3RoIGlzIGxlc3MgdGhhbiAxMjggYml0cy4nKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/RsaAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIGZ1bmN0aW9uIGlzX2FycmF5Owp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CgpmaW5hbCBjbGFzcyBSc2FBbmFseXplciBpbXBsZW1lbnRzIEtleUFuYWx5emVyCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBhbmFseXplKEpXSyAkandrLCBNZXNzYWdlQmFnICRiYWcpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCdSU0EnICE9PSAkandrLT5nZXQoJ2t0eScpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jaGVja0V4cG9uZW50KCRqd2ssICRiYWcpOwogICAgICAgICR0aGlzLT5jaGVja01vZHVsdXMoJGp3aywgJGJhZyk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja0V4cG9uZW50KEpXSyAkandrLCBNZXNzYWdlQmFnICRiYWcpOiB2b2lkCiAgICB7CiAgICAgICAgJGV4cG9uZW50ID0gdW5wYWNrKCdsJywgc3RyX3BhZChCYXNlNjRVcmw6OmRlY29kZSgkandrLT5nZXQoJ2UnKSksIDQsICJcMCIpKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRleHBvbmVudCkgfHwgIWlzc2V0KCRleHBvbmVudFsxXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGdldCB0aGUgcHJpdmF0ZSBrZXknKTsKICAgICAgICB9CiAgICAgICAgaWYgKCRleHBvbmVudFsxXSA8IDY1NTM3KSB7CiAgICAgICAgICAgICRiYWctPmFkZChNZXNzYWdlOjpoaWdoKCdUaGUgZXhwb25lbnQgaXMgdG9vIGxvdy4gSXQgc2hvdWxkIGJlIGF0IGxlYXN0IDY1NTM3LicpKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja01vZHVsdXMoSldLICRqd2ssIE1lc3NhZ2VCYWcgJGJhZyk6IHZvaWQKICAgIHsKICAgICAgICAkbiA9IDggKiBtYl9zdHJsZW4oQmFzZTY0VXJsOjpkZWNvZGUoJGp3ay0+Z2V0KCduJykpLCAnOGJpdCcpOwogICAgICAgIGlmICgkbiA8IDIwNDgpIHsKICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goJ1RoZSBrZXkgbGVuZ3RoIGlzIGxlc3MgdGhhbiAyMDQ4IGJpdHMuJykpOwogICAgICAgIH0KICAgICAgICBpZiAoJGp3ay0+aGFzKCdkJykgJiYgKCEkandrLT5oYXMoJ3AnKSB8fCAhJGp3ay0+aGFzKCdxJykgfHwgISRqd2stPmhhcygnZHAnKSB8fCAhJGp3ay0+aGFzKCdkcScpIHx8ICEkandrLT5oYXMoJ3AnKSB8fCAhJGp3ay0+aGFzKCdxaScpKSkgewogICAgICAgICAgICAkYmFnLT5hZGQoTWVzc2FnZTo6bWVkaXVtKCdUaGUga2V5IGlzIGEgcHJpdmF0ZSBSU0Ega2V5LCBidXQgQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbSBwcmltZXMgYXJlIG1pc3NpbmcuIFRoZXNlIHByaW1lcyBhcmUgbm90IG1hbmRhdG9yeSwgYnV0IHNpZ25hdHVyZXMgYW5kIGRlY3J5cHRpb24gcHJvY2Vzc2VzIGFyZSBmYXN0ZXIgd2hlbiBhdmFpbGFibGUuJykpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/UsageAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgZnVuY3Rpb24gaW5fYXJyYXk7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXSzsKCmZpbmFsIGNsYXNzIFVzYWdlQW5hbHl6ZXIgaW1wbGVtZW50cyBLZXlBbmFseXplcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gYW5hbHl6ZShKV0sgJGp3aywgTWVzc2FnZUJhZyAkYmFnKTogdm9pZAogICAgewogICAgICAgIGlmICghJGp3ay0+aGFzKCd1c2UnKSkgewogICAgICAgICAgICAkYmFnLT5hZGQoTWVzc2FnZTo6bWVkaXVtKCdUaGUgcGFyYW1ldGVyICJ1c2UiIHNob3VsZCBiZSBhZGRlZC4nKSk7CiAgICAgICAgfSBlbHNlaWYgKCFpbl9hcnJheSgkandrLT5nZXQoJ3VzZScpLCBbJ3NpZycsICdlbmMnXSwgdHJ1ZSkpIHsKICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goc3ByaW50ZignVGhlIHBhcmFtZXRlciAidXNlIiBoYXMgYW4gdW5zdXBwb3J0ZWQgdmFsdWUgIiVzIi4gUGxlYXNlIHVzZSAic2lnIiAoc2lnbmF0dXJlKSBvciAiZW5jIiAoZW5jcnlwdGlvbikuJywgJGp3ay0+Z2V0KCd1c2UnKSkpKTsKICAgICAgICB9CiAgICAgICAgaWYgKCRqd2stPmhhcygna2V5X29wcycpICYmICFpbl9hcnJheSgkandrLT5nZXQoJ2tleV9vcHMnKSwgWydzaWduJywgJ3ZlcmlmeScsICdlbmNyeXB0JywgJ2RlY3J5cHQnLCAnd3JhcEtleScsICd1bndyYXBLZXknXSwgdHJ1ZSkpIHsKICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goc3ByaW50ZignVGhlIHBhcmFtZXRlciAia2V5X29wcyIgaGFzIGFuIHVuc3VwcG9ydGVkIHZhbHVlICIlcyIuIFBsZWFzZSB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiAlcy4nLCAkandrLT5nZXQoJ3VzZScpLCBpbXBsb2RlKCcsICcsIFsndmVyaWZ5JywgJ3NpZ24nLCAnZW5jcnlwJywgJ2RlY3J5cHQnLCAnd3JhcEtleScsICd1bndyYXBLZXknXSkpKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/ZxcvbnKeyAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwp1c2UgWnhjdmJuUGhwXFp4Y3ZibjsKCmZpbmFsIGNsYXNzIFp4Y3ZibktleUFuYWx5emVyIGltcGxlbWVudHMgS2V5QW5hbHl6ZXIKewogICAgcHVibGljIGZ1bmN0aW9uIGFuYWx5emUoSldLICRqd2ssIE1lc3NhZ2VCYWcgJGJhZyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJ29jdCcgIT09ICRqd2stPmdldCgna3R5JykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkayA9IEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgnaycpKTsKICAgICAgICBpZiAoY2xhc3NfZXhpc3RzKFp4Y3Zibjo6Y2xhc3MpKSB7CiAgICAgICAgICAgICR6eGN2Ym4gPSBuZXcgWnhjdmJuKCk7CiAgICAgICAgICAgICRzdHJlbmd0aCA9ICR6eGN2Ym4tPnBhc3N3b3JkU3RyZW5ndGgoJGspOwoKICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7CiAgICAgICAgICAgICAgICBjYXNlICRzdHJlbmd0aFsnc2NvcmUnXSA8IDM6CiAgICAgICAgICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goJ1RoZSBvY3RldCBzdHJpbmcgaXMgd2VhayBhbmQgZWFzaWx5IGd1ZXNzYWJsZS4gUGxlYXNlIGNoYW5nZSB5b3VyIGtleSBhcyBzb29uIGFzIHBvc3NpYmxlLicpKTsKCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAzID09PSAkc3RyZW5ndGhbJ3Njb3JlJ106CiAgICAgICAgICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6Om1lZGl1bSgnVGhlIG9jdGV0IHN0cmluZyBpcyBzYWZlLCBidXQgYSBsb25nZXIga2V5IGlzIHByZWZlcmFibGUuJykpOwoKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAid2ViLXRva2VuL2p3dC1rZXktbWdtdCIsCiAgICAiZGVzY3JpcHRpb24iOiAiS2V5IE1hbmFnZW1lbnQgY29tcG9uZW50IG9mIHRoZSBKV1QgRnJhbWV3b3JrLiIsCiAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAia2V5d29yZHMiOiBbIkpXUyIsICJKV1QiLCAiSldFIiwgIkpXQSIsICJKV0siLCAiSldLU2V0IiwgIkpvdCIsICJKb3NlIiwgIlJGQzc1MTUiLCAiUkZDNzUxNiIsICJSRkM3NTE3IiwgIlJGQzc1MTgiLCAiUkZDNzUxOSIsICJSRkM3NTIwIiwgIkJ1bmRsZSIsICJTeW1mb255Il0sCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbiIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reSIKICAgICAgICB9LHsKICAgICAgICAgICAgIm5hbWUiOiAiQWxsIGNvbnRyaWJ1dG9ycyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1rZXktbWdtdC9jb250cmlidXRvcnMiCiAgICAgICAgfQogICAgXSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJKb3NlXFxDb21wb25lbnRcXEtleU1hbmFnZW1lbnRcXCI6ICAiIgogICAgICAgIH0KICAgIH0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAiZXh0LW9wZW5zc2wiOiAiKiIsCiAgICAgICAgInBzci9odHRwLWZhY3RvcnkiOiAiXjEuMCIsCiAgICAgICAgInBzci9odHRwLWNsaWVudCI6ICJeMS4wIiwKICAgICAgICAid2ViLXRva2VuL2p3dC1jb3JlIjogIl4yLjAiCiAgICB9LAogICAgInN1Z2dlc3QiOiB7CiAgICAgICAgImV4dC1zb2RpdW0iOiAiU29kaXVtIGlzIHJlcXVpcmVkIGZvciBPS1Aga2V5IGNyZWF0aW9uLCBFZERTQSBzaWduYXR1cmUgYWxnb3JpdGhtIGFuZCBFQ0RILUVTIGtleSBlbmNyeXB0aW9uIHdpdGggT0tQIGtleXMiLAogICAgICAgICJ3ZWItdG9rZW4vand0LXV0aWwtZWNjIjogIlRvIHVzZSBFQyBrZXkgYW5hbHl6ZXJzLiIsCiAgICAgICAgInBocC1odHRwL21lc3NhZ2UtZmFjdG9yeSI6ICJUbyBlbmFibGUgSktVL1g1VSBzdXBwb3J0LiIsCiAgICAgICAgInBocC1odHRwL2h0dHBsdWciOiAiVG8gZW5hYmxlIEpLVS9YNVUgc3VwcG9ydC4iCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/JKUFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnQ7Cgp1c2UgZnVuY3Rpb24gaXNfYXJyYXk7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXS1NldDsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxKc29uQ29udmVydGVyOwp1c2UgUnVudGltZUV4Y2VwdGlvbjsKCmNsYXNzIEpLVUZhY3RvcnkgZXh0ZW5kcyBVcmxLZXlTZXRGYWN0b3J5CnsKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gZmV0Y2ggdGhlIHVybCBhIHJldHJpZXZlIHRoZSBrZXkgc2V0LgogICAgICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpbiBjYXNlIG9mIGZhaWx1cmUuCiAgICAgKgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBrZXkgY2Fubm90IGJlIHJlYWNoZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxvYWRGcm9tVXJsKHN0cmluZyAkdXJsLCBhcnJheSAkaGVhZGVyID0gW10pOiBKV0tTZXQKICAgIHsKICAgICAgICAkY29udGVudCA9ICR0aGlzLT5nZXRDb250ZW50KCR1cmwsICRoZWFkZXIpOwogICAgICAgICRkYXRhID0gSnNvbkNvbnZlcnRlcjo6ZGVjb2RlKCRjb250ZW50KTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRkYXRhKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignSW52YWxpZCBjb250ZW50LicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIEpXS1NldDo6Y3JlYXRlRnJvbUtleURhdGEoJGRhdGEpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/JWKFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnQ7Cgp1c2UgZnVuY3Rpb24gYXJyYXlfa2V5X2V4aXN0czsKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBmdW5jdGlvbiBleHRlbnNpb25fbG9hZGVkOwp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgZnVuY3Rpb24gaXNfYXJyYXk7CnVzZSBmdW5jdGlvbiBpc19zdHJpbmc7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXSzsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLU2V0Owp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEVDS2V5Owp1c2UgSm9zZVxDb21wb25lbnRcS2V5TWFuYWdlbWVudFxLZXlDb252ZXJ0ZXJcS2V5Q29udmVydGVyOwp1c2UgSm9zZVxDb21wb25lbnRcS2V5TWFuYWdlbWVudFxLZXlDb252ZXJ0ZXJcUlNBS2V5Owp1c2UgUnVudGltZUV4Y2VwdGlvbjsKdXNlIFRocm93YWJsZTsKCmNsYXNzIEpXS0ZhY3RvcnkKewogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgUlNBIGtleSB3aXRoIHRoZSBnaXZlbiBrZXkgc2l6ZSBhbmQgYWRkaXRpb25hbCB2YWx1ZXMuCiAgICAgKgogICAgICogQHBhcmFtIGludCAgICRzaXplICAgVGhlIGtleSBzaXplIGluIGJpdHMKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWVzIHZhbHVlcyB0byBjb25maWd1cmUgdGhlIGtleQogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgaGFzIGFuIGludmFsaWQgc2l6ZQogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSB0aGUga2V5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUlNBS2V5KGludCAkc2l6ZSwgYXJyYXkgJHZhbHVlcyA9IFtdKTogSldLCiAgICB7CiAgICAgICAgaWYgKDAgIT09ICRzaXplICUgOCkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGtleSBzaXplLicpOwogICAgICAgIH0KICAgICAgICBpZiAoNTEyID4gJHNpemUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignS2V5IGxlbmd0aCBpcyB0b28gc2hvcnQuIEl0IG5lZWRzIHRvIGJlIGF0IGxlYXN0IDUxMiBiaXRzLicpOwogICAgICAgIH0KCiAgICAgICAgJGtleSA9IG9wZW5zc2xfcGtleV9uZXcoWwogICAgICAgICAgICAncHJpdmF0ZV9rZXlfYml0cycgPT4gJHNpemUsCiAgICAgICAgICAgICdwcml2YXRlX2tleV90eXBlJyA9PiBPUEVOU1NMX0tFWVRZUEVfUlNBLAogICAgICAgIF0pOwogICAgICAgIGlmIChmYWxzZSA9PT0gJGtleSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gY3JlYXRlIHRoZSBrZXknKTsKICAgICAgICB9CiAgICAgICAgJGRldGFpbHMgPSBvcGVuc3NsX3BrZXlfZ2V0X2RldGFpbHMoJGtleSk7CiAgICAgICAgaWYgKCFpc19hcnJheSgkZGV0YWlscykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGNyZWF0ZSB0aGUga2V5Jyk7CiAgICAgICAgfQogICAgICAgICRyc2EgPSBSU0FLZXk6OmNyZWF0ZUZyb21LZXlEZXRhaWxzKCRkZXRhaWxzWydyc2EnXSk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAkdmFsdWVzLAogICAgICAgICAgICAkcnNhLT50b0FycmF5KCkKICAgICAgICApOwoKICAgICAgICByZXR1cm4gbmV3IEpXSygkdmFsdWVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBFQyBrZXkgd2l0aCB0aGUgZ2l2ZW4gY3VydmUgYW5kIGFkZGl0aW9uYWwgdmFsdWVzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGN1cnZlICBUaGUgY3VydmUKICAgICAqIEBwYXJhbSBhcnJheSAgJHZhbHVlcyB2YWx1ZXMgdG8gY29uZmlndXJlIHRoZSBrZXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVFQ0tleShzdHJpbmcgJGN1cnZlLCBhcnJheSAkdmFsdWVzID0gW10pOiBKV0sKICAgIHsKICAgICAgICByZXR1cm4gRUNLZXk6OmNyZWF0ZUVDS2V5KCRjdXJ2ZSwgJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgb2N0ZXQga2V5IHdpdGggdGhlIGdpdmVuIGtleSBzaXplIGFuZCBhZGRpdGlvbmFsIHZhbHVlcy4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICAgJHNpemUgICBUaGUga2V5IHNpemUgaW4gYml0cwogICAgICogQHBhcmFtIGFycmF5ICR2YWx1ZXMgdmFsdWVzIHRvIGNvbmZpZ3VyZSB0aGUga2V5CiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBoYXMgYW4gaW52YWxpZCBzaXplCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlT2N0S2V5KGludCAkc2l6ZSwgYXJyYXkgJHZhbHVlcyA9IFtdKTogSldLCiAgICB7CiAgICAgICAgaWYgKDAgIT09ICRzaXplICUgOCkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGtleSBzaXplLicpOwogICAgICAgIH0KICAgICAgICAkdmFsdWVzID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICR2YWx1ZXMsCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdrdHknID0+ICdvY3QnLAogICAgICAgICAgICAgICAgJ2snID0+IEJhc2U2NFVybDo6ZW5jb2RlKHJhbmRvbV9ieXRlcygkc2l6ZSAvIDgpKSwKICAgICAgICAgICAgXQogICAgICAgICk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIE9LUCBrZXkgd2l0aCB0aGUgZ2l2ZW4gY3VydmUgYW5kIGFkZGl0aW9uYWwgdmFsdWVzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGN1cnZlICBUaGUgY3VydmUKICAgICAqIEBwYXJhbSBhcnJheSAgJHZhbHVlcyB2YWx1ZXMgdG8gY29uZmlndXJlIHRoZSBrZXkKICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgZXh0ZW5zaW9uICJzb2JpdW0iIGlzIG5vdCBhdmFpbGFibGUKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBjdXJ2ZSBpcyBub3Qgc3VwcG9ydGVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlT0tQS2V5KHN0cmluZyAkY3VydmUsIGFycmF5ICR2YWx1ZXMgPSBbXSk6IEpXSwogICAgewogICAgICAgIGlmICghZXh0ZW5zaW9uX2xvYWRlZCgnc29kaXVtJykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1RoZSBleHRlbnNpb24gInNvZGl1bSIgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGluc3RhbGwgaXQgdG8gdXNlIHRoaXMgbWV0aG9kJyk7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCRjdXJ2ZSkgewogICAgICAgICAgICBjYXNlICdYMjU1MTknOgogICAgICAgICAgICAgICAgJGtleVBhaXIgPSBzb2RpdW1fY3J5cHRvX2JveF9rZXlwYWlyKCk7CiAgICAgICAgICAgICAgICAkc2VjcmV0ID0gc29kaXVtX2NyeXB0b19ib3hfc2VjcmV0a2V5KCRrZXlQYWlyKTsKICAgICAgICAgICAgICAgICR4ID0gc29kaXVtX2NyeXB0b19ib3hfcHVibGlja2V5KCRrZXlQYWlyKTsKCiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ0VkMjU1MTknOgogICAgICAgICAgICAgICAgJGtleVBhaXIgPSBzb2RpdW1fY3J5cHRvX3NpZ25fa2V5cGFpcigpOwogICAgICAgICAgICAgICAgJHNlY3JldCA9IHNvZGl1bV9jcnlwdG9fc2lnbl9zZWNyZXRrZXkoJGtleVBhaXIpOwogICAgICAgICAgICAgICAgJHggPSBzb2RpdW1fY3J5cHRvX3NpZ25fcHVibGlja2V5KCRrZXlQYWlyKTsKCiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1Vuc3VwcG9ydGVkICIlcyIgY3VydmUnLCAkY3VydmUpKTsKICAgICAgICB9CiAgICAgICAgJHNlY3JldExlbmd0aCA9IG1iX3N0cmxlbigkc2VjcmV0LCAnOGJpdCcpOwogICAgICAgICRkID0gbWJfc3Vic3RyKCRzZWNyZXQsIDAsIC0kc2VjcmV0TGVuZ3RoIC8gMiwgJzhiaXQnKTsKCiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAkdmFsdWVzLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAna3R5JyA9PiAnT0tQJywKICAgICAgICAgICAgICAgICdjcnYnID0+ICRjdXJ2ZSwKICAgICAgICAgICAgICAgICdkJyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkZCksCiAgICAgICAgICAgICAgICAneCcgPT4gQmFzZTY0VXJsOjplbmNvZGUoJHgpLAogICAgICAgICAgICBdCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbm9uZSBrZXkgd2l0aCB0aGUgZ2l2ZW4gYWRkaXRpb25hbCB2YWx1ZXMuCiAgICAgKiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMga2V5IHR5cGUgaXMgbm90IHBhdCBvZiBhbnkgc3BlY2lmaWNhdGlvbi4KICAgICAqIEl0IGlzIHVzZWQgdG8gcHJldmVudCB0aGUgdXNlIG9mIHRoZSAibm9uZSIgYWxnb3JpdGhtIHdpdGggb3RoZXIga2V5IHR5cGVzLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWVzIHZhbHVlcyB0byBjb25maWd1cmUgdGhlIGtleQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZU5vbmVLZXkoYXJyYXkgJHZhbHVlcyA9IFtdKTogSldLCiAgICB7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAkdmFsdWVzLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAna3R5JyA9PiAnbm9uZScsCiAgICAgICAgICAgICAgICAnYWxnJyA9PiAnbm9uZScsCiAgICAgICAgICAgICAgICAndXNlJyA9PiAnc2lnJywKICAgICAgICAgICAgXQogICAgICAgICk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIGtleSBmcm9tIGEgSnNvbiBzdHJpbmcuCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBvciBrZXlzZXQgaXMgbm90IHZhbGlkCiAgICAgKgogICAgICogQHJldHVybiBKV0t8SldLU2V0CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUpzb25PYmplY3Qoc3RyaW5nICR2YWx1ZSkKICAgIHsKICAgICAgICAkanNvbiA9IGpzb25fZGVjb2RlKCR2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgaWYgKCFpc19hcnJheSgkanNvbikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBrZXkgb3Iga2V5IHNldC4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVGcm9tVmFsdWVzKCRqc29uKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBrZXkgb3Iga2V5IHNldCBmcm9tIHRoZSBnaXZlbiBpbnB1dC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEpXS3xKV0tTZXQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tVmFsdWVzKGFycmF5ICR2YWx1ZXMpCiAgICB7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2tleXMnLCAkdmFsdWVzKSAmJiBpc19hcnJheSgkdmFsdWVzWydrZXlzJ10pKSB7CiAgICAgICAgICAgIHJldHVybiBKV0tTZXQ6OmNyZWF0ZUZyb21LZXlEYXRhKCR2YWx1ZXMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBjcmVhdGUgYSBKV0sgb2JqZWN0IHVzaW5nIGEgc2hhcmVkIHNlY3JldC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tU2VjcmV0KHN0cmluZyAkc2VjcmV0LCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSk6IEpXSwogICAgewogICAgICAgICR2YWx1ZXMgPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgJGFkZGl0aW9uYWxfdmFsdWVzLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAna3R5JyA9PiAnb2N0JywKICAgICAgICAgICAgICAgICdrJyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkc2VjcmV0KSwKICAgICAgICAgICAgXQogICAgICAgICk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gbG9hZCBhIFguNTA5IGNlcnRpZmljYXRlIGFuZCBjb252ZXJ0IGl0IGludG8gYSBwdWJsaWMga2V5LgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21DZXJ0aWZpY2F0ZUZpbGUoc3RyaW5nICRmaWxlLCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSk6IEpXSwogICAgewogICAgICAgICR2YWx1ZXMgPSBLZXlDb252ZXJ0ZXI6OmxvYWRLZXlGcm9tQ2VydGlmaWNhdGVGaWxlKCRmaWxlKTsKICAgICAgICAkdmFsdWVzID0gYXJyYXlfbWVyZ2UoJHZhbHVlcywgJGFkZGl0aW9uYWxfdmFsdWVzKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFeHRyYWN0IGEga2V5ZnJvbSBhIGtleSBzZXQgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gaW5kZXggLgogICAgICoKICAgICAqIEBwYXJhbSBpbnR8c3RyaW5nICRpbmRleAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21LZXlTZXQoSldLU2V0ICRqd2tzZXQsICRpbmRleCk6IEpXSwogICAgewogICAgICAgIHJldHVybiAkandrc2V0LT5nZXQoJGluZGV4KTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgdHJ5IHRvIGxvYWQgYSBQS0NTIzEyIGZpbGUgYW5kIGNvbnZlcnQgaXQgaW50byBhIHB1YmxpYyBrZXkuCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGNlcnRpZmljYXRlIGNhbm5vdCBiZSBsb2FkZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tUEtDUzEyQ2VydGlmaWNhdGVGaWxlKHN0cmluZyAkZmlsZSwgP3N0cmluZyAkc2VjcmV0ID0gJycsIGFycmF5ICRhZGRpdGlvbmFsX3ZhbHVlcyA9IFtdKTogSldLCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZSk7CiAgICAgICAgICAgIGlmICghaXNfc3RyaW5nKCRjb250ZW50KSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byByZWFkIHRoZSBmaWxlLicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG9wZW5zc2xfcGtjczEyX3JlYWQoJGNvbnRlbnQsICRjZXJ0cywgJHNlY3JldCk7CiAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlICR0aHJvd2FibGUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBjZXJ0aWZpY2F0ZXMuJywgJHRocm93YWJsZS0+Z2V0Q29kZSgpLCAkdGhyb3dhYmxlKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFpc19hcnJheSgkY2VydHMpIHx8ICFhcnJheV9rZXlfZXhpc3RzKCdwa2V5JywgJGNlcnRzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGNlcnRpZmljYXRlcy4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVGcm9tS2V5KCRjZXJ0c1sncGtleSddLCBudWxsLCAkYWRkaXRpb25hbF92YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gY29udmVydCBhIFguNTA5IGNlcnRpZmljYXRlIGludG8gYSBwdWJsaWMga2V5LgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21DZXJ0aWZpY2F0ZShzdHJpbmcgJGNlcnRpZmljYXRlLCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSk6IEpXSwogICAgewogICAgICAgICR2YWx1ZXMgPSBLZXlDb252ZXJ0ZXI6OmxvYWRLZXlGcm9tQ2VydGlmaWNhdGUoJGNlcnRpZmljYXRlKTsKICAgICAgICAkdmFsdWVzID0gYXJyYXlfbWVyZ2UoJHZhbHVlcywgJGFkZGl0aW9uYWxfdmFsdWVzKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHRyeSB0byBjb252ZXJ0IGEgWC41MDkgY2VydGlmaWNhdGUgcmVzb3VyY2UgaW50byBhIHB1YmxpYyBrZXkuCiAgICAgKgogICAgICogQHBhcmFtIHJlc291cmNlICRyZXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tWDUwOVJlc291cmNlKCRyZXMsIGFycmF5ICRhZGRpdGlvbmFsX3ZhbHVlcyA9IFtdKTogSldLCiAgICB7CiAgICAgICAgJHZhbHVlcyA9IEtleUNvbnZlcnRlcjo6bG9hZEtleUZyb21YNTA5UmVzb3VyY2UoJHJlcyk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKCR2YWx1ZXMsICRhZGRpdGlvbmFsX3ZhbHVlcyk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gbG9hZCBhbmQgY29udmVydCBhIGtleSBmaWxlIGludG8gYSBKV0sgb2JqZWN0LgogICAgICogSWYgdGhlIGtleSBpcyBlbmNyeXB0ZWQsIHRoZSBwYXNzd29yZCBtdXN0IGJlIHNldC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tS2V5RmlsZShzdHJpbmcgJGZpbGUsID9zdHJpbmcgJHBhc3N3b3JkID0gbnVsbCwgYXJyYXkgJGFkZGl0aW9uYWxfdmFsdWVzID0gW10pOiBKV0sKICAgIHsKICAgICAgICAkdmFsdWVzID0gS2V5Q29udmVydGVyOjpsb2FkRnJvbUtleUZpbGUoJGZpbGUsICRwYXNzd29yZCk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKCR2YWx1ZXMsICRhZGRpdGlvbmFsX3ZhbHVlcyk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gbG9hZCBhbmQgY29udmVydCBhIGtleSBpbnRvIGEgSldLIG9iamVjdC4KICAgICAqIElmIHRoZSBrZXkgaXMgZW5jcnlwdGVkLCB0aGUgcGFzc3dvcmQgbXVzdCBiZSBzZXQuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUtleShzdHJpbmcgJGtleSwgP3N0cmluZyAkcGFzc3dvcmQgPSBudWxsLCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSk6IEpXSwogICAgewogICAgICAgICR2YWx1ZXMgPSBLZXlDb252ZXJ0ZXI6OmxvYWRGcm9tS2V5KCRrZXksICRwYXNzd29yZCk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKCR2YWx1ZXMsICRhZGRpdGlvbmFsX3ZhbHVlcyk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gbG9hZCBhbmQgY29udmVydCBhIFguNTA5IGNlcnRpZmljYXRlIGNoYWluIGludG8gYSBwdWJsaWMga2V5LgogICAgICoKICAgICAqIEJlIGNhcmVmdWwhIFRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBpcyBsb2FkZWQsIGJ1dCBpdCBpcyBOT1QgVkVSSUZJRUQgYnkgYW55IG1lYW4hCiAgICAgKiBJdCBpcyBtYW5kYXRvcnkgdG8gdmVyaWZ5IHRoZSByb290IENBIG9yIGludGVybWVkaWF0ZSAgQ0EgYXJlIHRydXN0ZWQuCiAgICAgKiBJZiBub3QgZG9uZSwgaXQgbWF5IGxlYWQgdG8gcG90ZW50aWFsIHNlY3VyaXR5IGlzc3Vlcy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tWDVDKGFycmF5ICR4NWMsIGFycmF5ICRhZGRpdGlvbmFsX3ZhbHVlcyA9IFtdKTogSldLCiAgICB7CiAgICAgICAgJHZhbHVlcyA9IEtleUNvbnZlcnRlcjo6bG9hZEZyb21YNUMoJHg1Yyk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKCR2YWx1ZXMsICRhZGRpdGlvbmFsX3ZhbHVlcyk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/KeyConverter/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/KeyConverter/ECKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcS2V5Q29udmVydGVyOwoKdXNlIGZ1bmN0aW9uIGFycmF5X2tleV9leGlzdHM7CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgZnVuY3Rpb24gY291bnQ7CnVzZSBGR1xBU04xXEFTTk9iamVjdDsKdXNlIEZHXEFTTjFcRXhjZXB0aW9uXFBhcnNlckV4Y2VwdGlvbjsKdXNlIEZHXEFTTjFcRXhwbGljaXRseVRhZ2dlZE9iamVjdDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJpdFN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2N0ZXRTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIGZ1bmN0aW9uIGlzX2FycmF5Owp1c2UgZnVuY3Rpb24gaXNfc3RyaW5nOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgRUNLZXkKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJHZhbHVlcyA9IFtdOwoKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGRhdGEpCiAgICB7CiAgICAgICAgJHRoaXMtPmxvYWRKV0soJGRhdGEpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbVBFTShzdHJpbmcgJHBlbSk6IHNlbGYKICAgIHsKICAgICAgICAkZGF0YSA9IHNlbGY6OmxvYWRQRU0oJHBlbSk7CgogICAgICAgIHJldHVybiBuZXcgc2VsZigkZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gRUNLZXkgJHByaXZhdGUKICAgICAqCiAgICAgKiBAcmV0dXJuIEVDS2V5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdG9QdWJsaWMoc2VsZiAkcHJpdmF0ZSk6IHNlbGYKICAgIHsKICAgICAgICAkZGF0YSA9ICRwcml2YXRlLT50b0FycmF5KCk7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2QnLCAkZGF0YSkpIHsKICAgICAgICAgICAgdW5zZXQoJGRhdGFbJ2QnXSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJGRhdGEpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9BcnJheSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUga2V5IGNhbm5vdCBiZSBsb2FkZWQKICAgICAqIEB0aHJvd3MgUGFyc2VyRXhjZXB0aW9uICAgICAgICAgIGlmIHRoZSBrZXkgY2Fubm90IGJlIGxvYWRlZAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBsb2FkUEVNKHN0cmluZyAkZGF0YSk6IGFycmF5CiAgICB7CiAgICAgICAgJGRhdGEgPSBiYXNlNjRfZGVjb2RlKHByZWdfcmVwbGFjZSgnIy0uKi18XHJ8XG4jJywgJycsICRkYXRhKSwgdHJ1ZSk7CiAgICAgICAgJGFzbk9iamVjdCA9IEFTTk9iamVjdDo6ZnJvbUJpbmFyeSgkZGF0YSk7CiAgICAgICAgaWYgKCEkYXNuT2JqZWN0IGluc3RhbmNlb2YgU2VxdWVuY2UpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGtleS4nKTsKICAgICAgICB9CiAgICAgICAgJGNoaWxkcmVuID0gJGFzbk9iamVjdC0+Z2V0Q2hpbGRyZW4oKTsKICAgICAgICBpZiAoc2VsZjo6aXNQS0NTOCgkY2hpbGRyZW4pKSB7CiAgICAgICAgICAgICRjaGlsZHJlbiA9IHNlbGY6OmxvYWRQS0NTOCgkY2hpbGRyZW4pOwogICAgICAgIH0KCiAgICAgICAgaWYgKDQgPT09IGNvdW50KCRjaGlsZHJlbikpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmxvYWRQcml2YXRlUEVNKCRjaGlsZHJlbik7CiAgICAgICAgfQogICAgICAgIGlmICgyID09PSBjb3VudCgkY2hpbGRyZW4pKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpsb2FkUHVibGljUEVNKCRjaGlsZHJlbik7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUga2V5LicpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEFTTk9iamVjdFtdICRjaGlsZHJlbgogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgY2Fubm90IGJlIGxvYWRlZAogICAgICogQHRocm93cyBQYXJzZXJFeGNlcHRpb24gICAgICAgICAgaWYgdGhlIGtleSBjYW5ub3QgYmUgbG9hZGVkCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGxvYWRQS0NTOChhcnJheSAkY2hpbGRyZW4pOiBhcnJheQogICAgewogICAgICAgICRiaW5hcnkgPSBoZXgyYmluKCRjaGlsZHJlblsyXS0+Z2V0Q29udGVudCgpKTsKICAgICAgICAkYXNuT2JqZWN0ID0gQVNOT2JqZWN0Ojpmcm9tQmluYXJ5KCRiaW5hcnkpOwogICAgICAgIGlmICghJGFzbk9iamVjdCBpbnN0YW5jZW9mIFNlcXVlbmNlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXkuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGFzbk9iamVjdC0+Z2V0Q2hpbGRyZW4oKTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgY2Fubm90IGJlIGxvYWRlZAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBsb2FkUHVibGljUEVNKGFycmF5ICRjaGlsZHJlbik6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCEkY2hpbGRyZW5bMF0gaW5zdGFuY2VvZiBTZXF1ZW5jZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBrZXkgdHlwZS4nKTsKICAgICAgICB9CgogICAgICAgICRzdWIgPSAkY2hpbGRyZW5bMF0tPmdldENoaWxkcmVuKCk7CiAgICAgICAgaWYgKCEkc3ViWzBdIGluc3RhbmNlb2YgT2JqZWN0SWRlbnRpZmllcikgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBrZXkgdHlwZS4nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCcxLjIuODQwLjEwMDQ1LjIuMScgIT09ICRzdWJbMF0tPmdldENvbnRlbnQoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBrZXkgdHlwZS4nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCEkc3ViWzFdIGluc3RhbmNlb2YgT2JqZWN0SWRlbnRpZmllcikgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBrZXkgdHlwZS4nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCEkY2hpbGRyZW5bMV0gaW5zdGFuY2VvZiBCaXRTdHJpbmcpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGtleS4nKTsKICAgICAgICB9CgogICAgICAgICRiaXRzID0gJGNoaWxkcmVuWzFdLT5nZXRDb250ZW50KCk7CiAgICAgICAgJGJpdHNfbGVuZ3RoID0gbWJfc3RybGVuKCRiaXRzLCAnOGJpdCcpOwogICAgICAgIGlmICgwICE9PSBtYl9zdHJwb3MoJGJpdHMsICcwNCcsIDAsICc4Yml0JykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQga2V5IHR5cGUnKTsKICAgICAgICB9CgogICAgICAgICR2YWx1ZXMgPSBbJ2t0eScgPT4gJ0VDJ107CiAgICAgICAgJHZhbHVlc1snY3J2J10gPSBzZWxmOjpnZXRDdXJ2ZSgkc3ViWzFdLT5nZXRDb250ZW50KCkpOwoKICAgICAgICAkeEJpbiA9IGhleDJiaW4obWJfc3Vic3RyKCRiaXRzLCAyLCAoJGJpdHNfbGVuZ3RoIC0gMikgLyAyLCAnOGJpdCcpKTsKICAgICAgICAkeUJpbiA9IGhleDJiaW4obWJfc3Vic3RyKCRiaXRzLCAoaW50KSAoKCRiaXRzX2xlbmd0aCAtIDIpIC8gMiArIDIpLCAoJGJpdHNfbGVuZ3RoIC0gMikgLyAyLCAnOGJpdCcpKTsKICAgICAgICBpZiAoIWlzX3N0cmluZygkeEJpbikgfHwgIWlzX3N0cmluZygkeUJpbikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGtleS4nKTsKICAgICAgICB9CgogICAgICAgICR2YWx1ZXNbJ3gnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCR4QmluKTsKICAgICAgICAkdmFsdWVzWyd5J10gPSBCYXNlNjRVcmw6OmVuY29kZSgkeUJpbik7CgogICAgICAgIHJldHVybiAkdmFsdWVzOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIE9JRCBpcyBub3Qgc3VwcG9ydGVkCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldEN1cnZlKHN0cmluZyAkb2lkKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGN1cnZlcyA9IHNlbGY6OmdldFN1cHBvcnRlZEN1cnZlcygpOwogICAgICAgICRjdXJ2ZSA9IGFycmF5X3NlYXJjaCgkb2lkLCAkY3VydmVzLCB0cnVlKTsKICAgICAgICBpZiAoIWlzX3N0cmluZygkY3VydmUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIE9JRC4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY3VydmU7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ3VydmVzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ1AtMjU2JyA9PiAnMS4yLjg0MC4xMDA0NS4zLjEuNycsCiAgICAgICAgICAgICdQLTM4NCcgPT4gJzEuMy4xMzIuMC4zNCcsCiAgICAgICAgICAgICdQLTUyMScgPT4gJzEuMy4xMzIuMC4zNScsCiAgICAgICAgXTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgY2Fubm90IGJlIGxvYWRlZAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB2ZXJpZnlWZXJzaW9uKEFTTk9iamVjdCAkY2hpbGRyZW4pOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCEkY2hpbGRyZW4gaW5zdGFuY2VvZiBJbnRlZ2VyIHx8ICcxJyAhPT0gJGNoaWxkcmVuLT5nZXRDb250ZW50KCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGtleS4nKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUga2V5IGNhbm5vdCBiZSBsb2FkZWQKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0WEFuZFkoQVNOT2JqZWN0ICRjaGlsZHJlbiwgc3RyaW5nICYkeCwgc3RyaW5nICYkeSk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoISRjaGlsZHJlbiBpbnN0YW5jZW9mIEV4cGxpY2l0bHlUYWdnZWRPYmplY3QgfHwgIWlzX2FycmF5KCRjaGlsZHJlbi0+Z2V0Q29udGVudCgpKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUga2V5LicpOwogICAgICAgIH0KICAgICAgICBpZiAoISRjaGlsZHJlbi0+Z2V0Q29udGVudCgpWzBdIGluc3RhbmNlb2YgQml0U3RyaW5nKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXkuJyk7CiAgICAgICAgfQoKICAgICAgICAkYml0cyA9ICRjaGlsZHJlbi0+Z2V0Q29udGVudCgpWzBdLT5nZXRDb250ZW50KCk7CiAgICAgICAgJGJpdHNfbGVuZ3RoID0gbWJfc3RybGVuKCRiaXRzLCAnOGJpdCcpOwoKICAgICAgICBpZiAoMCAhPT0gbWJfc3RycG9zKCRiaXRzLCAnMDQnLCAwLCAnOGJpdCcpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGtleSB0eXBlJyk7CiAgICAgICAgfQoKICAgICAgICAkeCA9IG1iX3N1YnN0cigkYml0cywgMiwgKGludCkgKCgkYml0c19sZW5ndGggLSAyKSAvIDIpLCAnOGJpdCcpOwogICAgICAgICR5ID0gbWJfc3Vic3RyKCRiaXRzLCAoaW50KSAoKCRiaXRzX2xlbmd0aCAtIDIpIC8gMiArIDIpLCAoaW50KSAoKCRiaXRzX2xlbmd0aCAtIDIpIC8gMiksICc4Yml0Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUga2V5IGNhbm5vdCBiZSBsb2FkZWQKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0RChBU05PYmplY3QgJGNoaWxkcmVuKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCEkY2hpbGRyZW4gaW5zdGFuY2VvZiBPY3RldFN0cmluZykgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUga2V5LicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRjaGlsZHJlbi0+Z2V0Q29udGVudCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBjYW5ub3QgYmUgbG9hZGVkCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGxvYWRQcml2YXRlUEVNKGFycmF5ICRjaGlsZHJlbik6IGFycmF5CiAgICB7CiAgICAgICAgc2VsZjo6dmVyaWZ5VmVyc2lvbigkY2hpbGRyZW5bMF0pOwogICAgICAgICR4ID0gJyc7CiAgICAgICAgJHkgPSAnJzsKICAgICAgICAkZCA9IHNlbGY6OmdldEQoJGNoaWxkcmVuWzFdKTsKICAgICAgICBzZWxmOjpnZXRYQW5kWSgkY2hpbGRyZW5bM10sICR4LCAkeSk7CgogICAgICAgIGlmICghJGNoaWxkcmVuWzJdIGluc3RhbmNlb2YgRXhwbGljaXRseVRhZ2dlZE9iamVjdCB8fCAhaXNfYXJyYXkoJGNoaWxkcmVuWzJdLT5nZXRDb250ZW50KCkpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXkuJyk7CiAgICAgICAgfQogICAgICAgIGlmICghJGNoaWxkcmVuWzJdLT5nZXRDb250ZW50KClbMF0gaW5zdGFuY2VvZiBPYmplY3RJZGVudGlmaWVyKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXkuJyk7CiAgICAgICAgfQoKICAgICAgICAkY3VydmUgPSAkY2hpbGRyZW5bMl0tPmdldENvbnRlbnQoKVswXS0+Z2V0Q29udGVudCgpOwogICAgICAgICRkQmluID0gaGV4MmJpbigkZCk7CiAgICAgICAgJHhCaW4gPSBoZXgyYmluKCR4KTsKICAgICAgICAkeUJpbiA9IGhleDJiaW4oJHkpOwogICAgICAgIGlmICghaXNfc3RyaW5nKCRkQmluKSB8fCAhaXNfc3RyaW5nKCR4QmluKSB8fCAhaXNfc3RyaW5nKCR5QmluKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUga2V5LicpOwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlcyA9IFsna3R5JyA9PiAnRUMnXTsKICAgICAgICAkdmFsdWVzWydjcnYnXSA9IHNlbGY6OmdldEN1cnZlKCRjdXJ2ZSk7CiAgICAgICAgJHZhbHVlc1snZCddID0gQmFzZTY0VXJsOjplbmNvZGUoJGRCaW4pOwogICAgICAgICR2YWx1ZXNbJ3gnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCR4QmluKTsKICAgICAgICAkdmFsdWVzWyd5J10gPSBCYXNlNjRVcmw6OmVuY29kZSgkeUJpbik7CgogICAgICAgIHJldHVybiAkdmFsdWVzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEFTTk9iamVjdFtdICRjaGlsZHJlbgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBpc1BLQ1M4KGFycmF5ICRjaGlsZHJlbik6IGJvb2wKICAgIHsKICAgICAgICBpZiAoMyAhPT0gY291bnQoJGNoaWxkcmVuKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkY2xhc3NlcyA9IFswID0+IEludGVnZXI6OmNsYXNzLCAxID0+IFNlcXVlbmNlOjpjbGFzcywgMiA9PiBPY3RldFN0cmluZzo6Y2xhc3NdOwogICAgICAgIGZvcmVhY2ggKCRjbGFzc2VzIGFzICRrID0+ICRjbGFzcykgewogICAgICAgICAgICBpZiAoISRjaGlsZHJlblska10gaW5zdGFuY2VvZiAkY2xhc3MpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUga2V5IGlzIGludmFsaWQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBsb2FkSldLKGFycmF5ICRqd2spOiB2b2lkCiAgICB7CiAgICAgICAgJGtleXMgPSBbCiAgICAgICAgICAgICdrdHknID0+ICdUaGUga2V5IHBhcmFtZXRlciAia3R5IiBpcyBtaXNzaW5nLicsCiAgICAgICAgICAgICdjcnYnID0+ICdDdXJ2ZSBwYXJhbWV0ZXIgaXMgbWlzc2luZycsCiAgICAgICAgICAgICd4JyA9PiAnUG9pbnQgcGFyYW1ldGVycyBhcmUgbWlzc2luZy4nLAogICAgICAgICAgICAneScgPT4gJ1BvaW50IHBhcmFtZXRlcnMgYXJlIG1pc3NpbmcuJywKICAgICAgICBdOwogICAgICAgIGZvcmVhY2ggKCRrZXlzIGFzICRrID0+ICR2KSB7CiAgICAgICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygkaywgJGp3aykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJHYpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJ0VDJyAhPT0gJGp3a1sna3R5J10pIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSldLIGlzIG5vdCBhbiBFbGxpcHRpYyBDdXJ2ZSBrZXkuJyk7CiAgICAgICAgfQogICAgICAgICR0aGlzLT52YWx1ZXMgPSAkandrOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/KeyConverter/KeyConverter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcS2V5Q29udmVydGVyOwoKdXNlIGZ1bmN0aW9uIGFycmF5X2tleV9leGlzdHM7CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgZnVuY3Rpb24gY291bnQ7CnVzZSBmdW5jdGlvbiBleHRlbnNpb25fbG9hZGVkOwp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgZnVuY3Rpb24gaXNfYXJyYXk7CnVzZSBmdW5jdGlvbiBpc19zdHJpbmc7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwp1c2UgVGhyb3dhYmxlOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgS2V5Q29udmVydGVyCnsKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGNlcnRpZmljYXRlIGZpbGUgY2Fubm90IGJlIHJlYWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkS2V5RnJvbUNlcnRpZmljYXRlRmlsZShzdHJpbmcgJGZpbGUpOiBhcnJheQogICAgewogICAgICAgIGlmICghZmlsZV9leGlzdHMoJGZpbGUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignRmlsZSAiJXMiIGRvZXMgbm90IGV4aXN0LicsICRmaWxlKSk7CiAgICAgICAgfQogICAgICAgICRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGUpOwogICAgICAgIGlmICghaXNfc3RyaW5nKCRjb250ZW50KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ0ZpbGUgIiVzIiBjYW5ub3QgYmUgcmVhZC4nLCAkZmlsZSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OmxvYWRLZXlGcm9tQ2VydGlmaWNhdGUoJGNvbnRlbnQpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIE9wZW5TU0wgZXh0ZW5zaW9uIGlzIG5vdCBhdmFpbGFibGUKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBjZXJ0aWZpY2F0ZSBpcyBpbnZhbGlkIG9yIGNhbm5vdCBiZSBsb2FkZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkS2V5RnJvbUNlcnRpZmljYXRlKHN0cmluZyAkY2VydGlmaWNhdGUpOiBhcnJheQogICAgewogICAgICAgIGlmICghZXh0ZW5zaW9uX2xvYWRlZCgnb3BlbnNzbCcpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdQbGVhc2UgaW5zdGFsbCB0aGUgT3BlblNTTCBleHRlbnNpb24nKTsKICAgICAgICB9CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRyZXMgPSBvcGVuc3NsX3g1MDlfcmVhZCgkY2VydGlmaWNhdGUpOwogICAgICAgICAgICBpZiAoZmFsc2UgPT09ICRyZXMpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBjZXJ0aWZpY2F0ZS4nKTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkZSkgewogICAgICAgICAgICAkY2VydGlmaWNhdGUgPSBzZWxmOjpjb252ZXJ0RGVyVG9QZW0oJGNlcnRpZmljYXRlKTsKICAgICAgICAgICAgJHJlcyA9IG9wZW5zc2xfeDUwOV9yZWFkKCRjZXJ0aWZpY2F0ZSk7CiAgICAgICAgfQogICAgICAgIGlmIChmYWxzZSA9PT0gJHJlcykgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUgY2VydGlmaWNhdGUuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6bG9hZEtleUZyb21YNTA5UmVzb3VyY2UoJHJlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJHJlcwogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBPcGVuU1NMIGV4dGVuc2lvbiBpcyBub3QgYXZhaWxhYmxlCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgY2VydGlmaWNhdGUgaXMgaW52YWxpZCBvciBjYW5ub3QgYmUgbG9hZGVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZEtleUZyb21YNTA5UmVzb3VyY2UoJHJlcyk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCFleHRlbnNpb25fbG9hZGVkKCdvcGVuc3NsJykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1BsZWFzZSBpbnN0YWxsIHRoZSBPcGVuU1NMIGV4dGVuc2lvbicpOwogICAgICAgIH0KICAgICAgICAka2V5ID0gb3BlbnNzbF9nZXRfcHVibGlja2V5KCRyZXMpOwogICAgICAgIGlmIChmYWxzZSA9PT0gJGtleSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUgY2VydGlmaWNhdGUuJyk7CiAgICAgICAgfQogICAgICAgICRkZXRhaWxzID0gb3BlbnNzbF9wa2V5X2dldF9kZXRhaWxzKCRrZXkpOwogICAgICAgIGlmICghaXNfYXJyYXkoJGRldGFpbHMpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBjZXJ0aWZpY2F0ZScpOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJGRldGFpbHNbJ2tleSddKSkgewogICAgICAgICAgICAkdmFsdWVzID0gc2VsZjo6bG9hZEtleUZyb21QRU0oJGRldGFpbHNbJ2tleSddKTsKICAgICAgICAgICAgb3BlbnNzbF94NTA5X2V4cG9ydCgkcmVzLCAkb3V0KTsKICAgICAgICAgICAgJHg1YyA9IHByZWdfcmVwbGFjZSgnIy0uKi0jJywgJycsICRvdXQpOwogICAgICAgICAgICAkeDVjID0gcHJlZ19yZXBsYWNlKCd+XFJ+JywgUEhQX0VPTCwgJHg1Yyk7CiAgICAgICAgICAgIGlmICghaXNfc3RyaW5nKCR4NWMpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUgY2VydGlmaWNhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkeDVjID0gdHJpbSgkeDVjKTsKCiAgICAgICAgICAgICR4NXRzaGExID0gb3BlbnNzbF94NTA5X2ZpbmdlcnByaW50KCRyZXMsICdzaGExJywgdHJ1ZSk7CiAgICAgICAgICAgICR4NXRzaGEyNTYgPSBvcGVuc3NsX3g1MDlfZmluZ2VycHJpbnQoJHJlcywgJ3NoYTI1NicsIHRydWUpOwogICAgICAgICAgICBpZiAoIWlzX3N0cmluZygkeDV0c2hhMSkgfHwgIWlzX3N0cmluZygkeDV0c2hhMjU2KSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGNvbXB1dGUgdGhlIGNlcnRpZmljYXRlIGZpbmdlcnByaW50Jyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR2YWx1ZXNbJ3g1YyddID0gWyR4NWNdOwogICAgICAgICAgICAkdmFsdWVzWyd4NXQnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCR4NXRzaGExKTsKICAgICAgICAgICAgJHZhbHVlc1sneDV0IzI1NiddID0gQmFzZTY0VXJsOjplbmNvZGUoJHg1dHNoYTI1Nik7CgogICAgICAgICAgICByZXR1cm4gJHZhbHVlczsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBjZXJ0aWZpY2F0ZScpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZEZyb21LZXlGaWxlKHN0cmluZyAkZmlsZSwgP3N0cmluZyAkcGFzc3dvcmQgPSBudWxsKTogYXJyYXkKICAgIHsKICAgICAgICAkY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlKTsKICAgICAgICBpZiAoIWlzX3N0cmluZygkY29udGVudCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGtleSBmcm9tIHRoZSBmaWxlLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OmxvYWRGcm9tS2V5KCRjb250ZW50LCAkcGFzc3dvcmQpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZEZyb21LZXkoc3RyaW5nICRrZXksID9zdHJpbmcgJHBhc3N3b3JkID0gbnVsbCk6IGFycmF5CiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmxvYWRLZXlGcm9tREVSKCRrZXksICRwYXNzd29yZCk7CiAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpsb2FkS2V5RnJvbVBFTSgka2V5LCAkcGFzc3dvcmQpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEJlIGNhcmVmdWwhIFRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBpcyBsb2FkZWQsIGJ1dCBpdCBpcyBOT1QgVkVSSUZJRUQgYnkgYW55IG1lYW4hCiAgICAgKiBJdCBpcyBtYW5kYXRvcnkgdG8gdmVyaWZ5IHRoZSByb290IENBIG9yIGludGVybWVkaWF0ZSAgQ0EgYXJlIHRydXN0ZWQuCiAgICAgKiBJZiBub3QgZG9uZSwgaXQgbWF5IGxlYWQgdG8gcG90ZW50aWFsIHNlY3VyaXR5IGlzc3Vlcy4KICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgY2VydGlmaWNhdGUgY2hhaW4gaXMgZW1wdHkKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBPcGVuU1NMIGV4dGVuc2lvbiBpcyBub3QgYXZhaWxhYmxlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZEZyb21YNUMoYXJyYXkgJHg1Yyk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKDAgPT09IGNvdW50KCR4NWMpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBpcyBlbXB0eScpOwogICAgICAgIH0KICAgICAgICBmb3JlYWNoICgkeDVjIGFzICRpZCA9PiAkY2VydCkgewogICAgICAgICAgICAkeDVjWyRpZF0gPSAnLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tJy5QSFBfRU9MLmNodW5rX3NwbGl0KCRjZXJ0LCA2NCwgUEhQX0VPTCkuJy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0nOwogICAgICAgICAgICAkeDUwOSA9IG9wZW5zc2xfeDUwOV9yZWFkKCR4NWNbJGlkXSk7CiAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gJHg1MDkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRwYXJzZWQgPSBvcGVuc3NsX3g1MDlfcGFyc2UoJHg1MDkpOwogICAgICAgICAgICBpZiAoZmFsc2UgPT09ICRwYXJzZWQpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6bG9hZEtleUZyb21DZXJ0aWZpY2F0ZShyZXNldCgkeDVjKSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbG9hZEtleUZyb21ERVIoc3RyaW5nICRkZXIsID9zdHJpbmcgJHBhc3N3b3JkID0gbnVsbCk6IGFycmF5CiAgICB7CiAgICAgICAgJHBlbSA9IHNlbGY6OmNvbnZlcnREZXJUb1BlbSgkZGVyKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmxvYWRLZXlGcm9tUEVNKCRwZW0sICRwYXNzd29yZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgT3BlblNTTCBleHRlbnNpb24gaXMgbm90IGF2YWlsYWJsZQogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBjYW5ub3QgYmUgbG9hZGVkCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGxvYWRLZXlGcm9tUEVNKHN0cmluZyAkcGVtLCA/c3RyaW5nICRwYXNzd29yZCA9IG51bGwpOiBhcnJheQogICAgewogICAgICAgIGlmICgxID09PSBwcmVnX21hdGNoKCcjREVLLUluZm86ICguKyksKC4rKSMnLCAkcGVtLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgJHBlbSA9IHNlbGY6OmRlY29kZVBlbSgkcGVtLCAkbWF0Y2hlcywgJHBhc3N3b3JkKTsKICAgICAgICB9CgogICAgICAgIGlmICghZXh0ZW5zaW9uX2xvYWRlZCgnb3BlbnNzbCcpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdQbGVhc2UgaW5zdGFsbCB0aGUgT3BlblNTTCBleHRlbnNpb24nKTsKICAgICAgICB9CiAgICAgICAgc2VsZjo6c2FuaXRpemVQRU0oJHBlbSk7CiAgICAgICAgJHJlcyA9IG9wZW5zc2xfcGtleV9nZXRfcHJpdmF0ZSgkcGVtKTsKICAgICAgICBpZiAoZmFsc2UgPT09ICRyZXMpIHsKICAgICAgICAgICAgJHJlcyA9IG9wZW5zc2xfcGtleV9nZXRfcHVibGljKCRwZW0pOwogICAgICAgIH0KICAgICAgICBpZiAoZmFsc2UgPT09ICRyZXMpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGtleS4nKTsKICAgICAgICB9CgogICAgICAgICRkZXRhaWxzID0gb3BlbnNzbF9wa2V5X2dldF9kZXRhaWxzKCRyZXMpOwogICAgICAgIGlmICghaXNfYXJyYXkoJGRldGFpbHMpIHx8ICFhcnJheV9rZXlfZXhpc3RzKCd0eXBlJywgJGRldGFpbHMpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBnZXQgZGV0YWlscyBvZiB0aGUga2V5Jyk7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCRkZXRhaWxzWyd0eXBlJ10pIHsKICAgICAgICAgICAgY2FzZSBPUEVOU1NMX0tFWVRZUEVfRUM6CiAgICAgICAgICAgICAgICAkZWNfa2V5ID0gRUNLZXk6OmNyZWF0ZUZyb21QRU0oJHBlbSk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRlY19rZXktPnRvQXJyYXkoKTsKCiAgICAgICAgICAgIGNhc2UgT1BFTlNTTF9LRVlUWVBFX1JTQToKICAgICAgICAgICAgICAgICRyc2Ffa2V5ID0gUlNBS2V5OjpjcmVhdGVGcm9tUEVNKCRwZW0pOwoKICAgICAgICAgICAgICAgIHJldHVybiAkcnNhX2tleS0+dG9BcnJheSgpOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGtleSB0eXBlJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2QgbW9kaWZpZXMgdGhlIFBFTSB0byBnZXQgNjQgY2hhciBsaW5lcyBhbmQgZml4IGJ1ZyB3aXRoIG9sZCBPcGVuU1NMIHZlcnNpb25zLgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBzYW5pdGl6ZVBFTShzdHJpbmcgJiRwZW0pOiB2b2lkCiAgICB7CiAgICAgICAgcHJlZ19tYXRjaF9hbGwoJyMoLS4qLSkjJywgJHBlbSwgJG1hdGNoZXMsIFBSRUdfUEFUVEVSTl9PUkRFUik7CiAgICAgICAgJGNpcGhlcnRleHQgPSBwcmVnX3JlcGxhY2UoJyMtLiotfFxyfFxufCAjJywgJycsICRwZW0pOwoKICAgICAgICAkcGVtID0gJG1hdGNoZXNbMF1bMF0uUEhQX0VPTDsKICAgICAgICAkcGVtIC49IGNodW5rX3NwbGl0KCRjaXBoZXJ0ZXh0LCA2NCwgUEhQX0VPTCk7CiAgICAgICAgJHBlbSAuPSAkbWF0Y2hlc1swXVsxXS5QSFBfRU9MOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdICRtYXRjaGVzCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHBhc3N3b3JkIHRvIGRlY3J5cHQgdGhlIGtleSBpcyBub3QgcHJvdmlkZWQKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgY2Fubm90IGJlIGxvYWRlZAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBkZWNvZGVQZW0oc3RyaW5nICRwZW0sIGFycmF5ICRtYXRjaGVzLCA/c3RyaW5nICRwYXNzd29yZCA9IG51bGwpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHBhc3N3b3JkKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Bhc3N3b3JkIHJlcXVpcmVkIGZvciBlbmNyeXB0ZWQga2V5cy4nKTsKICAgICAgICB9CgogICAgICAgICRpdiA9IHBhY2soJ0gqJywgdHJpbSgkbWF0Y2hlc1syXSkpOwogICAgICAgICRpdl9zdWIgPSBtYl9zdWJzdHIoJGl2LCAwLCA4LCAnOGJpdCcpOwogICAgICAgICRzeW1rZXkgPSBwYWNrKCdIKicsIG1kNSgkcGFzc3dvcmQuJGl2X3N1YikpOwogICAgICAgICRzeW1rZXkgLj0gcGFjaygnSConLCBtZDUoJHN5bWtleS4kcGFzc3dvcmQuJGl2X3N1YikpOwogICAgICAgICRrZXkgPSBwcmVnX3JlcGxhY2UoJyNeKD86UHJvYy1UeXBlfERFSy1JbmZvKTogLiojbScsICcnLCAkcGVtKTsKICAgICAgICAkY2lwaGVydGV4dCA9IGJhc2U2NF9kZWNvZGUocHJlZ19yZXBsYWNlKCcjLS4qLXxccnxcbiMnLCAnJywgJGtleSksIHRydWUpOwogICAgICAgIGlmICghaXNfc3RyaW5nKCRjaXBoZXJ0ZXh0KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gZW5jb2RlIHRoZSBkYXRhLicpOwogICAgICAgIH0KCiAgICAgICAgJGRlY29kZWQgPSBvcGVuc3NsX2RlY3J5cHQoJGNpcGhlcnRleHQsIG1iX3N0cnRvbG93ZXIoJG1hdGNoZXNbMV0pLCAkc3lta2V5LCBPUEVOU1NMX1JBV19EQVRBLCAkaXYpOwogICAgICAgIGlmIChmYWxzZSA9PT0gJGRlY29kZWQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byBkZWNyeXB0IHRoZSBrZXknKTsKICAgICAgICB9CiAgICAgICAgJG51bWJlciA9IHByZWdfbWF0Y2hfYWxsKCcjLXs1fS4qLXs1fSMnLCAkcGVtLCAkcmVzdWx0KTsKICAgICAgICBpZiAoMiAhPT0gJG51bWJlcikgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUga2V5Jyk7CiAgICAgICAgfQoKICAgICAgICAkcGVtID0gJHJlc3VsdFswXVswXS5QSFBfRU9MOwogICAgICAgICRwZW0gLj0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkZGVjb2RlZCksIDY0KTsKICAgICAgICAkcGVtIC49ICRyZXN1bHRbMF1bMV0uUEhQX0VPTDsKCiAgICAgICAgcmV0dXJuICRwZW07CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY29udmVydERlclRvUGVtKHN0cmluZyAkZGVyX2RhdGEpOiBzdHJpbmcKICAgIHsKICAgICAgICAkcGVtID0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkZGVyX2RhdGEpLCA2NCwgUEhQX0VPTCk7CgogICAgICAgIHJldHVybiAnLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tJy5QSFBfRU9MLiRwZW0uJy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0nLlBIUF9FT0w7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/KeyConverter/RSAKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcS2V5Q29udmVydGVyOwoKdXNlIGZ1bmN0aW9uIGFycmF5X2tleV9leGlzdHM7CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgZnVuY3Rpb24gZXh0ZW5zaW9uX2xvYWRlZDsKdXNlIGZ1bmN0aW9uIGluX2FycmF5Owp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgZnVuY3Rpb24gaXNfYXJyYXk7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXSzsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxCaWdJbnRlZ2VyOwp1c2UgUnVudGltZUV4Y2VwdGlvbjsKCi8qKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIFJTQUtleQp7CiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkdmFsdWVzID0gW107CgogICAgLyoqCiAgICAgKiBSU0FLZXkgY29uc3RydWN0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGRhdGEpCiAgICB7CiAgICAgICAgJHRoaXMtPmxvYWRKV0soJGRhdGEpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBSU0FLZXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tS2V5RGV0YWlscyhhcnJheSAkZGV0YWlscyk6IHNlbGYKICAgIHsKICAgICAgICAkdmFsdWVzID0gWydrdHknID0+ICdSU0EnXTsKICAgICAgICAka2V5cyA9IFsKICAgICAgICAgICAgJ24nID0+ICduJywKICAgICAgICAgICAgJ2UnID0+ICdlJywKICAgICAgICAgICAgJ2QnID0+ICdkJywKICAgICAgICAgICAgJ3AnID0+ICdwJywKICAgICAgICAgICAgJ3EnID0+ICdxJywKICAgICAgICAgICAgJ2RwJyA9PiAnZG1wMScsCiAgICAgICAgICAgICdkcScgPT4gJ2RtcTEnLAogICAgICAgICAgICAncWknID0+ICdpcW1wJywKICAgICAgICBdOwogICAgICAgIGZvcmVhY2ggKCRkZXRhaWxzIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgka2V5LCAka2V5cywgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IEJhc2U2NFVybDo6ZW5jb2RlKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICAkdmFsdWVzW2FycmF5X3NlYXJjaCgka2V5LCAka2V5cywgdHJ1ZSldID0gJHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24gICAgICAgICBpZiB0aGUgZXh0ZW5zaW9uIE9wZW5TU0wgaXMgbm90IGF2YWlsYWJsZQogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBjYW5ub3QgYmUgbG9hZGVkCiAgICAgKgogICAgICogQHJldHVybiBSU0FLZXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tUEVNKHN0cmluZyAkcGVtKTogc2VsZgogICAgewogICAgICAgIGlmICghZXh0ZW5zaW9uX2xvYWRlZCgnb3BlbnNzbCcpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdQbGVhc2UgaW5zdGFsbCB0aGUgT3BlblNTTCBleHRlbnNpb24nKTsKICAgICAgICB9CiAgICAgICAgJHJlcyA9IG9wZW5zc2xfcGtleV9nZXRfcHJpdmF0ZSgkcGVtKTsKICAgICAgICBpZiAoZmFsc2UgPT09ICRyZXMpIHsKICAgICAgICAgICAgJHJlcyA9IG9wZW5zc2xfcGtleV9nZXRfcHVibGljKCRwZW0pOwogICAgICAgIH0KICAgICAgICBpZiAoZmFsc2UgPT09ICRyZXMpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGtleS4nKTsKICAgICAgICB9CgogICAgICAgICRkZXRhaWxzID0gb3BlbnNzbF9wa2V5X2dldF9kZXRhaWxzKCRyZXMpOwogICAgICAgIGlmICghaXNfYXJyYXkoJGRldGFpbHMpIHx8ICFpc3NldCgkZGV0YWlsc1sncnNhJ10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXkuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6Y3JlYXRlRnJvbUtleURldGFpbHMoJGRldGFpbHNbJ3JzYSddKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gUlNBS2V5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUpXSyhKV0sgJGp3ayk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJGp3ay0+YWxsKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1B1YmxpYygpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICFhcnJheV9rZXlfZXhpc3RzKCdkJywgJHRoaXMtPnZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUlNBS2V5ICRwcml2YXRlCiAgICAgKgogICAgICogQHJldHVybiBSU0FLZXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0b1B1YmxpYyhzZWxmICRwcml2YXRlKTogc2VsZgogICAgewogICAgICAgICRkYXRhID0gJHByaXZhdGUtPnRvQXJyYXkoKTsKICAgICAgICAka2V5cyA9IFsncCcsICdkJywgJ3EnLCAnZHAnLCAnZHEnLCAncWknXTsKICAgICAgICBmb3JlYWNoICgka2V5cyBhcyAka2V5KSB7CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRrZXksICRkYXRhKSkgewogICAgICAgICAgICAgICAgdW5zZXQoJGRhdGFbJGtleV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJGRhdGEpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0b0FycmF5KCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRvSndrKCk6IEpXSwogICAgewogICAgICAgIHJldHVybiBuZXcgSldLKCR0aGlzLT52YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gYWRkIENoaW5lc2UgUmVtYWluZGVyIFRoZW9yZW0gKENSVCkgcGFyYW1ldGVycy4KICAgICAqIFdpdGggdGhvc2UgcHJpbWVzLCB0aGUgZGVjcnlwdGlvbiBwcm9jZXNzIGlzIHJlYWxseSBmYXN0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gb3B0aW1pemUoKTogdm9pZAogICAgewogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdkJywgJHRoaXMtPnZhbHVlcykpIHsKICAgICAgICAgICAgJHRoaXMtPnBvcHVsYXRlQ1JUKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBpcyBpbnZhbGlkIG9yIG5vdCBhbiBSU0Ega2V5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbG9hZEpXSyhhcnJheSAkandrKTogdm9pZAogICAgewogICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygna3R5JywgJGp3aykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVGhlIGtleSBwYXJhbWV0ZXIgImt0eSIgaXMgbWlzc2luZy4nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCdSU0EnICE9PSAkandrWydrdHknXSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgSldLIGlzIG5vdCBhIFJTQSBrZXkuJyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+dmFsdWVzID0gJGp3azsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIGFkZHMgQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbSAoQ1JUKSBwYXJhbWV0ZXJzIGlmIHByaW1lcyAncCcgYW5kICdxJyBhcmUgYXZhaWxhYmxlLgogICAgICogSWYgJ3AnIGFuZCAncScgYXJlIG1pc3NpbmcsIHRoZXkgYXJlIGNvbXB1dGVkIGFuZCBhZGRlZCB0byB0aGUga2V5IGRhdGEuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcG9wdWxhdGVDUlQoKTogdm9pZAogICAgewogICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygncCcsICR0aGlzLT52YWx1ZXMpICYmICFhcnJheV9rZXlfZXhpc3RzKCdxJywgJHRoaXMtPnZhbHVlcykpIHsKICAgICAgICAgICAgJGQgPSBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tQmluYXJ5U3RyaW5nKEJhc2U2NFVybDo6ZGVjb2RlKCR0aGlzLT52YWx1ZXNbJ2QnXSkpOwogICAgICAgICAgICAkZSA9IEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21CaW5hcnlTdHJpbmcoQmFzZTY0VXJsOjpkZWNvZGUoJHRoaXMtPnZhbHVlc1snZSddKSk7CiAgICAgICAgICAgICRuID0gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbUJpbmFyeVN0cmluZyhCYXNlNjRVcmw6OmRlY29kZSgkdGhpcy0+dmFsdWVzWyduJ10pKTsKCiAgICAgICAgICAgIFskcCwgJHFdID0gJHRoaXMtPmZpbmRQcmltZUZhY3RvcnMoJGQsICRlLCAkbik7CiAgICAgICAgICAgICR0aGlzLT52YWx1ZXNbJ3AnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCRwLT50b0J5dGVzKCkpOwogICAgICAgICAgICAkdGhpcy0+dmFsdWVzWydxJ10gPSBCYXNlNjRVcmw6OmVuY29kZSgkcS0+dG9CeXRlcygpKTsKICAgICAgICB9CgogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdkcCcsICR0aGlzLT52YWx1ZXMpICYmIGFycmF5X2tleV9leGlzdHMoJ2RxJywgJHRoaXMtPnZhbHVlcykgJiYgYXJyYXlfa2V5X2V4aXN0cygncWknLCAkdGhpcy0+dmFsdWVzKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkb25lID0gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbURlY2ltYWwoMSk7CiAgICAgICAgJGQgPSBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tQmluYXJ5U3RyaW5nKEJhc2U2NFVybDo6ZGVjb2RlKCR0aGlzLT52YWx1ZXNbJ2QnXSkpOwogICAgICAgICRwID0gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbUJpbmFyeVN0cmluZyhCYXNlNjRVcmw6OmRlY29kZSgkdGhpcy0+dmFsdWVzWydwJ10pKTsKICAgICAgICAkcSA9IEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21CaW5hcnlTdHJpbmcoQmFzZTY0VXJsOjpkZWNvZGUoJHRoaXMtPnZhbHVlc1sncSddKSk7CgogICAgICAgICR0aGlzLT52YWx1ZXNbJ2RwJ10gPSBCYXNlNjRVcmw6OmVuY29kZSgkZC0+bW9kKCRwLT5zdWJ0cmFjdCgkb25lKSktPnRvQnl0ZXMoKSk7CiAgICAgICAgJHRoaXMtPnZhbHVlc1snZHEnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCRkLT5tb2QoJHEtPnN1YnRyYWN0KCRvbmUpKS0+dG9CeXRlcygpKTsKICAgICAgICAkdGhpcy0+dmFsdWVzWydxaSddID0gQmFzZTY0VXJsOjplbmNvZGUoJHEtPm1vZEludmVyc2UoJHApLT50b0J5dGVzKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBwcmltZSBmYWN0b3JzIGNhbm5vdCBiZSBmb3VuZAogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcltdCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZmluZFByaW1lRmFjdG9ycyhCaWdJbnRlZ2VyICRkLCBCaWdJbnRlZ2VyICRlLCBCaWdJbnRlZ2VyICRuKTogYXJyYXkKICAgIHsKICAgICAgICAkemVybyA9IEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21EZWNpbWFsKDApOwogICAgICAgICRvbmUgPSBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tRGVjaW1hbCgxKTsKICAgICAgICAkdHdvID0gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbURlY2ltYWwoMik7CgogICAgICAgICRrID0gJGQtPm11bHRpcGx5KCRlKS0+c3VidHJhY3QoJG9uZSk7CgogICAgICAgIGlmICgkay0+aXNFdmVuKCkpIHsKICAgICAgICAgICAgJHIgPSAkazsKICAgICAgICAgICAgJHQgPSAkemVybzsKCiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICRyID0gJHItPmRpdmlkZSgkdHdvKTsKICAgICAgICAgICAgICAgICR0ID0gJHQtPmFkZCgkb25lKTsKICAgICAgICAgICAgfSB3aGlsZSAoJHItPmlzRXZlbigpKTsKCiAgICAgICAgICAgICRmb3VuZCA9IGZhbHNlOwogICAgICAgICAgICAkeSA9IG51bGw7CgogICAgICAgICAgICBmb3IgKCRpID0gMTsgJGkgPD0gMTAwOyArKyRpKSB7CiAgICAgICAgICAgICAgICAkZyA9IEJpZ0ludGVnZXI6OnJhbmRvbSgkbi0+c3VidHJhY3QoJG9uZSkpOwogICAgICAgICAgICAgICAgJHkgPSAkZy0+bW9kUG93KCRyLCAkbik7CgogICAgICAgICAgICAgICAgaWYgKCR5LT5lcXVhbHMoJG9uZSkgfHwgJHktPmVxdWFscygkbi0+c3VidHJhY3QoJG9uZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZm9yICgkaiA9ICRvbmU7ICRqLT5sb3dlclRoYW4oJHQtPnN1YnRyYWN0KCRvbmUpKTsgJGogPSAkai0+YWRkKCRvbmUpKSB7CiAgICAgICAgICAgICAgICAgICAgJHggPSAkeS0+bW9kUG93KCR0d28sICRuKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCR4LT5lcXVhbHMoJG9uZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZvdW5kID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCR4LT5lcXVhbHMoJG4tPnN1YnRyYWN0KCRvbmUpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICR5ID0gJHg7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHggPSAkeS0+bW9kUG93KCR0d28sICRuKTsKICAgICAgICAgICAgICAgIGlmICgkeC0+ZXF1YWxzKCRvbmUpKSB7CiAgICAgICAgICAgICAgICAgICAgJGZvdW5kID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG51bGwgPT09ICR5KSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gZmluZCBwcmltZSBmYWN0b3JzLicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0cnVlID09PSAkZm91bmQpIHsKICAgICAgICAgICAgICAgICRwID0gJHktPnN1YnRyYWN0KCRvbmUpLT5nY2QoJG4pOwogICAgICAgICAgICAgICAgJHEgPSAkbi0+ZGl2aWRlKCRwKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gWyRwLCAkcV07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBmaW5kIHByaW1lIGZhY3RvcnMuJyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOSBTcG9ta3ktTGFicwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UEhQIEpXVCBLZXkgTWFuYWdlbWVudCBDb21wb25lbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClRoaXMgcmVwb3NpdG9yeSBpcyBhIHN1YiByZXBvc2l0b3J5IG9mIFt0aGUgSldUIEZyYW1ld29ya10oaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3QtZnJhbWV3b3JrKSBwcm9qZWN0IGFuZCBpcyBSRUFEIE9OTFkuCgoqKlBsZWFzZSBkbyBub3Qgc3VibWl0IGFueSBQdWxsIFJlcXVlc3QgaGVyZS4qKgpZb3Ugc2hvdWxkIGdvIHRvIFt0aGUgbWFpbiByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1mcmFtZXdvcmspIGluc3RlYWQuCgojIERvY3VtZW50YXRpb24KClRoZSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhcyBodHRwczovL3dlYi10b2tlbi5zcG9ta3ktbGFicy5jb20vIAoKIyBMaWNlbmNlCgpUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2UgdW5kZXIgW01JVCBsaWNlbmNlXShMSUNFTlNFKS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/UrlKeySetFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnQ7Cgp1c2UgUHNyXEh0dHBcQ2xpZW50XENsaWVudEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEZhY3RvcnlJbnRlcmZhY2U7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwoKYWJzdHJhY3QgY2xhc3MgVXJsS2V5U2V0RmFjdG9yeQp7CiAgICAvKioKICAgICAqIEB2YXIgQ2xpZW50SW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJGNsaWVudDsKCiAgICAvKioKICAgICAqIEB2YXIgUmVxdWVzdEZhY3RvcnlJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkcmVxdWVzdEZhY3Rvcnk7CgogICAgLyoqCiAgICAgKiBVcmxLZXlTZXRGYWN0b3J5IGNvbnN0cnVjdG9yLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ2xpZW50SW50ZXJmYWNlICRjbGllbnQsIFJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlICRyZXF1ZXN0RmFjdG9yeSkKICAgIHsKICAgICAgICAkdGhpcy0+Y2xpZW50ID0gJGNsaWVudDsKICAgICAgICAkdGhpcy0+cmVxdWVzdEZhY3RvcnkgPSAkcmVxdWVzdEZhY3Rvcnk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIHJlc3BvbnNlIGNvbnRlbnQgaXMgaW52YWxpZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0Q29udGVudChzdHJpbmcgJHVybCwgYXJyYXkgJGhlYWRlciA9IFtdKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHJlcXVlc3QgPSAkdGhpcy0+cmVxdWVzdEZhY3RvcnktPmNyZWF0ZVJlcXVlc3QoJ0dFVCcsICR1cmwpOwogICAgICAgIGZvcmVhY2ggKCRoZWFkZXIgYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgJHJlcXVlc3QgPSAkcmVxdWVzdC0+d2l0aEhlYWRlcigkaywgJHYpOwogICAgICAgIH0KICAgICAgICAkcmVzcG9uc2UgPSAkdGhpcy0+Y2xpZW50LT5zZW5kUmVxdWVzdCgkcmVxdWVzdCk7CgogICAgICAgIGlmICgkcmVzcG9uc2UtPmdldFN0YXR1c0NvZGUoKSA+PSA0MDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byBnZXQgdGhlIGtleSBzZXQuJywgJHJlc3BvbnNlLT5nZXRTdGF0dXNDb2RlKCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXNwb25zZS0+Z2V0Qm9keSgpLT5nZXRDb250ZW50cygpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/X5UFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnQ7Cgp1c2UgZnVuY3Rpb24gaXNfYXJyYXk7CnVzZSBmdW5jdGlvbiBpc19zdHJpbmc7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXSzsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLU2V0Owp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEpzb25Db252ZXJ0ZXI7CnVzZSBKb3NlXENvbXBvbmVudFxLZXlNYW5hZ2VtZW50XEtleUNvbnZlcnRlclxLZXlDb252ZXJ0ZXI7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwoKY2xhc3MgWDVVRmFjdG9yeSBleHRlbmRzIFVybEtleVNldEZhY3RvcnkKewogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHRyeSB0byBmZXRjaCB0aGUgdXJsIGEgcmV0cmlldmUgdGhlIGtleSBzZXQuCiAgICAgKiBUaHJvd3MgYW4gZXhjZXB0aW9uIGluIGNhc2Ugb2YgZmFpbHVyZS4KICAgICAqCiAgICAgKiBAdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIHJlc3BvbnNlIGNvbnRlbnQgaXMgaW52YWxpZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZEZyb21Vcmwoc3RyaW5nICR1cmwsIGFycmF5ICRoZWFkZXIgPSBbXSk6IEpXS1NldAogICAgewogICAgICAgICRjb250ZW50ID0gJHRoaXMtPmdldENvbnRlbnQoJHVybCwgJGhlYWRlcik7CiAgICAgICAgJGRhdGEgPSBKc29uQ29udmVydGVyOjpkZWNvZGUoJGNvbnRlbnQpOwogICAgICAgIGlmICghaXNfYXJyYXkoJGRhdGEpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdJbnZhbGlkIGNvbnRlbnQuJyk7CiAgICAgICAgfQoKICAgICAgICAka2V5cyA9IFtdOwogICAgICAgIGZvcmVhY2ggKCRkYXRhIGFzICRraWQgPT4gJGNlcnQpIHsKICAgICAgICAgICAgaWYgKGZhbHNlID09PSBtYl9zdHJwb3MoJGNlcnQsICctLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0nKSkgewogICAgICAgICAgICAgICAgJGNlcnQgPSAnLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tJy5QSFBfRU9MLiRjZXJ0LlBIUF9FT0wuJy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0nOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRqd2sgPSBLZXlDb252ZXJ0ZXI6OmxvYWRLZXlGcm9tQ2VydGlmaWNhdGUoJGNlcnQpOwogICAgICAgICAgICBpZiAoaXNfc3RyaW5nKCRraWQpKSB7CiAgICAgICAgICAgICAgICAkandrWydraWQnXSA9ICRraWQ7CiAgICAgICAgICAgICAgICAka2V5c1ska2lkXSA9IG5ldyBKV0soJGp3ayk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAka2V5c1tdID0gbmV3IEpXSygkandrKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBKV0tTZXQoJGtleXMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature-algorithm-ecdsa/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature-algorithm-ecdsa/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVjZHNhIiwKICAgICJkZXNjcmlwdGlvbiI6ICJFQ0RTQSBCYXNlZCBTaWduYXR1cmUgQWxnb3JpdGhtcyB0aGUgSldUIEZyYW1ld29yay4iLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImtleXdvcmRzIjogWyJKV1MiLCAiSldUIiwgIkpXRSIsICJKV0EiLCAiSldLIiwgIkpXS1NldCIsICJKb3QiLCAiSm9zZSIsICJSRkM3NTE1IiwgIlJGQzc1MTYiLCAiUkZDNzUxNyIsICJSRkM3NTE4IiwgIlJGQzc1MTkiLCAiUkZDNzUyMCIsICJCdW5kbGUiLCAiU3ltZm9ueSJdLAogICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4iLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgfSx7CiAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3QtZnJhbWV3b3JrL2NvbnRyaWJ1dG9ycyIKICAgICAgICB9CiAgICBdLAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkpvc2VcXENvbXBvbmVudFxcU2lnbmF0dXJlXFxBbGdvcml0aG1cXCI6ICAiIgogICAgICAgIH0KICAgIH0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAiZXh0LW9wZW5zc2wiOiAiKiIsCiAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlIjogIl4yLjAiCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature-algorithm-ecdsa/ECDSA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxBbGdvcml0aG07Cgp1c2UgZnVuY3Rpb24gZGVmaW5lZDsKdXNlIGZ1bmN0aW9uIGluX2FycmF5Owp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXFV0aWxcRUNLZXk7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXFV0aWxcRUNTaWduYXR1cmU7CnVzZSBMb2dpY0V4Y2VwdGlvbjsKdXNlIFRocm93YWJsZTsKCmFic3RyYWN0IGNsYXNzIEVDRFNBIGltcGxlbWVudHMgU2lnbmF0dXJlQWxnb3JpdGhtCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgaWYgKCFkZWZpbmVkKCdPUEVOU1NMX0tFWVRZUEVfRUMnKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oJ0VsbGlwdGljIEN1cnZlIGtleSB0eXBlIG5vdCBzdXBwb3J0ZWQgYnkgeW91ciBlbnZpcm9ubWVudC4nKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFsbG93ZWRLZXlUeXBlcygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBbJ0VDJ107CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNpZ24oSldLICRrZXksIHN0cmluZyAkaW5wdXQpOiBzdHJpbmcKICAgIHsKICAgICAgICAkdGhpcy0+Y2hlY2tLZXkoJGtleSk7CiAgICAgICAgaWYgKCEka2V5LT5oYXMoJ2QnKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgRUMga2V5IGlzIG5vdCBwcml2YXRlJyk7CiAgICAgICAgfQogICAgICAgICRwZW0gPSBFQ0tleTo6Y29udmVydFByaXZhdGVLZXlUb1BFTSgka2V5KTsKICAgICAgICBvcGVuc3NsX3NpZ24oJGlucHV0LCAkc2lnbmF0dXJlLCAkcGVtLCAkdGhpcy0+Z2V0SGFzaEFsZ29yaXRobSgpKTsKCiAgICAgICAgcmV0dXJuIEVDU2lnbmF0dXJlOjpmcm9tQXNuMSgkc2lnbmF0dXJlLCAkdGhpcy0+Z2V0U2lnbmF0dXJlUGFydExlbmd0aCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmVyaWZ5KEpXSyAka2V5LCBzdHJpbmcgJGlucHV0LCBzdHJpbmcgJHNpZ25hdHVyZSk6IGJvb2wKICAgIHsKICAgICAgICAkdGhpcy0+Y2hlY2tLZXkoJGtleSk7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRkZXIgPSBFQ1NpZ25hdHVyZTo6dG9Bc24xKCRzaWduYXR1cmUsICR0aGlzLT5nZXRTaWduYXR1cmVQYXJ0TGVuZ3RoKCkpOwogICAgICAgICAgICAkcGVtID0gRUNLZXk6OmNvbnZlcnRQdWJsaWNLZXlUb1BFTSgka2V5KTsKCiAgICAgICAgICAgIHJldHVybiAxID09PSBvcGVuc3NsX3ZlcmlmeSgkaW5wdXQsICRkZXIsICRwZW0sICR0aGlzLT5nZXRIYXNoQWxnb3JpdGhtKCkpOwogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBnZXRIYXNoQWxnb3JpdGhtKCk6IHN0cmluZzsKCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlUGFydExlbmd0aCgpOiBpbnQ7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja0tleShKV0sgJGtleSk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIWluX2FycmF5KCRrZXktPmdldCgna3R5JyksICR0aGlzLT5hbGxvd2VkS2V5VHlwZXMoKSwgdHJ1ZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignV3Jvbmcga2V5IHR5cGUuJyk7CiAgICAgICAgfQogICAgICAgIGZvcmVhY2ggKFsneCcsICd5JywgJ2NydiddIGFzICRrKSB7CiAgICAgICAgICAgIGlmICghJGtleS0+aGFzKCRrKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUga2V5IHBhcmFtZXRlciAiJXMiIGlzIG1pc3NpbmcuJywgJGspKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature-algorithm-ecdsa/ES256.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxBbGdvcml0aG07CgpmaW5hbCBjbGFzcyBFUzI1NiBleHRlbmRzIEVDRFNBCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBuYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnRVMyNTYnOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRIYXNoQWxnb3JpdGhtKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnc2hhMjU2JzsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlUGFydExlbmd0aCgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gNjQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature-algorithm-ecdsa/ES384.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxBbGdvcml0aG07CgpmaW5hbCBjbGFzcyBFUzM4NCBleHRlbmRzIEVDRFNBCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBuYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnRVMzODQnOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRIYXNoQWxnb3JpdGhtKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnc2hhMzg0JzsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlUGFydExlbmd0aCgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gOTY7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature-algorithm-ecdsa/ES512.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxBbGdvcml0aG07CgpmaW5hbCBjbGFzcyBFUzUxMiBleHRlbmRzIEVDRFNBCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBuYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnRVM1MTInOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRIYXNoQWxnb3JpdGhtKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnc2hhNTEyJzsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlUGFydExlbmd0aCgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gMTMyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature-algorithm-ecdsa/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOSBTcG9ta3ktTGFicwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature-algorithm-ecdsa/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[RUNEU0EgQmFzZWQgU2lnbmF0dXJlIEFsZ29yaXRobXMgRm9yIEpXVC1GcmFtZXdvcmsKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClRoaXMgcmVwb3NpdG9yeSBpcyBhIHN1YiByZXBvc2l0b3J5IG9mIFt0aGUgSldUIEZyYW1ld29ya10oaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3QtZnJhbWV3b3JrKSBwcm9qZWN0IGFuZCBpcyBSRUFEIE9OTFkuCgoqKlBsZWFzZSBkbyBub3Qgc3VibWl0IGFueSBQdWxsIFJlcXVlc3QgaGVyZS4qKgpZb3Ugc2hvdWxkIGdvIHRvIFt0aGUgbWFpbiByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1mcmFtZXdvcmspIGluc3RlYWQuCgojIERvY3VtZW50YXRpb24KClRoZSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhcyBodHRwczovL3dlYi10b2tlbi5zcG9ta3ktbGFicy5jb20vIAoKIyBMaWNlbmNlCgpUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2UgdW5kZXIgW01JVCBsaWNlbmNlXShMSUNFTlNFKS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Algorithm/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Algorithm/MacAlgorithm.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxBbGdvcml0aG07Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxBbGdvcml0aG07CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXSzsKCmludGVyZmFjZSBNYWNBbGdvcml0aG0gZXh0ZW5kcyBBbGdvcml0aG0KewogICAgLyoqCiAgICAgKiBTaWduIHRoZSBpbnB1dC4KICAgICAqCiAgICAgKiBAcGFyYW0gSldLICAgICRrZXkgICBUaGUgcHJpdmF0ZSBrZXkgdXNlZCB0byBoYXNoIHRoZSBkYXRhCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpbnB1dCBUaGUgaW5wdXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc2goSldLICRrZXksIHN0cmluZyAkaW5wdXQpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBWZXJpZnkgdGhlIHNpZ25hdHVyZSBvZiBkYXRhLgogICAgICoKICAgICAqIEBwYXJhbSBKV0sgICAgJGtleSAgICAgICBUaGUgcHJpdmF0ZSBrZXkgdXNlZCB0byBoYXNoIHRoZSBkYXRhCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpbnB1dCAgICAgVGhlIGlucHV0CiAgICAgKiBAcGFyYW0gc3RyaW5nICRzaWduYXR1cmUgVGhlIHNpZ25hdHVyZSB0byB2ZXJpZnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZlcmlmeShKV0sgJGtleSwgc3RyaW5nICRpbnB1dCwgc3RyaW5nICRzaWduYXR1cmUpOiBib29sOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Algorithm/SignatureAlgorithm.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxBbGdvcml0aG07Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxBbGdvcml0aG07CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXSzsKCmludGVyZmFjZSBTaWduYXR1cmVBbGdvcml0aG0gZXh0ZW5kcyBBbGdvcml0aG0KewogICAgLyoqCiAgICAgKiBTaWduIHRoZSBpbnB1dC4KICAgICAqCiAgICAgKiBAcGFyYW0gSldLICAgICRrZXkgICBUaGUgcHJpdmF0ZSBrZXkgdXNlZCB0byBzaWduIHRoZSBkYXRhCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpbnB1dCBUaGUgaW5wdXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNpZ24oSldLICRrZXksIHN0cmluZyAkaW5wdXQpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBWZXJpZnkgdGhlIHNpZ25hdHVyZSBvZiBkYXRhLgogICAgICoKICAgICAqIEBwYXJhbSBKV0sgICAgJGtleSAgICAgICBUaGUgcHJpdmF0ZSBrZXkgdXNlZCB0byBzaWduIHRoZSBkYXRhCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpbnB1dCAgICAgVGhlIGlucHV0CiAgICAgKiBAcGFyYW0gc3RyaW5nICRzaWduYXR1cmUgVGhlIHNpZ25hdHVyZSB0byB2ZXJpZnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZlcmlmeShKV0sgJGtleSwgc3RyaW5nICRpbnB1dCwgc3RyaW5nICRzaWduYXR1cmUpOiBib29sOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUiLAogICAgImRlc2NyaXB0aW9uIjogIlNpZ25hdHVyZSBjb21wb25lbnQgb2YgdGhlIEpXVCBGcmFtZXdvcmsuIiwKICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgICJrZXl3b3JkcyI6IFsiSldTIiwgIkpXVCIsICJKV0UiLCAiSldBIiwgIkpXSyIsICJKV0tTZXQiLCAiSm90IiwgIkpvc2UiLCAiUkZDNzUxNSIsICJSRkM3NTE2IiwgIlJGQzc1MTciLCAiUkZDNzUxOCIsICJSRkM3NTE5IiwgIlJGQzc1MjAiLCAiQnVuZGxlIiwgIlN5bWZvbnkiXSwKICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuIiwKICAgICJhdXRob3JzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5IgogICAgICAgIH0sewogICAgICAgICAgICAibmFtZSI6ICJBbGwgY29udHJpYnV0b3JzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LXNpZ25hdHVyZS9jb250cmlidXRvcnMiCiAgICAgICAgfQogICAgXSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJKb3NlXFxDb21wb25lbnRcXFNpZ25hdHVyZVxcIjogICIiCiAgICAgICAgfQogICAgfSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJ3ZWItdG9rZW4vand0LWNvcmUiOiAiXjIuMSIKICAgIH0sCiAgICAic3VnZ2VzdCI6IHsKICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVjZHNhIjogIkVDRFNBIEJhc2VkIFNpZ25hdHVyZSBBbGdvcml0aG1zIiwKICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVkZHNhIjogIkVkRFNBIEJhc2VkIFNpZ25hdHVyZSBBbGdvcml0aG1zIiwKICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWhtYWMiOiAiSE1BQyBCYXNlZCBTaWduYXR1cmUgQWxnb3JpdGhtcyIsCiAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1ub25lIjogIk5vbmUgU2lnbmF0dXJlIEFsZ29yaXRobSIsCiAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1yc2EiOiAiUlNBIEJhc2VkIFNpZ25hdHVyZSBBbGdvcml0aG1zIiwKICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWV4cGVyaW1lbnRhbCI6ICJFeHBlcmltZW50YWwgU2lnbmF0dXJlIEFsZ29yaXRobXMiCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/JWS.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBmdW5jdGlvbiBjb3VudDsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldUOwoKY2xhc3MgSldTIGltcGxlbWVudHMgSldUCnsKICAgIC8qKgogICAgICogQHZhciBib29sCiAgICAgKi8KICAgIHByaXZhdGUgJGlzUGF5bG9hZERldGFjaGVkID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIG51bGx8c3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJGVuY29kZWRQYXlsb2FkOwoKICAgIC8qKgogICAgICogQHZhciBTaWduYXR1cmVbXQogICAgICovCiAgICBwcml2YXRlICRzaWduYXR1cmVzID0gW107CgogICAgLyoqCiAgICAgKiBAdmFyIG51bGx8c3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJHBheWxvYWQ7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KD9zdHJpbmcgJHBheWxvYWQsID9zdHJpbmcgJGVuY29kZWRQYXlsb2FkID0gbnVsbCwgYm9vbCAkaXNQYXlsb2FkRGV0YWNoZWQgPSBmYWxzZSkKICAgIHsKICAgICAgICAkdGhpcy0+cGF5bG9hZCA9ICRwYXlsb2FkOwogICAgICAgICR0aGlzLT5lbmNvZGVkUGF5bG9hZCA9ICRlbmNvZGVkUGF5bG9hZDsKICAgICAgICAkdGhpcy0+aXNQYXlsb2FkRGV0YWNoZWQgPSAkaXNQYXlsb2FkRGV0YWNoZWQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFBheWxvYWQoKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGF5bG9hZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGF5bG9hZCBpcyBkZXRhY2hlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUGF5bG9hZERldGFjaGVkKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmlzUGF5bG9hZERldGFjaGVkOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgQmFzZTY0VXJsIGVuY29kZWQgcGF5bG9hZC4KICAgICAqIElmIHRoZSBwYXlsb2FkIGlzIGRldGFjaGVkLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbmNvZGVkUGF5bG9hZCgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgaWYgKHRydWUgPT09ICR0aGlzLT5pc1BheWxvYWREZXRhY2hlZCgpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5lbmNvZGVkUGF5bG9hZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHNpZ25hdHVyZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBKV1MuCiAgICAgKgogICAgICogQHJldHVybiBTaWduYXR1cmVbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlcygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2lnbmF0dXJlczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHNpZ25hdHVyZSBhdCB0aGUgZ2l2ZW4gaW5kZXguCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHNpZ25hdHVyZSBpbmRleCBkb2VzIG5vdCBleGlzdAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlKGludCAkaWQpOiBTaWduYXR1cmUKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNpZ25hdHVyZXNbJGlkXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zaWduYXR1cmVzWyRpZF07CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgc2lnbmF0dXJlIGRvZXMgbm90IGV4aXN0LicpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2QgYWRkcyBhIHNpZ25hdHVyZSB0byB0aGUgSldTIG9iamVjdC4KICAgICAqIEl0cyByZXR1cm5zIGEgbmV3IEpXUyBvYmplY3QuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKgogICAgICogQHJldHVybiBKV1MKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFNpZ25hdHVyZShzdHJpbmcgJHNpZ25hdHVyZSwgYXJyYXkgJHByb3RlY3RlZEhlYWRlciwgP3N0cmluZyAkZW5jb2RlZFByb3RlY3RlZEhlYWRlciwgYXJyYXkgJGhlYWRlciA9IFtdKTogc2VsZgogICAgewogICAgICAgICRqd3MgPSBjbG9uZSAkdGhpczsKICAgICAgICAkandzLT5zaWduYXR1cmVzW10gPSBuZXcgU2lnbmF0dXJlKCRzaWduYXR1cmUsICRwcm90ZWN0ZWRIZWFkZXIsICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyLCAkaGVhZGVyKTsKCiAgICAgICAgcmV0dXJuICRqd3M7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc2lnbmF0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgSldTLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnRTaWduYXR1cmVzKCk6IGludAogICAgewogICAgICAgIHJldHVybiBjb3VudCgkdGhpcy0+c2lnbmF0dXJlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBzcGxpdHMgdGhlIEpXUyBpbnRvIGEgbGlzdCBvZiBKV1NzLgogICAgICogSXQgaXMgb25seSB1c2VmdWwgd2hlbiB0aGUgSldTIGNvbnRhaW5zIG1vcmUgdGhhbiBvbmUgc2lnbmF0dXJlIChKU09OIEdlbmVyYWwgU2VyaWFsaXphdGlvbikuCiAgICAgKgogICAgICogQHJldHVybiBKV1NbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3BsaXQoKTogYXJyYXkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gW107CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnNpZ25hdHVyZXMgYXMgJHNpZ25hdHVyZSkgewogICAgICAgICAgICAkandzID0gbmV3IHNlbGYoCiAgICAgICAgICAgICAgICAkdGhpcy0+cGF5bG9hZCwKICAgICAgICAgICAgICAgICR0aGlzLT5lbmNvZGVkUGF5bG9hZCwKICAgICAgICAgICAgICAgICR0aGlzLT5pc1BheWxvYWREZXRhY2hlZAogICAgICAgICAgICApOwogICAgICAgICAgICAkandzID0gJGp3cy0+YWRkU2lnbmF0dXJlKAogICAgICAgICAgICAgICAgJHNpZ25hdHVyZS0+Z2V0U2lnbmF0dXJlKCksCiAgICAgICAgICAgICAgICAkc2lnbmF0dXJlLT5nZXRQcm90ZWN0ZWRIZWFkZXIoKSwKICAgICAgICAgICAgICAgICRzaWduYXR1cmUtPmdldEVuY29kZWRQcm90ZWN0ZWRIZWFkZXIoKSwKICAgICAgICAgICAgICAgICRzaWduYXR1cmUtPmdldEhlYWRlcigpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkcmVzdWx0W10gPSAkandzOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/JWSBuilder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBmdW5jdGlvbiBhcnJheV9rZXlfZXhpc3RzOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIGZ1bmN0aW9uIGNvdW50Owp1c2UgZnVuY3Rpb24gaW5fYXJyYXk7CnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBmdW5jdGlvbiBpc19hcnJheTsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcQWxnb3JpdGhtOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxBbGdvcml0aG1NYW5hZ2VyOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXFV0aWxcSnNvbkNvbnZlcnRlcjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxLZXlDaGVja2VyOwp1c2UgSm9zZVxDb21wb25lbnRcU2lnbmF0dXJlXEFsZ29yaXRobVxNYWNBbGdvcml0aG07CnVzZSBKb3NlXENvbXBvbmVudFxTaWduYXR1cmVcQWxnb3JpdGhtXFNpZ25hdHVyZUFsZ29yaXRobTsKdXNlIExvZ2ljRXhjZXB0aW9uOwp1c2UgUnVudGltZUV4Y2VwdGlvbjsKCmNsYXNzIEpXU0J1aWxkZXIKewogICAgLyoqCiAgICAgKiBAdmFyIG51bGx8c3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCAkcGF5bG9hZDsKCiAgICAvKioKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgJGlzUGF5bG9hZERldGFjaGVkOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgJHNpZ25hdHVyZXMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgbnVsbHxib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCAkaXNQYXlsb2FkRW5jb2RlZDsKCiAgICAvKioKICAgICAqIEB2YXIgQWxnb3JpdGhtTWFuYWdlcgogICAgICovCiAgICBwcml2YXRlICRzaWduYXR1cmVBbGdvcml0aG1NYW5hZ2VyOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChBbGdvcml0aG1NYW5hZ2VyICRzaWduYXR1cmVBbGdvcml0aG1NYW5hZ2VyKQogICAgewogICAgICAgICR0aGlzLT5zaWduYXR1cmVBbGdvcml0aG1NYW5hZ2VyID0gJHNpZ25hdHVyZUFsZ29yaXRobU1hbmFnZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBhbGdvcml0aG0gbWFuYWdlciBhc3NvY2lhdGVkIHRvIHRoZSBidWlsZGVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlQWxnb3JpdGhtTWFuYWdlcigpOiBBbGdvcml0aG1NYW5hZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zaWduYXR1cmVBbGdvcml0aG1NYW5hZ2VyOwogICAgfQoKICAgIC8qKgogICAgICogUmVzZXQgdGhlIGN1cnJlbnQgZGF0YS4KICAgICAqCiAgICAgKiBAcmV0dXJuIEpXU0J1aWxkZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZSgpOiBzZWxmCiAgICB7CiAgICAgICAgJHRoaXMtPnBheWxvYWQgPSBudWxsOwogICAgICAgICR0aGlzLT5pc1BheWxvYWREZXRhY2hlZCA9IGZhbHNlOwogICAgICAgICR0aGlzLT5zaWduYXR1cmVzID0gW107CiAgICAgICAgJHRoaXMtPmlzUGF5bG9hZEVuY29kZWQgPSBudWxsOwoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIHBheWxvYWQuCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBhIG5ldyBKV1NCdWlsZGVyIG9iamVjdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgcGF5bG9hZCBpcyBub3QgVVRGLTggZW5jb2RlZAogICAgICoKICAgICAqIEByZXR1cm4gSldTQnVpbGRlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFBheWxvYWQoc3RyaW5nICRwYXlsb2FkLCBib29sICRpc1BheWxvYWREZXRhY2hlZCA9IGZhbHNlKTogc2VsZgogICAgewogICAgICAgIGlmIChmYWxzZSA9PT0gbWJfZGV0ZWN0X2VuY29kaW5nKCRwYXlsb2FkLCAnVVRGLTgnLCB0cnVlKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgcGF5bG9hZCBtdXN0IGJlIGVuY29kZWQgaW4gVVRGLTgnKTsKICAgICAgICB9CiAgICAgICAgJGNsb25lID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGNsb25lLT5wYXlsb2FkID0gJHBheWxvYWQ7CiAgICAgICAgJGNsb25lLT5pc1BheWxvYWREZXRhY2hlZCA9ICRpc1BheWxvYWREZXRhY2hlZDsKCiAgICAgICAgcmV0dXJuICRjbG9uZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZHMgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBjb21wdXRlIHRoZSBzaWduYXR1cmUuCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBhIG5ldyBKV1NCdWlsZGVyIG9iamVjdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgcGF5bG9hZCBlbmNvZGluZyBpcyBpbmNvbnNpc3RlbnQKICAgICAqCiAgICAgKiBAcmV0dXJuIEpXU0J1aWxkZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFNpZ25hdHVyZShKV0sgJHNpZ25hdHVyZUtleSwgYXJyYXkgJHByb3RlY3RlZEhlYWRlciwgYXJyYXkgJGhlYWRlciA9IFtdKTogc2VsZgogICAgewogICAgICAgICR0aGlzLT5jaGVja0I2NEFuZENyaXRpY2FsSGVhZGVyKCRwcm90ZWN0ZWRIZWFkZXIpOwogICAgICAgICRpc1BheWxvYWRFbmNvZGVkID0gJHRoaXMtPmNoZWNrSWZQYXlsb2FkSXNFbmNvZGVkKCRwcm90ZWN0ZWRIZWFkZXIpOwogICAgICAgIGlmIChudWxsID09PSAkdGhpcy0+aXNQYXlsb2FkRW5jb2RlZCkgewogICAgICAgICAgICAkdGhpcy0+aXNQYXlsb2FkRW5jb2RlZCA9ICRpc1BheWxvYWRFbmNvZGVkOwogICAgICAgIH0gZWxzZWlmICgkdGhpcy0+aXNQYXlsb2FkRW5jb2RlZCAhPT0gJGlzUGF5bG9hZEVuY29kZWQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignRm9yZWlnbiBwYXlsb2FkIGVuY29kaW5nIGRldGVjdGVkLicpOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+Y2hlY2tEdXBsaWNhdGVkSGVhZGVyUGFyYW1ldGVycygkcHJvdGVjdGVkSGVhZGVyLCAkaGVhZGVyKTsKICAgICAgICBLZXlDaGVja2VyOjpjaGVja0tleVVzYWdlKCRzaWduYXR1cmVLZXksICdzaWduYXR1cmUnKTsKICAgICAgICAkYWxnb3JpdGhtID0gJHRoaXMtPmZpbmRTaWduYXR1cmVBbGdvcml0aG0oJHNpZ25hdHVyZUtleSwgJHByb3RlY3RlZEhlYWRlciwgJGhlYWRlcik7CiAgICAgICAgS2V5Q2hlY2tlcjo6Y2hlY2tLZXlBbGdvcml0aG0oJHNpZ25hdHVyZUtleSwgJGFsZ29yaXRobS0+bmFtZSgpKTsKICAgICAgICAkY2xvbmUgPSBjbG9uZSAkdGhpczsKICAgICAgICAkY2xvbmUtPnNpZ25hdHVyZXNbXSA9IFsKICAgICAgICAgICAgJ3NpZ25hdHVyZV9hbGdvcml0aG0nID0+ICRhbGdvcml0aG0sCiAgICAgICAgICAgICdzaWduYXR1cmVfa2V5JyA9PiAkc2lnbmF0dXJlS2V5LAogICAgICAgICAgICAncHJvdGVjdGVkX2hlYWRlcicgPT4gJHByb3RlY3RlZEhlYWRlciwKICAgICAgICAgICAgJ2hlYWRlcicgPT4gJGhlYWRlciwKICAgICAgICBdOwoKICAgICAgICByZXR1cm4gJGNsb25lOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcHV0ZXMgYWxsIHNpZ25hdHVyZXMgYW5kIHJldHVybiB0aGUgZXhwZWN0ZWQgSldTIG9iamVjdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIHBheWxvYWQgaXMgbm90IHNldAogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIG5vIHNpZ25hdHVyZSBpcyBkZWZpbmVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBidWlsZCgpOiBKV1MKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHRoaXMtPnBheWxvYWQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1RoZSBwYXlsb2FkIGlzIG5vdCBzZXQuJyk7CiAgICAgICAgfQogICAgICAgIGlmICgwID09PSBjb3VudCgkdGhpcy0+c2lnbmF0dXJlcykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ0F0IGxlYXN0IG9uZSBzaWduYXR1cmUgbXVzdCBiZSBzZXQuJyk7CiAgICAgICAgfQoKICAgICAgICAkZW5jb2RlZFBheWxvYWQgPSBmYWxzZSA9PT0gJHRoaXMtPmlzUGF5bG9hZEVuY29kZWQgPyAkdGhpcy0+cGF5bG9hZCA6IEJhc2U2NFVybDo6ZW5jb2RlKCR0aGlzLT5wYXlsb2FkKTsKICAgICAgICAkandzID0gbmV3IEpXUygkdGhpcy0+cGF5bG9hZCwgJGVuY29kZWRQYXlsb2FkLCAkdGhpcy0+aXNQYXlsb2FkRGV0YWNoZWQpOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5zaWduYXR1cmVzIGFzICRzaWduYXR1cmUpIHsKICAgICAgICAgICAgLyoqIEB2YXIgTWFjQWxnb3JpdGhtfFNpZ25hdHVyZUFsZ29yaXRobSAkYWxnb3JpdGhtICovCiAgICAgICAgICAgICRhbGdvcml0aG0gPSAkc2lnbmF0dXJlWydzaWduYXR1cmVfYWxnb3JpdGhtJ107CiAgICAgICAgICAgIC8qKiBAdmFyIEpXSyAkc2lnbmF0dXJlS2V5ICovCiAgICAgICAgICAgICRzaWduYXR1cmVLZXkgPSAkc2lnbmF0dXJlWydzaWduYXR1cmVfa2V5J107CiAgICAgICAgICAgIC8qKiBAdmFyIGFycmF5ICRwcm90ZWN0ZWRIZWFkZXIgKi8KICAgICAgICAgICAgJHByb3RlY3RlZEhlYWRlciA9ICRzaWduYXR1cmVbJ3Byb3RlY3RlZF9oZWFkZXInXTsKICAgICAgICAgICAgLyoqIEB2YXIgYXJyYXkgJGhlYWRlciAqLwogICAgICAgICAgICAkaGVhZGVyID0gJHNpZ25hdHVyZVsnaGVhZGVyJ107CiAgICAgICAgICAgICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyID0gMCA9PT0gY291bnQoJHByb3RlY3RlZEhlYWRlcikgPyBudWxsIDogQmFzZTY0VXJsOjplbmNvZGUoSnNvbkNvbnZlcnRlcjo6ZW5jb2RlKCRwcm90ZWN0ZWRIZWFkZXIpKTsKICAgICAgICAgICAgJGlucHV0ID0gc3ByaW50ZignJXMuJXMnLCAkZW5jb2RlZFByb3RlY3RlZEhlYWRlciwgJGVuY29kZWRQYXlsb2FkKTsKICAgICAgICAgICAgaWYgKCRhbGdvcml0aG0gaW5zdGFuY2VvZiBTaWduYXR1cmVBbGdvcml0aG0pIHsKICAgICAgICAgICAgICAgICRzID0gJGFsZ29yaXRobS0+c2lnbigkc2lnbmF0dXJlS2V5LCAkaW5wdXQpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHMgPSAkYWxnb3JpdGhtLT5oYXNoKCRzaWduYXR1cmVLZXksICRpbnB1dCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGp3cyA9ICRqd3MtPmFkZFNpZ25hdHVyZSgkcywgJHByb3RlY3RlZEhlYWRlciwgJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXIsICRoZWFkZXIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRqd3M7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja0lmUGF5bG9hZElzRW5jb2RlZChhcnJheSAkcHJvdGVjdGVkSGVhZGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAhYXJyYXlfa2V5X2V4aXN0cygnYjY0JywgJHByb3RlY3RlZEhlYWRlcikgfHwgdHJ1ZSA9PT0gJHByb3RlY3RlZEhlYWRlclsnYjY0J107CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIExvZ2ljRXhjZXB0aW9uIGlmIHRoZSBoZWFkZXIgcGFyYW1ldGVyICJjcml0IiBpcyBtaXNzaW5nLCBpbnZhbGlkIG9yIGRvZXMgbm90IGNvbnRhaW4gImI2NCIgd2hlbiAiYjY0IiBpcyBzZXQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja0I2NEFuZENyaXRpY2FsSGVhZGVyKGFycmF5ICRwcm90ZWN0ZWRIZWFkZXIpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFhcnJheV9rZXlfZXhpc3RzKCdiNjQnLCAkcHJvdGVjdGVkSGVhZGVyKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygnY3JpdCcsICRwcm90ZWN0ZWRIZWFkZXIpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBMb2dpY0V4Y2VwdGlvbignVGhlIHByb3RlY3RlZCBoZWFkZXIgcGFyYW1ldGVyICJjcml0IiBpcyBtYW5kYXRvcnkgd2hlbiBwcm90ZWN0ZWQgaGVhZGVyIHBhcmFtZXRlciAiYjY0IiBpcyBzZXQuJyk7CiAgICAgICAgfQogICAgICAgIGlmICghaXNfYXJyYXkoJHByb3RlY3RlZEhlYWRlclsnY3JpdCddKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oJ1RoZSBwcm90ZWN0ZWQgaGVhZGVyIHBhcmFtZXRlciAiY3JpdCIgbXVzdCBiZSBhbiBhcnJheS4nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFpbl9hcnJheSgnYjY0JywgJHByb3RlY3RlZEhlYWRlclsnY3JpdCddLCB0cnVlKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oJ1RoZSBwcm90ZWN0ZWQgaGVhZGVyIHBhcmFtZXRlciAiY3JpdCIgbXVzdCBjb250YWluICJiNjQiIHdoZW4gcHJvdGVjdGVkIGhlYWRlciBwYXJhbWV0ZXIgImI2NCIgaXMgc2V0LicpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBoZWFkZXIgcGFyYW1ldGVyICJhbGciIGlzIG1pc3Npbmcgb3IgdGhlIGFsZ29yaXRobSBpcyBub3QgYWxsb3dlZC9ub3Qgc3VwcG9ydGVkCiAgICAgKgogICAgICogQHJldHVybiBNYWNBbGdvcml0aG18U2lnbmF0dXJlQWxnb3JpdGhtCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZmluZFNpZ25hdHVyZUFsZ29yaXRobShKV0sgJGtleSwgYXJyYXkgJHByb3RlY3RlZEhlYWRlciwgYXJyYXkgJGhlYWRlcik6IEFsZ29yaXRobQogICAgewogICAgICAgICRjb21wbGV0ZUhlYWRlciA9IGFycmF5X21lcmdlKCRoZWFkZXIsICRwcm90ZWN0ZWRIZWFkZXIpOwogICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygnYWxnJywgJGNvbXBsZXRlSGVhZGVyKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdObyAiYWxnIiBwYXJhbWV0ZXIgc2V0IGluIHRoZSBoZWFkZXIuJyk7CiAgICAgICAgfQogICAgICAgIGlmICgka2V5LT5oYXMoJ2FsZycpICYmICRrZXktPmdldCgnYWxnJykgIT09ICRjb21wbGV0ZUhlYWRlclsnYWxnJ10pIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgYWxnb3JpdGhtICIlcyIgaXMgbm90IGFsbG93ZWQgd2l0aCB0aGlzIGtleS4nLCAkY29tcGxldGVIZWFkZXJbJ2FsZyddKSk7CiAgICAgICAgfQoKICAgICAgICAkYWxnb3JpdGhtID0gJHRoaXMtPnNpZ25hdHVyZUFsZ29yaXRobU1hbmFnZXItPmdldCgkY29tcGxldGVIZWFkZXJbJ2FsZyddKTsKICAgICAgICBpZiAoISRhbGdvcml0aG0gaW5zdGFuY2VvZiBTaWduYXR1cmVBbGdvcml0aG0gJiYgISRhbGdvcml0aG0gaW5zdGFuY2VvZiBNYWNBbGdvcml0aG0pIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgYWxnb3JpdGhtICIlcyIgaXMgbm90IHN1cHBvcnRlZC4nLCAkY29tcGxldGVIZWFkZXJbJ2FsZyddKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGFsZ29yaXRobTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBoZWFkZXIgY29udGFpbnMgZHVwbGljYXRlZCBlbnRyaWVzCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tEdXBsaWNhdGVkSGVhZGVyUGFyYW1ldGVycyhhcnJheSAkaGVhZGVyMSwgYXJyYXkgJGhlYWRlcjIpOiB2b2lkCiAgICB7CiAgICAgICAgJGludGVyID0gYXJyYXlfaW50ZXJzZWN0X2tleSgkaGVhZGVyMSwgJGhlYWRlcjIpOwogICAgICAgIGlmICgwICE9PSBjb3VudCgkaW50ZXIpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVGhlIGhlYWRlciBjb250YWlucyBkdXBsaWNhdGVkIGVudHJpZXM6ICVzLicsIGltcGxvZGUoJywgJywgYXJyYXlfa2V5cygkaW50ZXIpKSkpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/JWSBuilderFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEFsZ29yaXRobU1hbmFnZXJGYWN0b3J5OwoKY2xhc3MgSldTQnVpbGRlckZhY3RvcnkKewogICAgLyoqCiAgICAgKiBAdmFyIEFsZ29yaXRobU1hbmFnZXJGYWN0b3J5CiAgICAgKi8KICAgIHByaXZhdGUgJHNpZ25hdHVyZUFsZ29yaXRobU1hbmFnZXJGYWN0b3J5OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChBbGdvcml0aG1NYW5hZ2VyRmFjdG9yeSAkc2lnbmF0dXJlQWxnb3JpdGhtTWFuYWdlckZhY3RvcnkpCiAgICB7CiAgICAgICAgJHRoaXMtPnNpZ25hdHVyZUFsZ29yaXRobU1hbmFnZXJGYWN0b3J5ID0gJHNpZ25hdHVyZUFsZ29yaXRobU1hbmFnZXJGYWN0b3J5OwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2QgY3JlYXRlcyBhIEpXU0J1aWxkZXIgdXNpbmcgdGhlIGdpdmVuIGFsZ29yaXRobSBhbGlhc2VzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAkYWxnb3JpdGhtcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlKGFycmF5ICRhbGdvcml0aG1zKTogSldTQnVpbGRlcgogICAgewogICAgICAgICRhbGdvcml0aG1NYW5hZ2VyID0gJHRoaXMtPnNpZ25hdHVyZUFsZ29yaXRobU1hbmFnZXJGYWN0b3J5LT5jcmVhdGUoJGFsZ29yaXRobXMpOwoKICAgICAgICByZXR1cm4gbmV3IEpXU0J1aWxkZXIoJGFsZ29yaXRobU1hbmFnZXIpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/JWSLoader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBFeGNlcHRpb247CnVzZSBKb3NlXENvbXBvbmVudFxDaGVja2VyXEhlYWRlckNoZWNrZXJNYW5hZ2VyOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXS1NldDsKdXNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyXEpXU1NlcmlhbGl6ZXJNYW5hZ2VyOwp1c2UgVGhyb3dhYmxlOwoKY2xhc3MgSldTTG9hZGVyCnsKICAgIC8qKgogICAgICogQHZhciBKV1NWZXJpZmllcgogICAgICovCiAgICBwcml2YXRlICRqd3NWZXJpZmllcjsKCiAgICAvKioKICAgICAqIEB2YXIgbnVsbHxIZWFkZXJDaGVja2VyTWFuYWdlcgogICAgICovCiAgICBwcml2YXRlICRoZWFkZXJDaGVja2VyTWFuYWdlcjsKCiAgICAvKioKICAgICAqIEB2YXIgSldTU2VyaWFsaXplck1hbmFnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkc2VyaWFsaXplck1hbmFnZXI7CgogICAgLyoqCiAgICAgKiBKV1NMb2FkZXIgY29uc3RydWN0b3IuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChKV1NTZXJpYWxpemVyTWFuYWdlciAkc2VyaWFsaXplck1hbmFnZXIsIEpXU1ZlcmlmaWVyICRqd3NWZXJpZmllciwgP0hlYWRlckNoZWNrZXJNYW5hZ2VyICRoZWFkZXJDaGVja2VyTWFuYWdlcikKICAgIHsKICAgICAgICAkdGhpcy0+c2VyaWFsaXplck1hbmFnZXIgPSAkc2VyaWFsaXplck1hbmFnZXI7CiAgICAgICAgJHRoaXMtPmp3c1ZlcmlmaWVyID0gJGp3c1ZlcmlmaWVyOwogICAgICAgICR0aGlzLT5oZWFkZXJDaGVja2VyTWFuYWdlciA9ICRoZWFkZXJDaGVja2VyTWFuYWdlcjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIEpXU1ZlcmlmaWVyIGFzc29jaWF0ZWQgdG8gdGhlIEpXU0xvYWRlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEp3c1ZlcmlmaWVyKCk6IEpXU1ZlcmlmaWVyCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5qd3NWZXJpZmllcjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIEhlYWRlciBDaGVja2VyIE1hbmFnZXIgYXNzb2NpYXRlZCB0byB0aGUgSldTTG9hZGVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVyQ2hlY2tlck1hbmFnZXIoKTogP0hlYWRlckNoZWNrZXJNYW5hZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oZWFkZXJDaGVja2VyTWFuYWdlcjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIEpXU1NlcmlhbGl6ZXIgYXNzb2NpYXRlZCB0byB0aGUgSldTTG9hZGVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VyaWFsaXplck1hbmFnZXIoKTogSldTU2VyaWFsaXplck1hbmFnZXIKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNlcmlhbGl6ZXJNYW5hZ2VyOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gbG9hZCBhbmQgdmVyaWZ5IHRoZSB0b2tlbiB1c2luZyB0aGUgZ2l2ZW4ga2V5LgogICAgICogSXQgcmV0dXJucyBhIEpXUyBhbmQgd2lsbCBwb3B1bGF0ZSB0aGUgJHNpZ25hdHVyZSB2YXJpYWJsZSBpbiBjYXNlIG9mIHN1Y2Nlc3MsIG90aGVyd2lzZSBhbiBleGNlcHRpb24gaXMgdGhyb3duLgogICAgICoKICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uIGlmIHRoZSB0b2tlbiBjYW5ub3QgYmUgbG9hZGVkIG9yIHZlcmlmaWVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQW5kVmVyaWZ5V2l0aEtleShzdHJpbmcgJHRva2VuLCBKV0sgJGtleSwgP2ludCAmJHNpZ25hdHVyZSwgP3N0cmluZyAkcGF5bG9hZCA9IG51bGwpOiBKV1MKICAgIHsKICAgICAgICAka2V5c2V0ID0gbmV3IEpXS1NldChbJGtleV0pOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmxvYWRBbmRWZXJpZnlXaXRoS2V5U2V0KCR0b2tlbiwgJGtleXNldCwgJHNpZ25hdHVyZSwgJHBheWxvYWQpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gbG9hZCBhbmQgdmVyaWZ5IHRoZSB0b2tlbiB1c2luZyB0aGUgZ2l2ZW4ga2V5IHNldC4KICAgICAqIEl0IHJldHVybnMgYSBKV1MgYW5kIHdpbGwgcG9wdWxhdGUgdGhlICRzaWduYXR1cmUgdmFyaWFibGUgaW4gY2FzZSBvZiBzdWNjZXNzLCBvdGhlcndpc2UgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KICAgICAqCiAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbiBpZiB0aGUgdG9rZW4gY2Fubm90IGJlIGxvYWRlZCBvciB2ZXJpZmllZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZEFuZFZlcmlmeVdpdGhLZXlTZXQoc3RyaW5nICR0b2tlbiwgSldLU2V0ICRrZXlzZXQsID9pbnQgJiRzaWduYXR1cmUsID9zdHJpbmcgJHBheWxvYWQgPSBudWxsKTogSldTCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGp3cyA9ICR0aGlzLT5zZXJpYWxpemVyTWFuYWdlci0+dW5zZXJpYWxpemUoJHRva2VuKTsKICAgICAgICAgICAgJG5iU2lnbmF0dXJlcyA9ICRqd3MtPmNvdW50U2lnbmF0dXJlcygpOwogICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbmJTaWduYXR1cmVzOyArKyRpKSB7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnByb2Nlc3NTaWduYXR1cmUoJGp3cywgJGtleXNldCwgJGksICRwYXlsb2FkKSkgewogICAgICAgICAgICAgICAgICAgICRzaWduYXR1cmUgPSAkaTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRqd3M7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJGUpIHsKICAgICAgICBlcnJvcl9sb2coJ1tNQVNdICcgLiAkZS0+Z2V0TWVzc2FnZSgpKTsKICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgYW5kIHZlcmlmeSB0aGUgdG9rZW4uJyk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBwcm9jZXNzU2lnbmF0dXJlKEpXUyAkandzLCBKV0tTZXQgJGtleXNldCwgaW50ICRzaWduYXR1cmUsID9zdHJpbmcgJHBheWxvYWQpOiBib29sCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKG51bGwgIT09ICR0aGlzLT5oZWFkZXJDaGVja2VyTWFuYWdlcikgewogICAgICAgICAgICAgICAgJHRoaXMtPmhlYWRlckNoZWNrZXJNYW5hZ2VyLT5jaGVjaygkandzLCAkc2lnbmF0dXJlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5qd3NWZXJpZmllci0+dmVyaWZ5V2l0aEtleVNldCgkandzLCAka2V5c2V0LCAkc2lnbmF0dXJlLCAkcGF5bG9hZCk7CiAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/JWSLoaderFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBKb3NlXENvbXBvbmVudFxDaGVja2VyXEhlYWRlckNoZWNrZXJNYW5hZ2VyRmFjdG9yeTsKdXNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyXEpXU1NlcmlhbGl6ZXJNYW5hZ2VyRmFjdG9yeTsKCmNsYXNzIEpXU0xvYWRlckZhY3RvcnkKewogICAgLyoqCiAgICAgKiBAdmFyIEpXU1ZlcmlmaWVyRmFjdG9yeQogICAgICovCiAgICBwcml2YXRlICRqd3NWZXJpZmllckZhY3Rvcnk7CgogICAgLyoqCiAgICAgKiBAdmFyIEpXU1NlcmlhbGl6ZXJNYW5hZ2VyRmFjdG9yeQogICAgICovCiAgICBwcml2YXRlICRqd3NTZXJpYWxpemVyTWFuYWdlckZhY3Rvcnk7CgogICAgLyoqCiAgICAgKiBAdmFyIG51bGx8SGVhZGVyQ2hlY2tlck1hbmFnZXJGYWN0b3J5CiAgICAgKi8KICAgIHByaXZhdGUgJGhlYWRlckNoZWNrZXJNYW5hZ2VyRmFjdG9yeTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoSldTU2VyaWFsaXplck1hbmFnZXJGYWN0b3J5ICRqd3NTZXJpYWxpemVyTWFuYWdlckZhY3RvcnksIEpXU1ZlcmlmaWVyRmFjdG9yeSAkandzVmVyaWZpZXJGYWN0b3J5LCA/SGVhZGVyQ2hlY2tlck1hbmFnZXJGYWN0b3J5ICRoZWFkZXJDaGVja2VyTWFuYWdlckZhY3RvcnkpCiAgICB7CiAgICAgICAgJHRoaXMtPmp3c1NlcmlhbGl6ZXJNYW5hZ2VyRmFjdG9yeSA9ICRqd3NTZXJpYWxpemVyTWFuYWdlckZhY3Rvcnk7CiAgICAgICAgJHRoaXMtPmp3c1ZlcmlmaWVyRmFjdG9yeSA9ICRqd3NWZXJpZmllckZhY3Rvcnk7CiAgICAgICAgJHRoaXMtPmhlYWRlckNoZWNrZXJNYW5hZ2VyRmFjdG9yeSA9ICRoZWFkZXJDaGVja2VyTWFuYWdlckZhY3Rvcnk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgSldTTG9hZGVyIHVzaW5nIHRoZSBnaXZlbiBzZXJpYWxpemVyIGFsaWFzZXMsIHNpZ25hdHVyZSBhbGdvcml0aG0gYWxpYXNlcyBhbmQgKG9wdGlvbmFsbHkpCiAgICAgKiB0aGUgaGVhZGVyIGNoZWNrZXIgYWxpYXNlcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZShhcnJheSAkc2VyaWFsaXplcnMsIGFycmF5ICRhbGdvcml0aG1zLCBhcnJheSAkaGVhZGVyQ2hlY2tlcnMgPSBbXSk6IEpXU0xvYWRlcgogICAgewogICAgICAgICRzZXJpYWxpemVyTWFuYWdlciA9ICR0aGlzLT5qd3NTZXJpYWxpemVyTWFuYWdlckZhY3RvcnktPmNyZWF0ZSgkc2VyaWFsaXplcnMpOwogICAgICAgICRqd3NWZXJpZmllciA9ICR0aGlzLT5qd3NWZXJpZmllckZhY3RvcnktPmNyZWF0ZSgkYWxnb3JpdGhtcyk7CiAgICAgICAgaWYgKG51bGwgIT09ICR0aGlzLT5oZWFkZXJDaGVja2VyTWFuYWdlckZhY3RvcnkpIHsKICAgICAgICAgICAgJGhlYWRlckNoZWNrZXJNYW5hZ2VyID0gJHRoaXMtPmhlYWRlckNoZWNrZXJNYW5hZ2VyRmFjdG9yeS0+Y3JlYXRlKCRoZWFkZXJDaGVja2Vycyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGhlYWRlckNoZWNrZXJNYW5hZ2VyID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgSldTTG9hZGVyKCRzZXJpYWxpemVyTWFuYWdlciwgJGp3c1ZlcmlmaWVyLCAkaGVhZGVyQ2hlY2tlck1hbmFnZXIpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/JWSTokenSupport.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBKb3NlXENvbXBvbmVudFxDaGVja2VyXFRva2VuVHlwZVN1cHBvcnQ7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXVDsKCmZpbmFsIGNsYXNzIEpXU1Rva2VuU3VwcG9ydCBpbXBsZW1lbnRzIFRva2VuVHlwZVN1cHBvcnQKewogICAgcHVibGljIGZ1bmN0aW9uIHN1cHBvcnRzKEpXVCAkand0KTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkand0IGluc3RhbmNlb2YgSldTOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHNpZ25hdHVyZSBpbmRleCBkb2VzIG5vdCBleGlzdAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmV0cmlldmVUb2tlbkhlYWRlcnMoSldUICRqd3QsIGludCAkaW5kZXgsIGFycmF5ICYkcHJvdGVjdGVkSGVhZGVyLCBhcnJheSAmJHVucHJvdGVjdGVkSGVhZGVyKTogdm9pZAogICAgewogICAgICAgIGlmICghJGp3dCBpbnN0YW5jZW9mIEpXUykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoJGluZGV4ID4gJGp3dC0+Y291bnRTaWduYXR1cmVzKCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5rbm93biBzaWduYXR1cmUgaW5kZXguJyk7CiAgICAgICAgfQogICAgICAgICRwcm90ZWN0ZWRIZWFkZXIgPSAkand0LT5nZXRTaWduYXR1cmUoJGluZGV4KS0+Z2V0UHJvdGVjdGVkSGVhZGVyKCk7CiAgICAgICAgJHVucHJvdGVjdGVkSGVhZGVyID0gJGp3dC0+Z2V0U2lnbmF0dXJlKCRpbmRleCktPmdldEhlYWRlcigpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/JWSVerifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxBbGdvcml0aG07CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEFsZ29yaXRobU1hbmFnZXI7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXSzsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLU2V0Owp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEtleUNoZWNrZXI7CnVzZSBKb3NlXENvbXBvbmVudFxTaWduYXR1cmVcQWxnb3JpdGhtXE1hY0FsZ29yaXRobTsKdXNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxBbGdvcml0aG1cU2lnbmF0dXJlQWxnb3JpdGhtOwp1c2UgVGhyb3dhYmxlOwoKY2xhc3MgSldTVmVyaWZpZXIKewogICAgLyoqCiAgICAgKiBAdmFyIEFsZ29yaXRobU1hbmFnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkc2lnbmF0dXJlQWxnb3JpdGhtTWFuYWdlcjsKCiAgICAvKioKICAgICAqIEpXU1ZlcmlmaWVyIGNvbnN0cnVjdG9yLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQWxnb3JpdGhtTWFuYWdlciAkc2lnbmF0dXJlQWxnb3JpdGhtTWFuYWdlcikKICAgIHsKICAgICAgICAkdGhpcy0+c2lnbmF0dXJlQWxnb3JpdGhtTWFuYWdlciA9ICRzaWduYXR1cmVBbGdvcml0aG1NYW5hZ2VyOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgYWxnb3JpdGhtIG1hbmFnZXIgYXNzb2NpYXRlZCB0byB0aGUgSldTVmVyaWZpZXIuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduYXR1cmVBbGdvcml0aG1NYW5hZ2VyKCk6IEFsZ29yaXRobU1hbmFnZXIKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNpZ25hdHVyZUFsZ29yaXRobU1hbmFnZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHRyeSB0byB2ZXJpZnkgdGhlIEpXUyBvYmplY3QgdXNpbmcgdGhlIGdpdmVuIGtleSBhbmQgZm9yIHRoZSBnaXZlbiBzaWduYXR1cmUuCiAgICAgKiBJdCByZXR1cm5zIHRydWUgaWYgdGhlIHNpZ25hdHVyZSBpcyB2ZXJpZmllZCwgb3RoZXJ3aXNlIGZhbHNlLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbCB0cnVlIGlmIHRoZSB2ZXJpZmljYXRpb24gb2YgdGhlIHNpZ25hdHVyZSBzdWNjZWVkZWQsIGVsc2UgZmFsc2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZlcmlmeVdpdGhLZXkoSldTICRqd3MsIEpXSyAkandrLCBpbnQgJHNpZ25hdHVyZSwgP3N0cmluZyAkZGV0YWNoZWRQYXlsb2FkID0gbnVsbCk6IGJvb2wKICAgIHsKICAgICAgICAkandrc2V0ID0gbmV3IEpXS1NldChbJGp3a10pOwoKICAgICAgICByZXR1cm4gJHRoaXMtPnZlcmlmeVdpdGhLZXlTZXQoJGp3cywgJGp3a3NldCwgJHNpZ25hdHVyZSwgJGRldGFjaGVkUGF5bG9hZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHRyeSB0byB2ZXJpZnkgdGhlIEpXUyBvYmplY3QgdXNpbmcgdGhlIGdpdmVuIGtleSBzZXQgYW5kIGZvciB0aGUgZ2l2ZW4gc2lnbmF0dXJlLgogICAgICogSXQgcmV0dXJucyB0cnVlIGlmIHRoZSBzaWduYXR1cmUgaXMgdmVyaWZpZWQsIG90aGVyd2lzZSBmYWxzZS4KICAgICAqCiAgICAgKiBAcGFyYW0gSldTICAgICAgICAgJGp3cyAgICAgICAgICAgICBBIEpXUyBvYmplY3QKICAgICAqIEBwYXJhbSBKV0tTZXQgICAgICAkandrc2V0ICAgICAgICAgIFRoZSBzaWduYXR1cmUgd2lsbCBiZSB2ZXJpZmllZCB1c2luZyBrZXlzIGluIHRoZSBrZXkgc2V0CiAgICAgKiBAcGFyYW0gSldLICAgICAgICAgJGp3ayAgICAgICAgICAgICBUaGUga2V5IHVzZWQgdG8gdmVyaWZ5IHRoZSBzaWduYXR1cmUgaW4gY2FzZSBvZiBzdWNjZXNzCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJGRldGFjaGVkUGF5bG9hZCBJZiBub3QgbnVsbCwgdGhlIHZhbHVlIG11c3QgYmUgdGhlIGRldGFjaGVkIHBheWxvYWQgZW5jb2RlZCBpbiBCYXNlNjQgVVJMIHNhZmUuIElmIHRoZSBpbnB1dCBjb250YWlucyBhIHBheWxvYWQsIHRocm93cyBhbiBleGNlcHRpb24uCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlcmUgaXMgbm8ga2V5IGluIHRoZSBrZXlzZXQKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSB0b2tlbiBkb2VzIG5vdCBjb250YWluIGFueSBzaWduYXR1cmUKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wgdHJ1ZSBpZiB0aGUgdmVyaWZpY2F0aW9uIG9mIHRoZSBzaWduYXR1cmUgc3VjY2VlZGVkLCBlbHNlIGZhbHNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2ZXJpZnlXaXRoS2V5U2V0KEpXUyAkandzLCBKV0tTZXQgJGp3a3NldCwgaW50ICRzaWduYXR1cmVJbmRleCwgP3N0cmluZyAkZGV0YWNoZWRQYXlsb2FkID0gbnVsbCwgSldLICYkandrID0gbnVsbCk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoMCA9PT0gJGp3a3NldC0+Y291bnQoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGVyZSBpcyBubyBrZXkgaW4gdGhlIGtleSBzZXQuJyk7CiAgICAgICAgfQogICAgICAgIGlmICgwID09PSAkandzLT5jb3VudFNpZ25hdHVyZXMoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgSldTIGRvZXMgbm90IGNvbnRhaW4gYW55IHNpZ25hdHVyZS4nKTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPmNoZWNrUGF5bG9hZCgkandzLCAkZGV0YWNoZWRQYXlsb2FkKTsKICAgICAgICAkc2lnbmF0dXJlID0gJGp3cy0+Z2V0U2lnbmF0dXJlKCRzaWduYXR1cmVJbmRleCk7CgogICAgICAgIHJldHVybiAkdGhpcy0+dmVyaWZ5U2lnbmF0dXJlKCRqd3MsICRqd2tzZXQsICRzaWduYXR1cmUsICRkZXRhY2hlZFBheWxvYWQsICRqd2spOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlKEpXUyAkandzLCBKV0tTZXQgJGp3a3NldCwgU2lnbmF0dXJlICRzaWduYXR1cmUsID9zdHJpbmcgJGRldGFjaGVkUGF5bG9hZCA9IG51bGwsIEpXSyAmJHN1Y2Nlc3NKd2sgPSBudWxsKTogYm9vbAogICAgewogICAgICAgICRpbnB1dCA9ICR0aGlzLT5nZXRJbnB1dFRvVmVyaWZ5KCRqd3MsICRzaWduYXR1cmUsICRkZXRhY2hlZFBheWxvYWQpOwogICAgICAgICRhbGdvcml0aG0gPSAkdGhpcy0+Z2V0QWxnb3JpdGhtKCRzaWduYXR1cmUpOwogICAgICAgIGZvcmVhY2ggKCRqd2tzZXQtPmFsbCgpIGFzICRqd2spIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIEtleUNoZWNrZXI6OmNoZWNrS2V5VXNhZ2UoJGp3aywgJ3ZlcmlmaWNhdGlvbicpOwogICAgICAgICAgICAgICAgS2V5Q2hlY2tlcjo6Y2hlY2tLZXlBbGdvcml0aG0oJGp3aywgJGFsZ29yaXRobS0+bmFtZSgpKTsKICAgICAgICAgICAgICAgIGlmICh0cnVlID09PSAkYWxnb3JpdGhtLT52ZXJpZnkoJGp3aywgJGlucHV0LCAkc2lnbmF0dXJlLT5nZXRTaWduYXR1cmUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAkc3VjY2Vzc0p3ayA9ICRqd2s7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgICAgIC8vV2UgZG8gbm90aGluZywgd2UgY29udGludWUgd2l0aCBvdGhlciBrZXlzCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0SW5wdXRUb1ZlcmlmeShKV1MgJGp3cywgU2lnbmF0dXJlICRzaWduYXR1cmUsID9zdHJpbmcgJGRldGFjaGVkUGF5bG9hZCk6IHN0cmluZwogICAgewogICAgICAgICRpc1BheWxvYWRFbXB0eSA9ICR0aGlzLT5pc1BheWxvYWRFbXB0eSgkandzLT5nZXRQYXlsb2FkKCkpOwogICAgICAgICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyID0gJHNpZ25hdHVyZS0+Z2V0RW5jb2RlZFByb3RlY3RlZEhlYWRlcigpOwogICAgICAgIGlmICghJHNpZ25hdHVyZS0+aGFzUHJvdGVjdGVkSGVhZGVyUGFyYW1ldGVyKCdiNjQnKSB8fCB0cnVlID09PSAkc2lnbmF0dXJlLT5nZXRQcm90ZWN0ZWRIZWFkZXJQYXJhbWV0ZXIoJ2I2NCcpKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9PSAkandzLT5nZXRFbmNvZGVkUGF5bG9hZCgpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc3ByaW50ZignJXMuJXMnLCAkZW5jb2RlZFByb3RlY3RlZEhlYWRlciwgJGp3cy0+Z2V0RW5jb2RlZFBheWxvYWQoKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwYXlsb2FkID0gJGlzUGF5bG9hZEVtcHR5ID8gJGRldGFjaGVkUGF5bG9hZCA6ICRqd3MtPmdldFBheWxvYWQoKTsKCiAgICAgICAgICAgIHJldHVybiBzcHJpbnRmKCclcy4lcycsICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyLCBCYXNlNjRVcmw6OmVuY29kZSgkcGF5bG9hZCkpOwogICAgICAgIH0KCiAgICAgICAgJHBheWxvYWQgPSAkaXNQYXlsb2FkRW1wdHkgPyAkZGV0YWNoZWRQYXlsb2FkIDogJGp3cy0+Z2V0UGF5bG9hZCgpOwoKICAgICAgICByZXR1cm4gc3ByaW50ZignJXMuJXMnLCAkZW5jb2RlZFByb3RlY3RlZEhlYWRlciwgJHBheWxvYWQpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHBheWxvYWQgaXMgc2V0IHdoZW4gYSBkZXRhY2hlZCBwYXlsb2FkIGlzIHByb3ZpZGVkIG9yIG5vIHBheWxvYWQgaXMgZGVmaW5lZAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrUGF5bG9hZChKV1MgJGp3cywgP3N0cmluZyAkZGV0YWNoZWRQYXlsb2FkID0gbnVsbCk6IHZvaWQKICAgIHsKICAgICAgICAkaXNQYXlsb2FkRW1wdHkgPSAkdGhpcy0+aXNQYXlsb2FkRW1wdHkoJGp3cy0+Z2V0UGF5bG9hZCgpKTsKICAgICAgICBpZiAobnVsbCAhPT0gJGRldGFjaGVkUGF5bG9hZCAmJiAhJGlzUGF5bG9hZEVtcHR5KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0EgZGV0YWNoZWQgcGF5bG9hZCBpcyBzZXQsIGJ1dCB0aGUgSldTIGFscmVhZHkgaGFzIGEgcGF5bG9hZC4nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCRpc1BheWxvYWRFbXB0eSAmJiBudWxsID09PSAkZGV0YWNoZWRQYXlsb2FkKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBKV1MgaGFzIGEgZGV0YWNoZWQgcGF5bG9hZCwgYnV0IG5vIHBheWxvYWQgaXMgcHJvdmlkZWQuJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGhlYWRlciBwYXJhbWV0ZXIgImFsZyIgaXMgbWlzc2luZyBvciBpbnZhbGlkCiAgICAgKgogICAgICogQHJldHVybiBNYWNBbGdvcml0aG18U2lnbmF0dXJlQWxnb3JpdGhtCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtKFNpZ25hdHVyZSAkc2lnbmF0dXJlKTogQWxnb3JpdGhtCiAgICB7CiAgICAgICAgJGNvbXBsZXRlSGVhZGVyID0gYXJyYXlfbWVyZ2UoJHNpZ25hdHVyZS0+Z2V0UHJvdGVjdGVkSGVhZGVyKCksICRzaWduYXR1cmUtPmdldEhlYWRlcigpKTsKICAgICAgICBpZiAoIWlzc2V0KCRjb21wbGV0ZUhlYWRlclsnYWxnJ10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ05vICJhbGciIHBhcmFtZXRlciBzZXQgaW4gdGhlIGhlYWRlci4nKTsKICAgICAgICB9CgogICAgICAgICRhbGdvcml0aG0gPSAkdGhpcy0+c2lnbmF0dXJlQWxnb3JpdGhtTWFuYWdlci0+Z2V0KCRjb21wbGV0ZUhlYWRlclsnYWxnJ10pOwogICAgICAgIGlmICghJGFsZ29yaXRobSBpbnN0YW5jZW9mIFNpZ25hdHVyZUFsZ29yaXRobSAmJiAhJGFsZ29yaXRobSBpbnN0YW5jZW9mIE1hY0FsZ29yaXRobSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBhbGdvcml0aG0gIiVzIiBpcyBub3Qgc3VwcG9ydGVkIG9yIGlzIG5vdCBhIHNpZ25hdHVyZSBvciBNQUMgYWxnb3JpdGhtLicsICRjb21wbGV0ZUhlYWRlclsnYWxnJ10pKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkYWxnb3JpdGhtOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gaXNQYXlsb2FkRW1wdHkoP3N0cmluZyAkcGF5bG9hZCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gbnVsbCA9PT0gJHBheWxvYWQgfHwgJycgPT09ICRwYXlsb2FkOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/JWSVerifierFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEFsZ29yaXRobU1hbmFnZXJGYWN0b3J5OwoKY2xhc3MgSldTVmVyaWZpZXJGYWN0b3J5CnsKICAgIC8qKgogICAgICogQHZhciBBbGdvcml0aG1NYW5hZ2VyRmFjdG9yeQogICAgICovCiAgICBwcml2YXRlICRhbGdvcml0aG1NYW5hZ2VyRmFjdG9yeTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQWxnb3JpdGhtTWFuYWdlckZhY3RvcnkgJGFsZ29yaXRobU1hbmFnZXJGYWN0b3J5KQogICAgewogICAgICAgICR0aGlzLT5hbGdvcml0aG1NYW5hZ2VyRmFjdG9yeSA9ICRhbGdvcml0aG1NYW5hZ2VyRmFjdG9yeTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBKV1NWZXJpZmllciB1c2luZyB0aGUgZ2l2ZW4gc2lnbmF0dXJlIGFsZ29yaXRobSBhbGlhc2VzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAkYWxnb3JpdGhtcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlKGFycmF5ICRhbGdvcml0aG1zKTogSldTVmVyaWZpZXIKICAgIHsKICAgICAgICAkYWxnb3JpdGhtTWFuYWdlciA9ICR0aGlzLT5hbGdvcml0aG1NYW5hZ2VyRmFjdG9yeS0+Y3JlYXRlKCRhbGdvcml0aG1zKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV1NWZXJpZmllcigkYWxnb3JpdGhtTWFuYWdlcik7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOSBTcG9ta3ktTGFicwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UEhQIEpXVCBTaWduYXR1cmUgQ29tcG9uZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PQoKVGhpcyByZXBvc2l0b3J5IGlzIGEgc3ViIHJlcG9zaXRvcnkgb2YgW3RoZSBKV1QgRnJhbWV3b3JrXShodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1mcmFtZXdvcmspIHByb2plY3QgYW5kIGlzIFJFQUQgT05MWS4KCioqUGxlYXNlIGRvIG5vdCBzdWJtaXQgYW55IFB1bGwgUmVxdWVzdCBoZXJlLioqCllvdSBzaG91bGQgZ28gdG8gW3RoZSBtYWluIHJlcG9zaXRvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWZyYW1ld29yaykgaW5zdGVhZC4gCgojIERvY3VtZW50YXRpb24KClRoZSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhcyBodHRwczovL3dlYi10b2tlbi5zcG9ta3ktbGFicy5jb20vCgojIExpY2VuY2UKClRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZSB1bmRlciBbTUlUIGxpY2VuY2VdKExJQ0VOU0UpLgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Serializer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Serializer/CompactSerializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyOwoKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBmdW5jdGlvbiBjb3VudDsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxKc29uQ29udmVydGVyOwp1c2UgSm9zZVxDb21wb25lbnRcU2lnbmF0dXJlXEpXUzsKdXNlIExvZ2ljRXhjZXB0aW9uOwp1c2UgVGhyb3dhYmxlOwoKZmluYWwgY2xhc3MgQ29tcGFjdFNlcmlhbGl6ZXIgZXh0ZW5kcyBTZXJpYWxpemVyCnsKICAgIHB1YmxpYyBjb25zdCBOQU1FID0gJ2p3c19jb21wYWN0JzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gZGlzcGxheU5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICdKV1MgQ29tcGFjdCc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Ok5BTUU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIExvZ2ljRXhjZXB0aW9uIGlmIHRoZSBKV1MgaGFzIHVucHJvdGVjdGVkIGhlYWRlciAoaW52YWxpZCBmb3IgY29tcGFjdCBKU09OKQogICAgICogQHRocm93cyBMb2dpY0V4Y2VwdGlvbiBpZiB0aGUgcGF5bG9hZCBpcyBub3QgZW5jb2RlZCBidXQgY29udGFpbnMgdW5hdXRob3JpemVkIGNoYXJhY3RlcnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlcmlhbGl6ZShKV1MgJGp3cywgP2ludCAkc2lnbmF0dXJlSW5kZXggPSBudWxsKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09ICRzaWduYXR1cmVJbmRleCkgewogICAgICAgICAgICAkc2lnbmF0dXJlSW5kZXggPSAwOwogICAgICAgIH0KICAgICAgICAkc2lnbmF0dXJlID0gJGp3cy0+Z2V0U2lnbmF0dXJlKCRzaWduYXR1cmVJbmRleCk7CiAgICAgICAgaWYgKDAgIT09IGNvdW50KCRzaWduYXR1cmUtPmdldEhlYWRlcigpKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oJ1RoZSBzaWduYXR1cmUgY29udGFpbnMgdW5wcm90ZWN0ZWQgaGVhZGVyIHBhcmFtZXRlcnMgYW5kIGNhbm5vdCBiZSBjb252ZXJ0ZWQgaW50byBjb21wYWN0IEpTT04uJyk7CiAgICAgICAgfQogICAgICAgICRpc0VtcHR5UGF5bG9hZCA9IG51bGwgPT09ICRqd3MtPmdldEVuY29kZWRQYXlsb2FkKCkgfHwgJycgPT09ICRqd3MtPmdldEVuY29kZWRQYXlsb2FkKCk7CiAgICAgICAgaWYgKCEkdGhpcy0+aXNQYXlsb2FkRW5jb2RlZCgkc2lnbmF0dXJlLT5nZXRQcm90ZWN0ZWRIZWFkZXIoKSkgJiYgISRpc0VtcHR5UGF5bG9hZCkgewogICAgICAgICAgICBpZiAoMSAhPT0gcHJlZ19tYXRjaCgnL15bXHh7MjB9LVx4ezJkfXxceHsyZn0tXHh7N2V9XSokL3UnLCAkandzLT5nZXRQYXlsb2FkKCkpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oJ1VuYWJsZSB0byBjb252ZXJ0IHRoZSBKV1Mgd2l0aCBub24tZW5jb2RlZCBwYXlsb2FkLicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3ByaW50ZigKICAgICAgICAgICAgJyVzLiVzLiVzJywKICAgICAgICAgICAgJHNpZ25hdHVyZS0+Z2V0RW5jb2RlZFByb3RlY3RlZEhlYWRlcigpLAogICAgICAgICAgICAkandzLT5nZXRFbmNvZGVkUGF5bG9hZCgpLAogICAgICAgICAgICBCYXNlNjRVcmw6OmVuY29kZSgkc2lnbmF0dXJlLT5nZXRTaWduYXR1cmUoKSkKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGlucHV0IGlzIGludmFsaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuc2VyaWFsaXplKHN0cmluZyAkaW5wdXQpOiBKV1MKICAgIHsKICAgICAgICAkcGFydHMgPSBleHBsb2RlKCcuJywgJGlucHV0KTsKICAgICAgICBpZiAoMyAhPT0gY291bnQoJHBhcnRzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBpbnB1dCcpOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXIgPSAkcGFydHNbMF07CiAgICAgICAgICAgICRwcm90ZWN0ZWRIZWFkZXIgPSBKc29uQ29udmVydGVyOjpkZWNvZGUoQmFzZTY0VXJsOjpkZWNvZGUoJHBhcnRzWzBdKSk7CiAgICAgICAgICAgICRoYXNQYXlsb2FkID0gJycgIT09ICRwYXJ0c1sxXTsKICAgICAgICAgICAgaWYgKCEkaGFzUGF5bG9hZCkgewogICAgICAgICAgICAgICAgJHBheWxvYWQgPSBudWxsOwogICAgICAgICAgICAgICAgJGVuY29kZWRQYXlsb2FkID0gbnVsbDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRlbmNvZGVkUGF5bG9hZCA9ICRwYXJ0c1sxXTsKICAgICAgICAgICAgICAgICRwYXlsb2FkID0gJHRoaXMtPmlzUGF5bG9hZEVuY29kZWQoJHByb3RlY3RlZEhlYWRlcikgPyBCYXNlNjRVcmw6OmRlY29kZSgkZW5jb2RlZFBheWxvYWQpIDogJGVuY29kZWRQYXlsb2FkOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRzaWduYXR1cmUgPSBCYXNlNjRVcmw6OmRlY29kZSgkcGFydHNbMl0pOwoKICAgICAgICAgICAgJGp3cyA9IG5ldyBKV1MoJHBheWxvYWQsICRlbmNvZGVkUGF5bG9hZCwgISRoYXNQYXlsb2FkKTsKCiAgICAgICAgICAgIHJldHVybiAkandzLT5hZGRTaWduYXR1cmUoJHNpZ25hdHVyZSwgJHByb3RlY3RlZEhlYWRlciwgJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXIpOwogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkdGhyb3dhYmxlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGlucHV0JywgJHRocm93YWJsZS0+Z2V0Q29kZSgpLCAkdGhyb3dhYmxlKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Serializer/JSONFlattenedSerializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyOwoKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBmdW5jdGlvbiBjb3VudDsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIGZ1bmN0aW9uIGlzX2FycmF5Owp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEpzb25Db252ZXJ0ZXI7CnVzZSBKb3NlXENvbXBvbmVudFxTaWduYXR1cmVcSldTOwoKZmluYWwgY2xhc3MgSlNPTkZsYXR0ZW5lZFNlcmlhbGl6ZXIgZXh0ZW5kcyBTZXJpYWxpemVyCnsKICAgIHB1YmxpYyBjb25zdCBOQU1FID0gJ2p3c19qc29uX2ZsYXR0ZW5lZCc7CgogICAgcHVibGljIGZ1bmN0aW9uIGRpc3BsYXlOYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnSldTIEpTT04gRmxhdHRlbmVkJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbmFtZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6TkFNRTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VyaWFsaXplKEpXUyAkandzLCA/aW50ICRzaWduYXR1cmVJbmRleCA9IG51bGwpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHNpZ25hdHVyZUluZGV4KSB7CiAgICAgICAgICAgICRzaWduYXR1cmVJbmRleCA9IDA7CiAgICAgICAgfQogICAgICAgICRzaWduYXR1cmUgPSAkandzLT5nZXRTaWduYXR1cmUoJHNpZ25hdHVyZUluZGV4KTsKCiAgICAgICAgJGRhdGEgPSBbXTsKICAgICAgICAkdmFsdWVzID0gWwogICAgICAgICAgICAncGF5bG9hZCcgPT4gJGp3cy0+Z2V0RW5jb2RlZFBheWxvYWQoKSwKICAgICAgICAgICAgJ3Byb3RlY3RlZCcgPT4gJHNpZ25hdHVyZS0+Z2V0RW5jb2RlZFByb3RlY3RlZEhlYWRlcigpLAogICAgICAgICAgICAnaGVhZGVyJyA9PiAkc2lnbmF0dXJlLT5nZXRIZWFkZXIoKSwKICAgICAgICBdOwogICAgICAgICRlbmNvZGVkUGF5bG9hZCA9ICRqd3MtPmdldEVuY29kZWRQYXlsb2FkKCk7CiAgICAgICAgaWYgKG51bGwgIT09ICRlbmNvZGVkUGF5bG9hZCAmJiAnJyAhPT0gJGVuY29kZWRQYXlsb2FkKSB7CiAgICAgICAgICAgICRkYXRhWydwYXlsb2FkJ10gPSAkZW5jb2RlZFBheWxvYWQ7CiAgICAgICAgfQogICAgICAgICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyID0gJHNpZ25hdHVyZS0+Z2V0RW5jb2RlZFByb3RlY3RlZEhlYWRlcigpOwogICAgICAgIGlmIChudWxsICE9PSAkZW5jb2RlZFByb3RlY3RlZEhlYWRlciAmJiAnJyAhPT0gJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXIpIHsKICAgICAgICAgICAgJGRhdGFbJ3Byb3RlY3RlZCddID0gJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXI7CiAgICAgICAgfQogICAgICAgICRoZWFkZXIgPSAkc2lnbmF0dXJlLT5nZXRIZWFkZXIoKTsKICAgICAgICBpZiAoMCAhPT0gY291bnQoJGhlYWRlcikpIHsKICAgICAgICAgICAgJGRhdGFbJ2hlYWRlciddID0gJGhlYWRlcjsKICAgICAgICB9CiAgICAgICAgJGRhdGFbJ3NpZ25hdHVyZSddID0gQmFzZTY0VXJsOjplbmNvZGUoJHNpZ25hdHVyZS0+Z2V0U2lnbmF0dXJlKCkpOwoKICAgICAgICByZXR1cm4gSnNvbkNvbnZlcnRlcjo6ZW5jb2RlKCRkYXRhKTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBpbnB1dCBpcyBub3Qgc3VwcG9ydGVkCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgSldTIGhlYWRlciBpcyBpbnZhbGlkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bnNlcmlhbGl6ZShzdHJpbmcgJGlucHV0KTogSldTCiAgICB7CiAgICAgICAgJGRhdGEgPSBKc29uQ29udmVydGVyOjpkZWNvZGUoJGlucHV0KTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRkYXRhKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBpbnB1dC4nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFpc3NldCgkZGF0YVsnc2lnbmF0dXJlJ10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGlucHV0LicpOwogICAgICAgIH0KICAgICAgICAkc2lnbmF0dXJlID0gQmFzZTY0VXJsOjpkZWNvZGUoJGRhdGFbJ3NpZ25hdHVyZSddKTsKCiAgICAgICAgaWYgKGlzc2V0KCRkYXRhWydwcm90ZWN0ZWQnXSkpIHsKICAgICAgICAgICAgJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXIgPSAkZGF0YVsncHJvdGVjdGVkJ107CiAgICAgICAgICAgICRwcm90ZWN0ZWRIZWFkZXIgPSBKc29uQ29udmVydGVyOjpkZWNvZGUoQmFzZTY0VXJsOjpkZWNvZGUoJGRhdGFbJ3Byb3RlY3RlZCddKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXIgPSBudWxsOwogICAgICAgICAgICAkcHJvdGVjdGVkSGVhZGVyID0gW107CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkZGF0YVsnaGVhZGVyJ10pKSB7CiAgICAgICAgICAgIGlmICghaXNfYXJyYXkoJGRhdGFbJ2hlYWRlciddKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignQmFkIGhlYWRlci4nKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkaGVhZGVyID0gJGRhdGFbJ2hlYWRlciddOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRoZWFkZXIgPSBbXTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkZGF0YVsncGF5bG9hZCddKSkgewogICAgICAgICAgICAkZW5jb2RlZFBheWxvYWQgPSAkZGF0YVsncGF5bG9hZCddOwogICAgICAgICAgICAkcGF5bG9hZCA9ICR0aGlzLT5pc1BheWxvYWRFbmNvZGVkKCRwcm90ZWN0ZWRIZWFkZXIpID8gQmFzZTY0VXJsOjpkZWNvZGUoJGVuY29kZWRQYXlsb2FkKSA6ICRlbmNvZGVkUGF5bG9hZDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcGF5bG9hZCA9IG51bGw7CiAgICAgICAgICAgICRlbmNvZGVkUGF5bG9hZCA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICAkandzID0gbmV3IEpXUygkcGF5bG9hZCwgJGVuY29kZWRQYXlsb2FkLCBudWxsID09PSAkZW5jb2RlZFBheWxvYWQpOwoKICAgICAgICByZXR1cm4gJGp3cy0+YWRkU2lnbmF0dXJlKCRzaWduYXR1cmUsICRwcm90ZWN0ZWRIZWFkZXIsICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyLCAkaGVhZGVyKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Serializer/JSONGeneralSerializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyOwoKdXNlIGZ1bmN0aW9uIGFycmF5X2tleV9leGlzdHM7CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgZnVuY3Rpb24gY291bnQ7CnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBmdW5jdGlvbiBpc19hcnJheTsKdXNlIGZ1bmN0aW9uIGlzX3N0cmluZzsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxKc29uQ29udmVydGVyOwp1c2UgSm9zZVxDb21wb25lbnRcU2lnbmF0dXJlXEpXUzsKdXNlIExvZ2ljRXhjZXB0aW9uOwoKZmluYWwgY2xhc3MgSlNPTkdlbmVyYWxTZXJpYWxpemVyIGV4dGVuZHMgU2VyaWFsaXplcgp7CiAgICBwdWJsaWMgY29uc3QgTkFNRSA9ICdqd3NfanNvbl9nZW5lcmFsJzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gZGlzcGxheU5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICdKV1MgSlNPTiBHZW5lcmFsJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbmFtZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6TkFNRTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgTG9naWNFeGNlcHRpb24gaWYgbm8gc2lnbmF0dXJlIGlzIGF0dGFjaGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXJpYWxpemUoSldTICRqd3MsID9pbnQgJHNpZ25hdHVyZUluZGV4ID0gbnVsbCk6IHN0cmluZwogICAgewogICAgICAgIGlmICgwID09PSAkandzLT5jb3VudFNpZ25hdHVyZXMoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oJ05vIHNpZ25hdHVyZS4nKTsKICAgICAgICB9CgogICAgICAgICRkYXRhID0gW107CiAgICAgICAgJHRoaXMtPmNoZWNrUGF5bG9hZEVuY29kaW5nKCRqd3MpOwoKICAgICAgICBpZiAoZmFsc2UgPT09ICRqd3MtPmlzUGF5bG9hZERldGFjaGVkKCkpIHsKICAgICAgICAgICAgJGRhdGFbJ3BheWxvYWQnXSA9ICRqd3MtPmdldEVuY29kZWRQYXlsb2FkKCk7CiAgICAgICAgfQoKICAgICAgICAkZGF0YVsnc2lnbmF0dXJlcyddID0gW107CiAgICAgICAgZm9yZWFjaCAoJGp3cy0+Z2V0U2lnbmF0dXJlcygpIGFzICRzaWduYXR1cmUpIHsKICAgICAgICAgICAgJHRtcCA9IFsnc2lnbmF0dXJlJyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkc2lnbmF0dXJlLT5nZXRTaWduYXR1cmUoKSldOwogICAgICAgICAgICAkdmFsdWVzID0gWwogICAgICAgICAgICAgICAgJ3Byb3RlY3RlZCcgPT4gJHNpZ25hdHVyZS0+Z2V0RW5jb2RlZFByb3RlY3RlZEhlYWRlcigpLAogICAgICAgICAgICAgICAgJ2hlYWRlcicgPT4gJHNpZ25hdHVyZS0+Z2V0SGVhZGVyKCksCiAgICAgICAgICAgIF07CgogICAgICAgICAgICBmb3JlYWNoICgkdmFsdWVzIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICBpZiAoKGlzX3N0cmluZygkdmFsdWUpICYmICcnICE9PSAkdmFsdWUpIHx8IChpc19hcnJheSgkdmFsdWUpICYmIDAgIT09IGNvdW50KCR2YWx1ZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcFska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkZGF0YVsnc2lnbmF0dXJlcyddW10gPSAkdG1wOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIEpzb25Db252ZXJ0ZXI6OmVuY29kZSgkZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgaW5wdXQgaXMgbm90IHN1cHBvcnRlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5zZXJpYWxpemUoc3RyaW5nICRpbnB1dCk6IEpXUwogICAgewogICAgICAgICRkYXRhID0gSnNvbkNvbnZlcnRlcjo6ZGVjb2RlKCRpbnB1dCk7CiAgICAgICAgaWYgKCFpc3NldCgkZGF0YVsnc2lnbmF0dXJlcyddKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBpbnB1dC4nKTsKICAgICAgICB9CgogICAgICAgICRpc1BheWxvYWRFbmNvZGVkID0gbnVsbDsKICAgICAgICAkcmF3UGF5bG9hZCA9ICRkYXRhWydwYXlsb2FkJ10gPz8gbnVsbDsKICAgICAgICAkc2lnbmF0dXJlcyA9IFtdOwogICAgICAgIGZvcmVhY2ggKCRkYXRhWydzaWduYXR1cmVzJ10gYXMgJHNpZ25hdHVyZSkgewogICAgICAgICAgICBpZiAoIWlzc2V0KCRzaWduYXR1cmVbJ3NpZ25hdHVyZSddKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQgaW5wdXQuJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgWyRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyLCAkcHJvdGVjdGVkSGVhZGVyLCAkaGVhZGVyXSA9ICR0aGlzLT5wcm9jZXNzSGVhZGVycygkc2lnbmF0dXJlKTsKICAgICAgICAgICAgJHNpZ25hdHVyZXNbXSA9IFsKICAgICAgICAgICAgICAgICdzaWduYXR1cmUnID0+IEJhc2U2NFVybDo6ZGVjb2RlKCRzaWduYXR1cmVbJ3NpZ25hdHVyZSddKSwKICAgICAgICAgICAgICAgICdwcm90ZWN0ZWQnID0+ICRwcm90ZWN0ZWRIZWFkZXIsCiAgICAgICAgICAgICAgICAnZW5jb2RlZF9wcm90ZWN0ZWQnID0+ICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyLAogICAgICAgICAgICAgICAgJ2hlYWRlcicgPT4gJGhlYWRlciwKICAgICAgICAgICAgXTsKICAgICAgICAgICAgJGlzUGF5bG9hZEVuY29kZWQgPSAkdGhpcy0+cHJvY2Vzc0lzUGF5bG9hZEVuY29kZWQoJGlzUGF5bG9hZEVuY29kZWQsICRwcm90ZWN0ZWRIZWFkZXIpOwogICAgICAgIH0KCiAgICAgICAgJHBheWxvYWQgPSAkdGhpcy0+cHJvY2Vzc1BheWxvYWQoJHJhd1BheWxvYWQsICRpc1BheWxvYWRFbmNvZGVkKTsKICAgICAgICAkandzID0gbmV3IEpXUygkcGF5bG9hZCwgJHJhd1BheWxvYWQpOwogICAgICAgIGZvcmVhY2ggKCRzaWduYXR1cmVzIGFzICRzaWduYXR1cmUpIHsKICAgICAgICAgICAgJGp3cyA9ICRqd3MtPmFkZFNpZ25hdHVyZSgKICAgICAgICAgICAgICAgICRzaWduYXR1cmVbJ3NpZ25hdHVyZSddLAogICAgICAgICAgICAgICAgJHNpZ25hdHVyZVsncHJvdGVjdGVkJ10sCiAgICAgICAgICAgICAgICAkc2lnbmF0dXJlWydlbmNvZGVkX3Byb3RlY3RlZCddLAogICAgICAgICAgICAgICAgJHNpZ25hdHVyZVsnaGVhZGVyJ10KICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkandzOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHBheWxvYWQgZW5jb2RpbmcgaXMgaW52YWxpZAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHByb2Nlc3NJc1BheWxvYWRFbmNvZGVkKD9ib29sICRpc1BheWxvYWRFbmNvZGVkLCBhcnJheSAkcHJvdGVjdGVkSGVhZGVyKTogYm9vbAogICAgewogICAgICAgIGlmIChudWxsID09PSAkaXNQYXlsb2FkRW5jb2RlZCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmlzUGF5bG9hZEVuY29kZWQoJHByb3RlY3RlZEhlYWRlcik7CiAgICAgICAgfQogICAgICAgIGlmICgkdGhpcy0+aXNQYXlsb2FkRW5jb2RlZCgkcHJvdGVjdGVkSGVhZGVyKSAhPT0gJGlzUGF5bG9hZEVuY29kZWQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignRm9yZWlnbiBwYXlsb2FkIGVuY29kaW5nIGRldGVjdGVkLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRpc1BheWxvYWRFbmNvZGVkOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcHJvY2Vzc0hlYWRlcnMoYXJyYXkgJHNpZ25hdHVyZSk6IGFycmF5CiAgICB7CiAgICAgICAgJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXIgPSAkc2lnbmF0dXJlWydwcm90ZWN0ZWQnXSA/PyBudWxsOwogICAgICAgICRwcm90ZWN0ZWRIZWFkZXIgPSBudWxsID09PSAkZW5jb2RlZFByb3RlY3RlZEhlYWRlciA/IFtdIDogSnNvbkNvbnZlcnRlcjo6ZGVjb2RlKEJhc2U2NFVybDo6ZGVjb2RlKCRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyKSk7CiAgICAgICAgJGhlYWRlciA9IGFycmF5X2tleV9leGlzdHMoJ2hlYWRlcicsICRzaWduYXR1cmUpID8gJHNpZ25hdHVyZVsnaGVhZGVyJ10gOiBbXTsKCiAgICAgICAgcmV0dXJuIFskZW5jb2RlZFByb3RlY3RlZEhlYWRlciwgJHByb3RlY3RlZEhlYWRlciwgJGhlYWRlcl07CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBwcm9jZXNzUGF5bG9hZCg/c3RyaW5nICRyYXdQYXlsb2FkLCA/Ym9vbCAkaXNQYXlsb2FkRW5jb2RlZCk6ID9zdHJpbmcKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHJhd1BheWxvYWQpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2UgPT09ICRpc1BheWxvYWRFbmNvZGVkID8gJHJhd1BheWxvYWQgOiBCYXNlNjRVcmw6OmRlY29kZSgkcmF3UGF5bG9hZCk7CiAgICB9CgogICAgLy8gQHRocm93cyBMb2dpY0V4Y2VwdGlvbiBpZiB0aGUgcGF5bG9hZCBlbmNvZGluZyBpcyBpbnZhbGlkCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrUGF5bG9hZEVuY29kaW5nKEpXUyAkandzKTogdm9pZAogICAgewogICAgICAgIGlmICgkandzLT5pc1BheWxvYWREZXRhY2hlZCgpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJGlzX2VuY29kZWQgPSBudWxsOwogICAgICAgIGZvcmVhY2ggKCRqd3MtPmdldFNpZ25hdHVyZXMoKSBhcyAkc2lnbmF0dXJlKSB7CiAgICAgICAgICAgIGlmIChudWxsID09PSAkaXNfZW5jb2RlZCkgewogICAgICAgICAgICAgICAgJGlzX2VuY29kZWQgPSAkdGhpcy0+aXNQYXlsb2FkRW5jb2RlZCgkc2lnbmF0dXJlLT5nZXRQcm90ZWN0ZWRIZWFkZXIoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGZhbHNlID09PSAkandzLT5pc1BheWxvYWREZXRhY2hlZCgpKSB7CiAgICAgICAgICAgICAgICBpZiAoJGlzX2VuY29kZWQgIT09ICR0aGlzLT5pc1BheWxvYWRFbmNvZGVkKCRzaWduYXR1cmUtPmdldFByb3RlY3RlZEhlYWRlcigpKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBMb2dpY0V4Y2VwdGlvbignRm9yZWlnbiBwYXlsb2FkIGVuY29kaW5nIGRldGVjdGVkLicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Serializer/JWSSerializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyOwoKdXNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxKV1M7CgppbnRlcmZhY2UgSldTU2VyaWFsaXplcgp7CiAgICAvKioKICAgICAqIFRoZSBuYW1lIG9mIHRoZSBzZXJpYWxpemF0aW9uLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbmFtZSgpOiBzdHJpbmc7CgogICAgcHVibGljIGZ1bmN0aW9uIGRpc3BsYXlOYW1lKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIENvbnZlcnRzIGEgSldTIGludG8gYSBzdHJpbmcuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXJpYWxpemUoSldTICRqd3MsID9pbnQgJHNpZ25hdHVyZUluZGV4ID0gbnVsbCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIExvYWRzIGRhdGEgYW5kIHJldHVybiBhIEpXUyBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkaW5wdXQgQSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIGEgSldTCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bnNlcmlhbGl6ZShzdHJpbmcgJGlucHV0KTogSldTOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Serializer/JWSSerializerManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyOwoKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxKV1M7CgpjbGFzcyBKV1NTZXJpYWxpemVyTWFuYWdlcgp7CiAgICAvKioKICAgICAqIEB2YXIgSldTU2VyaWFsaXplcltdCiAgICAgKi8KICAgIHByaXZhdGUgJHNlcmlhbGl6ZXJzID0gW107CgogICAgLyoqCiAgICAgKiBAcGFyYW0gSldTU2VyaWFsaXplcltdICRzZXJpYWxpemVycwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJHNlcmlhbGl6ZXJzKQogICAgewogICAgICAgIGZvcmVhY2ggKCRzZXJpYWxpemVycyBhcyAkc2VyaWFsaXplcikgewogICAgICAgICAgICAkdGhpcy0+YWRkKCRzZXJpYWxpemVyKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsaXN0KCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X2tleXMoJHRoaXMtPnNlcmlhbGl6ZXJzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIGEgSldTIGludG8gYSBzdHJpbmcuCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHNlcmlhbGl6ZXIgaXMgbm90IHN1cHBvcnRlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VyaWFsaXplKHN0cmluZyAkbmFtZSwgSldTICRqd3MsID9pbnQgJHNpZ25hdHVyZUluZGV4ID0gbnVsbCk6IHN0cmluZwogICAgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnNlcmlhbGl6ZXJzWyRuYW1lXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdVbnN1cHBvcnRlZCBzZXJpYWxpemVyICIlcyIuJywgJG5hbWUpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+c2VyaWFsaXplcnNbJG5hbWVdLT5zZXJpYWxpemUoJGp3cywgJHNpZ25hdHVyZUluZGV4KTsKICAgIH0KCiAgICAvKioKICAgICAqIExvYWRzIGRhdGEgYW5kIHJldHVybiBhIEpXUyBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRpbnB1dCBBIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgYSBKV1MKICAgICAqIEBwYXJhbSBudWxsfHN0cmluZyAkbmFtZSAgdGhlIG5hbWUgb2YgdGhlIHNlcmlhbGl6ZXIgaWYgdGhlIGlucHV0IGlzIHVuc2VyaWFsaXplZAogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBpbnB1dCBpcyBub3Qgc3VwcG9ydGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bnNlcmlhbGl6ZShzdHJpbmcgJGlucHV0LCA/c3RyaW5nICYkbmFtZSA9IG51bGwpOiBKV1MKICAgIHsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+c2VyaWFsaXplcnMgYXMgJHNlcmlhbGl6ZXIpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRqd3MgPSAkc2VyaWFsaXplci0+dW5zZXJpYWxpemUoJGlucHV0KTsKICAgICAgICAgICAgICAgICRuYW1lID0gJHNlcmlhbGl6ZXItPm5hbWUoKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJGp3czsKICAgICAgICAgICAgfSBjYXRjaCAoSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQgaW5wdXQuJyk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGQoSldTU2VyaWFsaXplciAkc2VyaWFsaXplcik6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+c2VyaWFsaXplcnNbJHNlcmlhbGl6ZXItPm5hbWUoKV0gPSAkc2VyaWFsaXplcjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Serializer/JWSSerializerManagerFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyOwoKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKCmNsYXNzIEpXU1NlcmlhbGl6ZXJNYW5hZ2VyRmFjdG9yeQp7CiAgICAvKioKICAgICAqIEB2YXIgSldTU2VyaWFsaXplcltdCiAgICAgKi8KICAgIHByaXZhdGUgJHNlcmlhbGl6ZXJzID0gW107CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJG5hbWVzCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHNlcmlhbGl6ZXIgaXMgbm90IHN1cHBvcnRlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlKGFycmF5ICRuYW1lcyk6IEpXU1NlcmlhbGl6ZXJNYW5hZ2VyCiAgICB7CiAgICAgICAgJHNlcmlhbGl6ZXJzID0gW107CiAgICAgICAgZm9yZWFjaCAoJG5hbWVzIGFzICRuYW1lKSB7CiAgICAgICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnNlcmlhbGl6ZXJzWyRuYW1lXSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVW5zdXBwb3J0ZWQgc2VyaWFsaXplciAiJXMiLicsICRuYW1lKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHNlcmlhbGl6ZXJzW10gPSAkdGhpcy0+c2VyaWFsaXplcnNbJG5hbWVdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBKV1NTZXJpYWxpemVyTWFuYWdlcigkc2VyaWFsaXplcnMpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbmFtZXMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5cygkdGhpcy0+c2VyaWFsaXplcnMpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBKV1NTZXJpYWxpemVyW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFsbCgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2VyaWFsaXplcnM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZChKV1NTZXJpYWxpemVyICRzZXJpYWxpemVyKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5zZXJpYWxpemVyc1skc2VyaWFsaXplci0+bmFtZSgpXSA9ICRzZXJpYWxpemVyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Serializer/Serializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyOwoKdXNlIGZ1bmN0aW9uIGFycmF5X2tleV9leGlzdHM7CgphYnN0cmFjdCBjbGFzcyBTZXJpYWxpemVyIGltcGxlbWVudHMgSldTU2VyaWFsaXplcgp7CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaXNQYXlsb2FkRW5jb2RlZChhcnJheSAkcHJvdGVjdGVkSGVhZGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAhYXJyYXlfa2V5X2V4aXN0cygnYjY0JywgJHByb3RlY3RlZEhlYWRlcikgfHwgdHJ1ZSA9PT0gJHByb3RlY3RlZEhlYWRlclsnYjY0J107CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Signature.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBmdW5jdGlvbiBhcnJheV9rZXlfZXhpc3RzOwp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwoKY2xhc3MgU2lnbmF0dXJlCnsKICAgIC8qKgogICAgICogQHZhciBudWxsfHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlICRwcm90ZWN0ZWRIZWFkZXI7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGhlYWRlcjsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJHNpZ25hdHVyZTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICRzaWduYXR1cmUsIGFycmF5ICRwcm90ZWN0ZWRIZWFkZXIsID9zdHJpbmcgJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXIsIGFycmF5ICRoZWFkZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPnByb3RlY3RlZEhlYWRlciA9IG51bGwgPT09ICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyID8gW10gOiAkcHJvdGVjdGVkSGVhZGVyOwogICAgICAgICR0aGlzLT5lbmNvZGVkUHJvdGVjdGVkSGVhZGVyID0gJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXI7CiAgICAgICAgJHRoaXMtPnNpZ25hdHVyZSA9ICRzaWduYXR1cmU7CiAgICAgICAgJHRoaXMtPmhlYWRlciA9ICRoZWFkZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgcHJvdGVjdGVkIGhlYWRlciBhc3NvY2lhdGVkIHdpdGggdGhlIHNpZ25hdHVyZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFByb3RlY3RlZEhlYWRlcigpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cHJvdGVjdGVkSGVhZGVyOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIHVucHJvdGVjdGVkIGhlYWRlciBhc3NvY2lhdGVkIHdpdGggdGhlIHNpZ25hdHVyZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcigpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aGVhZGVyOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIHByb3RlY3RlZCBoZWFkZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBzaWduYXR1cmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbmNvZGVkUHJvdGVjdGVkSGVhZGVyKCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmVuY29kZWRQcm90ZWN0ZWRIZWFkZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgcHJvdGVjdGVkIGhlYWRlciBvZiB0aGUgc3BlY2lmaWVkIGtleS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkgVGhlIGtleQogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBoZWFkZXIgcGFyYW1ldGVyIGRvZXMgbm90IGV4aXN0CiAgICAgKgogICAgICogQHJldHVybiBudWxsfG1peGVkIEhlYWRlciB2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJvdGVjdGVkSGVhZGVyUGFyYW1ldGVyKHN0cmluZyAka2V5KQogICAgewogICAgICAgIGlmICgkdGhpcy0+aGFzUHJvdGVjdGVkSGVhZGVyUGFyYW1ldGVyKCRrZXkpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Z2V0UHJvdGVjdGVkSGVhZGVyKClbJGtleV07CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBwcm90ZWN0ZWQgaGVhZGVyICIlcyIgZG9lcyBub3QgZXhpc3QnLCAka2V5KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3RlY3RlZCBoZWFkZXIgaGFzIHRoZSBnaXZlbiBwYXJhbWV0ZXIuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc1Byb3RlY3RlZEhlYWRlclBhcmFtZXRlcihzdHJpbmcgJGtleSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkdGhpcy0+Z2V0UHJvdGVjdGVkSGVhZGVyKCkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHVucHJvdGVjdGVkIGhlYWRlciBvZiB0aGUgc3BlY2lmaWVkIGtleS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkgVGhlIGtleQogICAgICoKICAgICAqIEByZXR1cm4gbnVsbHxtaXhlZCBIZWFkZXIgdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlclBhcmFtZXRlcihzdHJpbmcgJGtleSkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmhhc0hlYWRlclBhcmFtZXRlcigka2V5KSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmhlYWRlclska2V5XTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVGhlIGhlYWRlciAiJXMiIGRvZXMgbm90IGV4aXN0JywgJGtleSkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB1bnByb3RlY3RlZCBoZWFkZXIgaGFzIHRoZSBnaXZlbiBwYXJhbWV0ZXIuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0hlYWRlclBhcmFtZXRlcihzdHJpbmcgJGtleSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkdGhpcy0+aGVhZGVyKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzaWduYXR1cmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduYXR1cmUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zaWduYXR1cmU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAid2ViLXRva2VuL2p3dC11dGlsLWVjYyIsCiAgICAiZGVzY3JpcHRpb24iOiAiRUNDIFRvb2xzIGZvciB0aGUgSldUIEZyYW1ld29yay4iLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImtleXdvcmRzIjogWyJKV1MiLCAiSldUIiwgIkpXRSIsICJKV0EiLCAiSldLIiwgIkpXS1NldCIsICJKb3QiLCAiSm9zZSIsICJSRkM3NTE1IiwgIlJGQzc1MTYiLCAiUkZDNzUxNyIsICJSRkM3NTE4IiwgIlJGQzc1MTkiLCAiUkZDNzUyMCIsICJCdW5kbGUiLCAiU3ltZm9ueSJdLAogICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4iLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgfSx7CiAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3QtZnJhbWV3b3JrL2NvbnRyaWJ1dG9ycyIKICAgICAgICB9CiAgICBdLAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkpvc2VcXENvbXBvbmVudFxcQ29yZVxcVXRpbFxcRWNjXFwiOiAgIiIKICAgICAgICB9CiAgICB9LAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgImJyaWNrL21hdGgiOiAiXjAuOC4xN3xeMC45IgogICAgfSwKICAgICJzdWdnZXN0IjogewogICAgICAgICJleHQtZ21wIjogIkdNUCBvciBCQ01hdGggaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRvIGltcHJvdmUgdGhlIGxpYnJhcnkgcGVyZm9ybWFuY2UiLAogICAgICAgICJleHQtYmNtYXRoIjogIkdNUCBvciBCQ01hdGggaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRvIGltcHJvdmUgdGhlIGxpYnJhcnkgcGVyZm9ybWFuY2UiCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/Curve.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxFY2M7Cgp1c2UgQnJpY2tcTWF0aFxCaWdJbnRlZ2VyOwp1c2UgZnVuY3Rpb24gaXNfbnVsbDsKdXNlIFJ1bnRpbWVFeGNlcHRpb247CgovKioKICogQGludGVybmFsCiAqLwpjbGFzcyBDdXJ2ZQp7CiAgICAvKioKICAgICAqIEVsbGlwdGljIGN1cnZlIG92ZXIgdGhlIGZpZWxkIG9mIGludGVnZXJzIG1vZHVsbyBhIHByaW1lLgogICAgICoKICAgICAqIEB2YXIgQmlnSW50ZWdlcgogICAgICovCiAgICBwcml2YXRlICRhOwoKICAgIC8qKgogICAgICogQHZhciBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgJGI7CgogICAgLyoqCiAgICAgKiBAdmFyIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkcHJpbWU7CgogICAgLyoqCiAgICAgKiBCaW5hcnkgbGVuZ3RoIG9mIGtleXMgYXNzb2NpYXRlZCB3aXRoIHRoZXNlIGN1cnZlIHBhcmFtZXRlcnMuCiAgICAgKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJpdmF0ZSAkc2l6ZTsKCiAgICAvKioKICAgICAqIEB2YXIgUG9pbnQKICAgICAqLwogICAgcHJpdmF0ZSAkZ2VuZXJhdG9yOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChpbnQgJHNpemUsIEJpZ0ludGVnZXIgJHByaW1lLCBCaWdJbnRlZ2VyICRhLCBCaWdJbnRlZ2VyICRiLCBQb2ludCAkZ2VuZXJhdG9yKQogICAgewogICAgICAgICR0aGlzLT5zaXplID0gJHNpemU7CiAgICAgICAgJHRoaXMtPnByaW1lID0gJHByaW1lOwogICAgICAgICR0aGlzLT5hID0gJGE7CiAgICAgICAgJHRoaXMtPmIgPSAkYjsKICAgICAgICAkdGhpcy0+Z2VuZXJhdG9yID0gJGdlbmVyYXRvcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJ2N1cnZlKCcuTWF0aDo6dG9TdHJpbmcoJHRoaXMtPmdldEEoKSkuJywgJy5NYXRoOjp0b1N0cmluZygkdGhpcy0+Z2V0QigpKS4nLCAnLk1hdGg6OnRvU3RyaW5nKCR0aGlzLT5nZXRQcmltZSgpKS4nKSc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEEoKTogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QigpOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5iOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcmltZSgpOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wcmltZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2l6ZSgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNpemU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIGN1cnZlIGRvZXMgbm90IGNvbnRhaW4gdGhlIHBvaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQb2ludChCaWdJbnRlZ2VyICR4LCBCaWdJbnRlZ2VyICR5LCA/QmlnSW50ZWdlciAkb3JkZXIgPSBudWxsKTogUG9pbnQKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5jb250YWlucygkeCwgJHkpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdDdXJ2ZSAnLiR0aGlzLT5fX3RvU3RyaW5nKCkuJyBkb2VzIG5vdCBjb250YWluIHBvaW50ICgnLk1hdGg6OnRvU3RyaW5nKCR4KS4nLCAnLk1hdGg6OnRvU3RyaW5nKCR5KS4nKScpOwogICAgICAgIH0KICAgICAgICAkcG9pbnQgPSBQb2ludDo6Y3JlYXRlKCR4LCAkeSwgJG9yZGVyKTsKICAgICAgICBpZiAoIWlzX251bGwoJG9yZGVyKSkgewogICAgICAgICAgICAkbXVsID0gJHRoaXMtPm11bCgkcG9pbnQsICRvcmRlcik7CiAgICAgICAgICAgIGlmICghJG11bC0+aXNJbmZpbml0eSgpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignU0VMRiAqIE9SREVSIE1VU1QgRVFVQUwgSU5GSU5JVFkuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkcG9pbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIGNvb3JkaW5hdGVzIGFyZSBvdXQgb2YgcmFuZ2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFB1YmxpY0tleUZyb20oQmlnSW50ZWdlciAkeCwgQmlnSW50ZWdlciAkeSk6IFB1YmxpY0tleQogICAgewogICAgICAgICR6ZXJvID0gQmlnSW50ZWdlcjo6emVybygpOwogICAgICAgIGlmICgkeC0+Y29tcGFyZVRvKCR6ZXJvKSA8IDAgfHwgJHktPmNvbXBhcmVUbygkemVybykgPCAwIHx8ICR0aGlzLT5nZW5lcmF0b3ItPmdldE9yZGVyKCktPmNvbXBhcmVUbygkeCkgPD0gMCB8fCAkdGhpcy0+Z2VuZXJhdG9yLT5nZXRPcmRlcigpLT5jb21wYXJlVG8oJHkpIDw9IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ0dlbmVyYXRvciBwb2ludCBoYXMgeCBhbmQgeSBvdXQgb2YgcmFuZ2UuJyk7CiAgICAgICAgfQogICAgICAgICRwb2ludCA9ICR0aGlzLT5nZXRQb2ludCgkeCwgJHkpOwoKICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleSgkcG9pbnQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb250YWlucyhCaWdJbnRlZ2VyICR4LCBCaWdJbnRlZ2VyICR5KTogYm9vbAogICAgewogICAgICAgIHJldHVybiBNYXRoOjplcXVhbHMoCiAgICAgICAgICAgIE1vZHVsYXJBcml0aG1ldGljOjpzdWIoCiAgICAgICAgICAgICAgICAkeS0+cG93ZXIoMiksCiAgICAgICAgICAgICAgICBNYXRoOjphZGQoCiAgICAgICAgICAgICAgICAgICAgTWF0aDo6YWRkKAogICAgICAgICAgICAgICAgICAgICAgICAkeC0+cG93ZXIoMyksCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5nZXRBKCktPm11bHRpcGxpZWRCeSgkeCkKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5nZXRCKCkKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAkdGhpcy0+Z2V0UHJpbWUoKQogICAgICAgICAgICApLAogICAgICAgICAgICBCaWdJbnRlZ2VyOjp6ZXJvKCkKICAgICAgICApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoUG9pbnQgJG9uZSwgUG9pbnQgJHR3byk6IFBvaW50CiAgICB7CiAgICAgICAgaWYgKCR0d28tPmlzSW5maW5pdHkoKSkgewogICAgICAgICAgICByZXR1cm4gY2xvbmUgJG9uZTsKICAgICAgICB9CgogICAgICAgIGlmICgkb25lLT5pc0luZmluaXR5KCkpIHsKICAgICAgICAgICAgcmV0dXJuIGNsb25lICR0d287CiAgICAgICAgfQoKICAgICAgICBpZiAoJHR3by0+Z2V0WCgpLT5pc0VxdWFsVG8oJG9uZS0+Z2V0WCgpKSkgewogICAgICAgICAgICBpZiAoJHR3by0+Z2V0WSgpLT5pc0VxdWFsVG8oJG9uZS0+Z2V0WSgpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5nZXREb3VibGUoJG9uZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBQb2ludDo6aW5maW5pdHkoKTsKICAgICAgICB9CgogICAgICAgICRzbG9wZSA9IE1vZHVsYXJBcml0aG1ldGljOjpkaXYoCiAgICAgICAgICAgICR0d28tPmdldFkoKS0+bWludXMoJG9uZS0+Z2V0WSgpKSwKICAgICAgICAgICAgJHR3by0+Z2V0WCgpLT5taW51cygkb25lLT5nZXRYKCkpLAogICAgICAgICAgICAkdGhpcy0+Z2V0UHJpbWUoKQogICAgICAgICk7CgogICAgICAgICR4UiA9IE1vZHVsYXJBcml0aG1ldGljOjpzdWIoCiAgICAgICAgICAgICRzbG9wZS0+cG93ZXIoMiktPm1pbnVzKCRvbmUtPmdldFgoKSksCiAgICAgICAgICAgICR0d28tPmdldFgoKSwKICAgICAgICAgICAgJHRoaXMtPmdldFByaW1lKCkKICAgICAgICApOwoKICAgICAgICAkeVIgPSBNb2R1bGFyQXJpdGhtZXRpYzo6c3ViKAogICAgICAgICAgICAkc2xvcGUtPm11bHRpcGxpZWRCeSgkb25lLT5nZXRYKCktPm1pbnVzKCR4UikpLAogICAgICAgICAgICAkb25lLT5nZXRZKCksCiAgICAgICAgICAgICR0aGlzLT5nZXRQcmltZSgpCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRQb2ludCgkeFIsICR5UiwgJG9uZS0+Z2V0T3JkZXIoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG11bChQb2ludCAkb25lLCBCaWdJbnRlZ2VyICRuKTogUG9pbnQKICAgIHsKICAgICAgICBpZiAoJG9uZS0+aXNJbmZpbml0eSgpKSB7CiAgICAgICAgICAgIHJldHVybiBQb2ludDo6aW5maW5pdHkoKTsKICAgICAgICB9CgogICAgICAgIC8qKiBAdmFyIEJpZ0ludGVnZXIgJHplcm8gKi8KICAgICAgICAkemVybyA9IEJpZ0ludGVnZXI6Onplcm8oKTsKICAgICAgICBpZiAoJG9uZS0+Z2V0T3JkZXIoKS0+Y29tcGFyZVRvKCR6ZXJvKSA+IDApIHsKICAgICAgICAgICAgJG4gPSAkbi0+bW9kKCRvbmUtPmdldE9yZGVyKCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRuLT5pc0VxdWFsVG8oJHplcm8pKSB7CiAgICAgICAgICAgIHJldHVybiBQb2ludDo6aW5maW5pdHkoKTsKICAgICAgICB9CgogICAgICAgIC8qKiBAdmFyIFBvaW50W10gJHIgKi8KICAgICAgICAkciA9IFsKICAgICAgICAgICAgUG9pbnQ6OmluZmluaXR5KCksCiAgICAgICAgICAgIGNsb25lICRvbmUsCiAgICAgICAgXTsKCiAgICAgICAgJGsgPSAkdGhpcy0+Z2V0U2l6ZSgpOwogICAgICAgICRuMSA9IHN0cl9wYWQoTWF0aDo6YmFzZUNvbnZlcnQoTWF0aDo6dG9TdHJpbmcoJG4pLCAxMCwgMiksICRrLCAnMCcsIFNUUl9QQURfTEVGVCk7CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRrOyArKyRpKSB7CiAgICAgICAgICAgICRqID0gJG4xWyRpXTsKICAgICAgICAgICAgUG9pbnQ6OmNzd2FwKCRyWzBdLCAkclsxXSwgJGogXiAxKTsKICAgICAgICAgICAgJHJbMF0gPSAkdGhpcy0+YWRkKCRyWzBdLCAkclsxXSk7CiAgICAgICAgICAgICRyWzFdID0gJHRoaXMtPmdldERvdWJsZSgkclsxXSk7CiAgICAgICAgICAgIFBvaW50Ojpjc3dhcCgkclswXSwgJHJbMV0sICRqIF4gMSk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+dmFsaWRhdGUoJHJbMF0pOwoKICAgICAgICByZXR1cm4gJHJbMF07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQ3VydmUgJG90aGVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbXAoc2VsZiAkb3RoZXIpOiBpbnQKICAgIHsKICAgICAgICAkZXF1YWwgPSAkdGhpcy0+Z2V0QSgpLT5pc0VxdWFsVG8oJG90aGVyLT5nZXRBKCkpCiAgICAgICAgICAgICAgICAgJiYgJHRoaXMtPmdldEIoKS0+aXNFcXVhbFRvKCRvdGhlci0+Z2V0QigpKQogICAgICAgICAgICAgICAgICYmICR0aGlzLT5nZXRQcmltZSgpLT5pc0VxdWFsVG8oJG90aGVyLT5nZXRQcmltZSgpKTsKCiAgICAgICAgcmV0dXJuICRlcXVhbCA/IDAgOiAxOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEN1cnZlICRvdGhlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKHNlbGYgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAwID09PSAkdGhpcy0+Y21wKCRvdGhlcik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldERvdWJsZShQb2ludCAkcG9pbnQpOiBQb2ludAogICAgewogICAgICAgIGlmICgkcG9pbnQtPmlzSW5maW5pdHkoKSkgewogICAgICAgICAgICByZXR1cm4gUG9pbnQ6OmluZmluaXR5KCk7CiAgICAgICAgfQoKICAgICAgICAkYSA9ICR0aGlzLT5nZXRBKCk7CiAgICAgICAgJHRocmVlWDIgPSBCaWdJbnRlZ2VyOjpvZigzKS0+bXVsdGlwbGllZEJ5KCRwb2ludC0+Z2V0WCgpLT5wb3dlcigyKSk7CgogICAgICAgICR0YW5nZW50ID0gTW9kdWxhckFyaXRobWV0aWM6OmRpdigKICAgICAgICAgICAgJHRocmVlWDItPnBsdXMoJGEpLAogICAgICAgICAgICBCaWdJbnRlZ2VyOjpvZigyKS0+bXVsdGlwbGllZEJ5KCRwb2ludC0+Z2V0WSgpKSwKICAgICAgICAgICAgJHRoaXMtPmdldFByaW1lKCkKICAgICAgICApOwoKICAgICAgICAkeDMgPSBNb2R1bGFyQXJpdGhtZXRpYzo6c3ViKAogICAgICAgICAgICAkdGFuZ2VudC0+cG93ZXIoMiksCiAgICAgICAgICAgIEJpZ0ludGVnZXI6Om9mKDIpLT5tdWx0aXBsaWVkQnkoJHBvaW50LT5nZXRYKCkpLAogICAgICAgICAgICAkdGhpcy0+Z2V0UHJpbWUoKQogICAgICAgICk7CgogICAgICAgICR5MyA9IE1vZHVsYXJBcml0aG1ldGljOjpzdWIoCiAgICAgICAgICAgICR0YW5nZW50LT5tdWx0aXBsaWVkQnkoJHBvaW50LT5nZXRYKCktPm1pbnVzKCR4MykpLAogICAgICAgICAgICAkcG9pbnQtPmdldFkoKSwKICAgICAgICAgICAgJHRoaXMtPmdldFByaW1lKCkKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFBvaW50KCR4MywgJHkzLCAkcG9pbnQtPmdldE9yZGVyKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVQcml2YXRlS2V5KCk6IFByaXZhdGVLZXkKICAgIHsKICAgICAgICByZXR1cm4gUHJpdmF0ZUtleTo6Y3JlYXRlKCR0aGlzLT5nZW5lcmF0ZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlUHVibGljS2V5KFByaXZhdGVLZXkgJHByaXZhdGVLZXkpOiBQdWJsaWNLZXkKICAgIHsKICAgICAgICAkcG9pbnQgPSAkdGhpcy0+bXVsKCR0aGlzLT5nZW5lcmF0b3IsICRwcml2YXRlS2V5LT5nZXRTZWNyZXQoKSk7CgogICAgICAgIHJldHVybiBuZXcgUHVibGljS2V5KCRwb2ludCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEdlbmVyYXRvcigpOiBQb2ludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2VuZXJhdG9yOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBwb2ludCBpcyBpbnZhbGlkCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdmFsaWRhdGUoUG9pbnQgJHBvaW50KTogdm9pZAogICAgewogICAgICAgIGlmICghJHBvaW50LT5pc0luZmluaXR5KCkgJiYgISR0aGlzLT5jb250YWlucygkcG9pbnQtPmdldFgoKSwgJHBvaW50LT5nZXRZKCkpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdJbnZhbGlkIHBvaW50Jyk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZ2VuZXJhdGUoKTogQmlnSW50ZWdlcgogICAgewogICAgICAgICRtYXggPSAkdGhpcy0+Z2VuZXJhdG9yLT5nZXRPcmRlcigpOwogICAgICAgICRudW1CaXRzID0gJHRoaXMtPmJuTnVtQml0cygkbWF4KTsKICAgICAgICAkbnVtQnl0ZXMgPSAoaW50KSBjZWlsKCRudW1CaXRzIC8gOCk7CiAgICAgICAgLy8gR2VuZXJhdGUgYW4gaW50ZWdlciBvZiBzaXplID49ICRudW1CaXRzCiAgICAgICAgJGJ5dGVzID0gQmlnSW50ZWdlcjo6cmFuZG9tQml0cygkbnVtQnl0ZXMpOwogICAgICAgICRtYXNrID0gQmlnSW50ZWdlcjo6b2YoMiktPnBvd2VyKCRudW1CaXRzKS0+bWludXMoMSk7CgogICAgICAgIHJldHVybiAkYnl0ZXMtPmFuZCgkbWFzayk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYml0cyB1c2VkIHRvIHN0b3JlIHRoaXMgbnVtYmVyLiBOb24tc2lnbmlmaWNhbnQgdXBwZXIgYml0cyBhcmUgbm90IGNvdW50ZWQuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL2NyeXB0by9CTl9udW1fYnl0ZXMuaHRtbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGJuTnVtQml0cyhCaWdJbnRlZ2VyICR4KTogaW50CiAgICB7CiAgICAgICAgJHplcm8gPSBCaWdJbnRlZ2VyOjpvZigwKTsKICAgICAgICBpZiAoJHgtPmlzRXF1YWxUbygkemVybykpIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICAgICRsb2cyID0gMDsKICAgICAgICB3aGlsZSAoISR4LT5pc0VxdWFsVG8oJHplcm8pKSB7CiAgICAgICAgICAgICR4ID0gJHgtPnNoaWZ0ZWRSaWdodCgxKTsKICAgICAgICAgICAgKyskbG9nMjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbG9nMjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/EcDH.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxFY2M7Cgp1c2UgQnJpY2tcTWF0aFxCaWdJbnRlZ2VyOwoKLyoKICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoQykgMjAxMiBNYXR5YXMgRGFudGVyCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwogKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCiAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQogKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKgogKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAogKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KICoKICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCiAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTCiAqIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAogKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKi8KCi8qKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIEVjREgKewogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb21wdXRlU2hhcmVkS2V5KEN1cnZlICRjdXJ2ZSwgUHVibGljS2V5ICRwdWJsaWNLZXksIFByaXZhdGVLZXkgJHByaXZhdGVLZXkpOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuICRjdXJ2ZS0+bXVsKCRwdWJsaWNLZXktPmdldFBvaW50KCksICRwcml2YXRlS2V5LT5nZXRTZWNyZXQoKSktPmdldFgoKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOSBTcG9ta3ktTGFicwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/Math.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxFY2M7Cgp1c2UgQnJpY2tcTWF0aFxCaWdJbnRlZ2VyOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEJpZ0ludGVnZXIgYXMgQ29yZUJpZ0ludGVnZXI7CgovKioKICogQGludGVybmFsCiAqLwpjbGFzcyBNYXRoCnsKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXF1YWxzKEJpZ0ludGVnZXIgJGZpcnN0LCBCaWdJbnRlZ2VyICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJGZpcnN0LT5pc0VxdWFsVG8oJG90aGVyKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGFkZChCaWdJbnRlZ2VyICRhdWdlbmQsIEJpZ0ludGVnZXIgJGFkZGVuZCk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gJGF1Z2VuZC0+cGx1cygkYWRkZW5kKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvU3RyaW5nKEJpZ0ludGVnZXIgJHZhbHVlKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR2YWx1ZS0+dG9CYXNlKDEwKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGludmVyc2VNb2QoQmlnSW50ZWdlciAkYSwgQmlnSW50ZWdlciAkbSk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gQ29yZUJpZ0ludGVnZXI6OmNyZWF0ZUZyb21CaWdJbnRlZ2VyKCRhKS0+bW9kSW52ZXJzZShDb3JlQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbUJpZ0ludGVnZXIoJG0pKS0+Z2V0KCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBiYXNlQ29udmVydChzdHJpbmcgJG51bWJlciwgaW50ICRmcm9tLCBpbnQgJHRvKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIEJpZ0ludGVnZXI6OmZyb21CYXNlKCRudW1iZXIsICRmcm9tKS0+dG9CYXNlKCR0byk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/ModularArithmetic.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxFY2M7Cgp1c2UgQnJpY2tcTWF0aFxCaWdJbnRlZ2VyOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgTW9kdWxhckFyaXRobWV0aWMKewogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdWIoQmlnSW50ZWdlciAkbWludWVuZCwgQmlnSW50ZWdlciAkc3VidHJhaGVuZCwgQmlnSW50ZWdlciAkbW9kdWx1cyk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gJG1pbnVlbmQtPm1pbnVzKCRzdWJ0cmFoZW5kKS0+bW9kKCRtb2R1bHVzKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG11bChCaWdJbnRlZ2VyICRtdWx0aXBsaWVyLCBCaWdJbnRlZ2VyICRtdWxpcGxpY2FuZCwgQmlnSW50ZWdlciAkbW9kdWx1cyk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gJG11bHRpcGxpZXItPm11bHRpcGxpZWRCeSgkbXVsaXBsaWNhbmQpLT5tb2QoJG1vZHVsdXMpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGl2KEJpZ0ludGVnZXIgJGRpdmlkZW5kLCBCaWdJbnRlZ2VyICRkaXZpc29yLCBCaWdJbnRlZ2VyICRtb2R1bHVzKTogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiBzZWxmOjptdWwoJGRpdmlkZW5kLCBNYXRoOjppbnZlcnNlTW9kKCRkaXZpc29yLCAkbW9kdWx1cyksICRtb2R1bHVzKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/NistCurve.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxFY2M7Cgp1c2UgQnJpY2tcTWF0aFxCaWdJbnRlZ2VyOwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlci4KICoKICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgogKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCiAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCiAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwogKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMKICogT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCiAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgogKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgTmlzdEN1cnZlCnsKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBOSVNUIFAtMjU2IGN1cnZlLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGN1cnZlMjU2KCk6IEN1cnZlCiAgICB7CiAgICAgICAgJHAgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZSgnZmZmZmZmZmYwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZicsIDE2KTsKICAgICAgICAkYSA9IEJpZ0ludGVnZXI6OmZyb21CYXNlKCdmZmZmZmZmZjAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjJywgMTYpOwogICAgICAgICRiID0gQmlnSW50ZWdlcjo6ZnJvbUJhc2UoJzVhYzYzNWQ4YWEzYTkzZTdiM2ViYmQ1NTc2OTg4NmJjNjUxZDA2YjBjYzUzYjBmNjNiY2UzYzNlMjdkMjYwNGInLCAxNik7CiAgICAgICAgJHggPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZSgnNmIxN2QxZjJlMTJjNDI0N2Y4YmNlNmU1NjNhNDQwZjI3NzAzN2Q4MTJkZWIzM2EwZjRhMTM5NDVkODk4YzI5NicsIDE2KTsKICAgICAgICAkeSA9IEJpZ0ludGVnZXI6OmZyb21CYXNlKCc0ZmUzNDJlMmZlMWE3ZjliOGVlN2ViNGE3YzBmOWUxNjJiY2UzMzU3NmIzMTVlY2VjYmI2NDA2ODM3YmY1MWY1JywgMTYpOwogICAgICAgICRuID0gQmlnSW50ZWdlcjo6ZnJvbUJhc2UoJ2ZmZmZmZmZmMDAwMDAwMDBmZmZmZmZmZmZmZmZmZmZmYmNlNmZhYWRhNzE3OWU4NGYzYjljYWMyZmM2MzI1NTEnLCAxNik7CiAgICAgICAgJGdlbmVyYXRvciA9IFBvaW50OjpjcmVhdGUoJHgsICR5LCAkbik7CgogICAgICAgIHJldHVybiBuZXcgQ3VydmUoMjU2LCAkcCwgJGEsICRiLCAkZ2VuZXJhdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gTklTVCBQLTM4NCBjdXJ2ZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjdXJ2ZTM4NCgpOiBDdXJ2ZQogICAgewogICAgICAgICRwID0gQmlnSW50ZWdlcjo6ZnJvbUJhc2UoJ2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmVmZmZmZmZmZjAwMDAwMDAwMDAwMDAwMDBmZmZmZmZmZicsIDE2KTsKICAgICAgICAkYSA9IEJpZ0ludGVnZXI6OmZyb21CYXNlKCdmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlZmZmZmZmZmYwMDAwMDAwMDAwMDAwMDAwZmZmZmZmZmMnLCAxNik7CiAgICAgICAgJGIgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZSgnYjMzMTJmYTdlMjNlZTdlNDk4OGUwNTZiZTNmODJkMTkxODFkOWM2ZWZlODE0MTEyMDMxNDA4OGY1MDEzODc1YWM2NTYzOThkOGEyZWQxOWQyYTg1YzhlZGQzZWMyYWVmJywgMTYpOwogICAgICAgICR4ID0gQmlnSW50ZWdlcjo6ZnJvbUJhc2UoJ2FhODdjYTIyYmU4YjA1Mzc4ZWIxYzcxZWYzMjBhZDc0NmUxZDNiNjI4YmE3OWI5ODU5Zjc0MWUwODI1NDJhMzg1NTAyZjI1ZGJmNTUyOTZjM2E1NDVlMzg3Mjc2MGFiNycsIDE2KTsKICAgICAgICAkeSA9IEJpZ0ludGVnZXI6OmZyb21CYXNlKCczNjE3ZGU0YTk2MjYyYzZmNWQ5ZTk4YmY5MjkyZGMyOWY4ZjQxZGJkMjg5YTE0N2NlOWRhMzExM2I1ZjBiOGMwMGE2MGIxY2UxZDdlODE5ZDdhNDMxZDdjOTBlYTBlNWYnLCAxNik7CiAgICAgICAgJG4gPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZSgnZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYzc2MzRkODFmNDM3MmRkZjU4MWEwZGIyNDhiMGE3N2FlY2VjMTk2YWNjYzUyOTczJywgMTYpOwogICAgICAgICRnZW5lcmF0b3IgPSBQb2ludDo6Y3JlYXRlKCR4LCAkeSwgJG4pOwoKICAgICAgICByZXR1cm4gbmV3IEN1cnZlKDM4NCwgJHAsICRhLCAkYiwgJGdlbmVyYXRvcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIE5JU1QgUC01MjEgY3VydmUuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3VydmU1MjEoKTogQ3VydmUKICAgIHsKICAgICAgICAkcCA9IEJpZ0ludGVnZXI6OmZyb21CYXNlKCcwMDAwMDFmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmJywgMTYpOwogICAgICAgICRhID0gQmlnSW50ZWdlcjo6ZnJvbUJhc2UoJzAwMDAwMWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMnLCAxNik7CiAgICAgICAgJGIgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZSgnMDAwMDAwNTE5NTNlYjk2MThlMWM5YTFmOTI5YTIxYTBiNjg1NDBlZWEyZGE3MjViOTliMzE1ZjNiOGI0ODk5MThlZjEwOWUxNTYxOTM5NTFlYzdlOTM3YjE2NTJjMGJkM2JiMWJmMDczNTczZGY4ODNkMmMzNGYxZWY0NTFmZDQ2YjUwM2YwMCcsIDE2KTsKICAgICAgICAkeCA9IEJpZ0ludGVnZXI6OmZyb21CYXNlKCcwMDAwMDBjNjg1OGUwNmI3MDQwNGU5Y2Q5ZTNlY2I2NjIzOTViNDQyOWM2NDgxMzkwNTNmYjUyMWY4MjhhZjYwNmI0ZDNkYmFhMTRiNWU3N2VmZTc1OTI4ZmUxZGMxMjdhMmZmYThkZTMzNDhiM2MxODU2YTQyOWJmOTdlN2UzMWMyZTViZDY2JywgMTYpOwogICAgICAgICR5ID0gQmlnSW50ZWdlcjo6ZnJvbUJhc2UoJzAwMDAwMTE4MzkyOTZhNzg5YTNiYzAwNDVjOGE1ZmI0MmM3ZDFiZDk5OGY1NDQ0OTU3OWI0NDY4MTdhZmJkMTcyNzNlNjYyYzk3ZWU3Mjk5NWVmNDI2NDBjNTUwYjkwMTNmYWQwNzYxMzUzYzcwODZhMjcyYzI0MDg4YmU5NDc2OWZkMTY2NTAnLCAxNik7CiAgICAgICAgJG4gPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZSgnMDAwMDAxZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZhNTE4Njg3ODNiZjJmOTY2YjdmY2MwMTQ4ZjcwOWE1ZDAzYmI1YzliODg5OWM0N2FlYmI2ZmI3MWU5MTM4NjQwOScsIDE2KTsKICAgICAgICAkZ2VuZXJhdG9yID0gUG9pbnQ6OmNyZWF0ZSgkeCwgJHksICRuKTsKCiAgICAgICAgcmV0dXJuIG5ldyBDdXJ2ZSg1MjEsICRwLCAkYSwgJGIsICRnZW5lcmF0b3IpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/Point.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxFY2M7Cgp1c2UgQnJpY2tcTWF0aFxCaWdJbnRlZ2VyOwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlci4KICoKICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgogKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCiAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCiAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwogKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMKICogT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCiAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgogKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgUG9pbnQKewogICAgLyoqCiAgICAgKiBAdmFyIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkeDsKCiAgICAvKioKICAgICAqIEB2YXIgQmlnSW50ZWdlcgogICAgICovCiAgICBwcml2YXRlICR5OwoKICAgIC8qKgogICAgICogQHZhciBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgJG9yZGVyOwoKICAgIC8qKgogICAgICogQHZhciBib29sCiAgICAgKi8KICAgIHByaXZhdGUgJGluZmluaXR5ID0gZmFsc2U7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdChCaWdJbnRlZ2VyICR4LCBCaWdJbnRlZ2VyICR5LCBCaWdJbnRlZ2VyICRvcmRlciwgYm9vbCAkaW5maW5pdHkgPSBmYWxzZSkKICAgIHsKICAgICAgICAkdGhpcy0+eCA9ICR4OwogICAgICAgICR0aGlzLT55ID0gJHk7CiAgICAgICAgJHRoaXMtPm9yZGVyID0gJG9yZGVyOwogICAgICAgICR0aGlzLT5pbmZpbml0eSA9ICRpbmZpbml0eTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZShCaWdJbnRlZ2VyICR4LCBCaWdJbnRlZ2VyICR5LCA/QmlnSW50ZWdlciAkb3JkZXIgPSBudWxsKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZigkeCwgJHksICRvcmRlciA/PyBCaWdJbnRlZ2VyOjp6ZXJvKCkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW5maW5pdHkoKTogc2VsZgogICAgewogICAgICAgICR6ZXJvID0gQmlnSW50ZWdlcjo6emVybygpOwoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHplcm8sICR6ZXJvLCAkemVybywgdHJ1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzSW5maW5pdHkoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aW5maW5pdHk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE9yZGVyKCk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm9yZGVyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRYKCk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPng7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFkoKTogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+eTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNzd2FwKHNlbGYgJGEsIHNlbGYgJGIsIGludCAkY29uZCk6IHZvaWQKICAgIHsKICAgICAgICBzZWxmOjpjc3dhcEJpZ0ludGVnZXIoJGEtPngsICRiLT54LCAkY29uZCk7CiAgICAgICAgc2VsZjo6Y3N3YXBCaWdJbnRlZ2VyKCRhLT55LCAkYi0+eSwgJGNvbmQpOwogICAgICAgIHNlbGY6OmNzd2FwQmlnSW50ZWdlcigkYS0+b3JkZXIsICRiLT5vcmRlciwgJGNvbmQpOwogICAgICAgIHNlbGY6OmNzd2FwQm9vbGVhbigkYS0+aW5maW5pdHksICRiLT5pbmZpbml0eSwgJGNvbmQpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNzd2FwQm9vbGVhbihib29sICYkYSwgYm9vbCAmJGIsIGludCAkY29uZCk6IHZvaWQKICAgIHsKICAgICAgICAkc2EgPSBCaWdJbnRlZ2VyOjpvZigoaW50KSAkYSk7CiAgICAgICAgJHNiID0gQmlnSW50ZWdlcjo6b2YoKGludCkgJGIpOwoKICAgICAgICBzZWxmOjpjc3dhcEJpZ0ludGVnZXIoJHNhLCAkc2IsICRjb25kKTsKCiAgICAgICAgJGEgPSAoYm9vbCkgJHNhLT50b0Jhc2UoMTApOwogICAgICAgICRiID0gKGJvb2wpICRzYi0+dG9CYXNlKDEwKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjc3dhcEJpZ0ludGVnZXIoQmlnSW50ZWdlciAmJHNhLCBCaWdJbnRlZ2VyICYkc2IsIGludCAkY29uZCk6IHZvaWQKICAgIHsKICAgICAgICAkc2l6ZSA9IG1heChtYl9zdHJsZW4oJHNhLT50b0Jhc2UoMiksICc4Yml0JyksIG1iX3N0cmxlbigkc2ItPnRvQmFzZSgyKSwgJzhiaXQnKSk7CiAgICAgICAgJG1hc2sgPSAoc3RyaW5nKSAoMSAtICRjb25kKTsKICAgICAgICAkbWFzayA9IHN0cl9wYWQoJycsICRzaXplLCAkbWFzaywgU1RSX1BBRF9MRUZUKTsKICAgICAgICAkbWFzayA9IEJpZ0ludGVnZXI6OmZyb21CYXNlKCRtYXNrLCAyKTsKICAgICAgICAkdGFBID0gJHNhLT5hbmQoJG1hc2spOwogICAgICAgICR0YUIgPSAkc2ItPmFuZCgkbWFzayk7CiAgICAgICAgJHNhID0gJHNhLT54b3IoJHNiKS0+eG9yKCR0YUIpOwogICAgICAgICRzYiA9ICRzYS0+eG9yKCRzYiktPnhvcigkdGFBKTsKICAgICAgICAkc2EgPSAkc2EtPnhvcigkc2IpLT54b3IoJHRhQik7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/PrivateKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxFY2M7Cgp1c2UgQnJpY2tcTWF0aFxCaWdJbnRlZ2VyOwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlci4KICoKICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgogKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCiAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCiAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwogKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMKICogT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCiAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgogKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgUHJpdmF0ZUtleQp7CiAgICAvKioKICAgICAqIEB2YXIgQmlnSW50ZWdlcgogICAgICovCiAgICBwcml2YXRlICRzZWNyZXQ7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdChCaWdJbnRlZ2VyICRzZWNyZXQpCiAgICB7CiAgICAgICAgJHRoaXMtPnNlY3JldCA9ICRzZWNyZXQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGUoQmlnSW50ZWdlciAkc2VjcmV0KTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZigkc2VjcmV0KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VjcmV0KCk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNlY3JldDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/PublicKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxFY2M7CgovKioKICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoQykgMjAxMiBNYXR5YXMgRGFudGVyLgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCiAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAogKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwogKiBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCiAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgovKioKICogQGludGVybmFsCiAqLwpjbGFzcyBQdWJsaWNLZXkKewogICAgLyoqCiAgICAgKiBAdmFyIFBvaW50CiAgICAgKi8KICAgIHByaXZhdGUgJHBvaW50OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChQb2ludCAkcG9pbnQpCiAgICB7CiAgICAgICAgJHRoaXMtPnBvaW50ID0gJHBvaW50OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQb2ludCgpOiBQb2ludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cG9pbnQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[RUNDIFRvb2xzIEZvciBKV1QtRnJhbWV3b3JrCj09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClRoaXMgcmVwb3NpdG9yeSBpcyBhIHN1YiByZXBvc2l0b3J5IG9mIFt0aGUgSldUIEZyYW1ld29ya10oaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3QtZnJhbWV3b3JrKSBwcm9qZWN0IGFuZCBpcyBSRUFEIE9OTFkuCgoqKlBsZWFzZSBkbyBub3Qgc3VibWl0IGFueSBQdWxsIFJlcXVlc3QgaGVyZS4qKgpZb3Ugc2hvdWxkIGdvIHRvIFt0aGUgbWFpbiByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1mcmFtZXdvcmspIGluc3RlYWQuCgojIERvY3VtZW50YXRpb24KClRoZSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhcyBodHRwczovL3dlYi10b2tlbi5zcG9ta3ktbGFicy5jb20vIAoKIyBMaWNlbmNlCgpUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2UgdW5kZXIgW01JVCBsaWNlbmNlXShMSUNFTlNFKS4K]]></data>
	</file>
</module>
